Add intermediary tests
- primitive serialisation (BN_bn2bin and ctypes) used in intermediary tests
This commit is contained in:
parent
b934c4e01e
commit
395fbcd0f0
|
@ -3,8 +3,10 @@ Test for ECC blind signatures
|
||||||
"""
|
"""
|
||||||
import os
|
import os
|
||||||
import unittest
|
import unittest
|
||||||
|
from ctypes import cast, c_char_p
|
||||||
|
|
||||||
from pybitmessage.pyelliptic.eccblind import ECCBlind
|
from pybitmessage.pyelliptic.eccblind import ECCBlind
|
||||||
|
from pybitmessage.pyelliptic.openssl import OpenSSL
|
||||||
|
|
||||||
|
|
||||||
class TestBlindSig(unittest.TestCase):
|
class TestBlindSig(unittest.TestCase):
|
||||||
|
@ -24,12 +26,27 @@ class TestBlindSig(unittest.TestCase):
|
||||||
msg = os.urandom(64)
|
msg = os.urandom(64)
|
||||||
msg_blinded = requester_obj.create_signing_request(point_r, msg)
|
msg_blinded = requester_obj.create_signing_request(point_r, msg)
|
||||||
|
|
||||||
|
# check
|
||||||
|
msg_blinded_str = OpenSSL.malloc(0, OpenSSL.BN_num_bytes(msg_blinded))
|
||||||
|
OpenSSL.BN_bn2bin(msg_blinded, msg_blinded_str)
|
||||||
|
self.assertNotEqual(msg, cast(msg_blinded_str, c_char_p).value)
|
||||||
|
|
||||||
# (3) Signature Generation
|
# (3) Signature Generation
|
||||||
signature_blinded = signer_obj.blind_sign(msg_blinded)
|
signature_blinded = signer_obj.blind_sign(msg_blinded)
|
||||||
|
|
||||||
# (4) Extraction
|
# (4) Extraction
|
||||||
signature = requester_obj.unblind(signature_blinded)
|
signature = requester_obj.unblind(signature_blinded)
|
||||||
|
|
||||||
|
# check
|
||||||
|
signature_blinded_str = OpenSSL.malloc(0,
|
||||||
|
OpenSSL.BN_num_bytes(
|
||||||
|
signature_blinded))
|
||||||
|
signature_str = OpenSSL.malloc(0, OpenSSL.BN_num_bytes(signature[0]))
|
||||||
|
OpenSSL.BN_bn2bin(signature_blinded, signature_blinded_str)
|
||||||
|
OpenSSL.BN_bn2bin(signature[0], signature_str)
|
||||||
|
self.assertNotEqual(cast(signature_str, c_char_p).value,
|
||||||
|
cast(signature_blinded_str, c_char_p).value)
|
||||||
|
|
||||||
# (5) Verification
|
# (5) Verification
|
||||||
verifier_obj = ECCBlind(pubkey=signer_obj.pubkey)
|
verifier_obj = ECCBlind(pubkey=signer_obj.pubkey)
|
||||||
self.assertTrue(verifier_obj.verify(msg, signature))
|
self.assertTrue(verifier_obj.verify(msg, signature))
|
||||||
|
|
Reference in New Issue
Block a user