Commit 315d93f3 authored by Niels Möller's avatar Niels Möller
Browse files

Don't use m4 to generate test programs. Added C files to CVS,

deleted m4 files.

Rev: src/testsuite/aes-test.m4:1.3(DEAD)
Rev: src/testsuite/arcfour-test.m4:1.2(DEAD)
Rev: src/testsuite/blowfish-test.m4:1.2(DEAD)
Rev: src/testsuite/cast128-test.m4:1.2(DEAD)
Rev: src/testsuite/des-test.m4:1.4(DEAD)
Rev: src/testsuite/dsa-test.m4:1.2(DEAD)
Rev: src/testsuite/macros.m4:1.13(DEAD)
Rev: src/testsuite/md5-test.m4:1.2(DEAD)
Rev: src/testsuite/rijndael-test.m4:1.3(DEAD)
Rev: src/testsuite/rsa-test.m4:1.3(DEAD)
Rev: src/testsuite/serpent-test.m4:1.4(DEAD)
Rev: src/testsuite/sha1-test.m4:1.2(DEAD)
Rev: src/testsuite/spki-tag-test.m4:1.2(DEAD)
Rev: src/testsuite/string-test.m4:1.2(DEAD)
Rev: src/testsuite/twofish-test.m4:1.4(DEAD)
parent 0039e5ca
/* From draft NIST spec on AES modes. */
TS_TEST_CRYPTO(aes-256 cbc 1, &crypto_aes256_cbc_algorithm,
603deb1015ca71be2b73aef0857d7781
1f352c073b6108d72d9810a30914dff4,
6bc1bee22e409f96e93d7e117393172a
ae2d8a571e03ac9c9eb76fac45af8e51
30c81c46a35ce411e5fbc1191a0a52ef
f69f2445df4f9b17ad2b417be66c3710,
f58c4c04d6e5f1ba779eabfb5f7bfbd6
9cfc4e967edb808d679f777bc6702c7d
39f23369a9d9bacfa530e26304231461
b2eb05e2c39be9fcda6c19078c6a9d1b,
000102030405060708090a0b0c0d0e0f, )
/*
F.2.5 CBC-AES256-Encrypt
Key 603deb1015ca71be2b73aef0857d7781
1f352c073b6108d72d9810a30914dff4
IV 000102030405060708090a0b0c0d0e0f
Block #1
Plaintext 6bc1bee22e409f96e93d7e117393172a
Input Block 6bc0bce12a459991e134741a7f9e1925
Output Block f58c4c04d6e5f1ba779eabfb5f7bfbd6
Ciphertext f58c4c04d6e5f1ba779eabfb5f7bfbd6
Block #2
Plaintext ae2d8a571e03ac9c9eb76fac45af8e51
Input Block 5ba1c653c8e65d26e929c4571ad47587
Output Block 9cfc4e967edb808d679f777bc6702c7d
Ciphertext 9cfc4e967edb808d679f777bc6702c7d
Block #3
Plaintext 30c81c46a35ce411e5fbc1191a0a52ef
Input Block ac3452d0dd87649c8264b662dc7a7e92
Output Block 39f23369a9d9bacfa530e26304231461
Ciphertext 39f23369a9d9bacfa530e26304231461
Block #4
Plaintext f69f2445df4f9b17ad2b417be66c3710
Input Block cf6d172c769621d8081ba318e24f2371
Output Block b2eb05e2c39be9fcda6c19078c6a9d1b
Ciphertext b2eb05e2c39be9fcda6c19078c6a9d1b
F.2.6 CBC-AES256-Decrypt
Key 603deb1015ca71be2b73aef0857d7781
1f352c073b6108d72d9810a30914dff4
IV 000102030405060708090a0b0c0d0e0f
Block #1
Ciphertext f58c4c04d6e5f1ba779eabfb5f7bfbd6
Input Block f58c4c04d6e5f1ba779eabfb5f7bfbd6
Output Block 6bc0bce12a459991e134741a7f9e1925
Plaintext 6bc1bee22e409f96e93d7e117393172a
Block #2
Ciphertext 9cfc4e967edb808d679f777bc6702c7d
Input Block 9cfc4e967edb808d679f777bc6702c7d
Output Block 5ba1c653c8e65d26e929c4571ad47587
Plaintext ae2d8a571e03ac9c9eb76fac45af8e51
Block #3
Ciphertext 39f23369a9d9bacfa530e26304231461
Input Block 39f23369a9d9bacfa530e26304231461
Output Block ac3452d0dd87649c8264b662dc7a7e92
Plaintext 30c81c46a35ce411e5fbc1191a0a52ef
Block #4
Ciphertext b2eb05e2c39be9fcda6c19078c6a9d1b
Input Block b2eb05e2c39be9fcda6c19078c6a9d1b
Output Block cf6d172c769621d8081ba318e24f2371
Plaintext f69f2445df4f9b17ad2b417be66c3710
*/
TS_TEST_CRYPTO(Arcfour, &crypto_arcfour_algorithm,
#01234567 89ABCDEF 00000000 00000000#,
#01234567 89ABCDEF#,
#69723659 1B5242B1#)
TS_TEST_CRYPTO(Blowfish-128 CBC, &crypto_blowfish_cbc_algorithm,
#0123456789ABCDEF FEDCBA9876543210#,
#0000000000000000 1111111111111111#,
#f0fb0320a19f306d ff5880191e616c10#,
#0011223344556677#)
TS_TEST_CRYPTO(CAST-128 CBC, &crypto_cast128_cbc_algorithm,
#0123456789ABCDEF FEDCBA9876543210#,
#0000000000000000 1111111111111111#,
#9a1bf354bca596ad f7b2a2ce5f09a8b2#,
#0011223344556677#)
TS_TEST_CRYPTO(»DES3 CBC«, »&crypto_des3_cbc_algorithm«,
#0123456789ABCDEF 1313131313131313 3232323232323232#,
#0011223344556677 8899AABBCCDDEEFF#,
#C4DB96109B6186B2 5F9AA359160909D9#,
#0001020304050607#)
#if 0
/* From Applied Cryptography, 2:nd edition */
TS_TEST_CRYPTO(»DES AC«, »&crypto_des_algorithm«,
#01234567 89ABCDEF#,
#01234567 89ABCDE7#,
#C9574425 6A5ED31D#)
/* From Dana How's DEScore */
TS_TEST_CRYPTO(»DES 1«, »&crypto_des_algorithm«,
#01010101 01010180#,
#00000000 00000000#,
#9CC62DF4 3B6EED74#)
TS_TEST_CRYPTO(»DES 2«, »&crypto_des_algorithm«,
#80010101 01010101#,
#00000000 00000040#,
#A380E02A 6BE54696#)
TS_TEST_CRYPTO(»DES 3«, »&crypto_des_algorithm«,
#08192A3B 4C5D6E7F#,
#00000000 00000000#,
#25DDAC3E 96176467#)
TS_TEST_CRYPTO(»DES 4«, »&crypto_des_algorithm«,
#01234567 89ABCDEF#,
"Now is t",
#3FA40E8A 984D4815#)
#endif
TS_TEST_SIGN(DSA signing,
"{KDM6ZHNhKDE6cDEyODqD2afCziqRefQ82zv/594PDu8m3V365E1TG8DeRWNN"
"LAfLkpsNvhDaWABw5qv7uEFcRL/1cLitd532U6rZfce964FdfogQPmFgbtPY"
"opX7/TQNLUniIIM+us5VEeIsTwKX7TUemUj6hI6cj623tHvMR970JVteHV4Q"
"IVs7VaC4XykoMTpxMjA6gmbg3q9GAgukjUEMpYDzqXhim10pKDE6ZzEyODow"
"00u583a+yUcVSv5Adrx9NZydMvVHHdu+jWqUHEf6ncTzJXMVHbtKpZ65ibdK"
"w2u2MQpei1gFAWVdkfOT2qGTrhMDBJuH/rsJPcBAS1O0xdokYzAPnFsVbXiM"
"Ss6Oy7ndAMGNmVN/JVrAJdB02JSmB8vjAjoSdu9VaRajP33lQykoMTp5MTI4"
"OmRAIEiyfzn0BKVGqEkJycDp4t0VOoSZRhBiiSWY0wryeuPO/CtwD7bQdzkK"
"g73K14oSmUh8liO7Yq8MhaPfnvHuLA1mZY4f0yg7VAf2zTDufmFU+tQaaosP"
"XIbFrMwRJ798ml1rrcsBIYDLYqVcXhfW01KM2+ACzO4THBuGhn96KSgxOngy"
"MDpWxu+vh40G7vIdwHD6tx2m7B4wpikp}",
"Needs some randomness.")
m4_dnl LSH testsuite driver
m4_dnl (progn (modify-syntax-entry ? "(") (modify-syntax-entry ? ")"))
m4_dnl (progn (modify-syntax-entry 187 "(") (modify-syntax-entry 170 ")"))
m4_dnl (progn (modify-syntax-entry ?{ "(}") (modify-syntax-entry ?} "){"))
m4_changequote(, )
m4_changecom(/*, */)
m4_define(TS_DEFINE, m4_defn(m4_define))
TS_DEFINE(TS_WRITE, fputs("$1", stderr);)
TS_DEFINE(TS_MESSAGE, TS_WRITE($1 ... ))
TS_DEFINE(TS_OK, TS_WRITE(ok.\n))
TS_DEFINE(TS_FAIL, { TS_WRITE(failed.\n); exit(1); })
TS_DEFINE(TS_CHECK, if ($1) TS_OK else TS_FAIL)
TS_DEFINE(TS_STRING,
m4_ifelse(m4_index($1, "), 0,
ssh_format("%lz", $1), simple_decode_hex("m4_translit($1, 0-9a-zA-Z
# , 0-9a-zA-Z)")) )
TS_DEFINE(TS_SEXP, string_to_sexp(SEXP_TRANSPORT, TS_STRING($1), 1))
m4_dnl TS_DEFINE(TS_SEXP_L, sexp_l($#, $@, -1))
m4_dnl TS_DEFINE(TS_SEXP_A, sexp_a(TS_STRING($1)))
TS_DEFINE(TS_TEST_STRING_EQ,
{
struct lsh_string *a, *b;
TS_MESSAGE($1)
a = $2;
b = $3;
if (!lsh_string_eq(a, b))
TS_FAIL
TS_OK
lsh_string_free(a);
lsh_string_free(b);
}
)
m4_dnl TS_TEST_HASH(name, algorithm, data, digest)
TS_DEFINE(TS_TEST_HASH,
TS_TEST_STRING_EQ($1, hash_string($2, TS_STRING($3), 1), TS_STRING($4)))
m4_dnl TS_TEST_HMAC(name, algorithm, key, data, digest)
TS_DEFINE(TS_TEST_HMAC,
{
struct mac_algorithm *hmac = make_hmac_algorithm($2);
struct lsh_string *key = TS_STRING($3);
TS_TEST_STRING_EQ($1, mac_string(hmac, key, 1,
TS_STRING($4), 1),
TS_STRING($5));
}
)
m4_dnl TS_TEST_CRYPTO(name, algorithm, key, clear, cipher [, iv])
TS_DEFINE(TS_TEST_CRYPTO,
{
struct crypto_instance *c;
struct crypto_algorithm *algorithm = $2;
struct lsh_string *key = TS_STRING($3);
struct lsh_string *plain = TS_STRING($4);
struct lsh_string *cipher = TS_STRING($5);
m4_ifelse($6,,
UINT8 *iv = NULL;
assert(!algorithm->iv_size);
,
struct lsh_string *ivs = TS_STRING($6);
UINT8 *iv = ivs->data;
assert(ivs->length == algorithm->iv_size);
)
assert(key->length == algorithm->key_size);
c = MAKE_ENCRYPT(algorithm, key->data, iv);
TS_TEST_STRING_EQ(Encrypting with $1,
crypt_string(c, plain, 0),
lsh_string_dup(cipher))
KILL(c);
c = MAKE_DECRYPT(algorithm, key->data, iv);
TS_TEST_STRING_EQ(Decrypting with $1,
crypt_string(c, cipher, 0),
plain)
KILL(c);
m4_ifelse($6,,,
lsh_string_free(ivs);
)
lsh_string_free(key);
lsh_string_free(cipher);
}
)
m4_dnl TS_TEST_VERIFY(name, key, msg, signature)
TS_DEFINE(TS_TEST_VERIFY,
{
struct alist *algorithms = all_signature_algorithms(make_bad_random());
struct sexp *key = TS_SEXP($2);
struct lsh_string *msg = TS_STRING($3);
struct sexp *sign = TS_SEXP($4);
struct verifier *v = spki_make_verifier(algorithms, key);
TS_MESSAGE($1);
if (!v)
/* Invalid key. */
TS_FAIL;
if (!VERIFY_SPKI(v, msg->length, msg->data, sign))
/* Unexpected verification failure. */
TS_FAIL;
/* Modify message slightly. */
assert(msg->length > 10);
msg->data[5] ^= 0x40;
if (VERIFY_SPKI(v, msg->length, msg->data, sign))
/* Unexpected verification success. */
TS_FAIL;
TS_OK;
})
m4_dnl TS_TEST_SIGN(name, key, msg [, signature])
TS_DEFINE(TS_TEST_SIGN,
{
struct alist *algorithms = all_signature_algorithms(make_bad_random());
struct sexp *key = TS_SEXP($2);
struct lsh_string *msg = TS_STRING($3);
struct sexp *sign;
struct signer *s = spki_make_signer(algorithms, key, NULL);
struct verifier *v;
TS_MESSAGE($1);
if (!s)
/* Invalid key. */
TS_FAIL;
sign = SIGN_SPKI(s, msg->length, msg->data);
m4_ifelse($4,,,
{
struct lsh_string *s2 = TS_STRING($4);
if (!lsh_string_eq(s2, sexp_format(sign, SEXP_CANONICAL, 0)))
TS_FAIL
}
)
v = SIGNER_GET_VERIFIER(s);
if (!v)
/* Can't create verifier */
TS_FAIL
if (!VERIFY_SPKI(v, msg->length, msg->data, sign))
/* Unexpected verification failure. */
TS_FAIL;
/* Modify message slightly. */
assert(msg->length > 10);
msg->data[5] ^= 0x40;
if (VERIFY_SPKI(v, msg->length, msg->data, sign))
/* Unexpected verification success. */
TS_FAIL;
TS_OK
})
m4_dnl TS_TAG_GRANT(msg, tag-set, access)
TS_DEFINE(TS_TAG_GRANT,
{
struct spki_tag *tag = spki_sexp_to_tag(TS_SEXP($2), 17);
struct sexp *access = TS_SEXP($3);
TS_MESSAGE(Granting access $1)
assert(tag);
assert(access);
if (SPKI_TAG_MATCH(tag, access))
TS_OK
else
TS_FAIL
KILL(tag);
KILL(access);
})
m4_dnl TS_TAG_DENY(msg, tag-set, access)
TS_DEFINE(TS_TAG_DENY,
{
struct spki_tag *tag = spki_sexp_to_tag(TS_SEXP($2), 17);
struct sexp *access = TS_SEXP($3);
TS_MESSAGE(Denying access $1)
assert(tag);
assert(access);
if (!SPKI_TAG_MATCH(tag, access))
TS_OK
else
TS_FAIL
KILL(tag);
KILL(access);
})
m4_divert(1)
return 0;
}
m4_divert
m4_dnl C code
#include "lsh.h"
#include "algorithms.h"
#include "crypto.h"
#include "digits.h"
#include "format.h"
#include "randomness.h"
#include "sexp.h"
#include "spki.h"
#include "werror.h"
#include "xalloc.h"
#include <assert.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
argp_parse(&werror_argp, argc, argv, 0, NULL, NULL);
/* Test vectors from RFC 1321 */
TS_TEST_HASH(MD5-1, &md5_algorithm,
"",
#D41D8CD98F00B204 E9800998ECF8427E#)
TS_TEST_HASH(MD5-2, &md5_algorithm,
"a",
#0CC175B9C0F1B6A8 31C399E269772661#)
TS_TEST_HASH(MD5-3, &md5_algorithm,
"abc",
#900150983cd24fb0 D6963F7D28E17F72#)
TS_TEST_HASH(MD5-4, &md5_algorithm,
"message digest",
#F96B697D7CB7938D 525A2F31AAF161D0#)
TS_TEST_HASH(MD5-5, &md5_algorithm,
"abcdefghijklmnopqrstuvwxyz",
#C3FCD3D76192E400 7DFB496CCA67E13B#)
TS_TEST_HASH(MD5-6, &md5_algorithm,
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
#D174AB98D277D9F5 A5611C2C9F419D9F#)
TS_TEST_HASH(MD5-7, &md5_algorithm,
"1234567890123456789012345678901234567890"
"1234567890123456789012345678901234567890",
#57EDF4A22BE3C955 AC49DA2E2107B67A#)
/* Test vectors for md5 from RFC-2202 */
TS_TEST_HMAC(HMAC-MD5-1, &md5_algorithm,
#0b0b0b0b0b0b0b0b 0b0b0b0b0b0b0b0b#,
"Hi There",
#9294727A3638BB1C 13F48EF8158BFC9D#)
TS_TEST_HMAC(HMAC-MD5-2, &md5_algorithm,
"Jefe",
"what do ya want for nothing?",
#750C783E6AB0B503 EAA86E310A5DB738#)
TS_TEST_HMAC(HMAC-MD5-3, &md5_algorithm,
#AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA#,
#DDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDD
DDDDDDDDDDDDDDDD DDDDDDDDDDDDDDDD
DDDD#,
#56BE34521D144C88 DBB8C733F0E8B3F6#)
TS_TEST_HMAC(HMAC-MD5-4, &md5_algorithm,
#0102030405060708 090A0B0C0D0E0F10 1112131415161718 19#,
#CDCDCDCDCDCDCDCD CDCDCDCDCDCDCDCD
CDCDCDCDCDCDCDCD CDCDCDCDCDCDCDCD
CDCDCDCDCDCDCDCD CDCDCDCDCDCDCDCD
CDCD#,
#697EAF0ACA3A3AEA 3A75164746FFAA79#)
TS_TEST_HMAC(HMAC-MD5-5, &md5_algorithm,
#0C0C0C0C0C0C0C0C 0C0C0C0C0C0C0C0C#,
"Test With Truncation",
#56461EF2342EDC00 F9BAB995690EFD4C#)
TS_TEST_HMAC(HMAC-MD5-6, &md5_algorithm,
#AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA#,
"Test Using Larger Than Block-Size Key - Hash Key First",
#6b1ab7fe4bd7bf8f0b62e6ce61b9d0cd#)
TS_TEST_HMAC(HMAC-MD5-7, &md5_algorithm,
#AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA#,
"Test Using Larger Than Block-Size Key an"
"d Larger Than One Block-Size Data",
#6f630fad67cda0ee1fb1f562db3aa53e#)
TS_TEST_CRYPTO(rijndael-128 1, &rijndael128_algorithm,
#00010203050607080A0B0C0D0F101112#,
#506812A45F08C889B97F5980038B8359#,
#D8F532538289EF7D06B506A4FD5BE9C9#)
TS_TEST_CRYPTO(rijndael-128 2, &rijndael128_algorithm,
#14151617191A1B1C1E1F202123242526#,
#5C6D71CA30DE8B8B00549984D2EC7D4B#,
#59AB30F4D4EE6E4FF9907EF65B1FB68C#)
TS_TEST_CRYPTO(rijndael-128 3, &rijndael128_algorithm,
#28292A2B2D2E2F30323334353738393A#,
#53F3F4C64F8616E4E7C56199F48F21F6#,
#BF1ED2FCB2AF3FD41443B56D85025CB1#)
/* Skipped lots of tests */
TS_TEST_CRYPTO(rijndael-128 128, &rijndael128_algorithm,
#A0A1A2A3A5A6A7A8AAABACADAFB0B1B2#,
#F5F4F7F684878689A6A7A0A1D2CDCCCF#,
#CE52AF650D088CA559425223F4D32694#)
TS_TEST_CRYPTO(rijndael-192 1, &rijndael192_algorithm,
#00010203050607080A0B0C0D0F10111214151617191A1B1C#,
#2D33EEF2C0430A8A9EBF45E809C40BB6#,
#DFF4945E0336DF4C1C56BC700EFF837F#)
TS_TEST_CRYPTO(rijndael-192 2, &rijndael192_algorithm,
#1E1F20212324252628292A2B2D2E2F30323334353738393A#,
#6AA375D1FA155A61FB72353E0A5A8756#,
#B6FDDEF4752765E347D5D2DC196D1252#)
TS_TEST_CRYPTO(rijndael-192 3, &rijndael192_algorithm,
#3C3D3E3F41424344464748494B4C4D4E5051525355565758#,
#BC3736518B9490DCB8ED60EB26758ED4#,
#D23684E3D963B3AFCF1A114ACA90CBD6#)
/* Skipped lots of tests */
TS_TEST_CRYPTO(rijndael-192 128, &rijndael192_algorithm,
#868788898B8C8D8E90919293959697989A9B9C9D9FA0A1A2#,
#D3D2DDDCAAADACAF9C9D9E9FE8EBEAE5#,
#9ADB3D4CCA559BB98C3E2ED73DBF1154#)
TS_TEST_CRYPTO(rijndael-256 1, &rijndael256_algorithm,
#00010203050607080A0B0C0D0F10111214151617191A1B1C1E1F202123242526#,
#834EADFCCAC7E1B30664B1ABA44815AB#,
#1946DABF6A03A2A2C3D0B05080AED6FC#)
TS_TEST_CRYPTO(rijndael-256 2, &rijndael256_algorithm,
#28292A2B2D2E2F30323334353738393A3C3D3E3F41424344464748494B4C4D4E#,
#D9DC4DBA3021B05D67C0518F72B62BF1#,
#5ED301D747D3CC715445EBDEC62F2FB4#)
TS_TEST_CRYPTO(rijndael-256 3, &rijndael256_algorithm,
#50515253555657585A5B5C5D5F60616264656667696A6B6C6E6F707173747576#,
#A291D86301A4A739F7392173AA3C604C#,
#6585C8F43D13A6BEAB6419FC5935B9D0#)
/* Skipped lots of tests */
TS_TEST_CRYPTO(rijndael-256 128, &rijndael256_algorithm,
#50515253555657585A5B5C5D5F60616264656667696A6B6C6E6F707173747576#,
#050407067477767956575051221D1C1F#,
#7444527095838FE080FC2BCDD30847EB#)
TS_TEST_SIGN(RSA signing,
"{KDE0OnJzYS1wa2NzMS1zaGExKDE6bjI1MzoBFRr6hWOxSyj4UOuRSv2TgnQT"
"RIbT+XhBCCuC0delL8hCt9SKN8QYGn9eSfJaMknWXZdbiATciNWXtC6BInC5"
"PiIyCwZP21u4x/UYNq7EpYRWfOr2GeFtgqAgjLCPiNcDmaje5RI6HltB1t69"
"gyRlgmTEGedjfCVUksR9HCa/YHO4Qj6nfGL43suz0qzbw90fo52pJQAFVsob"
"8uNXcIkKEIUF6iaCcFxz5chlmUDDuWZsu0CN2hwTVcNEODo2h4K9UZSJ1q5r"
"flh3Yd2hKeQDY4g1em/4faS43lvhkV+PqXNyaV5/9Oo5PfPhuVbppOvhV3fU"
"6GsPNH2rmaSnKSgxOmU0Og8eiqcpKDE6ZDI1MzoBALlbGgNWW/Iobv5Zm17I"
"lj8Vwg3DgYucIlNkKs4z+G5I1J5wSLlsSJp5mDixgy2meph8Zo7kRM8DXNbQ"
"FxPrx184sRHI+zQlcd61ldDSiy+U55cw99k+AW9xPGiSlIwfGFJb8+ihimFr"
"LD4bpJTjZmWFMza4W4EqovJZar2Lk8j1ahEClrVZxmClMwGViQf6sezat9eD"
"ccA3D1J7lbCqhhZ4/zO7M97VifRfcvzJCRsQUgf3fdsY6BFp0/jkx+7y0ZgC"
"IfBx7JJPPAe90wNIG7s+XXE4A0M3txusqFE3gpIZ+H84xD/as/h/CAkDnZDK"
"xTjaeL9KEMXaJDlXKSgxOnAxMjY6wOsl7emcAJwKRkNPGY2J+P/XTvCBSzKo"
"JfT3uwfCREpGfg4YliDVXyh1IgFeIZU70e8OoRkrBlDtyTzcgdq9okgSdPLu"
"+tIffBLfHrQ+ZAcg2Wp3cKckhIgqy8GdQutTw/z3aDGpOmoIS+mijVmdDNmp"
"g2IB/mSPjtOok3aXKSgxOnExMjc6AW+29CAmn3PY4n6MlE9jfE/ErXCTKZFh"
"IEASNJPF+zsKJSNDtx1ZeVmgX8/00ZFVASs2SScWlUQLYyHWqkjDjA3URL9n"
"nhdOCyGSJufb7C0OkPRWPmvlLdQi1rqIKff1IlsBRBK4y64suPmPAJ+rx39X"
"sFpTto7nzbji9wWUcSkoMTphMTI2OiIbnv4UD+cPiMag8ejks81LF5wWYLxi"
"UL2vQBPMQHfEVbqDupjxBjDaH/OZqtSo7kpBUPEfCT6QnbgEiozEPKoV2GOv"
"tzduDuNIG/cypIZ81a79rChDmt98o8Mo3xPNaOtQkdgpAGM4N/OZm65YCwd4"
"Rvi7sTgrx/c0uzXicykoMTpiMTI2Oi65so8tg+/ELd2PhaVfBGF9GAPYX8OT"
"ZPTR4TImy38sscW81Dwfn+IHUWZQZZVxkCF5g0WnZHM1Tb4yg6CyQoVAnipW"
"pf8D2Yf0FQuIRcwbUwLuEVPQ7/DZsUHPp0W2lvnSc987T0n8b4M43VOeg6Mj"
"EnREvLlSrjmPH288ZykoMTpjMTI2OrNtDOjzHIbPm3Tf4YlXcw9DxuXjhQQo"
"0dbVG80b4XAPc0Vtc3tKMw8hdWbqiKp6J4hzM+U5uz/bMCIqDTYK1srP0pNZ"
"8j3Q8Os5BI/JrVtkVMl2/BSvq4LRPVI08E49oGRLI/E4zxOVrmmoASntirUP"
"zrjLGBu2zAA3XTEb+Ckp}",
"The magic words are squeamish ossifrage")
m4_dnl TS_TEST_SIGN(RSA signing, "{KDE0OnJzYS1wa2NzMS1zaGExKDE6bjI1ODoBKoAo"
m4_dnl "pusI54XxOMM73rH2nEUD8xfbB+VNk3+BkS1CKqRH"
m4_dnl "Iaj/vFvKcOhisCbjVPjae9PuWSZQ6e/9RZGdADgD"
m4_dnl "N2XRNIUTQsofuPi/Fcf6cL/5aInSihDdIwRWWcU4"
m4_dnl "ZkXAB8QtXaJmQn0ETB3369IT85yB9V0CvUpdaYZb"
m4_dnl "UumfRNjtuKc9Y/JSo7yC3a4a4zDiqIAqCy78GHCk"
m4_dnl "VUwng7RABIi9siIsc0yyC9VIkiiZDOixuYsjpOPy"
m4_dnl "Nt+tWl4Q5l6znrBS0ipstOsWwKd65zLDLKp16uSz"
m4_dnl "KJMRv2PR5jyzDO0fLvAdRQ70A9D2nu5nF54SNp4p"
m4_dnl "cCTmxlxKtsdHRBB+K4MpKDE6ZTQ6AavcIykp}",
m4_dnl "The magic words are squeamish ossifrage")
m4_dnl TS_SEXP_L
m4_dnl (TS_SEXP_L
m4_dnl (TS_SEXP_S("n"),
m4_dnl TS_SEXP_S(#05edfe241cdd7615 d2559d9bb3b5a95f 0db3205974bf1ef0
m4_dnl d04d1d26c9e66bee 6703edbec7a9e7ac 324c5364715acb7b
m4_dnl 144f801afa04f548 02fbe7173fa1324a 019fdc460d3f7aa7
m4_dnl 88caef28dcb5e905 86cc837025cd5bed cf20380541ec5a55
m4_dnl 829e328fb4d3c68f fda1a93a16261020 5237c2e68d4664b8
m4_dnl 35bc5b2b16a5468e 9b1239ae57654ea8 d941d90562adae93
m4_dnl b820675356f883c7 8ea0189e99fce7f3 9eed2f61f7d0af21
m4_dnl 1e664289071381ef 28dccf77dbbd4e76 d853273c3cad44ef
m4_dnl a3a14971a244a23f afdbebacafe0b95e 7c6ecae17489a093
m4_dnl c7e32e5de89f210f bcd57e272a4d63b5 ea5d8677e61190f2
m4_dnl 4950ae5b5c1dc1a3 6742fec98832439d c34de6422ebb3eaf
m4_dnl cb0cbe7ff8ae600b 2a6dd08e6aed8b0c 4e6224d7bd94f45a
m4_dnl 2cee0d1c8143f8be 1a87d6e511d064df 4dfc3770ec2d85fa
m4_dnl 61dfc6a24055d76a 93f619649ee47c0b 0be83d92f0792402
m4_dnl 1c3b#)),
m4_dnl TS_SEXP_L
m4_dnl (TS_SEXP_S("e"),
m4_dnl TS_SEXP_S(#11cfd8c5#)),
m4_dnl TS_SEXP_L
m4_dnl (TS_SEXP_S("d"),
m4_dnl TS_SEXP_S(#03a59db9ecf8414a bc0b169a487f1dc3 0241658f444a3f3b
m4_dnl faed5226e2a3f1e0 1a171d15ef7f3f0c f96dbb113ecbf6a3
m4_dnl d56ac0062666e03e a102591c29ffdd15 f28ebbd3c21b621d
m4_dnl 09e15ce11d225751 26d2a6de2dc40b8b f5490ab30ad37770
m4_dnl 4e4149e92fce6d34 76b07aa052128d73 2fad1ec03264c866
m4_dnl 435c05952af879a8 0d631340d557b0b2 771663e4b55bff9f
m4_dnl ee58d977fc1e27d6 aa7031f2f15753a0 0ad01c1eeaf92337
m4_dnl 60eb7da296132054 992bb47493820717 459c3338367f71b0
m4_dnl fdb04929dec7ef6c 02644790978bc41b db91ce685e294319
m4_dnl 438087e45f032fc0 9251b2b2f9216d5f c6c0bfa7d4a54ad5
m4_dnl dc06c0f561fd7e0f cbf86fbad4a122b0 d104f6605a46f6b7
m4_dnl c2d9f4384c22927c 860cac99d31f6d0f 7d3ed15c7c9afb54
m4_dnl 91ce9a31546b185b 84e6a850072ff7c0 72a8c0afa428a299
m4_dnl cfa5f7f7b1f1706c 4c3f8eba5313cb69 91ddbda82440bac5
m4_dnl c54d#)),
m4_dnl TS_SEXP_L
m4_dnl (TS_SEXP_S("p"),
m4_dnl TS_SEXP_S(#2d59df437f66b7c8 fb95d26ca5fd6c5a 6e73a8e0390c9a1e
m4_dnl d4c89feb8898363f 6a14e92d9380cfc8 2c903a702b26bbd9
m4_dnl 9c42a971f900f22a b4a8dc80cba26217 080de966a42c3138
m4_dnl 6552351f71dc7784 6c9431bf4c0ccc19 126d9e04173a56f1
m4_dnl 569cbc902bb7c7f7 c3c5876ec494ab81 1957dee8c94cf027
m4_dnl 0f0dafcf719ffda5 26ec926bcc0737f1 f539563d27b47d7e
m4_dnl 3ad6fe56f5dae841 f29965630d9ad9fe 6cf4b89fef715bf5
m4_dnl 59#))
m4_dnl
m4_dnl TS_SEXP_L
m4_dnl (TS_SEXP_S("q"),
m4_dnl TS_SEXP_S(#2178d7d26e7c78e0 2f248ce6f035d036 ea307cf20975dcd8
m4_dnl e060183de3259bd1 9f2a168db2de0bc2 ef8ede977b7997bc
m4_dnl 17809966424a39d9 82f92b3d69110b42 138ada604f438c9c
m4_dnl ff37ad4c01293324 f545d178fc912040 4410872dfa0dd8fe
m4_dnl 4f5409195fde2178 276e8daa71176ae2 f2707b1eab90b968
m4_dnl 09d326e0d4001b85 ccf9b4acd1e463e1 efec28a267b1a30f
m4_dnl d9cc4239fdb45242 d2887aabd331329e 7c7e98b09d055d27
m4_dnl b3#))
m4_dnl TS_SEXP_L
m4_dnl (TS_SEXP_S("a"),
m4_dnl TS_SEXP_S(#2af46a97b80a81a3 f83f0f214095979f 7a90a93048c4af9f
m4_dnl 301fbcdb67e9bf3f 82386f75da16938a 755a7fe459270e28
m4_dnl 82cc6449c4f5330f c08b36e17689bca0 d3ff31992f50fd44
m4_dnl ed0aecea47f5081d ad67c16b4051375b 71d29bd5ad9d956f
m4_dnl 33d8dd05018d967f d82177f9a4ca0872 c5989330ca45d3ba
m4_dnl 626a3cbadb49e23d 0f592bf60cf8974f 9c35383f649926bd
m4_dnl 579f8fe0bb208144 5510bdedd6e0a98f a24ce22684bdda13
m4_dnl 45#))
m4_dnl TS_SEXP_L
m4_dnl (TS_SEXP_S("b"),
m4_dnl TS_SEXP_S(#07183885d93d2d8a 51516a6bc2cd9a48 d25e2e11db578632
m4_dnl 5e50603f3ecd854b 83b3516b3b5202d0 b40f5ef63ea9fc76
m4_dnl 67892e96c41e65fa bbd4c81183156a52 30f081aeb42b7892
m4_dnl 48bbcead57b62e44 9b1be6644016c20d c2fa78480121a0a6
m4_dnl 7e578ae0ff7e8fa8 83d61c686a752352 ff803a47340fabc1
m4_dnl 665f56ef7b612d45 7b16ee647759d96a a28a50aee91d77f5
m4_dnl 07bbc66f93491982 7cf75be95d5fb124 25a6982fb0c3ddc8
m4_dnl ad#))
m4_dnl TS_SEXP_L
m4_dnl (TS_SEXP_S("c"),
m4_dnl TS_SEXP_S(#0bcaae1dc4c26734 3d08816aecc757e3 defd35705206a089
m4_dnl 833ef65a03b632ad 1ce3a363d9df06dd 9a528cf163e98063
m4_dnl f8e17c6eb029a2d2 c7c36fd9684fd570 b5a36adbdd74c594
m4_dnl 4041f7e2d81fabda 8108ae835fe61e12 bd264bc451870e06
m4_dnl bcba94e72b1d47e9 aa1ff15310094b7a 5574ecfebc64b8ec
m4_dnl d93a239377704a6a 7de18a04cf95bca8 e62d7f0a3743117c
m4_dnl 34c27b31acda5585 47281fedc3068354 48cfce6a20509a69