lbry-sdk/scripts/check_signature.py
2020-01-01 15:57:56 -05:00

33 lines
1.2 KiB
Python

import argparse
import sqlite3
from binascii import hexlify
from lbry.wallet.transaction import Output
def check(db_path, claim_id):
db = sqlite3.connect(db_path)
db.row_factory = sqlite3.Row
claim = db.execute('select * from claim where claim_id=?', (claim_id,)).fetchone()
if not claim:
print('Could not find claim.')
return
channel = db.execute('select * from claim where claim_hash=?', (claim['channel_hash'],)).fetchone()
if not channel:
print('Could not find channel for this claim.')
print(f"Claim: {claim['claim_name']}")
print(f"Channel: {channel['claim_name']}")
print(f"Signature: {hexlify(claim['signature']).decode()}")
print(f"Digest: {hexlify(claim['signature_digest']).decode()}")
print(f"Pubkey: {hexlify(channel['public_key_bytes']).decode()}")
print("Valid: {}".format(Output.is_signature_valid(
claim['signature'], claim['signature_digest'], channel['public_key_bytes']
)))
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('db_path')
parser.add_argument('claim_id')
args = parser.parse_args()
check(args.db_path, args.claim_id)