示例#1
0
    def toPublicKey(self) -> PublicKey:
        result: PublicKey = PublicKey.__new__(PublicKey)
        result.value = G2Obj()

        MilagroPairing.ECP2_BLS381_generator(byref(result.value))
        MilagroPairing.ECP2_BLS381_mul(byref(result.value), self.value)

        return result
示例#2
0
    def verify(self, agInfo: AggregationInfo) -> bool:
        if self.isInf():
            return False

        sig: G1Obj = self.value
        generator: G2Obj = G2Obj()
        sigPairing: FP12Obj = FP12Obj()

        MilagroCurve.ECP_BLS381_neg(byref(sig))
        MilagroPairing.ECP2_BLS381_generator(byref(generator))
        MilagroPairing.PAIR_BLS381_ate(byref(sigPairing), byref(generator),
                                       byref(sig))

        MilagroPairing.FP12_BLS381_ssmul(byref(sigPairing),
                                         byref(agInfo.value))
        MilagroPairing.PAIR_BLS381_fexp(byref(sigPairing))
        return int(MilagroPairing.FP12_BLS381_isunity(byref(sigPairing))) == 1