|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
#!/usr/bin/env python
|
|
|
|
|
"""
|
|
|
|
|
ECC blind signature functionality based on "An Efficient Blind Signature Scheme
|
|
|
|
|
ECC blind signature functionality based on
|
|
|
|
|
"An Efficient Blind Signature Scheme
|
|
|
|
|
Based on the Elliptic CurveDiscrete Logarithm Problem" by Morteza Nikooghadama
|
|
|
|
|
<mnikooghadam@sbu.ac.ir> and Ali Zakerolhosseini <a-zaker@sbu.ac.ir>,
|
|
|
|
|
http://www.isecure-journal.com/article_39171_47f9ec605dd3918c2793565ec21fcd7a.pdf
|
|
|
|
@ -8,7 +9,6 @@ http://www.isecure-journal.com/article_39171_47f9ec605dd3918c2793565ec21fcd7a.pd
|
|
|
|
|
|
|
|
|
|
# variable names are based on the math in the paper, so they don't conform
|
|
|
|
|
# to PEP8
|
|
|
|
|
# pylint: disable=invalid-name
|
|
|
|
|
|
|
|
|
|
from .openssl import OpenSSL
|
|
|
|
|
|
|
|
|
@ -72,8 +72,7 @@ class ECCBlind(object): # pylint: disable=too-many-instance-attributes
|
|
|
|
|
# F = (x0, y0)
|
|
|
|
|
x0 = OpenSSL.BN_new()
|
|
|
|
|
y0 = OpenSSL.BN_new()
|
|
|
|
|
OpenSSL.EC_POINT_get_affine_coordinates_GFp(group, F, x0, y0,
|
|
|
|
|
ctx)
|
|
|
|
|
OpenSSL.EC_POINT_get_affine_coordinates_GFp(group, F, x0, y0, ctx)
|
|
|
|
|
return x0
|
|
|
|
|
|
|
|
|
|
def __init__(self, curve="secp256k1", pubkey=None):
|
|
|
|
@ -82,7 +81,8 @@ class ECCBlind(object): # pylint: disable=too-many-instance-attributes
|
|
|
|
|
if pubkey:
|
|
|
|
|
self.group, self.G, self.n, self.Q = pubkey
|
|
|
|
|
else:
|
|
|
|
|
self.group = OpenSSL.EC_GROUP_new_by_curve_name(OpenSSL.get_curve(curve))
|
|
|
|
|
self.group = OpenSSL.EC_GROUP_new_by_curve_name(
|
|
|
|
|
OpenSSL.get_curve(curve))
|
|
|
|
|
# Order n
|
|
|
|
|
self.n = OpenSSL.BN_new()
|
|
|
|
|
OpenSSL.EC_GROUP_get_order(self.group, self.n, self.ctx)
|
|
|
|
|