Fix test suite deficiencies.

While trying to debug/test some vbutil_kernel changes
(coming in a different CL) it was noticed that this utility
is not covered by tests, and the script which runs it to set
up further testing (tests/gen_fuzz_test_cases.sh) fails
because of the key format mismatch.

Some investigation has shown that this was left behind when
vboot_reference key storage format was changed.

To make gen_fuzz_test_cases.sh work again a new set of test
keys is required, the keys are generated by
tests/gen_test_keys.sh. This utility had to be changed to
generate the proper set of wrapped public and private keys.

Actually code in tests/gen_test_keys.shgenerate_keys() is
copied in pasted in many scripts in this tree, this has to
be refactored, but under a different CL.

Once the changes were made, two scripts were run:
 ./tests/gen_test_keys.sh
 ./gen_test_cases.sh

resulting in the new and updated keys generated.

firmware/stub/tpm_lite_stub.c was edited to fix compilation
warning issued when compiling with debugging enabled.

Change-Id: I26a45cbad00d21a29195f2a89b4df7d3559133fe

BUG=chromium-os:7178
TEST=described below

The following commands succeed:

vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
make
make runtests
./tests/gen_fuzz_test_cases.sh
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

note that  ./tests/gen_fuzz_test_cases.sh was failing
before this change.

The upcoming CL modifying vbutil_kernel will make sure
gen_fuzz_test_cases.sh is executed when tests are run and
will enhance it to cover vbutil_kernel testing.

Review URL: http://codereview.chromium.org/3423022
diff --git a/firmware/stub/tpm_lite_stub.c b/firmware/stub/tpm_lite_stub.c
index a302dcc..2695fae 100644
--- a/firmware/stub/tpm_lite_stub.c
+++ b/firmware/stub/tpm_lite_stub.c
@@ -36,7 +36,7 @@
 
 /* Print |n| bytes from array |a|, with newlines.
  */
-POSSIBLY_UNUSED static void PrintBytes(uint8_t* a, int n) {
+POSSIBLY_UNUSED static void PrintBytes(const uint8_t* a, int n) {
   int i;
   for (i = 0; i < n; i++) {
     VBDEBUG(("%02x ", a[i]));
diff --git a/firmware/version.c b/firmware/version.c
index 218ed17..a3a9156 100644
--- a/firmware/version.c
+++ b/firmware/version.c
@@ -1 +1 @@
-char* VbootVersion = "VBOOv=11db392a";
+char* VbootVersion = "VBOOv=274e977c";
diff --git a/tests/gen_fuzz_test_cases.sh b/tests/gen_fuzz_test_cases.sh
index 957730e..fe29961 100755
--- a/tests/gen_fuzz_test_cases.sh
+++ b/tests/gen_fuzz_test_cases.sh
@@ -6,11 +6,14 @@
 
 # Generate test cases for use for the RSA verify benchmark.
 
+set -e
+
 # Load common constants and variables.
 . "$(dirname "$0")/common.sh"
 
 # Use a different directory for fuzzing test cases.
-TESTCASE_DIR=${SCRIPT_DIR}/fuzz_testcases
+TESTKEY_DIR=${TESTKEY_DIR:-$(realpath  ${SCRIPT_DIR}/../tests/testkeys)}
+TESTCASE_DIR="$(realpath ${SCRIPT_DIR}/../build)"/fuzz_testcases
 TEST_IMAGE_FILE=${TESTCASE_DIR}/testimage
 TEST_IMAGE_SIZE=500000
 TEST_BOOTLOADER_FILE=${TESTCASE_DIR}/testbootloader
@@ -25,22 +28,20 @@
   # signing key.
   ${UTIL_DIR}/vbutil_keyblock --pack ${TESTCASE_DIR}/firmware.keyblock \
     --datapubkey ${TESTKEY_DIR}/key_rsa4096.sha512.vbpubk \
-    --signprivate ${TESTKEY_DIR}/key_rsa8192.pem \
-    --algorithm 11
+    --signprivate ${TESTKEY_DIR}/key_rsa8192.sha1.vbprivk
 
   # Kernel key block - RSA4096/SHA512 kernel signing subkey, RSA4096/SHA512
   # kernel signing key.
   ${UTIL_DIR}/vbutil_keyblock --pack ${TESTCASE_DIR}/kernel.keyblock \
     --datapubkey ${TESTKEY_DIR}/key_rsa4096.sha512.vbpubk \
-    --signprivate ${TESTKEY_DIR}/key_rsa4096.pem \
-    --flags 15 \
-    --algorithm 8
-  
+    --signprivate ${TESTKEY_DIR}/key_rsa4096.sha1.vbprivk \
+    --flags 15
+
   echo "Generating signed firmware test image..."
   ${UTIL_DIR}/vbutil_firmware \
     --vblock ${TESTCASE_DIR}/firmware.vblock \
     --keyblock ${TESTCASE_DIR}/firmware.keyblock\
-    --signprivate ${TESTKEY_DIR}/key_rsa4096.pem \
+    --signprivate ${TESTKEY_DIR}/key_rsa4096.sha256.vbprivk \
     --version 1 \
     --fv  $1 \
     --kernelkey ${TESTKEY_DIR}/key_rsa4096.sha512.vbpubk
@@ -51,7 +52,7 @@
   ${UTIL_DIR}/vbutil_kernel \
     --pack ${TESTCASE_DIR}/kernel.vblock.image \
     --keyblock ${TESTCASE_DIR}/kernel.keyblock \
-    --signprivate ${TESTKEY_DIR}/key_rsa4096.pem \
+    --signprivate ${TESTKEY_DIR}/key_rsa4096.sha256.vbprivk \
     --version 1 \
     --vmlinuz ${TEST_IMAGE_FILE} \
     --bootloader ${TEST_BOOTLOADER_FILE} \
@@ -80,3 +81,4 @@
 pre_work
 check_test_keys
 generate_fuzzing_images ${TEST_IMAGE_FILE}
+
diff --git a/tests/gen_test_keys.sh b/tests/gen_test_keys.sh
index edc3d20..1bf995b 100755
--- a/tests/gen_test_keys.sh
+++ b/tests/gen_test_keys.sh
@@ -9,20 +9,51 @@
 # Load common constants and variables.
 . "$(dirname "$0")/common.sh"
 
-# Generate RSA test keys of various lengths. 
+set -e
+
+PATH="$(dirname "$0")/../build/utility:${PATH}"
+
+sha_types=( 1 256 512 )
+
+# Generate RSA test keys of various lengths.
 function generate_keys {
+  key_index=0
+  key_name_base="${TESTKEY_DIR}/key_rsa"
   for i in ${key_lengths[@]}
   do
-    if [ -f ${TESTKEY_DIR}/key_rsa$i.keyb ]; then
+    key_base="${key_name_base}${i}"
+    if [ -f "${key_base}.keyb" ]; then
       continue
     fi
-    openssl genrsa -F4 -out ${TESTKEY_DIR}/key_rsa$i.pem $i
+
+    openssl genrsa -F4 -out ${key_base}.pem $i
     # Generate self-signed certificate from key.
-    openssl req -batch -new -x509 -key ${TESTKEY_DIR}/key_rsa$i.pem \
-      -out ${TESTKEY_DIR}/key_rsa$i.crt
+    openssl req -batch -new -x509 -key ${key_base}.pem \
+      -out ${key_base}.crt
+
     # Generate pre-processed key for use by RSA signature verification code.
-    ${UTIL_DIR}/dumpRSAPublicKey ${TESTKEY_DIR}/key_rsa$i.crt \
-      > ${TESTKEY_DIR}/key_rsa$i.keyb
+    ${UTIL_DIR}/dumpRSAPublicKey ${key_base}.crt \
+      > ${key_base}.keyb
+
+    alg_index=0
+    for sha_type in ${sha_types[@]}
+    do
+      alg=$((${key_index} * 3 + ${alg_index}))
+  # wrap the public key
+      vbutil_key \
+        --pack "${key_base}.sha${sha_type}.vbpubk" \
+        --key "${key_base}.keyb" \
+        --version 1 \
+        --algorithm ${alg}
+
+  # wrap the private key
+      vbutil_key \
+        --pack "${key_base}.sha${sha_type}.vbprivk" \
+        --key "${key_base}.pem" \
+        --algorithm ${alg}
+      alg_index=$((${alg_index} + 1))
+    done
+    key_index=$((${key_index} + 1))
   done
 }
 
diff --git a/tests/run_rsa_tests.sh b/tests/run_rsa_tests.sh
index a296d13..ed15cf8 100755
--- a/tests/run_rsa_tests.sh
+++ b/tests/run_rsa_tests.sh
@@ -9,6 +9,8 @@
 # Load common constants and variables.
 . "$(dirname "$0")/common.sh"
 
+set -e
+
 return_code=0
 TEST_FILE=${TESTCASE_DIR}/test_file
 
@@ -24,7 +26,7 @@
         ${TEST_FILE}.rsa${keylen}_${hashalgo}.sig \
         ${TEST_FILE}
       if [ $? -ne 0 ]
-      then  
+      then
         return_code=255
       fi
       let algorithmcounter=algorithmcounter+1
diff --git a/tests/testcases/test_file b/tests/testcases/test_file
index 3780a87..9322cf1 100644
--- a/tests/testcases/test_file
+++ b/tests/testcases/test_file
Binary files differ
diff --git a/tests/testcases/test_file.rsa1024_sha1.sig b/tests/testcases/test_file.rsa1024_sha1.sig
index ab0f23f..7c1e9ef 100644
--- a/tests/testcases/test_file.rsa1024_sha1.sig
+++ b/tests/testcases/test_file.rsa1024_sha1.sig
Binary files differ
diff --git a/tests/testcases/test_file.rsa1024_sha256.sig b/tests/testcases/test_file.rsa1024_sha256.sig
index bfea38d..112eb89 100644
--- a/tests/testcases/test_file.rsa1024_sha256.sig
+++ b/tests/testcases/test_file.rsa1024_sha256.sig
Binary files differ
diff --git a/tests/testcases/test_file.rsa1024_sha512.sig b/tests/testcases/test_file.rsa1024_sha512.sig
index ecd166a..1bb708d 100644
--- a/tests/testcases/test_file.rsa1024_sha512.sig
+++ b/tests/testcases/test_file.rsa1024_sha512.sig
Binary files differ
diff --git a/tests/testcases/test_file.rsa2048_sha1.sig b/tests/testcases/test_file.rsa2048_sha1.sig
index 3c7c93f..846e6c2 100644
--- a/tests/testcases/test_file.rsa2048_sha1.sig
+++ b/tests/testcases/test_file.rsa2048_sha1.sig
Binary files differ
diff --git a/tests/testcases/test_file.rsa2048_sha256.sig b/tests/testcases/test_file.rsa2048_sha256.sig
index 7a5362b..59efe89 100644
--- a/tests/testcases/test_file.rsa2048_sha256.sig
+++ b/tests/testcases/test_file.rsa2048_sha256.sig
@@ -1 +1,2 @@
-GO:s,©gG§Ö2æÃD‹ Í³¬ôtˆ~1ނÁ#½±j"ØPž5ßMźé¨Ðð„2÷‚	òÇ©$³Q¦F°!ˆ™8’»6º¦TӂFÍ"f{9¦õ³†âô†w ÑMB³­mÊ\|;œ'ú–'̑‡ _(3‰d†%9ó7œ._×êÔ{”ƒgÚÊ´4¼ H¢}å•‘6øú¡$Fz×ö\P<˜8`{¿t)îtû ¡âêÁ·vÓ[³æ¸¥\IÖ@4íGŸýCˆ‰a•€àz̵ãÕ9ëñ·ˆ‹ÚÒ®R«ŠÆåK]×9¡,‰ÇXy:5Tkic
\ No newline at end of file
+{Úû<ôªN³CӔIöö7Ì€1{[]ë7”d½ŽxÌA:*°b¢N¹Æº¨ãm3¡Þzùl”Æٖ#Wù‹K§H׈‡9¾6^‚‘wŠp$h™eMõ.HÓf¢ÒÖÁJt—‹|;à<ʪ« y¶’Ñî	½h.}/–øú•#Se+:Á)3ìÔÀ%j)ØZâÏb©‰"Ïç#iœØ
+%z“/e@Û@_…)MÆ¶J¡єė™X›‹>JÛ*H°+Õhu:a¼Á͆;ÂíßF$Éñ#²wD Wø7­æ O«/¼'žêô|Uç/qBEћ=4®Q
\ No newline at end of file
diff --git a/tests/testcases/test_file.rsa2048_sha512.sig b/tests/testcases/test_file.rsa2048_sha512.sig
index d047597..a87d4b8 100644
--- a/tests/testcases/test_file.rsa2048_sha512.sig
+++ b/tests/testcases/test_file.rsa2048_sha512.sig
Binary files differ
diff --git a/tests/testcases/test_file.rsa4096_sha1.sig b/tests/testcases/test_file.rsa4096_sha1.sig
index cd3c2da..bb4ba6f 100644
--- a/tests/testcases/test_file.rsa4096_sha1.sig
+++ b/tests/testcases/test_file.rsa4096_sha1.sig
Binary files differ
diff --git a/tests/testcases/test_file.rsa4096_sha256.sig b/tests/testcases/test_file.rsa4096_sha256.sig
index 140c564..7648d00 100644
--- a/tests/testcases/test_file.rsa4096_sha256.sig
+++ b/tests/testcases/test_file.rsa4096_sha256.sig
Binary files differ
diff --git a/tests/testcases/test_file.rsa4096_sha512.sig b/tests/testcases/test_file.rsa4096_sha512.sig
index a088735..3a091d7 100644
--- a/tests/testcases/test_file.rsa4096_sha512.sig
+++ b/tests/testcases/test_file.rsa4096_sha512.sig
Binary files differ
diff --git a/tests/testcases/test_file.rsa8192_sha1.sig b/tests/testcases/test_file.rsa8192_sha1.sig
index 4b704fa..43a79b8 100644
--- a/tests/testcases/test_file.rsa8192_sha1.sig
+++ b/tests/testcases/test_file.rsa8192_sha1.sig
Binary files differ
diff --git a/tests/testcases/test_file.rsa8192_sha256.sig b/tests/testcases/test_file.rsa8192_sha256.sig
index 75ed86d..3ab00ae 100644
--- a/tests/testcases/test_file.rsa8192_sha256.sig
+++ b/tests/testcases/test_file.rsa8192_sha256.sig
Binary files differ
diff --git a/tests/testcases/test_file.rsa8192_sha512.sig b/tests/testcases/test_file.rsa8192_sha512.sig
index 49d002c..389a2e4 100644
--- a/tests/testcases/test_file.rsa8192_sha512.sig
+++ b/tests/testcases/test_file.rsa8192_sha512.sig
Binary files differ
diff --git a/tests/testcases/test_file.sha1.digest b/tests/testcases/test_file.sha1.digest
index 96aabb0..64a8a13 100644
--- a/tests/testcases/test_file.sha1.digest
+++ b/tests/testcases/test_file.sha1.digest
@@ -1 +1 @@
-ïk–‘¡f™«âĒÆ¢­d
\ No newline at end of file
+»¼(Ç\»ñm€%~l8K!Jo
\ No newline at end of file
diff --git a/tests/testcases/test_file.sha256.digest b/tests/testcases/test_file.sha256.digest
index 4e3497f..1a6f871 100644
--- a/tests/testcases/test_file.sha256.digest
+++ b/tests/testcases/test_file.sha256.digest
@@ -1 +1 @@
-3e#<@lP…ÅàPÿ¾§ùðMÎ		ú	G"bØÀk
\ No newline at end of file
+@ÅûŽêßGw<«8Å!G3iå¦SƒhZTŸÎa³½
\ No newline at end of file
diff --git a/tests/testcases/test_file.sha512.digest b/tests/testcases/test_file.sha512.digest
index b599d7d..b518ed7 100644
--- a/tests/testcases/test_file.sha512.digest
+++ b/tests/testcases/test_file.sha512.digest
@@ -1 +1 @@
-2gÖô<º[Û.(ƒçXïBÎ@aiwažxk†‹&·j‚ëFµj9–%ìqÀ$¯¦¾lh	÷·p¢Ùr
\ No newline at end of file
+ÎÁ®—‹‰k+ÜZ%YuÕ ´ó´›l`ۖ¥4ÚH–û,ĕ€*3Ϝ•¬1üYrôåÓÝô4jWrB’AÛ
\ No newline at end of file
diff --git a/tests/testkeys/key_rsa1024.crt b/tests/testkeys/key_rsa1024.crt
index 47d811a..918885c 100644
--- a/tests/testkeys/key_rsa1024.crt
+++ b/tests/testkeys/key_rsa1024.crt
@@ -1,17 +1,17 @@
 -----BEGIN CERTIFICATE-----
-MIICsDCCAhmgAwIBAgIJAPEMdHB1QdnJMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
+MIICsDCCAhmgAwIBAgIJANBQvWlcbWbnMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
 BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX
-aWRnaXRzIFB0eSBMdGQwHhcNMTAwMjExMDMwMjUwWhcNMTAwMzEzMDMwMjUwWjBF
+aWRnaXRzIFB0eSBMdGQwHhcNMTAwOTI5MTgxNjM2WhcNMTAxMDI5MTgxNjM2WjBF
 MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50
 ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKB
-gQDGQIdHWd8PaY7IgQN80mn7h0QmQurw0FspVqMmjOquLuNGvSGEM7hclALiUd20
-vL03HYepFUQMVo0HTFUBduO4OOYwNXD6GaxrkdraMH8set7OckXuSDjA2KOKfZ7Z
-94YAlvttopCp8nKb7Hdir3Ij3LwnhY0qBlP9Y/fjTT9bOQIDAQABo4GnMIGkMB0G
-A1UdDgQWBBT8eMCavQtRQU/5uiFSiKvAK3jOODB1BgNVHSMEbjBsgBT8eMCavQtR
-QU/5uiFSiKvAK3jOOKFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUt
-U3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAPEMdHB1
-QdnJMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAuCJCSN31pR6i2umg
-sibMICC/2FoXrqb8Wq2RYZ5y4NkW1Wu+4L98M8NOlWXnLLayw3IdmdNEm4BVHKE1
-tTWwiRY4j8XQmldwYQaK+od5uVTLelG9nRcAvasqHKkbadUeSO2pSbFrMxkgvjeZ
-uUmu6+BI/CxOG/7AYpyNR/B7kDI=
+gQCdYBOJIJvGX9vC4E5XD1jb9zJ99FzR4G0n8HNyWy5ZKyy/hi80ibXpy6QdWcm4
+wqTvmVjU+20sP4AgzKC65fKyFvvAHUiD4yGr1qWtg4YFUcBbUiXOCQ66W3AC4g2J
+u9C16AzMpBk043bQsUQvxILEumQqQ1VS33uM7Kq8dWpL6QIDAQABo4GnMIGkMB0G
+A1UdDgQWBBTMzkdGAo5MwUWuboTo3FMDlmN8xTB1BgNVHSMEbjBsgBTMzkdGAo5M
+wUWuboTo3FMDlmN8xaFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUt
+U3RhdGUxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJANBQvWlc
+bWbnMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAODANXcuEhjcPnBDU
+eyWbw5HAxzCizL/sAnNijC+Ylr/RDb8WxUoqydRW3ueunolgnoXg6MsCqzNYGrgM
+oCvD+pQTT3ffHTIIEmBfBwZ1s1q9N5ostHqiaq/QTknNJxekvELq1T7pOj5NCBVc
+TAQutEJAB7s3AOMNlI3/fkSqIVM=
 -----END CERTIFICATE-----
diff --git a/tests/testkeys/key_rsa1024.keyb b/tests/testkeys/key_rsa1024.keyb
index 55760dc..51dcdd2 100644
--- a/tests/testkeys/key_rsa1024.keyb
+++ b/tests/testkeys/key_rsa1024.keyb
Binary files differ
diff --git a/tests/testkeys/key_rsa1024.pem b/tests/testkeys/key_rsa1024.pem
index 3139299..7184c98 100644
--- a/tests/testkeys/key_rsa1024.pem
+++ b/tests/testkeys/key_rsa1024.pem
@@ -1,15 +1,15 @@
 -----BEGIN RSA PRIVATE KEY-----
-MIICWwIBAAKBgQDGQIdHWd8PaY7IgQN80mn7h0QmQurw0FspVqMmjOquLuNGvSGE
-M7hclALiUd20vL03HYepFUQMVo0HTFUBduO4OOYwNXD6GaxrkdraMH8set7OckXu
-SDjA2KOKfZ7Z94YAlvttopCp8nKb7Hdir3Ij3LwnhY0qBlP9Y/fjTT9bOQIDAQAB
-AoGASHre+l8JBgF5iiRgugnTZXoWmEZuzoveSEa8byOlyPirbvlGf6bJCE+0njl/
-7Mv0AWpyZoa30irydHCbw2VL6zDP0zVxKQwauKAWD+XHPdLlHnGJn8qe1Qg2MZhe
-xSDg/lvnxKQfWGOW8YG62vmSHQVTEr0BziInBcZRCjb+JOECQQD1QMpsqFxG/isv
-PwFuC4+zHZXEEPXoxWOVX2uI/dVZGm++0STW5Rj1t15SspvXg2UwgXGZCzgHDHJc
-kSzriQkPAkEAzvB85Fh9B4zHqdL6kSQqu5X007rlhdgO+iZbJVilktDG+9QecYk+
-C1ra3nHQoDvGB5oZ2B2mDWnR1M/tbYEHNwJACsj4neKhfDW9LGy24WH8xcGtTlv4
-lG3pvS3fCr0u3qY898U2u4SDnnqb2UMle0q57nIizrohkp3Hga6YrRrvnQJAY1nC
-HD7/h+hm03mfIp+ihHzyFdTc7O1WA3L2v29Xzqy9W5nzI78oMntkKPermcIYyP2K
-+t8BId90Bh/tdW1E8QJAcsX8dy6E59hLsMhnbYXm4cjrubdw4sVgLRzaHCM36/V2
-Hb/NWmxzKmkL8Ok/jznk0RD6QRjk0xJUZSZVSn8kvQ==
+MIICXAIBAAKBgQCdYBOJIJvGX9vC4E5XD1jb9zJ99FzR4G0n8HNyWy5ZKyy/hi80
+ibXpy6QdWcm4wqTvmVjU+20sP4AgzKC65fKyFvvAHUiD4yGr1qWtg4YFUcBbUiXO
+CQ66W3AC4g2Ju9C16AzMpBk043bQsUQvxILEumQqQ1VS33uM7Kq8dWpL6QIDAQAB
+AoGAb12y1WIu+gWRtWkX5wHkRty6bWmEWbzwYcgFWlJuDQnBg9MICqy8/7Js85w7
+ZLTRFQC2XRmDW0GggRVtVHUu9X2jwkHR9+TWza4xAtYcSwDl6VJTHX2ygptrG/n9
+qPFinfvnpiP7b2WNjC53V3cnjg3m+1B5zrmFxsVLDMVLQhECQQDN7i1NWZFVNfYa
+GT2GSgMpD0nPXA1HHUvFFgnI9xJkBCewHzega+PrrrpMKZZWLpc4YCm3PK9nI8Nk
+EmJE5HwNAkEAw6OpiOgWdRaJWx3+XBsFOhz6K86xwV0NpVb6ocrBKU/t0OqP+gZh
+B/YBDfwXPr2w5FCwozUs/MrBdoYR3WnsTQJABNn/pzrc+azzx1mg4XEM8gKyMnhw
+t6QxDMugH2Pywvh2FuglX1orXHoZWYIBULZ4SZO6Z96+IyfsiocEWasoYQJBALZ/
+onO7BM/+0Oz1osSq1Aps45Yf/0OAmW0mITDyIZR3IkJjvSEf+D3j5wHzqn91lmC1
+QMFOpoO+ZBA7asjfuXUCQGmHgpC0BuD4S1QlcF0nrVHTG7Y8KZ18s9qPJS3csuGf
+or10mrNRF3tyGy8e/sw88a74Q/6v/PgChZHmq6QjOOU=
 -----END RSA PRIVATE KEY-----
diff --git a/tests/testkeys/key_rsa1024.sha1.vbprivk b/tests/testkeys/key_rsa1024.sha1.vbprivk
new file mode 100644
index 0000000..76b835a
--- /dev/null
+++ b/tests/testkeys/key_rsa1024.sha1.vbprivk
Binary files differ
diff --git a/tests/testkeys/key_rsa1024.sha1.vbpubk b/tests/testkeys/key_rsa1024.sha1.vbpubk
index 0dd21b7..9fe3956 100644
--- a/tests/testkeys/key_rsa1024.sha1.vbpubk
+++ b/tests/testkeys/key_rsa1024.sha1.vbpubk
Binary files differ
diff --git a/tests/testkeys/key_rsa1024.sha256.vbprivk b/tests/testkeys/key_rsa1024.sha256.vbprivk
new file mode 100644
index 0000000..cdcd2cc
--- /dev/null
+++ b/tests/testkeys/key_rsa1024.sha256.vbprivk
Binary files differ
diff --git a/tests/testkeys/key_rsa1024.sha256.vbpubk b/tests/testkeys/key_rsa1024.sha256.vbpubk
index e463806..7656569 100644
--- a/tests/testkeys/key_rsa1024.sha256.vbpubk
+++ b/tests/testkeys/key_rsa1024.sha256.vbpubk
Binary files differ
diff --git a/tests/testkeys/key_rsa1024.sha512.vbprivk b/tests/testkeys/key_rsa1024.sha512.vbprivk
new file mode 100644
index 0000000..2fc8346
--- /dev/null
+++ b/tests/testkeys/key_rsa1024.sha512.vbprivk
Binary files differ
diff --git a/tests/testkeys/key_rsa1024.sha512.vbpubk b/tests/testkeys/key_rsa1024.sha512.vbpubk
index d8f983c..fe2f1c6 100644
--- a/tests/testkeys/key_rsa1024.sha512.vbpubk
+++ b/tests/testkeys/key_rsa1024.sha512.vbpubk
Binary files differ
diff --git a/tests/testkeys/key_rsa2048.crt b/tests/testkeys/key_rsa2048.crt
index be07e23..345c5b0 100644
--- a/tests/testkeys/key_rsa2048.crt
+++ b/tests/testkeys/key_rsa2048.crt
@@ -1,22 +1,22 @@
 -----BEGIN CERTIFICATE-----
-MIIDtTCCAp2gAwIBAgIJAI/L3BTiaw8mMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
+MIIDtTCCAp2gAwIBAgIJALUtT8qFaG3MMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
 BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX
-aWRnaXRzIFB0eSBMdGQwHhcNMTAwMjExMDMwMjUwWhcNMTAwMzEzMDMwMjUwWjBF
+aWRnaXRzIFB0eSBMdGQwHhcNMTAwOTI5MTgxNjM3WhcNMTAxMDI5MTgxNjM3WjBF
 MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50
 ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
-CgKCAQEApA5UbgUpStEy2Vkbb/3QxqIDDPgGuJn4k4pUS6GnMvx+OGj2tGIR/4n5
-3dN88vi5gDEujjdgauCJXTzbGEPVRks5tk5RYVq4Z6xtd9LrFgrEicAQFGhRVb5Z
-BnCKg3sw7Ynrrb/bdIYwX7TpOQB3PPaPQjvHUDwEv+Glc2nBxGZEn08AmEp9ZKkX
-gT15ZBZGB5O9BrJCHKF50WNX8B1+JhImXoipZxUGUtT3lH7FCXANcglTNYfKEx1D
-3xMdsNlAsbAqmr0pEyrXUzMpX94hN0OCIsbbbP3+XDzTxEqXAfwf8xz/XCgmvCye
-ZvhLHvKx3H7Qde7yXRQmSCEEbDv4nwIDAQABo4GnMIGkMB0GA1UdDgQWBBQbv1E7
-dTqAPTN116AWdKjE04IDwzB1BgNVHSMEbjBsgBQbv1E7dTqAPTN116AWdKjE04ID
-w6FJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNV
-BAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAI/L3BTiaw8mMAwGA1UdEwQF
-MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAFz3W6BnhnyyJjr7STpPdpxEzvFyrW0h
-c+9HvAP3FDcRjqbpjNa33GPVJEXKMdOhEXTMQ86aCwY8KVZpylt8hJZ0NBLO1bgO
-cb8aqkCXqhAyYTf5qJDIJ6d6tVYWp86dBbp1ll7svU+QU7S+cgTyiTyGgr4t5Z0s
-VyY+zlp1TVWXOUSj5ymWmLm2zJTdhNeAAHKZLRkEtIkS3oitjfcclwunADkZqVZf
-3VLkYUoIMm0Pisook01nls/RTnClxn6WAaEOJcxPkA2GE0O4NZCtB8BMd26u1U+L
-buTrn+HIg+XjJO4CUh2hsU7B2iUNWScNvubQXtJIfYyJO52DlwO1eMk=
+CgKCAQEAlF3KFZo9kW2YYaUJTce11BYEq9nTsP8E0+e+Tw5JUJ1M45s8UJSzOgKQ
+eSLR3399TSq0WSqsSa8QFvBACv7LmM7CgkgI4mMj2Zl96XJVyZP2+2c6hgvwRuB3
+eG6J5K2sW5YwiIz+5SQcPolp5F6r17tMZzgidgIxrN32VvUZt5VplILTU4h7J9ZN
+aipoG3JdFloxqOqOda5Lksf8CicshGJqSiqgpvdx2zVNX9cjKNpqzEvZrNKPLKDt
+eFzohPqrM7n2g+nKgAbwWLa9zELCRG8h1qfbLOXOjrgVgy/g8t5ixWOrRBrbY5nQ
+Cv7eeKEetH8ru3ZMNtOgeWzOup0Q1QIDAQABo4GnMIGkMB0GA1UdDgQWBBS4iVvg
+Pwj7rvZGFREEB72zhy5ioDB1BgNVHSMEbjBsgBS4iVvgPwj7rvZGFREEB72zhy5i
+oKFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNV
+BAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJALUtT8qFaG3MMAwGA1UdEwQF
+MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAEvl4kjYGYjCiUyRjWm6pm18riNHWPd3
+u9RImngeZTj1E0eojD+8ZxI4jUBMHrgFURbcp1jvnZnBBYQfNpq4vM2f88YtEBvA
+oEt09Tj24uGHMIDihY1pnmFnSA9d22Qpca0AwpFj2LRlu4CcdPA/zE/+YBAiTnjW
+Z9pkLggI4w0j35eUgSBUQHdrZKQ7w6iALp37pDBjHVB5tIaRczJhh5DyULWZueEV
+aqtvYyp3uH8BljRXiT2mw5tjITJnb5VsE/fhM6y3V+oIGooTjUGMiUUnn9TAQDli
+FVFopNQfX1TfOaATx9lmnrdr/YzALz2bgjg45Q/IBQ+Q7SvG8YTU03Y=
 -----END CERTIFICATE-----
diff --git a/tests/testkeys/key_rsa2048.keyb b/tests/testkeys/key_rsa2048.keyb
index c827521..5b9d5d7 100644
--- a/tests/testkeys/key_rsa2048.keyb
+++ b/tests/testkeys/key_rsa2048.keyb
Binary files differ
diff --git a/tests/testkeys/key_rsa2048.pem b/tests/testkeys/key_rsa2048.pem
index 4eb38f0..4af56c6 100644
--- a/tests/testkeys/key_rsa2048.pem
+++ b/tests/testkeys/key_rsa2048.pem
@@ -1,27 +1,27 @@
 -----BEGIN RSA PRIVATE KEY-----
-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
+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
 -----END RSA PRIVATE KEY-----
diff --git a/tests/testkeys/key_rsa2048.sha1.vbprivk b/tests/testkeys/key_rsa2048.sha1.vbprivk
new file mode 100644
index 0000000..fe625b1
--- /dev/null
+++ b/tests/testkeys/key_rsa2048.sha1.vbprivk
Binary files differ
diff --git a/tests/testkeys/key_rsa2048.sha1.vbpubk b/tests/testkeys/key_rsa2048.sha1.vbpubk
index 59adea1..b8d5b4c 100644
--- a/tests/testkeys/key_rsa2048.sha1.vbpubk
+++ b/tests/testkeys/key_rsa2048.sha1.vbpubk
Binary files differ
diff --git a/tests/testkeys/key_rsa2048.sha256.vbprivk b/tests/testkeys/key_rsa2048.sha256.vbprivk
new file mode 100644
index 0000000..da6b881
--- /dev/null
+++ b/tests/testkeys/key_rsa2048.sha256.vbprivk
Binary files differ
diff --git a/tests/testkeys/key_rsa2048.sha256.vbpubk b/tests/testkeys/key_rsa2048.sha256.vbpubk
index fffd386..bd53ba1 100644
--- a/tests/testkeys/key_rsa2048.sha256.vbpubk
+++ b/tests/testkeys/key_rsa2048.sha256.vbpubk
Binary files differ
diff --git a/tests/testkeys/key_rsa2048.sha512.vbprivk b/tests/testkeys/key_rsa2048.sha512.vbprivk
new file mode 100644
index 0000000..a6ba819
--- /dev/null
+++ b/tests/testkeys/key_rsa2048.sha512.vbprivk
Binary files differ
diff --git a/tests/testkeys/key_rsa2048.sha512.vbpubk b/tests/testkeys/key_rsa2048.sha512.vbpubk
index 467f75b..d9b1054 100644
--- a/tests/testkeys/key_rsa2048.sha512.vbpubk
+++ b/tests/testkeys/key_rsa2048.sha512.vbpubk
Binary files differ
diff --git a/tests/testkeys/key_rsa4096.crt b/tests/testkeys/key_rsa4096.crt
index bfb2bb4..383216a 100644
--- a/tests/testkeys/key_rsa4096.crt
+++ b/tests/testkeys/key_rsa4096.crt
@@ -1,33 +1,33 @@
 -----BEGIN CERTIFICATE-----
-MIIFtTCCA52gAwIBAgIJAMwkXinu1XFWMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
+MIIFtTCCA52gAwIBAgIJANitnQKymb5VMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
 BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX
-aWRnaXRzIFB0eSBMdGQwHhcNMTAwMjExMDMwMjUzWhcNMTAwMzEzMDMwMjUzWjBF
+aWRnaXRzIFB0eSBMdGQwHhcNMTAwOTI5MTgxNjM4WhcNMTAxMDI5MTgxNjM4WjBF
 MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50
 ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
-CgKCAgEA5F5tKO9hlMO+0HkwVwG2ZPOuIdRN0rVGSJDLpugqACs6Gg447XZ3OW3j
-nXfsoqoZPUzDWXE5yLbarvYaNUxJANxn5LfBa2/AtcDQOctlNFZnsYCTXnCtIHWu
-rrWSsGmXUZM3bvq//4WMoHUWOBcveE+qyetc9tRmSnq2oAeXe1SUtAqQzE6jjYNo
-k5W7EP1rIHIfTwAvNOwyVu4IvMpfuectkzPe6pxt2n/XxNzBwETSzwhFsFK7ZFns
-tGmJeVDNnpQ06/v5TNaUsFmwkpQQtDOJPRQs79DmahvtQeRbmpMQX/WJaqw9QKBx
-rSskVi6DlKKjmaD3P95Ol8AD5gbfrXjpEp9fpnHEGRQCHLv26Kb1a723JoXEYa2A
-URr4RXiiXGfAbyTGvGikyNbhkiN2Fcgfy32V5wy3xhHI7cY3ro1F/OHBwQaZlBpo
-TZIhWPV3Cs7DtnemP2Op4WQN+WWqvQ0WMRrylqtZi7dyDf3Wh0GJqcHM23/sT+Ub
-UoK4gEVE96VnDKrF6O3dTO/ZwiX1Jn6/cSBhAAcNfMqR60PjDnSdgoI9X46vn/j4
-JnOvm6lSRFReZkqgNOdOwXHK2xpTTWzpQTP4qr2nt9rp1kjbGYIq5NHK6219pDjy
-3i3P3xVtHbQ/+Fx0Dm1AqrVfstrKYRRILOd2pBwwpl2oWMzS+50CAwEAAaOBpzCB
-pDAdBgNVHQ4EFgQU8rddw9s4hrjUMfYhWIfStM3HXj0wdQYDVR0jBG4wbIAU8rdd
-w9s4hrjUMfYhWIfStM3HXj2hSaRHMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpT
-b21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGSCCQDM
-JF4p7tVxVjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQDH0II+f6Yv
-ntU1nYSSf4LKCOPTJTkekMWv5ut/JhX6efyR/rBIoYdWtzjiOnZtt9AMlttfs9o0
-PsUup27oejuWm8hxiUHpUIgRI93QJQBue3ZlJVbi2MyN2PNUjD7k+3aZNJKgu1VG
-MPbQt9ynQLCIjoYeuQAw3vkWSr2LAa+rp6PZK0qoAODQVrLfEME81CFMuF1asI/f
-cvIRcXsuf/5iIgkfvvyKBdnPz1JYJ+laAeINviEz89uqwPlw20+82bQif5+DuzFc
-waxT8b4qT5vDn9Zt0RQHCJxSh5IFHDBcUfEjcu6+2fF08gLyfYrbAcoIAR7JjsbA
-4B61+MCv+GEDhqJGtszo8yGvq2XmKLHm3AirQ3GWKuJ8dCFTpk+Mcaqjp5KmQPM/
-o+F7cc/txe1CcbN/JOJ4NmBxScBvuc/EpWx/P9rplW2uwagrbtbIkml9LGq9JqBs
-TjsS1kYv8Gmr79NnUn5RKNg2InBNwHzWwNkBeTwWJMRzADxJcYyPVmwJ6Wn/afjI
-3H+FIhZdLQmtLLNjDvUulb5ROB6B3DzXxFVWT8bvH6WfcOrH24ppkpoR4Ydz2Tku
-f3EXXC63wOy81HviyTZba9K2w94oDYK2BdYK/MNqfhJtl31tldc9McxC3kp3GMWY
-1OfSZUzg/HOnYnW0IKZwTzuE+gFRl/FsYg==
+CgKCAgEAm5v71oqFynujT4FVq5lKaYxpmKfXdeBNKDmLzgu7fXLUKaEqTGEDsseE
+5qyaaP+dmTnQKfne7G31zgf46//YEl+u5Gt/S4oAgYyvs3rjymzD5kVOLEAzgrIX
+AwyhDFARRzAFWos43hypunHGvu4fDBAzZ3zGVulhjgAzD/gNjToVYCP7bj6kTaDx
+1u9siCKdYN09vGwSUt9WuV+yort7kns/B8ArVxt3bFSjsAxuWel/dJyLwCMQ9XAx
+dgWpg3RBUsK/KgekQybPLrhLYJn1AeOApwzJ4HoJSqU/1jCEaGrKA/KtCRXiurZz
+6lBi7sElsigjBvEZH0iCmmRgH3Oi/cbpHIs1C6YHvCCbO90ntwgtDf0+2WJtFtbG
+t5Do3CXri0tcsXBWqISSK3VzzjHH691BVwLuoBvF1XICMEjmq9aJ+MdbEe4E+GU8
+TV9NnRnuYyOUoxeisyXiArUUI9+1qL6pIgulTlY2Ch51QZY5n2aYY97PtosNotbS
+ylMrLvWXGiiQWxux12eOnB3c/3wNYWey8Km4cmOhEOYz7hLz2r1uIoC/SzM5wLnn
+TEQmaiUDNV9R3Gj3E3xkpTq3UNSSPsV7k8lInMtWqzps6aTvBw1k6i6CUvWbEZqm
+t/0bimQHOEdg3OrJjQpwTKSp4ouSyVu0IphDwy1yjKCfNWKRzrUCAwEAAaOBpzCB
+pDAdBgNVHQ4EFgQUyBKBgFg+vONV1sbup7QtFa7DR78wdQYDVR0jBG4wbIAUyBKB
+gFg+vONV1sbup7QtFa7DR7+hSaRHMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpT
+b21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGSCCQDY
+rZ0Cspm+VTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQA0wtlLEAKR
+ctB41x/V10SMFIg5eLbDrUKQQT33BddrhFu0blc7U5jgXjqTYS80xIlOC0hXtN7D
+Z478st3NAxjtvBKxNMWB9Ppz6+15UENnXNGLElhRPaeAbxBs7zVB64b8fY69EJRe
+JOJNp6+c4WJsHWzxrmfHD0Wx18pJ877ThRi/ZH0QP2TjPc0gZT4szP1taoOJ7SXy
+gO10WfPoF1GgI/VXhPLnk2zXpTlFdp+qyKOtDFxOOK/cVKdXAxDDDO9DAw6cvrEn
+mPS2Zml9HI25/CrE00y+k4w7bqzNeGNzhSGPBvq5Yqnefc1dJSdDQZ3XLG9Fis4a
+nVfuSTvP1MUrFEGEvuxRcA0rWPwQtYSHHs8ZnpT6eayTPcpDvWSihe4xUywirXTT
+kbWgeABGQGaoAnFJYhjqBROGdVb4V3vbsjbCi8k2r4IIcqOzp6OIJxha2LvkZ+iu
+f+OlMVAO/C1LbRsVQkfJp7NxEt6PVewQV5Kgnwlf+x7Q2tUfZfdpLd/EMtojv3BD
+Ewx5X2yHGXcYZG/C1kNzyGTfg97/+55mtNlkTmo8elcPxlpnEuMXEv4JthnRy90x
+ZLflcR9q0pOiV+n//KyQvfjH99JmRtVJGG8xlDEtRbJWjFQD/uSEBxeS0T6INrza
+0WTaiIOZB1vMPe6CDYDWDzrFdQrD6HoWDQ==
 -----END CERTIFICATE-----
diff --git a/tests/testkeys/key_rsa4096.keyb b/tests/testkeys/key_rsa4096.keyb
index 7409d12..515aaa9 100644
--- a/tests/testkeys/key_rsa4096.keyb
+++ b/tests/testkeys/key_rsa4096.keyb
Binary files differ
diff --git a/tests/testkeys/key_rsa4096.pem b/tests/testkeys/key_rsa4096.pem
index b40e672..204b440 100644
--- a/tests/testkeys/key_rsa4096.pem
+++ b/tests/testkeys/key_rsa4096.pem
@@ -1,51 +1,51 @@
 -----BEGIN RSA PRIVATE KEY-----
-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
+MIIJKQIBAAKCAgEAm5v71oqFynujT4FVq5lKaYxpmKfXdeBNKDmLzgu7fXLUKaEq
+TGEDsseE5qyaaP+dmTnQKfne7G31zgf46//YEl+u5Gt/S4oAgYyvs3rjymzD5kVO
+LEAzgrIXAwyhDFARRzAFWos43hypunHGvu4fDBAzZ3zGVulhjgAzD/gNjToVYCP7
+bj6kTaDx1u9siCKdYN09vGwSUt9WuV+yort7kns/B8ArVxt3bFSjsAxuWel/dJyL
+wCMQ9XAxdgWpg3RBUsK/KgekQybPLrhLYJn1AeOApwzJ4HoJSqU/1jCEaGrKA/Kt
+CRXiurZz6lBi7sElsigjBvEZH0iCmmRgH3Oi/cbpHIs1C6YHvCCbO90ntwgtDf0+
+2WJtFtbGt5Do3CXri0tcsXBWqISSK3VzzjHH691BVwLuoBvF1XICMEjmq9aJ+Mdb
+Ee4E+GU8TV9NnRnuYyOUoxeisyXiArUUI9+1qL6pIgulTlY2Ch51QZY5n2aYY97P
+tosNotbSylMrLvWXGiiQWxux12eOnB3c/3wNYWey8Km4cmOhEOYz7hLz2r1uIoC/
+SzM5wLnnTEQmaiUDNV9R3Gj3E3xkpTq3UNSSPsV7k8lInMtWqzps6aTvBw1k6i6C
+UvWbEZqmt/0bimQHOEdg3OrJjQpwTKSp4ouSyVu0IphDwy1yjKCfNWKRzrUCAwEA
+AQKCAgEAlbfvBu0g7UEoUEbQdtp2jjdbIlXbKL83fYxgx07ihkEFgUhfuj1doZX2
+eTt5Fa1bpSHK95hCtJjX9/QTvH3dF1CYpY4IXFXbRspmAvoqUYl0swnbvRfId+eB
+3J06Fu6ysRuzCvsJLCvH4mu2Hd5eYOz1iIy1CMpj4oyulJ7F6ywHhQkZ0WjUDRzd
+kz+p3RHw+lHkJHaW6sWYW6OH7KsWqkmKy5pKGPWEYebN14UeZ8QRrdExZRxYJM5d
+yICKKMCiWU6nP3k6wqGElh8b50Y6RibukcvsMN86MWftk9f6jbyxwjqr4iH8lEkY
+HkpZ5f5QlqmnifZPhZnujz4kfh50oteC2QPQ0hrNYCDG75wuiNX/vINVfrKG0ddg
+iQDFqyQyQirxCGQgy7Wto08KAzKt146ST28N+kdF/kY14ou5f5+GlWQJcnqdHd2p
+R25MueXUsY3I63dULR6k02Y6M7Tzo39lYe0LV82+G0A3iGpI+eM7xw/sQDNb2sQs
+jCcz7XPrfTomrVJaW1FkM8vM6eWhuhAyDFP+unz0aMnKrkUrarh4t9QpriiCjm3E
+HV2Hc7t/Do/w+B3rywKy3PE2yO49eGz20um0JqWcAbGDZY2vDnyV+/xibxqaIZUo
+saI/btlyvCv00812momkX/qWwS+1GHvyYYcpIg0XQbZY1TvEi8ECggEBAM6LTfVu
+MKNwW/QdZ6pxKl/Oy8zlb1o8HET5hKCdhoMvpwlvpO2qSvlCxH3VZTmcXIXd+Mkd
+e4OZrzeMLVxMd64xP10k2ui/O2/8G38xmpMGqZihc+LnY6JgajujfAQHljOgrAJL
+xzO2Gk4oWX72oA6jqP8LZkRp/9acTWqBTKs6MOdrfn6I3k0urBB29+jcbqFAfgMx
+hfcTKAOHYmg/SeEZDvKP6fRDJGMGXqJ4TaBXjsnhNGCjGmuCqJhxxIGCI/AVK10B
+CjEboo9vACzNE1/JMxH8aT5up7e+7R/WoiJ5e3jlvSKmcO7KiR27JVsAlZeIddKd
+LzG9KKZ8Yla0U3MCggEBAMDefKVTqSPaG7cmAQGtXrbBDLdCWIaT08v+kMw/drlq
+NqLD+1ct098iFwRtKaYPERPKqNtxfJdkUMqWELBWV2Sq4Fi+JVXjGOUctP7Atd2x
+6NJ9xHqQKQwKUv0/9jN5Oie9sFvsLwPAJNOJej1BrmvPZvc0CoMyOjkmxEhYu3qG
+i26ZTSZSCTrbE8eAL0EJdH0gB7Ryuks8O+jEF7eXuZLZyN3AromISJtmLVlMFZ7m
++0sQnZQqwNF+BIrOgO+3R61jjNzCJbFo7frvRIlDSnrbmWp6sYns1cjhZiKCnO78
+RgDiaJcuceqsalgBZi8/Fmam2IPeqhvTNg+5alCuWzcCggEAXFjglFmeGZVFJ9J1
+5TkPzyJw8L2smdXCdfxyFjYYTFNkBc4LGdBIEUaPAAwHZEjK/XePoqwx61cthlKA
+fYIbCKEwSX8O+X13H8zCpo4RJKeX8IxPeiYm4BTnqp6f9lVGDPNLtQMYn8BN5qAX
+07KFQcZe6xm3seMK5nOgEXyaQPyVnQLs3bpoWm4BtKLcmRrlw+dH8DmWQjAoddt0
+XlPdvm0rx7wcyH+0pynT6iSL4KMFTrIIbyS9zU/v/ajwSU9crh1o8/5hBi/q8OKa
+W22dufgFg4ctryJejsMo1lFq0KssT5O4iuOMHtgjkk14mEWcnNIAjBiHX1/J6xY2
+Cbo6jQKCAQBtvmt4e1kz8Ehy92n9NVQ+cyy0HklXEkiiu9BSmA4LRPefuBqNKaN0
+ROaJ+z+GoO4br+ZTL4kwb8FU9Py8CfUib+TGOjPuYhFpVONcTfVuF2yeUTf6cYsZ
+sco1Fi8WbPV9ZX8zXvoFjVCnGYP31SbVa6dwJCmTK4JbwMZRUEQlXOd74Dk5A9cC
+qWPg0fyRajrhc9dOgzWj17tTIDlKm0fZ2phkLd5inayK2CIXvKZUy6PTu7medJFQ
+4v7cqNJPFJ/xdkLR3psqDsXTUlBSNnrr24a5QuVA0QV4j2DZZC6+Acgneqz+0Uu6
+t66vMuSdH620bV2n84wh1xXc7qkjDYMTAoIBAQC6DsTyBGNNI0/DGwAsae5Zri8w
+T/SOER7Tc/PCgQyFUNsJJc/OmSy66PPiH2HzqLjl6/jeiJP++oCnfO6pNTq1Fjz4
+Le2iS1szlcuJ9QLdtn2LTqORzdQVpka42X+o+NqJEdzkZb/N6eBA4PPQdTxHIiu1
+WGBpDc5vGkpuzLm9SVCw/4SD84z+Nhs0pqOvwWhmQWCtl28fgqU4LMeOX1Wz5P8E
+IledlgbCZh2KwXuv3BJdkawuwrSPsahnZmoJapx2dE+FkNl4equaBwImfLf5Qifj
+IhIN5GueO9k/D2/7/XvW2qJ3Vy0z0xMMNiTVYufVpbh77Kn2ebKfROlkzMEU
 -----END RSA PRIVATE KEY-----
diff --git a/tests/testkeys/key_rsa4096.sha1.vbprivk b/tests/testkeys/key_rsa4096.sha1.vbprivk
new file mode 100644
index 0000000..777b4db
--- /dev/null
+++ b/tests/testkeys/key_rsa4096.sha1.vbprivk
Binary files differ
diff --git a/tests/testkeys/key_rsa4096.sha1.vbpubk b/tests/testkeys/key_rsa4096.sha1.vbpubk
index 9a58420..ba8ac08 100644
--- a/tests/testkeys/key_rsa4096.sha1.vbpubk
+++ b/tests/testkeys/key_rsa4096.sha1.vbpubk
Binary files differ
diff --git a/tests/testkeys/key_rsa4096.sha256.vbprivk b/tests/testkeys/key_rsa4096.sha256.vbprivk
new file mode 100644
index 0000000..7a08864
--- /dev/null
+++ b/tests/testkeys/key_rsa4096.sha256.vbprivk
Binary files differ
diff --git a/tests/testkeys/key_rsa4096.sha256.vbpubk b/tests/testkeys/key_rsa4096.sha256.vbpubk
index e78ea9b..72f808a 100644
--- a/tests/testkeys/key_rsa4096.sha256.vbpubk
+++ b/tests/testkeys/key_rsa4096.sha256.vbpubk
Binary files differ
diff --git a/tests/testkeys/key_rsa4096.sha512.vbprivk b/tests/testkeys/key_rsa4096.sha512.vbprivk
new file mode 100644
index 0000000..72e4c37
--- /dev/null
+++ b/tests/testkeys/key_rsa4096.sha512.vbprivk
Binary files differ
diff --git a/tests/testkeys/key_rsa4096.sha512.vbpubk b/tests/testkeys/key_rsa4096.sha512.vbpubk
index a2c9cc9..53266fb 100644
--- a/tests/testkeys/key_rsa4096.sha512.vbpubk
+++ b/tests/testkeys/key_rsa4096.sha512.vbpubk
Binary files differ
diff --git a/tests/testkeys/key_rsa8192.crt b/tests/testkeys/key_rsa8192.crt
index 0868d7d..dd78f80 100644
--- a/tests/testkeys/key_rsa8192.crt
+++ b/tests/testkeys/key_rsa8192.crt
@@ -1,54 +1,54 @@
 -----BEGIN CERTIFICATE-----
-MIIJtTCCBZ2gAwIBAgIJAIdfZ/EQADLpMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
+MIIJtTCCBZ2gAwIBAgIJAJoPFdjzTxDHMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV
 BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX
-aWRnaXRzIFB0eSBMdGQwHhcNMTAwMjExMDMwMzIwWhcNMTAwMzEzMDMwMzIwWjBF
+aWRnaXRzIFB0eSBMdGQwHhcNMTAwOTI5MTgxNzE0WhcNMTAxMDI5MTgxNzE0WjBF
 MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50
 ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIEIjANBgkqhkiG9w0BAQEFAAOCBA8AMIIE
-CgKCBAEAxY9lHnCDLpoA52do1tGko85+9Itt1jzzaQOMCKdWbooJ0DQ6y+wwj+GB
-G4gMgNYY2UjnGl0kB0OeaNw2LFWETJJQjA3wSyQ3xDuk5K8iAXodbcSPQQu2RszT
-LTn5R06XqAc5fNuz6qN3IeRUaIg0icP9lIT38YxpSUun6dphNtpj+JJI6aaHP0lP
-eq1xWS/qnSQOe8MidPZOhxzgD0EClzv/rwjpaxeA/01hTA6t/6wuG91svTZ9IhUi
-5D53ALLpBqrFAZl/uso++75vpsOFwTMJAt0qAZvF5jZGwGOtyDzD73m4PAwRM42e
-Nkd+QUSIILBOvENyP9RcwLuRMh5OUc5AohA3/1BHoD+UhnC+Azuey4FEl5Sdq0tB
-JszxhT3pzrniX4tGIlb1KVImq+1U3wEWYqSWNJNhuudECL9QjnBwEGrBLqkJGIXe
-zIIjpk3pcYzHgqNJiuWEpZaKMeloKxTJzPL1RRVcuJ+S6DUjxbs6yCKvzcGsr9Ca
-ogK8qGdVaiWOux53GSVjmwIacG/L6nI9L3Pr8s8MCD9biuYsT55VFW7anlPWkZh6
-NXKImRCEWs9imuxhEi8B/aXx5J/LP/BxZHXFABVYtrfYAdWlyrVTjs7LkYU1G+Tw
-z/bOT5eVmnA0IO+N3jCdvYMD5C8H0sVTe3x8xOTf4Gt2nkO41HLZtRZEk7BbcqGI
-6bimujdb5ffQYWeKEeFZELOUIUqNz+Wqps1SrTHUE8MTiEXOROr8GRQgtmml26Hv
-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
+CgKCBAEA19BF/7el6ZXitFI71Glw4/bjNiOWxRLO+zU2IKIJZYjatWWBOcB7pfnQ
+QtoF6gtItnBT0/6NaCzucKd+TFb8Bz7pxK/ljSSJAFSOSf91b25mTcc4ohLkIvET
+X5g++jlaRuKDX5mnxUgEHUtMGvu5xMOSQi7UNM9Yxx26yRkIKaPNk2C5IeoXvKh9
+Xa4NS5hJSJnm3bG3oURAtugFS9ahAAoM0+e21FrlAxCUiVzF/BJip7xN3COjo8no
+Dda3RMDz12Udrwgrme+4xu0FOx1xLGOIOgLzbP9HG56uGOMv58ExIem2YgTsMgHI
+bzqqnpymcnBes6DHhnRRK0jplIxFpjqZqzSizYXUIY7vauiYXiZZnr5fpbrT+Y2b
+4Vza1PlPm68GkOgu39Cq4c+tjJJ3R/db9k+DWFfqfOLN4qqOO3szwnTtWQomj/4M
+cZdpmapY5Fnofu01Rw9cg+V1OO/Dj1Q1BF7CqKmCEBICKT5Mk/oaTwZS4bWcgIJj
+PdBn9Im/bAulc9eGNg6Fo1Y+iVCjDgLbQ+9SmFj6/JKlJRlAn21FburA+RaSirwF
+1IZ8eqMgUY6/Viu4eJNwbvWkeyaz02Ss7hs6VRDhUSzJbg4OMIE4qjxNJcbuyAIb
+tQs39PtH/iIY/2kPaNFjKU+ah4CI3kVIlgb/kgfqnUSQS4AHIubsZVpszUVE2A38
+R22OEGUenCLsljjWkv3snosY8gyJs9YumTGk2K/OiIAf0X8kXsv5Isq2ky+3T7PJ
+YqQ67WjENCxEOi7AkDlJls7omAhT8umGJPfF3R9izWYy5UJ4pNL2Cs8wv1vQcf9n
+DS5cpgqa6/w9sRo1bJjRlopi53Ph6D+7CicoQP5M0tH2p3dD8qP6RZNqtWP0eOZ0
+el0DMFh5hjYXHDnxZaEL5fcpVX8FdrDltgFbUUYRDlJDr0j6/TXOdnAwyc6scAbw
+cWm9dKwJJQogRxXuvh11Yt8j8U3tX95isL1QUIube3o8I7vXiMFRVRUg5NVM6sTg
+VsXRpybTecRsmDD76RerJEhi5vwfmJz5qzLTSH9JgCY9EuI38WzmeGZ6F8kfRHEs
+9Gh5/XvOB7UsqZXaU5NTT5LBiiFXIZoYFxnFpLl/crGc7oCP7JwsY0hW5CgK0829
+tY3aWLpY+a34Z2/wtc6dgKKA40Lj7y3pKwwMFaPo+widtjVkCk3n9Rq0X6ubHi+u
+ml42NYBRgvfoaZ4FbCTpRWV6kcGpM76O3bqV63iS9wdOFK4IO0zrJ/QI73yHz9LU
+61BmQGVTze2+tSifYFersjvmoJrgx703iljO9Xi1NfwoQpv0XwrdIgfHOSD1S3d1
+Id/R2tOBF7meHmCfki18KHOzk/2uJQIDAQABo4GnMIGkMB0GA1UdDgQWBBRE8ddB
+ODN/lDZfHqrUdMEuCS0mMTB1BgNVHSMEbjBsgBRE8ddBODN/lDZfHqrUdMEuCS0m
+MaFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNV
+BAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAJoPFdjzTxDHMAwGA1UdEwQF
+MAMBAf8wDQYJKoZIhvcNAQEFBQADggQBAJS8VZtCKTjVbg1FM8I5agjh7V/PxZ27
+foaU/LXDb/fK+xyumAxW+YpqMpd3tRLwYe50yOZJTydkNmQ5zvykhpYVnsvRYHhT
+MtIc4lXDMnC79UY5kWgyvXxbq5psEd2HYVkpn6DhEyogqEIDdFpevQHGBP5lZ/55
+pOnerERJf4vXOs7tanHEavr1hMwCpG+GpvGrKLA7cm8p0C5OWR0IPk3Eee0Cq4AC
+Jb5U6ZyVV7m8Tf6nrBZrzJLYiwVg7Pc03zfjut+mlc7s9ZazN5czMZwBsuVfbCe3
+vYT405tibumUjq0NqvKS/9IRpwiD/GRpl2NCfChAAiIpcLwrlde0gzzF21DkroS/
+RCJGpDzwL2eOVPoC12jwsCX9tBxsPMEjbpd2mYA+dliv4DCdYFnHGQ6g5lPJcpU0
+qQsU1a7FtkD/MvwzKQnm0HoEszMUAStyj3d9yajnaTZJTQknEuhD+sLyacdzJHGX
+LXpBhKpB1+kQvSjiGPTdm8N/6F9hxDHGwsYaAlWwXGkD0vvYPQuRR4VcquNOX1dI
+CGTMFhMHV3J3iUThQeefs1i2hdCcE8vwYwlI7UMDCy+anSfCNocdXaenB0n7lTZO
+4iRsIpxryvoaMb+cCfs2xsLDB5RDM1bqBCzADhAd2f03fUib+ZTlw5NtPeJsla9s
+1DJam8zmjd+yKEyB3Nkc28rUN+x+qFbV7RSOs78dT2GZzvz50rm/j5KR5VhJl4O/
+7yH63U4t41HMFoT6kTeroSGdh/hE1qkUrpjgc6ZLVIgZnzTuvS0tzuaZKwgjgWJ0
+yeMks3jjyqaSl4dRKzh5NDMMaFxFV3R06p856lBNK4Rb+QbdDb8Yy84cbeEOlFPU
+0qHgspOxysdScM68NY0QHyptWCK1EPCPJYCNYh/l9ARS2hdN18P7rINiOetpr9Rt
+FLwTIRKpcDhptYl0Elknu96fVHJkuhAaft+83cl+P+HDrEzuunx+Pbhl24GgIQS1
+9GyYI51DfCh2icDPrQUhS74l6V4JQEwr4S3ZEFu86FbEEz/1w3R/SrxofjP4+MDx
+Qyw6gXO3jFQ605LqY1XQIxXi17LVUUKFWd5yUoJngy0u7SGqke+CWCcrFBsh0HYs
+hzbAtlkK5b3kMuaSfT5F9AlxUZgD6T9iN2dhQTHf78l7aK2L9mWCdrQZYB2YmLaA
+VH33h5tIDXVihHFANHJbUNcQsMGFdsTqGJVAH62G+DlCgnlGdjS6nsgnAbpcGESh
+5gdjvGLtYBZr5dY7O/evAEvpYqn8H0IzojlvyZAHyWxa421hnMPlTRu9w3yXuqy0
+gocynXX2+wJIENfXQxWUqKYegYNr2vMJriIsbB3evbrHuaofmunBpe8=
 -----END CERTIFICATE-----
diff --git a/tests/testkeys/key_rsa8192.keyb b/tests/testkeys/key_rsa8192.keyb
index f88dbcc..dad394e 100644
--- a/tests/testkeys/key_rsa8192.keyb
+++ b/tests/testkeys/key_rsa8192.keyb
Binary files differ
diff --git a/tests/testkeys/key_rsa8192.pem b/tests/testkeys/key_rsa8192.pem
index c4a0378..759194a 100644
--- a/tests/testkeys/key_rsa8192.pem
+++ b/tests/testkeys/key_rsa8192.pem
@@ -1,99 +1,99 @@
 -----BEGIN RSA PRIVATE KEY-----
-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
+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
 -----END RSA PRIVATE KEY-----
diff --git a/tests/testkeys/key_rsa8192.sha1.vbprivk b/tests/testkeys/key_rsa8192.sha1.vbprivk
new file mode 100644
index 0000000..9fcf643
--- /dev/null
+++ b/tests/testkeys/key_rsa8192.sha1.vbprivk
Binary files differ
diff --git a/tests/testkeys/key_rsa8192.sha1.vbpubk b/tests/testkeys/key_rsa8192.sha1.vbpubk
index 497fe42..2cc4e45 100644
--- a/tests/testkeys/key_rsa8192.sha1.vbpubk
+++ b/tests/testkeys/key_rsa8192.sha1.vbpubk
Binary files differ
diff --git a/tests/testkeys/key_rsa8192.sha256.vbprivk b/tests/testkeys/key_rsa8192.sha256.vbprivk
new file mode 100644
index 0000000..64a4f61
--- /dev/null
+++ b/tests/testkeys/key_rsa8192.sha256.vbprivk
Binary files differ
diff --git a/tests/testkeys/key_rsa8192.sha256.vbpubk b/tests/testkeys/key_rsa8192.sha256.vbpubk
index 961ff7c..c826698 100644
--- a/tests/testkeys/key_rsa8192.sha256.vbpubk
+++ b/tests/testkeys/key_rsa8192.sha256.vbpubk
Binary files differ
diff --git a/tests/testkeys/key_rsa8192.sha512.vbprivk b/tests/testkeys/key_rsa8192.sha512.vbprivk
new file mode 100644
index 0000000..bb8725f
--- /dev/null
+++ b/tests/testkeys/key_rsa8192.sha512.vbprivk
Binary files differ
diff --git a/tests/testkeys/key_rsa8192.sha512.vbpubk b/tests/testkeys/key_rsa8192.sha512.vbpubk
index e698a02..c399a66 100644
--- a/tests/testkeys/key_rsa8192.sha512.vbpubk
+++ b/tests/testkeys/key_rsa8192.sha512.vbpubk
Binary files differ