當前位置: 首頁>>代碼示例>>Python>>正文


Python secp256k1.PrivateKey方法代碼示例

本文整理匯總了Python中secp256k1.PrivateKey方法的典型用法代碼示例。如果您正苦於以下問題:Python secp256k1.PrivateKey方法的具體用法?Python secp256k1.PrivateKey怎麽用?Python secp256k1.PrivateKey使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在secp256k1的用法示例。


在下文中一共展示了secp256k1.PrivateKey方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: __init__

# 需要導入模塊: import secp256k1 [as 別名]
# 或者: from secp256k1 import PrivateKey [as 別名]
def __init__(self, private_key=None):
        self.__private_key = private_key or PrivateKey()
        self.__address = self.create_address(self.__private_key.pubkey)
        self.__last_tx_hash = ""

        tx_hash_versions = conf.CHANNEL_OPTION[conf.LOOPCHAIN_DEFAULT_CHANNEL]["hash_versions"]
        self.__hash_generators = {
            "0x2": build_hash_generator(tx_hash_versions["0x2"], "icx_sendTransaction"),
            "0x3": build_hash_generator(tx_hash_versions["0x3"], "icx_sendTransaction")
        }

        self.to_address = None
        self.value = None
        self.message = None
        self.fee = ICX_FEE
        self.nid = '0x3'
        self.is_logging = True 
開發者ID:icon-project,項目名稱:loopchain,代碼行數:19,代碼來源:icx_wallet.py

示例2: test_ecdsa

# 需要導入模塊: import secp256k1 [as 別名]
# 或者: from secp256k1 import PrivateKey [as 別名]
def test_ecdsa():
    data = open(os.path.join(DATA, 'ecdsa_sig.json')).read()
    vec = json.loads(data)['vectors']

    inst = secp256k1.PrivateKey()

    for item in vec:
        seckey = bytes(bytearray.fromhex(item['privkey']))
        msg32 = bytes(bytearray.fromhex(item['msg']))
        sig = bytes(bytearray.fromhex(item['sig'])[:-1])

        inst.set_raw_privkey(seckey)

        sig_raw = inst.ecdsa_sign(msg32, raw=True)
        sig_check = inst.ecdsa_serialize(sig_raw)
        assert sig_check == sig
        assert inst.ecdsa_serialize(inst.ecdsa_deserialize(sig_check)) == sig_check

        assert inst.pubkey.ecdsa_verify(msg32, sig_raw, raw=True) 
開發者ID:ludbb,項目名稱:secp256k1-py,代碼行數:21,代碼來源:test_ecdsa.py

示例3: test_ecdsa_normalize

# 需要導入模塊: import secp256k1 [as 別名]
# 或者: from secp256k1 import PrivateKey [as 別名]
def test_ecdsa_normalize():
    key = secp256k1.PrivateKey()
    raw_sig = key.ecdsa_sign(b'hi')

    had_to_normalize, normsig = key.ecdsa_signature_normalize(raw_sig)
    assert had_to_normalize == False
    assert key.ecdsa_serialize(normsig) == key.ecdsa_serialize(raw_sig)
    assert key.ecdsa_serialize_compact(normsig) == \
            key.ecdsa_serialize_compact(raw_sig)

    had_to_normalize, normsig = key.ecdsa_signature_normalize(
        raw_sig, check_only=True)
    assert had_to_normalize == False
    assert normsig == None

    sig = b'\xAA' + (b'\xFF' * 31) + b'\xAA' + (b'\xFF' * 31)
    raw_sig = key.ecdsa_deserialize_compact(sig)
    normalized, normsig = key.ecdsa_signature_normalize(raw_sig)
    assert normalized == True
    assert key.ecdsa_serialize(normsig) != key.ecdsa_serialize(raw_sig)
    normalized, normsig = key.ecdsa_signature_normalize(raw_sig, True)
    assert normalized == True
    assert normsig == None 
開發者ID:ludbb,項目名稱:secp256k1-py,代碼行數:25,代碼來源:test_ecdsa.py

示例4: test_privkey

# 需要導入模塊: import secp256k1 [as 別名]
# 或者: from secp256k1 import PrivateKey [as 別名]
def test_privkey():
    with pytest.raises(TypeError):
        key = 'abc'
        secp256k1.PrivateKey(key)

    with pytest.raises(TypeError):
        key = bytearray.fromhex('a' * 32)  # This will result in 16 bytes.
        secp256k1.PrivateKey(bytes(key))

    with pytest.raises(Exception):
        secp256k1.PrivateKey(bytes(bytearray.fromhex('0' * 64)))

    with pytest.raises(Exception):
        secp256k1.PrivateKey(bytes(bytearray.fromhex('F' * 64)))

    with pytest.raises(Exception):
        # This is a good raw key, but here it's being passed as serialized.
        secp256k1.PrivateKey(b'1' * 32, raw=False)

    # "good" key, should be fine.
    assert secp256k1.PrivateKey(b'1' * 32) 
開發者ID:ludbb,項目名稱:secp256k1-py,代碼行數:23,代碼來源:test_err.py

示例5: test_ecdsa

# 需要導入模塊: import secp256k1 [as 別名]
# 或者: from secp256k1 import PrivateKey [as 別名]
def test_ecdsa():
    rawkey = (b'\xc9\xa9)Z\xf8Er\x97\x8b\xa23\x1f\xf7\xb6\x82qQ\xdc9\xc1'
              b'\x1d\xac6\xfd\xeb\x11\x05\xb1\xdf\x86\xb3\xe6')
    priv = secp256k1.PrivateKey(rawkey)
    with pytest.raises(Exception):
        # Bad digest function (doesn't produce 256 bits).
        priv.ecdsa_sign(b'hi', digest=hashlib.sha1)

    raw_sig = priv.ecdsa_sign(b'hi')
    assert priv.pubkey.ecdsa_verify(b'hi', raw_sig)

    with pytest.raises(AssertionError):
        sig = priv.ecdsa_serialize(raw_sig)[:-1]
        priv.ecdsa_deserialize(sig)

    sig = priv.ecdsa_serialize(raw_sig)
    sig = sig[:-1] + bytes(sig[0:1])  # Assuming sig[0] != sig[-1].
    invalid_sig = priv.ecdsa_deserialize(sig)
    assert not priv.pubkey.ecdsa_verify(b'hi', invalid_sig) 
開發者ID:ludbb,項目名稱:secp256k1-py,代碼行數:21,代碼來源:test_err.py

示例6: test_ecdsa_recoverable

# 需要導入模塊: import secp256k1 [as 別名]
# 或者: from secp256k1 import PrivateKey [as 別名]
def test_ecdsa_recoverable():
    if not secp256k1.HAS_RECOVERABLE:
        pytest.skip('secp256k1_recovery not enabled, skipping')
        return

    key = '32a8935ffdb984a498b0f7ac8943e0d2ac084e81c809595fd19fde41522f1837'
    priv = secp256k1.PrivateKey(bytes(bytearray.fromhex(key)))
    sig = priv.ecdsa_sign_recoverable(b'hi')
    sig_ser, rec_id = priv.ecdsa_recoverable_serialize(sig)
    assert rec_id == 1

    with pytest.raises(Exception):
        # Invalid rec_id (must be between 0 and 3)
        priv.ecdsa_recoverable_deserialize(sig_ser, -1)

    # Deserialize using a rec_id that does not match.
    sig = priv.ecdsa_recoverable_deserialize(sig_ser, 2)
    with pytest.raises(Exception):
        # Now try to recover the public key.
        priv.ecdsa_recover(b'hi', sig)

    # Invalid size.
    with pytest.raises(Exception):
        priv.ecdsa_recoverable_deserialize(b'hello', 0) 
開發者ID:ludbb,項目名稱:secp256k1-py,代碼行數:26,代碼來源:test_err.py

示例7: test_schnorr

# 需要導入模塊: import secp256k1 [as 別名]
# 或者: from secp256k1 import PrivateKey [as 別名]
def test_schnorr():
    if not secp256k1.HAS_SCHNORR:
        pytest.skip('secp256k1_schnorr not enabled, skipping')
        return

    inst = secp256k1.PrivateKey()
    raw_sig = inst.schnorr_sign(b'hello')

    test1 = secp256k1.PublicKey(inst.pubkey.public_key,
                                flags=secp256k1.NO_FLAGS)
    with pytest.raises(Exception):
        test1.schnorr_verify(b'hello', raw_sig)

    blank = secp256k1.PublicKey(flags=secp256k1.NO_FLAGS)
    with pytest.raises(Exception):
        blank.schnorr_recover(b'hello', raw_sig)

    blank = secp256k1.PublicKey(flags=secp256k1.FLAG_SIGN)
    with pytest.raises(Exception):
        blank.schnorr_recover(b'hello', raw_sig) 
開發者ID:ludbb,項目名稱:secp256k1-py,代碼行數:22,代碼來源:test_err.py

示例8: test_schnorr_partial

# 需要導入模塊: import secp256k1 [as 別名]
# 或者: from secp256k1 import PrivateKey [as 別名]
def test_schnorr_partial():
    if not secp256k1.HAS_SCHNORR:
        pytest.skip('secp256k1_schnorr not enabled, skipping')
        return

    signer1 = secp256k1.PrivateKey()
    pubnonce1, privnonce1 = signer1.schnorr_generate_nonce_pair(b'hello')

    signer2 = secp256k1.PrivateKey()
    pubnonce2, privnonce2 = signer2.schnorr_generate_nonce_pair(b'hello')

    partial1 = signer1.schnorr_partial_sign(b'hello', privnonce1, pubnonce2)
    blank = secp256k1.PublicKey(flags=secp256k1.NO_FLAGS)

    with pytest.raises(TypeError):
        blank.schnorr_partial_combine([partial1, secp256k1.ffi.NULL])

    with pytest.raises(Exception):
        blank.schnorr_partial_combine([partial1, b'']) 
開發者ID:ludbb,項目名稱:secp256k1-py,代碼行數:21,代碼來源:test_err.py

示例9: test_ecdh

# 需要導入模塊: import secp256k1 [as 別名]
# 或者: from secp256k1 import PrivateKey [as 別名]
def test_ecdh():
    if not secp256k1.HAS_ECDH:
        pytest.skip('secp256k1_ecdh not enabled, skipping')
        return

    pubkey = secp256k1.PrivateKey().pubkey

    p = secp256k1.PublicKey(pubkey.public_key)
    with pytest.raises(Exception):
        # Bad scalar length.
        p.ecdh(b'')
    with pytest.raises(Exception):
        # Bad scalar type.
        p.ecdh([])

    res = p.ecdh(b'0' * 32)
    assert type(res) == bytes 
開發者ID:ludbb,項目名稱:secp256k1-py,代碼行數:19,代碼來源:test_ecdh.py

示例10: test_ecdsa_with_custom_nonce

# 需要導入模塊: import secp256k1 [as 別名]
# 或者: from secp256k1 import PrivateKey [as 別名]
def test_ecdsa_with_custom_nonce():
    data = open(os.path.join(DATA, 'ecdsa_custom_nonce_sig.json')).read()
    vec = json.loads(data)['vectors']
    inst = secp256k1.PrivateKey()
    for item in vec:
        seckey = bytes(bytearray.fromhex(item['privkey']))
        msg32 = bytes(bytearray.fromhex(item['msg']))
        sig = bytes(bytearray.fromhex(item['sig']))
        randnonce = bytes(bytearray.fromhex(item['nonce']))
        inst.set_raw_privkey(seckey)
        nf = ffi.addressof(_noncefunc.lib, "nonce_function_rand")
        ndata = ffi.new("char [32]", randnonce)
        sig_raw = inst.ecdsa_sign(msg32, raw=True, custom_nonce=(nf, ndata))
        sig_check = inst.ecdsa_serialize(sig_raw)
        assert sig_check == sig
        assert inst.ecdsa_serialize(inst.ecdsa_deserialize(sig_check)) == sig_check
        assert inst.pubkey.ecdsa_verify(msg32, sig_raw, raw=True) 
開發者ID:ludbb,項目名稱:secp256k1-py,代碼行數:19,代碼來源:test_custom_nonce.py

示例11: test_schnorr_simple

# 需要導入模塊: import secp256k1 [as 別名]
# 或者: from secp256k1 import PrivateKey [as 別名]
def test_schnorr_simple():
    if not secp256k1.HAS_SCHNORR:
        pytest.skip('secp256k1_schnorr not enabled, skipping')
        return

    inst = secp256k1.PrivateKey()
    raw_sig = inst.schnorr_sign(b'hello')

    assert inst.pubkey.schnorr_verify(b'hello', raw_sig)
    key2 = secp256k1.PrivateKey()
    assert not key2.pubkey.schnorr_verify(b'hello', raw_sig)

    blank = secp256k1.PublicKey()
    pubkey = blank.schnorr_recover(b'hello', raw_sig)
    pub = secp256k1.PublicKey(pubkey)
    assert pub.serialize() == inst.pubkey.serialize() 
開發者ID:ludbb,項目名稱:secp256k1-py,代碼行數:18,代碼來源:test_schnorr.py

示例12: test_privkey

# 需要導入模塊: import secp256k1 [as 別名]
# 或者: from secp256k1 import PrivateKey [as 別名]
def test_privkey():
    with pytest.raises(AssertionError):
        secp256k1.PrivateKey(flags=secp256k1.FLAG_VERIFY)
    with pytest.raises(AssertionError):
        secp256k1.PrivateKey(flags=0)

    privkey = secp256k1.PrivateKey(flags=secp256k1.FLAG_SIGN)
    sig = privkey.ecdsa_sign(b'hi')
    with pytest.raises(Exception):
        # FLAG_SIGN was not specified.
        privkey.pubkey.ecdsa_verify(b'hi', sig)

    assert privkey.flags == privkey.pubkey.flags

    privkey = secp256k1.PrivateKey()
    sig = privkey.ecdsa_sign(b'hi')
    assert privkey.pubkey.ecdsa_verify(b'hi', sig) 
開發者ID:ludbb,項目名稱:secp256k1-py,代碼行數:19,代碼來源:test_flags.py

示例13: test_pubkey_from_privkey

# 需要導入模塊: import secp256k1 [as 別名]
# 或者: from secp256k1 import PrivateKey [as 別名]
def test_pubkey_from_privkey():
    data = open(os.path.join(DATA, 'pubkey.json')).read()
    vec = json.loads(data)['vectors']

    inst = secp256k1.PrivateKey()

    for item in vec:
        seckey = bytes(bytearray.fromhex(item['seckey']))
        pubkey_uncp = bytes(bytearray.fromhex(item['pubkey']))
        pubkey_comp = bytes(bytearray.fromhex(item['compressed']))

        inst.set_raw_privkey(seckey)

        assert inst.pubkey.serialize(compressed=False) == pubkey_uncp
        assert inst.pubkey.serialize(compressed=True) == pubkey_comp

        assert inst.deserialize(inst.serialize()) == seckey 
開發者ID:ludbb,項目名稱:secp256k1-py,代碼行數:19,代碼來源:test_pubkey.py

示例14: test_pubkey_combine

# 需要導入模塊: import secp256k1 [as 別名]
# 或者: from secp256k1 import PrivateKey [as 別名]
def test_pubkey_combine():
    k1 = secp256k1.PrivateKey()
    k2 = secp256k1.PrivateKey()

    pub1 = k1.pubkey.public_key
    pub2 = k2.pubkey.public_key
    new = secp256k1.PublicKey()
    assert new.public_key is None
    res = new.combine([pub1, pub2])
    assert new.public_key == res

    new = secp256k1.PublicKey()
    assert new.public_key is None
    res = new.combine([pub1])
    assert new.public_key == res
    assert new.serialize() == k1.pubkey.serialize() 
開發者ID:ludbb,項目名稱:secp256k1-py,代碼行數:18,代碼來源:test_pubkey.py

示例15: test_pubkey_tweak

# 需要導入模塊: import secp256k1 [as 別名]
# 或者: from secp256k1 import PrivateKey [as 別名]
def test_pubkey_tweak():
    inst = secp256k1.PrivateKey()
    pub = inst.pubkey

    scalar = [b'\x01' * 32]
    with pytest.raises(TypeError):
        pub.tweak_add(scalar)
    with pytest.raises(TypeError):
        pub.tweak_mul(scalar)

    scalar = b'\x01' * 31
    with pytest.raises(TypeError):
        pub.tweak_add(scalar)
    with pytest.raises(TypeError):
        pub.tweak_mul(scalar)

    scalar = scalar + b'\x01'
    res = pub.tweak_add(scalar)
    assert isinstance(res, secp256k1.PublicKey)
    assert res.serialize() != pub.serialize() 
開發者ID:ludbb,項目名稱:secp256k1-py,代碼行數:22,代碼來源:test_tweak.py


注:本文中的secp256k1.PrivateKey方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。