def reencrypt(kfrag: KFrag, capsule: Capsule, provide_proof: bool = True, metadata: Optional[bytes] = None) -> CapsuleFrag: if not capsule.verify(): raise Capsule.NotValid if not kfrag.verify_for_capsule(capsule): raise KFrag.NotValid rk = kfrag._bn_key e1 = rk * capsule._point_e v1 = rk * capsule._point_v cfrag = CapsuleFrag(point_e1=e1, point_v1=v1, kfrag_id=kfrag._id, point_noninteractive=kfrag._point_noninteractive, point_xcoord=kfrag._point_xcoord) if provide_proof: prove_cfrag_correctness(cfrag, kfrag, capsule, metadata) return cfrag
def reencrypt(kfrag: KFrag, capsule: Capsule, provide_proof: bool = True, metadata: Optional[bytes] = None) -> CapsuleFrag: if not isinstance(capsule, Capsule) or not capsule.verify(): raise Capsule.NotValid elif not isinstance(kfrag, KFrag) or not kfrag.verify_for_capsule(capsule): raise KFrag.NotValid rk = kfrag._bn_key e1 = rk * capsule._point_e # type: Any v1 = rk * capsule._point_v # type: Any cfrag = CapsuleFrag(point_e1=e1, point_v1=v1, kfrag_id=kfrag.id, point_precursor=kfrag._point_precursor) if provide_proof: prove_cfrag_correctness(cfrag, kfrag, capsule, metadata) return cfrag