2020-03-18 01:47:10 +01:00
|
|
|
#!/bin/bash
|
|
|
|
###########################################################################################
|
|
|
|
# Script appelé depuis zen_G1TXIN pour créer des QRCode IPNS + Clef associé à un ZenTag
|
|
|
|
# rempli des centimes de June reçues.#
|
|
|
|
###########################################################################################
|
|
|
|
###########################################################################################
|
|
|
|
# ZenTag Draft Format
|
|
|
|
# fred@ONELOVE:~/workspace/ZEN$ ipfs ls /ipns/QmZxwgScLyLjitE1mrUFqpTw27gk6tMdfKQ7QTEo28dE2u
|
|
|
|
# QmVkur97Pqpgt7cy71FCNacPd5Z1eD9QVfw5tu4LdXHavk 47 _chain
|
|
|
|
# QmUQcSjQx2bg4cSe2rUZyQi6F8QtJFJb74fWL7D784UWf9 2 _chain.n
|
|
|
|
# QmRPdapkSVeYeRcC6X7freVo8vrGYjKcGsa96V5GsMg36p 20 _chain.nanodate
|
|
|
|
# Qmc5m94Gu7z62RC8waSKkZUrCCBJPyHbkpmGzEePxy2oXJ 1 _chain.prev
|
|
|
|
# Qmb8gYFmno4QeEpaPTi969qQNyVJK9VyfBbsXtyMA3PMow 45 _g1.creator
|
|
|
|
# QmQo6ghBGdkGCnGoB22cYmraR76q44K1mjVXqQQ3UVn2T1 45 _g1.issuer
|
|
|
|
# QmfUFk27ZvHaGfEwBeqResw2qQ9SCu4tsY69SkVuCdWAxB 65 _g1.txhash
|
|
|
|
# QmaKa7FGwmMshE7RACrWAFCsWETu1HcHnV1eak7HcUk6Cs 47 _ipfs.creator
|
|
|
|
# QmfCL14hnVnm3mrYT7fRjveMRTEoSp2axqCVp3JYoxXXgn 1300 _ipfs.publishkey.B.gpg
|
|
|
|
# QmUQ7WsACNYYWAw4QW8hKTCq8MM8oYGV7HJuxW7QTGj9qS 1243 _ipfs.publishkey.crypt
|
|
|
|
# QmdvRknZWSZUyS9SfmFWcvySv1tgi2PTF711rsGPN6ftL1 65 _tag.B.sha
|
|
|
|
# QmXA1zSxA3dh1dxFtkKaH5iomN3BsKMSAo2qhruA58AU81 34 _tag.uid
|
|
|
|
# QmPrumas2N5DuwcqUz9mayAU6oDL2bLjhpkVZ8hCRq9rpx 5 _tag.zen
|
|
|
|
###########################################################################################
|
2020-03-19 13:09:54 +01:00
|
|
|
# Symetric Encrypt and Decrypt
|
|
|
|
# openssl aes-256-cbc -k "$BB" -salt -in file -out file.aes
|
|
|
|
# openssl aes-256-cbc -k "$BB" -d -salt -in file.aes -out file
|
|
|
|
# tar zip and encrypt a whole directory
|
|
|
|
# tar -zcf - directory | openssl aes-128-cbc -salt -out directory.tar.gz.aes # Encrypt
|
|
|
|
# openssl aes-128-cbc -d -salt -in directory.tar.gz.aes | tar -xz -f - # Decrypt
|
2020-03-18 01:47:10 +01:00
|
|
|
###########################################################################################
|
2020-03-19 13:09:54 +01:00
|
|
|
# To clean your IPFS repo:
|
|
|
|
# ipfs pin ls -q --type recursive | xargs ipfs pin rm
|
|
|
|
###########################################################################################
|
|
|
|
me=`basename "$0"` # Script name
|
|
|
|
ZEN="$1" # Initial Zen amount
|
|
|
|
TXhash="$2" # Contains G1 TX HASH
|
|
|
|
File="$3" # Contains G1 TX HASH
|
2020-03-18 01:47:10 +01:00
|
|
|
|
2020-03-19 13:09:54 +01:00
|
|
|
[[ ! -f ~/.zen/scan/zen.$TXhash ]] && echo "ERROR Unknown TX... EXIT" && exit 1
|
|
|
|
ISSUER=$(cat ~/.zen/scan/zen.$TXhash) # Get G1 wallet issuer pubkey
|
|
|
|
[[ $ISSUER == "" ]] && echo "# NO SCANNED TX.... PLEASE USE ./zen_G1TXtoZenTag.sh" && exit 1
|
2020-03-18 01:47:10 +01:00
|
|
|
|
|
|
|
#########################################################################################################
|
|
|
|
IPFSNODEID=$(ipfs id -f='<id>\n')
|
2020-03-19 13:09:54 +01:00
|
|
|
#########################################################################################################
|
|
|
|
|
|
|
|
#########################################################################################################
|
|
|
|
if [[ -f ~/.ssb/secret.dunikey ]]; then
|
|
|
|
NODE_G1PUBKEY=$(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
2020-03-18 01:47:10 +01:00
|
|
|
else
|
2020-03-19 13:09:54 +01:00
|
|
|
echo "MISSING your G1 KEY ~/.ssb/secret.dunikey ... Please run ./secret2dunikey.sh ... Ciao"
|
|
|
|
exit 1
|
2020-03-18 01:47:10 +01:00
|
|
|
fi
|
2020-03-19 13:09:54 +01:00
|
|
|
#########################################################################################################
|
2020-03-18 01:47:10 +01:00
|
|
|
|
|
|
|
#########################################################################################################
|
|
|
|
# CREATE ZEN TAG
|
|
|
|
# ZenTag NAMES
|
2020-03-19 13:09:54 +01:00
|
|
|
AA=$(./diceware.sh 6 | xargs); # ZenTag Name = Diceware 6 words
|
|
|
|
SHAA=$(echo -n $AA | sha256sum | cut -d ' ' -f 1) # ZenTag Name SHA256
|
|
|
|
RR=$(echo ${AA} | sed s/\ //g ); # Name without space
|
|
|
|
PR=$(echo ${AA} | cut -d ' ' -f 1 ); # ZenTag short name
|
2020-03-18 01:47:10 +01:00
|
|
|
|
2020-03-19 13:09:54 +01:00
|
|
|
# Create Unique Zentag in all IPFS SWARM! TODO CHANGE METHOD
|
2020-03-18 01:47:10 +01:00
|
|
|
while [[ -f ~/.zen/tag/${SHAA} ]]; do
|
|
|
|
AA=$(./diceware.sh 6 | xargs);
|
|
|
|
SHAA=$(echo -n $AA | sha256sum | cut -d ' ' -f 1)
|
|
|
|
RR=$(echo ${AA} | sed s/\ //g );
|
|
|
|
PR=$(echo ${AA} | cut -d ' ' -f 1 );
|
|
|
|
done
|
|
|
|
|
|
|
|
# PASSWORD FOR HUMAN ACTION
|
|
|
|
BB=$(./diceware.sh 4 | xargs);
|
|
|
|
SHABB=$(echo -n "$BB" | sha256sum | cut -d ' ' -f 1)
|
2020-03-19 13:09:54 +01:00
|
|
|
##################################################################################
|
|
|
|
# CREATE ZENTAG FILES DATA STRUCTURE (TODO: Convert into yaml or json if you like)
|
2020-03-18 01:47:10 +01:00
|
|
|
mkdir -p ~/.zen/tag/${SHAA}
|
2020-03-19 13:09:54 +01:00
|
|
|
echo "CREATING ZenTag, Value = $ZEN Zen (ls -al ~/.zen/tag/${SHAA})"
|
|
|
|
echo "Name: $AA | Key: $BB"
|
2020-03-18 01:47:10 +01:00
|
|
|
# ZenTag Create files
|
|
|
|
echo "$AA" > ~/.zen/tag/${SHAA}/_tag.uid # Nom du ZenTAG
|
|
|
|
echo "$ZEN" > ~/.zen/tag/${SHAA}/_tag.zen # Tag ZEN amount
|
2020-03-19 13:09:54 +01:00
|
|
|
echo "${IPFSNODEID}" > ~/.zen/tag/${SHAA}/_ipfs.node.creator # NODE IPFS ID
|
2020-03-18 01:47:10 +01:00
|
|
|
echo "$TXhash" > ~/.zen/tag/${SHAA}/_g1.txhash # HASH G1 TX/IN
|
2020-03-19 13:09:54 +01:00
|
|
|
echo "$NODE_G1PUBKEY" > ~/.zen/tag/${SHAA}/_g1.node.creator # CREATOR IPFS NODE G1PUBKEY
|
2020-03-18 01:47:10 +01:00
|
|
|
echo "$ISSUER" > ~/.zen/tag/${SHAA}/_g1.issuer # TX ISSUER G1PUBKEY
|
|
|
|
|
|
|
|
####################################################
|
|
|
|
# ${RR} IPNS publishkey CYPHER *BB & **NODE_G1PUBKEY
|
|
|
|
[[ ! -f ~/.ipfs/keystore/_${RR} ]] && J=$(ipfs key gen -t rsa -s 2048 _${RR})
|
|
|
|
# WRITE SHABB for QRCode BB verification
|
|
|
|
echo "$SHABB" > ~/.zen/tag/${SHAA}/_tag.B.sha
|
|
|
|
# BB pgp symetric publishkey
|
|
|
|
echo "${BB}" | gpg -q --output ~/.zen/tag/${SHAA}/_ipfs.publishkey.B.gpg --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 ~/.ipfs/keystore/_${RR}
|
|
|
|
# GIVE IPFS CREATOR NODE ACCESS TO ZEN TAG
|
|
|
|
./natools.py encrypt -p $NODE_G1PUBKEY -i ~/.ipfs/keystore/_${RR} -o ~/.zen/tag/${SHAA}/_ipfs.publishkey.crypt
|
|
|
|
|
|
|
|
###########################################################
|
|
|
|
# TAG IPFS STORAGE & G1Tag IPNS PUBLISHING
|
|
|
|
###########################################################
|
|
|
|
# TAG CHAIN DATA
|
|
|
|
echo "0" > ~/.zen/tag/${SHAA}/_chain.n # Tag modification number (0 first)
|
|
|
|
NANODATE=$(date -u +%s%N)
|
|
|
|
echo "$NANODATE" > ~/.zen/tag/${SHAA}/_chain.nanodate # Nanodate notification
|
|
|
|
|
|
|
|
echo "" > ~/.zen/tag/${SHAA}/_chain.prev
|
|
|
|
I=$(ipfs add -qr ~/.zen/tag/${SHAA} | tail -n 1)
|
|
|
|
# MEMORIZE FOR CHAINING FUTURE CHANGES
|
|
|
|
echo "${I}" > ~/.zen/tag/${SHAA}/_chain
|
|
|
|
# Activate chain
|
|
|
|
I=$(ipfs add -qr ~/.zen/tag/${SHAA} | tail -n 1)
|
|
|
|
|
|
|
|
# IPFS Hash for Immutable G1tag data
|
|
|
|
J=$(ipfs name publish -k _${RR} --quieter /ipfs/${I})
|
|
|
|
echo "${J}" > ~/.zen/tag/${SHAA}/_ipns
|
|
|
|
|
|
|
|
echo "ZENTAG MADE: ipfs ls /ipns/${J}"
|
|
|
|
ipfs ls /ipns/${J}
|
|
|
|
####################################################################################
|
2020-03-19 13:09:54 +01:00
|
|
|
### G1TAG PRINT TYPE:DATA:IPNS
|
2020-03-18 01:47:10 +01:00
|
|
|
# QR CODE LECTURE
|
|
|
|
qrencode -s 5 -o ~/.zen/tag/${SHAA}/.QRCODE.pub.png "RJ:${SHAA}#${J}"
|
|
|
|
# QR CODE ECRITURE + ISSUER CYPHER (TODO : SHABB ou BB?)
|
2020-03-19 13:09:54 +01:00
|
|
|
qrencode -s 5 -o ~/.zen/tag/${SHAA}/.QRCODE.priv.png "BJ:${BB}#${J}"
|
2020-03-18 01:47:10 +01:00
|
|
|
|
|
|
|
##############################################################################
|
|
|
|
# TODO: PRINT LOCAL OR SEND "PRINT TASK" TO DAB MACHINE $ISSUER PREFERING ...
|
|
|
|
# DESTNODE=$(grep -Rwl "$ISSUER" ~/.zen/wallets_swarm/*/_pub)
|
|
|
|
# [[ $DESTNODE != "" ]] && DESNODEIPFSFILE=$(echo $DESTNODE | cut -d '_' -f 1)_ipfsid || exit
|
|
|
|
# DESTIPFS=$(cat $DESNODEIPFSFILE)
|
|
|
|
# ./natools.py encrypt -p $DESTIPFS -i ~/.zen/tag/${SHAA}/.QRCODE.priv.png -o ~/.zen/tag/${SHAA}/.QRCODE.crypt.png && rm ~/.zen/tag/${SHAA}/.QRCODE.priv.png
|
|
|
|
|
|
|
|
# CREATE TASK
|
|
|
|
# mkdir -p ~/.zen/wallets/.$DESTIPFS/TASK/
|
|
|
|
# echo "PRINT:ZENTAG:${J}" > ~/.zen/wallets/.$DESTIPFS/TASK/$NANODATE.$IPFSNODEID.todo
|
|
|
|
# ./ipfs_PUBLISH.sh
|
|
|
|
|
|
|
|
###
|