コード例 #1
0
ファイル: pybitcointools.py プロジェクト: LaurentMT/pybitid
def signature_verify(msg, sig, addr, istest=False):
    try:
        msg = to_bytes(msg)
        sig = to_bytes(sig)
        addr = to_bytes(addr)
        # Recovers public key (and checks signature is valid)
        Q = ecdsa_recover(msg,sig)
        if not Q: return False
        if ecdsa_is_compressed(decode_sig(sig)): Q = encode_pubkey(Q, 'hex_compressed')
        # Checks given address is equal to address associated to public key
        return True if pubkey_to_address(Q, pubbyte_prefix(istest)) == addr else False
    except AssertionError:
        return False
コード例 #2
0
def signature_verify(msg, sig, addr, istest=False):
    try:
        msg = to_bytes(msg)
        sig = to_bytes(sig)
        addr = to_bytes(addr)
        # Recovers public key (and checks signature is valid)
        Q = ecdsa_recover(msg, sig)
        if not Q: return False
        if ecdsa_is_compressed(decode_sig(sig)):
            Q = encode_pubkey(Q, 'hex_compressed')
        # Checks given address is equal to address associated to public key
        return True if pubkey_to_address(
            Q, pubbyte_prefix(istest)) == addr else False
    except AssertionError:
        return False
コード例 #3
0
def generate_nonce():
    '''
    Generates a random nonce
    Inspired from random_key() in https://github.com/vbuterin/pybitcointools/blob/master/bitcoin/main.py 
    Credits to https://github.com/vbuterin    
    '''
    entropy = str(os.urandom(32)) + str(random.randrange(2**256)) + str(
        int(time.time())**7)
    return hashlib.sha256(to_bytes(entropy)).hexdigest()[:NONCE_LEN]
コード例 #4
0
ファイル: pybitcointools.py プロジェクト: LaurentMT/pybitid
def address_verify(addr, istest=False):
    try:
        addr = to_bytes(addr)
        # Checks checksum
        leadingzbytes = len(re.match(b'^1*',addr).group(0))
        data = b'\x00' * leadingzbytes + changebase(addr,58,256)
        csum_ok = bin_dbl_sha256(data[:-4])[:4] == data[-4:]
        # Checks network
        vb = get_version_byte(addr)
        ntw_ok = (vb == 0 and not istest) or (vb == 111 and istest)
        # Result
        return csum_ok and ntw_ok
    except AssertionError:
        return False
コード例 #5
0
def address_verify(addr, istest=False):
    try:
        addr = to_bytes(addr)
        # Checks checksum
        leadingzbytes = len(re.match(b'^1*', addr).group(0))
        data = b'\x00' * leadingzbytes + changebase(addr, 58, 256)
        csum_ok = bin_dbl_sha256(data[:-4])[:4] == data[-4:]
        # Checks network
        vb = get_version_byte(addr)
        ntw_ok = (vb == 0 and not istest) or (vb == 111 and istest)
        # Result
        return csum_ok and ntw_ok
    except AssertionError:
        return False