mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-30 02:28:54 +00:00
114 lines
2.0 KiB
Plaintext
114 lines
2.0 KiB
Plaintext
|
#!/bin/sh
|
||
|
#
|
||
|
# \brief Create cgdconfig(8) configuration file from key or extract the key
|
||
|
# from the specified configuration file
|
||
|
# \author Josef Soentgen
|
||
|
# \date 2014-04-29
|
||
|
#
|
||
|
#
|
||
|
# Note: This script is merely just a awk(1) wrapper and only generates a
|
||
|
# aes-cbc 256 storedkey configuration and expects the given key to
|
||
|
# be a proper base64 encoded key generated by cgdconfig(8).
|
||
|
#
|
||
|
|
||
|
|
||
|
#
|
||
|
# Print usage
|
||
|
#
|
||
|
print_usage() {
|
||
|
local help=$1
|
||
|
printf "usage: $PROG_NAME [-h] <-f file|-k key>\n"
|
||
|
if [ "$help" != "" ]; then
|
||
|
printf "\t-h show this help screen\n"
|
||
|
printf "\t-k key generate config file from key and print "
|
||
|
printf "to stdout\n"
|
||
|
printf "\t-f file extract key from config file and print "
|
||
|
printf "to stdout\n"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
|
||
|
#
|
||
|
# Parse arguments given on the commandline
|
||
|
#
|
||
|
parse_arguments() {
|
||
|
local args="$(getopt hf:k: ${*})"
|
||
|
|
||
|
[ $? != 0 ] && exit 1
|
||
|
if [ $# -lt 1 ]
|
||
|
then
|
||
|
print_usage
|
||
|
exit 1
|
||
|
fi
|
||
|
set -- $args
|
||
|
while [ $# -ge 0 ]; do
|
||
|
case "$1" in
|
||
|
-h)
|
||
|
print_usage "help"
|
||
|
exit 0;;
|
||
|
-k) ARG_KEY="$2"; shift; shift;;
|
||
|
-f) ARG_FILE="$2"; shift; shift;;
|
||
|
--) shift; break;;
|
||
|
esac
|
||
|
done
|
||
|
}
|
||
|
|
||
|
|
||
|
#
|
||
|
# Extract the key string from the configuration file
|
||
|
#
|
||
|
extract_key() {
|
||
|
local cgd_file="$1"
|
||
|
|
||
|
awk 'BEGIN { found=0 }
|
||
|
{
|
||
|
if (found == 1) key=key $1
|
||
|
if ($1 == "keygen") { found=1; key=$4 }
|
||
|
}
|
||
|
END { sub(/;$/, "", key); print key }' $cgd_file
|
||
|
}
|
||
|
|
||
|
|
||
|
#
|
||
|
# Generate a proper cgd(8) configuration file from the given key
|
||
|
#
|
||
|
generate_conf() {
|
||
|
local key="$1"
|
||
|
|
||
|
printf "$key" | awk '{ key=$0 }
|
||
|
END {
|
||
|
printf("algorithm aes-cbc;\n")
|
||
|
printf("iv-method encblkno1;\n")
|
||
|
printf("keylength 256;\n")
|
||
|
printf("verify_method none;\n")
|
||
|
printf("keygen storedkey key ")
|
||
|
printf("%s \\\n", substr(key, 1, 30))
|
||
|
printf(" %s;\n", substr(key, 31))
|
||
|
}'
|
||
|
}
|
||
|
|
||
|
|
||
|
main() {
|
||
|
parse_arguments "$@"
|
||
|
|
||
|
if [ "$ARG_FILE" != "" ]; then
|
||
|
extract_key "$ARG_FILE"
|
||
|
fi
|
||
|
|
||
|
if [ "$ARG_KEY" != "" ]; then
|
||
|
generate_conf "$ARG_KEY"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
|
||
|
PROG_NAME=$(basename $0)
|
||
|
|
||
|
ARG_FILE=
|
||
|
ARG_KEY=
|
||
|
|
||
|
main "$@"
|
||
|
|
||
|
exit 0
|
||
|
|
||
|
# End of file
|