Exemple #1
0
 def _validate_schema(self, req: Request):
     # we can not add a Schema with already existent NAME and VERSION
     # sine a Schema needs to be identified by seqNo
     identifier = req.identifier
     operation = req.operation
     schema_name = operation[DATA][NAME]
     schema_version = operation[DATA][VERSION]
     schema, _, _, _ = self.getSchema(author=identifier,
                                      schemaName=schema_name,
                                      schemaVersion=schema_version)
     if schema:
         raise InvalidClientRequest(
             identifier, req.reqId,
             '{} can have one and only one SCHEMA with '
             'name {} and version {}'.format(identifier, schema_name,
                                             schema_version))
     try:
         origin_role = self.idrCache.getRole(req.identifier,
                                             isCommitted=False) or None
     except BaseException:
         raise UnknownIdentifier(req.identifier, req.reqId)
     r, msg = Authoriser.authorised(typ=SCHEMA, actorRole=origin_role)
     if not r:
         raise UnauthorizedClientRequest(
             req.identifier, req.reqId, "{} cannot add schema".format(
                 Roles.nameFromValue(origin_role)))
 def _validate_claim_def(self, req: Request):
     # we can not add a Claim Def with existent ISSUER_DID
     # sine a Claim Def needs to be identified by seqNo
     ref = req.operation[REF]
     try:
         txn = self.ledger.getBySeqNo(ref)
     except KeyError:
         raise InvalidClientRequest(
             req.identifier, req.reqId,
             "Mentioned seqNo ({}) doesn't exist.".format(ref))
     if txn['txn']['type'] != SCHEMA:
         raise InvalidClientRequest(
             req.identifier, req.reqId,
             "Mentioned seqNo ({}) isn't seqNo of the schema.".format(ref))
     try:
         origin_role = self.idrCache.getRole(req.identifier,
                                             isCommitted=False) or None
     except BaseException:
         raise UnknownIdentifier(req.identifier, req.reqId)
     # only owner can update claim_def,
     # because his identifier is the primary key of claim_def
     r, msg = Authoriser.authorised(typ=CLAIM_DEF,
                                    actorRole=origin_role,
                                    isActorOwnerOfSubject=True)
     if not r:
         raise UnauthorizedClientRequest(
             req.identifier, req.reqId, "{} cannot add claim def".format(
                 Roles.nameFromValue(origin_role)))
Exemple #3
0
def decode_address_to_vk_bytes(address):
    from plenum.common.exceptions import UnknownIdentifier

    if isinstance(address, str):
        address = address.encode()
    try:
        return b58decode_check(address)
    except ValueError:
        raise UnknownIdentifier('{} is not a valid base58check value'.format(address))
Exemple #4
0
 def getVerkey(self, identifier):
     nym = self.clients.get(identifier)
     if not nym:
         # Querying uncommitted identities since a batch might contain
         # both identity creation request and a request by that newly
         # created identity, also its possible to have multiple uncommitted
         # batches in progress and identity creation request might
         # still be in an earlier uncommited batch
         nym = get_nym_details(self.state, identifier, is_committed=False)
         if not nym:
             raise UnknownIdentifier(identifier)
     return nym.get(VERKEY)
    def getVerkey(self, identifier):
        # TODO: This is very inefficient
        verkey = None
        found = False
        for txn in self.ledger.getAllTxn().values():
            if txn[TARGET_NYM] == identifier:
                found = True
                if txn.get(VERKEY):
                    verkey = txn[VERKEY]

        if not found:
            raise UnknownIdentifier(identifier)
        verkey = verkey or identifier
        return verkey
Exemple #6
0
    def getVerkey(self, identifier):
        # TODO: This is very inefficient
        verkey = None
        found = False
        for _, txn in self.ledger.getAllTxn():
            txn_data = get_payload_data(txn)
            if txn_data[TARGET_NYM] == identifier:
                found = True
                if txn_data.get(VERKEY):
                    verkey = txn_data[VERKEY]

        if not found:
            raise UnknownIdentifier(identifier)
        verkey = verkey or identifier
        return verkey
Exemple #7
0
    def _validateNym(self, req: Request):
        origin = req.identifier
        op = req.operation

        try:
            originRole = self.idrCache.getRole(origin,
                                               isCommitted=False) or None
        except BaseException:
            raise UnknownIdentifier(req.identifier, req.reqId)

        nymData = self.idrCache.getNym(op[TARGET_NYM], isCommitted=False)
        if not nymData:
            # If nym does not exist
            self._validateNewNym(req, op, originRole)
        else:
            self._validateExistingNym(req, op, originRole, nymData)
Exemple #8
0
 def _validate_claim_def(self, req: Request):
     # we can not add a Claim Def with existent ISSUER_DID
     # sine a Claim Def needs to be identified by seqNo
     try:
         origin_role = self.idrCache.getRole(req.identifier,
                                             isCommitted=False) or None
     except BaseException:
         raise UnknownIdentifier(req.identifier, req.reqId)
     # only owner can update claim_def,
     # because his identifier is the primary key of claim_def
     r, msg = Authoriser.authorised(typ=CLAIM_DEF,
                                    actorRole=origin_role,
                                    isActorOwnerOfSubject=True)
     if not r:
         raise UnauthorizedClientRequest(
             req.identifier, req.reqId, "{} cannot add claim def".format(
                 Roles.nameFromValue(origin_role)))
 def getVerkey(self, identifier):
     nym = self.clients.get(identifier)
     if not nym:
         raise UnknownIdentifier(identifier)
     return nym.get("verkey")
 def getVerkey(self, identifier):
     nym = self.storage.getNym(identifier)
     if not nym:
         raise UnknownIdentifier(identifier)
     verkey = nym.oRecordData.get('verkey') or ''
     return verkey