bm-create-enc-payload/encrypt-decrypt-test-bitmessage.py

89 lines
3.2 KiB
Python
Raw Permalink Normal View History

2022-12-23 04:08:09 +01:00
from binascii import hexlify, unhexlify
from struct import pack, unpack
from sys import exit
from highlevelcrypto import makeCryptor, makePubCryptor, privToPub, hexToPubkey
from pyelliptic import ECC
from shared import decodeWalletImportFormat
privencryptionkey = hexlify(decodeWalletImportFormat('5J9ydXT7Ep9pgbbkWei8LNsBMEdv3pgYq4nMnh2mqETzFsH7QYC'))
#privesigningkey = hexlify(decodeWalletImportFormat('5KZ69cpaXNh4GcaueuibSLae6nyYNRbq5ouX1eA2jFF75jT9Qcr'))
#privencryptionkey = hexlify(decodeWalletImportFormat('5KZ69cpaXNh4GcaueuibSLae6nyYNRbq5ouX1eA2jFF75jT9Qcr'))
pubkey = privToPub(privencryptionkey)
c = makeCryptor(privencryptionkey)
eh = '00000000639194c10000000201019780d6685fb615a1ea82be2b981645ac02ca00201126d12e5aec99856dcc2c1bdaa964643f54524f847d36ab67810fe8bc053b180020f7dfe03154d20aa799865d36b13447f4ede4147534f5ab6b33cc4584b924056fe19f449889ebed27470fa4e16964bc1c11be1dbe5e448075aacf29782d32e90956b67f731459aeb511f6e61c905ca5314aa1fae58fbbbac2852bf4ee9da92fa8aa6df56521a10e094b3ca23582300e59e84c1aa46f7815a0d518faf5c4c7e1fc8439097b9989120811c1824e92677ddc35f0e34228b284d813bb421e0a8f020acb6eca51b0dfb6d0066ef5c7a483c02667af26551a3df7298533b203fc699647d2ff966f8615186586e5d6bf1e70c14331cc72a7614cf7b4648d32fc93a6bebdf0431c417af76f5827659c8e72c35414bcb59afa0ba8421c2665048f51e49d9d966063a269bda815ed7e9822760469cf9ed1dd182e74c61bc7e5a692cc966eae27982490a085199033dc0964b9eadbec22d5784d7b725b4c492b5d648d087c50058195ec4e7a9219f10f74dab9383dc2'
e = unhexlify(eh)[14:]
#e = unhexlify(eh)
#e = unhexlify(eh)[4:]
#print e
c.decrypt(e)
exit(0)
m = '040100000001ecdc884536409bc7d387aaf521f95a6b964f20a25bc6cd597165dd6fa76b2c3cf0c8f463480bc2facfa8c9abbe386d528d876d249e0b8ead240a2c6196ba94e547e2673246034a2c920158410dfe970127bfc1efe4d4db58eb48408f338aebe07362e91936e654b3b041591a6c05e5882f51f59582db6808497d4572339d7a0dfd03e8fd03e80083d970e98aa0edec730577a43bdae373953706010a686579207468657265210046304402207ff3b4613dc5deac188b2cfdcbdaafaf567e40bc6859c4612ae9a045786bd48602205c54802071d7205ea5be91c2fc55fbf47d2316f65b9c23e2c7894b9d5d8c900f'
#cp = ECC()
#e = cp.encrypt(unhexlify(m), hexToPubkey(pubkey))
#print(hexlify(e))
#print(len(e))
l = len(e)
print("IV")
print(hexlify(e[0:16]))
print("Curve type")
print(hexlify(e[16:18]))
print("X length")
print(hexlify(e[18:20]))
print("X")
print(hexlify(e[20:52]))
print("Y length")
print(hexlify(e[52:54]))
print("Y")
print(hexlify(e[54:86]))
print("encrypted")
print(hexlify(e[86:l-32]))
print("HMAC")
print(hexlify(e[-32:]))
retval = c.decrypt(e)
print(retval)
print "pubkey"
print pubkey
m2 = hexlify(e)
offset = 0
print "addressversion"
print unhexlify(m2)[offset:offset+1]
offset += 1
print "stream"
print unhexlify(m2)[offset:offset+1]
offset += 1
print "behaviour"
print unhexlify(m2)[offset:offset+4]
offset += 4
print "signkey"
print unhexlify(m2)[offset:offset+64]
offset += 64
print "enckey"
print unhexlify(m2)[offset:offset+64]
offset += 64
print "trials"
print unhexlify(m2)[offset:offset+2]
offset += 2
print "extra"
print unhexlify(m2)[offset:offset+2]
offset += 2
print "dest"
print unhexlify(m2)[offset:offset+20]
offset += 20
print "Encoding"
print unhexlify(m2)[offset:offset+1]
offset += 1
print "Length"
print unhexlify(m2)[offset:offset+1]