forked from LBRYCommunity/lbry-sdk
fix str/bytes confusion from resolve/claimdict on certificate_id
This commit is contained in:
parent
b707ee4844
commit
be6448b74f
3 changed files with 10 additions and 17 deletions
|
@ -155,8 +155,8 @@ class Resolver:
|
||||||
certificate = None
|
certificate = None
|
||||||
certificate_id = smart_decode(claim_result['value']).certificate_id
|
certificate_id = smart_decode(claim_result['value']).certificate_id
|
||||||
if certificate_id:
|
if certificate_id:
|
||||||
certificate = await self.network.get_claims_by_ids(certificate_id.decode())
|
certificate = await self.network.get_claims_by_ids(certificate_id)
|
||||||
certificate = certificate.pop(certificate_id.decode()) if certificate else None
|
certificate = certificate.pop(certificate_id) if certificate else None
|
||||||
return await self.parse_and_validate_claim_result(claim_result, certificate=certificate)
|
return await self.parse_and_validate_claim_result(claim_result, certificate=certificate)
|
||||||
|
|
||||||
async def parse_and_validate_claim_result(self, claim_result, certificate=None, raw=False):
|
async def parse_and_validate_claim_result(self, claim_result, certificate=None, raw=False):
|
||||||
|
@ -180,7 +180,7 @@ class Resolver:
|
||||||
if decoded.has_signature:
|
if decoded.has_signature:
|
||||||
if certificate is None:
|
if certificate is None:
|
||||||
log.info("fetching certificate to check claim signature")
|
log.info("fetching certificate to check claim signature")
|
||||||
certificate = await self.network.get_claims_by_ids(decoded.certificate_id.decode())
|
certificate = await self.network.get_claims_by_ids(decoded.certificate_id)
|
||||||
if not certificate:
|
if not certificate:
|
||||||
log.warning('Certificate %s not found', decoded.certificate_id)
|
log.warning('Certificate %s not found', decoded.certificate_id)
|
||||||
claim_result['has_signature'] = True
|
claim_result['has_signature'] = True
|
||||||
|
@ -308,17 +308,10 @@ def format_amount_value(obj):
|
||||||
|
|
||||||
|
|
||||||
def _get_permanent_url(claim_result, certificate_id):
|
def _get_permanent_url(claim_result, certificate_id):
|
||||||
if claim_result.get('has_signature') and claim_result.get('channel_name'):
|
if certificate_id:
|
||||||
return "{}#{}/{}".format(
|
return f"{claim_result['channel_name']}#{certificate_id}/{claim_result['name']}"
|
||||||
claim_result['channel_name'],
|
|
||||||
certificate_id,
|
|
||||||
claim_result['name']
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
return "{}#{}".format(
|
return f"{claim_result['name']}#{claim_result['claim_id']}"
|
||||||
claim_result['name'],
|
|
||||||
claim_result['claim_id']
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def _verify_proof(name, claim_trie_root, result, height, depth, transaction_class, hash160_to_address):
|
def _verify_proof(name, claim_trie_root, result, height, depth, transaction_class, hash160_to_address):
|
||||||
|
|
|
@ -92,11 +92,11 @@ class ClaimDict(OrderedDict):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def certificate_id(self):
|
def certificate_id(self) -> str:
|
||||||
if self.protobuf.HasField("publisherSignature"):
|
if self.protobuf.HasField("publisherSignature"):
|
||||||
return binascii.hexlify(self.protobuf.publisherSignature.certificateId)
|
return binascii.hexlify(self.protobuf.publisherSignature.certificateId).decode()
|
||||||
if self.detached_signature and self.detached_signature.certificate_id:
|
if self.detached_signature and self.detached_signature.certificate_id:
|
||||||
return binascii.hexlify(self.detached_signature.certificate_id)
|
return binascii.hexlify(self.detached_signature.certificate_id).decode()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def signature(self):
|
def signature(self):
|
||||||
|
|
|
@ -346,7 +346,7 @@ class TestDetachedNamedSECP256k1Signatures(UnitTest):
|
||||||
curve=SECP256k1, name='example', force_detached=True)
|
curve=SECP256k1, name='example', force_detached=True)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
signed.claim_dict['publisherSignature']['detached_signature'],
|
signed.claim_dict['publisherSignature']['detached_signature'],
|
||||||
binascii.hexlify(signed.serialized)
|
binascii.hexlify(signed.serialized).decode()
|
||||||
)
|
)
|
||||||
signed_copy = ClaimDict.load_dict(signed.claim_dict)
|
signed_copy = ClaimDict.load_dict(signed.claim_dict)
|
||||||
self.assertEqual(signed_copy.validate_signature(claim_address_2, cert, name='example'), True)
|
self.assertEqual(signed_copy.validate_signature(claim_address_2, cert, name='example'), True)
|
||||||
|
|
Loading…
Reference in a new issue