Exemple #1
0
 def __init__(self):
     self.accounts = [None, None]
     self.hardware = True
     # Init account with default address to compare with ledger
     for i in range(2):
         HD = self.getPrivateKey(self._mnemonic(), i, 0, 0)
         key = keys.PrivateKey(HD.PrivateKey())
         diffieHellman = ec.derive_private_key(int.from_bytes(HD.PrivateKey(), "big"), ec.SECP256K1(), default_backend())
         self.accounts[i] = {
                 "path": parse_bip32_path("44'/195'/{}'/0/0".format(i)),
                 "privateKeyHex": HD.PrivateKey().hex(),
                 "key": key,
                 "addressHex": "41" + key.public_key.to_checksum_address()[2:].upper(),
                 "publicKey": key.public_key.to_hex().upper(),
                 "dh": diffieHellman,
             }
#!/usr/bin/env python

from ledgerblue.comm import getDongle
import argparse
from base import parse_bip32_path
import binascii

parser = argparse.ArgumentParser()
parser.add_argument('--path',
                    help="BIP32 path to retrieve. e.g. \"44'/195'/0'/0/0\".")
args = parser.parse_args()

if args.path == None:
    args.path = "44'/195'/0'/0/0"

donglePath = parse_bip32_path(args.path)

transactionRaw = "0a02ee332208c90c7f40dfbdc51540e0dfe3ada62d5a860108041281010a30747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e566f74655769746e657373436f6e7472616374124d0a15417773ff0ebd2d2c85761db01ae2b00c417bf1539312190a154167e39013be3cdd3814bed152d7439fb5b6791409100212190a1541c189fa6fc9ed7a3580c3fe291915d5c6a6259be710027089a2e0ada62d"
transactionRawFIRST = "0a02ee332208c90c7f40dfbdc51540e0dfe3ada62d5a860108041281010a30747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e566f74655769746e657373436f6e7472616374124d0a15417773ff0ebd2d2c85761db01ae2b00c417bf1539312190a154167e39013be3cdd3814"
transactionRawEND = "bed152d7439fb5b6791409100212190a1541c189fa6fc9ed7a3580c3fe291915d5c6a6259be710027089a2e0ada62d"

transactionBIG1 = "0a02edd92208ac1579fd507b8c8b40b0a2d3ada62d5af301080412ee010a30747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e566f74655769746e657373436f6e747261637412b9010a15417773ff0ebd2d2c85761db01ae2b00c417bf1539312190a154167e39013be3cdd38"
transactionBIG2 = "14bed152d7439fb5b6791409100112190a15414d1ef8673f916debb7e2515a8f3ecaf2611034aa100112190a154184399fc6c110"
transactionBIG3 = "1541b3ee0112190aa98edc11a6efb146e86a3e153d0a0933100112190a1541496e85711fa3b7ba5a093af635269a67230ac2c714"
transactionBIG4 = "81e8864f0fc1f601b836b74c40548287100112190a1541c189fa6fc9ed7a3580c3fe291915d5c6a6259be710017082f1cfada62d"

signatureTest = "7b74891516d57580ab669d8d4dd84cbf202108affd9d7102b33b6d81c8fa3796678512f6e6db923bac96f20fa3ba5f06fab3007678ce354f0a4ef7d37e3f7dcd01"

# Create APDU message.
# CLA 0xE0
# INS 0x04 	SIGN
                            0xA0 | 0x08 | (0x00 + len(tokenSignature) - 1),
                            0x00, None, chunkList[len(chunkList) - 1]))
        else:
            result = dongle.exchange(
                apduMessage(0x04, 0x90, 0x00, None,
                            chunkList[len(chunkList) - 1]))

    return raw_tx, result


def address_hex(address):
    return base58.b58decode_check(address).hex().upper()


accounts = [{
    "path": parse_bip32_path("44'/195'/0'/0/0"),
}, {
    "path": parse_bip32_path("44'/195'/1'/0/0"),
}]

# Get Addresses
logger.debug('-= Tron Ledger =-')
logger.debug('Requesting Public Keys...')
dongle = getDongle(True)
for i in range(2):
    result = dongle.exchange(
        apduMessage(0x02, 0x00, 0x00, accounts[i]['path'], ""))
    size = result[0]
    if size == 65:
        accounts[i]['publicKey'] = result[1:1 + size].hex()
        size = result[size + 1]
Exemple #4
0
# Start Channel and WalletStub
channel = grpc.insecure_channel("vtest.infragrid.v.network:50051")
stub = WalletStub(channel)

logger.debug('''
   Vision MultiSign tests
''')

tx = stub.CreateTransaction2(
    contract.TransferContract(
        owner_address=bytes.fromhex(
            address_hex("VUEZSdKsoDHQMeZwihtdoBiN46zxhGWYdH")),
        to_address=bytes.fromhex(
            address_hex("VPnYqC2ukKyhEDAjqRRobSVygMAb8nAcXM")),
        amount=100000))
# use permission 2
tx.transaction.raw_data.contract[0].Permission_id = 2

raw_tx, sign1 = ledgerSign(parse_bip32_path("44'/195'/0'/0/0"), tx.transaction)
raw_tx, sign2 = ledgerSign(parse_bip32_path("44'/195'/1'/0/0"), tx.transaction)

tx.transaction.signature.extend([bytes(sign1[0:65])])
tx.transaction.signature.extend([bytes(sign2[0:65])])

r = stub.BroadcastTransaction(tx.transaction)

if r.result == True:
    print("Success")
else:
    print("Fail")