ZenTag + Passenger File
This commit is contained in:
parent
4a0b2454b1
commit
0e9374677c
2
iptubes
2
iptubes
|
@ -1 +1 @@
|
|||
Subproject commit 26d2596cda7d27690583fe2838e6018ff0350658
|
||||
Subproject commit 0f2cf9f36d5653f3b7c836c6b2ceb9a09b737216
|
|
@ -1,10 +1,17 @@
|
|||
#!/bin/bash
|
||||
################################################################################
|
||||
########################################################################
|
||||
# Author: Fred (support@qo-op.com)
|
||||
# Version: 1.0
|
||||
# License: AGPL-3.0 (https://choosealicense.com/licenses/agpl-3.0/)
|
||||
###########################################################################################
|
||||
########################################################################
|
||||
# This script convert secret.dunikey into ~/.ssb/secret.ssb
|
||||
########################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
########################################################################
|
||||
# \\///
|
||||
# qo-op
|
||||
#############
|
||||
DUNKEYFILE="$1"
|
||||
[[ ! ${DUNIKEYFILE} ]] && DUNKEYFILE="./secret.dunikey"
|
||||
[[ ! ${DUNIKEYFILE} ]] && DUNKEYFILE="~/.ssb/secret.dunikey"
|
||||
|
|
|
@ -7,7 +7,9 @@
|
|||
# == Transform incoming G1 TX into IPFS ZenTAG ==
|
||||
# SCAN NODE G1 Wallet FOR "ZEN" Command received (or pending) TX/IN
|
||||
########################################################################
|
||||
#
|
||||
# \\///
|
||||
# qo-op
|
||||
#############
|
||||
########################################################################
|
||||
# _(_)_ _(_)_
|
||||
# @@@@ (_)@(_) @@@@ (_)@(_) @@@@
|
||||
|
@ -21,17 +23,15 @@
|
|||
########################################################################
|
||||
MY_PATH="`dirname \"$0\"`" # relative
|
||||
MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
||||
ME="${0##*/}"
|
||||
########################################################################
|
||||
# \\///
|
||||
# qo-op
|
||||
#############
|
||||
|
||||
if [[ ! $(which silkaj) ]]; then
|
||||
echo "$USER please Install SILKAJ !!" && exit 1
|
||||
fi
|
||||
|
||||
# GET DUNITER SERVER
|
||||
DUNITERURL="https://$(./duniter_getnode.sh)"
|
||||
DUNITERURL="https://$($MY_PATH/tools/duniter_getnode.sh)"
|
||||
|
||||
IPFSNODEID=$(ipfs id -f='<id>\n')
|
||||
[[ $IPFSNODEID == "" ]] && echo "$USER Please Install IPFS !!" && exit 1
|
||||
|
@ -42,7 +42,7 @@ IPFSNODEID=$(ipfs id -f='<id>\n')
|
|||
#########################################################################################################
|
||||
# GET G1 PUBKEY FROM SCUTTLEBUTT or $2 (DEBUG)
|
||||
DELAY=$1
|
||||
[[ $DELAY == "" ]] && DELAY="30 days" && echo "*** HELP ***" && echo "./$me \"duration\" (default $DELAY)" && echo "************" && echo
|
||||
[[ $DELAY == "" ]] && DELAY="30 days" && echo "*** HELP ***" && echo "./$ME \"duration\" (default $DELAY)" && echo "************" && echo
|
||||
DELAYUNIT=$(echo $DELAY | cut -d ' ' -f 2)
|
||||
|
||||
# NODE_G1PUBKEY=$2 # DEBUG
|
||||
|
@ -71,7 +71,7 @@ echo "G1 PUBKEY = $NODE_G1PUBKEY"
|
|||
echo "SSB ID = %$ssbpub.ed25519"
|
||||
echo "IPFS ID = $IPFSNODEID"
|
||||
# SPECIAL ONE LINE BASH BONUS
|
||||
# HOW MUCH = silkaj -p $(./duniter_getnode.sh) balance $(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)"
|
||||
# HOW MUCH = silkaj -p $($MY_PATH/tools/duniter_getnode.sh) balance $(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)"
|
||||
|
||||
# PREPARE TIMESTAMP LIMITS
|
||||
TIMEBEFORE=$(date -u --date="-$DELAY" +"%s")
|
||||
|
@ -107,9 +107,9 @@ if [[ $DELAYUNIT != "minutes" && $DELAYUNIT != "minute" ]]; then
|
|||
echo "TX/IN :: $ZEN ZEN from $ISSUER :: $COMMENT ($TXhash)"
|
||||
CMD=$(echo "$COMMENT" | awk '{print toupper($1)}')
|
||||
###### CREATE ZEN VALUE IN IPFS #########
|
||||
[[ $CMD == "ZEN" ]] && ./zen_MAKE.sh $ZEN $TXhash $ISSUER
|
||||
[[ $CMD == "ZEN" ]] && $MY_PATH/zen_MAKE.sh $ZEN $TXhash $ISSUER
|
||||
############################################
|
||||
echo "DEBUG! ./zen_MAKE.sh $ZEN $TXhash $ISSUER"
|
||||
echo "DEBUG! $MY_PATH/zen_MAKE.sh $ZEN $TXhash $ISSUER"
|
||||
############################################
|
||||
else
|
||||
# STILL OLD TX
|
||||
|
@ -140,9 +140,9 @@ else
|
|||
echo "TX/IN :: $ZEN ZEN from $ISSUER :: $COMMENT ($TXhash)"
|
||||
CMD=$(echo "$COMMENT" | awk '{print toupper($1)}')
|
||||
###### CREATE ZEN VALUE IN IPFS #########
|
||||
[[ $CMD == "ZEN" ]] && ./zen_MAKE.sh $ZEN $TXhash $ISSUER
|
||||
[[ $CMD == "ZEN" ]] && $MY_PATH/zen_MAKE.sh $ZEN $TXhash $ISSUER
|
||||
############################################
|
||||
echo "DEBUG! ./zen_MAKE.sh $ZEN $TXhash $ISSUER"
|
||||
echo "DEBUG! $MY_PATH/zen_MAKE.sh $ZEN $TXhash $ISSUER"
|
||||
############################################
|
||||
else
|
||||
# STILL OLD TX
|
||||
|
|
132
zen/zen_MAKE.sh
132
zen/zen_MAKE.sh
|
@ -26,63 +26,63 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized
|
|||
# _g1.issuer # G1TX ISSUER pubkey
|
||||
# _g1.txhash # G1TX HASH
|
||||
# _ipfs.node.creator # NODE IPFS ID
|
||||
# _ipfs.publishkey.B.gpg # B cyphered IPNS publish key
|
||||
# _ipfs.publishkey.crypt # G1SSB cyphered IPNS publish key
|
||||
# _tag.B.sha # B sha256sum
|
||||
# _ipfs.publishkey.BB.aes # BB SYMcypher of IPNS publish key
|
||||
# _ipfs.publishkey.crypt # G1SSB ASYMcypher of IPNS publish key
|
||||
# _tag.BB.sha # BB sha256sum
|
||||
# _tag.uid # ZenTag UID
|
||||
# _tag.zen # ZentTag balance
|
||||
# _ipns # /ipns/ address
|
||||
# _passenger.filename # Passenger filename
|
||||
# _passenger.ipfs.crypt # G1SSB cyphered IPFS Passenger link
|
||||
# TODO: Could be converted into yaml or json if you like
|
||||
########################################################################
|
||||
########################################################################
|
||||
# Clean IPFS repo # ipfs pin ls -q --type recursive | xargs ipfs pin rm
|
||||
########################################################################
|
||||
ZEN="$1" # Zen amount
|
||||
TXHASH="$2" # G1 TX HASH
|
||||
PASSENGER="$3" # /path/file.ext to include into ZenTag (add to IPFS datastructure)
|
||||
|
||||
# ACTIVATE G1 <=> ZEN STRICT RELATION
|
||||
# G1TX HASH CONTROL
|
||||
[[ ! -f ~/.zen/scan/zen.$TXHASH ]] && echo "ERROR# UNKNOWN TX $TXHASH !!" && exit 1
|
||||
#[[ ! -f ~/.zen/scan/zen.$TXHASH ]] && echo "ERROR# UNKNOWN TX $TXHASH !!" && exit 1
|
||||
# G1TX ISSUER CONTROL
|
||||
ISSUER=$(cat ~/.zen/scan/zen.$TXHASH)
|
||||
[[ $ISSUER == "" ]] && echo "ERROR# NO ISSUER FOUND FOR TX $TXHASH !!" && exit 1
|
||||
#ISSUER=$(cat ~/.zen/scan/zen.$TXHASH)
|
||||
#[[ $ISSUER == "" ]] && echo "ERROR# NO ISSUER FOUND FOR TX $TXHASH !!" && exit 1
|
||||
|
||||
# IPFSNODEID
|
||||
########################################################################
|
||||
IPFSNODEID=$(ipfs id -f='<id>\n')
|
||||
########################################################################
|
||||
|
||||
########################################################################
|
||||
# ~/.ssb/secret.dunikey => NODE_G1PUBKEY
|
||||
########################################################################
|
||||
[[ ! -f ~/.ssb/secret.dunikey ]] && $MY_PATH/tools/secret2dunikey.sh
|
||||
NODE_G1PUBKEY=$(cat ~/.ssb/secret.dunikey | grep 'pub:' | cut -d ' ' -f 2)
|
||||
########################################################################
|
||||
|
||||
# CREATE ZEN TAG : name AA + key BB
|
||||
########################################################################
|
||||
AA=$($MY_PATH/tools/diceware.sh 6 | xargs); # ZenTag Name = Diceware 6 words
|
||||
# CREATE ZEN TAG => name AA + key BB
|
||||
########################################################################
|
||||
AA=$(echo $($MY_PATH/tools/diceware.sh 6 | xargs) | sed s/\ /_/g ) # ZenTag Name = Diceware_6_words
|
||||
AAH=$(echo -n ${AA} | sha256sum | cut -d ' ' -f 1) # ZenTag Name SHA256
|
||||
|
||||
RR=$(echo ${AA} | sed s/\ //g ); # Name without space = IPNS key name
|
||||
|
||||
# TODO CHECK UNIQUE AA
|
||||
# Create Unique Zentag in all IPFS SWARM!
|
||||
# $(grep -Rwl "$AAH" ./wallets_swarm/.*/_zentag.list)
|
||||
# AA=$(./diceware.sh 6 | xargs);
|
||||
# AAH=$(echo -n ${AA} | sha256sum | cut -d ' ' -f 1)
|
||||
# RR=$(echo ${AA} | sed s/\ //g );
|
||||
# PR=$(echo ${AA} | cut -d ' ' -f 1 );
|
||||
#done
|
||||
# Create Unique Zentag for all IPFS SWARM!
|
||||
while [[ $(grep -Rwl "$AA" ~/.zen/wallets_swarm/.Qm*/TAG/) ]]; do
|
||||
AA=$(echo $($MY_PATH/tools/diceware.sh 6 | xargs) | sed s/\ /_/g )
|
||||
AAH=$(echo -n ${AA} | sha256sum | cut -d ' ' -f 1)
|
||||
done
|
||||
|
||||
# PASSWORD FOR HUMAN ACTION
|
||||
# PASSWORD FOR WRITE ACTION
|
||||
BB=$($MY_PATH/tools/diceware.sh 4 | xargs);
|
||||
BBH=$(echo -n "$BB" | sha256sum | cut -d ' ' -f 1)
|
||||
##################################################################################
|
||||
# CREATE ZENTAG FILES DATA STRUCTURE
|
||||
mkdir -p ~/.zen/tag/${AAH}
|
||||
echo "CREATING ZenTag, Value = $ZEN Zen (ls -al ~/.zen/tag/${AAH})"
|
||||
echo "Name: $AA | Key: $BB"
|
||||
|
||||
# ZenTag Create files
|
||||
########################################################################
|
||||
# CREATE ZENTAG FILES DATA STRUCTURE
|
||||
########################################################################
|
||||
mkdir -p ~/.zen/tag/${AAH}
|
||||
echo "CREATING ZenTag, Value = $ZEN Zen"
|
||||
echo "$AA :|: $BB"
|
||||
echo "DATASTRUCTURE: ls -al ~/.zen/tag/${AAH}"
|
||||
|
||||
# ZenTag Create DATASTRUCTURE
|
||||
echo "$AA" > ~/.zen/tag/${AAH}/_tag.uid # Nom du ZenTAG
|
||||
echo "$ZEN" > ~/.zen/tag/${AAH}/_tag.zen # Tag ZEN amount
|
||||
echo "${IPFSNODEID}" > ~/.zen/tag/${AAH}/_ipfs.node.creator # NODE IPFS ID
|
||||
|
@ -90,25 +90,53 @@ echo "$TXHASH" > ~/.zen/tag/${AAH}/_g1.txhash # HASH G1 TX/IN
|
|||
echo "$NODE_G1PUBKEY" > ~/.zen/tag/${AAH}/_g1.node.creator # CREATOR IPFS NODE G1PUBKEY
|
||||
echo "$ISSUER" > ~/.zen/tag/${AAH}/_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})
|
||||
########################################################################
|
||||
# ${AA}.key IPNS publishkey CYPHER *BB & **NODE_G1PUBKEY
|
||||
########################################################################
|
||||
[[ ! -f ~/.ipfs/keystore/${AA}.key ]] && J=$(ipfs key gen -t rsa -s 2048 ${AA}.key)
|
||||
# WRITE BBH for QRCode BB verification
|
||||
echo "$BBH" > ~/.zen/tag/${AAH}/_tag.B.sha
|
||||
echo "$BBH" > ~/.zen/tag/${AAH}/_tag.BB.sha
|
||||
# BB pgp symetric publishkey
|
||||
echo "${BB}" | gpg -q --output ~/.zen/tag/${AAH}/_ipfs.publishkey.B.gpg --yes --pinentry-mode loopback --symmetric --passphrase-fd 0 ~/.ipfs/keystore/${RR}
|
||||
openssl aes-256-cbc -pbkdf2 -k "$BB" -salt -in ~/.ipfs/keystore/${AA}.key -out ~/.zen/tag/${AAH}/_ipfs.publishkey.BB.aes
|
||||
# GIVE IPFS CREATOR NODE ACCESS TO ZEN TAG
|
||||
$MY_PATH/tools/natools.py encrypt -p $NODE_G1PUBKEY -i ~/.ipfs/keystore/${RR} -o ~/.zen/tag/${AAH}/_ipfs.publishkey.crypt
|
||||
$MY_PATH/tools/natools.py encrypt -p $NODE_G1PUBKEY -i ~/.ipfs/keystore/${AA}.key -o ~/.zen/tag/${AAH}/_ipfs.publishkey.crypt
|
||||
|
||||
#######################################################################
|
||||
# TODO Symetric Encrypt and Decrypt with openssl
|
||||
# Symetric Encrypt and Decrypt with openssl
|
||||
# openssl aes-256-cbc -k "$BB" -salt -in file -out file.aes # Encrypt
|
||||
# openssl aes-256-cbc -k "$BB" -d -salt -in file.aes -out file # Decrypt
|
||||
# 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
|
||||
# tar -zcf - directory | openssl aes-128-cbc -k "$BB" -salt -out directory.tar.gz.aes # Encrypt
|
||||
# openssl aes-128-cbc -k "$BB" -d -salt -in directory.tar.gz.aes | tar -xz -f - # Decrypt
|
||||
#######################################################################
|
||||
[[ -f $PASSENGER ]] && openssl aes-256-cbc -k "$BB" -salt -in $PASSENGER -out ~/.zen/tag/${AAH}/passenger.aes
|
||||
[[ -d $PASSENGER ]] && tar -zcf - $PASSENGER | openssl aes-128-cbc -k "$BB" -salt -out ~/.zen/tag/${AAH}/passenger.tar.gz.aes
|
||||
# [[ -f $PASSENGER ]] && openssl aes-256-cbc -k "$BB" -salt -in $PASSENGER -out ~/.zen/tag/${AAH}/passenger.aes
|
||||
# [[ -d $PASSENGER ]] && tar -zcf - $PASSENGER | openssl aes-128-cbc -k "$BB" -salt -out ~/.zen/tag/${AAH}/passenger.tgz.aes
|
||||
if [[ -f $PASSENGER ]]; then
|
||||
echo "We have a Passenger: $PASSENGER"
|
||||
IPASSENGER=$(ipfs add -q $PASSENGER -w | tail -n 1)
|
||||
PASSENGERNAME=$(basename -- "$PASSENGER")
|
||||
echo "$PASSENGERNAME" > ~/.zen/tag/${AAH}/_passenger.filename
|
||||
echo "$IPASSENGER" > ~/.zen/tag/${AAH}/_passenger.ipfs
|
||||
# NODE_G1PUBKEY Cypher
|
||||
$MY_PATH/tools/natools.py encrypt -p $NODE_G1PUBKEY -i ~/.zen/tag/${AAH}/_passenger.ipfs -o ~/.zen/tag/${AAH}/_passenger.ipfs.crypt
|
||||
# BB passphrase aes encryption
|
||||
openssl aes-256-cbc -pbkdf2 -k "$BB" -salt -in ~/.zen/tag/${AAH}/_passenger.ipfs -out ~/.zen/tag/${AAH}/_passenger.ipfs.BB.aes
|
||||
# Delete cleartext _passenger.ipfs
|
||||
rm -r ~/.zen/tag/${AAH}/_passenger.ipfs
|
||||
fi
|
||||
|
||||
echo "
|
||||
##################################################################
|
||||
# READ PASSENGER $PASSENGERNAME
|
||||
# Get _passenger.ipfs with NODE CREATOR secret.dunikey
|
||||
$MY_PATH/tools/natools.py decrypt --pubsec -k ~/.ssb/secret.dunikey -i ~/.zen/tag/${AAH}/_passenger.ipfs.crypt -o /tmp/_passenger.ipfs
|
||||
|
||||
# Get _passenger.ipfs with BB Pass Phrase
|
||||
openssl aes-256-cbc -pbkdf2 -k \"$BB\" -d -salt -in ~/.zen/tag/${AAH}/_passenger.ipfs.BB.aes -out /tmp/_passenger.ipfs
|
||||
|
||||
# IPFS get file and read with VLC
|
||||
ipfs get -o /tmp /ipfs/$(cat /tmp/_passenger.ipfs)/$(cat ~/.zen/tag/${AAH}/_passenger.filename) && vlc /tmp/$(cat ~/.zen/tag/${AAH}/_passenger.filename) 2>/dev/null
|
||||
##################################################################"
|
||||
|
||||
###########################################################
|
||||
# TAG IPFS STORAGE & G1Tag IPNS PUBLISHING
|
||||
|
@ -120,19 +148,37 @@ echo "$NANODATE" > ~/.zen/tag/${AAH}/_chain.nanodate # Nanodate notification
|
|||
# Activate ZenTag CHAIN
|
||||
I=$(ipfs add -qr ~/.zen/tag/${AAH} | tail -n 1)
|
||||
echo "${I}" > ~/.zen/tag/${AAH}/_chain
|
||||
|
||||
I=$(ipfs add -qr ~/.zen/tag/${AAH} | tail -n 1)
|
||||
cp -f ~/.zen/tag/${AAH}/_chain ~/.zen/tag/${AAH}/_chain.prev
|
||||
echo "${I}" > ~/.zen/tag/${AAH}/_chain
|
||||
|
||||
|
||||
# IPFS Hash for Immutable G1tag data
|
||||
J=$(ipfs name publish -k ${RR} --quieter /ipfs/${I})
|
||||
J=$(ipfs name publish -k ${AA}.key --quieter /ipfs/${I})
|
||||
echo "${J}" > ~/.zen/tag/${AAH}/_ipns
|
||||
|
||||
echo "ZenTag Done check it with :: ipfs ls /ipns/${J}"
|
||||
# REPORT ZenTag to SWARM
|
||||
mkdir -p ~/.zen/wallets/.$IPFSNODEID/TAG/
|
||||
echo "${AA}" > ~/.zen/wallets/.$IPFSNODEID/TAG/${J}
|
||||
|
||||
### G1TAG PRINT TYPE:DATA:IPNS
|
||||
####################################################################################
|
||||
########################################################################
|
||||
# READ QRCODE
|
||||
qrencode -s 5 -o ~/.zen/tag/${AAH}/_QRCODE.read.png "RJ:${AAH}#${J}"
|
||||
# WRITE QRCODE
|
||||
qrencode -s 5 -o ~/.zen/tag/${AAH}/_QRCODE.write.png "BJ:${BB}#${J}"
|
||||
|
||||
echo "ZenTag ${AA}.key made check it with :: ipfs ls /ipns/${J}"
|
||||
|
||||
|
||||
########################################################################
|
||||
echo "##################################################################
|
||||
---> Whishing to clean IPFS repo ? RUN
|
||||
ipfs pin ls -q --type recursive | xargs ipfs pin rm && ipfs repo gc
|
||||
rm -f ~/.ipfs/keystore/*.key
|
||||
rm -Rf ~/.zen/tag/*
|
||||
rm -Rf ~/.zen/wallets/.$IPFSNODEID/TAG
|
||||
##################################################################"
|
||||
########################################################################
|
||||
exit 0
|
||||
|
|
Loading…
Reference in New Issue