def __init__(self, curve: Curve) -> None: from umbral.point import Point, unsafe_hash_to_point self.curve = curve self.CURVE_KEY_SIZE_BYTES = self.curve.field_order_size_in_bytes self.g = Point.get_generator_from_curve(curve=curve) g_bytes = self.g.to_bytes() parameters_seed = b'NuCypher/UmbralParameters/' self.u = unsafe_hash_to_point(g_bytes, self, parameters_seed + b'u')
def __init__(self, curve: ec.EllipticCurve): from umbral.point import Point, unsafe_hash_to_point from umbral.utils import get_curve_keysize_bytes self.curve = curve self.g = Point.get_generator_from_curve(self.curve) self.order = Point.get_order_from_curve(self.curve) g_bytes = self.g.to_bytes(is_compressed=True) self.CURVE_MINVAL_SHA512 = (1 << 512) % int(self.order) self.CURVE_KEY_SIZE_BYTES = get_curve_keysize_bytes(self.curve) parameters_seed = b'NuCypherKMS/UmbralParameters/' self.u = unsafe_hash_to_point(g_bytes, self, parameters_seed + b'u')
def test_generator_point(): """http://www.secg.org/SEC2-Ver-1.0.pdf Section 2.7.1""" g1 = Point.get_generator_from_curve() g_compressed = 0x0279BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798 g_uncompressed = 0x0479BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8 g_compressed = g_compressed.to_bytes(32 + 1, byteorder='big') g_uncompressed = g_uncompressed.to_bytes(64 + 1, byteorder='big') g2 = Point.from_bytes(g_compressed) assert g1 == g2 g3 = Point.from_bytes(g_uncompressed) assert g1 == g3 assert g2 == g3
def __init__(self, curve: ec.EllipticCurve): from umbral.point import Point, unsafe_hash_to_point from umbral.utils import get_curve_keysize_bytes self.curve = curve curve_nid = backend._elliptic_curve_to_nid(curve) self.g = Point.get_generator_from_curve(self.curve) self.order = openssl._get_ec_order_by_curve_nid(curve_nid) g_bytes = self.g.to_bytes(is_compressed=True) self.CURVE_KEY_SIZE_BYTES = get_curve_keysize_bytes(self.curve) parameters_seed = b'NuCypherKMS/UmbralParameters/' self.u = unsafe_hash_to_point(g_bytes, self, parameters_seed + b'u')