llaves y firmas con ssh

This commit is contained in:
f 2022-03-14 16:32:57 -03:00
parent 2d7088e16c
commit 7c4981bb29

View file

@ -11,27 +11,25 @@ get_stack () {
# Generar una llave privada ECDSA si no existe # Generar una llave privada ECDSA si no existe
#
# Uso: generate_private_key "comentario"
generate_private_key () { generate_private_key () {
test -f "$private_key" && return 1 test -f "$private_key" && return 1
ssh-keygen -t ecdsa -f "$private_key" -N "" -m PEM ssh-keygen -t ecdsa -f "$private_key" -N "" -C "$@"
} }
# Firmar el archivo usando la llave privada. # Firmar el archivo usando la llave privada.
# #
# Uso: sign_file archivo.json # Uso: sign_file archivo.json
# Devuelve: archivo.json.sign # Devuelve: La firma
sign_file () { sign_file () {
local _file="$1" local _file="$1"
test ! -f "$_file" && return 1 test ! -f "$_file" && return 1
test -f "$_file.sig" || ssh-keygen -Y sign -f "$private_key" -n file "$_file" 2>&1 >/dev/null
if ! openssl dgst -sha512 -sign "$private_key" "$_file" | base64 | tr -d "\n" > "$_file.sign" ; then cat "${_file}.sig" | grep -v SIGNATURE | tr -d "\n"
rm -f "$_file.sign"
return 1
fi
echo "$_file.sign"
} }