def add_tag_into_cred_def_id(val):
    new_val = copy.deepcopy(val)
    old_cred_def_id = new_val.get(CRED_DEF_ID, None)
    if old_cred_def_id:
        path_elems = old_cred_def_id.split(':')
        if len(path_elems) == 4:
            did, marker, sig_type, schema_seq_no = path_elems
            new_cred_def_id = domain.make_state_path_for_claim_def(authors_did=did,
                                                                   schema_seq_no=schema_seq_no,
                                                                   signature_type=sig_type,
                                                                   tag=CLAIM_DEF_TAG_DEFAULT)
            new_val[CRED_DEF_ID] = new_cred_def_id.decode()
            rev_type = new_val.get(REVOC_TYPE)
            rev_tag = new_val.get(TAG)
            if not all([rev_type, rev_tag]):
                return False
            new_revoc_reg_def_id = domain.make_state_path_for_revoc_def(authors_did=did,
                                                                        cred_def_id=new_cred_def_id.decode(),
                                                                        revoc_def_type=rev_type,
                                                                        revoc_def_tag=rev_tag)
            new_val[ID] = new_revoc_reg_def_id.decode()
        else:
            return False
    else:
        return False
    return new_val
示例#2
0
 def getRevocDef(self,
                 author_did,
                 cred_def_id,
                 revoc_def_type,
                 revoc_def_tag,
                 isCommitted=True) -> (str, int, int, list):
     assert author_did is not None
     assert cred_def_id is not None
     assert revoc_def_type is not None
     assert revoc_def_tag is not None
     path = domain.make_state_path_for_revoc_def(author_did, cred_def_id,
                                                 revoc_def_type,
                                                 revoc_def_tag)
     try:
         keys, seqno, lastUpdateTime, proof = self.lookup(path, isCommitted)
         return keys, seqno, lastUpdateTime, proof
     except KeyError:
         return None, None, None, None
def add_cred_def_id_into_entry(val):
    new_val = copy.deepcopy(val)
    old_revoc_reg_def_id = new_val.get(REVOC_REG_DEF_ID, None)
    if old_revoc_reg_def_id:
        path_elems = old_revoc_reg_def_id.split(':')
        did = path_elems[0]
        cred_def_id = ":".join(path_elems[2:-2])
        rev_tag = path_elems[-1]
        rev_type = path_elems[-2]
        new_revoc_reg_def_id = domain.make_state_path_for_revoc_def(authors_did=did,
                                                                    cred_def_id="{}:{}".format(cred_def_id,
                                                                                               CLAIM_DEF_TAG_DEFAULT),
                                                                    revoc_def_type=rev_type,
                                                                    revoc_def_tag=rev_tag)
        new_val[REVOC_REG_DEF_ID] = new_revoc_reg_def_id.decode()
    else:
        return False
    return new_val
示例#4
0
 def getRevocDef(self,
                 author_did,
                 cred_def_id,
                 revoc_def_type,
                 revoc_def_tag,
                 isCommitted=True) -> (str, int, int, list):
     assert author_did is not None
     assert cred_def_id is not None
     assert revoc_def_type is not None
     assert revoc_def_tag is not None
     path = domain.make_state_path_for_revoc_def(author_did,
                                                 cred_def_id,
                                                 revoc_def_type,
                                                 revoc_def_tag)
     try:
         keys, seqno, lastUpdateTime, proof = self.lookup(path, isCommitted)
         return keys, seqno, lastUpdateTime, proof
     except KeyError:
         return None, None, None, None
示例#5
0
    def _validate_revoc_reg_def(self, req: Request):
        operation = req.operation
        cred_def_id = operation.get(CRED_DEF_ID)
        revoc_def_type = operation.get(REVOC_TYPE)
        revoc_def_tag = operation.get(TAG)
        assert cred_def_id
        assert revoc_def_tag
        assert revoc_def_type
        tags = cred_def_id.split(":")

        revoc_def_id = make_state_path_for_revoc_def(req.identifier,
                                                     cred_def_id,
                                                     revoc_def_type,
                                                     revoc_def_tag)
        revoc_def, _, _, _ = self.lookup(revoc_def_id, isCommitted=False)

        if revoc_def is None:
            self.write_req_validator.validate(
                req,
                [AuthActionAdd(txn_type=REVOC_REG_DEF, field='*', value='*')])
        else:
            self.write_req_validator.validate(req, [
                AuthActionEdit(txn_type=REVOC_REG_DEF,
                               field='*',
                               old_value='*',
                               new_value='*')
            ])

        cred_def, _, _, _ = self.lookup(cred_def_id,
                                        isCommitted=False,
                                        with_proof=False)

        if len(tags) != 4 and len(tags) != 5:
            raise InvalidClientRequest(
                req.identifier, req.reqId,
                "Format of {} field is not acceptable. "
                "Expected: 'did:marker:signature_type:schema_ref' or "
                "'did:marker:signature_type:schema_ref:tag'".format(
                    CRED_DEF_ID))
        if cred_def is None:
            raise InvalidClientRequest(
                req.identifier, req.reqId,
                "There is no any CRED_DEF by path: {}".format(cred_def_id))
示例#6
0
def test_send_reg_def_and_get_delta_then(
        looper,
        txnPoolNodeSet,
        sdk_pool_handle,
        send_revoc_reg_def_by_default,
        build_get_revoc_reg_delta):
    rev_def_req, _ = send_revoc_reg_def_by_default
    get_revoc_reg_delta = copy.deepcopy(build_get_revoc_reg_delta)
    get_revoc_reg_delta['operation'][REVOC_REG_DEF_ID] = domain.make_state_path_for_revoc_def(authors_did=rev_def_req[f.IDENTIFIER.nm],
                                                                                              cred_def_id=rev_def_req[OPERATION][CRED_DEF_ID],
                                                                                              revoc_def_type=rev_def_req[OPERATION][REVOC_TYPE],
                                                                                              revoc_def_tag=rev_def_req[OPERATION][TAG]).decode()
    get_revoc_reg_delta['operation'][TO] = get_utc_epoch()
    sdk_reply = sdk_send_and_check([json.dumps(get_revoc_reg_delta)], looper, txnPoolNodeSet, sdk_pool_handle)
    reply = sdk_reply[0][1]
    assert DATA in reply['result']
    assert reply['result'][DATA] is None
    assert STATE_PROOF in reply['result']
    assert reply['result'][STATE_PROOF] is not None