mirror of
https://dev.iopsys.eu/bbf/bbfdm.git
synced 2025-12-10 07:44:39 +01:00
73 lines
No EOL
1.9 KiB
Bash
Executable file
73 lines
No EOL
1.9 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
. /usr/share/libubox/jshn.sh
|
|
|
|
# Path to the private key certificate
|
|
PRIVATE_KEY_CERT="/etc/bbfdm/certificates/private_key.pem"
|
|
|
|
case "$1" in
|
|
list)
|
|
|
|
echo '{ "encode" : { "data": "str" }, "decode" : { "data": "str" } }'
|
|
;;
|
|
call)
|
|
# Read the arguments from standard input
|
|
read -r input
|
|
|
|
# Parse the input JSON
|
|
json_load "${input}"
|
|
|
|
# Get the 'data' value from the input JSON
|
|
json_get_var data data
|
|
|
|
# Check if 'data' is provided
|
|
if [ -z "${data}" ]; then
|
|
echo '{ "error": "Data should be defined !!!" }'
|
|
return
|
|
fi
|
|
|
|
# Check if private key exists
|
|
if [ -f "${PRIVATE_KEY_CERT}" ]; then
|
|
case "$2" in
|
|
encode)
|
|
# Path to the public key certificate
|
|
PUBLIC_KEY_CERT="/etc/bbfdm/certificates/public_key.pem"
|
|
|
|
# Generate public key if not exists
|
|
if [ ! -f "${PUBLIC_KEY_CERT}" ]; then
|
|
openssl rsa -pubout -in "${PRIVATE_KEY_CERT}" -out "${PUBLIC_KEY_CERT}" || {
|
|
echo '{ "error": "Cannot generate public key !!!" }'
|
|
return
|
|
}
|
|
fi
|
|
|
|
res=$(echo -n "${data}" | openssl pkeyutl -encrypt -pubin -inkey "${PUBLIC_KEY_CERT}" | openssl base64)
|
|
echo "{ \"value\": \"${res}\" }"
|
|
;;
|
|
decode)
|
|
# Decrypt the data with private key
|
|
res=$(echo -n "${data}" | openssl base64 -d | openssl pkeyutl -decrypt -inkey "${PRIVATE_KEY_CERT}")
|
|
echo "{ \"value\": \"${res}\" }"
|
|
;;
|
|
esac
|
|
else
|
|
# Read the BBF_HASH from the secure hash file(/etc/bbfdm/.secure_hash)
|
|
BBF_HASH=$(cat /etc/bbfdm/.secure_hash)
|
|
if [ -z "${BBF_HASH}" ]; then
|
|
echo '{ "error": "bbf hash should not be blank !!!" }'
|
|
return
|
|
fi
|
|
|
|
case "$2" in
|
|
encode)
|
|
res=$(echo "${data}" | openssl enc -base64 -e -aes-256-cbc -salt -pass pass:${BBF_HASH} -pbkdf2)
|
|
echo "{ \"value\": \"${res}\" }"
|
|
;;
|
|
decode)
|
|
res=$(echo "${data}" | openssl enc -base64 -d -aes-256-cbc -salt -pass pass:${BBF_HASH} -pbkdf2)
|
|
echo "{ \"value\": \"${res}\" }"
|
|
;;
|
|
esac
|
|
fi
|
|
;;
|
|
esac |