Skip to content

Instantly share code, notes, and snippets.

@jimpo
Last active December 22, 2017 18:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jimpo/3f51ddcb657171bfd9d85e222f6fb46d to your computer and use it in GitHub Desktop.
Save jimpo/3f51ddcb657171bfd9d85e222f6fb46d to your computer and use it in GitHub Desktop.
Comparison of OpenSSL signature generation/verification times
#!/usr/bin/env zsh
set -e
tmp_dir=$(mktemp -d)
pushd $tmp_dir
openssl dsaparam -genkey -out dsa_key 3072
openssl dsa -in dsa_key -pubout -out dsa_key.pub
openssl genrsa -out rsa_key 3072
openssl rsa -in rsa_key -pubout -out rsa_key.pub
openssl ecparam -name prime256v1 -genkey -out ecdsa_key
openssl ec -in ecdsa_key -pubout -out ecdsa_key.pub
N=1000
echo "\nGenerating $N random messages for signing"
for i in {1..$N} ; do
openssl rand -hex 32 > msg_${i}.txt
done
for algo in dsa rsa ecdsa ; do
echo "\nGenerating ${algo:u} signatures"
time (
for msg in msg_*.txt ; do
openssl dgst -sha256 -sign ${algo}_key $msg > ${msg}.${algo}.sig
done
)
done
for algo in dsa rsa ecdsa ; do
echo "\nVerifying ${algo:u} signatures"
time (
for msg in msg_*.txt ; do
openssl dgst -sha256 -verify ${algo}_key.pub -signature ${msg}.${algo}.sig $msg > /dev/null
done
)
done
# Delete messages
popd
rm -rf $tmp_dir
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment