code: async def issueClaim(self, schemaId: ID, claimRequest: ClaimRequest,
                           iA=None,
                           i=None) -> (Claims, Dict[str, ClaimAttributeValues]):
          
  
          schemaKey = (await self.wallet.getSchema(schemaId)).getKey()
          attributes = self._attrRepo.getAttributes(schemaKey,
                                                    claimRequest.userId)
  
          # TODO re-enable when revocation registry is implemented
          # iA = iA if iA else (await self.wallet.getAccumulator(schemaId)).iA
  
          # TODO this has un-obvious side-effects
          await self._genContxt(schemaId, iA, claimRequest.userId)
  
          (c1, claim) = await self._issuePrimaryClaim(schemaId, attributes,
                                                      claimRequest.U)
          # TODO re-enable when revocation registry is fully implemented
          c2 = await self._issueNonRevocationClaim(schemaId, claimRequest.Ur,
                                                   iA,
                                                   i) if claimRequest.Ur else None
  
          signature = Claims(primaryClaim=c1, nonRevocClaim=c2)
  
          return (signature, claim)
docs: Issue a claim for the given user and schema.
  
          :param schemaId: The schema ID (reference to claim
          definition schema)
          :param claimRequest: A claim request containing prover ID and
          prover-generated values
          :param iA: accumulator ID
          :param i: claim's sequence number within accumulator
          :return: The claim (both primary and non-revocation)