async def verifyClaimProof(self, msg: Any): body, (frm, ha) = msg link = self.verifyAndGetLink(msg) if not link: raise NotImplementedError claimName = body[NAME] nonce = getNonceForProof(body[NONCE]) proof = FullProof.fromStrDict(body[PROOF_FIELD]) proofInput = ProofInput.fromStrDict(body[PROOF_INPUT_FIELD]) revealedAttrs = fromDictWithStrValues(body[REVEALED_ATTRS_FIELD]) result = await self.verifier.verify(proofInput, proof, revealedAttrs, nonce) status = 'verified' if result else 'failed verification' resp = { TYPE: CLAIM_PROOF_STATUS, DATA: ' Your claim {} {} was received and {}\n'.format( body[NAME], body[VERSION], status), } self.signAndSend(resp, link.localIdentifier, frm, origReqId=body.get(f.REQ_ID.nm)) if result: await self._postClaimVerif(claimName, link, frm)
async def testClaimProofFromToDictPrimaryOnly(prover1, nonce, claimsProver1Gvt): proofInput = ProofInput(['name'], [PredicateGE('age', 18)]) proof, _ = await prover1.presentProof(proofInput, nonce) proofs = [Proof(primaryProof=proof.proofs[0].primaryProof)] proof = proof._replace(proofs=proofs) assert proof == FullProof.fromStrDict(proof.toStrDict())
async def testClaimProofFromToDict(prover1, nonce, claimsProver1Gvt): proofRequest = ProofRequest("proof1", "1.0", 1, verifiableAttributes={ 'attr_uuid': AttributeInfo(name='name')}, predicates={'predicate_uuid': PredicateGE('age', 18)}) proof = await prover1.presentProof(proofRequest) assert proof == FullProof.fromStrDict(proof.toStrDict())
async def testClaimProofFromToDictPrimaryOnly(prover1, nonce, claimsProver1Gvt, schemaGvt): proofRequest = ProofRequest("proof1", "1.0", 1, verifiableAttributes={ 'attr_uuid': AttributeInfo(name='name')}, predicates={'predicate_uuid': PredicateGE('age', 18)}) proof = await prover1.presentProof(proofRequest) proofInfo = proof.proofs[str(schemaGvt.seqId)] proofs = {schemaGvt.seqId: ProofInfo(Proof(primaryProof=proofInfo.proof.primaryProof), issuer_did=schemaGvt.issuerId, schema_seq_no=proofInfo.schema_seq_no)} proof = proof._replace(proofs=proofs) assert proof == FullProof.fromStrDict(proof.toStrDict())
async def verifyProof(self, msg: Any): body, (frm, _) = msg link = self.verifyAndGetLink(msg) if not link: raise NotImplementedError proofName = body[NAME] nonce = getNonceForProof(body[NONCE]) proof = FullProof.fromStrDict(body[PROOF_FIELD]) proofInput = ProofInput.fromStrDict(body[PROOF_INPUT_FIELD]) revealedAttrs = fromDictWithStrValues(body[REVEALED_ATTRS_FIELD]) result = await self.verifier.verify(proofInput, proof, revealedAttrs, nonce) self.logger.info('Proof "{}" accepted with nonce {}'.format( proofName, nonce)) self.logger.info('Verifying proof "{}" from {}'.format( proofName, link.name)) status = 'verified' if result else 'failed verification' resp = { TYPE: PROOF_STATUS, DATA: ' Your Proof {} {} was received and {}\n'.format( body[NAME], body[VERSION], status), } self.signAndSend(resp, link.localIdentifier, frm, origReqId=body.get(f.REQ_ID.nm)) if result: for attribute in proofInput.revealedAttrs: # Log attributes that were verified self.logger.info('verified {}: {}'.format( attribute, revealedAttrs[attribute])) self.logger.info( 'Verified that proof "{}" contains attributes ' 'from claim(s) issued by: {}'.format( proofName, ", ".join(sorted([sk.issuerId for sk in proof.schemaKeys])))) await self._postProofVerif(proofName, link, frm) else: self.logger.info( 'Verification failed for proof {} from {} '.format( proofName, link.name))
async def verifyProof(self, msg: Any): body, (frm, _) = msg link = self.verifyAndGetLink(msg) if not link: raise NotImplementedError proofName = body[NAME] nonce = getNonceForProof(body[NONCE]) proof = FullProof.fromStrDict(body[PROOF_FIELD]) proofInput = ProofInput.fromStrDict(body[PROOF_INPUT_FIELD]) revealedAttrs = fromDictWithStrValues(body[REVEALED_ATTRS_FIELD]) result = await self.verifier.verify(proofInput, proof, revealedAttrs, nonce) self.logger.info('Proof "{}" accepted with nonce {}' .format(proofName, nonce)) self.logger.info('Verifying proof "{}" from {}' .format(proofName, link.name)) status = 'verified' if result else 'failed verification' resp = { TYPE: PROOF_STATUS, DATA: ' Your Proof {} {} was received and {}\n'. format(body[NAME], body[VERSION], status), } self.signAndSend(resp, link.localIdentifier, frm, origReqId=body.get(f.REQ_ID.nm)) if result: for attribute in proofInput.revealedAttrs: # Log attributes that were verified self.logger.info('verified {}: {}'. format(attribute, revealedAttrs[attribute])) self.logger.info('Verified that proof "{}" contains attributes ' 'from claim(s) issued by: {}'.format( proofName, ", ".join( sorted([sk.issuerId for sk in proof.schemaKeys])))) await self._postProofVerif(proofName, link, frm) else: self.logger.info('Verification failed for proof {} from {} ' .format(proofName, link.name))
async def testClaimProofFromToDict(prover1, nonce, claimsProver1Gvt): proofInput = ProofInput(['name'], [PredicateGE('age', 18)]) proof, _ = await prover1.presentProof(proofInput, nonce) assert proof == FullProof.fromStrDict(proof.toStrDict())