def get_size(cls, curve: ec.EllipticCurve = None): """ Returns the size (in bytes) of a KFrag given the curve. If no curve is provided, it will use the default curve. """ curve = curve if curve is not None else default_curve() bn_size = CurveBN.get_size(curve) point_size = Point.get_size(curve) return (bn_size * 4) + (point_size * 2)
def get_size(cls, curve: ec.EllipticCurve = None): """ Returns the size (in bytes) of a CorrectnessProof without the metadata. If no curve is given, it will use the default curve. """ curve = curve if curve is not None else default_curve() bn_size = CurveBN.get_size(curve=curve) point_size = Point.get_size(curve=curve) return (bn_size * 3) + (point_size * 4)
def get_size(cls, curve: ec.EllipticCurve = None): """ Returns the size (in bytes) of a CapsuleFrag given the curve without the CorrectnessProof. If no curve is provided, it will use the default curve. """ curve = curve if curve is not None else default_curve() bn_size = CurveBN.get_size(curve) point_size = Point.get_size(curve) return (bn_size * 1) + (point_size * 3)
def from_bytes(cls, data: bytes, curve: ec.EllipticCurve = None): """ Instantiate a KFrag object from the serialized data. """ curve = curve if curve is not None else default_curve() bn_size = CurveBN.get_size(curve) point_size = Point.get_size(curve) data = BytesIO(data) # CurveBNs are the keysize in bytes, Points are compressed and the # keysize + 1 bytes long. id = data.read(bn_size) key = CurveBN.from_bytes(data.read(bn_size), curve) ni = Point.from_bytes(data.read(point_size), curve) commitment = Point.from_bytes(data.read(point_size), curve) xcoord = Point.from_bytes(data.read(point_size), curve) sig1 = CurveBN.from_bytes(data.read(bn_size), curve) sig2 = CurveBN.from_bytes(data.read(bn_size), curve) return cls(id, key, ni, commitment, xcoord, sig1, sig2)
def from_bytes(cls, data: bytes, curve: ec.EllipticCurve = None): """ Instantiates a CapsuleFrag object from the serialized data. """ curve = curve if curve is not None else default_curve() bn_size = CurveBN.get_size(curve=curve) point_size = Point.get_size(curve=curve) data = BytesIO(data) # CurveBNs are the keysize in bytes, Points are compressed and the # keysize + 1 bytes long. e1 = Point.from_bytes(data.read(point_size), curve) v1 = Point.from_bytes(data.read(point_size), curve) kfrag_id = data.read(bn_size) ni = Point.from_bytes(data.read(point_size), curve) xcoord = Point.from_bytes(data.read(point_size), curve) proof = data.read() or None proof = CorrectnessProof.from_bytes(proof, curve) if proof else None return cls(e1, v1, kfrag_id, ni, xcoord, proof)
def from_bytes(cls, data: bytes, curve: ec.EllipticCurve=None): """ Instantiate CorrectnessProof from serialized data. """ curve = curve if curve is not None else default_curve() bn_size = CurveBN.get_size(curve) point_size = Point.get_size(curve) data = BytesIO(data) # CurveBNs are the keysize in bytes, Points are compressed and the # keysize + 1 bytes long. e2 = Point.from_bytes(data.read(point_size), curve) v2 = Point.from_bytes(data.read(point_size), curve) kfrag_commitment = Point.from_bytes(data.read(point_size), curve) kfrag_pok = Point.from_bytes(data.read(point_size), curve) kfrag_sig1 = CurveBN.from_bytes(data.read(bn_size), curve) kfrag_sig2 = CurveBN.from_bytes(data.read(bn_size), curve) sig = CurveBN.from_bytes(data.read(bn_size), curve) metadata = data.read() or None return cls(e2, v2, kfrag_commitment, kfrag_pok, kfrag_sig1, kfrag_sig2, sig, metadata=metadata)