예제 #1
0
 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'])
예제 #2
0
 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)
예제 #3
0
 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)
예제 #4
0
 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)
예제 #5
0
 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)
예제 #6
0
 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)
예제 #7
0
 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"]
예제 #8
0
 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)
예제 #9
0
 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)
예제 #10
0
 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)
예제 #11
0
# 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'])
예제 #12
0
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)