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)))
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))
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
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
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)
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