mirror of
https://github.com/monero-project/research-lab.git
synced 2024-12-22 19:49:35 +00:00
50 lines
1.5 KiB
Python
50 lines
1.5 KiB
Python
# shen noether - mrl
|
|
# this python script computes
|
|
# a (Keccak) hash of your document
|
|
# and then turns it into a monero address
|
|
# for timestamping c.f. github.com/ShenNoether/btcProof
|
|
#
|
|
|
|
import MiniNero #for creating monero address
|
|
import sys #for getting command line arguments
|
|
import binascii #for converting binary data
|
|
import Keccak #for hash, we use this instead of sha256
|
|
import ed25519
|
|
import mnemonic
|
|
|
|
BLOCKSIZE = 2 **10
|
|
l = 2**252 + 27742317777372353535851937790883648493
|
|
def cnHashOfFile(filepath):
|
|
#c.f. github.com/ShenNoether/btcProof sha256OfFile
|
|
bin_data = open(filepath, 'rb').read()
|
|
hex_data = binascii.hexlify(bin_data)
|
|
print(hex_data)
|
|
return MiniNero.cn_fast_hash(hex_data)
|
|
|
|
def moneroProofOfFile(fi):
|
|
s = cnHashOfFile(fi)
|
|
#s = MiniNero.sc_reduce_key(s) #if you are testing, insert
|
|
#an s below this line
|
|
|
|
sk = MiniNero.sc_reduce_key(s)
|
|
print("secret spend key:", sk)
|
|
vk = MiniNero.getView(sk)
|
|
print("secret view key:", vk)
|
|
pk = MiniNero.publicFromSecret(sk)
|
|
print("public spend key:", pk)
|
|
pvk = MiniNero.publicFromSecret(vk)
|
|
print("public view key:", pvk)
|
|
wl = mnemonic.mn_encode(s)
|
|
cks = MiniNero.electrumChecksum(wl)
|
|
print(cks)
|
|
print("mnemonic:", wl + " " + cks)
|
|
|
|
return MiniNero.encode_addr(MiniNero.netVersion(), pk, pvk)
|
|
|
|
if len(sys.argv) > 1:
|
|
#print("address to send to :", moneroProofOfFile(sys.argv[1]))
|
|
cnHashOfFile(sys.argv[1])
|
|
else:
|
|
print("provide filename as argument")
|
|
print("example: MoneroProof.py Keccak.txt")
|
|
|