From 92fdf87b3a14138a4168488c0ab00f5654e1b889 Mon Sep 17 00:00:00 2001 From: poka Date: Thu, 5 Nov 2020 02:57:54 +0100 Subject: [PATCH] Add deletemsg.sh script to delete a message by ID. --- deletemsg.sh | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++ sendmsg.sh | 3 ++- 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100755 deletemsg.sh diff --git a/deletemsg.sh b/deletemsg.sh new file mode 100755 index 0000000..aaec7c6 --- /dev/null +++ b/deletemsg.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +# ### +# Supprimer un message Cesium+ +# ### + +[[ ! -f .env ]] && cp .env.template .env +source .env + +REGEX_PUBKEYS="[a-zA-Z0-9]{42,44}" + +# Parse options +declare -a args=($@) +for ((i=0; i<${#args[*]}; ++i)) +do + case ${args[$i]} in + -t|--test) file="test.txt" + recipient=$issuer;; + -id|--id) id="${args[$i+1]}" + [[ -z $id ]] && echo "Veuillez préciser un ID de message." && exit 1;; + -i|--issuer) issuer="${args[$i+1]}" + [[ -z $issuer ]] && echo "Veuillez préciser un émetteur." && exit 1;; + -k|--key) dunikey="${args[$i+1]}" + [[ -z $dunikey ]] && echo "Veuillez préciser un fichier de trousseau." && exit 1;; + esac +done + +if [[ -z $id ]]; then + read -p "ID de message: " ID +fi +if [[ -z $issuer ]]; then + read -p "Émetteur: " issuer +fi +if [[ -z $dunikey ]]; then + read -p "Fichier de trousseau: " dunikey +fi + +[[ -z $(grep -Eo $REGEX_PUBKEYS <<<$issuer) ]] && echo "Le format de la clé publique de l'émetteur est invalide." && exit 1 + +times=$(date -u +'%s') + +# Fabrication du hash +hash="{\"version\":2,\"index\":\"message\",\"type\":\"inbox\",\"id\":\"$id\",\"issuer\":\"$issuer\",\"time\":$times}" +hash=$(echo -n "$hash" | sha256sum | cut -d ' ' -f1 | awk '{ print toupper($0) }') + +# Fabrication de la signature +signature=$(echo -n "$hash" | ./natools.py sign -f pubsec -k $dunikey --noinc -O 64) + +# Affichage du JSON final +echo "{ + \"version\": 2, + \"index\": \"message\", + \"type\": \"inbox\", + \"id\": \"$id\", + \"issuer\": \"$issuer\", + \"time\": $times, + \"hash\": \"$hash\", + \"signature\": \"$signature\" +}" + +# Envoi du document +curl -X POST "$pod/history/delete" -d "{\"version\":2,\"index\":\"message\",\"type\":\"inbox\",\"id\":\"$id\",\"issuer\":\"$issuer\",\"time\":$times,\"hash\":\"$hash\",\"signature\":\"$signature\"}" diff --git a/sendmsg.sh b/sendmsg.sh index 4fdd710..a426cca 100755 --- a/sendmsg.sh +++ b/sendmsg.sh @@ -60,6 +60,7 @@ if [[ -z $dunikey ]]; then fi [[ -z $(grep -Eo $REGEX_PUBKEYS <<<$recipient) ]] && echo "Le format de la clé publique du destinataire est invalide." && exit 1 +[[ -z $(grep -Eo $REGEX_PUBKEYS <<<$issuer) ]] && echo "Le format de la clé publique de l'émetteur est invalide." && exit 1 # Récupération et chiffrement du titre et du message title=$(head -n1 <<<$message | ./natools.py encrypt --pubsec -p $recipient -O 58) @@ -91,5 +92,5 @@ echo "{ "signature" : \"$signature\" }" -# Envoi du document à +# Envoi du document curl -X POST "$pod/message/inbox" -d "{\"issuer\":\"$issuer\",\"recipient\":\"$recipient\",\"title\":\"$title\",\"content\":\"$content\",\"time\":$times,\"nonce\":\"$nonce\",\"version\":2,\"hash\":\"$hash\",\"signature\":\"$signature\"}"