def test_nonTransitiveConvert(self): self.addMember() sig1 = groupsig.sign(b"Hello, World1!", self.memkeys[0], self.grpkey) sig2 = groupsig.sign(b"Hello, World2!", self.memkeys[0], self.grpkey) b = groupsig.verify(sig1, b"Hello, World1!", self.grpkey) self.assertTrue(b) b = groupsig.verify(sig2, b"Hello, World2!", self.grpkey) self.assertTrue(b) bkey = bldkey.bldkey_random(self.code, self.grpkey) out = groupsig.blind(self.grpkey, sig1, "Hello, World1!", bkey) bsig1 = out["bsig"] out = groupsig.blind(self.grpkey, sig2, "Hello, World2!", bkey) bsig2 = out["bsig"] bkey_pub = bldkey.bldkey_import(constants.GL19_CODE, bldkey.bldkey_export_pub(bkey)) csigs1 = groupsig.convert([bsig1], self.grpkey, bkey_pub, mgrkey=self.cnvkey) csigs2 = groupsig.convert([bsig2], self.grpkey, bkey_pub, mgrkey=self.cnvkey) nym1 = groupsig.unblind(csigs1[0], bkey) nym2 = groupsig.unblind(csigs2[0], bkey) self.assertNotEqual(nym1['nym'], nym2['nym'])
def test_openSignature(self): self.addMember() self.addMember() sig = groupsig.sign(b"Hello, World!", self.memkeys[1], self.grpkey) gsopen = groupsig.open(sig, self.opnkey, self.grpkey, gml = self.gml) self.assertEqual(gsopen["index"], 1) proof = gsopen['proof'] b = groupsig.open_verify(proof, sig, self.grpkey) self.assertTrue(b)
def setUp(self): groupsig.init(constants.BBS04_CODE, 0) group = groupsig.setup(constants.BBS04_CODE) self.code = constants.BBS04_CODE self.mgrkey = group['mgrkey'] self.grpkey = group['grpkey'] self.gml = group['gml'] self.memkeys = [] self.addMember() self.sig = groupsig.sign("Hello, World!", self.memkeys[0], self.grpkey)
def test_acceptValidSignatureBatch(self): self.addMember() sigs = [] msgs = [] for i in range(10): msg = "Hello, World "+ str(i) + "!" sig = groupsig.sign(msg, self.memkeys[0], self.grpkey) msgs.append(msg) sigs.append(sig) b = groupsig.verify_batch(sigs, msgs, self.grpkey) self.assertTrue(b)
def test_rejectWrongSignatureBatch(self): self.addMember() sigs = [] msgs = [] for i in range(10): msg = "Hello, World "+ str(i) + "!" sig = groupsig.sign(msg, self.memkeys[0], self.grpkey) msgs.append(msg) sigs.append(sig) msgs[0] = "Hello, World!" b = groupsig.verify_batch(sigs, msgs, self.grpkey) self.assertFalse(b)
def setUp(self): groupsig.init(constants.GL19_CODE, 0) group1 = groupsig.setup(constants.GL19_CODE) self.code = constants.GL19_CODE grpkey1 = group1['grpkey'] self.isskey = group1['mgrkey'] group2 = groupsig.setup(constants.GL19_CODE, grpkey1) self.cnvkey = group2['mgrkey'] self.grpkey = group2['grpkey'] self.memkeys = [] self.addMember() self.sig = groupsig.sign("Hello, World!", self.memkeys[0], self.grpkey)
def setUp(self): groupsig.init(constants.GL19_CODE, 0) group1 = groupsig.setup(constants.GL19_CODE) self.code = constants.GL19_CODE grpkey1 = group1['grpkey'] self.isskey = group1['mgrkey'] group2 = groupsig.setup(constants.GL19_CODE, grpkey1) self.cnvkey = group2['mgrkey'] self.grpkey = group2['grpkey'] self.memkeys = [] self.addMember() self.sig = groupsig.sign("Hello, World!", self.memkeys[0], self.grpkey) bkey = bldkey.bldkey_random(self.code, self.grpkey) out = groupsig.blind(self.grpkey, self.sig, "Hello, World!", bkey) self.bsig = out["bsig"]
def test_rejectValidSignatureWrongMessageBytes(self): self.addMember() sig = groupsig.sign(b"Hello, World!", self.memkeys[0], self.grpkey) b = groupsig.verify(sig, b"Hello, Worlds!", self.grpkey) self.assertFalse(b)
def test_acceptValidSignatureBytes(self): self.addMember() sig = groupsig.sign(b"Hello, World!", self.memkeys[0], self.grpkey) b = groupsig.verify(sig, b"Hello, World!", self.grpkey) self.assertTrue(b)
def test_openSignature(self): self.addMember() self.addMember() sig = groupsig.sign(b"Hello, World!", self.memkeys[1], self.grpkey) gsopen = groupsig.open(sig, self.mgrkey, self.grpkey, gml=self.gml) self.assertEqual(gsopen["index"], 1)
# Setup issuer = groupsig.setup(constants.GL19_CODE) _gpk = issuer['grpkey'] isk = issuer['mgrkey'] converter = groupsig.setup(constants.GL19_CODE, _gpk) csk = converter['mgrkey'] gpk = converter['grpkey'] # Join msg1 = groupsig.join_mgr(0, isk, gpk) msg2 = groupsig.join_mem(1, gpk, msgin=msg1) usk = msg2['memkey'] msg3 = groupsig.join_mgr(2, isk, gpk, msg2['msgout']) msg4 = groupsig.join_mem(3, gpk, msgin=msg3, memkey=usk) usk = msg4['memkey'] # Sign sig = groupsig.sign("Hello, World!", usk, gpk) # Verify b = groupsig.verify(sig, "Hello, World!", gpk) if b == True: print("VALID signature.") else: print("WRONG signature.") sys.exit() groupsig.clear(constants.GL19_CODE, issuer['config']) groupsig.clear(constants.GL19_CODE, converter['config'])
import sys from pygroupsig import groupsig from pygroupsig import signature from pygroupsig import blindsig from pygroupsig import memkey from pygroupsig import grpkey from pygroupsig import mgrkey from pygroupsig import bldkey from pygroupsig import constants if len(sys.argv) != 4: print("Usage: $python3 sign.py <grpkey str> <memkey str> <message>") sys.exit() # Init scheme groupsig.init(constants.GL19_CODE, 0) # Import grpkey gpk = grpkey.grpkey_import(constants.GL19_CODE, sys.argv[1]) # Import mem key usk = memkey.memkey_import(constants.GL19_CODE, sys.argv[2]) # Read file sig = groupsig.sign(sys.argv[3], usk, gpk) ssig = signature.signature_export(sig) print("Signature: %s" % ssig)