コード例 #1
0
    async def submitPublicKeys(self,
                               id: ID,
                               pk: PublicKey,
                               pkR: RevocationPublicKey = None,
                               signatureType='CL') -> \
            (PublicKey, RevocationPublicKey):

        data = {}
        if pk is not None:
            data[PRIMARY] = pk.to_str_dict()
        if pkR is not None:
            data[REVOCATION] = pkR.toStrDict()

        op = {
            TXN_TYPE: CLAIM_DEF,
            REF: id.schemaId,
            DATA: data,
            SIGNATURE_TYPE: signatureType
        }

        _, seqNo = await self._sendSubmitReq(op)

        if seqNo:
            pk = pk._replace(seqId=seqNo)

            if pkR is not None:
                pkR = pkR._replace(seqId=seqNo)

            return pk, pkR
コード例 #2
0
    async def submitPublicKeys(self,
                               id: ID,
                               pk: PublicKey,
                               pkR: RevocationPublicKey = None,
                               signatureType='CL') -> \
            (PublicKey, RevocationPublicKey):

        data = {}
        if pk is not None:
            data[PRIMARY] = pk.to_str_dict()
        if pkR is not None:
            data[REVOCATION] = pkR.toStrDict()

        op = {
            TXN_TYPE: CLAIM_DEF,
            REF: id.schemaId,
            DATA: data,
            SIGNATURE_TYPE: signatureType
        }

        _, seqNo = await self._sendSubmitReq(op)

        if seqNo:
            pk = pk._replace(seqId=seqNo)

            if pkR is not None:
                pkR = pkR._replace(seqId=seqNo)

            return pk, pkR
コード例 #3
0
    async def submitPublicKeys(self,
                               id: ID,
                               pk: PublicKey,
                               pkR: RevocationPublicKey = None
                               ) -> (PublicKey, RevocationPublicKey):
        pkData = pk.toStrDict()
        pkRData = pkR.toStrDict()
        op = {
            TXN_TYPE: ISSUER_KEY,
            REF: id.schemaId,
            DATA: {
                PRIMARY: pkData,
                REVOCATION: pkRData
            }
        }

        try:
            data, seqNo = await self._sendSubmitReq(op)
        except TimeoutError:
            logger.error('Operation timed out {}'.format(op))
            return None

        if not seqNo:
            return None
        pk = pk._replace(seqId=seqNo)
        pkR = pkR._replace(seqId=seqNo)
        return pk, pkR
    async def genRevocationKeys(
            self) -> (RevocationPublicKey, RevocationSecretKey):
        group = cmod.PairingGroup(
            PAIRING_GROUP)  # super singular curve, 1024 bits

        g = group.random(cmod.G1)
        gprime = group.random(cmod.G2)

        h = group.random(cmod.G1)  # random element of the group G
        h0 = group.random(cmod.G1)
        h1 = group.random(cmod.G1)
        h2 = group.random(cmod.G1)
        htilde = group.random(cmod.G1)

        u = group.random(cmod.G2)
        hhat = group.random(cmod.G2)

        qr = group.order()  # order q_R of the group

        x = group.random(cmod.ZR)  # random(qr)
        sk = group.random(cmod.ZR)  # random(qr)

        pk = g**sk
        y = hhat**x

        return (RevocationPublicKey(qr, g, gprime, h, h0, h1, h2, htilde, hhat,
                                    u, pk, y), RevocationSecretKey(x, sk))
コード例 #5
0
    async def submitPublicKeys(self, id: ID, pk: PublicKey,
                               pkR: RevocationPublicKey = None) -> (
            PublicKey, RevocationPublicKey):
        pkData = pk.toStrDict()
        pkRData = pkR.toStrDict()
        op = {
            TXN_TYPE: ISSUER_KEY,
            REF: id.schemaId,
            DATA: {PRIMARY: pkData, REVOCATION: pkRData}
        }

        data, seqNo = await self._sendSubmitReq(op)

        if not seqNo:
            return None
        pk = pk._replace(seqId=seqNo)
        pkR = pkR._replace(seqId=seqNo)
        return pk, pkR
コード例 #6
0
    async def getPublicKeyRevocation(self, id: ID) -> RevocationPublicKey:
        op = {
            TXN_TYPE: GET_ISSUER_KEY,
            REF: id.claimDefId,
            ORIGIN: id.claimDefKey.issuerId
        }

        data, seqNo = await self._sendGetReq(op)
        if not data:
            return None

        data = data[DATA][REVOCATION]
        pkR = RevocationPublicKey.fromStrDict(data)._replace(seqId=seqNo)
        return pkR
コード例 #7
0
 async def getPublicKeyRevocation(self, id: ID,
                                  signatureType = 'CL') -> Optional[RevocationPublicKey]:
     op = {
         TXN_TYPE: GET_CLAIM_DEF,
         REF: id.schemaId,
         ORIGIN: id.schemaKey.issuerId,
         SIGNATURE_TYPE: signatureType
     }
     data, seqNo = await self._sendGetReq(op)
     if not data:
         return None
     data = data[REVOCATION]
     pkR = RevocationPublicKey.fromStrDict(data)._replace(seqId=seqNo)
     return pkR
コード例 #8
0
    async def submitPublicKeys(self,
                               schemaId: ID,
                               pk: PublicKey,
                               pkR: RevocationPublicKey = None
                               ) -> (PublicKey, RevocationPublicKey):
        pk = pk._replace(seqId=self._pkId)
        self._pkId += 1
        await self._cacheValueForId(self._pks, schemaId, pk)

        if pkR:
            pkR = pkR._replace(seqId=self._pkRId)
            self._pkRId += 1
            await self._cacheValueForId(self._pkRs, schemaId, pkR)

        return pk, pkR
コード例 #9
0
 async def getPublicKeyRevocation(self,
                                  id: ID,
                                  signatureType = 'CL') -> RevocationPublicKey:
     op = {
         TXN_TYPE: GET_CLAIM_DEF,
         REF: id.schemaId,
         ORIGIN: id.schemaKey.issuerId,
         SIGNATURE_TYPE: signatureType
     }
     data, seqNo = await self._sendGetReq(op)
     if not data:
         return None
     data = data[DATA][REVOCATION]
     pkR = RevocationPublicKey.fromStrDict(data)._replace(seqId=seqNo)
     return pkR
コード例 #10
0
 async def getPublicKeyRevocation(self, id: ID,
                                  signatureType='CL') -> Optional[RevocationPublicKey]:
     op = {
         TXN_TYPE: GET_CLAIM_DEF,
         REF: id.schemaId,
         ORIGIN: id.schemaKey.issuerId,
         SIGNATURE_TYPE: signatureType
     }
     data, seqNo = await self._sendGetReq(op)
     if not data:
         raise ValueError(
             'No CLAIM_DEF for schema with ID={} and key={}'.format(
                 id.schemaId, id.schemaKey))
     if REVOCATION not in data:
         return None
     data = data[REVOCATION]
     pkR = RevocationPublicKey.fromStrDict(data)._replace(seqId=seqNo)
     return pkR
コード例 #11
0
    async def getPublicKeyRevocation(self, id: ID) -> RevocationPublicKey:
        op = {
            TXN_TYPE: GET_ISSUER_KEY,
            REF: id.schemaId,
            ORIGIN: id.schemaKey.issuerId
        }

        try:
            data, seqNo = await self._sendGetReq(op)
        except TimeoutError:
            logger.error('Operation timed out {}'.format(op))
            return None

        if not data:
            return None

        data = data[DATA][REVOCATION]
        pkR = RevocationPublicKey.fromStrDict(data)._replace(seqId=seqNo)
        return pkR