]> git.cryptolib.org Git - arm-crypto-lib.git/commitdiff
now with rsassa-pkcs1v15 (old rsa signatures) + many new things
authorbg <daniel.otte@rub.de>
Sat, 5 May 2012 03:16:29 +0000 (05:16 +0200)
committerbg <daniel.otte@rub.de>
Sat, 5 May 2012 03:16:29 +0000 (05:16 +0200)
51 files changed:
arm-makefile.inc
bcal/bcal_camellia128.c
bcal/bcal_camellia128.h
bigint/bigint.c
bigint/bigint.h
blake/blake_large.c
blake/blake_small.c
bmw/bmw_large.c
bmw/bmw_large_speed.c
bmw/bmw_small.c
bmw/bmw_small_speed.c
host/rsa_oaep_check.rb [deleted file]
host/rsa_pkcs15_check.rb [deleted file]
host/rsaes_oaep_check.rb [new file with mode: 0644]
host/rsaes_pkcs1v15_check.rb [new file with mode: 0644]
host/rsassa_pkcs1v15_check.rb [new file with mode: 0644]
host/shavs_test2.rb
jh/jh_simple_speed_core.c
md5/md5.c
md5/md5_sbox.c [new file with mode: 0644]
md5/md5_sbox.h
mkfiles/md5_c.mk [new file with mode: 0644]
mkfiles/rsa_oaep.mk [deleted file]
mkfiles/rsaes_oaep.mk [new file with mode: 0644]
mkfiles/rsaes_pkcs1v15.mk [new file with mode: 0644]
mkfiles/rsassa_pkcs1v15.mk [new file with mode: 0644]
mkfiles/zzz_lib.mk
present/present.c
rsa/rsa_basic.c
rsa/rsa_basic.h
rsa/rsa_oaep.c [deleted file]
rsa/rsa_oaep.h [deleted file]
rsa/rsa_pkcs15.c [deleted file]
rsa/rsa_pkcs15.h [deleted file]
rsa/rsassa_pkcs1v15.c [new file with mode: 0644]
rsa/rsassa_pkcs1v15.h [new file with mode: 0644]
salsa20/salsa20.c
salsa20/salsa20.h
sha1/sha1.c
sha1/sha1.h
test_src/dbz_strings.c
test_src/dbz_strings.h
test_src/main-md5-test.c
test_src/main-rsa_oaep-test.c [deleted file]
test_src/main-rsassa_pkcs1v15-test.c [new file with mode: 0644]
test_src/main-salsa20-test.c
test_src/nessie_hash_test.c
test_src/string-extras.c
test_src/string-extras.h
testvectors/Md5-128.unverified.test-vectors [new file with mode: 0644]
testvectors/rsa-pkcs-1v2-1-vec/pkcs1v15sign-vectors.txt [new file with mode: 0644]

index 5daff9363c28cbec8d0a3af6f0ec0a39abd255e6..2b0b5834f7d680d6ff1d3bfdc0cf9ba718c0374c 100644 (file)
@@ -16,7 +16,7 @@ TEST_DIR       = test/#
 BIN_DIR        = bin/#
 TESTSRC_DIR    = test_src/#
 ERASECMD       =
-TESTPORT       = /dev/ttyUSB1
+TESTPORT       = /dev/ttyUSB2
 TESTPORTBAUDR  = 115200
 TESTLOG_DIR    = testlog/#
 TESTPREFIX     = nessie-#
index 767c1b8837fd4bd2c324e32db921ceb1a3b41667..55de26a5bdccaf491f76d9e4cae8f8cfcfe3b1cf 100644 (file)
  * 
  */
 
-#include <avr/pgmspace.h>
 #include <stdlib.h>
 #include "blockcipher_descriptor.h"
 #include "camellia.h"
 #include "keysize_descriptor.h"
 
-const char camellia128_str[]   PROGMEM = "Camellia-128";
+const char camellia128_str[] = "Camellia-128";
 
-const uint8_t camellia128_keysize_desc[] PROGMEM = { KS_TYPE_LIST, 1, KS_INT(128), 
+const uint8_t camellia128_keysize_desc[] = { KS_TYPE_LIST, 1, KS_INT(128), 
                                                 KS_TYPE_TERMINATOR    };
 
-const bcdesc_t camellia128_desc PROGMEM = {
+const bcdesc_t camellia128_desc = {
        BCDESC_TYPE_BLOCKCIPHER,
        BC_INIT_TYPE_2,
        camellia128_str,
index ded26c779d3fd845b86951bf221fd4244e7506fe..c8b49dee950c070cd40a2b8b6997a66101200b24 100644 (file)
@@ -25,7 +25,6 @@
  * 
  */
 
-#include <avr/pgmspace.h>
 #include "blockcipher_descriptor.h"
 #include "camellia.h"
 #include "keysize_descriptor.h"
index f0d7d6e6394e2ac8d889206d272b0bd86109e846..58661792f8fa856d8b1e657b2746c9135925386e 100644 (file)
@@ -53,9 +53,9 @@
 #define SET_NEG(a)   (a)->info |= BIGINT_NEG_MASK
 #define SET_POS(a)   (a)->info &= ~BIGINT_NEG_MASK
 #define XCHG(a,b)    do{(a)^=(b); (b)^=(a); (a)^=(b);}while(0)
-#define XCHG_PTR(a,b)    do{ a = (void*)(((bigint_ptr_int_t)(a)) ^ ((bigint_ptr_int_t)(b))); \
-                                b = (void*)(((bigint_ptr_int_t)(a)) ^ ((bigint_ptr_int_t)(b))); \
-                                a = (void*)(((bigint_ptr_int_t)(a)) ^ ((bigint_ptr_int_t)(b)));}while(0)
+#define XCHG_PTR(a,b)    do{ a = (void*)(((intptr_t)(a)) ^ ((intptr_t)(b))); \
+                                b = (void*)(((intptr_t)(a)) ^ ((intptr_t)(b))); \
+                                a = (void*)(((intptr_t)(a)) ^ ((intptr_t)(b)));}while(0)
 
 #define GET_SIGN(a) ((a)->info&BIGINT_NEG_MASK)
 
@@ -80,7 +80,7 @@ void bigint_adjust(bigint_t* a){
 
 /******************************************************************************/
 
-uint16_t bigint_length_b(bigint_t* a){
+uint16_t bigint_length_b(const bigint_t* a){
        if(!a->length_B || a->length_B==0){
                return 0;
        }
@@ -89,13 +89,13 @@ uint16_t bigint_length_b(bigint_t* a){
 
 /******************************************************************************/
 
-uint16_t bigint_length_B(bigint_t* a){
+uint16_t bigint_length_B(const bigint_t* a){
        return a->length_B * sizeof(bigint_word_t);
 }
 
 /******************************************************************************/
 
-uint32_t bigint_get_first_set_bit(bigint_t* a){
+uint32_t bigint_get_first_set_bit(const bigint_t* a){
        if(a->length_B==0){
                return (uint32_t)(-1);
        }
@@ -105,7 +105,7 @@ uint32_t bigint_get_first_set_bit(bigint_t* a){
 
 /******************************************************************************/
 
-uint32_t bigint_get_last_set_bit(bigint_t* a){
+uint32_t bigint_get_last_set_bit(const bigint_t* a){
        uint32_t r=0;
        uint8_t b=0;
        bigint_word_t x=1;
@@ -403,7 +403,7 @@ int8_t bigint_cmp_s(const bigint_t* a, const bigint_t* b){
 /******************************************************************************/
 
 void bigint_shiftleft(bigint_t* a, uint16_t shift){
-       uint16_t byteshift, word_alloc;
+       uint16_t byteshift, word_alloc, words_to_shift;
        int16_t i;
        uint8_t bitshift;
        bigint_word_t *p;
@@ -417,14 +417,15 @@ void bigint_shiftleft(bigint_t* a, uint16_t shift){
                a->wordv[a->length_B+i] = 0;
        }
        if(byteshift){
-               memmove(((uint8_t*)a->wordv)+byteshift, a->wordv, a->length_B*sizeof(bigint_word_t));
+               memmove(((uint8_t*)a->wordv) + byteshift, a->wordv, a->length_B * sizeof(bigint_word_t));
                memset(a->wordv, 0, byteshift);
        }
-       p = (bigint_word_t*)(((uint8_t*)a->wordv)+byteshift);
-       word_alloc = a->length_B+(byteshift+sizeof(bigint_word_t)-1)/sizeof(bigint_word_t)+1;
+       p = a->wordv + byteshift / sizeof(bigint_word_t);
+       words_to_shift = a->length_B + (byteshift % sizeof(bigint_word_t)?1:0);
+       word_alloc = a->length_B + (byteshift + sizeof(bigint_word_t) - 1) / sizeof(bigint_word_t) + 1;
        a->wordv[word_alloc-1]=0;
        if(bitshift!=0){
-               for(i=0; i<a->length_B; ++i){
+               for(i=0; i < words_to_shift; ++i){
                        t |= ((bigint_wordplus_t)p[i])<<bitshift;
                        p[i] = (bigint_word_t)t;
                        t >>= BIGINT_WORD_SIZE;
@@ -444,30 +445,29 @@ void bigint_shiftright(bigint_t* a, uint16_t shift){
        bigint_wordplus_t t=0;
        byteshift = shift/8;
        bitshift = shift&7;
-       if(byteshift >= a->length_B*sizeof(bigint_word_t)){ /* we would shift out more than we have */
+       if(byteshift >= a->length_B * sizeof(bigint_word_t)){ /* we would shift out more than we have */
                bigint_set_zero(a);
                return;
        }
-       if(byteshift == a->length_B*sizeof(bigint_word_t)-1 && bitshift>GET_FBS(a)){
+       if(byteshift == a->length_B * sizeof(bigint_word_t) - 1 && bitshift > GET_FBS(a)){
                bigint_set_zero(a);
                return;
        }
        if(byteshift){
-               memmove(a->wordv, (uint8_t*)a->wordv+byteshift, a->length_B-byteshift);
-               memset((uint8_t*)a->wordv+a->length_B-byteshift, 0,  byteshift);
+               memmove(a->wordv, (uint8_t*)a->wordv + byteshift, a->length_B * sizeof(bigint_word_t) - byteshift);
+               memset((uint8_t*)a->wordv + a->length_B * sizeof(bigint_word_t) - byteshift, 0,  byteshift);
        }
        byteshift /= sizeof(bigint_word_t);
-       if(bitshift!=0){
+    a->length_B -= (byteshift  + sizeof(bigint_word_t) - 1) / sizeof(bigint_word_t);
+       if(bitshift != 0 && a->length_B){
         /* shift to the right */
-               for(i=a->length_B-byteshift-1; i>0; --i){
-                       t |= ((bigint_wordplus_t)(a->wordv[i]))<<(BIGINT_WORD_SIZE-bitshift);
-                       a->wordv[i] = (bigint_word_t)(t>>BIGINT_WORD_SIZE);
+               i = a->length_B - 1;
+               do{
+                       t |= ((bigint_wordplus_t)(a->wordv[i])) << (BIGINT_WORD_SIZE - bitshift);
+                       a->wordv[i] = (bigint_word_t)(t >> BIGINT_WORD_SIZE);
                        t <<= BIGINT_WORD_SIZE;
-               }
-               t |= ((bigint_wordplus_t)(a->wordv[0]))<<(BIGINT_WORD_SIZE-bitshift);
-               a->wordv[0] = (bigint_word_t)(t>>BIGINT_WORD_SIZE);
+               }while(i--);
        }
-    a->length_B -= ((shift/8)+sizeof(bigint_word_t)-1)/sizeof(bigint_word_t);
        bigint_adjust(a);
 }
 
@@ -792,12 +792,12 @@ void bigint_expmod_u(bigint_t* dest, const bigint_t* a, const bigint_t* exp, con
                        if(flag){
                                bigint_square(&res, &res);
                                bigint_reduce(&res, r);
-                               if(t & (1<<(BIGINT_WORD_SIZE-1))){
+                               if(t & (1 << (BIGINT_WORD_SIZE - 1))){
                                        bigint_mul_u(&res, &res, &base);
                                        bigint_reduce(&res, r);
                                }
                        }
-                       t<<=1;
+                       t <<= 1;
                }
        }
 
index 71b86f50ada497738c84b6fce1fec2f7720d7983..4272aa0c13d63aaef9ebce09f5c20538d618563a 100644 (file)
@@ -43,15 +43,13 @@ typedef struct{
        bigint_word_t *wordv; /* word vector, pointing to the LSB */
 }bigint_t;
 
-typedef uint32_t bigint_ptr_int_t;
-
 /******************************************************************************/
 
 void   bigint_adjust(bigint_t* a);
-uint32_t bigint_get_first_set_bit(bigint_t* a);
-uint32_t bigint_get_last_set_bit(bigint_t* a);
-uint16_t bigint_length_b(bigint_t* a);
-uint16_t bigint_length_B(bigint_t* a);
+uint32_t bigint_get_first_set_bit(const bigint_t* a);
+uint32_t bigint_get_last_set_bit(const bigint_t* a);
+uint16_t bigint_length_b(const bigint_t* a);
+uint16_t bigint_length_B(const bigint_t* a);
 void   bigint_copy(bigint_t* dest, const bigint_t* src);
 void   bigint_add_u(bigint_t* dest, const bigint_t* a, const bigint_t* b);
 void   bigint_add_scale_u(bigint_t* dest, const bigint_t* a, uint16_t scale);
index 256c819b182df744e000af4eacd858fb7c6fa19b..e3b5d5339542b5b1ae16ff7a0de0d5ab4ad98058 100644 (file)
@@ -137,21 +137,24 @@ void blake_large_lastBlock(blake_large_ctx_t* ctx, const void* msg, uint16_t len
                msg = (uint8_t*)msg + BLAKE_LARGE_BLOCKSIZE_B;
                length_b -= BLAKE_LARGE_BLOCKSIZE;
        }
-       uint8_t buffer[128];
+       union {
+               uint8_t   v8[128];
+               uint64_t v64[ 16];
+       } buffer;
        uint64_t v[16];
        uint64_t ctr;
        ctr = ctx->counter*1024+length_b;
-       memset(buffer, 0, 128);
-       memcpy(buffer, msg, (length_b+7)/8);
-       buffer[length_b/8] |= 0x80 >> (length_b&0x7);
-       blake_large_changeendian(buffer, buffer);
+       memset(buffer.v8, 0, 128);
+       memcpy(buffer.v8, msg, (length_b+7)/8);
+       buffer.v8[length_b/8] |= 0x80 >> (length_b&0x7);
+       blake_large_changeendian(buffer.v8, buffer.v8);
        blake_large_expand(v, ctx);
        if(length_b>1024-128-2){
                v[12] ^= ctr;
                v[13] ^= ctr;
-               blake_large_compress(v, buffer);
+               blake_large_compress(v, buffer.v8);
                blake_large_collapse(ctx, v);
-               memset(buffer, 0, 128-8);
+               memset(buffer.v8, 0, 128-8);
                blake_large_expand(v, ctx);
        } else {
                if(length_b){
@@ -160,9 +163,9 @@ void blake_large_lastBlock(blake_large_ctx_t* ctx, const void* msg, uint16_t len
                }
        }
        if(ctx->appendone)
-               buffer[128-16-8] |= 0x01;
-       *((uint64_t*)(&(buffer[128-8]))) = ctr;
-       blake_large_compress(v, buffer);
+               buffer.v8[128-16-8] |= 0x01;
+       buffer.v64[15] = ctr;
+       blake_large_compress(v, buffer.v8);
        blake_large_collapse(ctx, v);
 
 }
index ba73edb42599d14f7537caacd508291982aa488f..e096d5256fad35e69f9986f44c3219e0f3b70c25 100644 (file)
@@ -133,26 +133,30 @@ void blake_small_lastBlock(blake_small_ctx_t* ctx, const void* msg, uint16_t len
                msg = (uint8_t*)msg + BLAKE_SMALL_BLOCKSIZE_B;
                length_b -= BLAKE_SMALL_BLOCKSIZE;
        }
-       uint8_t buffer[64];
+       union {
+               uint8_t   v8[64];
+               uint32_t v32[16];
+               uint64_t v64[ 8];
+       } buffer;
        uint32_t v[16];
        union {
                uint64_t v64;
                uint32_t v32[2];
        }ctr;
        ctr.v64 = ctx->counter*512+length_b;
-       memset(buffer, 0, 64);
-       memcpy(buffer, msg, (length_b+7)/8);
-       buffer[length_b/8] |= 0x80 >> (length_b&0x7);
-       blake_small_changeendian(buffer, buffer);
+       memset(buffer.v8, 0, 64);
+       memcpy(buffer.v8, msg, (length_b+7)/8);
+       buffer.v8[length_b/8] |= 0x80 >> (length_b&0x7);
+       blake_small_changeendian(buffer.v8, buffer.v8);
        blake_small_expand(v, ctx);
        if(length_b>512-64-2){
                v[12] ^= ctr.v32[0];
                v[13] ^= ctr.v32[0];
                v[14] ^= ctr.v32[1];
                v[15] ^= ctr.v32[1];
-               blake_small_compress(v, buffer);
+               blake_small_compress(v, buffer.v8);
                blake_small_collapse(ctx, v);
-               memset(buffer, 0, 64-8);
+               memset(buffer.v8, 0, 64-8);
                blake_small_expand(v, ctx);
        }else{
                if(length_b){
@@ -163,10 +167,10 @@ void blake_small_lastBlock(blake_small_ctx_t* ctx, const void* msg, uint16_t len
                }
        }
        if(ctx->appendone)
-               buffer[64-8-4] |= 0x01;
-       *((uint32_t*)(&(buffer[64-8]))) = ctr.v32[1];
-       *((uint32_t*)(&(buffer[64-4]))) = ctr.v32[0];
-       blake_small_compress(v, buffer);
+               buffer.v8[64-8-4] |= 0x01;
+       buffer.v32[14] = ctr.v32[1];
+       buffer.v32[15] = ctr.v32[0];
+       blake_small_compress(v, buffer.v8);
        blake_small_collapse(ctx, v);
 
 }
index 85a5dee6b8399a395e50f205711201d4168cbc4e..17a77d8073981a067080057e155cddb35382632d 100644 (file)
@@ -520,33 +520,36 @@ void bmw_large_nextBlock(bmw_large_ctx_t* ctx, const void* block){
 }
 
 void bmw_large_lastBlock(bmw_large_ctx_t* ctx, const void* block, uint16_t length_b){
-       uint8_t buffer[128];
+       union {
+               uint8_t   v8[128];
+               uint64_t v64[ 16];
+       } buffer;
        while(length_b >= BMW_LARGE_BLOCKSIZE){
                bmw_large_nextBlock(ctx, block);
                length_b -= BMW_LARGE_BLOCKSIZE;
                block = (uint8_t*)block + BMW_LARGE_BLOCKSIZE_B;
        }
-       memset(buffer, 0, 128);
-       memcpy(buffer, block, (length_b+7)/8);
-       buffer[length_b>>3] |= 0x80 >> (length_b&0x07);
+       memset(buffer.v8, 0, 128);
+       memcpy(buffer.v8, block, (length_b+7)/8);
+       buffer.v8[length_b>>3] |= 0x80 >> (length_b&0x07);
        if(length_b+1>128*8-64){
-               bmw_large_nextBlock(ctx, buffer);
-               memset(buffer, 0, 128-8);
+               bmw_large_nextBlock(ctx, buffer.v8);
+               memset(buffer.v8, 0, 128-8);
                ctx->counter -= 1;
        }
-       *((uint64_t*)&(buffer[128-8])) = (uint64_t)(ctx->counter*1024LL)+(uint64_t)length_b;
-       bmw_large_nextBlock(ctx, buffer);
+       buffer.v64[15] = (uint64_t)(ctx->counter*1024LL)+(uint64_t)length_b;
+       bmw_large_nextBlock(ctx, buffer.v8);
 #if TWEAK
        uint8_t i;
        uint64_t q[32];
-       memset(buffer, 0xaa, 128);
+       memset(buffer.v8, 0xaa, 128);
        for(i=0; i<16; ++i){
-               buffer[8*i] = i + 0xa0;
+               buffer.v8[8*i] = i + 0xa0;
        }
-       bmw_large_f0(q, (uint64_t*)buffer, ctx->h);
-       bmw_large_f1(q, ctx->h, (uint64_t*)buffer);
-       bmw_large_f2((uint64_t*)buffer, q, ctx->h);
-       memcpy(ctx->h, buffer, 128);
+       bmw_large_f0(q, buffer.v64, ctx->h);
+       bmw_large_f1(q, ctx->h, buffer.v64);
+       bmw_large_f2(buffer.v64, q, ctx->h);
+       memcpy(ctx->h, buffer.v8, 128);
 #endif
 }
 
index b5ae2b48fe6735319663e8653f9a14cb356e6424..c20887cb2a1d0e0a7b5333e855e3ccbb6db76a34 100644 (file)
@@ -226,32 +226,35 @@ void bmw_large_nextBlock(bmw_large_ctx_t* ctx, const void* block){
 }
 
 void bmw_large_lastBlock(bmw_large_ctx_t* ctx, const void* block, uint16_t length_b){
-       uint8_t buffer[128];
+       union {
+               uint8_t   v8[128];
+               uint64_t v64[ 16];
+       } buffer;
        while(length_b >= BMW_LARGE_BLOCKSIZE){
                bmw_large_nextBlock(ctx, block);
                length_b -= BMW_LARGE_BLOCKSIZE;
                block = (uint8_t*)block + BMW_LARGE_BLOCKSIZE_B;
        }
-       memset(buffer, 0, 128);
-       memcpy(buffer, block, (length_b+7)/8);
-       buffer[length_b>>3] |= 0x80 >> (length_b&0x07);
+       memset(buffer.v8, 0, 128);
+       memcpy(buffer.v8, block, (length_b+7)/8);
+       buffer.v8[length_b>>3] |= 0x80 >> (length_b&0x07);
        if(length_b+1>128*8-64){
-               bmw_large_nextBlock(ctx, buffer);
-               memset(buffer, 0, 128-8);
+               bmw_large_nextBlock(ctx, buffer.v8);
+               memset(buffer.v8, 0, 128-8);
                ctx->counter -= 1;
        }
-       *((uint64_t*)&(buffer[128-8])) = (uint64_t)(ctx->counter*1024LL)+(uint64_t)length_b;
-       bmw_large_nextBlock(ctx, buffer);
+       buffer.v64[15] = (uint64_t)(ctx->counter*1024LL)+(uint64_t)length_b;
+       bmw_large_nextBlock(ctx, buffer.v8);
        uint8_t i;
        uint64_t q[32];
-       memset(buffer, 0xaa, 128);
+       memset(buffer.v8, 0xaa, 128);
        for(i=0; i<16; ++i){
-               buffer[8*i] = i + 0xa0;
+               buffer.v8[8*i] = i + 0xa0;
        }
-       bmw_large_f0(q, (uint64_t*)buffer, ctx->h);
-       bmw_large_f1(q, ctx->h, (uint64_t*)buffer);
-       bmw_large_f2((uint64_t*)buffer, q, ctx->h);
-       memcpy(ctx->h, buffer, 128);
+       bmw_large_f0(q, buffer.v64, ctx->h);
+       bmw_large_f1(q, ctx->h, buffer.v64);
+       bmw_large_f2(buffer.v64, q, ctx->h);
+       memcpy(ctx->h, buffer.v8, 128);
 }
 
 void bmw384_init(bmw384_ctx_t* ctx){
index 74c6b9c238ad3edcd65281e441ad55d18501c610..d52f92ef49d145ca9d59eb1a423db6198ba2b1fa 100644 (file)
@@ -401,38 +401,42 @@ void bmw_small_nextBlock(bmw_small_ctx_t* ctx, const void* block){
 }
 
 void bmw_small_lastBlock(bmw_small_ctx_t* ctx, const void* block, uint16_t length_b){
-       uint8_t buffer[64];
+       union {
+               uint8_t   v8[64];
+               uint32_t v32[16];
+               uint64_t v64[ 8];
+       } buffer;
        while(length_b >= BMW_SMALL_BLOCKSIZE){
                bmw_small_nextBlock(ctx, block);
                length_b -= BMW_SMALL_BLOCKSIZE;
                block = (uint8_t*)block + BMW_SMALL_BLOCKSIZE_B;
        }
-       memset(buffer, 0, 64);
-       memcpy(buffer, block, (length_b+7)/8);
-       buffer[length_b>>3] |= 0x80 >> (length_b&0x07);
+       memset(buffer.v8, 0, 64);
+       memcpy(buffer.v8, block, (length_b+7)/8);
+       buffer.v8[length_b>>3] |= 0x80 >> (length_b&0x07);
        if(length_b+1>64*8-64){
-               bmw_small_nextBlock(ctx, buffer);
-               memset(buffer, 0, 64-8);
+               bmw_small_nextBlock(ctx, buffer.v8);
+               memset(buffer.v8, 0, 64-8);
                ctx->counter -= 1;
        }
-       *((uint64_t*)&(buffer[64-8])) = (uint64_t)(ctx->counter*512LL)+(uint64_t)length_b;
-       bmw_small_nextBlock(ctx, buffer);
+       buffer.v64[7] = (uint64_t)(ctx->counter*512LL)+(uint64_t)length_b;
+       bmw_small_nextBlock(ctx, buffer.v8);
 #if TWEAK
        uint8_t i;
        uint32_t q[32];
-       memset(buffer, 0xaa, 64);
+       memset(buffer.v8, 0xaa, 64);
        for(i=0; i<16;++i){
-               buffer[i*4] = i+0xa0;
+               buffer.v8[i*4] = i+0xa0;
        }
-//     dump_x(buffer, 16, 'A');
+//     dump_x(buffer.v8, 16, 'A');
        dump_x(ctx->h, 16, 'M');
-       bmw_small_f0(q, (uint32_t*)buffer, ctx->h);
-       dump_x(buffer, 16, 'a');
+       bmw_small_f0(q, buffer.v32, ctx->h);
+       dump_x(buffer.v8, 16, 'a');
        dump_x(q, 16, 'Q');
-       bmw_small_f1(q, ctx->h, (uint32_t*)buffer);
+       bmw_small_f1(q, ctx->h, buffer.v32);
        dump_x(q, 32, 'Q');
-       bmw_small_f2((uint32_t*)buffer, q, ctx->h);
-       memcpy(ctx->h, buffer, 64);
+       bmw_small_f2(buffer.v32, q, ctx->h);
+       memcpy(ctx->h, buffer.v8, 64);
 #endif
 }
 
index ab03c6716c60bb5171dfcd88c72ed72a25d59b52..fe3de95ae39a4ad773901b94e7c64c3ac1a9ceb2 100644 (file)
@@ -228,37 +228,41 @@ void bmw_small_nextBlock(bmw_small_ctx_t* ctx, const void* block){
 }
 
 void bmw_small_lastBlock(bmw_small_ctx_t* ctx, const void* block, uint16_t length_b){
-       uint8_t buffer[64];
+       union {
+               uint8_t   v8[64];
+               uint32_t v32[16];
+               uint64_t v64[ 8];
+       } buffer;
        while(length_b >= BMW_SMALL_BLOCKSIZE){
                bmw_small_nextBlock(ctx, block);
                length_b -= BMW_SMALL_BLOCKSIZE;
                block = (uint8_t*)block + BMW_SMALL_BLOCKSIZE_B;
        }
-       memset(buffer, 0, 64);
-       memcpy(buffer, block, (length_b+7)/8);
-       buffer[length_b>>3] |= 0x80 >> (length_b&0x07);
+       memset(buffer.v8, 0, 64);
+       memcpy(buffer.v8, block, (length_b+7)/8);
+       buffer.v8[length_b>>3] |= 0x80 >> (length_b&0x07);
        if(length_b+1>64*8-64){
-               bmw_small_nextBlock(ctx, buffer);
-               memset(buffer, 0, 64-8);
+               bmw_small_nextBlock(ctx, buffer.v8);
+               memset(buffer.v8, 0, 64-8);
                ctx->counter -= 1;
        }
-       *((uint64_t*)&(buffer[64-8])) = (uint64_t)(ctx->counter*512LL)+(uint64_t)length_b;
-       bmw_small_nextBlock(ctx, buffer);
+       buffer.v64[7] = (uint64_t)(ctx->counter*512LL)+(uint64_t)length_b;
+       bmw_small_nextBlock(ctx, buffer.v8);
        uint8_t i;
        uint32_t q[32];
-       memset(buffer, 0xaa, 64);
+       memset(buffer.v8, 0xaa, 64);
        for(i=0; i<16;++i){
-               buffer[i*4] = i+0xa0;
+               buffer.v8[i*4] = i+0xa0;
        }
-//     dump_x(buffer, 16, 'A');
+//     dump_x(buffer.v8, 16, 'A');
        dump_x(ctx->h, 16, 'M');
-       bmw_small_f0(q, (uint32_t*)buffer, ctx->h);
-       dump_x(buffer, 16, 'a');
+       bmw_small_f0(q, buffer.v32, ctx->h);
+       dump_x(buffer.v8, 16, 'a');
        dump_x(q, 16, 'Q');
-       bmw_small_f1(q, ctx->h, (uint32_t*)buffer);
+       bmw_small_f1(q, ctx->h, buffer.v32);
        dump_x(q, 32, 'Q');
-       bmw_small_f2((uint32_t*)buffer, q, ctx->h);
-       memcpy(ctx->h, buffer, 64);
+       bmw_small_f2(buffer.v32, q, ctx->h);
+       memcpy(ctx->h, buffer.v8, 64);
 }
 
 void bmw224_init(bmw224_ctx_t* ctx){
diff --git a/host/rsa_oaep_check.rb b/host/rsa_oaep_check.rb
deleted file mode 100644 (file)
index 8d8967e..0000000
+++ /dev/null
@@ -1,413 +0,0 @@
-#!/usr/bin/ruby
-# rsa_oaep_check.rb
-=begin
-    This file is part of the AVR-Crypto-Lib.
-    Copyright (C) 2008  Daniel Otte (daniel.otte@rub.de)
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-=end
-
-require 'rubygems'
-require 'serialport'
-require 'getopt/std'
-
-$buffer_size = 0 # set automatically in init_system
-$conffile_check = Hash.new
-$conffile_check.default = 0
-$debug = false
-$logfile = nil
-
-################################################################################
-# readconfigfile                                                               #
-################################################################################
-
-def read_line_from_device()
-  repeat_counter = 10000
-  l = nil
-  s = ''
-  begin
-    l = $sp.gets()
-    repeat_counter -= 1
-  end while !l && repeat_counter > 0
-  t = Time.new
-  $logfile.printf("DBG: (%02d:%02d:%02d)<< %s\n", t.hour, t.min, t.sec, l.inspect) if $debug
-  if l && l.include?("AVR-Crypto-Lib")
-    $logfile.printf("DBG: system crashed !!!\n")
-    exit(false)
-  end
-  return l
-end
-
-def readconfigfile(fname, conf)
-  return conf if $conffile_check[fname]==1
-  $conffile_check[fname]=1
-  section = "default"
-  if not File.exists?(fname)
-    return conf
-  end
-  file = File.open(fname, "r")
-  until file.eof
-    line = file.gets()
-         next if /[\s]*#/.match(line)
-       if m=/\[[\s]*([^\s]*)[\s]*\]/.match(line)
-           section=m[1]
-           conf[m[1]] = Hash.new
-           next
-         end
-         next if ! /=/.match(line)
-         m=/[\s]*([^\s]*)[\s]*=[\s]*([^\s]*)/.match(line)
-         if m[1]=="include"
-           Dir.glob(m[2]){ |fn| conf = readconfigfile(fn, conf) }
-         else
-         conf[section][m[1]] = m[2]
-         end
-  end
-  file.close()
-  return conf
-end
-
-################################################################################
-# reset_system                                                                 #
-################################################################################
-
-def reset_system
-  $sp.print("\r")
-  sleep 0.1
-  $sp.print("\r")
-  sleep 0.1
-  $sp.print("echo off\r")
-  sleep 0.1
-end
-
-
-def read_block(f)
-  d = Array.new
-  begin
-    l = f.gets
-    x = l.split.collect { |e| e.to_i(16) }
-    d += x
-  end while x.length == 16
-  return d
-end
-
-def goto_next_header(f)
-  while l = f.gets()
-    m = /^#\ (=|-)*[=-]{5}/.match(l)
-    t = :subblock  if m && m[1] == '-'
-    t = :mainblock if m && m[1] == '='
-    if !m && n = /^#\ (.*)$/.match(l)
-      id = n[1]
-      id.sub!(/[\r\n]/,'')
-      return t,id
-    end
-    if !m && !id
-      t = nil
-    end
-  end
-  return nil,nil if !l
-end
-
-def skip_file_header(f)
-  while l = f.gets()
-    return if m = /^#\ [=]{40}/.match(l)
-  end
-end
-
-def test_parse(f)
-  skip_file_header(f)
-  loop do
-    a,b = goto_next_header(f)
-    if !b
-      puts(">>EOF<<")
-      return
-    end
-    if a
-      printf(">>%sblock: %s\n", a==:mainblock ? "main":"sub", b)
-      next
-    end
-    printf(">item: %s\n", b)
-    d = read_block(f)
-    printf(">length: %d (0x%x)\n>data:", d.length, d.length)
-    i = 0
-    d.each do |e|
-      printf("\n>") if i % 16 == 0
-      printf(" %02x", e)
-      i += 1
-    end
-    puts('')
-  end
-end
-=begin
->item: RSA modulus n:
->item: RSA public exponent e: 
->item: RSA private exponent d: 
->item: Prime p: 
->item: Prime q: 
->item: p's CRT exponent dP: 
->item: q's CRT exponent dQ: 
->item: CRT coefficient qInv: 
-=end
-
-def read_key(f)
-  h = Hash.new
-  8.times do
-    q,id = goto_next_header(f)
-    d = read_block(f)    
-    m = /[\ \t]([^\ \t]*):[\ \t]*$/.match(id)
-    if m
-      id = m[1]
-    end
-    h[id] = d
-  end
-  req_items = ['n', 'e', 'd', 'p', 'q', 'dP', 'dQ', 'qInv']
-  req_items.each do |e|
-    printf("ERROR: key component %s is missing!\n", e) if !h[e]
-  end
-  h.each_key do |e|     
-    printf("ERROR: unknown item '%s'!\n", e) if !req_items.index(e)
-  end
-  return h
-end
-
-=begin
->item: Message to be encrypted:
->item: Seed:
->item: Encryption:
-=end
-
-def read_tv(f)
-  subst_hash = {
-    'Message to be encrypted:' => 'msg',
-    'Seed:' => 'seed',
-    'Encryption:' => 'enc'}
-  h = Hash.new
-  3.times do
-    q,id = goto_next_header(f)
-    d = read_block(f)
-    n = subst_hash[id]
-    printf("ERROR: unknown item '%s'!\n", id) if !n
-    h[n] = d
-  end  
-  req_items = ['msg', 'seed', 'enc']
-  req_items.each do |e|
-    printf("ERROR: testvector component %s is missing!\n", e) if !h[e]
-  end
-  while h['enc'][0] == 0
-    h['enc'].delete_at(0)
-  end 
-  return h
-end
-
-def wait_for_dot
-  begin
-    s = $sp.gets()
-  end while !s || !s.include?('.')
-end
-
-def load_bigint(d)
-  $sp.printf("%d\r", d.length)
-  while l = read_line_from_device()
-    break if /data:/.match(l)
-  end
-  printf "ERROR: got no answer from system!" if !l
-  i = 0
-  d.each do |e|
-    $sp.printf("%02x", e)
-    i += 1
-    if i % 60 == 0
-# we should now wait for incomming dot
-      wait_for_dot()
-      print('.')
-    end
-  end
-end
-
-def hexdump(a)
-  i = 0
-  a.each do |e|
-    printf("\n\t") if i % 16 == 0
-    printf('%02x ', e)
-    i += 1
-  end
-  puts('') if i % 16 != 1
-end
-
-def str_hexdump(a)
-  i = 0
-  s = ''
-  a.each do |e|
-    s += "\n\t" if i % 16 == 0
-    s += sprintf('%02x ', e)
-    i += 1
-  end
-  s += "\n" if i % 16 != 1
-  return s
-end
-
-def load_key(k)
-  $sp.print("load-key\r")
-  sleep 0.1
-  v = ['n', 'e', 'p', 'q', 'dP', 'dQ', 'qInv']  
-  v.each do |e|
-    load_bigint(k[e])
-    $logfile.printf("DBG: loaded %s\n", e) if $debug
-  end 
-  while l = read_line_from_device()
-    break if />/.match(l)
-  end
-end
-
-def check_tv(tv)
-  sleep 0.1
-  $sp.print("seed-test\r")
-  sleep 0.1
-  load_bigint(tv['msg'])
-  $logfile.printf("DBG: loaded %s\n", 'msg') if $debug
-  sleep 0.1
-  tv['seed'].each { |e| $sp.printf(" %02x", e) } 
-  while l = read_line_from_device() 
-    break if /ciphertext:/.match(l)
-  end
-  test_enc = ''
-  loop do 
-    l = read_line_from_device()
-    break if ! /([0-9A-Fa-f]{2}\s*)+/.match(l)
-    test_enc += l if l
-  end
-  test_enc_a = Array.new
-  test_enc = test_enc.split(/[\W\r\n]+/)
-  test_enc.each do |e|
-    v = e.sub(/[^0-9A-Fa-f]/, '') 
-    test_enc_a << v if v.length == 2
-  end
-  test_enc_a.collect!{ |e| e.to_i(16) }
-  enc_ok = (test_enc_a == tv['enc'])
-  if !enc_ok
-    $logfile.printf("DBG: ref = %s test = %s\n", str_hexdump(tv['enc']) , str_hexdump(test_enc_a))
-  end
-  m = nil
-  loop do 
-    l = read_line_from_device() 
-    m = /(>>OK<<|ERROR)/.match(l)
-    break if m
-  end
-  return true if enc_ok && (m[1] == '>>OK<<') 
-  return false
-end
-
-def run_test(f,skip_key=1,skip_vec=1)
-  ok = 0
-  fail = 0
-  key_idx = 0
-  vec_idx = 0
-  skip_file_header(f)
-  loop do
-    a,b = goto_next_header(f)
-    $logfile.printf("DBG: a=%s b=%s\n", a.inspect, b.inspect) if $debug
-    return ok,fail if !b
-    if a == :mainblock
-# Example 1: A 1024-bit RSA Key Pair
-      b.sub!(/[\d]+:/) { |s| sprintf("%3d,", s.to_i)} 
-      printf("\n>> %s: ", b)
-    #  (35-b.length).times { putc(' ')}
-    end
-    if a == :subblock
-      if b == 'Components of the RSA Key Pair'
-        k = read_key(f)
-        key_idx += 1
-        vec_idx = 0
-        load_key(k) if skip_key <= key_idx
-      else
-        tv = read_tv(f)
-        vec_idx += 1
-        if (key_idx > skip_key) || (key_idx == skip_key && vec_idx >= skip_vec)
-          r = check_tv(tv)
-          if r
-            ok += 1
-            putc('*')
-          else
-            fail += 1
-            putc('!')
-          end 
-        else
-          putc('o')
-        end     
-      end
-    end
-  end
-end
-
-########################################
-# MAIN
-########################################
-
-
-opts = Getopt::Std.getopts("dc:f:il:s:")
-
-conf = Hash.new
-conf = readconfigfile("/etc/testport.conf", conf)
-conf = readconfigfile("~/.testport.conf", conf)
-conf = readconfigfile("testport.conf", conf)
-conf = readconfigfile(opts["c"], conf) if opts["c"]
-
-#puts conf.inspect
-
-puts("serial port interface version: " + SerialPort::VERSION);
-$linewidth = 64
-params = { "baud"       => conf["PORT"]["baud"].to_i,
-            "data_bits" => conf["PORT"]["databits"].to_i,
-            "stop_bits" => conf["PORT"]["stopbits"].to_i,
-            "parity"    => SerialPort::NONE }
-params["paraty"] = SerialPort::ODD   if conf["PORT"]["paraty"].downcase == "odd"
-params["paraty"] = SerialPort::EVEN  if conf["PORT"]["paraty"].downcase == "even"
-params["paraty"] = SerialPort::MARK  if conf["PORT"]["paraty"].downcase == "mark"
-params["paraty"] = SerialPort::SPACE if conf["PORT"]["paraty"].downcase == "space"
-
-puts("\nPort: "+conf["PORT"]["port"]+"@"    +
-                params["baud"].to_s      +
-                " "                      +
-                params["data_bits"].to_s +
-                conf["PORT"]["paraty"][0,1].upcase +
-                params["stop_bits"].to_s +
-                "\n")
-
-$sp = SerialPort.new(conf["PORT"]["port"], params)
-
-$sp.read_timeout=1000; # 5 minutes
-$sp.flow_control = SerialPort::SOFT
-
-$debug = true if opts['d']
-
-if opts['s'] && m = opts['s'].match(/([\d]+\.([\d]+))/)
-  sk = m[1].to_i
-  sv = m[2].to_i
-else
-  sk = 1
-  sv = 1
-end
-
-if opts['l']
-  $logfile = File.open(opts['l'], 'w')
-end
-
-$logfile = STDOUT if ! $logfile
-$logfile.sync = true
-reset_system()
-
-f = File.open(opts['f'], "r")
-exit if !f
-ok,fail = run_test(f,sk,sv)
-printf("\nOK: %d FAIL: %d :-%s\n",ok,fail, fail==0 ? ')':'(')
-
-
diff --git a/host/rsa_pkcs15_check.rb b/host/rsa_pkcs15_check.rb
deleted file mode 100644 (file)
index cdafa8a..0000000
+++ /dev/null
@@ -1,390 +0,0 @@
-#!/usr/bin/ruby
-# rsa_pkcs15_check.rb
-=begin
-    This file is part of the AVR-Crypto-Lib.
-    Copyright (C) 2008  Daniel Otte (daniel.otte@rub.de)
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-=end
-
-require 'rubygems'
-require 'serialport'
-require 'getopt/std'
-
-$buffer_size = 0 # set automatically in init_system
-$conffile_check = Hash.new
-$conffile_check.default = 0
-$debug = false
-$logfile = nil
-
-################################################################################
-# readconfigfile                                                               #
-################################################################################
-
-def read_line_from_device()
-  repeat_counter = 10000
-  l = nil
-  s = ''
-  begin
-    l = $sp.gets()
-    repeat_counter -= 1
-  end while !l && repeat_counter > 0
-  t = Time.new
-  $logfile.printf("DBG: (%02d:%02d:%02d)<< %s\n", t.hour, t.min, t.sec, l.inspect) if $debug
-  if l && l.include?("AVR-Crypto-Lib")
-    $logfile.printf("DBG: system crashed !!!\n")
-    exit(false)
-  end
-  return l
-end
-
-def readconfigfile(fname, conf)
-  return conf if $conffile_check[fname]==1
-  $conffile_check[fname]=1
-  section = "default"
-  if not File.exists?(fname)
-    return conf
-  end
-  file = File.open(fname, "r")
-  until file.eof
-    line = file.gets()
-         next if /[\s]*#/.match(line)
-       if m=/\[[\s]*([^\s]*)[\s]*\]/.match(line)
-           section=m[1]
-           conf[m[1]] = Hash.new
-           next
-         end
-         next if ! /=/.match(line)
-         m=/[\s]*([^\s]*)[\s]*=[\s]*([^\s]*)/.match(line)
-         if m[1]=="include"
-           Dir.glob(m[2]){ |fn| conf = readconfigfile(fn, conf) }
-         else
-         conf[section][m[1]] = m[2]
-         end
-  end
-  file.close()
-  return conf
-end
-
-################################################################################
-# reset_system                                                                 #
-################################################################################
-
-def reset_system
-  $sp.print("\r")
-  sleep 0.1
-  $sp.print("\r")
-  sleep 0.1
-  $sp.print("echo off\r")
-  sleep 0.1
-end
-
-
-def read_block(f)
-  d = Array.new
-  begin
-    l = f.gets
-    x = l.split.collect { |e| e.to_i(16) }
-    d += x
-  end while x.length == 16
-  return d
-end
-
-=begin
-# Modulus: 
-# Exponent: 
-# Modulus: 
-# Public exponent: 
-# Exponent: 
-# Prime 1: 
-# Prime 2: 
-# Prime exponent 1: 
-# Prime exponent 2: 
-# Coefficient: 
-# Message:
-# Seed:
-# Encryption:
-
-=end
-
-def get_next_block(f)
-  ret = Hash.new
-  data = Array.new
-  begin
-    l = f.gets
-  end while l && ! m= l.match(/^#[\s](.*):[\s]*$/)
-  return nil if ! l
-  ret['tag'] = m[1]
-  ret['line'] = f.lineno
-  data = read_block(f)
-  ret['data'] = data
-  return ret
-end
-
-$key_sequence = [
-  'Modulus',             # 0
-  'Exponent',            # 1
-  'Modulus',             # 2
-  'Public exponent',     # 3
-  'Exponent',            # 4
-  'Prime 1',             # 5
-  'Prime 2',             # 6
-  'Prime exponent 1',    # 7
-  'Prime exponent 2',    # 8
-  'Coefficient',         # 9
-]
-
-def key_consitency_check(k)
-  return true
-end
-
-def process_file(f, skip_key=1, skip_vec=1)
-  a = get_next_block(f)
-  key_no = 0
-  ok_counter = 0
-  fail_counter = 0
-  begin
-    if !a || ! a['tag'] == 'Modulus'
-      printf("ERROR: a = %s %d\n", a.inspect, __LINE__)
-      return
-    end
-    k_seq = Array.new
-    k_seq[0] = a
-    (1..($key_sequence.length-1)).each do |i|
-      a = get_next_block(f)
-      if ! a || a['tag'] != $key_sequence[i]
-        printf("ERROR: (expecting: %s) a = %s %d\n", $key_sequence[i], a.inspect, __LINE__)
-      end
-      k_seq[i] = a
-    end
-    key = convert_key(k_seq)
-    printf("ERROR: %d\n", __LINE__) if ! key
-    key_no += 1
-    vec_no = 0
-    printf("\n run %3d: ", key_no)
-    skip_key_flag = (key_no < skip_key)
-    load_key(key) if ! skip_key_flag
-    test_seq = Array.new
-    a = get_next_block(f)
-    printf("ERROR: %d\n", __LINE__) if ! a 
-    begin
-      vec_no += 1
-      b = get_next_block(f)
-      c = get_next_block(f)
-      tv = Hash.new
-      tv['msg'] = a['data']
-      tv['seed'] = b['data']
-      tv['enc'] = c['data'] 
-      skip_vec_flag = (skip_key_flag || (key_no == skip_key && vec_no < skip_vec))
-      if skip_vec_flag
-        printf('o')
-      else
-        v = check_tv(tv)
-        if(v == true)
-          printf('*')
-          $logfile.printf("[[Test %2d.%02d = OK]]\n", key_no, vec_no)
-          ok_counter += 1
-        else
-          printf('%c', v ? '*' : '!')
-          $logfile.printf("[[Test %2d.%02d = FAIL]]\n", key_no, vec_no)
-          fail_counter += 1
-        end
-      end
-      a = get_next_block(f)
-    end while a && a['tag'] == 'Message'
-  end while a && a['tag'] = 'Modulus'
-#  printf("\nResult: %d OK / %d FAIL ==> %s \nFinished\n", ok_counter, fail_counter, fail_counter==0 ? ':-)' : ':-(')
-  return ok_counter,fail_counter
-end
-
-def convert_key(k_seq)
-  l = ['n', 'e', 'd', 'p', 'q', 'dP', 'dQ', 'qInv']
-  r = Hash.new
-  return nil if k_seq[0]['data'] != k_seq[2]['data']
-  return nil if k_seq[1]['data'] != k_seq[3]['data']
-  8.times do |i|
-    r[l[i]] = k_seq[2 + i]['data'] 
-  end
-  return r
-end
-
-def wait_for_dot
-  begin
-    s = $sp.gets()
-  end while !s || !s.include?('.')
-end
-
-def load_bigint(d)
-  $sp.printf("%d\r", d.length)
-  while l = read_line_from_device()
-    break if /data:/.match(l)
-  end
-  printf "ERROR: got no answer from system!" if !l
-  i = 0
-  d.each do |e|
-    $sp.printf("%02x", e)
-    i += 1
-    if i % 60 == 0
-# we should now wait for incomming dot
-      wait_for_dot()
-      print('.')
-    end
-  end
-end
-
-def hexdump(a)
-  i = 0
-  a.each do |e|
-    printf("\n\t") if i % 16 == 0
-    printf('%02x ', e)
-    i += 1
-  end
-  puts('') if i % 16 != 1
-end
-
-def str_hexdump(a)
-  i = 0
-  s = ''
-  a.each do |e|
-    s += "\n\t" if i % 16 == 0
-    s += sprintf('%02x ', e)
-    i += 1
-  end
-  s += "\n" if i % 16 != 1
-  return s
-end
-
-def load_key(k)
-  $sp.print("load-key\r")
-  sleep 0.1
-  v = ['n', 'e', 'p', 'q', 'dP', 'dQ', 'qInv']  
-  v.each do |e|
-    load_bigint(k[e])
-    $logfile.printf("DBG: loaded %s\n", e) if $debug
-  end 
-  while l = read_line_from_device()
-    break if />/.match(l)
-  end
-end
-
-def strip_leading_zeros(a)
-  loop do
-    return [] if a.length == 0
-    return a if a[0] != 0
-    a.delete_at(0)
-  end
-end
-
-def check_tv(tv)
-  sleep 0.1
-  $sp.print("seed-test\r")
-  sleep 0.1
-  load_bigint(tv['msg'])
-  $logfile.printf("DBG: loaded %s\n", 'msg') if $debug
-  sleep 0.1
-  tv['seed'].each { |e| $sp.printf(" %02x", e) } 
-  while l = read_line_from_device() 
-    break if /ciphertext:/.match(l)
-  end
-  test_enc = ''
-  loop do 
-    l = read_line_from_device()
-    break if ! /([0-9A-Fa-f]{2}\s*)+/.match(l)
-    test_enc += l if l
-  end
-  test_enc_a = Array.new
-  test_enc = test_enc.split(/[\W\r\n]+/)
-  test_enc.each do |e|
-    v = e.sub(/[^0-9A-Fa-f]/, '') 
-    test_enc_a << v if v.length == 2
-  end
-  test_enc_a.collect!{ |e| e.to_i(16) }
-  strip_leading_zeros(test_enc_a)
-  strip_leading_zeros(tv['enc'])
-  enc_ok = (test_enc_a == tv['enc'])
-  if !enc_ok
-    $logfile.printf("DBG: ref = %s test = %s\n", str_hexdump(tv['enc']) , str_hexdump(test_enc_a))
-  end
-  m = nil
-  loop do 
-    l = read_line_from_device() 
-    m = /(>>OK<<|ERROR)/.match(l)
-    break if m
-  end
-  return true if enc_ok && (m[1] == '>>OK<<') 
-  return false
-end
-
-########################################
-# MAIN
-########################################
-
-
-opts = Getopt::Std.getopts('dc:f:il:s:')
-
-conf = Hash.new
-conf = readconfigfile("/etc/testport.conf", conf)
-conf = readconfigfile("~/.testport.conf", conf)
-conf = readconfigfile("testport.conf", conf)
-conf = readconfigfile(opts["c"], conf) if opts["c"]
-
-#puts conf.inspect
-
-puts("serial port interface version: " + SerialPort::VERSION);
-$linewidth = 64
-params = { "baud"       => conf["PORT"]["baud"].to_i,
-            "data_bits" => conf["PORT"]["databits"].to_i,
-            "stop_bits" => conf["PORT"]["stopbits"].to_i,
-            "parity"    => SerialPort::NONE }
-params["paraty"] = SerialPort::ODD   if conf["PORT"]["paraty"].downcase == "odd"
-params["paraty"] = SerialPort::EVEN  if conf["PORT"]["paraty"].downcase == "even"
-params["paraty"] = SerialPort::MARK  if conf["PORT"]["paraty"].downcase == "mark"
-params["paraty"] = SerialPort::SPACE if conf["PORT"]["paraty"].downcase == "space"
-
-puts("\nPort: "+conf["PORT"]["port"]+"@"    +
-                params["baud"].to_s      +
-                " "                      +
-                params["data_bits"].to_s +
-                conf["PORT"]["paraty"][0,1].upcase +
-                params["stop_bits"].to_s +
-                "\n")
-
-$sp = SerialPort.new(conf["PORT"]["port"], params)
-
-$sp.read_timeout=1000; # 5 minutes
-$sp.flow_control = SerialPort::SOFT
-
-$debug = true if opts['d']
-
-if opts['l']
-  $logfile = File.open(opts['l'], 'w')
-end
-
-$logfile = STDOUT if ! $logfile
-reset_system()
-
-if opts['s'] && m = opts['s'].match(/([\d]+\.([\d]+))/)
-  sk = m[1].to_i
-  sv = m[2].to_i
-else
-  sk = 1
-  sv = 1
-end
-
-f = File.open(opts['f'], "r")
-exit if !f
-ok,fail = process_file(f,sk,sv)
-printf("\nOK: %d FAIL: %d :-%s\n",ok,fail, fail==0 ? ')':'(')
-
-
diff --git a/host/rsaes_oaep_check.rb b/host/rsaes_oaep_check.rb
new file mode 100644 (file)
index 0000000..1753914
--- /dev/null
@@ -0,0 +1,441 @@
+#!/usr/bin/ruby
+# rsaes_oaep_check.rb
+=begin
+    This file is part of the AVR-Crypto-Lib.
+    Copyright (C) 2008  Daniel Otte (daniel.otte@rub.de)
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+=end
+
+require 'rubygems'
+require 'serialport'
+require 'getopt/std'
+
+$buffer_size = 0 # set automatically in init_system
+$conffile_check = Hash.new
+$conffile_check.default = 0
+$debug = false
+$logfile = nil
+
+################################################################################
+# readconfigfile                                                               #
+################################################################################
+
+def read_line_from_device()
+  repeat_counter = 10000
+  l = nil
+  s = ''
+  begin
+    l = $sp.gets()
+    repeat_counter -= 1
+  end while !l && repeat_counter > 0
+  t = Time.new
+  $logfile.printf("DBG: (%02d:%02d:%02d)<< %s\n", t.hour, t.min, t.sec, l.inspect) if $debug
+  if l && l.include?("AVR-Crypto-Lib")
+    $logfile.printf("DBG: system crashed !!!\n")
+    exit(false)
+  end
+  return l
+end
+
+def readconfigfile(fname, conf)
+  return conf if $conffile_check[fname]==1
+  $conffile_check[fname]=1
+  section = "default"
+  if not File.exists?(fname)
+    return conf
+  end
+  file = File.open(fname, "r")
+  until file.eof
+    line = file.gets()
+         next if /[\s]*#/.match(line)
+       if m=/\[[\s]*([^\s]*)[\s]*\]/.match(line)
+           section=m[1]
+           conf[m[1]] = Hash.new
+           next
+         end
+         next if ! /=/.match(line)
+         m=/[\s]*([^\s]*)[\s]*=[\s]*([^\s]*)/.match(line)
+         if m[1]=="include"
+           Dir.glob(m[2]){ |fn| conf = readconfigfile(fn, conf) }
+         else
+         conf[section][m[1]] = m[2]
+         end
+  end
+  file.close()
+  return conf
+end
+
+################################################################################
+# reset_system                                                                 #
+################################################################################
+
+def reset_system
+  $sp.print("\r")
+  sleep 0.1
+  $sp.print("\r")
+  sleep 0.1
+  $sp.print("echo off\r")
+  sleep 0.1
+end
+
+
+def read_block(f)
+  d = Array.new
+  begin
+    l = f.gets
+    x = l.split.collect { |e| e.to_i(16) }
+    d += x
+  end while x.length == 16
+  return d
+end
+
+def goto_next_header(f)
+  while l = f.gets()
+    m = /^#\ (=|-)*[=-]{5}/.match(l)
+    t = :subblock  if m && m[1] == '-'
+    t = :mainblock if m && m[1] == '='
+    if !m && n = /^#\ (.*)$/.match(l)
+      id = n[1]
+      id.sub!(/[\r\n]/,'')
+      return t,id
+    end
+    if !m && !id
+      t = nil
+    end
+  end
+  return nil,nil if !l
+end
+
+def skip_file_header(f)
+  while l = f.gets()
+    return if m = /^#\ [=]{40}/.match(l)
+  end
+end
+
+def test_parse(f)
+  skip_file_header(f)
+  loop do
+    a,b = goto_next_header(f)
+    if !b
+      puts(">>EOF<<")
+      return
+    end
+    if a
+      printf(">>%sblock: %s\n", a==:mainblock ? "main":"sub", b)
+      next
+    end
+    printf(">item: %s\n", b)
+    d = read_block(f)
+    printf(">length: %d (0x%x)\n>data:", d.length, d.length)
+    i = 0
+    d.each do |e|
+      printf("\n>") if i % 16 == 0
+      printf(" %02x", e)
+      i += 1
+    end
+    puts('')
+  end
+end
+=begin
+>item: RSA modulus n:
+>item: RSA public exponent e: 
+>item: RSA private exponent d: 
+>item: Prime p: 
+>item: Prime q: 
+>item: p's CRT exponent dP: 
+>item: q's CRT exponent dQ: 
+>item: CRT coefficient qInv: 
+=end
+
+def read_key(f)
+  h = Hash.new
+  8.times do
+    q,id = goto_next_header(f)
+    d = read_block(f)    
+    m = /[\ \t]([^\ \t]*):[\ \t]*$/.match(id)
+    if m
+      id = m[1]
+    end
+    h[id] = d
+  end
+  req_items = ['n', 'e', 'd', 'p', 'q', 'dP', 'dQ', 'qInv']
+  req_items.each do |e|
+    printf("ERROR: key component %s is missing!\n", e) if !h[e]
+  end
+  h.each_key do |e|     
+    printf("ERROR: unknown item '%s'!\n", e) if !req_items.index(e)
+  end
+  return h
+end
+
+=begin
+>item: Message to be encrypted:
+>item: Seed:
+>item: Encryption:
+=end
+
+def read_tv(f)
+  subst_hash = {
+    'Message to be encrypted:' => 'msg',
+    'Seed:' => 'seed',
+    'Encryption:' => 'enc'}
+  h = Hash.new
+  3.times do
+    q,id = goto_next_header(f)
+    d = read_block(f)
+    n = subst_hash[id]
+    printf("ERROR: unknown item '%s'!\n", id) if !n
+    h[n] = d
+  end  
+  req_items = ['msg', 'seed', 'enc']
+  req_items.each do |e|
+    printf("ERROR: testvector component %s is missing!\n", e) if !h[e]
+  end
+  while h['enc'][0] == 0
+    h['enc'].delete_at(0)
+  end 
+  return h
+end
+
+def wait_for_dot
+  begin
+    s = $sp.gets()
+  end while !s || !s.include?('.')
+end
+
+def load_bigint(d)
+  $sp.printf("%d\r", d.length)
+  while l = read_line_from_device()
+    break if /data:/.match(l)
+  end
+  printf "ERROR: got no answer from system!" if !l
+  i = 0
+  d.each do |e|
+    $sp.printf("%02x", e)
+    i += 1
+    if i % 60 == 0
+# we should now wait for incomming dot
+      wait_for_dot()
+      print('.')
+    end
+  end
+end
+
+def hexdump(a)
+  i = 0
+  a.each do |e|
+    printf("\n\t") if i % 16 == 0
+    printf('%02x ', e)
+    i += 1
+  end
+  puts('') if i % 16 != 1
+end
+
+def str_hexdump(a)
+  i = 0
+  s = ''
+  a.each do |e|
+    s += "\n\t" if i % 16 == 0
+    s += sprintf('%02x ', e)
+    i += 1
+  end
+  s += "\n" if i % 16 != 1
+  return s
+end
+
+def load_key(k)
+  $sp.print("load-key\r")
+  sleep 0.1
+  v = ['n', 'e', 'p', 'q', 'dP', 'dQ', 'qInv']  
+  v.each do |e|
+    load_bigint(k[e])
+    $logfile.printf("DBG: loaded %s\n", e) if $debug
+  end 
+  while l = read_line_from_device()
+    break if />/.match(l)
+  end
+end
+
+def check_tv(tv)
+  sleep 0.1
+  $sp.print("seed-test\r")
+  sleep 0.1
+  load_bigint(tv['msg'])
+  $logfile.printf("DBG: loaded %s\n", 'msg') if $debug
+  sleep 0.1
+  tv['seed'].each { |e| $sp.printf(" %02x", e) } 
+  while l = read_line_from_device() 
+    break if /ciphertext:/.match(l)
+  end
+  test_enc = ''
+  loop do 
+    l = read_line_from_device()
+    break if ! /([0-9A-Fa-f]{2}\s*)+/.match(l)
+    test_enc += l if l
+  end
+  test_enc_a = Array.new
+  test_enc = test_enc.split(/[\W\r\n]+/)
+  test_enc.each do |e|
+    v = e.sub(/[^0-9A-Fa-f]/, '') 
+    test_enc_a << v if v.length == 2
+  end
+  test_enc_a.collect!{ |e| e.to_i(16) }
+  enc_ok = (test_enc_a == tv['enc'])
+  if !enc_ok
+    $logfile.printf("DBG: ref = %s test = %s\n", str_hexdump(tv['enc']) , str_hexdump(test_enc_a))
+  end
+  m = nil
+  loop do 
+    l = read_line_from_device() 
+    m = /(>>OK<<|ERROR)/.match(l)
+    break if m
+  end
+  return true if enc_ok && (m[1] == '>>OK<<') 
+  return false
+end
+
+def run_test(f,skip_key=1,skip_vec=1)
+  ok = 0
+  fail = 0
+  key_idx = 0
+  vec_idx = 0
+  skip_file_header(f)
+  loop do
+    a,b = goto_next_header(f)
+    $logfile.printf("DBG: a=%s b=%s\n", a.inspect, b.inspect) if $debug
+    return ok,fail if !b
+    if a == :mainblock
+# Example 1: A 1024-bit RSA Key Pair
+      b.sub!(/[\d]+:/) { |s| sprintf("%3d,", s.to_i)} 
+      printf("\n>> %s: ", b)
+    #  (35-b.length).times { putc(' ')}
+    end
+    if a == :subblock
+      if b == 'Components of the RSA Key Pair'
+        k = read_key(f)
+        key_idx += 1
+        vec_idx = 0
+        load_key(k) if skip_key <= key_idx
+      else
+        tv = read_tv(f)
+        vec_idx += 1
+        if (key_idx > skip_key) || (key_idx == skip_key && vec_idx >= skip_vec)
+          r = check_tv(tv)
+          if r
+            ok += 1
+            putc('*')
+          else
+            fail += 1
+            putc('!')
+          end 
+        else
+          putc('o')
+        end     
+      end
+    end
+  end
+end
+
+########################################
+# MAIN
+########################################
+
+
+opts = Getopt::Std.getopts("dc:f:il:s:n:")
+
+conf = Hash.new
+conf = readconfigfile("/etc/testport.conf", conf)
+conf = readconfigfile("~/.testport.conf", conf)
+conf = readconfigfile("testport.conf", conf)
+conf = readconfigfile(opts["c"], conf) if opts["c"]
+
+#puts conf.inspect
+
+puts("serial port interface version: " + SerialPort::VERSION);
+$linewidth = 64
+params = { "baud"       => conf["PORT"]["baud"].to_i,
+            "data_bits" => conf["PORT"]["databits"].to_i,
+            "stop_bits" => conf["PORT"]["stopbits"].to_i,
+            "parity"    => SerialPort::NONE }
+params["paraty"] = SerialPort::ODD   if conf["PORT"]["paraty"].downcase == "odd"
+params["paraty"] = SerialPort::EVEN  if conf["PORT"]["paraty"].downcase == "even"
+params["paraty"] = SerialPort::MARK  if conf["PORT"]["paraty"].downcase == "mark"
+params["paraty"] = SerialPort::SPACE if conf["PORT"]["paraty"].downcase == "space"
+
+puts("\nPort: "+conf["PORT"]["port"]+"@"    +
+                params["baud"].to_s      +
+                " "                      +
+                params["data_bits"].to_s +
+                conf["PORT"]["paraty"][0,1].upcase +
+                params["stop_bits"].to_s +
+                "\n")
+
+$sp = SerialPort.new(conf["PORT"]["port"], params)
+
+$sp.read_timeout=1000; # 5 minutes
+$sp.flow_control = SerialPort::SOFT
+
+$debug = true if opts['d']
+
+if opts['s'] && m = opts['s'].match(/([\d]+\.([\d]+))/)
+  sk = m[1].to_i
+  sv = m[2].to_i
+else
+  sk = 1
+  sv = 1
+end
+
+if opts['l'] && ! opts['n']
+  $logfile = File.open(opts['l'], 'w')
+end
+
+base_name = 'rsaes_oaep'
+
+if opts['n']
+  logfilename = conf['PORT']['testlogbase'] + base_name + '_' + opts['n'] + '.txt'
+  if File.exists?(logfilename)
+    i=1
+    begin
+      logfilename = sprintf('%s%04d%s', conf['PORT']['testlogbase'] + base_name + '_' + opts['n'] + '_', i, '.txt')
+      i+=1
+    end while(File.exists?(logfilename))
+    while(i>2) do
+      n1 = sprintf('%s%04d%s', conf['PORT']['testlogbase'] + base_name + '_' + opts['n'] + '_', i-2, '.txt')
+      n2 = sprintf('%s%04d%s', conf['PORT']['testlogbase'] + base_name + '_' + opts['n'] + '_', i-1, '.txt')
+      File.rename(n1, n2)
+      printf("%s -> %s\n", n1, n2)
+      i-=1
+    end
+    n1 = sprintf('%s%s', conf['PORT']['testlogbase'], base_name + '_' + opts['n'] + '.txt')
+    n2 = sprintf('%s%04d%s', conf['PORT']['testlogbase'] + base_name + '_' + opts['n'] + '_', 1, '.txt')
+    File.rename(n1, n2)
+    printf("%s -> %s\n", n1, n2)
+    logfilename = conf['PORT']['testlogbase'] + base_name + '_' + opts['n'] + '.txt'
+  end
+  printf("logging to %s", logfilename)
+  $logfile = File.open(logfilename, 'w')
+end
+
+
+$logfile = STDOUT if ! $logfile
+$logfile.sync = true
+reset_system()
+
+f = File.open(opts['f'], "r")
+exit if !f
+ok,fail = run_test(f,sk,sv)
+printf("\nOK: %d FAIL: %d :-%s\n",ok,fail, fail==0 ? ')':'(')
+
+
diff --git a/host/rsaes_pkcs1v15_check.rb b/host/rsaes_pkcs1v15_check.rb
new file mode 100644 (file)
index 0000000..04b995c
--- /dev/null
@@ -0,0 +1,443 @@
+#!/usr/bin/ruby
+# rsaes_pkcs1v15_check.rb
+=begin
+    This file is part of the AVR-Crypto-Lib.
+    Copyright (C) 2008  Daniel Otte (daniel.otte@rub.de)
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+=end
+
+require 'rubygems'
+require 'serialport'
+require 'getopt/std'
+require 'fileutils'
+
+$buffer_size = 0 # set automatically in init_system
+$conffile_check = Hash.new
+$conffile_check.default = 0
+$progress_dots = false
+$debug = false
+$logfile = nil
+
+################################################################################
+# readconfigfile                                                               #
+################################################################################
+
+def read_line_from_device()
+  repeat_counter = 10000
+  l = nil
+  s = ''
+  begin
+    l = $sp.gets()
+    repeat_counter -= 1
+  end while !l && repeat_counter > 0
+  t = Time.new
+  $logfile.printf("DBG: (%02d:%02d:%02d)<< %s\n", t.hour, t.min, t.sec, l.inspect) if $debug
+  if l && l.include?("AVR-Crypto-Lib")
+    $logfile.printf("DBG: system crashed !!!\n")
+    exit(false)
+  end
+  return l
+end
+
+def readconfigfile(fname, conf)
+  return conf if $conffile_check[fname]==1
+  $conffile_check[fname]=1
+  section = "default"
+  if not File.exists?(fname)
+    return conf
+  end
+  file = File.open(fname, "r")
+  until file.eof
+    line = file.gets()
+         next if /[\s]*#/.match(line)
+       if m=/\[[\s]*([^\s]*)[\s]*\]/.match(line)
+           section=m[1]
+           conf[m[1]] = Hash.new
+           next
+         end
+         next if ! /=/.match(line)
+         m=/[\s]*([^\s]*)[\s]*=[\s]*([^\s]*)/.match(line)
+         if m[1]=="include"
+           Dir.glob(m[2]){ |fn| conf = readconfigfile(fn, conf) }
+         else
+         conf[section][m[1]] = m[2]
+         end
+  end
+  file.close()
+  return conf
+end
+
+################################################################################
+# reset_system                                                                 #
+################################################################################
+
+def reset_system
+  $sp.print("\r")
+  sleep 0.1
+  $sp.print("\r")
+  sleep 0.1
+  $sp.print("echo off\r")
+  sleep 0.1
+end
+
+
+def read_block(f)
+  d = Array.new
+  begin
+    v = false
+    l = f.gets
+ #   x = l.split.collect { |e| e.to_i(16) }
+    t = l.split
+    t.each { |e| v = true if e.length != 2 }
+    x = []
+    x = t.collect { |e| e.to_i(16) } if ! v
+    d += x
+  end while x.length == 16 && ! v
+  return d
+end
+
+=begin
+# Modulus: 
+# Exponent: 
+# Modulus: 
+# Public exponent: 
+# Exponent: 
+# Prime 1: 
+# Prime 2: 
+# Prime exponent 1: 
+# Prime exponent 2: 
+# Coefficient: 
+# Message:
+# Seed:
+# Encryption:
+
+=end
+
+def get_next_block(f)
+  ret = Hash.new
+  data = Array.new
+  begin
+    l = f.gets
+  end while l && ! m= l.match(/^#[\s](.*):[\s]*$/)
+  return nil if ! l
+  ret['tag'] = m[1]
+  ret['line'] = f.lineno
+  data = read_block(f)
+  ret['data'] = data
+  return ret
+end
+
+$key_sequence = [
+  'Modulus',             # 0
+  'Exponent',            # 1
+  'Modulus',             # 2
+  'Public exponent',     # 3
+  'Exponent',            # 4
+  'Prime 1',             # 5
+  'Prime 2',             # 6
+  'Prime exponent 1',    # 7
+  'Prime exponent 2',    # 8
+  'Coefficient',         # 9
+]
+
+def key_consitency_check(k)
+  return true
+end
+
+def process_file(f, skip_key=1, skip_vec=1)
+  a = get_next_block(f)
+  key_no = 0
+  ok_counter = 0
+  fail_counter = 0
+  begin
+    if !a || ! a['tag'] == 'Modulus'
+      printf("ERROR: a = %s %d\n", a.inspect, __LINE__)
+      return
+    end
+    k_seq = Array.new
+    k_seq[0] = a
+    (1..($key_sequence.length-1)).each do |i|
+      a = get_next_block(f)
+      if ! a || a['tag'] != $key_sequence[i]
+        printf("ERROR: (expecting: %s) a = %s %d\n", $key_sequence[i], a.inspect, __LINE__)
+      end
+      k_seq[i] = a
+    end
+    key = convert_key(k_seq)
+    printf("ERROR: %d\n", __LINE__) if ! key
+    key_no += 1
+    vec_no = 0
+    printf("\n run %3d: ", key_no)
+    skip_key_flag = (key_no < skip_key)
+    load_key(key) if ! skip_key_flag
+    test_seq = Array.new
+    a = get_next_block(f)
+    printf("ERROR: %d\n", __LINE__) if ! a 
+    begin
+      vec_no += 1
+      b = get_next_block(f)
+      c = get_next_block(f)
+      tv = Hash.new
+      tv['msg'] = a['data']
+      tv['seed'] = b['data']
+      tv['enc'] = c['data'] 
+      skip_vec_flag = (skip_key_flag || (key_no == skip_key && vec_no < skip_vec))
+      if skip_vec_flag
+        printf('o')
+      else
+        v = check_tv(tv)
+        if(v == true)
+          printf('*')
+          $logfile.printf("[[Test %2d.%02d = OK]]\n", key_no, vec_no)
+          ok_counter += 1
+        else
+          printf('%c', v ? '*' : '!')
+          $logfile.printf("[[Test %2d.%02d = FAIL]]\n", key_no, vec_no)
+          fail_counter += 1
+        end
+      end
+      a = get_next_block(f)
+    end while a && a['tag'] == 'Message'
+  end while a && a['tag'] = 'Modulus'
+#  printf("\nResult: %d OK / %d FAIL ==> %s \nFinished\n", ok_counter, fail_counter, fail_counter==0 ? ':-)' : ':-(')
+  return ok_counter,fail_counter
+end
+
+def convert_key(k_seq)
+  l = ['n', 'e', 'd', 'p', 'q', 'dP', 'dQ', 'qInv']
+  r = Hash.new
+  return nil if k_seq[0]['data'] != k_seq[2]['data']
+  return nil if k_seq[1]['data'] != k_seq[3]['data']
+  8.times do |i|
+    r[l[i]] = k_seq[2 + i]['data'] 
+  end
+  return r
+end
+
+def wait_for_dot
+  begin
+    s = $sp.gets()
+  end while !s || !s.include?('.')
+end
+
+def load_bigint(d)
+  $sp.printf("%d\r", d.length)
+  while l = read_line_from_device()
+    break if /data:/.match(l)
+  end
+  printf "ERROR: got no answer from system!" if !l
+  i = 0
+  d.each do |e|
+    $sp.printf("%02x", e)
+    i += 1
+    if i % 60 == 0
+# we should now wait for incomming dot
+      wait_for_dot()
+      print('.') if $progress_dots
+    end
+  end
+end
+
+def hexdump(a)
+  i = 0
+  a.each do |e|
+    printf("\n\t") if i % 16 == 0
+    printf('%02x ', e)
+    i += 1
+  end
+  puts('') if i % 16 != 1
+end
+
+def str_hexdump(a)
+  i = 0
+  s = ''
+  a.each do |e|
+    s += "\n\t" if i % 16 == 0
+    s += sprintf('%02x ', e)
+    i += 1
+  end
+  s += "\n" if i % 16 != 1
+  return s
+end
+
+def load_key(k)
+  $sp.print("load-key\r")
+  sleep 0.1
+  v = ['n', 'e', 'p', 'q', 'dP', 'dQ', 'qInv']  
+  v.each do |e|
+    load_bigint(k[e])
+    $logfile.printf("DBG: loaded %s\n", e) if $debug
+  end 
+  while l = read_line_from_device()
+    break if />/.match(l)
+  end
+end
+
+def strip_leading_zeros(a)
+  loop do
+    return [] if a.length == 0
+    return a if a[0] != 0
+    a.delete_at(0)
+  end
+end
+
+def check_tv(tv)
+  sleep 0.1
+  $sp.print("seed-test\r")
+  sleep 0.1
+  load_bigint(tv['msg'])
+  $logfile.printf("DBG: loaded %s\n", 'msg') if $debug
+  sleep 0.1
+  tv['seed'].each { |e| $sp.printf(" %02x", e) } 
+  while l = read_line_from_device() 
+    break if /ciphertext:/.match(l)
+  end
+  test_enc = ''
+  loop do 
+    l = read_line_from_device()
+    t = l.split
+    v = false
+    t.each { |e| v = true if e.length != 2 }
+    x = t.collect { |e| e.to_i(16) }
+    break if v
+    test_enc += l if l
+  end
+  test_enc_a = Array.new
+  test_enc = test_enc.split(/[\W\r\n]+/)
+  test_enc.each do |e|
+    v = e.sub(/[^0-9A-Fa-f]/, '') 
+    test_enc_a << v if v.length == 2
+  end
+  test_enc_a.collect!{ |e| e.to_i(16) }
+  strip_leading_zeros(test_enc_a)
+  strip_leading_zeros(tv['enc'])
+  enc_ok = (test_enc_a == tv['enc'])
+  if !enc_ok
+    $logfile.printf("DBG: ref = %s test = %s\n", str_hexdump(tv['enc']) , str_hexdump(test_enc_a))
+  end
+  m = nil
+  loop do 
+    l = read_line_from_device() 
+    m = /(>>OK<<|ERROR)/.match(l)
+    break if m
+  end
+  return true if enc_ok && (m[1] == '>>OK<<') 
+  return false
+end
+
+########################################
+# MAIN
+########################################
+help_text = <<EOF
+Usage of 'rsaes_pkcs1v15_check':
+ >ruby rsaes_pkcs1v15_check -f <file> [-c <file>] [-s <a>.<b>] [-n <name> | -l <file>]
+  -d          enable debugging (logging all received text, not only responses)
+  -c <file>   use <file> as configuration file
+  -f <file>   read testvectors from <file>
+  -s <a>.<b>  start with testvector <a>.<b>
+  -n <name>   log to a file which name is based on <name>
+
+EOF
+
+opts = Getopt::Std.getopts('dc:f:l:s:n:')
+
+if !opts['f']
+  print help_text
+  exit 0
+end
+
+conf = Hash.new
+conf = readconfigfile("/etc/testport.conf", conf)
+conf = readconfigfile("~/.testport.conf", conf)
+conf = readconfigfile("testport.conf", conf)
+conf = readconfigfile(opts["c"], conf) if opts["c"]
+
+#puts conf.inspect
+
+puts("serial port interface version: " + SerialPort::VERSION);
+$linewidth = 64
+params = { "baud"       => conf["PORT"]["baud"].to_i,
+            "data_bits" => conf["PORT"]["databits"].to_i,
+            "stop_bits" => conf["PORT"]["stopbits"].to_i,
+            "parity"    => SerialPort::NONE }
+params["paraty"] = SerialPort::ODD   if conf["PORT"]["paraty"].downcase == "odd"
+params["paraty"] = SerialPort::EVEN  if conf["PORT"]["paraty"].downcase == "even"
+params["paraty"] = SerialPort::MARK  if conf["PORT"]["paraty"].downcase == "mark"
+params["paraty"] = SerialPort::SPACE if conf["PORT"]["paraty"].downcase == "space"
+
+puts("\nPort: "+conf["PORT"]["port"]+"@"    +
+                params["baud"].to_s      +
+                " "                      +
+                params["data_bits"].to_s +
+                conf["PORT"]["paraty"][0,1].upcase +
+                params["stop_bits"].to_s +
+                "\n")
+
+$sp = SerialPort.new(conf["PORT"]["port"], params)
+
+$sp.read_timeout=1000; # 5 minutes
+$sp.flow_control = SerialPort::SOFT
+
+$debug = true if opts['d']
+
+if opts['l'] && ! opts['n']
+  $logfile = File.open(opts['l'], 'w')
+end
+
+base_name = 'rsaes_pkcs1v15'
+
+if opts['n']
+  logfilename = conf['PORT']['testlogbase'] + base_name + '_' + opts['n'] + '.txt'
+  if File.exists?(logfilename)
+    i=1
+    begin
+      logfilename = sprintf('%s%04d%s', conf['PORT']['testlogbase'] + base_name + '_' + opts['n'] + '_',i,'.txt')
+      i+=1
+    end while(File.exists?(logfilename))
+    while(i>2) do
+      n1 = sprintf('%s%04d%s', conf['PORT']['testlogbase'] + base_name + '_' + opts['n'] + '_', i-2, '.txt')
+      n2 = sprintf('%s%04d%s', conf['PORT']['testlogbase'] + base_name + '_' + opts['n'] + '_', i-1, '.txt')
+      File.rename(n1, n2)
+      printf("%s -> %s\n", n1, n2)
+      i-=1
+    end
+    n1 = sprintf('%s%s', conf['PORT']['testlogbase'], base_name + '_' + opts['n'] + '.txt')
+    n2 = sprintf('%s%04d%s', conf['PORT']['testlogbase'] + base_name + '_' + opts['n'] + '_', 1, '.txt')
+    File.rename(n1, n2)
+    printf("%s -> %s\n", n1, n2)
+    logfilename = conf['PORT']['testlogbase'] + base_name + '_' + opts['n'] + '.txt'
+  end
+  printf("logging to %s", logfilename)
+  $logfile = File.open(logfilename, 'w')
+end
+
+$logfile = STDOUT if ! $logfile
+$logfile.sync = true
+reset_system()
+
+if opts['s'] && ( m = opts['s'].match(/([\d]+)\.([\d]+)/) )
+  sk = m[1].to_i
+  sv = m[2].to_i
+else
+  sk = 1
+  sv = 1
+end
+
+f = File.open(opts['f'], "r")
+exit if !f
+ok,fail = process_file(f,sk,sv)
+printf("\nOK: %d FAIL: %d :-%s\n",ok,fail, fail==0 ? ')':'(')
+
+
diff --git a/host/rsassa_pkcs1v15_check.rb b/host/rsassa_pkcs1v15_check.rb
new file mode 100644 (file)
index 0000000..f628eb9
--- /dev/null
@@ -0,0 +1,440 @@
+#!/usr/bin/ruby
+# rsassa_pkcs1v15_check.rb
+=begin
+    This file is part of the AVR-Crypto-Lib.
+    Copyright (C) 2012  Daniel Otte (daniel.otte@rub.de)
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+=end
+
+require 'rubygems'
+require 'serialport'
+require 'getopt/std'
+require 'fileutils'
+
+$buffer_size = 0 # set automatically in init_system
+$conffile_check = Hash.new
+$conffile_check.default = 0
+$debug = false
+$progress_dots = false
+$logfile = nil
+
+################################################################################
+# readconfigfile                                                               #
+################################################################################
+
+def read_line_from_device()
+  repeat_counter = 10000
+  l = nil
+  s = ''
+  begin
+    l = $sp.gets()
+    repeat_counter -= 1
+  end while !l && repeat_counter > 0
+  t = Time.new
+  $logfile.printf("DBG: (%02d:%02d:%02d)<< %s\n", t.hour, t.min, t.sec, l.inspect) if $debug
+  if l && l.include?("AVR-Crypto-Lib")
+    $logfile.printf("DBG: system crashed !!!\n")
+    exit(false)
+  end
+  return l
+end
+
+def readconfigfile(fname, conf)
+  return conf if $conffile_check[fname]==1
+  $conffile_check[fname]=1
+  section = "default"
+  if not File.exists?(fname)
+    return conf
+  end
+  file = File.open(fname, "r")
+  until file.eof
+    line = file.gets()
+         next if /[\s]*#/.match(line)
+       if m=/\[[\s]*([^\s]*)[\s]*\]/.match(line)
+           section=m[1]
+           conf[m[1]] = Hash.new
+           next
+         end
+         next if ! /=/.match(line)
+         m=/[\s]*([^\s]*)[\s]*=[\s]*([^\s]*)/.match(line)
+         if m[1]=="include"
+           Dir.glob(m[2]){ |fn| conf = readconfigfile(fn, conf) }
+         else
+         conf[section][m[1]] = m[2]
+         end
+  end
+  file.close()
+  return conf
+end
+
+################################################################################
+# reset_system                                                                 #
+################################################################################
+
+def reset_system
+  $sp.print("\r")
+  sleep 0.1
+  $sp.print("\r")
+  sleep 0.1
+  $sp.print("echo off\r")
+  sleep 0.1
+end
+
+
+def read_block(f)
+  d = Array.new
+  begin
+    v = false
+    l = f.gets
+ #   x = l.split.collect { |e| e.to_i(16) }
+    t = l.split
+    t.each { |e| v = true if e.length != 2 }
+    x = []
+    x = t.collect { |e| e.to_i(16) } if ! v
+    d += x
+  end while x.length == 16 && ! v
+  return d
+end
+
+=begin
+# Modulus: 
+# Exponent: 
+# Modulus: 
+# Public exponent: 
+# Exponent: 
+# Prime 1: 
+# Prime 2: 
+# Prime exponent 1: 
+# Prime exponent 2: 
+# Coefficient: 
+# Message:
+# Seed:
+# Encryption:
+
+=end
+
+def get_next_block(f)
+  ret = Hash.new
+  data = Array.new
+  begin
+    l = f.gets
+  end while l && ! m= l.match(/^#[\s](.*):[\s]*$/)
+  return nil if ! l
+  ret['tag'] = m[1]
+  ret['line'] = f.lineno
+  data = read_block(f)
+  ret['data'] = data
+  return ret
+end
+
+$key_sequence = [
+  'Modulus',             # 0
+  'Exponent',            # 1
+  'Modulus',             # 2
+  'Public exponent',     # 3
+  'Exponent',            # 4
+  'Prime 1',             # 5
+  'Prime 2',             # 6
+  'Prime exponent 1',    # 7
+  'Prime exponent 2',    # 8
+  'Coefficient',         # 9
+]
+
+def key_consitency_check(k)
+  return true
+end
+
+def process_file(f, skip_key=1, skip_vec=1)
+  a = get_next_block(f)
+  key_no = 0
+  ok_counter = 0
+  fail_counter = 0
+  begin
+    if !a || ! a['tag'] == 'Modulus'
+      printf("ERROR: a = %s %d\n", a.inspect, __LINE__)
+      return
+    end
+    k_seq = Array.new
+    k_seq[0] = a
+    (1..($key_sequence.length-1)).each do |i|
+      a = get_next_block(f)
+      if ! a || a['tag'] != $key_sequence[i]
+        printf("ERROR: (expecting: %s) a = %s %d\n", $key_sequence[i], a.inspect, __LINE__)
+      end
+      k_seq[i] = a
+    end
+    key = convert_key(k_seq)
+    printf("ERROR: %d\n", __LINE__) if ! key
+    key_no += 1
+    vec_no = 0
+    printf("\n run %3d: ", key_no)
+    skip_key_flag = (key_no < skip_key)
+    load_key(key) if ! skip_key_flag
+    test_seq = Array.new
+    a = get_next_block(f)
+    printf("ERROR: %d\n", __LINE__) if ! a 
+    begin
+      vec_no += 1
+      b = get_next_block(f)
+      tv = Hash.new
+      tv['msg'] = a['data']
+      tv['sign'] = b['data'] 
+      skip_vec_flag = (skip_key_flag || (key_no == skip_key && vec_no < skip_vec))
+      if skip_vec_flag
+        printf('o')
+      else
+        v = check_tv(tv)
+        if(v == true)
+          printf('*')
+          $logfile.printf("[[Test %2d.%02d = OK]]\n", key_no, vec_no)
+          ok_counter += 1
+        else
+          printf('%c', v ? '*' : '!')
+          $logfile.printf("[[Test %2d.%02d = FAIL]]\n", key_no, vec_no)
+          fail_counter += 1
+        end
+      end
+      a = get_next_block(f)
+    end while a && a['tag'] == 'Message to be signed'
+  end while a && a['tag'] = 'Modulus'
+#  printf("\nResult: %d OK / %d FAIL ==> %s \nFinished\n", ok_counter, fail_counter, fail_counter==0 ? ':-)' : ':-(')
+  return ok_counter,fail_counter
+end
+
+def convert_key(k_seq)
+  l = ['n', 'e', 'd', 'p', 'q', 'dP', 'dQ', 'qInv']
+  r = Hash.new
+  return nil if k_seq[0]['data'] != k_seq[2]['data']
+  return nil if k_seq[1]['data'] != k_seq[3]['data']
+  8.times do |i|
+    r[l[i]] = k_seq[2 + i]['data'] 
+  end
+  return r
+end
+
+def wait_for_dot
+  begin
+    s = $sp.gets()
+  end while !s || !s.include?('.')
+end
+
+def load_bigint(d)
+  $sp.printf("%d\r", d.length)
+  while l = read_line_from_device()
+    break if /data:/.match(l)
+  end
+  printf "ERROR: got no answer from system!" if !l
+  i = 0
+  d.each do |e|
+    $sp.printf("%02x", e)
+    i += 1
+    if i % 60 == 0
+# we should now wait for incomming dot
+      wait_for_dot()
+      print('.') if $progress_dots
+    end
+  end
+end
+
+def hexdump(a)
+  i = 0
+  a.each do |e|
+    printf("\n\t") if i % 16 == 0
+    printf('%02x ', e)
+    i += 1
+  end
+  puts('') if i % 16 != 1
+end
+
+def str_hexdump(a)
+  i = 0
+  s = ''
+  a.each do |e|
+    s += "\n\t" if i % 16 == 0
+    s += sprintf('%02x ', e)
+    i += 1
+  end
+  s += "\n" if i % 16 != 1
+  return s
+end
+
+def load_key(k)
+  $sp.print("load-key\r")
+  sleep 0.1
+  v = ['n', 'e', 'p', 'q', 'dP', 'dQ', 'qInv']  
+  v.each do |e|
+    load_bigint(k[e])
+    $logfile.printf("DBG: loaded %s\n", e) if $debug
+  end 
+  while l = read_line_from_device()
+    break if />/.match(l)
+  end
+end
+
+def strip_leading_zeros(a)
+  loop do
+    return [] if a.length == 0
+    return a if a[0] != 0
+    a.delete_at(0)
+  end
+end
+
+def check_tv(tv)
+  sleep 0.1
+  $sp.print("sha1-test\r")
+  sleep 0.1
+  load_bigint(tv['msg'])
+  $logfile.printf("DBG: loaded %s\n", 'msg') if $debug
+  sleep 0.1
+  while l = read_line_from_device() 
+    break if /signature:/.match(l)
+  end
+  test_sign = ''
+  loop do 
+    l = read_line_from_device()
+    t = l.split
+    v = false
+    t.each { |e| v = true if e.length != 2 }
+    x = t.collect { |e| e.to_i(16) }
+    break if v
+    test_sign += l if l
+  end
+  test_sign_a = Array.new
+  test_sign = test_sign.split(/[\W\r\n]+/)
+  test_sign.each do |e|
+    v = e.sub(/[^0-9A-Fa-f]/, '') 
+    test_sign_a << v if v.length == 2
+  end
+  test_sign_a.collect!{ |e| e.to_i(16) }
+  strip_leading_zeros(test_sign_a)
+  strip_leading_zeros(tv['sign'])
+  sign_ok = (test_sign_a == tv['sign'])
+  if !sign_ok
+    $logfile.printf("DBG: ref = %s test = %s\n", str_hexdump(tv['sign']) , str_hexdump(test_sign_a))
+  end
+  m = nil
+  loop do 
+    l = read_line_from_device() 
+    m = /(>>OK<<|ERROR)/.match(l)
+    break if m
+  end
+  return true if sign_ok && (m[1] == '>>OK<<') 
+  return false
+end
+
+########################################
+# MAIN
+########################################
+help_text = <<EOF
+Usage of 'rsassa_pkcs1v15_check':
+ >ruby rsassa_pkcs1v15_check -f <file> [-c <file>] [-s <a>.<b>] [-n <name> | -l <file>]
+  -d          enable debugging (logging all received text, not only responses)
+  -c <file>   use <file> as configuration file
+  -f <file>   read testvectors from <file>
+  -s <a>.<b>  start with testvector <a>.<b>
+  -n <name>   log to a file which name is based on <name>
+
+EOF
+
+opts = Getopt::Std.getopts('dc:f:l:s:n:')
+
+if !opts['f']
+  print help_text
+  exit 0
+end
+
+conf = Hash.new
+conf = readconfigfile("/etc/testport.conf", conf)
+conf = readconfigfile("~/.testport.conf", conf)
+conf = readconfigfile("testport.conf", conf)
+conf = readconfigfile(opts["c"], conf) if opts["c"]
+
+#puts conf.inspect
+
+puts("serial port interface version: " + SerialPort::VERSION);
+$linewidth = 64
+params = { "baud"       => conf["PORT"]["baud"].to_i,
+            "data_bits" => conf["PORT"]["databits"].to_i,
+            "stop_bits" => conf["PORT"]["stopbits"].to_i,
+            "parity"    => SerialPort::NONE }
+params["paraty"] = SerialPort::ODD   if conf["PORT"]["paraty"].downcase == "odd"
+params["paraty"] = SerialPort::EVEN  if conf["PORT"]["paraty"].downcase == "even"
+params["paraty"] = SerialPort::MARK  if conf["PORT"]["paraty"].downcase == "mark"
+params["paraty"] = SerialPort::SPACE if conf["PORT"]["paraty"].downcase == "space"
+
+puts("\nPort: "+conf["PORT"]["port"]+"@"    +
+                params["baud"].to_s      +
+                " "                      +
+                params["data_bits"].to_s +
+                conf["PORT"]["paraty"][0,1].upcase +
+                params["stop_bits"].to_s +
+                "\n")
+
+$sp = SerialPort.new(conf["PORT"]["port"], params)
+
+$sp.read_timeout=1000; # 5 minutes
+$sp.flow_control = SerialPort::SOFT
+
+$debug = true if opts['d']
+
+if opts['l'] && ! opts['n']
+  $logfile = File.open(opts['l'], 'w')
+end
+
+base_name = 'rsassa_pkcs1v15'
+
+if opts['n']
+  logfilename = conf['PORT']['testlogbase'] + base_name + '_' + opts['n'] + '.txt'
+  if File.exists?(logfilename)
+    i=1
+    begin
+      logfilename = sprintf('%s%04d%s', conf['PORT']['testlogbase'] + base_name + '_' + opts['n'] + '_', i, '.txt')
+      i+=1
+    end while(File.exists?(logfilename))
+    while(i>2) do
+      n1 = sprintf('%s%04d%s', conf['PORT']['testlogbase'] + base_name + '_' + opts['n'] + '_', i-2, '.txt')
+      n2 = sprintf('%s%04d%s', conf['PORT']['testlogbase'] + base_name + '_' + opts['n'] + '_', i-1, '.txt')
+      File.rename(n1, n2)
+      printf("%s -> %s\n", n1, n2)
+      i-=1
+    end
+    n1 = sprintf('%s%s', conf['PORT']['testlogbase'], base_name + '_' + opts['n'] + '.txt')
+    n2 = sprintf('%s%04d%s', conf['PORT']['testlogbase'] + base_name + '_' + opts['n'] + '_', 1, '.txt')
+    File.rename(n1, n2)
+    printf("%s -> %s\n", n1, n2)
+    logfilename = conf['PORT']['testlogbase'] + base_name + '_' + opts['n'] + '.txt'
+  end
+  printf("logging to %s", logfilename)
+  $logfile = File.open(logfilename, 'w')
+end
+
+$logfile = STDOUT if ! $logfile
+$logfile.sync = true
+reset_system()
+
+if opts['s'] && ( m = opts['s'].match(/([\d]+)\.([\d]+)/) )
+  sk = m[1].to_i
+  sv = m[2].to_i
+else
+  sk = 1
+  sv = 1
+end
+
+f = File.open(opts['f'], "r")
+exit if !f
+ok,fail = process_file(f,sk,sv)
+printf("\nOK: %d FAIL: %d :-%s\n",ok,fail, fail==0 ? ')':'(')
+
+
index 4d554fbcf39b37f0287c46015f544886e572215a..3c06e2f966f8bd0ab4f42786c11845b75668c551 100644 (file)
@@ -241,12 +241,13 @@ end
 #  -f <file>        also read config from <file>
 #  -i <n>           skip until test nr. <n>
 #  -j <n>           start with testfile <n>
+#  -o               use just one testfile
 #  -h ???
 #  -d               enable debug mode
 #  -c ???
 #  -a ???
 
-opts = Getopt::Std.getopts("s:f:i:j:hdca")
+opts = Getopt::Std.getopts("s:f:i:j:hdcao")
 
 conf = Hash.new
 conf = readconfigfile("/etc/testport.conf", conf)
@@ -306,16 +307,16 @@ algo_tasks.each do |algoa|
     puts("No test-set defined for #{algo} \r\n")
     next
   else
-       i=0
-       i = opts["j"].to_i if opts["j"]
-       logfile=File.open(conf["PORT"]["testlogbase"]+algo+".txt", "a")
-       while conf[algo]["file_#{i}"] != nil
-         puts("Testing #{algo} with #{conf[algo]["file_#{i}"]}")
-         reset_system()
-         init_system(algoa[1])
-         skip=0
-         skip=opts["i"].to_i if opts["i"]
-         nerrors=run_test(conf[algo]["file_#{i}"], skip)
+    i=0
+    i = opts["j"].to_i if opts["j"]
+    logfile=File.open(conf["PORT"]["testlogbase"]+algo+".txt", "a")
+    while conf[algo]["file_#{i}"] != nil
+      puts("Testing #{algo} with #{conf[algo]["file_#{i}"]}")
+      reset_system()
+      init_system(algoa[1])
+      skip=0
+      skip=opts["i"].to_i if opts["i"]
+      nerrors=run_test(conf[algo]["file_#{i}"], skip)
       if nerrors == 0
         puts("\n[ok]")
         logfile.puts("[ok] "+conf[algo]["file_#{i}"]+ " ("+Time.now.to_s()+")")
@@ -324,6 +325,7 @@ algo_tasks.each do |algoa|
         logfile.puts("[error] "+nerrors.to_s+" "+conf[algo]["file_#{i}"]+ " ("+Time.now.to_s()+")")
       end
       i = i+1
+      break if opts["o"]
     end
     logfile.close()
   end
index 6af0bf7ebbd19e6d1037e5eb7c4be94ea0eabcab..5a7e16fbb56bd6c5f54cc5b65cc83ba22e43629a 100644 (file)
 static
 void jh_round(uint8_t* a, uint8_t roundno){
        uint8_t b[128];
-       uint8_t i,r,u,v,x,y;
+       uint8_t i,r=0,u,v,x,y;
        const uint8_t *pr;
        pr = jh_round_const + 32*roundno;
        for(i=0; i<128; ++i){
                if(i%4==0){
                        r = *pr++;
                }
-               b[i]=jh_lutbox[((r&0xC0)<<2)|a[i]];
-               r<<=2;
+               b[i] = jh_lutbox[((r&0xC0)<<2)|a[i]];
+               r <<= 2;
        }
        for(i=0;i<128;++i){
                u = jh_permutation_table[2*i];
index 5df1df2e188089be9b098e8cd407b0eb9940ad62..ce510b6b0c55223a192bcf622d77b098a495b455 100644 (file)
--- a/md5/md5.c
+++ b/md5/md5.c
@@ -81,7 +81,7 @@ void md5_core(uint32_t* a, void* block, uint8_t as, uint8_t s, uint8_t i, uint8_
        cli_hexdump(&i, 1); cli_putc(']');
 #endif 
        t = a[as] + funcs[fi](a[(as+1)&3], a[(as+2)&3], a[(as+3)&3]) 
-           + *((uint32_t*)block) + pgm_read_dword(md5_T+i) ;
+           + *((uint32_t*)block) + md5_T[i] ;
        a[as]=a[(as+1)&3] + ROTL32(t, s);
 }
 
@@ -139,32 +139,35 @@ void md5_nextBlock(md5_ctx_t *state, const void* block){
 
 void md5_lastBlock(md5_ctx_t *state, const void* block, uint16_t length_b){
        uint16_t l;
-       uint8_t b[64];
+       union {
+               uint8_t   v8[64];
+               uint64_t v64[ 8];
+       } buffer;
        while (length_b >= 512){
                md5_nextBlock(state, block);
                length_b -= 512;
                block = ((uint8_t*)block) + 512/8;
        }
-       memset(b, 0, 64);
-       memcpy(b, block, length_b/8);
+       memset(buffer.v8, 0, 64);
+       memcpy(buffer.v8, block, length_b/8);
        /* insert padding one */
        l=length_b/8;
        if(length_b%8){
                uint8_t t;
                t = ((uint8_t*)block)[l];
                t |= (0x80>>(length_b%8));
-               b[l]=t;
+               buffer.v8[l]=t;
        }else{
-               b[l]=0x80;
+               buffer.v8[l]=0x80;
        }
        /* insert length value */
        if(l+sizeof(uint64_t) >= 512/8){
-               md5_nextBlock(state, b);
+               md5_nextBlock(state, buffer.v8);
                state->counter--;
-               memset(b, 0, 64-8);
+               memset(buffer.v8, 0, 64-8);
        }
-       *((uint64_t*)&b[64-sizeof(uint64_t)]) = (state->counter * 512) + length_b;
-       md5_nextBlock(state, b);
+       buffer.v64[7] = (state->counter * 512) + length_b;
+       md5_nextBlock(state, buffer.v8);
 }
 
 void md5_ctx2hash(md5_hash_t* dest, const md5_ctx_t* state){
diff --git a/md5/md5_sbox.c b/md5/md5_sbox.c
new file mode 100644 (file)
index 0000000..9d7eb28
--- /dev/null
@@ -0,0 +1,36 @@
+/* md5_sbox.c */
+/*
+    This file is part of the ARM-Crypto-Lib.
+    Copyright (C) 2008  Daniel Otte (daniel.otte@rub.de)
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <stdint.h>
+
+const uint32_t md5_T[] = {
+       0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 
+       0x4787c62a, 0xa8304613, 0xfd469501, 0x698098d8, 0x8b44f7af, 
+       0xffff5bb1, 0x895cd7be, 0x6b901122, 0xfd987193, 0xa679438e, 
+       0x49b40821, 0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa, 
+       0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8, 0x21e1cde6, 
+       0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905, 0xfcefa3f8, 
+       0x676f02d9, 0x8d2a4c8a, 0xfffa3942, 0x8771f681, 0x6d9d6122, 
+       0xfde5380c, 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70, 
+       0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05, 0xd9d4d039, 
+       0xe6db99e5, 0x1fa27cf8, 0xc4ac5665, 0xf4292244, 0x432aff97, 
+       0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 
+       0x85845dd1, 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1, 
+       0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391 };
+
index 0c6da57063342ae8962fd56bf466f9d7af56aac8..25eaa58fe83cff15fe428af6b9f302fbd23258a1 100644 (file)
 #define MD5_SBOX_H_
 
 #include <stdint.h>
-#include <avr/pgmspace.h>
 
-uint32_t md5_T[] PROGMEM = {
-       0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 
-       0x4787c62a, 0xa8304613, 0xfd469501, 0x698098d8, 0x8b44f7af, 
-       0xffff5bb1, 0x895cd7be, 0x6b901122, 0xfd987193, 0xa679438e, 
-       0x49b40821, 0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa, 
-       0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8, 0x21e1cde6, 
-       0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905, 0xfcefa3f8, 
-       0x676f02d9, 0x8d2a4c8a, 0xfffa3942, 0x8771f681, 0x6d9d6122, 
-       0xfde5380c, 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70, 
-       0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05, 0xd9d4d039, 
-       0xe6db99e5, 0x1fa27cf8, 0xc4ac5665, 0xf4292244, 0x432aff97, 
-       0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 
-       0x85845dd1, 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1, 
-       0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391 };
+extern const uint32_t md5_T[];
 
 #endif /*MD5_SBOX_H_*/
diff --git a/mkfiles/md5_c.mk b/mkfiles/md5_c.mk
new file mode 100644 (file)
index 0000000..a65537e
--- /dev/null
@@ -0,0 +1,12 @@
+# Makefile for MD5
+ALGO_NAME := MD5_C
+
+# comment out the following line for removement of MD5 from the build process
+HASHES += $(ALGO_NAME)
+
+$(ALGO_NAME)_DIR      := hfal/ md5/
+$(ALGO_NAME)_OBJ      := md5.o md5_sbox.o
+$(ALGO_NAME)_TESTBIN := main-md5-test.o hfal_md5.o $(CLI_STD) $(HFAL_STD)
+$(ALGO_NAME)_NESSIE_TEST      := "nessie"
+$(ALGO_NAME)_PERFORMANCE_TEST := "performance"
+
diff --git a/mkfiles/rsa_oaep.mk b/mkfiles/rsa_oaep.mk
deleted file mode 100644 (file)
index 59c1a39..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# Makefile for RSA
-ALGO_NAME := RSA_OAEP
-
-# comment out the following line for removement of RSA from the build process
-PK_CIPHERS += $(ALGO_NAME)
-
-$(ALGO_NAME)_DIR      := rsa/
-$(ALGO_NAME)_INCDIR   := memxor/ bigint/ noekeon/ hfal/ sha1/ mgf1/
-$(ALGO_NAME)_OBJ      := bigint.o bigint_io.o rsa_basic.o rsa_oaep.o mgf1.o hfal-basic.o hfal_sha1.o sha1.o
-$(ALGO_NAME)_TESTBIN := main-rsa_oaep-test.o $(CLI_STD) random_dummy.o \
-                         noekeon.o noekeon_prng.o memxor.o 
-                        
-$(ALGO_NAME)_PERFORMANCE_TEST := performance
-
diff --git a/mkfiles/rsaes_oaep.mk b/mkfiles/rsaes_oaep.mk
new file mode 100644 (file)
index 0000000..0b0b682
--- /dev/null
@@ -0,0 +1,14 @@
+# Makefile for RSA
+ALGO_NAME := RSAES_OAEP
+
+# comment out the following line for removement of RSA from the build process
+PK_CIPHERS += $(ALGO_NAME)
+
+$(ALGO_NAME)_DIR      := rsa/
+$(ALGO_NAME)_INCDIR   := memxor/ bigint/ noekeon/ hfal/ sha1/ mgf1/
+$(ALGO_NAME)_OBJ      := bigint.o bigint_io.o rsa_basic.o rsaes_oaep.o mgf1.o hfal-basic.o hfal_sha1.o sha1.o
+$(ALGO_NAME)_TESTBIN := main-rsaes_oaep-test.o $(CLI_STD) random_dummy.o \
+                         noekeon.o noekeon_prng.o memxor.o 
+                        
+$(ALGO_NAME)_PERFORMANCE_TEST := performance
+
diff --git a/mkfiles/rsaes_pkcs1v15.mk b/mkfiles/rsaes_pkcs1v15.mk
new file mode 100644 (file)
index 0000000..8d15289
--- /dev/null
@@ -0,0 +1,14 @@
+# Makefile for RSA
+ALGO_NAME := RSAES_PKCS1V15
+
+# comment out the following line for removement of RSA from the build process
+SIGNATURE += $(ALGO_NAME)
+
+$(ALGO_NAME)_DIR      := rsa/
+$(ALGO_NAME)_INCDIR   := memxor/ bigint/ noekeon/
+$(ALGO_NAME)_OBJ      := bigint.o bigint_io.o rsa_basic.o rsaes_pkcs1v15.o 
+$(ALGO_NAME)_TESTBIN := main-rsaes_pkcs1v15-test.o $(CLI_STD) random_dummy.o \
+                         noekeon.o noekeon_prng.o memxor.o 
+                        
+$(ALGO_NAME)_PERFORMANCE_TEST := performance
+
diff --git a/mkfiles/rsassa_pkcs1v15.mk b/mkfiles/rsassa_pkcs1v15.mk
new file mode 100644 (file)
index 0000000..505ec97
--- /dev/null
@@ -0,0 +1,14 @@
+# Makefile for RSA
+ALGO_NAME := RSASSA_PKCS1V15
+
+# comment out the following line for removement of RSA from the build process
+SIGNATURE += $(ALGO_NAME)
+
+$(ALGO_NAME)_DIR      := rsa/
+$(ALGO_NAME)_INCDIR   := memxor/ bigint/ noekeon/ sha1/
+$(ALGO_NAME)_OBJ      := bigint.o bigint_io.o rsa_basic.o rsassa_pkcs1v15.o 
+$(ALGO_NAME)_TESTBIN := main-rsassa_pkcs1v15-test.o $(CLI_STD) random_dummy.o \
+                         noekeon.o noekeon_prng.o memxor.o sha1.o
+                        
+$(ALGO_NAME)_PERFORMANCE_TEST := performance
+
index 0fce0ebdaaac0f22d7a184d2179e2cd6a16e2fef..93f8242b70645e5355bd5343f9b4ac829e4486a3 100644 (file)
@@ -17,6 +17,7 @@ LIB_ALGOS:= \
     JH_SIMPLE_SMALL_C \
     KECCAK_C \
     KHAZAD_SMALL_C \
+    MD5_C \
     MICKEY128 \
     NOEKEON_C \
     PRESENT \
@@ -24,6 +25,8 @@ LIB_ALGOS:= \
     RABBIT_C \
     RC5 \
     RC6 \
+    RSAES_OAEP \
+    RSAES_PKCS1V15 \
     SALSA20_C \
     SEED_C \
     SERPENT_BITSLICE \
index 3856055276a2d745b57904817dce39e51a4c0352..45255715245904668feddbaf92e45e999739fe53 100644 (file)
 #include "present.h"
 
 static uint8_t sbox(uint8_t b){
-       uint8_t sb[]={0xC, 0x5, 0x6, 0xB, 
-                                 0x9, 0x0, 0xA, 0xD, 
-                                 0x3, 0xE, 0xF, 0x8, 
-                                 0x4, 0x7, 0x1, 0x2 };
+       const uint8_t sb[]={ 0xC, 0x5, 0x6, 0xB, 
+                            0x9, 0x0, 0xA, 0xD, 
+                            0x3, 0xE, 0xF, 0x8, 
+                            0x4, 0x7, 0x1, 0x2 };
        return (((sb[b>>4])<<4)|(sb[b&0xf]));
 }
 
 static uint8_t sbox_inv(uint8_t b){
-       uint8_t sb[]={0x5, 0xE, 0xF, 0x8, 
-                                 0xC, 0x1, 0x2, 0xD, 
-                                 0xB, 0x4, 0x6, 0x3, 
-                                 0x0, 0x7, 0x9, 0xA };
+       const uint8_t sb[]={ 0x5, 0xE, 0xF, 0x8, 
+                            0xC, 0x1, 0x2, 0xD, 
+                            0xB, 0x4, 0x6, 0x3, 
+                            0x0, 0x7, 0x9, 0xA };
        return (((sb[b>>4])<<4)|(sb[b&0xf]));
 }
 
@@ -73,10 +73,14 @@ static void p_inv(uint8_t* o, uint8_t* i){
 
 void present_init(const uint8_t* key, uint8_t keysize_b, present_ctx_t* ctx){
        uint8_t tmp[2];
-       union {
-               uint8_t v8[10];
+       union __attribute__((packed)) {
+               uint8_t   v8[10];
                uint64_t v64;
                uint16_t v16[5];
+               struct __attribute__((packed)) {
+                       uint8_t   v8[1];
+                       uint16_t v16[4];
+               } off1;
        } b;
        uint8_t i;
        memcpy(b.v8, key, 10);
@@ -95,7 +99,7 @@ void present_init(const uint8_t* key, uint8_t keysize_b, present_ctx_t* ctx){
                /* rotating done now substitution */
                b.v8[9] = (sbox(b.v8[9])&0xF0) | ((b.v8[9])&0x0F);
                /* xor with round counter */
-               *((uint16_t*)(b.v8+1)) ^= (uint16_t)i<<7;
+               b.off1.v16[0] ^= (uint16_t)i<<7;
                memcpy(&(ctx->k[i]), b.v8+2, 8);
        }
 }
index a166dfa2384909d6e3b2ce8f90cd277ab0421b52..ffcd780e677a8741cf0a5ef5bfcdf95898529eae 100644 (file)
@@ -32,7 +32,7 @@
 #include "string-extras.h"
 #endif
 
-void rsa_enc(bigint_t* data, rsa_publickey_t* key){
+void rsa_enc(bigint_t* data, const rsa_publickey_t* key){
 /*
        cli_putstr("\r\n -->rsa_enc()\r\n m = ");
        bigint_print_hex(data);
@@ -41,7 +41,7 @@ void rsa_enc(bigint_t* data, rsa_publickey_t* key){
        cli_putstr("\r\n n = ");
        bigint_print_hex(key->modulus);
 */
-       bigint_expmod_u(data, data, key->exponent, key->modulus);
+       bigint_expmod_u(data, data, &key->exponent, &key->modulus);
 }
 
 /*
@@ -52,47 +52,47 @@ h = (m1 - m2) * qinv % p
 m = m2 + q * h
 */
 
-uint8_t rsa_dec_crt_mono(bigint_t* data, rsa_privatekey_t* key){
+uint8_t rsa_dec_crt_mono(bigint_t* data, const rsa_privatekey_t* key){
        bigint_t m1, m2;
-       m1.wordv = malloc(key->components[0]->length_B * sizeof(bigint_word_t));
-       m2.wordv = malloc(key->components[1]->length_B * sizeof(bigint_word_t));
+       m1.wordv = malloc(key->components[0].length_B * sizeof(bigint_word_t));
+       m2.wordv = malloc(key->components[1].length_B * sizeof(bigint_word_t));
        if(!m1.wordv || !m2.wordv){
 #if DEBUG
                cli_putstr("\r\nERROR: OOM!");
 #endif
-               free(m1.wordv);
                free(m2.wordv);
+               free(m1.wordv);
                return 1;
        }
 #if DEBUG
        cli_putstr("\r\nDBG: expmod m1 ...");
 #endif
-       bigint_expmod_u(&m1, data, key->components[2], key->components[0]);
+       bigint_expmod_u(&m1, data, &key->components[2], &key->components[0]);
 #if DEBUG
        cli_putstr("expmod m2 ...");
 #endif
-       bigint_expmod_u(&m2, data, key->components[3], key->components[1]);
+       bigint_expmod_u(&m2, data, &key->components[3], &key->components[1]);
        bigint_sub_s(&m1, &m1, &m2);
        while(BIGINT_NEG_MASK & m1.info){
-               bigint_add_s(&m1, &m1, key->components[0]);
+               bigint_add_s(&m1, &m1, &key->components[0]);
        }
 
 #if DEBUG
        cli_putstr("\r\nDBG: reduce-mul ...");
 #endif
-       bigint_reduce(&m1, key->components[0]);
-       bigint_mul_u(data, &m1, key->components[4]);
-       bigint_reduce(data, key->components[0]);
-       bigint_mul_u(data, data, key->components[1]);
+       bigint_reduce(&m1, &key->components[0]);
+       bigint_mul_u(data, &m1, &key->components[4]);
+       bigint_reduce(data, &key->components[0]);
+       bigint_mul_u(data, data, &key->components[1]);
        bigint_add_u(data, data, &m2);
-       free(m1.wordv);
        free(m2.wordv);
+       free(m1.wordv);
        return 0;
 }
 
-uint8_t rsa_dec(bigint_t* data, rsa_privatekey_t* key){
+uint8_t rsa_dec(bigint_t* data, const rsa_privatekey_t* key){
        if(key->n == 1){
-               bigint_expmod_u(data, data, key->components[0], key->modulus);
+               bigint_expmod_u(data, data, &key->components[0], &key->modulus);
                return 0;
        }
        if(key->n == 5){
@@ -139,6 +139,7 @@ void rsa_os2ip(bigint_t* dest, const void* data, uint32_t length_B){
        cli_hexdump_rev(&(dest->length_B), 2);
 #endif
 #endif
+       dest->info = 0;
        bigint_changeendianess(dest);
        bigint_adjust(dest);
 }
index 4dc705d1b8cb151d6e37b92ea6dee07cf78bb9e5..85b9ef3ccd92928815b81e925cc200d39b38e500 100644 (file)
 #include "bigint.h"
 
 typedef struct {
-       bigint_t* exponent;
-       bigint_t* modulus;
+       bigint_t exponent;
+       bigint_t modulus;
 } rsa_publickey_t;
 
 typedef struct {
        uint8_t n;
-       bigint_t* modulus;
-       bigint_t** components;
+       bigint_t modulus;
+       bigint_t* components;
 } rsa_privatekey_t;
 
 
@@ -40,8 +40,8 @@ typedef struct {
 } rsa_fullkey_t;
 
 
-void rsa_enc(bigint_t* data, rsa_publickey_t* key);
-uint8_t rsa_dec(bigint_t* data, rsa_privatekey_t* key);
+void rsa_enc(bigint_t* data, const rsa_publickey_t* key);
+uint8_t rsa_dec(bigint_t* data, const rsa_privatekey_t* key);
 void rsa_os2ip(bigint_t* dest, const void* data, uint32_t length_B);
 void rsa_i2osp(void* dest, bigint_t* src, uint16_t* out_length_B);
 
diff --git a/rsa/rsa_oaep.c b/rsa/rsa_oaep.c
deleted file mode 100644 (file)
index 88526e6..0000000
+++ /dev/null
@@ -1,228 +0,0 @@
-
-/* rsa_oaep.c */
-/*
-    This file is part of the ARM-Crypto-Lib.
-    Copyright (C) 2006-2012 Daniel Otte (daniel.otte@rub.de)
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-#include "memxor.h"
-#include "mgf1.h"
-#include "bigint.h"
-#include "rsa_basic.h"
-#include "rsa_oaep.h"
-
-#include "random_dummy.h"
-
-#include "hfal/hfal_sha1.h"
-
-#include "cli.h"
-#include "uart_lowlevel.h"
-
-mgf1_parameter_t mgf1_default_parameter = {
-               &sha1_desc
-};
-
-rsa_oaep_parameter_t rsa_oaep_default_parameter = {
-               mgf1,
-               &sha1_desc,
-               &mgf1_default_parameter
-};
-
-rsa_label_t rsa_oaep_default_label = {
-               0, NULL
-};
-
-uint8_t rsa_encrypt_oaep(void* dest, uint16_t* out_length,
-                             const void* src, uint16_t length_B,
-                             rsa_publickey_t* key, const rsa_oaep_parameter_t *p,
-                             const rsa_label_t* label, const void* seed){
-
-       if(!p){
-               p = &rsa_oaep_default_parameter;
-       }
-       if(!label){
-               label = &rsa_oaep_default_label;
-       }
-       uint16_t hv_len = (hfal_hash_getHashsize(p->hf)+7)/8;
-       if(length_B > bigint_length_B(key->modulus) - 2*hv_len - 2){
-               /* message too long */
-               return 1;
-       }
-       uint16_t buffer_len = bigint_length_B(key->modulus);
-/*
-       cli_putstr("\r\n buffer_len = ");
-       cli_hexdump_rev(&buffer_len, 2);
-       cli_putstr("\r\n modulus_len = ");
-       cli_hexdump_rev(&key->modulus->length_B, 2);
-*/
-       uint8_t* buffer = (uint8_t*)dest;
-       uint8_t off;
-       /* the following needs some explanation:
-        * off is the offset which is used for compensating the effect of
-        * changeendian() when it operates on multi-byte words.
-        * */
-       off = (sizeof(bigint_word_t) -(bigint_get_first_set_bit(key->modulus)/8+1)%(sizeof(bigint_word_t)*8))
-                       % (sizeof(bigint_word_t));
-       buffer += off;
-    buffer_len -= off;
-//    cli_putstr("\r\n  off = ");
-//    cli_hexdump_byte(off);
-       uint8_t* seed_buffer = buffer + 1;
-       uint16_t db_len = buffer_len - hv_len - 1;
-       uint8_t* db = seed_buffer + hv_len;
-       uint16_t maskbuffer_len = db_len>hv_len?db_len:hv_len;
-       uint8_t maskbuffer[maskbuffer_len];
-       bigint_t x;
-
-       memset(dest, 0, seed_buffer - buffer + off);
-       memset(db + hv_len, 0, db_len - hv_len - length_B -1);
-       hfal_hash_mem(p->hf, db, label->label, label->length_b);
-       db[db_len - length_B - 1] = 0x01;
-       memcpy(db+db_len - length_B, src, length_B);
-       if(seed){
-               memcpy(seed_buffer, seed, hv_len);
-       }else{
-               /* generate random seed */
-               if(!prng_get_byte){
-                       return 2; /* ERROR: no random generator specified */
-               }
-               uint16_t i;
-               for(i=0; i<hv_len; ++i){
-                       seed_buffer[i] = prng_get_byte();
-               }
-       }
-//     cli_putstr("\r\n  msg (raw, pre-feistel):\r\n");
-//     cli_hexdump_block(dest, bigint_length_B(key->modulus), 4, 16);
-       p->mgf(maskbuffer, seed_buffer, hv_len, db_len, p->mgf_parameter);
-       memxor(db, maskbuffer, db_len);
-       p->mgf(maskbuffer, db, db_len, hv_len, p->mgf_parameter);
-       memxor(seed_buffer, maskbuffer, hv_len);
-//     cli_putstr("\r\n  msg (raw, post-feistel):\r\n");
-//     cli_hexdump_block(dest, bigint_length_B(key->modulus), 4, 16);
-
-       x.wordv = dest;
-       bigint_adjust(&x);
-
-       rsa_os2ip(&x, NULL, bigint_length_B(key->modulus));
-       rsa_enc(&x, key);
-       rsa_i2osp(NULL, &x, out_length);
-       return 0;
-}
-
-uint8_t rsa_decrypt_oaep(void* dest, uint16_t* out_length,
-                             const void* src, uint16_t length_B,
-                             rsa_privatekey_t* key, const rsa_oaep_parameter_t *p,
-                             const rsa_label_t* label, void* seed){
-
-//     cli_putstr("\r\n -->rsa_decrypt_oaep()"); uart_flush(0);
-       if(!label){
-               label = &rsa_oaep_default_label;
-       }
-       if(!p){
-               p = &rsa_oaep_default_parameter;
-       }
-       uint16_t x_len, data_len;
-       bigint_t x;
-       uint16_t hv_len = hfal_hash_getHashsize(p->hf)/8;
-       uint8_t label_hv[hv_len];
-       uint16_t msg_len = bigint_get_first_set_bit(key->modulus) / 8 + 1;
-       uint16_t db_len = msg_len - hv_len - 1;
-       uint8_t maskbuffer[db_len>hv_len?db_len:hv_len];
-
-       uint8_t *seed_buffer = dest;
-       uint8_t *db_buffer = seed_buffer + hv_len;
-
-       x_len = bigint_get_first_set_bit(key->modulus)/8;
-       memset(dest, 0, bigint_length_B(key->modulus) - length_B);
-       memcpy((uint8_t*)dest + bigint_length_B(key->modulus) - length_B, src, length_B);
-
-//     cli_putc('a'); uart_flush(0);
-
-       x.wordv = dest;
-       x.length_B = key->modulus->length_B;
-       x.info = 0;
-       bigint_adjust(&x);
-
-
-//     cli_putc('b'); uart_flush(0);
-       rsa_os2ip(&x, NULL, bigint_length_B(key->modulus));
-//     cli_putc('c'); uart_flush(0);
-       rsa_dec(&x, key);
-//     cli_putc('d'); uart_flush(0);
-       rsa_i2osp(NULL, &x, &data_len);
-
-//     cli_putstr("\r\n  msg (raw, pre-move):\r\n");
-//     cli_hexdump_block(dest, bigint_length_B(key->modulus), 4, 16);
-
-       if(data_len > x_len){
-               return 7;
-       }
-/*
-       cli_putstr("\r\n moving some bytes; x_len = ");
-       cli_hexdump_rev(&x_len, 2);
-       cli_putstr("  data_len = ");
-       cli_hexdump_rev(&data_len, 2);
-       uart_flush(0);
-*/
-       if(x_len != data_len){
-               memmove((uint8_t*)dest + x_len - data_len, dest, data_len);
-//             cli_putstr("  (oh, not dead yet?!)");
-//             uart_flush(0);
-               memset(dest, 0, x_len - data_len);
-       }
-
-       hfal_hash_mem(p->hf, label_hv, label->label, label->length_b);
-/*
-       cli_putstr("\r\n  msg (raw, pre-feistel):\r\n");
-       cli_hexdump_block(seed_buffer, bigint_length_B(key->modulus), 4, 16);
-       uart_flush(0);
-*/
-       p->mgf(maskbuffer, db_buffer, db_len, hv_len, p->mgf_parameter);
-       memxor(seed_buffer, maskbuffer, hv_len);
-       p->mgf(maskbuffer, seed_buffer, hv_len, db_len, p->mgf_parameter);
-       memxor(db_buffer, maskbuffer, db_len);
-
-       if(memcmp(label_hv, db_buffer, hv_len)){
-//             cli_putstr("\r\nDBG: DB:\r\n");
-//             cli_hexdump_block(db_buffer, db_len, 4, 16);
-               return 2;
-       }
-
-       uint16_t ps_len=0;
-       while(db_buffer[hv_len + ps_len++] == 0)
-               ;
-
-       --ps_len;
-       if(db_buffer[hv_len + ps_len] != 1){
-               return 3;
-       }
-
-       if(seed){
-               memcpy(seed, seed_buffer, hv_len);
-       }
-
-       msg_len = db_len - hv_len - 1 - ps_len;
-       memmove(dest, db_buffer + hv_len + ps_len + 1, msg_len);
-
-       *out_length = msg_len;
-
-       return 0;
-}
-
-
diff --git a/rsa/rsa_oaep.h b/rsa/rsa_oaep.h
deleted file mode 100644 (file)
index 8084653..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/* rsa_oaep.h */
-/*
-    This file is part of the AVR-Crypto-Lib.
-    Copyright (C) 2012 Daniel Otte (daniel.otte@rub.de)
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef RSA_OAEP_H_
-#define RSA_OAEP_H_
-
-#include <stdint.h>
-#include "mgf1.h"
-
-
-void mgf1(void* dest, const void* seed, uint16_t seed_len_B, uint16_t out_length_B, const mgf1_parameter_t* p);
-
-
-typedef struct {
-       void (*mgf)(void* dst, const void* seed, uint16_t slen_B, uint16_t dstlen_B, const mgf1_parameter_t* p);
-       const hfdesc_t* hf;
-       mgf1_parameter_t* mgf_parameter;
-} rsa_oaep_parameter_t;
-
-typedef struct {
-       uint16_t length_b;
-       const void* label;
-} rsa_label_t;
-
-extern rsa_oaep_parameter_t rsa_oaep_default_parameter;
-extern rsa_label_t rsa_oaep_default_label;
-
-uint8_t rsa_encrypt_oaep(void* dest, uint16_t* out_length,
-                             const void* src, uint16_t length_B,
-                             rsa_publickey_t* key, const rsa_oaep_parameter_t *p,
-                             const rsa_label_t* label, const void* seed);
-
-uint8_t rsa_decrypt_oaep(void* dest, uint16_t* out_length,
-                             const void* src, uint16_t length_B,
-                             rsa_privatekey_t* key, const rsa_oaep_parameter_t *p,
-                             const rsa_label_t* label, void* seed);
-
-#endif /* RSA_OAEP_H_ */
diff --git a/rsa/rsa_pkcs15.c b/rsa/rsa_pkcs15.c
deleted file mode 100644 (file)
index 1db7d3f..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/* rsa_pkcs15.c */
-/*
-    This file is part of the ARM-Crypto-Lib.
-    Copyright (C) 2006-2011 Daniel Otte (daniel.otte@rub.de)
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-#include "bigint.h"
-#include "rsa_basic.h"
-
-#define DEBUG 0
-
-#if DEBUG
-#include "bigint_io.h"
-#include "cli.h"
-#endif
-
-#include "random_dummy.h"
-
-uint16_t rsa_pkcs15_compute_padlength_B(bigint_t* modulus, uint16_t msg_length_B){
-       return bigint_get_first_set_bit(modulus) / 8 + 1 - msg_length_B - 3;
-}
-
-uint8_t rsa_encrypt_pkcs15(void* dest, uint16_t* out_length, const void* src,
-       uint16_t length_B, rsa_publickey_t* key, const void* pad){
-       int16_t pad_length;
-       bigint_t x;
-       pad_length = rsa_pkcs15_compute_padlength_B(key->modulus, length_B);
-       if(pad_length<8){
-#if DEBUG
-               cli_putstr("\r\nERROR: pad_length<8; pad_length: ");
-               cli_hexdump_rev(&pad_length, 2);
-#endif
-               return 2; /* message to long */
-       }
-       if(!pad){
-#if DEBUG
-               cli_putstr("\r\nauto-generating pad ...");
-#endif
-               uint16_t i;
-               uint8_t c;
-               for(i=0; i<pad_length; ++i){
-                       do{
-                               c = prng_get_byte();
-                       }while(c==0);
-                       ((uint8_t*)dest)[i+2] = c;
-               }
-       }else{
-#if DEBUG
-               cli_putstr("\r\nsupplied pad: ");
-               cli_hexdump_block(pad, pad_length, 4, 16);
-#endif
-               memcpy((uint8_t*)dest + 2, pad, pad_length);
-       }
-       ((uint8_t*)dest)[0] = 0x00;
-       ((uint8_t*)dest)[1] = 0x02;
-       ((uint8_t*)dest)[2+pad_length] = 0x00;
-       memcpy((uint8_t*)dest+3+pad_length, src, length_B);
-       x.wordv = dest;
-       x.length_B = (length_B+pad_length+3+sizeof(bigint_word_t)-1)/sizeof(bigint_word_t);
-#if DEBUG
-       cli_putstr("\r\nx-data: ");
-       cli_hexdump_block(x.wordv, x.length_B * sizeof(bigint_word_t), 4, 16);
-#endif
-       bigint_adjust(&x);
-       rsa_os2ip(&x, NULL, length_B+pad_length+3);
-       rsa_enc(&x, key);
-       rsa_i2osp(NULL, &x, out_length);
-       return 0;
-}
-
-uint8_t rsa_decrypt_pkcs15(void* dest, uint16_t* out_length, const void* src,
-       uint16_t length_B, rsa_privatekey_t* key, void* pad){
-       bigint_t x;
-       uint16_t m_length, pad_length=0, idx=0;
-       x.wordv = dest;
-       rsa_os2ip(&x, src, length_B);
-#if DEBUG
-       cli_putstr("\r\ncalling rsa_dec() ...");
-       cli_putstr("\r\nencoded block (src.len = 0x");
-       cli_hexdump_rev(&length_B, 2);
-       cli_putstr("):");
-       cli_hexdump_block(x.wordv, x.length_B * sizeof(bigint_word_t), 4, 16);
-#endif
-       rsa_dec(&x, key);
-#if DEBUG
-       cli_putstr("\r\nfinished rsa_dec() ...");
-#endif
-       rsa_i2osp(NULL, &x, &m_length);
-#if DEBUG
-       cli_putstr("\r\ndecoded block:");
-       cli_hexdump_block(x.wordv, m_length, 4, 16);
-#endif
-       while(((uint8_t*)x.wordv)[idx]==0 && idx<m_length){
-               ++idx;
-       }
-       if(idx>=m_length){
-               return 1;
-       }
-       if(((uint8_t*)x.wordv)[idx]!=2){
-               return 3;
-       }
-
-       ++idx;
-       while(((uint8_t*)x.wordv)[idx+pad_length]!=0  && (idx+pad_length)<m_length){
-               ++pad_length;
-       }
-       if(pad_length<8 || (idx+pad_length)>=m_length){
-               return 2;
-       }
-       *out_length = m_length - idx - pad_length - 1;
-       if(pad){
-#if DEBUG
-               cli_putstr("\r\npadding block:");
-               cli_hexdump_block(((uint8_t*)x.wordv)+idx, pad_length, 4, 16);
-               cli_putstr("\r\npad @ 0x");
-               cli_hexdump_rev(&pad, 2);
-               cli_putstr("\r\ndst @ 0x");
-               cli_hexdump_rev(&dest, 2);
-#endif
-               memcpy(pad, ((uint8_t*)x.wordv)+idx, pad_length);
-       }
-       memmove(dest, ((uint8_t*)x.wordv) + idx + pad_length + 1, m_length - idx - pad_length - 1);
-
-       return 0;
-}
-
diff --git a/rsa/rsa_pkcs15.h b/rsa/rsa_pkcs15.h
deleted file mode 100644 (file)
index ff1b26d..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/* rsa_pkcs15.h */
-/*
-    This file is part of the AVR-Crypto-Lib.
-    Copyright (C) 2011 Daniel Otte (daniel.otte@rub.de)
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef RSA_PKCS15_H_
-#define RSA_PKCS15_H_
-
-#include <stdint.h>
-#include "bigint.h"
-
-uint16_t rsa_pkcs15_compute_padlength_B(bigint_t* modulus, uint16_t msg_length_B);
-
-
-uint8_t rsa_encrypt_pkcs15(void* dest, uint16_t* out_length, const void* src,
-               uint16_t length_B, rsa_publickey_t* key, const void* pad);
-
-uint8_t rsa_decrypt_pkcs15(void* dest, uint16_t* out_length, const void* src,
-               uint16_t length_B, rsa_privatekey_t* key, void* pad);
-
-#endif /* RSA_PKCS15_H_ */
diff --git a/rsa/rsassa_pkcs1v15.c b/rsa/rsassa_pkcs1v15.c
new file mode 100644 (file)
index 0000000..c5ad2d2
--- /dev/null
@@ -0,0 +1,197 @@
+/* rsassa_pkcs1v15.c */
+/*
+    This file is part of the ARM-Crypto-Lib.
+    Copyright (C) 2006-2012 Daniel Otte (daniel.otte@rub.de)
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <stdlib.h>
+#include <stdint.h>
+#include <string.h>
+#include "rsa_basic.h"
+#include "bigint.h"
+#include "rsassa_pkcs1v15.h"
+
+#include "cli.h"
+
+const uint8_t md5_prefix[] =
+{ 0x30, 0x20, 0x30, 0x0c, 0x06, 0x08, 0x2a, 0x86,
+  0x48, 0x86, 0xf7, 0x0d, 0x02, 0x05, 0x05, 0x00,
+  0x04, 0x10
+};
+
+const pkcs1v15_algo_prefix_t pkcs1v15_md5_prefix = {
+       18, md5_prefix
+};
+
+const uint8_t sha1_prefix[] =
+{ 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e,
+  0x03, 0x02, 0x1a, 0x05, 0x00, 0x04, 0x14
+};
+
+const pkcs1v15_algo_prefix_t pkcs1v15_sha1_prefix = {
+       15, sha1_prefix
+};
+
+const uint8_t sha224_prefix[] =
+{ 0x30, 0x2d, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86,
+  0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x04, 0x05,
+  0x00, 0x04, 0x1c
+};
+
+const pkcs1v15_algo_prefix_t pkcs1v15_sha224_prefix = {
+       19, sha224_prefix
+};
+
+const uint8_t sha256_prefix[] =
+{ 0x30, 0x51, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86,
+  0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01, 0x05,
+  0x00, 0x04, 0x20
+};
+
+const pkcs1v15_algo_prefix_t pkcs1v15_sha256_prefix = {
+       19, sha256_prefix
+};
+
+const uint8_t sha384_prefix[] =
+{ 0x30, 0x51, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86,
+  0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02, 0x05,
+  0x00, 0x04, 0x30
+};
+
+const pkcs1v15_algo_prefix_t pkcs1v15_sha384_prefix = {
+       19, sha384_prefix
+};
+
+const uint8_t sha512_prefix[] =
+{ 0x30, 0x51, 0x30, 0x0d, 0x06, 0x09, 0x60, 0x86,
+  0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03, 0x05,
+  0x00, 0x04, 0x40
+};
+
+const pkcs1v15_algo_prefix_t pkcs1v15_sha512_prefix = {
+       19, sha512_prefix
+};
+/*
+
+MD2:     (0x)30 20 30 0c 06 08 2a 86 48 86 f7 0d 02 02 05 00 04 10
+MD5:     (0x)30 20 30 0c 06 08 2a 86 48 86 f7 0d 02 05 05 00 04 10
+SHA-1:   (0x)30 21 30 09 06 05 2b 0e 03 02 1a 05 00 04 14
+SHA-224: (0x)30 2d 30 0d 06 09 60 86 48 01 65 03 04 02 04 05 00 04 1c
+SHA-256: (0x)30 51 30 0d 06 09 60 86 48 01 65 03 04 02 01 05 00 04 20
+SHA-384: (0x)30 51 30 0d 06 09 60 86 48 01 65 03 04 02 02 05 00 04 30
+SHA-512: (0x)30 51 30 0d 06 09 60 86 48 01 65 03 04 02 03 05 00 04 40
+
+*/
+
+static
+uint8_t emsa_pkcs1v15_encode(void* dest, uint16_t dest_length_B, const void* hash,
+               uint16_t hash_length_B, const pkcs1v15_algo_prefix_t* algo_prefix){
+       uint16_t ps_length;
+
+       if(dest_length_B < algo_prefix->length + hash_length_B + 3 + 8){
+               return 1;
+       }
+       ps_length = dest_length_B - (algo_prefix->length + hash_length_B + 3);
+       ((uint8_t*)dest)[0] = 0x00;
+       ((uint8_t*)dest)[1] = 0x01;
+       ((uint8_t*)dest)[2 + ps_length] = 0x00;
+       memset((uint8_t*)dest + 2, 0xff, ps_length);
+       memcpy((uint8_t*)dest + 3 + ps_length, algo_prefix->data, algo_prefix->length);
+       memcpy((uint8_t*)dest + 3 + ps_length + algo_prefix->length, hash, hash_length_B);
+       return 0;
+}
+
+uint8_t rsa_sign_pkcs1v15(void* dest, uint16_t* out_length_B, const void* hash,
+               uint16_t hash_length_B, const rsa_privatekey_t* key,
+               const pkcs1v15_algo_prefix_t* algo_prefix){
+       uint8_t r;
+       uint16_t modulus_length;
+       bigint_t x;
+       modulus_length = bigint_get_first_set_bit(&key->modulus) / 8 + 1;
+       r = emsa_pkcs1v15_encode(dest, modulus_length, hash, hash_length_B, algo_prefix);
+       if(r){
+               return r;
+       }
+       x.wordv = dest;
+       rsa_os2ip(&x, NULL, modulus_length);
+       rsa_dec(&x, key);
+       rsa_i2osp(NULL, &x, out_length_B);
+
+       return 0;
+}
+
+
+uint8_t rsa_verify_pkcs1v15(const void* signature, uint16_t signature_length_B,
+               const void* hash, uint16_t hash_length_B, const rsa_publickey_t* key,
+               const pkcs1v15_algo_prefix_t* algo_prefix){
+       uint16_t modulus_length;
+       uint16_t signature_em_length, ps_length;
+       bigint_t x;
+
+       modulus_length = bigint_get_first_set_bit(&key->modulus) / 8 + 1;
+#if PREFERE_HEAP
+       uint8_t *buffer;
+       buffer = malloc(bigint_length_B(&key->modulus));
+       if(!buffer){
+               return 0x80;
+       }
+#else
+       uint8_t buffer[bigint_length_B(&key->modulus)];
+#endif
+/*
+       cli_putstr("\r\nDBG: signature_length_B: 0x");
+       cli_hexdump_rev(&signature_length_B, 2);
+       cli_putstr("\r\nDBG: modulus_length_B: 0x");
+       cli_hexdump_rev(&modulus_length, 2);
+*/
+       x.wordv = (bigint_word_t*)buffer;
+       rsa_os2ip(&x, signature, signature_length_B);
+       rsa_enc(&x, key);
+       rsa_i2osp(NULL, &x, &signature_em_length);
+/*
+       cli_putstr("\r\nDBG: signature_em_length_B: 0x");
+       cli_hexdump_rev(&signature_em_length, 2);
+*/
+       if(signature_em_length + 1 != modulus_length){
+               return 1;
+       }
+       if(memcmp(buffer + modulus_length - hash_length_B - 1, hash, hash_length_B)){
+               return 2;
+       }
+       ps_length = modulus_length - (algo_prefix->length + hash_length_B + 3);
+       if((int16_t)ps_length < 8){
+               return 3;
+       }
+       if(memcmp(buffer + 2 + ps_length, algo_prefix->data, algo_prefix->length)){
+               return 4;
+       }
+       if(buffer[0] != 1){
+               return 6;
+       }
+       if(buffer[1 + ps_length] != 0){
+               return 7;
+       }
+       do{
+               if(buffer[ps_length] != 0xff){
+                       return 8;
+               }
+       }while(--ps_length);
+#if PREFERE_HEAP
+       free(buffer);
+#endif
+
+       return 0;
+}
diff --git a/rsa/rsassa_pkcs1v15.h b/rsa/rsassa_pkcs1v15.h
new file mode 100644 (file)
index 0000000..88e9b56
--- /dev/null
@@ -0,0 +1,46 @@
+/* rsassa_pkcs1v15.h */
+/*
+    This file is part of the AVR-Crypto-Lib.
+    Copyright (C) 2012 Daniel Otte (daniel.otte@rub.de)
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef RSASSA_PKCS1V15_H_
+#define RSASSA_PKCS1V15_H_
+
+#include <stdint.h>
+#include "rsa_basic.h"
+
+typedef struct {
+       const uint8_t length;
+       const uint8_t *data;
+} pkcs1v15_algo_prefix_t;
+
+extern const pkcs1v15_algo_prefix_t pkcs1v15_md5_prefix;
+extern const pkcs1v15_algo_prefix_t pkcs1v15_sha1_prefix;
+extern const pkcs1v15_algo_prefix_t pkcs1v15_sha224_prefix;
+extern const pkcs1v15_algo_prefix_t pkcs1v15_sha256_prefix;
+extern const pkcs1v15_algo_prefix_t pkcs1v15_sha384_prefix;
+extern const pkcs1v15_algo_prefix_t pkcs1v15_sha512_prefix;
+
+uint8_t rsa_sign_pkcs1v15(void* dest, uint16_t* out_length_B, const void* hash,
+               uint16_t hash_length_B, const rsa_privatekey_t* key,
+               const pkcs1v15_algo_prefix_t* algo_prefix);
+
+uint8_t rsa_verify_pkcs1v15(const void* signature, uint16_t signature_length_B,
+               const void* hash, uint16_t hash_length_B, const rsa_publickey_t* key,
+               const pkcs1v15_algo_prefix_t* algo_prefix);
+
+#endif /* RSASSA_PKCS1V15_H_ */
index 3a01c792f921d3747987c662c2b4d9a19b743adb..31e45ba1f686616f2e9495088bcd7bd6ba0d59e3 100644 (file)
@@ -110,31 +110,31 @@ void salsa20_genBlock128(void* dest, const void* k, const void* iv, uint64_t i){
 
 void salsa20_init(void* key, uint16_t keylength_b, void* iv, salsa20_ctx_t* ctx){
        if(keylength_b==256){
-               memcpy((ctx->a+ 0), sigma+ 0, 4);
-               memcpy((ctx->a+20), sigma+ 4, 4);
-               memcpy((ctx->a+40), sigma+ 8, 4);
-               memcpy((ctx->a+44), (uint8_t*)key+16, 16);
-               memcpy((ctx->a+60), sigma+12, 4);
+               memcpy((ctx->a.v8+ 0), sigma+ 0, 4);
+               memcpy((ctx->a.v8+20), sigma+ 4, 4);
+               memcpy((ctx->a.v8+40), sigma+ 8, 4);
+               memcpy((ctx->a.v8+44), (uint8_t*)key+16, 16);
+               memcpy((ctx->a.v8+60), sigma+12, 4);
        }else{
-               memcpy((ctx->a+ 0), theta+ 0, 4);
-               memcpy((ctx->a+20), theta+ 4, 4);
-               memcpy((ctx->a+40), theta+ 8, 4);
-               memcpy((ctx->a+44), (uint8_t*)key+ 0, 16);
-               memcpy((ctx->a+60), theta+12, 4);
+               memcpy((ctx->a.v8+ 0), theta+ 0, 4);
+               memcpy((ctx->a.v8+20), theta+ 4, 4);
+               memcpy((ctx->a.v8+40), theta+ 8, 4);
+               memcpy((ctx->a.v8+44), (uint8_t*)key+ 0, 16);
+               memcpy((ctx->a.v8+60), theta+12, 4);
        }
-       memcpy((ctx->a+ 4), key, 16);
-       memset((ctx->a+24), 0, 16);
+       memcpy((ctx->a.v8+ 4), key, 16);
+       memset((ctx->a.v8+24), 0, 16);
        if(iv){
-               memcpy((ctx->a+24), iv, 8);
+               memcpy((ctx->a.v8+24), iv, 8);
        }
        ctx->buffer_idx=64;
 }
 
 uint8_t salsa20_gen(salsa20_ctx_t* ctx){
        if(ctx->buffer_idx==64){
-               memcpy(ctx->buffer, ctx->a, 64);
+               memcpy(ctx->buffer, ctx->a.v8, 64);
                salsa20_hash((uint32_t*)(ctx->buffer));
-               *((uint64_t*)(ctx->a+32)) += 1;
+               ctx->a.v64[4] += 1;
                ctx->buffer_idx = 0;
        }
        return ctx->buffer[ctx->buffer_idx++];
index ddfd74322283cdea04d9a1f5bdf3e7aab987e4a2..b618bd8d70b9f27405ff850487017f7cfb0ee2bd 100644 (file)
 #include <stdint.h>
 
 typedef struct{
-       uint8_t a[64];
+       union {
+               uint8_t   v8[64];
+               uint64_t v64[ 8];
+       } a;
        uint8_t buffer[64];
        uint8_t buffer_idx;
 } salsa20_ctx_t;
index 740fe67a96b5426d65da836aa13449af0715239f..d8249a4ca9346816f2e4a174521848c95ed24446 100644 (file)
@@ -183,7 +183,7 @@ void sha1_lastBlock(sha1_ctx_t *state, const void* block, uint16_t length){
 
 /********************************************************************************************************/
 
-void sha1_ctx2hash (sha1_hash_t *dest, sha1_ctx_t *state){
+void sha1_ctx2hash (void *dest, sha1_ctx_t *state){
 #if defined LITTLE_ENDIAN
        uint8_t i;
        for(i=0; i<5; ++i){
@@ -202,7 +202,7 @@ void sha1_ctx2hash (sha1_hash_t *dest, sha1_ctx_t *state){
  *
  *
  */
-void sha1 (sha1_hash_t *dest, const void* msg, uint32_t length){
+void sha1 (void *dest, const void* msg, uint32_t length){
        sha1_ctx_t s;
        sha1_init(&s);
        while(length & (~0x0001ff)){ /* length>=512 */
index aa8029aec4b4d97e89efb9c2c39d017b06fab4c5..e68c3fe63831c9e70ce62880627877f99433858a 100644 (file)
@@ -65,8 +65,9 @@ typedef struct {
  * \brief hash value type
  * A variable of this type may hold a SHA-1 hash value 
  */
+/*
 typedef uint8_t sha1_hash_t[SHA1_HASH_BITS/8];
-
+*/
 /** \fn sha1_init(sha1_ctx_t *state)
  * \brief initializes a SHA-1 context
  * This function sets a ::sha1_ctx_t variable to the initialization vector
@@ -100,7 +101,7 @@ void sha1_lastBlock (sha1_ctx_t *state, const void* block, uint16_t length_b);
  * \param dest pointer to the hash value destination
  * \param state pointer to the hash context
  */ 
-void sha1_ctx2hash (sha1_hash_t *dest, sha1_ctx_t *state);
+void sha1_ctx2hash (void *dest, sha1_ctx_t *state);
 
 /** \fn sha1(sha1_hash_t *dest, const void* msg, uint32_t length_b)
  * \brief hashing a message which in located entirely in RAM
@@ -110,7 +111,7 @@ void sha1_ctx2hash (sha1_hash_t *dest, sha1_ctx_t *state);
  * \param msg  pointer to the message which should be hashed
  * \param length_b length of the message in bits
  */ 
-void sha1(sha1_hash_t *dest, const void* msg, uint32_t length_b);
+void sha1(void *dest, const void* msg, uint32_t length_b);
 
 
 
index 2004544e986892c56a0c9479f71dc05987d5fb1c..2ee3139b4ab6fa46304be2067e557c82e5c2b16c 100644 (file)
@@ -47,7 +47,7 @@ uint8_t dbz_strcount(const char* str){
 
 /******************************************************************************/
 
-void dbz_splitup(char* dbzstr, char** strings){
+void dbz_splitup(const char* dbzstr, const char** strings){
        if(*dbzstr=='\0' && *(dbzstr+1)=='\0')
                return;
        *strings++ = dbzstr;
index a6f73eddc2f803ea3fab9b5726dba1f5b12f99ae..3f93d800b749a8b48a3fe263ee096ac0b81bfeaa 100644 (file)
@@ -50,6 +50,6 @@ uint8_t dbz_strcount(const char* str);
  * \param dbzstr pointer to the double-zero-terminated string
  * \param strings pointer to the array of strings (char pointers)
  */
-void dbz_splitup(char* dbzstr, char** strings);
+void dbz_splitup(const char* dbzstr, const char** strings);
 
 #endif /*DBZ_STRINGS_H_*/
index c0eb562339cc97f7ac13ba20cf7fe7131585ad0a..db61e6efc300bbfe2518055e990cf13e5da8eac4 100644 (file)
  * md5 test suit
  * 
 */
-
-#include "config.h"
-
-#include "uart_i.h"
-#include "debug.h"
+#include "main-test-common.h"
 
 #include "md5.h"
 #include "nessie_hash_test.h"
 #include "hfal_md5.h"
 #include "hfal-performance.h"
 
-#include <stdint.h>
-#include <string.h>
-#include <stdlib.h>
-#include "cli.h"
-
 char* algo_name = "MD5";
 
-const hfdesc_t* algolist[] PROGMEM = {
+const hfdesc_t* algolist[] = {
        (hfdesc_t*)&md5_desc,
        NULL
 };
@@ -126,12 +117,12 @@ void testrun_performance_md5(void){
  * main                                                                                                                                         *
  *****************************************************************************/
 
-const char nessie_str[]      PROGMEM = "nessie";
-const char test_str[]        PROGMEM = "test";
-const char performance_str[] PROGMEM = "performance";
-const char echo_str[]        PROGMEM = "echo";
+const char nessie_str[]      = "nessie";
+const char test_str[]        = "test";
+const char performance_str[] = "performance";
+const char echo_str[]        = "echo";
 
-cmdlist_entry_t cmdlist[] PROGMEM = {
+cmdlist_entry_t cmdlist[] = {
        { nessie_str,      NULL, testrun_nessie_md5},
        { test_str,        NULL, testrun_md5},
        { performance_str, NULL, testrun_performance_md5},
@@ -140,15 +131,10 @@ cmdlist_entry_t cmdlist[] PROGMEM = {
 };
 
 int main (void){
-       DEBUG_INIT();
+       main_setup();
        
-       cli_rx = (cli_rx_fpt)uart0_getc;
-       cli_tx = (cli_tx_fpt)uart0_putc;                
-       testrun_md5();
        for(;;){
-               cli_putstr("\r\n\r\nCrypto-VS (");
-               cli_putstr(algo_name);
-               cli_putstr(")\r\nloaded and running\r\n");
+               welcome_msg(algo_name);
                cmd_interface(cmdlist);
        }
 }
diff --git a/test_src/main-rsa_oaep-test.c b/test_src/main-rsa_oaep-test.c
deleted file mode 100644 (file)
index e6555ae..0000000
+++ /dev/null
@@ -1,841 +0,0 @@
-/* main-dsa-test.c */
-/*
-    This file is part of the ARM-Crypto-Lib.
-    Copyright (C) 2010 Daniel Otte (daniel.otte@rub.de)
-
-    This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation, either version 3 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-/*
- * RSA test-suit
- *
-*/
-#include "main-test-common.h"
-
-#include "noekeon.h"
-#include "noekeon_prng.h"
-#include "bigint.h"
-#include "bigint_io.h"
-#include "random_dummy.h"
-#include "rsa_basic.h"
-#include "rsa_oaep.h"
-
-#include "performance_test.h"
-
-const char* algo_name = "RSA-OAEP";
-
-#define BIGINT_CEIL(x) ((((x) + sizeof(bigint_word_t) - 1) / sizeof(bigint_word_t)) *  sizeof(bigint_word_t))
-#define BIGINT_OFF(x) ((sizeof(bigint_word_t) - (x) % sizeof(bigint_word_t)) % sizeof(bigint_word_t))
-
-/*****************************************************************************
- *  additional validation-functions                                                                                     *
- *****************************************************************************/
-#if 0
-/* ==================================
- * Example 1: A 1024-bit RSA Key Pair
- * ================================== */
-
-/* ------------------------------
- * Components of the RSA Key Pair
- * ------------------------------ */
-
-/* RSA modulus n: */
-const uint8_t modulus[] = {
-0xa8, 0xb3, 0xb2, 0x84, 0xaf, 0x8e, 0xb5, 0x0b, 0x38, 0x70, 0x34, 0xa8, 0x60, 0xf1, 0x46, 0xc4,
-0x91, 0x9f, 0x31, 0x87, 0x63, 0xcd, 0x6c, 0x55, 0x98, 0xc8, 0xae, 0x48, 0x11, 0xa1, 0xe0, 0xab,
-0xc4, 0xc7, 0xe0, 0xb0, 0x82, 0xd6, 0x93, 0xa5, 0xe7, 0xfc, 0xed, 0x67, 0x5c, 0xf4, 0x66, 0x85,
-0x12, 0x77, 0x2c, 0x0c, 0xbc, 0x64, 0xa7, 0x42, 0xc6, 0xc6, 0x30, 0xf5, 0x33, 0xc8, 0xcc, 0x72,
-0xf6, 0x2a, 0xe8, 0x33, 0xc4, 0x0b, 0xf2, 0x58, 0x42, 0xe9, 0x84, 0xbb, 0x78, 0xbd, 0xbf, 0x97,
-0xc0, 0x10, 0x7d, 0x55, 0xbd, 0xb6, 0x62, 0xf5, 0xc4, 0xe0, 0xfa, 0xb9, 0x84, 0x5c, 0xb5, 0x14,
-0x8e, 0xf7, 0x39, 0x2d, 0xd3, 0xaa, 0xff, 0x93, 0xae, 0x1e, 0x6b, 0x66, 0x7b, 0xb3, 0xd4, 0x24,
-0x76, 0x16, 0xd4, 0xf5, 0xba, 0x10, 0xd4, 0xcf, 0xd2, 0x26, 0xde, 0x88, 0xd3, 0x9f, 0x16, 0xfb
-};
-
-/* RSA public exponent e: */
-const uint8_t public_exponent[] = {
-0x00, 0x01, 0x00, 0x01
-};
-
-/* RSA private exponent d: */
-const uint8_t private_exponent[] = {
-0x53, 0x33, 0x9c, 0xfd, 0xb7, 0x9f, 0xc8, 0x46, 0x6a, 0x65, 0x5c, 0x73, 0x16, 0xac, 0xa8, 0x5c,
-0x55, 0xfd, 0x8f, 0x6d, 0xd8, 0x98, 0xfd, 0xaf, 0x11, 0x95, 0x17, 0xef, 0x4f, 0x52, 0xe8, 0xfd,
-0x8e, 0x25, 0x8d, 0xf9, 0x3f, 0xee, 0x18, 0x0f, 0xa0, 0xe4, 0xab, 0x29, 0x69, 0x3c, 0xd8, 0x3b,
-0x15, 0x2a, 0x55, 0x3d, 0x4a, 0xc4, 0xd1, 0x81, 0x2b, 0x8b, 0x9f, 0xa5, 0xaf, 0x0e, 0x7f, 0x55,
-0xfe, 0x73, 0x04, 0xdf, 0x41, 0x57, 0x09, 0x26, 0xf3, 0x31, 0x1f, 0x15, 0xc4, 0xd6, 0x5a, 0x73,
-0x2c, 0x48, 0x31, 0x16, 0xee, 0x3d, 0x3d, 0x2d, 0x0a, 0xf3, 0x54, 0x9a, 0xd9, 0xbf, 0x7c, 0xbf,
-0xb7, 0x8a, 0xd8, 0x84, 0xf8, 0x4d, 0x5b, 0xeb, 0x04, 0x72, 0x4d, 0xc7, 0x36, 0x9b, 0x31, 0xde,
-0xf3, 0x7d, 0x0c, 0xf5, 0x39, 0xe9, 0xcf, 0xcd, 0xd3, 0xde, 0x65, 0x37, 0x29, 0xea, 0xd5, 0xd1
-};
-
-/* Prime p: */
-const uint8_t p[] = {
-0xd3, 0x27, 0x37, 0xe7, 0x26, 0x7f, 0xfe, 0x13, 0x41, 0xb2, 0xd5, 0xc0, 0xd1, 0x50, 0xa8, 0x1b,
-0x58, 0x6f, 0xb3, 0x13, 0x2b, 0xed, 0x2f, 0x8d, 0x52, 0x62, 0x86, 0x4a, 0x9c, 0xb9, 0xf3, 0x0a,
-0xf3, 0x8b, 0xe4, 0x48, 0x59, 0x8d, 0x41, 0x3a, 0x17, 0x2e, 0xfb, 0x80, 0x2c, 0x21, 0xac, 0xf1,
-0xc1, 0x1c, 0x52, 0x0c, 0x2f, 0x26, 0xa4, 0x71, 0xdc, 0xad, 0x21, 0x2e, 0xac, 0x7c, 0xa3, 0x9d
-};
-
-/* Prime q: */
-const uint8_t q[] = {
-0xcc, 0x88, 0x53, 0xd1, 0xd5, 0x4d, 0xa6, 0x30, 0xfa, 0xc0, 0x04, 0xf4, 0x71, 0xf2, 0x81, 0xc7,
-0xb8, 0x98, 0x2d, 0x82, 0x24, 0xa4, 0x90, 0xed, 0xbe, 0xb3, 0x3d, 0x3e, 0x3d, 0x5c, 0xc9, 0x3c,
-0x47, 0x65, 0x70, 0x3d, 0x1d, 0xd7, 0x91, 0x64, 0x2f, 0x1f, 0x11, 0x6a, 0x0d, 0xd8, 0x52, 0xbe,
-0x24, 0x19, 0xb2, 0xaf, 0x72, 0xbf, 0xe9, 0xa0, 0x30, 0xe8, 0x60, 0xb0, 0x28, 0x8b, 0x5d, 0x77
-};
-
-/* p's CRT exponent dP: */
-const uint8_t dp[] = {
-0x0e, 0x12, 0xbf, 0x17, 0x18, 0xe9, 0xce, 0xf5, 0x59, 0x9b, 0xa1, 0xc3, 0x88, 0x2f, 0xe8, 0x04,
-0x6a, 0x90, 0x87, 0x4e, 0xef, 0xce, 0x8f, 0x2c, 0xcc, 0x20, 0xe4, 0xf2, 0x74, 0x1f, 0xb0, 0xa3,
-0x3a, 0x38, 0x48, 0xae, 0xc9, 0xc9, 0x30, 0x5f, 0xbe, 0xcb, 0xd2, 0xd7, 0x68, 0x19, 0x96, 0x7d,
-0x46, 0x71, 0xac, 0xc6, 0x43, 0x1e, 0x40, 0x37, 0x96, 0x8d, 0xb3, 0x78, 0x78, 0xe6, 0x95, 0xc1
-};
-
-/* q's CRT exponent dQ: */
-const uint8_t dq[] = {
-0x95, 0x29, 0x7b, 0x0f, 0x95, 0xa2, 0xfa, 0x67, 0xd0, 0x07, 0x07, 0xd6, 0x09, 0xdf, 0xd4, 0xfc,
-0x05, 0xc8, 0x9d, 0xaf, 0xc2, 0xef, 0x6d, 0x6e, 0xa5, 0x5b, 0xec, 0x77, 0x1e, 0xa3, 0x33, 0x73,
-0x4d, 0x92, 0x51, 0xe7, 0x90, 0x82, 0xec, 0xda, 0x86, 0x6e, 0xfe, 0xf1, 0x3c, 0x45, 0x9e, 0x1a,
-0x63, 0x13, 0x86, 0xb7, 0xe3, 0x54, 0xc8, 0x99, 0xf5, 0xf1, 0x12, 0xca, 0x85, 0xd7, 0x15, 0x83
-};
-
-/* CRT coefficient qInv: */
-const uint8_t qinv[] = {
-0x4f, 0x45, 0x6c, 0x50, 0x24, 0x93, 0xbd, 0xc0, 0xed, 0x2a, 0xb7, 0x56, 0xa3, 0xa6, 0xed, 0x4d,
-0x67, 0x35, 0x2a, 0x69, 0x7d, 0x42, 0x16, 0xe9, 0x32, 0x12, 0xb1, 0x27, 0xa6, 0x3d, 0x54, 0x11,
-0xce, 0x6f, 0xa9, 0x8d, 0x5d, 0xbe, 0xfd, 0x73, 0x26, 0x3e, 0x37, 0x28, 0x14, 0x27, 0x43, 0x81,
-0x81, 0x66, 0xed, 0x7d, 0xd6, 0x36, 0x87, 0xdd, 0x2a, 0x8c, 0xa1, 0xd2, 0xf4, 0xfb, 0xd8, 0xe1
-};
-
-/* ---------------------------------
- * RSAES-OAEP Encryption Example 1.1
- * --------------------------------- */
-
-/* Message to be, encrypted: */
-const uint8_t message[] = {
-0x66, 0x28, 0x19, 0x4e, 0x12, 0x07, 0x3d, 0xb0, 0x3b, 0xa9, 0x4c, 0xda, 0x9e, 0xf9, 0x53, 0x23,
-0x97, 0xd5, 0x0d, 0xba, 0x79, 0xb9, 0x87, 0x00, 0x4a, 0xfe, 0xfe, 0x34
-};
-
-/* Seed: */
-const uint8_t seed[] = {
-0x18, 0xb7, 0x76, 0xea, 0x21, 0x06, 0x9d, 0x69, 0x77, 0x6a, 0x33, 0xe9, 0x6b, 0xad, 0x48, 0xe1,
-0xdd, 0xa0, 0xa5, 0xef
-};
-
-/* Encryption: */
-const uint8_t encrypted[] = {
-0x35, 0x4f, 0xe6, 0x7b, 0x4a, 0x12, 0x6d, 0x5d, 0x35, 0xfe, 0x36, 0xc7, 0x77, 0x79, 0x1a, 0x3f,
-0x7b, 0xa1, 0x3d, 0xef, 0x48, 0x4e, 0x2d, 0x39, 0x08, 0xaf, 0xf7, 0x22, 0xfa, 0xd4, 0x68, 0xfb,
-0x21, 0x69, 0x6d, 0xe9, 0x5d, 0x0b, 0xe9, 0x11, 0xc2, 0xd3, 0x17, 0x4f, 0x8a, 0xfc, 0xc2, 0x01,
-0x03, 0x5f, 0x7b, 0x6d, 0x8e, 0x69, 0x40, 0x2d, 0xe5, 0x45, 0x16, 0x18, 0xc2, 0x1a, 0x53, 0x5f,
-0xa9, 0xd7, 0xbf, 0xc5, 0xb8, 0xdd, 0x9f, 0xc2, 0x43, 0xf8, 0xcf, 0x92, 0x7d, 0xb3, 0x13, 0x22,
-0xd6, 0xe8, 0x81, 0xea, 0xa9, 0x1a, 0x99, 0x61, 0x70, 0xe6, 0x57, 0xa0, 0x5a, 0x26, 0x64, 0x26,
-0xd9, 0x8c, 0x88, 0x00, 0x3f, 0x84, 0x77, 0xc1, 0x22, 0x70, 0x94, 0xa0, 0xd9, 0xfa, 0x1e, 0x8c,
-0x40, 0x24, 0x30, 0x9c, 0xe1, 0xec, 0xcc, 0xb5, 0x21, 0x00, 0x35, 0xd4, 0x7a, 0xc7, 0x2e, 0x8a
-};
-
-/* Message to be encrypted: */
-const uint8_t message2[] = {
-0x75, 0x0c, 0x40, 0x47, 0xf5, 0x47, 0xe8, 0xe4, 0x14, 0x11, 0x85, 0x65, 0x23, 0x29, 0x8a, 0xc9,
-0xba, 0xe2, 0x45, 0xef, 0xaf, 0x13, 0x97, 0xfb, 0xe5, 0x6f, 0x9d, 0xd5
-};
-
-/* Seed: */
-const uint8_t seed2[] = {
-0x0c, 0xc7, 0x42, 0xce, 0x4a, 0x9b, 0x7f, 0x32, 0xf9, 0x51, 0xbc, 0xb2, 0x51, 0xef, 0xd9, 0x25,
-0xfe, 0x4f, 0xe3, 0x5f
-};
-
-/* Encryption: */
-const uint8_t encrypted2[] = {
-0x64, 0x0d, 0xb1, 0xac, 0xc5, 0x8e, 0x05, 0x68, 0xfe, 0x54, 0x07, 0xe5, 0xf9, 0xb7, 0x01, 0xdf,
-0xf8, 0xc3, 0xc9, 0x1e, 0x71, 0x6c, 0x53, 0x6f, 0xc7, 0xfc, 0xec, 0x6c, 0xb5, 0xb7, 0x1c, 0x11,
-0x65, 0x98, 0x8d, 0x4a, 0x27, 0x9e, 0x15, 0x77, 0xd7, 0x30, 0xfc, 0x7a, 0x29, 0x93, 0x2e, 0x3f,
-0x00, 0xc8, 0x15, 0x15, 0x23, 0x6d, 0x8d, 0x8e, 0x31, 0x01, 0x7a, 0x7a, 0x09, 0xdf, 0x43, 0x52,
-0xd9, 0x04, 0xcd, 0xeb, 0x79, 0xaa, 0x58, 0x3a, 0xdc, 0xc3, 0x1e, 0xa6, 0x98, 0xa4, 0xc0, 0x52,
-0x83, 0xda, 0xba, 0x90, 0x89, 0xbe, 0x54, 0x91, 0xf6, 0x7c, 0x1a, 0x4e, 0xe4, 0x8d, 0xc7, 0x4b,
-0xbb, 0xe6, 0x64, 0x3a, 0xef, 0x84, 0x66, 0x79, 0xb4, 0xcb, 0x39, 0x5a, 0x35, 0x2d, 0x5e, 0xd1,
-0x15, 0x91, 0x2d, 0xf6, 0x96, 0xff, 0xe0, 0x70, 0x29, 0x32, 0x94, 0x6d, 0x71, 0x49, 0x2b, 0x44
-};
-
-/**********************************************************************************************/
-/* ---------------------------------
- * RSAES-OAEP Encryption Example 2.1
- * --------------------------------- */
-
-/* Message to be encrypted: */
-const uint8_t message3[] = {
-0x8f, 0xf0, 0x0c, 0xaa, 0x60, 0x5c, 0x70, 0x28, 0x30, 0x63, 0x4d, 0x9a, 0x6c, 0x3d, 0x42, 0xc6,
-0x52, 0xb5, 0x8c, 0xf1, 0xd9, 0x2f, 0xec, 0x57, 0x0b, 0xee, 0xe7
-};
-
-/* Seed: */
-const uint8_t seed3[] = {
-0x8c, 0x40, 0x7b, 0x5e, 0xc2, 0x89, 0x9e, 0x50, 0x99, 0xc5, 0x3e, 0x8c, 0xe7, 0x93, 0xbf, 0x94,
-0xe7, 0x1b, 0x17, 0x82
-};
-
-/* Encryption: */
-const uint8_t encrypted3[] = {
-0x01, 0x81, 0xaf, 0x89, 0x22, 0xb9, 0xfc, 0xb4, 0xd7, 0x9d, 0x92, 0xeb, 0xe1, 0x98, 0x15, 0x99,
-0x2f, 0xc0, 0xc1, 0x43, 0x9d, 0x8b, 0xcd, 0x49, 0x13, 0x98, 0xa0, 0xf4, 0xad, 0x3a, 0x32, 0x9a,
-0x5b, 0xd9, 0x38, 0x55, 0x60, 0xdb, 0x53, 0x26, 0x83, 0xc8, 0xb7, 0xda, 0x04, 0xe4, 0xb1, 0x2a,
-0xed, 0x6a, 0xac, 0xdf, 0x47, 0x1c, 0x34, 0xc9, 0xcd, 0xa8, 0x91, 0xad, 0xdc, 0xc2, 0xdf, 0x34,
-0x56, 0x65, 0x3a, 0xa6, 0x38, 0x2e, 0x9a, 0xe5, 0x9b, 0x54, 0x45, 0x52, 0x57, 0xeb, 0x09, 0x9d,
-0x56, 0x2b, 0xbe, 0x10, 0x45, 0x3f, 0x2b, 0x6d, 0x13, 0xc5, 0x9c, 0x02, 0xe1, 0x0f, 0x1f, 0x8a,
-0xbb, 0x5d, 0xa0, 0xd0, 0x57, 0x09, 0x32, 0xda, 0xcf, 0x2d, 0x09, 0x01, 0xdb, 0x72, 0x9d, 0x0f,
-0xef, 0xcc, 0x05, 0x4e, 0x70, 0x96, 0x8e, 0xa5, 0x40, 0xc8, 0x1b, 0x04, 0xbc, 0xae, 0xfe, 0x72,
-0x0e
-};
-#endif
-/**********************************************************************************************/
-
-/* ---------------------------------
- * RSAES-OAEP Encryption Example 2.4
- * --------------------------------- */
-
-/* Message to be encrypted: */
-const uint8_t message4[]  = {
-0xa7, 0xeb, 0x2a, 0x50, 0x36, 0x93, 0x1d, 0x27, 0xd4, 0xe8, 0x91, 0x32, 0x6d, 0x99, 0x69, 0x2f,
-0xfa, 0xdd, 0xa9, 0xbf, 0x7e, 0xfd, 0x3e, 0x34, 0xe6, 0x22, 0xc4, 0xad, 0xc0, 0x85, 0xf7, 0x21,
-0xdf, 0xe8, 0x85, 0x07, 0x2c, 0x78, 0xa2, 0x03, 0xb1, 0x51, 0x73, 0x9b, 0xe5, 0x40, 0xfa, 0x8c,
-0x15, 0x3a, 0x10, 0xf0, 0x0a
-};
-
-/* Seed: */
-const uint8_t seed4[]  = {
-0x9a, 0x7b, 0x3b, 0x0e, 0x70, 0x8b, 0xd9, 0x6f, 0x81, 0x90, 0xec, 0xab, 0x4f, 0xb9, 0xb2, 0xb3,
-0x80, 0x5a, 0x81, 0x56
-};
-
-/* Encryption: */
-const uint8_t encrypted4[]  = {
-/* 0x00,*/ 0xa4, 0x57, 0x8c, 0xbc, 0x17, 0x63, 0x18, 0xa6, 0x38, 0xfb, 0xa7, 0xd0, 0x1d, 0xf1, 0x57,
-0x46, 0xaf, 0x44, 0xd4, 0xf6, 0xcd, 0x96, 0xd7, 0xe7, 0xc4, 0x95, 0xcb, 0xf4, 0x25, 0xb0, 0x9c,
-0x64, 0x9d, 0x32, 0xbf, 0x88, 0x6d, 0xa4, 0x8f, 0xba, 0xf9, 0x89, 0xa2, 0x11, 0x71, 0x87, 0xca,
-0xfb, 0x1f, 0xb5, 0x80, 0x31, 0x76, 0x90, 0xe3, 0xcc, 0xd4, 0x46, 0x92, 0x0b, 0x7a, 0xf8, 0x2b,
-0x31, 0xdb, 0x58, 0x04, 0xd8, 0x7d, 0x01, 0x51, 0x4a, 0xcb, 0xfa, 0x91, 0x56, 0xe7, 0x82, 0xf8,
-0x67, 0xf6, 0xbe, 0xd9, 0x44, 0x9e, 0x0e, 0x9a, 0x2c, 0x09, 0xbc, 0xec, 0xc6, 0xaa, 0x08, 0x76,
-0x36, 0x96, 0x5e, 0x34, 0xb3, 0xec, 0x76, 0x6f, 0x2f, 0xe2, 0xe4, 0x30, 0x18, 0xa2, 0xfd, 0xde,
-0xb1, 0x40, 0x61, 0x6a, 0x0e, 0x9d, 0x82, 0xe5, 0x33, 0x10, 0x24, 0xee, 0x06, 0x52, 0xfc, 0x76,
-0x41
-};
-
-/**********************************************************************************************/
-#if 1
-/* RSA modulus n: */
-const uint8_t modulus2[]  = {
-0x01, 0x94, 0x7c, 0x7f, 0xce, 0x90, 0x42, 0x5f, 0x47, 0x27, 0x9e, 0x70, 0x85, 0x1f, 0x25, 0xd5,
-0xe6, 0x23, 0x16, 0xfe, 0x8a, 0x1d, 0xf1, 0x93, 0x71, 0xe3, 0xe6, 0x28, 0xe2, 0x60, 0x54, 0x3e,
-0x49, 0x01, 0xef, 0x60, 0x81, 0xf6, 0x8c, 0x0b, 0x81, 0x41, 0x19, 0x0d, 0x2a, 0xe8, 0xda, 0xba,
-0x7d, 0x12, 0x50, 0xec, 0x6d, 0xb6, 0x36, 0xe9, 0x44, 0xec, 0x37, 0x22, 0x87, 0x7c, 0x7c, 0x1d,
-0x0a, 0x67, 0xf1, 0x4b, 0x16, 0x94, 0xc5, 0xf0, 0x37, 0x94, 0x51, 0xa4, 0x3e, 0x49, 0xa3, 0x2d,
-0xde, 0x83, 0x67, 0x0b, 0x73, 0xda, 0x91, 0xa1, 0xc9, 0x9b, 0xc2, 0x3b, 0x43, 0x6a, 0x60, 0x05,
-0x5c, 0x61, 0x0f, 0x0b, 0xaf, 0x99, 0xc1, 0xa0, 0x79, 0x56, 0x5b, 0x95, 0xa3, 0xf1, 0x52, 0x66,
-0x32, 0xd1, 0xd4, 0xda, 0x60, 0xf2, 0x0e, 0xda, 0x25, 0xe6, 0x53, 0xc4, 0xf0, 0x02, 0x76, 0x6f,
-0x45
-};
-
-/* RSA public exponent e: */
-const uint8_t public_exponent2[]  = {
-0x01, 0x00, 0x01
-};
-
-/* RSA private exponent d: */
-const uint8_t private_exponent2[]  = {
-0x08, 0x23, 0xf2, 0x0f, 0xad, 0xb5, 0xda, 0x89, 0x08, 0x8a, 0x9d, 0x00, 0x89, 0x3e, 0x21, 0xfa,
-0x4a, 0x1b, 0x11, 0xfb, 0xc9, 0x3c, 0x64, 0xa3, 0xbe, 0x0b, 0xaa, 0xea, 0x97, 0xfb, 0x3b, 0x93,
-0xc3, 0xff, 0x71, 0x37, 0x04, 0xc1, 0x9c, 0x96, 0x3c, 0x1d, 0x10, 0x7a, 0xae, 0x99, 0x05, 0x47,
-0x39, 0xf7, 0x9e, 0x02, 0xe1, 0x86, 0xde, 0x86, 0xf8, 0x7a, 0x6d, 0xde, 0xfe, 0xa6, 0xd8, 0xcc,
-0xd1, 0xd3, 0xc8, 0x1a, 0x47, 0xbf, 0xa7, 0x25, 0x5b, 0xe2, 0x06, 0x01, 0xa4, 0xa4, 0xb2, 0xf0,
-0x8a, 0x16, 0x7b, 0x5e, 0x27, 0x9d, 0x71, 0x5b, 0x1b, 0x45, 0x5b, 0xdd, 0x7e, 0xab, 0x24, 0x59,
-0x41, 0xd9, 0x76, 0x8b, 0x9a, 0xce, 0xfb, 0x3c, 0xcd, 0xa5, 0x95, 0x2d, 0xa3, 0xce, 0xe7, 0x25,
-0x25, 0xb4, 0x50, 0x16, 0x63, 0xa8, 0xee, 0x15, 0xc9, 0xe9, 0x92, 0xd9, 0x24, 0x62, 0xfe, 0x39
-};
-
-/* Prime p: */
-const uint8_t p2[]  = {
-0x01, 0x59, 0xdb, 0xde, 0x04, 0xa3, 0x3e, 0xf0, 0x6f, 0xb6, 0x08, 0xb8, 0x0b, 0x19, 0x0f, 0x4d,
-0x3e, 0x22, 0xbc, 0xc1, 0x3a, 0xc8, 0xe4, 0xa0, 0x81, 0x03, 0x3a, 0xbf, 0xa4, 0x16, 0xed, 0xb0,
-0xb3, 0x38, 0xaa, 0x08, 0xb5, 0x73, 0x09, 0xea, 0x5a, 0x52, 0x40, 0xe7, 0xdc, 0x6e, 0x54, 0x37,
-0x8c, 0x69, 0x41, 0x4c, 0x31, 0xd9, 0x7d, 0xdb, 0x1f, 0x40, 0x6d, 0xb3, 0x76, 0x9c, 0xc4, 0x1a,
-0x43
-};
-
-/* Prime q: */
-const uint8_t q2[]  = {
-0x01, 0x2b, 0x65, 0x2f, 0x30, 0x40, 0x3b, 0x38, 0xb4, 0x09, 0x95, 0xfd, 0x6f, 0xf4, 0x1a, 0x1a,
-0xcc, 0x8a, 0xda, 0x70, 0x37, 0x32, 0x36, 0xb7, 0x20, 0x2d, 0x39, 0xb2, 0xee, 0x30, 0xcf, 0xb4,
-0x6d, 0xb0, 0x95, 0x11, 0xf6, 0xf3, 0x07, 0xcc, 0x61, 0xcc, 0x21, 0x60, 0x6c, 0x18, 0xa7, 0x5b,
-0x8a, 0x62, 0xf8, 0x22, 0xdf, 0x03, 0x1b, 0xa0, 0xdf, 0x0d, 0xaf, 0xd5, 0x50, 0x6f, 0x56, 0x8b,
-0xd7
-};
-
-/* p's CRT exponent dP: */
-const uint8_t dp2[]  = {
-0x43, 0x6e, 0xf5, 0x08, 0xde, 0x73, 0x65, 0x19, 0xc2, 0xda, 0x4c, 0x58, 0x0d, 0x98, 0xc8, 0x2c,
-0xb7, 0x45, 0x2a, 0x3f, 0xb5, 0xef, 0xad, 0xc3, 0xb9, 0xc7, 0x78, 0x9a, 0x1b, 0xc6, 0x58, 0x4f,
-0x79, 0x5a, 0xdd, 0xbb, 0xd3, 0x24, 0x39, 0xc7, 0x46, 0x86, 0x55, 0x2e, 0xcb, 0x6c, 0x2c, 0x30,
-0x7a, 0x4d, 0x3a, 0xf7, 0xf5, 0x39, 0xee, 0xc1, 0x57, 0x24, 0x8c, 0x7b, 0x31, 0xf1, 0xa2, 0x55
-};
-
-/* q's CRT exponent dQ: */
-const uint8_t dq2[]  = {
-0x01, 0x2b, 0x15, 0xa8, 0x9f, 0x3d, 0xfb, 0x2b, 0x39, 0x07, 0x3e, 0x73, 0xf0, 0x2b, 0xdd, 0x0c,
-0x1a, 0x7b, 0x37, 0x9d, 0xd4, 0x35, 0xf0, 0x5c, 0xdd, 0xe2, 0xef, 0xf9, 0xe4, 0x62, 0x94, 0x8b,
-0x7c, 0xec, 0x62, 0xee, 0x90, 0x50, 0xd5, 0xe0, 0x81, 0x6e, 0x07, 0x85, 0xa8, 0x56, 0xb4, 0x91,
-0x08, 0xdc, 0xb7, 0x5f, 0x36, 0x83, 0x87, 0x4d, 0x1c, 0xa6, 0x32, 0x9a, 0x19, 0x01, 0x30, 0x66,
-0xff
-};
-
-/* CRT coefficient qInv: */
-const uint8_t qinv2[]  = {
-0x02, 0x70, 0xdb, 0x17, 0xd5, 0x91, 0x4b, 0x01, 0x8d, 0x76, 0x11, 0x8b, 0x24, 0x38, 0x9a, 0x73,
-0x50, 0xec, 0x83, 0x6b, 0x00, 0x63, 0xa2, 0x17, 0x21, 0x23, 0x6f, 0xd8, 0xed, 0xb6, 0xd8, 0x9b,
-0x51, 0xe7, 0xee, 0xb8, 0x7b, 0x61, 0x1b, 0x71, 0x32, 0xcb, 0x7e, 0xa7, 0x35, 0x6c, 0x23, 0x15,
-0x1c, 0x1e, 0x77, 0x51, 0x50, 0x7c, 0x78, 0x6d, 0x9e, 0xe1, 0x79, 0x41, 0x70, 0xa8, 0xc8, 0xe8
-};
-
-#endif
-/**********************************************************************************************/
-
-
-uint8_t keys_allocated = 0;
-rsa_publickey_t pub_key;
-rsa_privatekey_t priv_key;
-
-#if 0
-  #define MSG       message
-  #define SEED      seed
-  #define ENCRYPTED encrypted
-  #define MODULUS modulus
-  #define PUB_EXPONENT public_exponent
-  #define PRIV_EXPONENT private_exponent
-  #define P p
-  #define Q q
-  #define DP dp
-  #define DQ dq
-  #define QINV qinv
-#else
-       #define MSG       message4
-       #define SEED      seed4
-       #define ENCRYPTED encrypted4
-       #define MODULUS modulus2
-       #define PUB_EXPONENT public_exponent2
-       #define PRIV_EXPONENT private_exponent2
-       #define P p2
-       #define Q q2
-       #define DP dp2
-       #define DQ dq2
-       #define QINV qinv2
-#endif
-
-
-uint8_t convert_nibble(uint8_t c){
-       if(c>='0' && c<='9'){
-               return c - '0';
-       }
-       c |= 'A' ^ 'a';
-       if(c>='a' && c<='f'){
-               return c - 'a' + 10;
-       }
-       return 0xff;
-}
-
-const char *block_ignore_string=" \t\r\n,;";
-#define BUFFER_LIMIT 120
-uint16_t read_os(void* dst, uint16_t length, const char* ignore_string){
-       uint16_t counter = 0;
-       uint16_t c;
-       uint8_t v, tmp = 0, idx = 0;
-       if(!ignore_string){
-               ignore_string = block_ignore_string;
-       }
-       while(counter < length){
-               c = cli_getc();
-               if(c > 0xff){
-                       return counter;
-               }
-               if(strchr(ignore_string, c)){
-                       continue;
-               }
-               v = convert_nibble(c);
-               if(v > 0x0f){
-                       return counter;
-               }
-               if(idx){
-                       ((uint8_t*)dst)[counter++] = (tmp << 4) | v;
-                       idx = 0;
-                       if(counter % (BUFFER_LIMIT/2) == 0){
-                               cli_putc('.');
-                       }
-               }else{
-                       tmp = v;
-                       idx = 1;
-               }
-       }
-       return counter;
-}
-
-uint16_t own_atou(const char* str){
-       uint16_t r=0;
-       while(*str && *str >= '0' && *str <= '9'){
-               r *= 10;
-               r += *str++ - '0';
-       }
-       return r;
-}
-
-char* own_utoa(unsigned value, char* str, uint8_t radix){
-       char *p = str, *b = str;
-       char t;
-       div_t d;
-       if(radix>36){
-               return NULL;
-       }
-       if(value == 0){
-               *p++ = '0';
-               *p = '\0';
-               return str;
-       }
-       while(value){
-               d = div(value, radix);
-               value = d.quot;
-               if(d.rem < 10){
-                       *p++ = '0' + d.rem;
-               }else{
-                       *p++ = 'a' + d.rem - 10;
-               }
-       }
-       *p = '\0';
-       while(str<p){
-               t = *str;
-               *str++ = *--p;
-               *p = t;
-       }
-       return b;
-}
-
-uint8_t read_bigint(bigint_t* a, char* prompt){
-       uint16_t read_length, actual_length;
-       uint8_t off;
-       uint8_t *buffer;
-       char read_int_str[18];
-       cli_putstr(prompt);
-       cli_putstr("\r\n  length: ");
-       cli_getsn(read_int_str, 16);
-       read_length = own_atou(read_int_str);
-       off = (sizeof(bigint_word_t) - (read_length % sizeof(bigint_word_t))) % sizeof(bigint_word_t);
-       buffer = malloc(((read_length + sizeof(bigint_word_t) - 1) / sizeof(bigint_word_t)) * sizeof(bigint_word_t));
-       if(!buffer){
-               cli_putstr("\r\nERROR: OOM!");
-               return 2;
-       }
-       cli_putstr("\r\n  data: ");
-       memset(buffer, 0, sizeof(bigint_word_t));
-       actual_length = read_os(buffer + off, read_length, NULL);
-       if(actual_length != read_length){
-               cli_putstr("\r\nERROR: unexpected end of data!");
-               free(buffer);
-               return 1;
-       }
-       a->wordv = (bigint_word_t*)buffer;
-       a->length_B = (read_length + sizeof(bigint_word_t) - 1) / sizeof(bigint_word_t);
-       bigint_changeendianess(a);
-       bigint_adjust(a);
-       return 0;
-}
-
-uint8_t pre_alloc_key_crt(void){
-       uint8_t c;
-       pub_key.modulus = malloc(sizeof(bigint_t));
-       if(!pub_key.modulus){
-               cli_putstr("\r\nERROR: OOM!");
-               return 2;
-       }
-       priv_key.modulus = pub_key.modulus;
-       priv_key.n = 5;
-       priv_key.components = malloc(5 * sizeof(bigint_t*));
-       if(!priv_key.components){
-               cli_putstr("\r\nERROR: OOM!");
-               return 2;
-       }
-       pub_key.exponent = malloc(sizeof(bigint_t));
-       if(!pub_key.exponent){
-               cli_putstr("\r\nERROR: OOM!");
-               return 2;
-       }
-       for(c=0; c<5; ++c){
-               priv_key.components[c] = malloc(sizeof(bigint_t));
-               if(!priv_key.components[c]){
-                       cli_putstr("\r\nERROR: OOM!");
-                       return 2;
-               }
-       }
-       return 0;
-}
-
-void free_key(void){
-       uint8_t c;
-       free(pub_key.modulus->wordv);
-       free(pub_key.exponent->wordv);
-       free(pub_key.modulus);
-       pub_key.modulus = priv_key.modulus = NULL;
-       free(pub_key.exponent);
-       pub_key.exponent = NULL;
-       for(c = 0; c < priv_key.n; ++c){
-               free(priv_key.components[c]->wordv);
-               free(priv_key.components[c]);
-       }
-       free(priv_key.components);
-       priv_key.components = NULL;
-}
-
-uint8_t read_key_crt(void){
-       uint8_t r;
-       cli_putstr("\r\n== reading key (crt) ==");
-       r = pre_alloc_key_crt();
-       if(r) return r;
-       r = read_bigint(pub_key.modulus,"\r\n = module =");
-       if(r) return r;
-       r = read_bigint(pub_key.exponent,"\r\n = public exponent =");
-       if(r) return r;
-       r = read_bigint(priv_key.components[0],"\r\n = p (first prime) =");
-       if(r) return r;
-       r = read_bigint(priv_key.components[1],"\r\n = q (second prime) =");
-       if(r) return r;
-       r = read_bigint(priv_key.components[2],"\r\n = dp (p's exponent) =");
-       if(r) return r;
-       r = read_bigint(priv_key.components[3],"\r\n = dq (q's exponent) =");
-       if(r) return r;
-       r = read_bigint(priv_key.components[4],"\r\n = qInv (q' coefficient) =");
-       return r;
-}
-
-uint8_t read_key_conv(void){
-       uint8_t r;
-       cli_putstr("\r\n== reading key (crt) ==");
-       pub_key.modulus = malloc(sizeof(bigint_t));
-       if(!pub_key.modulus){
-               cli_putstr("\r\nERROR: OOM!");
-               return 2;
-       }
-       r = read_bigint(pub_key.modulus,"\r\n = module =");
-       if(r) return r;
-       priv_key.modulus = pub_key.modulus;
-       priv_key.n = 1;
-       pub_key.exponent = malloc(sizeof(bigint_t));
-       if(!pub_key.exponent){
-               cli_putstr("\r\nERROR: OOM!");
-               return 2;
-       }
-       priv_key.components = malloc(sizeof(bigint_t*));
-       if(!priv_key.components){
-               cli_putstr("\r\nERROR: OOM!");
-               return 2;
-       }
-       priv_key.components[0] = malloc(sizeof(bigint_t));
-       if(!priv_key.components[0]){
-               cli_putstr("\r\nERROR: OOM!");
-               return 2;
-       }
-       r = read_bigint(pub_key.exponent,"\r\n = public exponent =");
-       if(r) return r;
-       r = read_bigint(priv_key.components[0],"\r\n = private exponent =");
-       return r;
-}
-
-void load_priv_conventional(void){
-       bigint_t *epriv;
-       epriv = malloc(sizeof(bigint_t));
-       if(!epriv){
-               cli_putstr("\r\nERROR: OOM!");
-               return;
-       }
-       epriv->length_B = (sizeof(PRIV_EXPONENT) + sizeof(bigint_word_t) - 1) / sizeof(bigint_word_t);
-       epriv->wordv =  malloc(epriv->length_B * sizeof(bigint_word_t));
-       if(!epriv->wordv){
-               cli_putstr("\r\nERROR: OOM!");
-               return;
-       }
-       memcpy(epriv->wordv, PRIV_EXPONENT, sizeof(PRIV_EXPONENT));
-       priv_key.components = malloc(sizeof(bigint_t*));
-       priv_key.components[0] = epriv;
-       priv_key.n = 1;
-       bigint_changeendianess(epriv);
-       bigint_adjust(epriv);
-}
-
-
-void load_priv_crt_mono(void){
-       bigint_t **v;
-       const uint8_t *bv[5] = {P,Q,DP,DQ,QINV};
-       uint16_t sv[5] = {sizeof(P), sizeof(Q), sizeof(DP), sizeof(DQ), sizeof(QINV)};
-       uint8_t i;
-       v = malloc(5 * sizeof(bigint_t));
-       if(!v){
-               cli_putstr("\r\nERROR: OOM!");
-               return;
-       }
-       priv_key.components = malloc(5*sizeof(bigint_t*));
-       if(!priv_key.components){
-               cli_putstr("\r\nERROR: OOM!");
-               return;
-       }
-       priv_key.n = 5;
-       for(i=0; i<5; ++i){
-               v[i] = malloc(sizeof(bigint_t));
-               v[i]->info = 0;
-               v[i]->length_B = (sv[i] + sizeof(bigint_word_t) - 1) / sizeof(bigint_word_t);
-               v[i]->wordv = calloc(v[i]->length_B , sizeof(bigint_word_t));
-               if(!v[i]->wordv){
-                       cli_putstr("\r\nERROR: OOM!");
-                       return;
-               }
-               memcpy(v[i]->wordv, bv[i], sv[i]);
-               bigint_changeendianess(v[i]);
-               bigint_adjust(v[i]);
-               priv_key.components[i] = v[i];
-       }
-}
-
-uint8_t load_bigint_from_os(bigint_t* a, const void* os, uint16_t length_B){
-       a->length_B = BIGINT_CEIL(length_B) / sizeof(bigint_word_t);
-       a->wordv = malloc(BIGINT_CEIL(length_B));
-       if(!a->wordv){
-               cli_putstr("\r\nOOM!\r\n");
-               return 1;
-       }
-       memset(a->wordv, 0, sizeof(bigint_word_t));
-       memcpy((uint8_t*)a->wordv + BIGINT_OFF(length_B), os, length_B);
-       a->info = 0;
-       bigint_changeendianess(a);
-       bigint_adjust(a);
-       return 0;
-}
-
-void load_fix_rsa(void){
-       if(keys_allocated){
-               free_key();
-       }
-       keys_allocated = 1;
-
-       if(pre_alloc_key_crt()){
-               cli_putstr("\r\nOOM!\r\n");
-               return;
-       }
-
-       load_bigint_from_os(pub_key.modulus, MODULUS, sizeof(MODULUS));
-       load_bigint_from_os(pub_key.exponent, PUB_EXPONENT, sizeof(PUB_EXPONENT));
-       priv_key.n = 5;
-       load_bigint_from_os(priv_key.components[0], P, sizeof(P));
-       load_bigint_from_os(priv_key.components[1], Q, sizeof(Q));
-       load_bigint_from_os(priv_key.components[2], DP, sizeof(DP));
-       load_bigint_from_os(priv_key.components[3], DQ, sizeof(DQ));
-       load_bigint_from_os(priv_key.components[4], QINV, sizeof(QINV));
-
-//     load_priv_conventional();
-//     load_priv_crt_mono();
-}
-
-void quick_test(void){
-       uint8_t *ciphertext, *plaintext, rc;
-       uint8_t seed[sizeof(SEED)];
-       uint16_t clen, plen;
-       ciphertext = malloc(clen = pub_key.modulus->length_B * sizeof(bigint_word_t));
-       plaintext = malloc(pub_key.modulus->length_B * sizeof(bigint_word_t));
-       memcpy(plaintext, MSG, sizeof(MSG));
-       memcpy(seed, SEED, sizeof(SEED));
-       cli_putstr("\r\nplaintext:");
-       cli_hexdump_block(plaintext, sizeof(MSG), 4, 8);
-       cli_putstr("\r\nencrypting: ...");
-       rc = rsa_encrypt_oaep(ciphertext, &clen, plaintext, sizeof(MSG), &pub_key, NULL, NULL, seed);
-       if(rc){
-               cli_putstr("\r\nERROR: rsa_encrypt_oaep returned: ");
-               cli_hexdump_byte(rc);
-               return;
-
-       }
-
-       cli_putstr("\r\n\r\nciphertext:");
-       cli_hexdump_block(ciphertext, clen, 4, 8);
-       if(clen!=sizeof(ENCRYPTED)){
-                       cli_putstr("\r\n>>FAIL (no size match)<<");
-       }else{
-               if(memcmp(ciphertext, ENCRYPTED, clen)){
-                       cli_putstr("\r\n>>FAIL (no content match)<<");
-               }else{
-                       cli_putstr("\r\n>>OK<<");
-               }
-       }
-
-       cli_putstr("\r\ndecrypting: ...");
-       rc = rsa_decrypt_oaep(plaintext, &plen, ciphertext, clen, &priv_key, NULL, NULL, NULL);
-       if(rc){
-               cli_putstr("\r\nERROR: rsa_decrypt_oaep returned: ");
-               cli_hexdump_byte(rc);
-               return;
-       }
-       cli_putstr("\r\n\r\nplaintext:");
-       cli_hexdump_block(plaintext, plen, 4, 8);
-
-       free(ciphertext);
-       free(plaintext);
-}
-
-void run_seed_test(void){
-       uint8_t *msg, *ciph, *msg_;
-       uint16_t msg_len, ciph_len, msg_len_;
-       uint8_t seed[20], seed_out[20];
-       char read_int_str[18];
-       cli_putstr("\r\n== test with given seed ==");
-       cli_putstr("\r\n = message =");
-       cli_putstr("\r\n  length: ");
-       cli_getsn(read_int_str, 16);
-       msg_len = own_atou(read_int_str);
-       msg = malloc(msg_len);
-       if(!msg){
-               cli_putstr("\r\nERROR: OOM!");
-               return;
-       }
-       ciph = malloc(bigint_length_B(pub_key.modulus));
-       if(!ciph){
-               cli_putstr("\r\nERROR: OOM!");
-               return;
-       }
-       msg_ = malloc(bigint_length_B(pub_key.modulus));
-       if(!msg_){
-               cli_putstr("\r\nERROR: OOM!");
-               return;
-       }
-       cli_putstr("\r\n  data: ");
-       read_os(msg, msg_len, NULL);
-       cli_putstr("\r\n  seed (20 bytes): ");
-       read_os(seed, 20, NULL);
-
-       cli_putstr("\r\n  encrypting ...");
-       rsa_encrypt_oaep(ciph, &ciph_len, msg, msg_len, &pub_key, NULL, NULL, seed);
-       cli_putstr("\r\n  ciphertext:");
-       cli_hexdump_block(ciph, ciph_len, 4, 16);
-       cli_putstr("\r\n  decrypting ... ");
-       rsa_decrypt_oaep(msg_, &msg_len_, ciph, ciph_len, &priv_key, NULL, NULL, seed_out);
-       cli_putstr("[done]");
-       if(msg_len != msg_len_){
-               char tstr[16];
-               cli_putstr("\r\nERROR: wrong decrypted message length (");
-
-               own_utoa(msg_len_, tstr, 10);
-               cli_putstr(tstr);
-               cli_putstr(" instead of ");
-               own_utoa(msg_len, tstr, 10);
-               cli_putstr(tstr);
-               cli_putc(')');
-               goto end;
-       }
-       if(memcmp(msg, msg_, msg_len)){
-               cli_putstr("\r\nERROR: wrong decrypted message:");
-               cli_hexdump_block(msg_, msg_len_, 4, 16);
-               cli_putstr("\r\nreference:");
-               cli_hexdump_block(msg, msg_len, 4, 16);
-               goto end;
-       }
-
-       if(memcmp(seed, seed_out, 20)){
-               cli_putstr("\r\nERROR: wrong decrypted seed:");
-               cli_hexdump_block(seed_out, 20, 4, 16);
-               cli_putstr("\r\nreference:");
-               cli_hexdump_block(seed, 20, 4, 16);
-               goto end;
-       }
-       cli_putstr("\r\n  >>OK<<");
-end:
-       free(msg);
-       free(msg_);
-       free(ciph);
-}
-
-void reset_prng(void){
-       uint8_t buf[16];
-       memset(buf, 0, 16);
-       random_seed(buf);
-       cli_putstr("\r\nPRNG reset");
-}
-
-void rsa_init(void){
-       prng_get_byte = random8;
-}
-
-void load_key(void){
-       if(keys_allocated){
-               free_key();
-       }
-       keys_allocated = 1;
-       read_key_crt();
-}
-
-void test_dump(void){
-       char lstr[16];
-       int len;
-       cli_putstr("\r\nenter dump length: ");
-       cli_getsn(lstr, 15);
-       len = own_atou(lstr);
-       cli_putstr("\r\ndumping 0x");
-       cli_hexdump_rev(&len, 2);
-       cli_putstr(" byte:");
-       cli_hexdump_block(pub_key.modulus->wordv, len, 4, 8);
-}
-
-/*****************************************************************************
- *  main                                                                                                                                        *
- *****************************************************************************/
-
-const char echo_test_str[]     = "echo-test";
-const char reset_prng_str[]    = "reset-prng";
-const char load_key_str[]      = "load-key";
-const char load_fix_key_str[]  = "load-fix-key";
-const char quick_test_str[]    = "quick-test";
-const char seed_test_str[]     = "seed-test";
-const char dump_test_str[]     = "dump-test";
-const char performance_str[]   = "performance";
-const char echo_str[]          = "echo";
-
-const cmdlist_entry_t cmdlist[]  = {
-       { reset_prng_str,       NULL, reset_prng                    },
-       { load_key_str,         NULL, load_key                      },
-       { load_fix_key_str,     NULL, load_fix_rsa                  },
-       { quick_test_str,       NULL, quick_test                    },
-       { seed_test_str,        NULL, run_seed_test                 },
-       { dump_test_str,        NULL, test_dump                     },
-//     { performance_str,      NULL, testrun_performance_bigint    },
-       { echo_str,         (void*)1, (void_fpt)echo_ctrl           },
-       { NULL,                 NULL, NULL                          }
-};
-
-void dump_sp(void){
-       uint8_t x;
-       uint8_t *xa = &x;
-       cli_putstr("\r\nstack pointer: ~");
-       cli_hexdump_rev(&xa, 4);
-}
-
-int main (void){
-       main_setup();
-
-       for(;;){
-               welcome_msg(algo_name);
-               rsa_init();
-               cmd_interface(cmdlist);
-       }
-}
diff --git a/test_src/main-rsassa_pkcs1v15-test.c b/test_src/main-rsassa_pkcs1v15-test.c
new file mode 100644 (file)
index 0000000..178d464
--- /dev/null
@@ -0,0 +1,633 @@
+/* main-dsa-test.c */
+/*
+    This file is part of the ARM-Crypto-Lib.
+    Copyright (C) 2010 Daniel Otte (daniel.otte@rub.de)
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+/*
+ * RSA test-suit
+ *
+*/
+#include "main-test-common.h"
+
+#include "noekeon.h"
+#include "noekeon_prng.h"
+#include "bigint.h"
+#include "bigint_io.h"
+#include "random_dummy.h"
+#include "rsa_basic.h"
+#include "rsassa_pkcs1v15.h"
+#include "sha1.h"
+
+#include "performance_test.h"
+
+const char* algo_name = "RSASA-PKCS15";
+
+#define BIGINT_CEIL(x) ((((x) + sizeof(bigint_word_t) - 1) / sizeof(bigint_word_t)) *  sizeof(bigint_word_t))
+#define BIGINT_OFF(x) ((sizeof(bigint_word_t) - (x) % sizeof(bigint_word_t)) % sizeof(bigint_word_t))
+
+/*****************************************************************************
+ *  additional validation-functions                                                                                     *
+ *****************************************************************************/
+
+/* Modulus: */
+const uint8_t modulus[]  = {
+0xa8, 0xb3, 0xb2, 0x84, 0xaf, 0x8e, 0xb5, 0x0b, 0x38, 0x70, 0x34, 0xa8, 0x60, 0xf1, 0x46, 0xc4,
+0x91, 0x9f, 0x31, 0x87, 0x63, 0xcd, 0x6c, 0x55, 0x98, 0xc8, 0xae, 0x48, 0x11, 0xa1, 0xe0, 0xab,
+0xc4, 0xc7, 0xe0, 0xb0, 0x82, 0xd6, 0x93, 0xa5, 0xe7, 0xfc, 0xed, 0x67, 0x5c, 0xf4, 0x66, 0x85,
+0x12, 0x77, 0x2c, 0x0c, 0xbc, 0x64, 0xa7, 0x42, 0xc6, 0xc6, 0x30, 0xf5, 0x33, 0xc8, 0xcc, 0x72,
+0xf6, 0x2a, 0xe8, 0x33, 0xc4, 0x0b, 0xf2, 0x58, 0x42, 0xe9, 0x84, 0xbb, 0x78, 0xbd, 0xbf, 0x97,
+0xc0, 0x10, 0x7d, 0x55, 0xbd, 0xb6, 0x62, 0xf5, 0xc4, 0xe0, 0xfa, 0xb9, 0x84, 0x5c, 0xb5, 0x14,
+0x8e, 0xf7, 0x39, 0x2d, 0xd3, 0xaa, 0xff, 0x93, 0xae, 0x1e, 0x6b, 0x66, 0x7b, 0xb3, 0xd4, 0x24,
+0x76, 0x16, 0xd4, 0xf5, 0xba, 0x10, 0xd4, 0xcf, 0xd2, 0x26, 0xde, 0x88, 0xd3, 0x9f, 0x16, 0xfb
+};
+
+/* Public exponent: */
+const uint8_t pub_exponent[]  = { 0x01, 0x00, 0x01 };
+
+/* Exponent: */
+const uint8_t priv_exponent[]  = {
+0x53, 0x33, 0x9c, 0xfd, 0xb7, 0x9f, 0xc8, 0x46, 0x6a, 0x65, 0x5c, 0x73, 0x16, 0xac, 0xa8, 0x5c,
+0x55, 0xfd, 0x8f, 0x6d, 0xd8, 0x98, 0xfd, 0xaf, 0x11, 0x95, 0x17, 0xef, 0x4f, 0x52, 0xe8, 0xfd,
+0x8e, 0x25, 0x8d, 0xf9, 0x3f, 0xee, 0x18, 0x0f, 0xa0, 0xe4, 0xab, 0x29, 0x69, 0x3c, 0xd8, 0x3b,
+0x15, 0x2a, 0x55, 0x3d, 0x4a, 0xc4, 0xd1, 0x81, 0x2b, 0x8b, 0x9f, 0xa5, 0xaf, 0x0e, 0x7f, 0x55,
+0xfe, 0x73, 0x04, 0xdf, 0x41, 0x57, 0x09, 0x26, 0xf3, 0x31, 0x1f, 0x15, 0xc4, 0xd6, 0x5a, 0x73,
+0x2c, 0x48, 0x31, 0x16, 0xee, 0x3d, 0x3d, 0x2d, 0x0a, 0xf3, 0x54, 0x9a, 0xd9, 0xbf, 0x7c, 0xbf,
+0xb7, 0x8a, 0xd8, 0x84, 0xf8, 0x4d, 0x5b, 0xeb, 0x04, 0x72, 0x4d, 0xc7, 0x36, 0x9b, 0x31, 0xde,
+0xf3, 0x7d, 0x0c, 0xf5, 0x39, 0xe9, 0xcf, 0xcd, 0xd3, 0xde, 0x65, 0x37, 0x29, 0xea, 0xd5, 0xd1
+};
+
+/* Prime 1: */
+const uint8_t p[]  = {
+0xd3, 0x27, 0x37, 0xe7, 0x26, 0x7f, 0xfe, 0x13, 0x41, 0xb2, 0xd5, 0xc0, 0xd1, 0x50, 0xa8, 0x1b,
+0x58, 0x6f, 0xb3, 0x13, 0x2b, 0xed, 0x2f, 0x8d, 0x52, 0x62, 0x86, 0x4a, 0x9c, 0xb9, 0xf3, 0x0a,
+0xf3, 0x8b, 0xe4, 0x48, 0x59, 0x8d, 0x41, 0x3a, 0x17, 0x2e, 0xfb, 0x80, 0x2c, 0x21, 0xac, 0xf1,
+0xc1, 0x1c, 0x52, 0x0c, 0x2f, 0x26, 0xa4, 0x71, 0xdc, 0xad, 0x21, 0x2e, 0xac, 0x7c, 0xa3, 0x9d
+};
+
+/* Prime 2: */
+const uint8_t q[]  = {
+0xcc, 0x88, 0x53, 0xd1, 0xd5, 0x4d, 0xa6, 0x30, 0xfa, 0xc0, 0x04, 0xf4, 0x71, 0xf2, 0x81, 0xc7,
+0xb8, 0x98, 0x2d, 0x82, 0x24, 0xa4, 0x90, 0xed, 0xbe, 0xb3, 0x3d, 0x3e, 0x3d, 0x5c, 0xc9, 0x3c,
+0x47, 0x65, 0x70, 0x3d, 0x1d, 0xd7, 0x91, 0x64, 0x2f, 0x1f, 0x11, 0x6a, 0x0d, 0xd8, 0x52, 0xbe,
+0x24, 0x19, 0xb2, 0xaf, 0x72, 0xbf, 0xe9, 0xa0, 0x30, 0xe8, 0x60, 0xb0, 0x28, 0x8b, 0x5d, 0x77
+};
+
+/* Prime exponent 1: */
+const uint8_t dp[]  = {
+0x0e, 0x12, 0xbf, 0x17, 0x18, 0xe9, 0xce, 0xf5, 0x59, 0x9b, 0xa1, 0xc3, 0x88, 0x2f, 0xe8, 0x04,
+0x6a, 0x90, 0x87, 0x4e, 0xef, 0xce, 0x8f, 0x2c, 0xcc, 0x20, 0xe4, 0xf2, 0x74, 0x1f, 0xb0, 0xa3,
+0x3a, 0x38, 0x48, 0xae, 0xc9, 0xc9, 0x30, 0x5f, 0xbe, 0xcb, 0xd2, 0xd7, 0x68, 0x19, 0x96, 0x7d,
+0x46, 0x71, 0xac, 0xc6, 0x43, 0x1e, 0x40, 0x37, 0x96, 0x8d, 0xb3, 0x78, 0x78, 0xe6, 0x95, 0xc1
+};
+
+/* Prime exponent 2: */
+const uint8_t dq[]  = {
+0x95, 0x29, 0x7b, 0x0f, 0x95, 0xa2, 0xfa, 0x67, 0xd0, 0x07, 0x07, 0xd6, 0x09, 0xdf, 0xd4, 0xfc,
+0x05, 0xc8, 0x9d, 0xaf, 0xc2, 0xef, 0x6d, 0x6e, 0xa5, 0x5b, 0xec, 0x77, 0x1e, 0xa3, 0x33, 0x73,
+0x4d, 0x92, 0x51, 0xe7, 0x90, 0x82, 0xec, 0xda, 0x86, 0x6e, 0xfe, 0xf1, 0x3c, 0x45, 0x9e, 0x1a,
+0x63, 0x13, 0x86, 0xb7, 0xe3, 0x54, 0xc8, 0x99, 0xf5, 0xf1, 0x12, 0xca, 0x85, 0xd7, 0x15, 0x83
+};
+
+/* Coefficient: */
+const uint8_t qinv[]  = {
+0x4f, 0x45, 0x6c, 0x50, 0x24, 0x93, 0xbd, 0xc0, 0xed, 0x2a, 0xb7, 0x56, 0xa3, 0xa6, 0xed, 0x4d,
+0x67, 0x35, 0x2a, 0x69, 0x7d, 0x42, 0x16, 0xe9, 0x32, 0x12, 0xb1, 0x27, 0xa6, 0x3d, 0x54, 0x11,
+0xce, 0x6f, 0xa9, 0x8d, 0x5d, 0xbe, 0xfd, 0x73, 0x26, 0x3e, 0x37, 0x28, 0x14, 0x27, 0x43, 0x81,
+0x81, 0x66, 0xed, 0x7d, 0xd6, 0x36, 0x87, 0xdd, 0x2a, 0x8c, 0xa1, 0xd2, 0xf4, 0xfb, 0xd8, 0xe1
+};
+
+/*
+ * Example 2: A 1024-bit RSA key pair
+ * ---------------------------------------------------
+ */
+
+/* Modulus: */
+const uint8_t modulus2[] = {
+0x98,  0xb7,  0x05,  0x82,  0xca,  0x80,  0x8f,  0xd1,  0xd3,  0x50,  0x95,  0x62,  0xa0,  0xef,  0x30,  0x5a,
+0xf6,  0xd9,  0x87,  0x54,  0x43,  0xb3,  0x5b,  0xdf,  0x24,  0xd5,  0x36,  0x35,  0x3e,  0x3f,  0x12,  0x28,
+0xdc,  0xd1,  0x2a,  0x78,  0x56,  0x83,  0x56,  0xc6,  0xff,  0x32,  0x3a,  0xbf,  0x72,  0xac,  0x1c,  0xdb,
+0xfe,  0x71,  0x2f,  0xb4,  0x9f,  0xe5,  0x94,  0xa5,  0xa2,  0x17,  0x5d,  0x48,  0xb6,  0x73,  0x25,  0x38,
+0xd8,  0xdf,  0x37,  0xcb,  0x97,  0x0b,  0xe4,  0xa5,  0xb5,  0x62,  0xc3,  0xf2,  0x98,  0xdb,  0x9d,  0xdf,
+0x75,  0x60,  0x78,  0x77,  0x91,  0x8c,  0xce,  0xd1,  0xd0,  0xd1,  0xf3,  0x77,  0x33,  0x8c,  0x0d,  0x3d,
+0x32,  0x07,  0x79,  0x7e,  0x86,  0x2c,  0x65,  0xd1,  0x14,  0x39,  0xe5,  0x88,  0x17,  0x75,  0x27,  0xa7,
+0xde,  0xd9,  0x19,  0x71,  0xad,  0xcf,  0x91,  0xe2,  0xe8,  0x34,  0xe3,  0x7f,  0x05,  0xa7,  0x36,  0x55
+};
+
+/* Public exponent: */
+const uint8_t pub_exponent2[] = {0x01,  0x00,  0x01 };
+
+/* Exponent: */
+const uint8_t priv_exponent2[] = {
+0x06,  0x14,  0xa7,  0x86,  0x05,  0x2d,  0x28,  0x4c,  0xd9,  0x06,  0xa8,  0xe4,  0x13,  0xf7,  0x62,  0x2c,
+0x05,  0x0f,  0x35,  0x49,  0xc0,  0x26,  0x58,  0x9e,  0xa2,  0x77,  0x50,  0xe0,  0xbe,  0xd9,  0x41,  0x0e,
+0x5a,  0x78,  0x83,  0xa1,  0xe6,  0x03,  0xf5,  0xc5,  0x17,  0xad,  0x36,  0xd4,  0x9f,  0xaa,  0xc5,  0xbd,
+0x66,  0xbc,  0xb8,  0x03,  0x0f,  0xa8,  0xd3,  0x09,  0xe3,  0x51,  0xdd,  0xd7,  0x82,  0xd8,  0x43,  0xdf,
+0x97,  0x56,  0x80,  0xae,  0x73,  0xee,  0xa9,  0xaa,  0xb2,  0x89,  0xb7,  0x57,  0x20,  0x5d,  0xad,  0xb8,
+0xfd,  0xfb,  0x98,  0x9e,  0xc8,  0xdb,  0x8e,  0x70,  0x95,  0xf5,  0x1f,  0x24,  0x52,  0x9f,  0x56,  0x37,
+0xaa,  0x66,  0x93,  0x31,  0xe2,  0x56,  0x9f,  0x8b,  0x85,  0x4a,  0xbe,  0xce,  0xc9,  0x9a,  0xa2,  0x64,
+0xc3,  0xda,  0x7c,  0xc6,  0x86,  0x6f,  0x0c,  0x0e,  0x1f,  0xb8,  0x46,  0x98,  0x48,  0x58,  0x1c,  0x73
+};
+
+/* Prime 1: */
+const uint8_t p2[] = {
+0xcb,  0x61,  0xa8,  0x8c,  0x8c,  0x30,  0x5a,  0xd9,  0xa8,  0xfb,  0xec,  0x2b,  0xa4,  0xc8,  0x6c,  0xcc,
+0xc2,  0x02,  0x80,  0x24,  0xaa,  0x16,  0x90,  0xc2,  0x9b,  0xc8,  0x26,  0x4d,  0x2f,  0xeb,  0xe8,  0x7e,
+0x4f,  0x86,  0xe9,  0x12,  0xef,  0x0f,  0x5c,  0x18,  0x53,  0xd7,  0x1c,  0xbc,  0x9b,  0x14,  0xba,  0xed,
+0x3c,  0x37,  0xce,  0xf6,  0xc7,  0xa3,  0x59,  0x8b,  0x6f,  0xbe,  0x06,  0x48,  0x10,  0x90,  0x5b,  0x57
+};
+
+/* Prime 2: */
+const uint8_t q2[] = {
+0xc0,  0x39,  0x9f,  0x0b,  0x93,  0x80,  0xfa,  0xba,  0x38,  0xff,  0x80,  0xd2,  0xff,  0xf6,  0xed,  0xe7,
+0x9c,  0xfd,  0xab,  0xf6,  0x58,  0x97,  0x20,  0x77,  0xa5,  0xe2,  0xb2,  0x95,  0x69,  0x3e,  0xa5,  0x10,
+0x72,  0x26,  0x8b,  0x91,  0x74,  0x6e,  0xea,  0x9b,  0xe0,  0x4a,  0xd6,  0x61,  0x00,  0xeb,  0xed,  0x73,
+0x3d,  0xb4,  0xcd,  0x01,  0x47,  0xa1,  0x8d,  0x6d,  0xe8,  0xc0,  0xcd,  0x8f,  0xbf,  0x24,  0x9c,  0x33
+};
+
+/* Prime exponent 1: */
+const uint8_t dp2[] = {
+0x94,  0x4c,  0x3a,  0x65,  0x79,  0x57,  0x4c,  0xf7,  0x87,  0x33,  0x62,  0xab,  0x14,  0x35,  0x9c,  0xb7,
+0xd5,  0x03,  0x93,  0xc2,  0xa8,  0x4f,  0x59,  0xf0,  0xbd,  0x3c,  0xbd,  0x48,  0xed,  0x17,  0x7c,  0x68,
+0x95,  0xbe,  0x8e,  0xb6,  0xe2,  0x9f,  0xf5,  0x8c,  0x3b,  0x9e,  0x0f,  0xf3,  0x2a,  0xb5,  0x7b,  0xf3,
+0xbe,  0x44,  0x07,  0x62,  0x84,  0x81,  0x84,  0xaa,  0x9a,  0xa9,  0x19,  0xd5,  0x74,  0x56,  0x7e,  0x73
+};
+
+/* Prime exponent 2: */
+const uint8_t dq2[] = {
+0x45,  0xeb,  0xef,  0xd5,  0x87,  0x27,  0x30,  0x8c,  0xd2,  0xb4,  0xe6,  0x08,  0x5a,  0x81,  0x58,  0xd2,
+0x9a,  0x41,  0x8f,  0xee,  0xc1,  0x14,  0xe0,  0x03,  0x85,  0xbc,  0xeb,  0x96,  0xfb,  0xbc,  0x84,  0xd0,
+0x71,  0xa5,  0x61,  0xb9,  0x5c,  0x30,  0x08,  0x79,  0x00,  0xe2,  0x58,  0x0e,  0xdb,  0x05,  0xf6,  0xce,
+0xa7,  0x90,  0x7f,  0xcd,  0xca,  0x5f,  0x92,  0x91,  0x7b,  0x4b,  0xbe,  0xba,  0x5e,  0x1e,  0x14,  0x0f
+};
+
+/* Coefficient: */
+const uint8_t qinv2[] = {
+0xc5,  0x24,  0x68,  0xc8,  0xfd,  0x15,  0xe5,  0xda,  0x2f,  0x6c,  0x8e,  0xba,  0x4e,  0x97,  0xba,  0xeb,
+0xe9,  0x95,  0xb6,  0x7a,  0x1a,  0x7a,  0xd7,  0x19,  0xdd,  0x9f,  0xff,  0x36,  0x6b,  0x18,  0x4d,  0x5a,
+0xb4,  0x55,  0x07,  0x59,  0x09,  0x29,  0x20,  0x44,  0xec,  0xb3,  0x45,  0xcf,  0x2c,  0xdd,  0x26,  0x22,
+0x8e,  0x21,  0xf8,  0x51,  0x83,  0x25,  0x5f,  0x4a,  0x9e,  0x69,  0xf4,  0xc7,  0x15,  0x2e,  0xbb,  0x0f
+};
+
+
+/* PKCS#1 v1.5 signatures
+ *  ---------------------------------------------------------------------------
+ */
+/* Message to be signed */
+const uint8_t message_1_1[] = {
+0xcd, 0xc8, 0x7d, 0xa2, 0x23, 0xd7, 0x86, 0xdf, 0x3b, 0x45, 0xe0, 0xbb, 0xbc, 0x72, 0x13, 0x26,
+0xd1, 0xee, 0x2a, 0xf8, 0x06, 0xcc, 0x31, 0x54, 0x75, 0xcc, 0x6f, 0x0d, 0x9c, 0x66, 0xe1, 0xb6,
+0x23, 0x71, 0xd4, 0x5c, 0xe2, 0x39, 0x2e, 0x1a, 0xc9, 0x28, 0x44, 0xc3, 0x10, 0x10, 0x2f, 0x15,
+0x6a, 0x0d, 0x8d, 0x52, 0xc1, 0xf4, 0xc4, 0x0b, 0xa3, 0xaa, 0x65, 0x09, 0x57, 0x86, 0xcb, 0x76,
+0x97, 0x57, 0xa6, 0x56, 0x3b, 0xa9, 0x58, 0xfe, 0xd0, 0xbc, 0xc9, 0x84, 0xe8, 0xb5, 0x17, 0xa3,
+0xd5, 0xf5, 0x15, 0xb2, 0x3b, 0x8a, 0x41, 0xe7, 0x4a, 0xa8, 0x67, 0x69, 0x3f, 0x90, 0xdf, 0xb0,
+0x61, 0xa6, 0xe8, 0x6d, 0xfa, 0xae, 0xe6, 0x44, 0x72, 0xc0, 0x0e, 0x5f, 0x20, 0x94, 0x57, 0x29,
+0xcb, 0xeb, 0xe7, 0x7f, 0x06, 0xce, 0x78, 0xe0, 0x8f, 0x40, 0x98, 0xfb, 0xa4, 0x1f, 0x9d, 0x61,
+0x93, 0xc0, 0x31, 0x7e, 0x8b, 0x60, 0xd4, 0xb6, 0x08, 0x4a, 0xcb, 0x42, 0xd2, 0x9e, 0x38, 0x08,
+0xa3, 0xbc, 0x37, 0x2d, 0x85, 0xe3, 0x31, 0x17, 0x0f, 0xcb, 0xf7, 0xcc, 0x72, 0xd0, 0xb7, 0x1c,
+0x29, 0x66, 0x48, 0xb3, 0xa4, 0xd1, 0x0f, 0x41, 0x62, 0x95, 0xd0, 0x80, 0x7a, 0xa6, 0x25, 0xca,
+0xb2, 0x74, 0x4f, 0xd9, 0xea, 0x8f, 0xd2, 0x23, 0xc4, 0x25, 0x37, 0x02, 0x98, 0x28, 0xbd, 0x16,
+0xbe, 0x02, 0x54, 0x6f, 0x13, 0x0f, 0xd2, 0xe3, 0x3b, 0x93, 0x6d, 0x26, 0x76, 0xe0, 0x8a, 0xed,
+0x1b, 0x73, 0x31, 0x8b, 0x75, 0x0a, 0x01, 0x67, 0xd0 };
+
+/* Signature: */
+const uint8_t sign_1_1[] = {
+0x6b, 0xc3, 0xa0, 0x66, 0x56, 0x84, 0x29, 0x30, 0xa2, 0x47, 0xe3, 0x0d, 0x58, 0x64, 0xb4, 0xd8,
+0x19, 0x23, 0x6b, 0xa7, 0xc6, 0x89, 0x65, 0x86, 0x2a, 0xd7, 0xdb, 0xc4, 0xe2, 0x4a, 0xf2, 0x8e,
+0x86, 0xbb, 0x53, 0x1f, 0x03, 0x35, 0x8b, 0xe5, 0xfb, 0x74, 0x77, 0x7c, 0x60, 0x86, 0xf8, 0x50,
+0xca, 0xef, 0x89, 0x3f, 0x0d, 0x6f, 0xcc, 0x2d, 0x0c, 0x91, 0xec, 0x01, 0x36, 0x93, 0xb4, 0xea,
+0x00, 0xb8, 0x0c, 0xd4, 0x9a, 0xac, 0x4e, 0xcb, 0x5f, 0x89, 0x11, 0xaf, 0xe5, 0x39, 0xad, 0xa4,
+0xa8, 0xf3, 0x82, 0x3d, 0x1d, 0x13, 0xe4, 0x72, 0xd1, 0x49, 0x05, 0x47, 0xc6, 0x59, 0xc7, 0x61,
+0x7f, 0x3d, 0x24, 0x08, 0x7d, 0xdb, 0x6f, 0x2b, 0x72, 0x09, 0x61, 0x67, 0xfc, 0x09, 0x7c, 0xab,
+0x18, 0xe9, 0xa4, 0x58, 0xfc, 0xb6, 0x34, 0xcd, 0xce, 0x8e, 0xe3, 0x58, 0x94, 0xc4, 0x84, 0xd7
+};
+
+
+uint8_t keys_allocated = 0;
+rsa_publickey_t pub_key;
+rsa_privatekey_t priv_key;
+
+#if 1
+  #define MSG           message_1_1
+  #define SIGN          sign_1_1
+  #define MODULUS       modulus2
+  #define PUB_EXPONENT  pub_exponent2
+  #define PRIV_EXPONENT priv_exponent2
+  #define P             p2
+  #define Q             q2
+  #define DP            dp2
+  #define DQ            dq2
+  #define QINV          qinv2
+#endif
+
+
+uint8_t convert_nibble(uint8_t c){
+       if(c>='0' && c<='9'){
+               return c - '0';
+       }
+       c |= 'A' ^ 'a';
+       if(c>='a' && c<='f'){
+               return c - 'a' + 10;
+       }
+       return 0xff;
+}
+
+const char *block_ignore_string=" \t\r\n,;";
+#define BUFFER_LIMIT 120
+uint16_t read_os(void* dst, uint16_t length, const char* ignore_string){
+       uint16_t counter = 0;
+       uint16_t c;
+       uint8_t v, tmp = 0, idx = 0;
+       if(!ignore_string){
+               ignore_string = block_ignore_string;
+       }
+       while(counter < length){
+               c = cli_getc();
+               if(c > 0xff){
+                       return counter;
+               }
+               if(strchr(ignore_string, c)){
+                       continue;
+               }
+               v = convert_nibble(c);
+               if(v > 0x0f){
+                       return counter;
+               }
+               if(idx){
+                       ((uint8_t*)dst)[counter++] = (tmp << 4) | v;
+                       idx = 0;
+                       if(counter % (BUFFER_LIMIT/2) == 0){
+                               cli_putc('.');
+                       }
+               }else{
+                       tmp = v;
+                       idx = 1;
+               }
+       }
+       return counter;
+}
+
+uint16_t own_atou(const char* str){
+       uint16_t r=0;
+       while(*str && *str >= '0' && *str <= '9'){
+               r *= 10;
+               r += *str++ - '0';
+       }
+       return r;
+}
+
+uint8_t read_bigint(bigint_t* a, char* prompt){
+       uint16_t read_length, actual_length;
+       uint8_t off;
+       uint8_t *buffer;
+       char read_int_str[18];
+       cli_putstr(prompt);
+       cli_putstr("\r\n  length: ");
+       cli_getsn(read_int_str, 16);
+       read_length = own_atou(read_int_str);
+       off = (sizeof(bigint_word_t) - (read_length % sizeof(bigint_word_t))) % sizeof(bigint_word_t);
+       buffer = malloc(((read_length + sizeof(bigint_word_t) - 1) / sizeof(bigint_word_t)) * sizeof(bigint_word_t));
+       if(!buffer){
+               cli_putstr("\r\nERROR: OOM!");
+               return 2;
+       }
+       cli_putstr("\r\n  data: ");
+       memset(buffer, 0, sizeof(bigint_word_t));
+       actual_length = read_os(buffer + off, read_length, NULL);
+       if(actual_length != read_length){
+               cli_putstr("\r\nERROR: unexpected end of data!");
+               free(buffer);
+               return 1;
+       }
+       a->wordv = (bigint_word_t*)buffer;
+       a->length_B = (read_length + sizeof(bigint_word_t) - 1) / sizeof(bigint_word_t);
+       a->info = 0;
+       bigint_changeendianess(a);
+       bigint_adjust(a);
+       return 0;
+}
+
+uint8_t pre_alloc_key_crt(void){
+       priv_key.n = 5;
+       priv_key.components = malloc(5 * sizeof(bigint_t));
+       if(!priv_key.components){
+               cli_putstr("\r\nERROR: OOM!");
+               return 2;
+       }
+       return 0;
+}
+
+void free_key(void){
+       uint8_t c;
+       free(pub_key.modulus.wordv);
+       free(pub_key.exponent.wordv);
+       pub_key.modulus.wordv = priv_key.modulus.wordv = NULL;
+       for(c = 0; c < priv_key.n; ++c){
+               free(priv_key.components[c].wordv);
+       }
+       free(priv_key.components);
+}
+
+uint8_t read_key_crt(void){
+       uint8_t r;
+       cli_putstr("\r\n== reading key (crt) ==");
+       r = pre_alloc_key_crt();
+       if(r) return r;
+       r = read_bigint(&pub_key.modulus, "\r\n = module =");
+       memcpy(&priv_key.modulus, &pub_key.modulus, sizeof(bigint_t));
+       if(r) return r;
+       r = read_bigint(&pub_key.exponent, "\r\n = public exponent =");
+       if(r) return r;
+       r = read_bigint(&priv_key.components[0], "\r\n = p (first prime) =");
+       if(r) return r;
+       r = read_bigint(&priv_key.components[1], "\r\n = q (second prime) =");
+       if(r) return r;
+       r = read_bigint(&priv_key.components[2], "\r\n = dp (p's exponent) =");
+       if(r) return r;
+       r = read_bigint(&priv_key.components[3], "\r\n = dq (q's exponent) =");
+       if(r) return r;
+       r = read_bigint(&priv_key.components[4], "\r\n = qInv (q' coefficient) =");
+       return r;
+}
+
+uint8_t read_key_conv(void){
+       uint8_t r;
+       cli_putstr("\r\n== reading key (crt) ==");
+       r = read_bigint(&pub_key.modulus,"\r\n = module =");
+       if(r) return r;
+       memcpy(&priv_key.modulus, &pub_key.modulus, sizeof(bigint_t));
+       priv_key.n = 1;
+       priv_key.components = malloc(sizeof(bigint_t));
+       if(!priv_key.components){
+               cli_putstr("\r\nERROR: OOM!");
+               return 2;
+       }
+       r = read_bigint(&pub_key.exponent, "\r\n = public exponent =");
+       if(r) return r;
+       r = read_bigint(&priv_key.components[0], "\r\n = private exponent =");
+       return r;
+}
+
+void load_priv_conventional(void){
+       priv_key.components = malloc(sizeof(bigint_t));
+       priv_key.components[0].length_B = (sizeof(PRIV_EXPONENT) +
+                       sizeof(bigint_word_t) - 1) / sizeof(bigint_word_t);
+       priv_key.components[0].wordv =  malloc(priv_key.components[0].length_B *
+                       sizeof(bigint_word_t));
+       if(!priv_key.components[0].wordv){
+               cli_putstr("\r\nERROR: OOM!");
+               return;
+       }
+       memcpy(priv_key.components[0].wordv, PRIV_EXPONENT, sizeof(PRIV_EXPONENT));
+       priv_key.n = 1;
+       bigint_changeendianess(&priv_key.components[0]);
+       bigint_adjust(&priv_key.components[0]);
+}
+
+
+void load_priv_crt_mono(void){
+       bigint_t *v;
+       const uint8_t *bv[5] = {P,Q,DP,DQ,QINV};
+       uint16_t sv[5] = {sizeof(P), sizeof(Q), sizeof(DP), sizeof(DQ), sizeof(QINV)};
+       uint8_t i;
+       v = malloc(5 * sizeof(bigint_t));
+       if(!v){
+               cli_putstr("\r\nERROR: OOM!");
+               return;
+       }
+       priv_key.components = v;
+       priv_key.n = 5;
+       for(i=0; i<5; ++i){
+               v[i].info = 0;
+               v[i].length_B = (sv[i] + sizeof(bigint_word_t) - 1) / sizeof(bigint_word_t);
+               v[i].wordv = calloc(v[i].length_B , sizeof(bigint_word_t));
+               if(!v[i].wordv){
+                       cli_putstr("\r\nERROR: OOM!");
+                       return;
+               }
+               memcpy(v[i].wordv, bv[i], sv[i]);
+               bigint_changeendianess(&v[i]);
+               bigint_adjust(&v[i]);
+       }
+}
+
+uint8_t load_bigint_from_os(bigint_t* a, const void* os, uint16_t length_B){
+       a->length_B = BIGINT_CEIL(length_B) / sizeof(bigint_word_t);
+       a->wordv = malloc(BIGINT_CEIL(length_B));
+       if(!a->wordv){
+               cli_putstr("\r\nOOM!\r\n");
+               return 1;
+       }
+       memset(a->wordv, 0, sizeof(bigint_word_t));
+       memcpy((uint8_t*)a->wordv + BIGINT_OFF(length_B), os, length_B);
+       a->info = 0;
+       bigint_changeendianess(a);
+       bigint_adjust(a);
+       return 0;
+}
+
+void load_fix_rsa(void){
+       if(keys_allocated){
+               free_key();
+       }
+       keys_allocated = 1;
+
+       if(pre_alloc_key_crt()){
+               cli_putstr("\r\nOOM!\r\n");
+               return;
+       }
+
+       load_bigint_from_os(&pub_key.modulus, MODULUS, sizeof(MODULUS));
+       load_bigint_from_os(&pub_key.exponent, PUB_EXPONENT, sizeof(PUB_EXPONENT));
+       priv_key.n = 5;
+       memcpy(&priv_key.modulus, &pub_key.modulus, sizeof(bigint_t));
+       load_bigint_from_os(&priv_key.components[0], P, sizeof(P));
+       load_bigint_from_os(&priv_key.components[1], Q, sizeof(Q));
+       load_bigint_from_os(&priv_key.components[2], DP, sizeof(DP));
+       load_bigint_from_os(&priv_key.components[3], DQ, sizeof(DQ));
+       load_bigint_from_os(&priv_key.components[4], QINV, sizeof(QINV));
+
+//     load_priv_conventional();
+//     load_priv_crt_mono();
+}
+
+void quick_test(void){
+       uint8_t *msg, *sign, hash[20], rc;
+       uint16_t slen;
+       if(!keys_allocated){
+               load_fix_rsa();
+       }
+       msg = malloc(sizeof(MSG));
+       memcpy(msg, MSG, sizeof(MSG));
+       sign = malloc(pub_key.modulus.length_B * sizeof(bigint_word_t));
+       cli_putstr("\r\nhashing:...");
+       sha1(hash, msg, sizeof(MSG) * 8);
+       cli_putstr("\r\nsigning: ...");
+
+       rc = rsa_sign_pkcs1v15(sign, &slen, hash, 20, &priv_key, &pkcs1v15_sha1_prefix);
+       if(rc){
+               cli_putstr("\r\nERROR: rsa_sign_pkcs1v15() returned: ");
+               cli_hexdump_byte(rc);
+               return;
+       }
+
+       cli_putstr("\r\n\r\nsignature:");
+       cli_hexdump_block(sign, slen, 4, 16);
+       if(slen!=sizeof(SIGN)){
+                       cli_putstr("\r\n>>FAIL (no size match)<<");
+       }else{
+               if(memcmp(sign, SIGN, slen)){
+                       cli_putstr("\r\n>>FAIL (no content match)<<");
+               }else{
+                       cli_putstr("\r\n>>OK<<");
+               }
+       }
+
+       cli_putstr("\r\nverifying: ...");
+       rc = rsa_verify_pkcs1v15(sign, slen, hash, 20, &pub_key, &pkcs1v15_sha1_prefix);
+       if(rc){
+               cli_putstr("\r\nERROR: rsa_verify_pkcs1v15() returned: ");
+               cli_hexdump_byte(rc);
+               return;
+       }else{
+               cli_putstr("\r\nsignature >>OK<<");
+       }
+       free(sign);
+       free(msg);
+}
+
+void run_sha1_test(void){
+       uint8_t *msg, *sign, hash[20], rc;
+       uint16_t msg_len, sign_len;
+       char read_int_str[18];
+       cli_putstr("\r\n== test with given seed ==");
+       cli_putstr("\r\n = message =");
+       cli_putstr("\r\n  length: ");
+       cli_getsn(read_int_str, 16);
+       msg_len = own_atou(read_int_str);
+       msg = malloc(msg_len);
+       if(!msg){
+               cli_putstr("\r\nERROR: OOM!");
+               return;
+       }
+       sign = malloc(bigint_length_B(&pub_key.modulus));
+       if(!sign){
+               cli_putstr("\r\nERROR: OOM!");
+               return;
+       }
+       cli_putstr("\r\n  data: ");
+       read_os(msg, msg_len, NULL);
+       cli_putstr("\r\n  hashing ...");
+       sha1(hash, msg, msg_len * 8);
+       cli_putstr("\r\n  signing ...");
+/*
+       cli_putstr("\r\n plaintext:");
+       cli_hexdump_block(msg, msg_len, 4, 16);
+       cli_putstr("\r\n seed:");
+       cli_hexdump_block(seed, seed_len, 4, 16);
+*/
+       rc = rsa_sign_pkcs1v15(sign, &sign_len, hash, 20, &priv_key, &pkcs1v15_sha1_prefix);
+       if(rc){
+               cli_putstr("\r\n  ERROR: computing signature failed with code: ");
+               cli_hexdump_byte(rc);
+       }
+       cli_putstr("\r\n  signature:");
+       cli_hexdump_block(sign, sign_len, 4, 16);
+       cli_putstr("\r\n  verifying ... ");
+       rc = rsa_verify_pkcs1v15(sign, sign_len, hash, 20, &pub_key, &pkcs1v15_sha1_prefix);
+       cli_putstr("[done]");
+       if(rc){
+               cli_putstr("\r\n  ERROR: verifying signature failed with code: ");
+               cli_hexdump_byte(rc);
+       }else{
+               cli_putstr("\r\n  >>OK<<");
+       }
+       free(sign);
+       free(msg);
+}
+
+void reset_prng(void){
+       uint8_t buf[16];
+       memset(buf, 0, 16);
+       random_seed(buf);
+       cli_putstr("\r\nPRNG reset");
+}
+
+void rsa_init(void){
+       prng_get_byte = random8;
+}
+
+void load_key(void){
+       if(keys_allocated){
+               free_key();
+       }
+       keys_allocated = 1;
+       read_key_crt();
+}
+
+void test_dump(void){
+       char lstr[16];
+       int len;
+       cli_putstr("\r\nenter dump length: ");
+       cli_getsn(lstr, 15);
+       len = own_atou(lstr);
+       cli_putstr("\r\ndumping 0x");
+       cli_hexdump_rev(&len, 2);
+       cli_putstr(" byte:");
+       cli_hexdump_block(pub_key.modulus.wordv, len, 4, 8);
+}
+
+/*****************************************************************************
+ *  main                                                                                                                                        *
+ *****************************************************************************/
+
+const char echo_test_str[]     = "echo-test";
+const char reset_prng_str[]    = "reset-prng";
+const char load_key_str[]      = "load-key";
+const char load_fix_key_str[]  = "load-fix-key";
+const char quick_test_str[]    = "quick-test";
+const char sha1_test_str[]     = "sha1-test";
+const char dump_test_str[]     = "dump-test";
+const char performance_str[]   = "performance";
+const char echo_str[]          = "echo";
+
+const cmdlist_entry_t cmdlist[]  = {
+       { reset_prng_str,       NULL, reset_prng                    },
+       { load_key_str,         NULL, load_key                      },
+       { load_fix_key_str,     NULL, load_fix_rsa                  },
+       { quick_test_str,       NULL, quick_test                    },
+       { sha1_test_str,        NULL, run_sha1_test                 },
+       { dump_test_str,        NULL, test_dump                     },
+//     { performance_str,      NULL, testrun_performance_bigint    },
+       { echo_str,         (void*)1, (void_fpt)echo_ctrl           },
+       { NULL,                 NULL, NULL                          }
+};
+
+void dump_sp(void){
+       uint8_t x;
+       uint8_t *xa = &x;
+       cli_putstr("\r\nstack pointer: ~");
+       cli_hexdump_rev(&xa, 4);
+}
+
+int main (void){
+       main_setup();
+
+       for(;;){
+               welcome_msg(algo_name);
+               rsa_init();
+               cmd_interface(cmdlist);
+       }
+}
index 1588af276467510a74b9cf17db2e732e4c4ff9ce..a0c734682dbada72af99d9d0c3bd06d5dd216bc7 100644 (file)
@@ -42,10 +42,10 @@ void nessie_first(void){
        cli_hexdump(key, 16);
        salsa20_init(key, 128, NULL, &ctx);
        cli_putstr("\r\n internal state: ");
-       cli_hexdump_block(ctx.a, 64, 4, 16);
+       cli_hexdump_block(ctx.a.v8, 64, 4, 16);
        salsa20_gen(&ctx);
        cli_putstr("\r\n internal state: ");
-       cli_hexdump_block(ctx.a, 64, 4, 16);
+       cli_hexdump_block(ctx.a.v8, 64, 4, 16);
        cli_putstr("\r\n data: ");
        cli_hexdump_block(ctx.buffer, 64, 4, 16);
 
@@ -54,13 +54,13 @@ void nessie_first(void){
        key[15] = 0x01;
        cli_putstr("\r\n testing with key: ");
        cli_hexdump(key, 16);
-       cli_hexdump_block(ctx.a, 64, 4, 16);
+       cli_hexdump_block(ctx.a.v8, 64, 4, 16);
        salsa20_init(key, 128, NULL, &ctx);
        cli_putstr("\r\n internal state: ");
-       cli_hexdump_block(ctx.a, 64, 4, 16);
+       cli_hexdump_block(ctx.a.v8, 64, 4, 16);
        salsa20_gen(&ctx);
        cli_putstr("\r\n internal state: ");
-       cli_hexdump_block(ctx.a, 64, 4, 16);
+       cli_hexdump_block(ctx.a.v8, 64, 4, 16);
        cli_putstr("\r\n data: ");
        cli_hexdump_block(ctx.buffer, 64, 4, 16);
 }
index 4309fd46e347721d98a0bb5d54475dd89cfcd437..c8cdc834175376b9f446e24e93524b53730c9537 100644 (file)
@@ -235,7 +235,7 @@ void nessie_hash_run(void){
                 "1234567890123456789012345678901234567890" 
                 "1234567890123456789012345678901234567890\0"
                 "8 times \"1234567890\"\0" ;
-       char* challange[16];
+       const char* challange[16];
        set=1;
        nessie_print_setheader(set);
        dbz_splitup(challange_dbz, challange);
index 6ab077efd63b96005a6d05e7c04ca7227c807942..52ceab67f996723caf1b70a08041d1fcf8978e84 100644 (file)
@@ -157,6 +157,10 @@ void strlwr(char* s){
 }
 */
 
+char* utoa(unsigned a, char* buffer, uint8_t radix){
+       return ultoa((unsigned)a, buffer, radix);
+}
+
 char* itoa(int a, char* buffer, uint8_t radix){
        if(a<0){
                *buffer = '-';
index 04aa707e5130a83eddb51ee0168732b559ca785e..f43b2e6ccb8a9de38b0d14dd82d7a2a2e06597e7 100644 (file)
@@ -59,5 +59,6 @@ void str_reverse(char* buffer);
 
 char* ultoa(unsigned long a, char* buffer, uint8_t radix);
 char* ulltoa(unsigned long long a, char* buffer, uint8_t radix);
+char* utoa(unsigned a, char* buffer, uint8_t radix);
 char* ustoa(unsigned short a, char* buffer, uint8_t radix);
 // void strlwr(char* s);
diff --git a/testvectors/Md5-128.unverified.test-vectors b/testvectors/Md5-128.unverified.test-vectors
new file mode 100644 (file)
index 0000000..b7f3313
--- /dev/null
@@ -0,0 +1,6212 @@
+********************************************************************************\r
+*Project NESSIE - New European Schemes for Signature, Integrity, and Encryption*\r
+********************************************************************************\r
+\r
+Primitive Name: Md5\r
+===================\r
+Hash size: 128 bits\r
+\r
+Test vectors -- set 1\r
+=====================\r
+\r
+Set 1, vector#  0:\r
+                       message="" (empty string)\r
+                          hash=D41D8CD98F00B204E9800998ECF8427E\r
+\r
+Set 1, vector#  1:\r
+                       message="a"\r
+                          hash=0CC175B9C0F1B6A831C399E269772661\r
+\r
+Set 1, vector#  2:\r
+                       message="abc"\r
+                          hash=900150983CD24FB0D6963F7D28E17F72\r
+\r
+Set 1, vector#  3:\r
+                       message="message digest"\r
+                          hash=F96B697D7CB7938D525A2F31AAF161D0\r
+\r
+Set 1, vector#  4:\r
+                       message="abcdefghijklmnopqrstuvwxyz"\r
+                          hash=C3FCD3D76192E4007DFB496CCA67E13B\r
+\r
+Set 1, vector#  5:\r
+                       message="abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"\r
+                          hash=8215EF0796A20BCAAAE116D3876C664A\r
+\r
+Set 1, vector#  6:\r
+                       message="A...Za...z0...9"\r
+                          hash=D174AB98D277D9F5A5611C2C9F419D9F\r
+\r
+Set 1, vector#  7:\r
+                       message=8 times "1234567890"\r
+                          hash=57EDF4A22BE3C955AC49DA2E2107B67A\r
+\r
+Set 1, vector#  8:\r
+                       message=1 million times "a"\r
+                          hash=7707D6AE4E027C70EEA2A935C2296F21\r
+\r
+Test vectors -- set 2\r
+=====================\r
+Message digests of strings of 0-bits and variable length:\r
+\r
+Set 2, vector#  0:\r
+                       message=0 zero bits\r
+                          hash=D41D8CD98F00B204E9800998ECF8427E\r
+\r
+Set 2, vector#  1:\r
+                       message=1 zero bits\r
+                          hash=1DA635B1430F171C657206FD69FEE0E8\r
+\r
+Set 2, vector#  2:\r
+                       message=2 zero bits\r
+                          hash=8736DF18E5EC9050B84B10D74E3DD636\r
+\r
+Set 2, vector#  3:\r
+                       message=3 zero bits\r
+                          hash=41EEC0B0BF14E4DC2C74A403EE484BC6\r
+\r
+Set 2, vector#  4:\r
+                       message=4 zero bits\r
+                          hash=C1FD2C92A77EBE4568BF67E3BCFA66C7\r
+\r
+Set 2, vector#  5:\r
+                       message=5 zero bits\r
+                          hash=E3F3086499E6B5985C89FF371DD9DBC0\r
+\r
+Set 2, vector#  6:\r
+                       message=6 zero bits\r
+                          hash=939EA997FD268D5DE4BCF89F2EE35D8F\r
+\r
+Set 2, vector#  7:\r
+                       message=7 zero bits\r
+                          hash=D35652F6B84F276B349ACBF6E653B3C0\r
+\r
+Set 2, vector#  8:\r
+                       message=8 zero bits\r
+                          hash=93B885ADFE0DA089CDF634904FD59F71\r
+\r
+Set 2, vector#  9:\r
+                       message=9 zero bits\r
+                          hash=46D61C8735B6FDBE961A42198E9B3739\r
+\r
+Set 2, vector# 10:\r
+                       message=10 zero bits\r
+                          hash=A96786A5E0780EF27A4DE2B492A2A179\r
+\r
+Set 2, vector# 11:\r
+                       message=11 zero bits\r
+                          hash=0EE2E271C6D7EC7D1730F697B44202C8\r
+\r
+Set 2, vector# 12:\r
+                       message=12 zero bits\r
+                          hash=9F281633897DBECC0FFE92E39F385F56\r
+\r
+Set 2, vector# 13:\r
+                       message=13 zero bits\r
+                          hash=C6B4EC4FBF25E6CD11E613F3C2E2E2CB\r
+\r
+Set 2, vector# 14:\r
+                       message=14 zero bits\r
+                          hash=403025669BA181DB038218F5B0B11942\r
+\r
+Set 2, vector# 15:\r
+                       message=15 zero bits\r
+                          hash=0BDA3399DCC79F1BD29D9E1D67722A78\r
+\r
+Set 2, vector# 16:\r
+                       message=16 zero bits\r
+                          hash=C4103F122D27677C9DB144CAE1394A66\r
+\r
+Set 2, vector# 17:\r
+                       message=17 zero bits\r
+                          hash=23D059987DF46D89FDDDF44E4B3FE20B\r
+\r
+Set 2, vector# 18:\r
+                       message=18 zero bits\r
+                          hash=FBFCB92334A718154BAE248447864FAE\r
+\r
+Set 2, vector# 19:\r
+                       message=19 zero bits\r
+                          hash=E6232FFB7F6FDB955366E169655726D0\r
+\r
+Set 2, vector# 20:\r
+                       message=20 zero bits\r
+                          hash=E807B581ABF2EB149CC050DAA86BE54B\r
+\r
+Set 2, vector# 21:\r
+                       message=21 zero bits\r
+                          hash=70F6C11F18B0D9CD3415C08D2FD4EA1F\r
+\r
+Set 2, vector# 22:\r
+                       message=22 zero bits\r
+                          hash=DF424E18D64F6E6CCFB307C22D589E5F\r
+\r
+Set 2, vector# 23:\r
+                       message=23 zero bits\r
+                          hash=1AC388D227AF28311629188FE7D2F756\r
+\r
+Set 2, vector# 24:\r
+                       message=24 zero bits\r
+                          hash=693E9AF84D3DFCC71E640E005BDC5E2E\r
+\r
+Set 2, vector# 25:\r
+                       message=25 zero bits\r
+                          hash=3B2ED5291F1A444188063EB82C32A0F9\r
+\r
+Set 2, vector# 26:\r
+                       message=26 zero bits\r
+                          hash=38C9DCCF2E8328DFC8B759EDC7F6559A\r
+\r
+Set 2, vector# 27:\r
+                       message=27 zero bits\r
+                          hash=D912B95D10A6922058E0692E1D4497DA\r
+\r
+Set 2, vector# 28:\r
+                       message=28 zero bits\r
+                          hash=86918CFF529A59ADE3001DBBDD76A443\r
+\r
+Set 2, vector# 29:\r
+                       message=29 zero bits\r
+                          hash=D21EA674EAD2AB370919CB7208271A87\r
+\r
+Set 2, vector# 30:\r
+                       message=30 zero bits\r
+                          hash=B6D10CB4AEE73EF085EB0322A43D4FD9\r
+\r
+Set 2, vector# 31:\r
+                       message=31 zero bits\r
+                          hash=DB76D52C719480DA203EC0B85FD533B2\r
+\r
+Set 2, vector# 32:\r
+                       message=32 zero bits\r
+                          hash=F1D3FF8443297732862DF21DC4E57262\r
+\r
+Set 2, vector# 33:\r
+                       message=33 zero bits\r
+                          hash=76B226C91FC9B17FD54F787907627071\r
+\r
+Set 2, vector# 34:\r
+                       message=34 zero bits\r
+                          hash=1A82DFC3867D510D6A9759FADB87ED7F\r
+\r
+Set 2, vector# 35:\r
+                       message=35 zero bits\r
+                          hash=065A7B9418C4702217B3E50428DE8C16\r
+\r
+Set 2, vector# 36:\r
+                       message=36 zero bits\r
+                          hash=168423CE9D303551738B7DB35374C448\r
+\r
+Set 2, vector# 37:\r
+                       message=37 zero bits\r
+                          hash=C7B94C948010CEB5A04E58028D46328E\r
+\r
+Set 2, vector# 38:\r
+                       message=38 zero bits\r
+                          hash=4B3A50C71C135625D432C3C4378AB220\r
+\r
+Set 2, vector# 39:\r
+                       message=39 zero bits\r
+                          hash=056698D5C948B06E806A0617BC3C858C\r
+\r
+Set 2, vector# 40:\r
+                       message=40 zero bits\r
+                          hash=CA9C491AC66B2C62500882E93F3719A8\r
+\r
+Set 2, vector# 41:\r
+                       message=41 zero bits\r
+                          hash=31EA5310686C1FFFABC050AA163C5628\r
+\r
+Set 2, vector# 42:\r
+                       message=42 zero bits\r
+                          hash=DC637013A6FB4C9BAF1D183B65D5690C\r
+\r
+Set 2, vector# 43:\r
+                       message=43 zero bits\r
+                          hash=2604A076EC8A48EFF8669260F76F7818\r
+\r
+Set 2, vector# 44:\r
+                       message=44 zero bits\r
+                          hash=0046983322721B823D8A801A3A8C7660\r
+\r
+Set 2, vector# 45:\r
+                       message=45 zero bits\r
+                          hash=1E9C94FE3906FFD28D080DA899ABA9A9\r
+\r
+Set 2, vector# 46:\r
+                       message=46 zero bits\r
+                          hash=D6923287590E871D815D1664927DFBC0\r
+\r
+Set 2, vector# 47:\r
+                       message=47 zero bits\r
+                          hash=E32F9E1DB396A65785B2F5BF3922DF4B\r
+\r
+Set 2, vector# 48:\r
+                       message=48 zero bits\r
+                          hash=7319468847D7B1AEE40DBF5DD963C999\r
+\r
+Set 2, vector# 49:\r
+                       message=49 zero bits\r
+                          hash=2F45ADDE8199527FD9E387253E161395\r
+\r
+Set 2, vector# 50:\r
+                       message=50 zero bits\r
+                          hash=920B342484465EAF9AF03AD7E26ADDAD\r
+\r
+Set 2, vector# 51:\r
+                       message=51 zero bits\r
+                          hash=3B1C9A8D7F8B2C4CB8D26A3C8E32E329\r
+\r
+Set 2, vector# 52:\r
+                       message=52 zero bits\r
+                          hash=85F702AF9CB124BD68F37A2B59255798\r
+\r
+Set 2, vector# 53:\r
+                       message=53 zero bits\r
+                          hash=272F3B62938E243D48B3BF1C7B9E5D20\r
+\r
+Set 2, vector# 54:\r
+                       message=54 zero bits\r
+                          hash=C9A9A74FEAA6C5F6B847CD3DBD00D048\r
+\r
+Set 2, vector# 55:\r
+                       message=55 zero bits\r
+                          hash=58D2AB4247104FE50550A9028EC8A282\r
+\r
+Set 2, vector# 56:\r
+                       message=56 zero bits\r
+                          hash=D310A40483F9399DD7ED1712E0FDD702\r
+\r
+Set 2, vector# 57:\r
+                       message=57 zero bits\r
+                          hash=799BB69652ACF5A5FBEB8E41D8556A30\r
+\r
+Set 2, vector# 58:\r
+                       message=58 zero bits\r
+                          hash=956EAF294DC711B06FD8857DFC364C95\r
+\r
+Set 2, vector# 59:\r
+                       message=59 zero bits\r
+                          hash=FDD2D7C7FED16AD770632C2D62A20379\r
+\r
+Set 2, vector# 60:\r
+                       message=60 zero bits\r
+                          hash=8592A08C086434429170FD3D63D32BD0\r
+\r
+Set 2, vector# 61:\r
+                       message=61 zero bits\r
+                          hash=436C48F45F05C3923852C2CDBC0A0D5E\r
+\r
+Set 2, vector# 62:\r
+                       message=62 zero bits\r
+                          hash=27EED465F6F8EC9C0F5EC3EA07776097\r
+\r
+Set 2, vector# 63:\r
+                       message=63 zero bits\r
+                          hash=BB6AD2B70AA7D43C5DB2E73D35317709\r
+\r
+Set 2, vector# 64:\r
+                       message=64 zero bits\r
+                          hash=7DEA362B3FAC8E00956A4952A3D4F474\r
+\r
+Set 2, vector# 65:\r
+                       message=65 zero bits\r
+                          hash=184EC3A1434A2F2C1DF43630D1B31640\r
+\r
+Set 2, vector# 66:\r
+                       message=66 zero bits\r
+                          hash=44328792AD38EDE76552B6194E4A2BCE\r
+\r
+Set 2, vector# 67:\r
+                       message=67 zero bits\r
+                          hash=6F7B57800516FD878A62096992DE2F4A\r
+\r
+Set 2, vector# 68:\r
+                       message=68 zero bits\r
+                          hash=28CE6940F0628F2E8109618F35D87301\r
+\r
+Set 2, vector# 69:\r
+                       message=69 zero bits\r
+                          hash=CD4D4687BE575898CC65466364D3A4CF\r
+\r
+Set 2, vector# 70:\r
+                       message=70 zero bits\r
+                          hash=C2A7E4319791E821F8AE20F658B97154\r
+\r
+Set 2, vector# 71:\r
+                       message=71 zero bits\r
+                          hash=1AF71757EA313DCCF51034927EF5E516\r
+\r
+Set 2, vector# 72:\r
+                       message=72 zero bits\r
+                          hash=3F2829B2FFE8434D67F98A2A98968652\r
+\r
+Set 2, vector# 73:\r
+                       message=73 zero bits\r
+                          hash=ABB61D7EF1F6496C2B84666C6023AC0E\r
+\r
+Set 2, vector# 74:\r
+                       message=74 zero bits\r
+                          hash=6682F243E95824834C1A3DFF178DAA72\r
+\r
+Set 2, vector# 75:\r
+                       message=75 zero bits\r
+                          hash=A360435A898C6CBD498D9EF9353BDCB2\r
+\r
+Set 2, vector# 76:\r
+                       message=76 zero bits\r
+                          hash=DB7E0FD95964B3A79CBBA648B754E33C\r
+\r
+Set 2, vector# 77:\r
+                       message=77 zero bits\r
+                          hash=6DA9080EAA2E30A34DAF734155482ACD\r
+\r
+Set 2, vector# 78:\r
+                       message=78 zero bits\r
+                          hash=48F85771E373A7FDBBF8F650DD04ED1B\r
+\r
+Set 2, vector# 79:\r
+                       message=79 zero bits\r
+                          hash=A1519CF5DC6F6CE1E7AAC5C04829F235\r
+\r
+Set 2, vector# 80:\r
+                       message=80 zero bits\r
+                          hash=A63C90CC3684AD8B0A2176A6A8FE9005\r
+\r
+Set 2, vector# 81:\r
+                       message=81 zero bits\r
+                          hash=39057E405EA9A6DBA3B34B08067C76C5\r
+\r
+Set 2, vector# 82:\r
+                       message=82 zero bits\r
+                          hash=E1DD434D5946D248B63650FBA8FE5CA8\r
+\r
+Set 2, vector# 83:\r
+                       message=83 zero bits\r
+                          hash=16F814670C96BCDAF5A45591F66E0034\r
+\r
+Set 2, vector# 84:\r
+                       message=84 zero bits\r
+                          hash=A62F4AE5E8E7BA1067C8E8716618CBEE\r
+\r
+Set 2, vector# 85:\r
+                       message=85 zero bits\r
+                          hash=F0C2AD5B31AEF428F6FA2BF741F985B0\r
+\r
+Set 2, vector# 86:\r
+                       message=86 zero bits\r
+                          hash=7D6D1EDA0B28A4EC35A07F673880E1EF\r
+\r
+Set 2, vector# 87:\r
+                       message=87 zero bits\r
+                          hash=D9BF1CF5968E2E6AE47506D92E883435\r
+\r
+Set 2, vector# 88:\r
+                       message=88 zero bits\r
+                          hash=74DA4121DC1C0ED2A8E5B0741F824034\r
+\r
+Set 2, vector# 89:\r
+                       message=89 zero bits\r
+                          hash=5AF850FD4D75EDCBD265F72971201FD3\r
+\r
+Set 2, vector# 90:\r
+                       message=90 zero bits\r
+                          hash=9135F73AB1B8C0868BC38679FD56ACEF\r
+\r
+Set 2, vector# 91:\r
+                       message=91 zero bits\r
+                          hash=87EF0F6A90B403A5ADDC2B5A9C39C507\r
+\r
+Set 2, vector# 92:\r
+                       message=92 zero bits\r
+                          hash=6EA62B53159AF43935003D9A99812FAF\r
+\r
+Set 2, vector# 93:\r
+                       message=93 zero bits\r
+                          hash=F56F3F159F331988C865A6B1D3E042DC\r
+\r
+Set 2, vector# 94:\r
+                       message=94 zero bits\r
+                          hash=C6989BCAE7980EBE80678EDF9F1C366F\r
+\r
+Set 2, vector# 95:\r
+                       message=95 zero bits\r
+                          hash=AF543608252CD1458451444FFCAC6DE5\r
+\r
+Set 2, vector# 96:\r
+                       message=96 zero bits\r
+                          hash=8DD6BB7329A71449B0A1B292B5999164\r
+\r
+Set 2, vector# 97:\r
+                       message=97 zero bits\r
+                          hash=8BFA2FA8CA676E1283CD7CB3309F0007\r
+\r
+Set 2, vector# 98:\r
+                       message=98 zero bits\r
+                          hash=0BB7B2A6DD178E83DEC651438D7C55F1\r
+\r
+Set 2, vector# 99:\r
+                       message=99 zero bits\r
+                          hash=7520B23967B7BC863F2A1D2C4EDEFDBC\r
+\r
+Set 2, vector#100:\r
+                       message=100 zero bits\r
+                          hash=FF2787C467C33266ADC2BAC10CED743C\r
+\r
+Set 2, vector#101:\r
+                       message=101 zero bits\r
+                          hash=32216A74985284813387B5C6AEA455CC\r
+\r
+Set 2, vector#102:\r
+                       message=102 zero bits\r
+                          hash=1D9314C15AB78FBE610280820BD582E0\r
+\r
+Set 2, vector#103:\r
+                       message=103 zero bits\r
+                          hash=F3F89AD3847241524F254F7B6E01F85B\r
+\r
+Set 2, vector#104:\r
+                       message=104 zero bits\r
+                          hash=0B867E53C1D233CE9FE49D54549A2323\r
+\r
+Set 2, vector#105:\r
+                       message=105 zero bits\r
+                          hash=5B42CFD37E7ECD5F6AEF8A94B435AAF0\r
+\r
+Set 2, vector#106:\r
+                       message=106 zero bits\r
+                          hash=C0342E799E0AAF5F482B8AB136214418\r
+\r
+Set 2, vector#107:\r
+                       message=107 zero bits\r
+                          hash=9BE04E320624737D4F2C3BCBA365C62C\r
+\r
+Set 2, vector#108:\r
+                       message=108 zero bits\r
+                          hash=22F30D8A7F2C50C3B2E0CA0DBB4F4859\r
+\r
+Set 2, vector#109:\r
+                       message=109 zero bits\r
+                          hash=4161F573137188B5AFB4E38717F2DE79\r
+\r
+Set 2, vector#110:\r
+                       message=110 zero bits\r
+                          hash=4FACB81532AEDF3528770E15D480CFF9\r
+\r
+Set 2, vector#111:\r
+                       message=111 zero bits\r
+                          hash=19EA162AF2F6CCC79373496547AE46CB\r
+\r
+Set 2, vector#112:\r
+                       message=112 zero bits\r
+                          hash=36DF9540A5EF4996A9737657E4A8929C\r
+\r
+Set 2, vector#113:\r
+                       message=113 zero bits\r
+                          hash=3BBE2AA2EFFDD86C623C40B4EE812895\r
+\r
+Set 2, vector#114:\r
+                       message=114 zero bits\r
+                          hash=4E0C6EAFEA2190F994D2A68170795BC5\r
+\r
+Set 2, vector#115:\r
+                       message=115 zero bits\r
+                          hash=515E920D26C2ABE9BCF50A674E316CAE\r
+\r
+Set 2, vector#116:\r
+                       message=116 zero bits\r
+                          hash=37589246EFDB3B50C40C4641504A6E1A\r
+\r
+Set 2, vector#117:\r
+                       message=117 zero bits\r
+                          hash=B669945A32193A7380A354A663B4A7F2\r
+\r
+Set 2, vector#118:\r
+                       message=118 zero bits\r
+                          hash=AAB095BBC90CB8A192B4F77508E49472\r
+\r
+Set 2, vector#119:\r
+                       message=119 zero bits\r
+                          hash=F71DAC559F8AF6A3F56A23FB4E1ADC17\r
+\r
+Set 2, vector#120:\r
+                       message=120 zero bits\r
+                          hash=3449C9E5E332F1DBB81505CD739FBF3F\r
+\r
+Set 2, vector#121:\r
+                       message=121 zero bits\r
+                          hash=4C5046DA04D84E1D5CDBBFAEBCBBE7BA\r
+\r
+Set 2, vector#122:\r
+                       message=122 zero bits\r
+                          hash=5C8AE6F059268995124FEDCF9BEBB295\r
+\r
+Set 2, vector#123:\r
+                       message=123 zero bits\r
+                          hash=7C1A3F4EE1B041A0DC9BE98CBC9BEDA1\r
+\r
+Set 2, vector#124:\r
+                       message=124 zero bits\r
+                          hash=9B08DD5C334008905BA3C82AC02DE973\r
+\r
+Set 2, vector#125:\r
+                       message=125 zero bits\r
+                          hash=C8965550C36BB15081676AE1328D7E7F\r
+\r
+Set 2, vector#126:\r
+                       message=126 zero bits\r
+                          hash=83DA349452C42C9ADDABF18601D833C8\r
+\r
+Set 2, vector#127:\r
+                       message=127 zero bits\r
+                          hash=81191CCFFE87E33F0DCD9FDF54B5C60F\r
+\r
+Set 2, vector#128:\r
+                       message=128 zero bits\r
+                          hash=4AE71336E44BF9BF79D2752E234818A5\r
+\r
+Set 2, vector#129:\r
+                       message=129 zero bits\r
+                          hash=1D84568BADDAE8E76AD20506C59201CE\r
+\r
+Set 2, vector#130:\r
+                       message=130 zero bits\r
+                          hash=3993DC98D4BCEF8619EE22E2D650BC5C\r
+\r
+Set 2, vector#131:\r
+                       message=131 zero bits\r
+                          hash=0D4A32705F5AEDE343EC1A0110D3E3D7\r
+\r
+Set 2, vector#132:\r
+                       message=132 zero bits\r
+                          hash=FA9DE2A83B0DB306CAD975F3FDAD63D8\r
+\r
+Set 2, vector#133:\r
+                       message=133 zero bits\r
+                          hash=B2B9C2F7153E91568F03B65E38543894\r
+\r
+Set 2, vector#134:\r
+                       message=134 zero bits\r
+                          hash=4C27ABF23121219051D3864B2610F6CE\r
+\r
+Set 2, vector#135:\r
+                       message=135 zero bits\r
+                          hash=9066BB033AE8B87781F1224F7EB8DFDB\r
+\r
+Set 2, vector#136:\r
+                       message=136 zero bits\r
+                          hash=F3C8BDB6B9DF478F227AF2CE61C8A5A1\r
+\r
+Set 2, vector#137:\r
+                       message=137 zero bits\r
+                          hash=F6FCE78736CA57EEB25AC4ACB7039CB9\r
+\r
+Set 2, vector#138:\r
+                       message=138 zero bits\r
+                          hash=4B0FC66A3AE3F19E963482328E03E475\r
+\r
+Set 2, vector#139:\r
+                       message=139 zero bits\r
+                          hash=795D8F8A897AD6F8AD6C98AFB32F67DD\r
+\r
+Set 2, vector#140:\r
+                       message=140 zero bits\r
+                          hash=857E5BE29B8840B90192949EA3FC65FA\r
+\r
+Set 2, vector#141:\r
+                       message=141 zero bits\r
+                          hash=322182A8C8EA57C3D690D487CBD12D61\r
+\r
+Set 2, vector#142:\r
+                       message=142 zero bits\r
+                          hash=A2246479B423AF6D1985A3A5F74715F9\r
+\r
+Set 2, vector#143:\r
+                       message=143 zero bits\r
+                          hash=AB4D55356785021C5679E0A3D2E346D5\r
+\r
+Set 2, vector#144:\r
+                       message=144 zero bits\r
+                          hash=FF035BFF2DCF972EE7DFD023455997EF\r
+\r
+Set 2, vector#145:\r
+                       message=145 zero bits\r
+                          hash=9C14C265089970F2AEE422B5B6819C2E\r
+\r
+Set 2, vector#146:\r
+                       message=146 zero bits\r
+                          hash=5820AEAC96466145DBD2A6AC90211F9A\r
+\r
+Set 2, vector#147:\r
+                       message=147 zero bits\r
+                          hash=EE0BDDEEB8BB573120A8718DC55D2ABF\r
+\r
+Set 2, vector#148:\r
+                       message=148 zero bits\r
+                          hash=BBFC2A1EEE9F43968C3FDF099651FD08\r
+\r
+Set 2, vector#149:\r
+                       message=149 zero bits\r
+                          hash=E6CC234F93933B5AB75A6DC47FBBF949\r
+\r
+Set 2, vector#150:\r
+                       message=150 zero bits\r
+                          hash=1C14E5625BB6D440E1AEED0AA3968745\r
+\r
+Set 2, vector#151:\r
+                       message=151 zero bits\r
+                          hash=08AB6D873DDCD8B121B5A271545D9531\r
+\r
+Set 2, vector#152:\r
+                       message=152 zero bits\r
+                          hash=0E6BCE6899FAE841F79024AFBDF7DB1D\r
+\r
+Set 2, vector#153:\r
+                       message=153 zero bits\r
+                          hash=593788ACC3516DC90764171C827A29F0\r
+\r
+Set 2, vector#154:\r
+                       message=154 zero bits\r
+                          hash=7951C0EC53A70F8FD3CBE133B86E17DC\r
+\r
+Set 2, vector#155:\r
+                       message=155 zero bits\r
+                          hash=0D62FA76FD78CA3CA2A418BB8402D7A3\r
+\r
+Set 2, vector#156:\r
+                       message=156 zero bits\r
+                          hash=20A2A688F7CF1A76B212CEFCE428D48F\r
+\r
+Set 2, vector#157:\r
+                       message=157 zero bits\r
+                          hash=198591C0A3D2D389A0F0CA65E11370E1\r
+\r
+Set 2, vector#158:\r
+                       message=158 zero bits\r
+                          hash=C3C849382E297F9E5C0DFA9DD2239D8A\r
+\r
+Set 2, vector#159:\r
+                       message=159 zero bits\r
+                          hash=3D62D4D5482D544FF0F5861FF4A9D4DA\r
+\r
+Set 2, vector#160:\r
+                       message=160 zero bits\r
+                          hash=441018525208457705BF09A8EE3C1093\r
+\r
+Set 2, vector#161:\r
+                       message=161 zero bits\r
+                          hash=A1A1453794CA727C4969F090001EC12A\r
+\r
+Set 2, vector#162:\r
+                       message=162 zero bits\r
+                          hash=45EDF1F219425C67C1F1B494754A0DF4\r
+\r
+Set 2, vector#163:\r
+                       message=163 zero bits\r
+                          hash=49771530E40537B24F455115DB3EB72E\r
+\r
+Set 2, vector#164:\r
+                       message=164 zero bits\r
+                          hash=424A935B7AFF8111AD124E2720F55B70\r
+\r
+Set 2, vector#165:\r
+                       message=165 zero bits\r
+                          hash=5CD5CE6022ED55AEECB34A03BCC834B8\r
+\r
+Set 2, vector#166:\r
+                       message=166 zero bits\r
+                          hash=5383D68B744C55271A8C4E76D0647101\r
+\r
+Set 2, vector#167:\r
+                       message=167 zero bits\r
+                          hash=817D22A6ECBED56C333ED327396FE335\r
+\r
+Set 2, vector#168:\r
+                       message=168 zero bits\r
+                          hash=2319AC34F4848755A639FD524038DFD3\r
+\r
+Set 2, vector#169:\r
+                       message=169 zero bits\r
+                          hash=8FA537AFB1FDEBA9C19282DCCAE67E32\r
+\r
+Set 2, vector#170:\r
+                       message=170 zero bits\r
+                          hash=38C6203F9F5B4A81C038D8884FECF495\r
+\r
+Set 2, vector#171:\r
+                       message=171 zero bits\r
+                          hash=AB89A20585EFA3A79955BCD17A4CA979\r
+\r
+Set 2, vector#172:\r
+                       message=172 zero bits\r
+                          hash=A91E318CF0CC4080617A43F122C14CD8\r
+\r
+Set 2, vector#173:\r
+                       message=173 zero bits\r
+                          hash=9C9C602B7CA67E49D9F46E846EBD025E\r
+\r
+Set 2, vector#174:\r
+                       message=174 zero bits\r
+                          hash=BB529CB229C913F1F4CFA73E116ACB39\r
+\r
+Set 2, vector#175:\r
+                       message=175 zero bits\r
+                          hash=C338EF7F11BC7D185F89A6B8B081EEC8\r
+\r
+Set 2, vector#176:\r
+                       message=176 zero bits\r
+                          hash=DB46E81649D6863B16BD99AB139C865B\r
+\r
+Set 2, vector#177:\r
+                       message=177 zero bits\r
+                          hash=ED57D54A455E712CF2676633F4EAF75E\r
+\r
+Set 2, vector#178:\r
+                       message=178 zero bits\r
+                          hash=672226562592065951179F443E5BD30B\r
+\r
+Set 2, vector#179:\r
+                       message=179 zero bits\r
+                          hash=F9C07560905A38FAF39A5BE7B3F3DE0F\r
+\r
+Set 2, vector#180:\r
+                       message=180 zero bits\r
+                          hash=2A4C06B48070A65F72F3975AC31A62D8\r
+\r
+Set 2, vector#181:\r
+                       message=181 zero bits\r
+                          hash=5B1DAF128182EB4FE4DE07B97A6E2B60\r
+\r
+Set 2, vector#182:\r
+                       message=182 zero bits\r
+                          hash=DC0575829C264CD89A31F2C0E0AA733A\r
+\r
+Set 2, vector#183:\r
+                       message=183 zero bits\r
+                          hash=869CA87D2C9FEA874EFA7F0AFC534AD0\r
+\r
+Set 2, vector#184:\r
+                       message=184 zero bits\r
+                          hash=6B43B583E2B662724B6FBB5189F6AB28\r
+\r
+Set 2, vector#185:\r
+                       message=185 zero bits\r
+                          hash=10852B10AFD91A6869EB594FBCD2194D\r
+\r
+Set 2, vector#186:\r
+                       message=186 zero bits\r
+                          hash=A349B965B0BA305F997E3E824D53E587\r
+\r
+Set 2, vector#187:\r
+                       message=187 zero bits\r
+                          hash=580AF175CC493D3291AE73031E461C6F\r
+\r
+Set 2, vector#188:\r
+                       message=188 zero bits\r
+                          hash=1487D3D5F71415D8BED862ABBB19DB58\r
+\r
+Set 2, vector#189:\r
+                       message=189 zero bits\r
+                          hash=50A62BA229724EEB22A9EFA4B720AA47\r
+\r
+Set 2, vector#190:\r
+                       message=190 zero bits\r
+                          hash=6358E4E2D1D2E204A1635C69790CFDC2\r
+\r
+Set 2, vector#191:\r
+                       message=191 zero bits\r
+                          hash=B32C22431D55BABB0AF50B47C5424215\r
+\r
+Set 2, vector#192:\r
+                       message=192 zero bits\r
+                          hash=1681FFC6E046C7AF98C9E6C232A3FE0A\r
+\r
+Set 2, vector#193:\r
+                       message=193 zero bits\r
+                          hash=97EACB4718E8BB7D09375CD586C294FD\r
+\r
+Set 2, vector#194:\r
+                       message=194 zero bits\r
+                          hash=6EF028B127003B0F175CE90C41F426F1\r
+\r
+Set 2, vector#195:\r
+                       message=195 zero bits\r
+                          hash=B640B430296EDD6CAC87351A6CA6394B\r
+\r
+Set 2, vector#196:\r
+                       message=196 zero bits\r
+                          hash=8991AC04250BE72360C3AABC5981CBF4\r
+\r
+Set 2, vector#197:\r
+                       message=197 zero bits\r
+                          hash=7E7B56150FA2EA9946C3767630096D8A\r
+\r
+Set 2, vector#198:\r
+                       message=198 zero bits\r
+                          hash=FE56E950DE0F6D1AA3C3DBBC6B8BA162\r
+\r
+Set 2, vector#199:\r
+                       message=199 zero bits\r
+                          hash=9FC9616C77C5AF337D3C0F24BD2280B9\r
+\r
+Set 2, vector#200:\r
+                       message=200 zero bits\r
+                          hash=D28C293E10139D5D8F6E4592AEAFFC1B\r
+\r
+Set 2, vector#201:\r
+                       message=201 zero bits\r
+                          hash=40AFEF80ADE81A823D4EFEA11887422D\r
+\r
+Set 2, vector#202:\r
+                       message=202 zero bits\r
+                          hash=3FAE61F701D0901F6E42E2E6BB55DF0E\r
+\r
+Set 2, vector#203:\r
+                       message=203 zero bits\r
+                          hash=3AB320C597AD80DCC3B60C3020D9EFDC\r
+\r
+Set 2, vector#204:\r
+                       message=204 zero bits\r
+                          hash=B6041D557E1A10B4D99BC684E6D603C1\r
+\r
+Set 2, vector#205:\r
+                       message=205 zero bits\r
+                          hash=30C8523A14BDB04C281728B6EAF964DD\r
+\r
+Set 2, vector#206:\r
+                       message=206 zero bits\r
+                          hash=A08295100D8C90E463503DEE4A1DD818\r
+\r
+Set 2, vector#207:\r
+                       message=207 zero bits\r
+                          hash=82C010375595CE17C0ED3E199D6133BD\r
+\r
+Set 2, vector#208:\r
+                       message=208 zero bits\r
+                          hash=A396C59A96AF3B36D364448C7B687FB1\r
+\r
+Set 2, vector#209:\r
+                       message=209 zero bits\r
+                          hash=1738A998B8BB181569650C3653085F60\r
+\r
+Set 2, vector#210:\r
+                       message=210 zero bits\r
+                          hash=A9FFAB2FBC2007A1C1B0B2D56E2D40F7\r
+\r
+Set 2, vector#211:\r
+                       message=211 zero bits\r
+                          hash=3775B616FDBC4C3D81BBCE37BE3B60B8\r
+\r
+Set 2, vector#212:\r
+                       message=212 zero bits\r
+                          hash=660DE6942F904BABC8D54AD3218D94AD\r
+\r
+Set 2, vector#213:\r
+                       message=213 zero bits\r
+                          hash=BDD3C2CBE37D9677A5C58CDA8B87140A\r
+\r
+Set 2, vector#214:\r
+                       message=214 zero bits\r
+                          hash=B6CECC45DB7A3EF60B5A69AD869FA09D\r
+\r
+Set 2, vector#215:\r
+                       message=215 zero bits\r
+                          hash=EEBA1501CD2FDD550D75C51799003B02\r
+\r
+Set 2, vector#216:\r
+                       message=216 zero bits\r
+                          hash=65435A5D117AA6B052A5F737D9946A7B\r
+\r
+Set 2, vector#217:\r
+                       message=217 zero bits\r
+                          hash=4ABA342D359369ACEE321BEAF0B9A2F6\r
+\r
+Set 2, vector#218:\r
+                       message=218 zero bits\r
+                          hash=5600B13B28A2D85EC8EA63C64B1B971D\r
+\r
+Set 2, vector#219:\r
+                       message=219 zero bits\r
+                          hash=5C65C7D954D4B4EB691325A43481C51E\r
+\r
+Set 2, vector#220:\r
+                       message=220 zero bits\r
+                          hash=E65DB3F6904B75C3F5C278BAC11AB94A\r
+\r
+Set 2, vector#221:\r
+                       message=221 zero bits\r
+                          hash=14469E0A1AAB35BB92F1CFB1246D05B3\r
+\r
+Set 2, vector#222:\r
+                       message=222 zero bits\r
+                          hash=0C34778998648DAE0A87E6E18D0C2CDD\r
+\r
+Set 2, vector#223:\r
+                       message=223 zero bits\r
+                          hash=40CA412A3D037E5FF8897E554A581B08\r
+\r
+Set 2, vector#224:\r
+                       message=224 zero bits\r
+                          hash=1C9E99E48A495FE81D388FDB4900E59F\r
+\r
+Set 2, vector#225:\r
+                       message=225 zero bits\r
+                          hash=66EBB67EE98C961D4C737DC98213930A\r
+\r
+Set 2, vector#226:\r
+                       message=226 zero bits\r
+                          hash=B10C8AEFFF2C21BE56AA2462E587412F\r
+\r
+Set 2, vector#227:\r
+                       message=227 zero bits\r
+                          hash=76C9066771856F2F250CD4EABE97B817\r
+\r
+Set 2, vector#228:\r
+                       message=228 zero bits\r
+                          hash=461DE6B52519EF7A0BFDF181898563BF\r
+\r
+Set 2, vector#229:\r
+                       message=229 zero bits\r
+                          hash=19D221FC12F6524A5708D613C1667F05\r
+\r
+Set 2, vector#230:\r
+                       message=230 zero bits\r
+                          hash=D4D742D546284167D252FD5D87C39E63\r
+\r
+Set 2, vector#231:\r
+                       message=231 zero bits\r
+                          hash=139157E9F39522D24680A26A55ED8EE8\r
+\r
+Set 2, vector#232:\r
+                       message=232 zero bits\r
+                          hash=4AA476A72347BA44C9BD20C974D0F181\r
+\r
+Set 2, vector#233:\r
+                       message=233 zero bits\r
+                          hash=FB0E4042A8600B47E3A4A8FAAF4B89D4\r
+\r
+Set 2, vector#234:\r
+                       message=234 zero bits\r
+                          hash=262443AE701F6D0E1B919D6FE9115F9A\r
+\r
+Set 2, vector#235:\r
+                       message=235 zero bits\r
+                          hash=4C47095FE8B2B39DA3A3548EC17125CA\r
+\r
+Set 2, vector#236:\r
+                       message=236 zero bits\r
+                          hash=E4027C3FEE7B1F7CC599042542A1830C\r
+\r
+Set 2, vector#237:\r
+                       message=237 zero bits\r
+                          hash=91BFC076FE9A7AAE850DB2DF22DC4D08\r
+\r
+Set 2, vector#238:\r
+                       message=238 zero bits\r
+                          hash=DEB9851AC2BD4544630B4466D7D53877\r
+\r
+Set 2, vector#239:\r
+                       message=239 zero bits\r
+                          hash=2207FA41E52F066AC56CFD21CB4F6B9B\r
+\r
+Set 2, vector#240:\r
+                       message=240 zero bits\r
+                          hash=862DEC5C27142824A394BC6464928F48\r
+\r
+Set 2, vector#241:\r
+                       message=241 zero bits\r
+                          hash=1D01FBF2B89F35636F936C94F3B84DA5\r
+\r
+Set 2, vector#242:\r
+                       message=242 zero bits\r
+                          hash=9FB88E11C2ADCCF8D665715DEAC6B111\r
+\r
+Set 2, vector#243:\r
+                       message=243 zero bits\r
+                          hash=8A648F36D004D0D949FEBABE0D1A8881\r
+\r
+Set 2, vector#244:\r
+                       message=244 zero bits\r
+                          hash=296B5C5773CC4722AD91A88A06B23D3E\r
+\r
+Set 2, vector#245:\r
+                       message=245 zero bits\r
+                          hash=819A90A4FED92D4B7FE3CD66DE254097\r
+\r
+Set 2, vector#246:\r
+                       message=246 zero bits\r
+                          hash=660035CFB5585CC15787689AAF45B002\r
+\r
+Set 2, vector#247:\r
+                       message=247 zero bits\r
+                          hash=2CB48719C933F91911D68C5FF85E6FE2\r
+\r
+Set 2, vector#248:\r
+                       message=248 zero bits\r
+                          hash=3861FACEE9EFC127E340387F1936B8FB\r
+\r
+Set 2, vector#249:\r
+                       message=249 zero bits\r
+                          hash=AB914B4EA8C5B0110058FFD447D71003\r
+\r
+Set 2, vector#250:\r
+                       message=250 zero bits\r
+                          hash=4104EC395DE66EA787292E03D5694528\r
+\r
+Set 2, vector#251:\r
+                       message=251 zero bits\r
+                          hash=F7BD02F359C2A31AD41F7F7B573B8BAF\r
+\r
+Set 2, vector#252:\r
+                       message=252 zero bits\r
+                          hash=3621A67E1A9B8F9CD33699B60A757476\r
+\r
+Set 2, vector#253:\r
+                       message=253 zero bits\r
+                          hash=B20F0ACFA845FC2AEBC35699458FF300\r
+\r
+Set 2, vector#254:\r
+                       message=254 zero bits\r
+                          hash=31B7369308F12904E647817C37A28B4D\r
+\r
+Set 2, vector#255:\r
+                       message=255 zero bits\r
+                          hash=84FC26DC2C3B3FE523B80C900CC744BD\r
+\r
+Set 2, vector#256:\r
+                       message=256 zero bits\r
+                          hash=70BC8F4B72A86921468BF8E8441DCE51\r
+\r
+Set 2, vector#257:\r
+                       message=257 zero bits\r
+                          hash=CA1105339A85FCD64ADDF3F6DE0C568C\r
+\r
+Set 2, vector#258:\r
+                       message=258 zero bits\r
+                          hash=B4C875B513AC1E53CC411C472FE316B0\r
+\r
+Set 2, vector#259:\r
+                       message=259 zero bits\r
+                          hash=60155E9916ABE05C296E2BA4611B9B34\r
+\r
+Set 2, vector#260:\r
+                       message=260 zero bits\r
+                          hash=EF04BE9AFDE238915A0C56DE7AD7DDD7\r
+\r
+Set 2, vector#261:\r
+                       message=261 zero bits\r
+                          hash=49035235D0B04CC6BFA582C8F8AB35AE\r
+\r
+Set 2, vector#262:\r
+                       message=262 zero bits\r
+                          hash=205646284EF33922935EAE60DE2A0211\r
+\r
+Set 2, vector#263:\r
+                       message=263 zero bits\r
+                          hash=B0BD1BC0750DDCFE7C7E07D961E55547\r
+\r
+Set 2, vector#264:\r
+                       message=264 zero bits\r
+                          hash=099A150E83972A433492A59C2FBE98E0\r
+\r
+Set 2, vector#265:\r
+                       message=265 zero bits\r
+                          hash=DD2018564F4867122DD1DF739B37E2A5\r
+\r
+Set 2, vector#266:\r
+                       message=266 zero bits\r
+                          hash=0591A76B17AE364BD458564A41191F71\r
+\r
+Set 2, vector#267:\r
+                       message=267 zero bits\r
+                          hash=3B384652CB040F9A55938ABC7CDEEF36\r
+\r
+Set 2, vector#268:\r
+                       message=268 zero bits\r
+                          hash=E3F6B7C8CADCD0D48ED6D293B2A56A67\r
+\r
+Set 2, vector#269:\r
+                       message=269 zero bits\r
+                          hash=B899DA66FA22999366ECCC78FB418148\r
+\r
+Set 2, vector#270:\r
+                       message=270 zero bits\r
+                          hash=5200072C4C0928CF60B38AE987C37C82\r
+\r
+Set 2, vector#271:\r
+                       message=271 zero bits\r
+                          hash=21AFF21DFFDC3FFF6BEA43EBB225189A\r
+\r
+Set 2, vector#272:\r
+                       message=272 zero bits\r
+                          hash=0B91F1D54F932DC6382DC69F197900CF\r
+\r
+Set 2, vector#273:\r
+                       message=273 zero bits\r
+                          hash=43C53FDE218DAFD39FB0CE76CA91D143\r
+\r
+Set 2, vector#274:\r
+                       message=274 zero bits\r
+                          hash=D87FB26295118DEF545BCE43AC78AD4B\r
+\r
+Set 2, vector#275:\r
+                       message=275 zero bits\r
+                          hash=F8DF0FFE8C542971EE59A5BB82780BE6\r
+\r
+Set 2, vector#276:\r
+                       message=276 zero bits\r
+                          hash=A81B56BC3850D592D348DE461EB9BE58\r
+\r
+Set 2, vector#277:\r
+                       message=277 zero bits\r
+                          hash=B5EC7B04805C01F0C18A6CDFE366DDDF\r
+\r
+Set 2, vector#278:\r
+                       message=278 zero bits\r
+                          hash=4416536B6F88887FF803CAB133C82F3A\r
+\r
+Set 2, vector#279:\r
+                       message=279 zero bits\r
+                          hash=4BC1C274FE01EEB6C0A8AF77E8A10DE5\r
+\r
+Set 2, vector#280:\r
+                       message=280 zero bits\r
+                          hash=C54104D7894A1941CA710981DA437F9F\r
+\r
+Set 2, vector#281:\r
+                       message=281 zero bits\r
+                          hash=38AE46D7CADED368A0CDC24E7324FA91\r
+\r
+Set 2, vector#282:\r
+                       message=282 zero bits\r
+                          hash=53249218DEDCAC7B7EF5E9B2BE61B3CB\r
+\r
+Set 2, vector#283:\r
+                       message=283 zero bits\r
+                          hash=0508FE5958B6423CF5F68BD8522C3AFB\r
+\r
+Set 2, vector#284:\r
+                       message=284 zero bits\r
+                          hash=B324DB60EEF689C7FC880A5755632F6C\r
+\r
+Set 2, vector#285:\r
+                       message=285 zero bits\r
+                          hash=0DC3CA8C9BDD83F0DBF2920F25D426A2\r
+\r
+Set 2, vector#286:\r
+                       message=286 zero bits\r
+                          hash=C62C16E0683B28500D855E10687B7530\r
+\r
+Set 2, vector#287:\r
+                       message=287 zero bits\r
+                          hash=A734DFAA805694C73697826F00D9B5D3\r
+\r
+Set 2, vector#288:\r
+                       message=288 zero bits\r
+                          hash=81684C2E68ADE2CD4BF9F2E8A67DD4FE\r
+\r
+Set 2, vector#289:\r
+                       message=289 zero bits\r
+                          hash=D545F097345B8422F408B5EB62B8D8C9\r
+\r
+Set 2, vector#290:\r
+                       message=290 zero bits\r
+                          hash=DCAB0A2FDE1466B67FE939FA415A52C0\r
+\r
+Set 2, vector#291:\r
+                       message=291 zero bits\r
+                          hash=184D9C1EE9E022AB81A602F009B41BC4\r
+\r
+Set 2, vector#292:\r
+                       message=292 zero bits\r
+                          hash=EF59CD24C8C570A595D74A22D9A98441\r
+\r
+Set 2, vector#293:\r
+                       message=293 zero bits\r
+                          hash=375EEEEF874DDACE44020074D26021B6\r
+\r
+Set 2, vector#294:\r
+                       message=294 zero bits\r
+                          hash=12843307F358AB36D855B04622C3B877\r
+\r
+Set 2, vector#295:\r
+                       message=295 zero bits\r
+                          hash=34B30BAC0E6AD4820908CD31BC0E2AC9\r
+\r
+Set 2, vector#296:\r
+                       message=296 zero bits\r
+                          hash=21E2E8FE686ED0003B67D698B1273481\r
+\r
+Set 2, vector#297:\r
+                       message=297 zero bits\r
+                          hash=AB4311982003E639287B2F38A82F4848\r
+\r
+Set 2, vector#298:\r
+                       message=298 zero bits\r
+                          hash=110CA87857CD18D1E782B2743B3FFC71\r
+\r
+Set 2, vector#299:\r
+                       message=299 zero bits\r
+                          hash=C16BC0A7C05E63A48FFAA81371EC3551\r
+\r
+Set 2, vector#300:\r
+                       message=300 zero bits\r
+                          hash=3E7104A41EA96E87359A6D6F6800A9D4\r
+\r
+Set 2, vector#301:\r
+                       message=301 zero bits\r
+                          hash=FCC47E08FC72C4D940A0BAFBE4F04322\r
+\r
+Set 2, vector#302:\r
+                       message=302 zero bits\r
+                          hash=18C30288F93FBC42EEC93E3020561631\r
+\r
+Set 2, vector#303:\r
+                       message=303 zero bits\r
+                          hash=C68284EF0995F3B4798E8B27455C0644\r
+\r
+Set 2, vector#304:\r
+                       message=304 zero bits\r
+                          hash=F3A534D52E3FE0C7A85B30CA00CA7424\r
+\r
+Set 2, vector#305:\r
+                       message=305 zero bits\r
+                          hash=1FE1C169FF6D567FC1B6A4451CCE8594\r
+\r
+Set 2, vector#306:\r
+                       message=306 zero bits\r
+                          hash=BB0C5E605152539AA1D7C069529C3AA0\r
+\r
+Set 2, vector#307:\r
+                       message=307 zero bits\r
+                          hash=B445806C3E748F23D187936574762F0E\r
+\r
+Set 2, vector#308:\r
+                       message=308 zero bits\r
+                          hash=1D3C813AC5118D0616C36C7056C817C6\r
+\r
+Set 2, vector#309:\r
+                       message=309 zero bits\r
+                          hash=FF21C4EB6BD2F9CE1B9EFC7386AB4138\r
+\r
+Set 2, vector#310:\r
+                       message=310 zero bits\r
+                          hash=D84C61B6B4BB79550A71D26F4126DE5D\r
+\r
+Set 2, vector#311:\r
+                       message=311 zero bits\r
+                          hash=61F182DF8855AF03972383D100FCDA44\r
+\r
+Set 2, vector#312:\r
+                       message=312 zero bits\r
+                          hash=002D5910DE023EDDCE8358EDF169C07F\r
+\r
+Set 2, vector#313:\r
+                       message=313 zero bits\r
+                          hash=FB934D9582EF6FB1A1CC22718A5FA875\r
+\r
+Set 2, vector#314:\r
+                       message=314 zero bits\r
+                          hash=23FDF3D5913EFDEB01BFAC9E0ED6ED98\r
+\r
+Set 2, vector#315:\r
+                       message=315 zero bits\r
+                          hash=D3ADC6C61919DCCF4FF1480D64703FCD\r
+\r
+Set 2, vector#316:\r
+                       message=316 zero bits\r
+                          hash=59CF61CCCBCD7AAD447B4F06327EDF0C\r
+\r
+Set 2, vector#317:\r
+                       message=317 zero bits\r
+                          hash=D8A56A4ED1F2322D4C1B52736770440E\r
+\r
+Set 2, vector#318:\r
+                       message=318 zero bits\r
+                          hash=130EA971172991710337DCAD1423B3A8\r
+\r
+Set 2, vector#319:\r
+                       message=319 zero bits\r
+                          hash=F4F97DB699CAC35F4D7AE9478CE128AE\r
+\r
+Set 2, vector#320:\r
+                       message=320 zero bits\r
+                          hash=FD4B38E94292E00251B9F39C47EE5710\r
+\r
+Set 2, vector#321:\r
+                       message=321 zero bits\r
+                          hash=9AE1A7CA80037D48B627E31DCD650943\r
+\r
+Set 2, vector#322:\r
+                       message=322 zero bits\r
+                          hash=8B81FA684E04D81797CAC623C37DF846\r
+\r
+Set 2, vector#323:\r
+                       message=323 zero bits\r
+                          hash=E7BA5388F1572D2E3DC168398AD6ECA3\r
+\r
+Set 2, vector#324:\r
+                       message=324 zero bits\r
+                          hash=4572B9FC1B1ECCCBDC9DD8B7F97904EE\r
+\r
+Set 2, vector#325:\r
+                       message=325 zero bits\r
+                          hash=CA321C70C4D53F3F3DCD91C83D155033\r
+\r
+Set 2, vector#326:\r
+                       message=326 zero bits\r
+                          hash=29101351BCDD60823D093F6604B98A82\r
+\r
+Set 2, vector#327:\r
+                       message=327 zero bits\r
+                          hash=A146C035C3C6AD5FE45F37F011315F88\r
+\r
+Set 2, vector#328:\r
+                       message=328 zero bits\r
+                          hash=F5CFD73023C1EEDB6B9569736073F1DD\r
+\r
+Set 2, vector#329:\r
+                       message=329 zero bits\r
+                          hash=5A4E09691CA9E8AD0EEA97C085D4D03C\r
+\r
+Set 2, vector#330:\r
+                       message=330 zero bits\r
+                          hash=70ABE61A4DD5AEB14FA736E0976DE6E5\r
+\r
+Set 2, vector#331:\r
+                       message=331 zero bits\r
+                          hash=8FFFCD022825F6CC235BF2FBB9B2E207\r
+\r
+Set 2, vector#332:\r
+                       message=332 zero bits\r
+                          hash=0658A248E3E4DD5372FEA2E8772B542E\r
+\r
+Set 2, vector#333:\r
+                       message=333 zero bits\r
+                          hash=3924226FD16BDAF7065EF08B1157EA71\r
+\r
+Set 2, vector#334:\r
+                       message=334 zero bits\r
+                          hash=F9F77A8B0068D093D6EBC507620CAE46\r
+\r
+Set 2, vector#335:\r
+                       message=335 zero bits\r
+                          hash=EB040345B6FAD11751F5E54FEBFCAB26\r
+\r
+Set 2, vector#336:\r
+                       message=336 zero bits\r
+                          hash=C183857770364B05C2011BDEBB914ED3\r
+\r
+Set 2, vector#337:\r
+                       message=337 zero bits\r
+                          hash=B52060816ACA15E515721DDB835A9EAA\r
+\r
+Set 2, vector#338:\r
+                       message=338 zero bits\r
+                          hash=8E663CD63B6E98E1A608252CD33C558E\r
+\r
+Set 2, vector#339:\r
+                       message=339 zero bits\r
+                          hash=C0FB9B8F072433F201694ECAB197E628\r
+\r
+Set 2, vector#340:\r
+                       message=340 zero bits\r
+                          hash=2FD48CCE540B9CEEF2C6343126A3434E\r
+\r
+Set 2, vector#341:\r
+                       message=341 zero bits\r
+                          hash=ABC79ADE0021C2A85E8B8816DA65F3DA\r
+\r
+Set 2, vector#342:\r
+                       message=342 zero bits\r
+                          hash=B118459A1734D508B9676EEE7CE154D7\r
+\r
+Set 2, vector#343:\r
+                       message=343 zero bits\r
+                          hash=5054F198DC8854D50098B5A15DAF18D4\r
+\r
+Set 2, vector#344:\r
+                       message=344 zero bits\r
+                          hash=AEA2FA668453E23C431649801E5EA548\r
+\r
+Set 2, vector#345:\r
+                       message=345 zero bits\r
+                          hash=CCAD53660C545DFFBED7C53201B17080\r
+\r
+Set 2, vector#346:\r
+                       message=346 zero bits\r
+                          hash=691748E50CDF26CFA87763107323D9D8\r
+\r
+Set 2, vector#347:\r
+                       message=347 zero bits\r
+                          hash=A8B37F87CD110749895767B24A52F7D5\r
+\r
+Set 2, vector#348:\r
+                       message=348 zero bits\r
+                          hash=31A65ED0871D6191AC5FDD906C5329BB\r
+\r
+Set 2, vector#349:\r
+                       message=349 zero bits\r
+                          hash=C80CF07C703D8AB863D37D68319DE5D8\r
+\r
+Set 2, vector#350:\r
+                       message=350 zero bits\r
+                          hash=CA174C30ADA90BE690BFEEAE5710DFD9\r
+\r
+Set 2, vector#351:\r
+                       message=351 zero bits\r
+                          hash=52EA1A14E46CEA716C3A2CB3BF415597\r
+\r
+Set 2, vector#352:\r
+                       message=352 zero bits\r
+                          hash=3E5CEB07F51A70D9D431714F04C0272F\r
+\r
+Set 2, vector#353:\r
+                       message=353 zero bits\r
+                          hash=3A0ECCE3D93E7839352EC415F7084751\r
+\r
+Set 2, vector#354:\r
+                       message=354 zero bits\r
+                          hash=4D78EFB96FD9863166EA13EED92B57AC\r
+\r
+Set 2, vector#355:\r
+                       message=355 zero bits\r
+                          hash=2ADB07017AC9C382D0C7F7D8DCFC978B\r
+\r
+Set 2, vector#356:\r
+                       message=356 zero bits\r
+                          hash=1FA5F57D0DBD358E66D9206A6E9873A3\r
+\r
+Set 2, vector#357:\r
+                       message=357 zero bits\r
+                          hash=AEE9B5527A16882BD4A23A49B921F57E\r
+\r
+Set 2, vector#358:\r
+                       message=358 zero bits\r
+                          hash=57876AC00BDDA4D4EEBF0911261DB632\r
+\r
+Set 2, vector#359:\r
+                       message=359 zero bits\r
+                          hash=384D9331E0E35B1D0C8A0CFFE5DB44CE\r
+\r
+Set 2, vector#360:\r
+                       message=360 zero bits\r
+                          hash=7622214B8536AFE7B89B1C6606069B0D\r
+\r
+Set 2, vector#361:\r
+                       message=361 zero bits\r
+                          hash=250E099B27F8F97DB7B902B05428B587\r
+\r
+Set 2, vector#362:\r
+                       message=362 zero bits\r
+                          hash=41CD3B621B55523AB7460CD3F1D8776D\r
+\r
+Set 2, vector#363:\r
+                       message=363 zero bits\r
+                          hash=750BE1AC306B5CE1287C4704B38748F0\r
+\r
+Set 2, vector#364:\r
+                       message=364 zero bits\r
+                          hash=F142F4D17D2EB859CC2B2D8C13FC31F8\r
+\r
+Set 2, vector#365:\r
+                       message=365 zero bits\r
+                          hash=D28E9BC672DD4CCD7881D1A382F19B03\r
+\r
+Set 2, vector#366:\r
+                       message=366 zero bits\r
+                          hash=B51A9CE5F4DC1028FF6731D4D0956FD6\r
+\r
+Set 2, vector#367:\r
+                       message=367 zero bits\r
+                          hash=5C981D118B166FFC5B634C5CEDBCA7AE\r
+\r
+Set 2, vector#368:\r
+                       message=368 zero bits\r
+                          hash=D898504A722BFF1524134C6AB6A5EAA5\r
+\r
+Set 2, vector#369:\r
+                       message=369 zero bits\r
+                          hash=A22DBD8C8B3BB26258C6C51CEC105219\r
+\r
+Set 2, vector#370:\r
+                       message=370 zero bits\r
+                          hash=B50FE2A4B67868D3AE05DE2D759EB3AE\r
+\r
+Set 2, vector#371:\r
+                       message=371 zero bits\r
+                          hash=07DBED4F7D909CC19C94BEFA40CA6FD9\r
+\r
+Set 2, vector#372:\r
+                       message=372 zero bits\r
+                          hash=01E0F327E751A8E99363680A009FEFF6\r
+\r
+Set 2, vector#373:\r
+                       message=373 zero bits\r
+                          hash=ED92095F8A8E643DD1BEB588AE7FD22E\r
+\r
+Set 2, vector#374:\r
+                       message=374 zero bits\r
+                          hash=7F5447221EFAEA0A2A36ADFF6A0B76BF\r
+\r
+Set 2, vector#375:\r
+                       message=375 zero bits\r
+                          hash=92FAA1E0A4994925B1AB5C9617C5BE35\r
+\r
+Set 2, vector#376:\r
+                       message=376 zero bits\r
+                          hash=0D7DB7FF842F89A36B58FA2541DE2A6C\r
+\r
+Set 2, vector#377:\r
+                       message=377 zero bits\r
+                          hash=F83F449F345B9646FEE940E6D47AA55E\r
+\r
+Set 2, vector#378:\r
+                       message=378 zero bits\r
+                          hash=CE678C36EBA27963011D4C46445FA91C\r
+\r
+Set 2, vector#379:\r
+                       message=379 zero bits\r
+                          hash=672D9218F051AC2264A083F56AFC7521\r
+\r
+Set 2, vector#380:\r
+                       message=380 zero bits\r
+                          hash=8FB111318F3121FD24FFAE5892873F83\r
+\r
+Set 2, vector#381:\r
+                       message=381 zero bits\r
+                          hash=BF02AFFAFCEF2FCE224D059B3FAEFE8C\r
+\r
+Set 2, vector#382:\r
+                       message=382 zero bits\r
+                          hash=9011D9F4905AF280B334E151FC99E6CD\r
+\r
+Set 2, vector#383:\r
+                       message=383 zero bits\r
+                          hash=766CB85441C7236B3257A945941370D4\r
+\r
+Set 2, vector#384:\r
+                       message=384 zero bits\r
+                          hash=B203621A65475445E6FCDCA717C667B5\r
+\r
+Set 2, vector#385:\r
+                       message=385 zero bits\r
+                          hash=ED5547AF028BCBEC93C8BBFCB8EF824A\r
+\r
+Set 2, vector#386:\r
+                       message=386 zero bits\r
+                          hash=EE5912AA33DD8DD31FECB0DFCB732598\r
+\r
+Set 2, vector#387:\r
+                       message=387 zero bits\r
+                          hash=A9310E42443CD2CFD41C45FC8176B47C\r
+\r
+Set 2, vector#388:\r
+                       message=388 zero bits\r
+                          hash=1E63712190F1D5EABBD4C2602BF10FB0\r
+\r
+Set 2, vector#389:\r
+                       message=389 zero bits\r
+                          hash=D070F0F0C0F47417C4B2F77FF9EA7A87\r
+\r
+Set 2, vector#390:\r
+                       message=390 zero bits\r
+                          hash=33A44DFB5F1E9C4AF719B5091071FCEF\r
+\r
+Set 2, vector#391:\r
+                       message=391 zero bits\r
+                          hash=FA72228146A290CC92EA38B4ECD567AC\r
+\r
+Set 2, vector#392:\r
+                       message=392 zero bits\r
+                          hash=884BB48A55DA67B4812805CB8905277D\r
+\r
+Set 2, vector#393:\r
+                       message=393 zero bits\r
+                          hash=80E47732A4FF9D6178323064722961E8\r
+\r
+Set 2, vector#394:\r
+                       message=394 zero bits\r
+                          hash=374BF4C70DCAF4E21FFF0054091BBC12\r
+\r
+Set 2, vector#395:\r
+                       message=395 zero bits\r
+                          hash=66F03D9BA2D36597F0DF2EBEA944B32A\r
+\r
+Set 2, vector#396:\r
+                       message=396 zero bits\r
+                          hash=F91EDADEA7C093144505029FFE1E17EB\r
+\r
+Set 2, vector#397:\r
+                       message=397 zero bits\r
+                          hash=390D1233B61AA40C2F0195FB40438D88\r
+\r
+Set 2, vector#398:\r
+                       message=398 zero bits\r
+                          hash=14364B25A12FE1FDD0AE636ADF023040\r
+\r
+Set 2, vector#399:\r
+                       message=399 zero bits\r
+                          hash=8EE08024502C588A421027C5E5EA8F56\r
+\r
+Set 2, vector#400:\r
+                       message=400 zero bits\r
+                          hash=871BDD96B159C14D15C8D97D9111E9C8\r
+\r
+Set 2, vector#401:\r
+                       message=401 zero bits\r
+                          hash=30818E25CB2A10541C1F54BDC49CEBD3\r
+\r
+Set 2, vector#402:\r
+                       message=402 zero bits\r
+                          hash=5AD1EA1F811EE95B4CE89BE53D4AAD80\r
+\r
+Set 2, vector#403:\r
+                       message=403 zero bits\r
+                          hash=BC32516A8AD87C980D3BC81500F0A589\r
+\r
+Set 2, vector#404:\r
+                       message=404 zero bits\r
+                          hash=A010B7048AAE01544CD13B8E0D7E640A\r
+\r
+Set 2, vector#405:\r
+                       message=405 zero bits\r
+                          hash=06AAE5337BB2262C715A5600C67536AE\r
+\r
+Set 2, vector#406:\r
+                       message=406 zero bits\r
+                          hash=43183452C7FAE7E22535ABC2DE1BD439\r
+\r
+Set 2, vector#407:\r
+                       message=407 zero bits\r
+                          hash=D31DEC2E4991A548762BA581F935F0AA\r
+\r
+Set 2, vector#408:\r
+                       message=408 zero bits\r
+                          hash=E2365BC6A6FBD41287FAE648437296FA\r
+\r
+Set 2, vector#409:\r
+                       message=409 zero bits\r
+                          hash=C5377942B1106E68C08188858DC48CF2\r
+\r
+Set 2, vector#410:\r
+                       message=410 zero bits\r
+                          hash=CFD56CD4E7E01113B2A42B9F4D266DF0\r
+\r
+Set 2, vector#411:\r
+                       message=411 zero bits\r
+                          hash=1F9124070423981626D34654D5D593DB\r
+\r
+Set 2, vector#412:\r
+                       message=412 zero bits\r
+                          hash=0036ADC167A2E004EF4D7F67F0A4FAED\r
+\r
+Set 2, vector#413:\r
+                       message=413 zero bits\r
+                          hash=C04438799E35F0A965EE91D44C99D298\r
+\r
+Set 2, vector#414:\r
+                       message=414 zero bits\r
+                          hash=18B0CB85F6DDE4A491F5EE558D2896AA\r
+\r
+Set 2, vector#415:\r
+                       message=415 zero bits\r
+                          hash=5DA0BBCAD090E1092F1F4F4394632DA3\r
+\r
+Set 2, vector#416:\r
+                       message=416 zero bits\r
+                          hash=469AA816010C9C8639A9176F625189AF\r
+\r
+Set 2, vector#417:\r
+                       message=417 zero bits\r
+                          hash=6A7FC2F3114B721C71C45DDA99CEE8C3\r
+\r
+Set 2, vector#418:\r
+                       message=418 zero bits\r
+                          hash=9D95BEE8558AA2028876F0D902499824\r
+\r
+Set 2, vector#419:\r
+                       message=419 zero bits\r
+                          hash=1F7EBDB2BE0134F6888BE92B109ABBAD\r
+\r
+Set 2, vector#420:\r
+                       message=420 zero bits\r
+                          hash=C5506CA4505F48B8EEC6BB207CF2C75E\r
+\r
+Set 2, vector#421:\r
+                       message=421 zero bits\r
+                          hash=9C57D31813BAA4100EFAE8D2CA0DBA9F\r
+\r
+Set 2, vector#422:\r
+                       message=422 zero bits\r
+                          hash=A530EE11D52C685EB5DE0C9F88442650\r
+\r
+Set 2, vector#423:\r
+                       message=423 zero bits\r
+                          hash=0D54AF7F3F1E2AFC28524D72545CAB29\r
+\r
+Set 2, vector#424:\r
+                       message=424 zero bits\r
+                          hash=ECA0470178275AC94E5DE381969ED232\r
+\r
+Set 2, vector#425:\r
+                       message=425 zero bits\r
+                          hash=39349F0AD1862C67AC0E65D339BCDD59\r
+\r
+Set 2, vector#426:\r
+                       message=426 zero bits\r
+                          hash=6D00F9F3ED0B401B70F208498567B90A\r
+\r
+Set 2, vector#427:\r
+                       message=427 zero bits\r
+                          hash=42F46904B0F27249D9D7B4DD60187CA7\r
+\r
+Set 2, vector#428:\r
+                       message=428 zero bits\r
+                          hash=6031987CB31AD39CDB6CFA119748AD65\r
+\r
+Set 2, vector#429:\r
+                       message=429 zero bits\r
+                          hash=6156FA7852F15973ADE43128DA36EC81\r
+\r
+Set 2, vector#430:\r
+                       message=430 zero bits\r
+                          hash=BD7097DA4BB65C68FE99753655DE9EFA\r
+\r
+Set 2, vector#431:\r
+                       message=431 zero bits\r
+                          hash=EE49A777F801BF43583828D8C179575A\r
+\r
+Set 2, vector#432:\r
+                       message=432 zero bits\r
+                          hash=8910E6FC12F07A52B796EB55FBF3EDDA\r
+\r
+Set 2, vector#433:\r
+                       message=433 zero bits\r
+                          hash=8497AF8A1A79CF2E4A36CD11037F9D6A\r
+\r
+Set 2, vector#434:\r
+                       message=434 zero bits\r
+                          hash=8F30D6C4405F8D2EF824C5AABC709BAC\r
+\r
+Set 2, vector#435:\r
+                       message=435 zero bits\r
+                          hash=B924171CB8F98419E3B4028CB9011992\r
+\r
+Set 2, vector#436:\r
+                       message=436 zero bits\r
+                          hash=023604B4D275BBECCA7B07BDB6928611\r
+\r
+Set 2, vector#437:\r
+                       message=437 zero bits\r
+                          hash=5F31FAF3EA597C63C5C5925326B06180\r
+\r
+Set 2, vector#438:\r
+                       message=438 zero bits\r
+                          hash=35A566FD193FBFD44D990015BD305AED\r
+\r
+Set 2, vector#439:\r
+                       message=439 zero bits\r
+                          hash=8EED66F01242EA5F41861FF63862E576\r
+\r
+Set 2, vector#440:\r
+                       message=440 zero bits\r
+                          hash=C9EA3314B91C9FD4E38F9432064FD1F2\r
+\r
+Set 2, vector#441:\r
+                       message=441 zero bits\r
+                          hash=B664C1404F6557100826B8B92975C038\r
+\r
+Set 2, vector#442:\r
+                       message=442 zero bits\r
+                          hash=459FFA4269AD1953578D43F40D3738E8\r
+\r
+Set 2, vector#443:\r
+                       message=443 zero bits\r
+                          hash=D2A4ECC48D05C9955B6104E8271AFDD5\r
+\r
+Set 2, vector#444:\r
+                       message=444 zero bits\r
+                          hash=4BD47E176EA2354139EC909067FBD0F0\r
+\r
+Set 2, vector#445:\r
+                       message=445 zero bits\r
+                          hash=6A42A7FC2C37A5C0CB8FEE7A32C41AE8\r
+\r
+Set 2, vector#446:\r
+                       message=446 zero bits\r
+                          hash=F483F7427618B8C22656BC02ACE06037\r
+\r
+Set 2, vector#447:\r
+                       message=447 zero bits\r
+                          hash=8CA4325AA9B1EC3624B3D1E3E5E28762\r
+\r
+Set 2, vector#448:\r
+                       message=448 zero bits\r
+                          hash=E3C4DD21A9171FD39D208EFA09BF7883\r
+\r
+Set 2, vector#449:\r
+                       message=449 zero bits\r
+                          hash=CB71C1B32945F74209FF3DA439272F83\r
+\r
+Set 2, vector#450:\r
+                       message=450 zero bits\r
+                          hash=668333DD8754030C99B2661C1C978E2F\r
+\r
+Set 2, vector#451:\r
+                       message=451 zero bits\r
+                          hash=B2C6830B238A1951FD312A0A09DA2858\r
+\r
+Set 2, vector#452:\r
+                       message=452 zero bits\r
+                          hash=6FB1FCE6D6F0404DF0F05C538C04AC78\r
+\r
+Set 2, vector#453:\r
+                       message=453 zero bits\r
+                          hash=4BF327023F97CCC5F81B4ABDEBF3631E\r
+\r
+Set 2, vector#454:\r
+                       message=454 zero bits\r
+                          hash=0B5E62BD4298DDB5EE64B1485CC77FA3\r
+\r
+Set 2, vector#455:\r
+                       message=455 zero bits\r
+                          hash=83CE7D9E8CEAADCB12817A96AADE7E6C\r
+\r
+Set 2, vector#456:\r
+                       message=456 zero bits\r
+                          hash=AB9D8EF2FFA9145D6C325CEFA41D5D4E\r
+\r
+Set 2, vector#457:\r
+                       message=457 zero bits\r
+                          hash=F41EDD8960BFA61826CA687B0CC7EBE3\r
+\r
+Set 2, vector#458:\r
+                       message=458 zero bits\r
+                          hash=5E5D5E384A198F4F6D67D33696B2799B\r
+\r
+Set 2, vector#459:\r
+                       message=459 zero bits\r
+                          hash=18EB3C7B9EF6275E48E8143CDC4F9423\r
+\r
+Set 2, vector#460:\r
+                       message=460 zero bits\r
+                          hash=A8F41C5A05A5633B59709C018835A331\r
+\r
+Set 2, vector#461:\r
+                       message=461 zero bits\r
+                          hash=B855C9D65B14CE2C9758E41D7AE16F32\r
+\r
+Set 2, vector#462:\r
+                       message=462 zero bits\r
+                          hash=275470CFF7F6C6849BE3693DC0D51453\r
+\r
+Set 2, vector#463:\r
+                       message=463 zero bits\r
+                          hash=2A9EB68F7A4513639706083D3323559D\r
+\r
+Set 2, vector#464:\r
+                       message=464 zero bits\r
+                          hash=2C1CF4F76FA1CECC0C4737CFD8D95118\r
+\r
+Set 2, vector#465:\r
+                       message=465 zero bits\r
+                          hash=1229203CD98E0C492F7260670AD19D9E\r
+\r
+Set 2, vector#466:\r
+                       message=466 zero bits\r
+                          hash=A365EAB1BB7425C81F5EC4053CBA80FE\r
+\r
+Set 2, vector#467:\r
+                       message=467 zero bits\r
+                          hash=971245CDAB394CD2FC78EFF36A5D96C3\r
+\r
+Set 2, vector#468:\r
+                       message=468 zero bits\r
+                          hash=99E23F7E1F7EE096876C99624023526E\r
+\r
+Set 2, vector#469:\r
+                       message=469 zero bits\r
+                          hash=AB5B672CE26D3043C026B0CDA4D7637C\r
+\r
+Set 2, vector#470:\r
+                       message=470 zero bits\r
+                          hash=BD949582FF170038868250CAD0E38E9B\r
+\r
+Set 2, vector#471:\r
+                       message=471 zero bits\r
+                          hash=669427DB6B235CE9813204AE37B737CC\r
+\r
+Set 2, vector#472:\r
+                       message=472 zero bits\r
+                          hash=22031453E4C3A1A0D47B0B97D83D8984\r
+\r
+Set 2, vector#473:\r
+                       message=473 zero bits\r
+                          hash=1134DA5E1CB3557B7602D98B597C0BE0\r
+\r
+Set 2, vector#474:\r
+                       message=474 zero bits\r
+                          hash=10B1E4176E35E97991F52712F0FA7044\r
+\r
+Set 2, vector#475:\r
+                       message=475 zero bits\r
+                          hash=1607F63415D954083A0AD71F28B9A347\r
+\r
+Set 2, vector#476:\r
+                       message=476 zero bits\r
+                          hash=839B0400A267E1F6531D4FE446B729B9\r
+\r
+Set 2, vector#477:\r
+                       message=477 zero bits\r
+                          hash=6E53427FC74C886FA760699CB424881F\r
+\r
+Set 2, vector#478:\r
+                       message=478 zero bits\r
+                          hash=0DE652181D6BEDA5F69BCF2366102DBA\r
+\r
+Set 2, vector#479:\r
+                       message=479 zero bits\r
+                          hash=042A2E058138939EEB4B15D3A50EBC36\r
+\r
+Set 2, vector#480:\r
+                       message=480 zero bits\r
+                          hash=A302A771EE0E3127B8950F0A67D17E49\r
+\r
+Set 2, vector#481:\r
+                       message=481 zero bits\r
+                          hash=C2A318F3E64AC1E33F46C156B22C27D5\r
+\r
+Set 2, vector#482:\r
+                       message=482 zero bits\r
+                          hash=83D589D9973893689477E89716D20B6B\r
+\r
+Set 2, vector#483:\r
+                       message=483 zero bits\r
+                          hash=0E96BBA461A7970635C094C4EB744E96\r
+\r
+Set 2, vector#484:\r
+                       message=484 zero bits\r
+                          hash=DB7C461DA3E8872BF3CF032264C702BE\r
+\r
+Set 2, vector#485:\r
+                       message=485 zero bits\r
+                          hash=EFE373203D7EE7586B44EDE912A1116D\r
+\r
+Set 2, vector#486:\r
+                       message=486 zero bits\r
+                          hash=A2C168F134FEB29706E47B8AA497C068\r
+\r
+Set 2, vector#487:\r
+                       message=487 zero bits\r
+                          hash=5B5D58069403FFB9760454DB6DE2450C\r
+\r
+Set 2, vector#488:\r
+                       message=488 zero bits\r
+                          hash=E2A482A3896964675811DBA0BFDE2F0B\r
+\r
+Set 2, vector#489:\r
+                       message=489 zero bits\r
+                          hash=915C34269371D38B8F5ED90FBEA7FA0C\r
+\r
+Set 2, vector#490:\r
+                       message=490 zero bits\r
+                          hash=9A8A53815D44DE132271CAE69E1DDE84\r
+\r
+Set 2, vector#491:\r
+                       message=491 zero bits\r
+                          hash=F44D3FAFE7030B3E05381C9411C8CFA8\r
+\r
+Set 2, vector#492:\r
+                       message=492 zero bits\r
+                          hash=510CC5192FA74DD257DC9F1041D0F1C8\r
+\r
+Set 2, vector#493:\r
+                       message=493 zero bits\r
+                          hash=0BC0ABD0B328A17F2D67E807C7297C50\r
+\r
+Set 2, vector#494:\r
+                       message=494 zero bits\r
+                          hash=888EDBF176E92D39762F0BD6F4DF2083\r
+\r
+Set 2, vector#495:\r
+                       message=495 zero bits\r
+                          hash=3363D219058214B20720A7F58997812A\r
+\r
+Set 2, vector#496:\r
+                       message=496 zero bits\r
+                          hash=8D7D1020185F9B09CC22E789887BE328\r
+\r
+Set 2, vector#497:\r
+                       message=497 zero bits\r
+                          hash=3E810ACE6E4B84F701060E4AAC85281D\r
+\r
+Set 2, vector#498:\r
+                       message=498 zero bits\r
+                          hash=C173052F48F3D17FBC7AB9ACAD7ECC09\r
+\r
+Set 2, vector#499:\r
+                       message=499 zero bits\r
+                          hash=81FE687F24ECBCF149F62158B295D0AF\r
+\r
+Set 2, vector#500:\r
+                       message=500 zero bits\r
+                          hash=18FA95B60465D579CBE8198C2BFF6204\r
+\r
+Set 2, vector#501:\r
+                       message=501 zero bits\r
+                          hash=AAD8EA0E2AD52F8627A48A1A77659B71\r
+\r
+Set 2, vector#502:\r
+                       message=502 zero bits\r
+                          hash=CD2DB2E907EE97D86C14C9CEB63D8DAB\r
+\r
+Set 2, vector#503:\r
+                       message=503 zero bits\r
+                          hash=AAD10F58B1CA18FA8A16788A993D12A3\r
+\r
+Set 2, vector#504:\r
+                       message=504 zero bits\r
+                          hash=65CECFB980D72FDE57D175D6EC1C3F64\r
+\r
+Set 2, vector#505:\r
+                       message=505 zero bits\r
+                          hash=8F311F52EF6AB18FA9C9A246DB3BB23A\r
+\r
+Set 2, vector#506:\r
+                       message=506 zero bits\r
+                          hash=D6AF18464AA61B9FB7E59C7CD6422022\r
+\r
+Set 2, vector#507:\r
+                       message=507 zero bits\r
+                          hash=F33507C8834FF1DA98EB51E9A79F50BA\r
+\r
+Set 2, vector#508:\r
+                       message=508 zero bits\r
+                          hash=6519FC5E211E969842E0016358F1C1D6\r
+\r
+Set 2, vector#509:\r
+                       message=509 zero bits\r
+                          hash=2CDD0E55DA311A1996F8B862C5A93F80\r
+\r
+Set 2, vector#510:\r
+                       message=510 zero bits\r
+                          hash=5CEE9015096311C53265FD11DA83FEEC\r
+\r
+Set 2, vector#511:\r
+                       message=511 zero bits\r
+                          hash=33A304D6DE34A0C367B2E9D6FB181466\r
+\r
+Set 2, vector#512:\r
+                       message=512 zero bits\r
+                          hash=3B5D3C7D207E37DCEEEDD301E35E2E58\r
+\r
+Set 2, vector#513:\r
+                       message=513 zero bits\r
+                          hash=A6140B57566D956C11A4B3A0FD15FF05\r
+\r
+Set 2, vector#514:\r
+                       message=514 zero bits\r
+                          hash=EC256B8E6B908AC7F35989D0EC1DAE43\r
+\r
+Set 2, vector#515:\r
+                       message=515 zero bits\r
+                          hash=F335974E3B6B62A3CBD264D4C5D886C0\r
+\r
+Set 2, vector#516:\r
+                       message=516 zero bits\r
+                          hash=3F137A0E9C2888F90163E480FAD8B643\r
+\r
+Set 2, vector#517:\r
+                       message=517 zero bits\r
+                          hash=95DA04B5282DEA94C2B4C774EB2CC574\r
+\r
+Set 2, vector#518:\r
+                       message=518 zero bits\r
+                          hash=FCF50431CB0BAAA3CA40BAFA138A4187\r
+\r
+Set 2, vector#519:\r
+                       message=519 zero bits\r
+                          hash=BF04D140C47E0B60803A41B0EB64D42F\r
+\r
+Set 2, vector#520:\r
+                       message=520 zero bits\r
+                          hash=1EF5E829303A139CE967440E0CDCA10C\r
+\r
+Set 2, vector#521:\r
+                       message=521 zero bits\r
+                          hash=CC01634FE72E1687EE42983AB654226A\r
+\r
+Set 2, vector#522:\r
+                       message=522 zero bits\r
+                          hash=083700712F34CF357DE52740869391C0\r
+\r
+Set 2, vector#523:\r
+                       message=523 zero bits\r
+                          hash=1365712A36C4B3EA40EF88325D9F3E6A\r
+\r
+Set 2, vector#524:\r
+                       message=524 zero bits\r
+                          hash=5FE55E2B2260EACA3F74D2F36AEA39A8\r
+\r
+Set 2, vector#525:\r
+                       message=525 zero bits\r
+                          hash=4F5A6F8D73E04987012E50C5031E9E9A\r
+\r
+Set 2, vector#526:\r
+                       message=526 zero bits\r
+                          hash=9DE74548092E90458C899E78BEA833F0\r
+\r
+Set 2, vector#527:\r
+                       message=527 zero bits\r
+                          hash=9F21736A6445121493D82EF3A4C25527\r
+\r
+Set 2, vector#528:\r
+                       message=528 zero bits\r
+                          hash=402535C9F22FF836EA91DD12E8B8847B\r
+\r
+Set 2, vector#529:\r
+                       message=529 zero bits\r
+                          hash=F6C1BA33B859792F9C76C009C819E64C\r
+\r
+Set 2, vector#530:\r
+                       message=530 zero bits\r
+                          hash=494E3C03F7B7CC897F0F845CDDFA19A8\r
+\r
+Set 2, vector#531:\r
+                       message=531 zero bits\r
+                          hash=3C0B3CCAF73150D5A7F0202D1B2F5009\r
+\r
+Set 2, vector#532:\r
+                       message=532 zero bits\r
+                          hash=24650A05CE53B3E2EEEDA4FA226599D0\r
+\r
+Set 2, vector#533:\r
+                       message=533 zero bits\r
+                          hash=17FD5003821248CCD1D581A8925E211C\r
+\r
+Set 2, vector#534:\r
+                       message=534 zero bits\r
+                          hash=F6A55C13DAF22E9178312F4B9B9C5B51\r
+\r
+Set 2, vector#535:\r
+                       message=535 zero bits\r
+                          hash=4D903EEB309412A98621E59A84D400FC\r
+\r
+Set 2, vector#536:\r
+                       message=536 zero bits\r
+                          hash=53553242D57214AAA5726A09B05FE7BC\r
+\r
+Set 2, vector#537:\r
+                       message=537 zero bits\r
+                          hash=94AB647B551AB325075E0EEE89E5A10C\r
+\r
+Set 2, vector#538:\r
+                       message=538 zero bits\r
+                          hash=E8BA33FD9AAEAC02C0023B7AA9D5DB69\r
+\r
+Set 2, vector#539:\r
+                       message=539 zero bits\r
+                          hash=66633EDB3BD542988A7BCBDBB97B89F6\r
+\r
+Set 2, vector#540:\r
+                       message=540 zero bits\r
+                          hash=ED51624462347D1EEE84E73090337DCA\r
+\r
+Set 2, vector#541:\r
+                       message=541 zero bits\r
+                          hash=E426B1144E418242CA23F206CBB56B15\r
+\r
+Set 2, vector#542:\r
+                       message=542 zero bits\r
+                          hash=8394EF6AE5C8343F2E95B008AB984DEB\r
+\r
+Set 2, vector#543:\r
+                       message=543 zero bits\r
+                          hash=21E71A3D07C8773BCED817C469AEC0AB\r
+\r
+Set 2, vector#544:\r
+                       message=544 zero bits\r
+                          hash=7C909B3E2820C8B47ED418753698A6DA\r
+\r
+Set 2, vector#545:\r
+                       message=545 zero bits\r
+                          hash=61FCCF82D5E946EF4F5519460B02F3CF\r
+\r
+Set 2, vector#546:\r
+                       message=546 zero bits\r
+                          hash=33FBA17A6F1FFBD31E0A54F72765844C\r
+\r
+Set 2, vector#547:\r
+                       message=547 zero bits\r
+                          hash=FD3C545473D493838A507F4398841743\r
+\r
+Set 2, vector#548:\r
+                       message=548 zero bits\r
+                          hash=0C975BF3FD0C888A7BC00805B5812C03\r
+\r
+Set 2, vector#549:\r
+                       message=549 zero bits\r
+                          hash=73A4740C2742BAEBECDBE8A7D1F65351\r
+\r
+Set 2, vector#550:\r
+                       message=550 zero bits\r
+                          hash=A3EA62FEF7E204EFEA5AA3A4402596FD\r
+\r
+Set 2, vector#551:\r
+                       message=551 zero bits\r
+                          hash=FF44FE3BDB6B60520FCA521ADEF870A8\r
+\r
+Set 2, vector#552:\r
+                       message=552 zero bits\r
+                          hash=3B8151ACFB469AE41D3F0449058076E1\r
+\r
+Set 2, vector#553:\r
+                       message=553 zero bits\r
+                          hash=0A9BC62F63325FFACCE71E2AA08B9A0C\r
+\r
+Set 2, vector#554:\r
+                       message=554 zero bits\r
+                          hash=1A76A9A36EB825EE115036D3C0E6913B\r
+\r
+Set 2, vector#555:\r
+                       message=555 zero bits\r
+                          hash=A42D85E689EE51E7F3B45E14543FACC8\r
+\r
+Set 2, vector#556:\r
+                       message=556 zero bits\r
+                          hash=B4B651DD64A0999C1FCD1D049F2FE889\r
+\r
+Set 2, vector#557:\r
+                       message=557 zero bits\r
+                          hash=61DAF7F3D82669928C34D7C7FAD5AF07\r
+\r
+Set 2, vector#558:\r
+                       message=558 zero bits\r
+                          hash=ED08AD62D47BCFD0119AD0AA387F05B5\r
+\r
+Set 2, vector#559:\r
+                       message=559 zero bits\r
+                          hash=E2DF751797B572428883FB17BB1A4194\r
+\r
+Set 2, vector#560:\r
+                       message=560 zero bits\r
+                          hash=3287282FA1A1523A294FB018E3679872\r
+\r
+Set 2, vector#561:\r
+                       message=561 zero bits\r
+                          hash=76985D54BE9494064BE5E7080E12617F\r
+\r
+Set 2, vector#562:\r
+                       message=562 zero bits\r
+                          hash=B69592B3C4FF4925C640BB0B8A0D8BB5\r
+\r
+Set 2, vector#563:\r
+                       message=563 zero bits\r
+                          hash=E32A87D63C285E4763BCE5ED20627505\r
+\r
+Set 2, vector#564:\r
+                       message=564 zero bits\r
+                          hash=32644861AF40241F36D2AEBF7A698CFD\r
+\r
+Set 2, vector#565:\r
+                       message=565 zero bits\r
+                          hash=BC921BEFA307CA896470FB7769BEE74C\r
+\r
+Set 2, vector#566:\r
+                       message=566 zero bits\r
+                          hash=B731812D4F88527CD7D7A0A7135B1CA4\r
+\r
+Set 2, vector#567:\r
+                       message=567 zero bits\r
+                          hash=9D5003C61C9B8705F1015448286EE444\r
+\r
+Set 2, vector#568:\r
+                       message=568 zero bits\r
+                          hash=2F0F98115F17F2869C1F59BA804AF077\r
+\r
+Set 2, vector#569:\r
+                       message=569 zero bits\r
+                          hash=D79B7B776927D6756DED0C1BE1401A3B\r
+\r
+Set 2, vector#570:\r
+                       message=570 zero bits\r
+                          hash=0312A361897587928B16DF77BB073CDC\r
+\r
+Set 2, vector#571:\r
+                       message=571 zero bits\r
+                          hash=756FC2D82152B8B10D3064E921CD2424\r
+\r
+Set 2, vector#572:\r
+                       message=572 zero bits\r
+                          hash=16E97A9E5E2DAB0F09D7472C245012CB\r
+\r
+Set 2, vector#573:\r
+                       message=573 zero bits\r
+                          hash=0DCE31C31F6FC81B457A1069CCA565F3\r
+\r
+Set 2, vector#574:\r
+                       message=574 zero bits\r
+                          hash=33507A9107EBCB9753AD0208CED21D91\r
+\r
+Set 2, vector#575:\r
+                       message=575 zero bits\r
+                          hash=914C5DF20EA539A5B38A3F9E4EF58DFC\r
+\r
+Set 2, vector#576:\r
+                       message=576 zero bits\r
+                          hash=AC3B5A19643EE5816A1DF17F2FADAAE3\r
+\r
+Set 2, vector#577:\r
+                       message=577 zero bits\r
+                          hash=E5205A7ABDFBFA673421B58ADD11372C\r
+\r
+Set 2, vector#578:\r
+                       message=578 zero bits\r
+                          hash=470CB4A28ADE162963C8CBA1C28669CB\r
+\r
+Set 2, vector#579:\r
+                       message=579 zero bits\r
+                          hash=5B1139276F31E0CE97C093E29F794676\r
+\r
+Set 2, vector#580:\r
+                       message=580 zero bits\r
+                          hash=9F037F139270E0EE305AAAF3630DCBCA\r
+\r
+Set 2, vector#581:\r
+                       message=581 zero bits\r
+                          hash=EA3C28C21FE8C6EE59851947AFC2DB1D\r
+\r
+Set 2, vector#582:\r
+                       message=582 zero bits\r
+                          hash=F81ED3D2ED0041376E3B444530906454\r
+\r
+Set 2, vector#583:\r
+                       message=583 zero bits\r
+                          hash=F4327078AB8C429FA098E0231FFCFE12\r
+\r
+Set 2, vector#584:\r
+                       message=584 zero bits\r
+                          hash=FA67AB9184F8D574CEF7CD8E0B2F1A78\r
+\r
+Set 2, vector#585:\r
+                       message=585 zero bits\r
+                          hash=85B8D224F3F183359205172A58A893C5\r
+\r
+Set 2, vector#586:\r
+                       message=586 zero bits\r
+                          hash=463129ED3189B33DDB87C7E1B1343374\r
+\r
+Set 2, vector#587:\r
+                       message=587 zero bits\r
+                          hash=92B5CC04473CA3BD75728F53F7FB4402\r
+\r
+Set 2, vector#588:\r
+                       message=588 zero bits\r
+                          hash=95A5C67B6A0022A36630D07676826CC8\r
+\r
+Set 2, vector#589:\r
+                       message=589 zero bits\r
+                          hash=72046E9A6586B777D76397AC6679BD9D\r
+\r
+Set 2, vector#590:\r
+                       message=590 zero bits\r
+                          hash=1BC2F59ECFC92B9378807460FC512774\r
+\r
+Set 2, vector#591:\r
+                       message=591 zero bits\r
+                          hash=54DB4595BA92238D39921AE828913BBE\r
+\r
+Set 2, vector#592:\r
+                       message=592 zero bits\r
+                          hash=AA6672FE9E8426F8DD570C81095E1476\r
+\r
+Set 2, vector#593:\r
+                       message=593 zero bits\r
+                          hash=B94E68F12538276D041F728C553AEB78\r
+\r
+Set 2, vector#594:\r
+                       message=594 zero bits\r
+                          hash=3E0FFB3A37F0EFDB1201E4C0E3F4FD21\r
+\r
+Set 2, vector#595:\r
+                       message=595 zero bits\r
+                          hash=8E542197F956CF963438A0A434D8E84D\r
+\r
+Set 2, vector#596:\r
+                       message=596 zero bits\r
+                          hash=02A41A73FEEE4C255FE96A3E35CC940F\r
+\r
+Set 2, vector#597:\r
+                       message=597 zero bits\r
+                          hash=B92248325DA83E6CD8B0A52B23CC37B9\r
+\r
+Set 2, vector#598:\r
+                       message=598 zero bits\r
+                          hash=16CEC44C44EC706C363B0E8B0EABA1D8\r
+\r
+Set 2, vector#599:\r
+                       message=599 zero bits\r
+                          hash=58D71FAFDAF4C8B16E5D4958B0423D42\r
+\r
+Set 2, vector#600:\r
+                       message=600 zero bits\r
+                          hash=6E36BA0FE61F7C6334305D61299C04CF\r
+\r
+Set 2, vector#601:\r
+                       message=601 zero bits\r
+                          hash=DFA7FD1C1277B717A2B6D16092DD2AA1\r
+\r
+Set 2, vector#602:\r
+                       message=602 zero bits\r
+                          hash=1E9084583D3D12AE5C2A383BCC99232A\r
+\r
+Set 2, vector#603:\r
+                       message=603 zero bits\r
+                          hash=91A9E5E15009AD3999BAFF0D4B694A08\r
+\r
+Set 2, vector#604:\r
+                       message=604 zero bits\r
+                          hash=A804A9123D2EE509EA0812284935DC46\r
+\r
+Set 2, vector#605:\r
+                       message=605 zero bits\r
+                          hash=E9E3C7393672287BAD8BA5E0E3A63047\r
+\r
+Set 2, vector#606:\r
+                       message=606 zero bits\r
+                          hash=1630168BB4B39DB88EF2462CED263397\r
+\r
+Set 2, vector#607:\r
+                       message=607 zero bits\r
+                          hash=661BFB6BCB0FFDFE6EFDFDF8D824382D\r
+\r
+Set 2, vector#608:\r
+                       message=608 zero bits\r
+                          hash=E6B62B76FB2EB2A0E0ADDE0C067DA680\r
+\r
+Set 2, vector#609:\r
+                       message=609 zero bits\r
+                          hash=72810AE07FE917F6E3F153AD1E2D612E\r
+\r
+Set 2, vector#610:\r
+                       message=610 zero bits\r
+                          hash=3594D462F2313FB7AB3B1403767CDD36\r
+\r
+Set 2, vector#611:\r
+                       message=611 zero bits\r
+                          hash=52431FF6049CCF4D15A2C7234C9A89F3\r
+\r
+Set 2, vector#612:\r
+                       message=612 zero bits\r
+                          hash=98D44D201AD5E8AEF1035944922979F3\r
+\r
+Set 2, vector#613:\r
+                       message=613 zero bits\r
+                          hash=B5F5274FD6E5CE90F25029533E7B82DD\r
+\r
+Set 2, vector#614:\r
+                       message=614 zero bits\r
+                          hash=F7DD2567759C0899B80284F8384B9FF3\r
+\r
+Set 2, vector#615:\r
+                       message=615 zero bits\r
+                          hash=7CB98022372400DCB1231A23B3673F5B\r
+\r
+Set 2, vector#616:\r
+                       message=616 zero bits\r
+                          hash=2B62A30906A2B8BF3B68ABD2EF9D105B\r
+\r
+Set 2, vector#617:\r
+                       message=617 zero bits\r
+                          hash=2749D604B471507EE13F9BA1D4CB4178\r
+\r
+Set 2, vector#618:\r
+                       message=618 zero bits\r
+                          hash=DE7F21D6D895B44FE4411A2020A326B3\r
+\r
+Set 2, vector#619:\r
+                       message=619 zero bits\r
+                          hash=7040B11296655613A79ED9B15950F4CF\r
+\r
+Set 2, vector#620:\r
+                       message=620 zero bits\r
+                          hash=1AB144B5AB709B0E3424FE84F877FC91\r
+\r
+Set 2, vector#621:\r
+                       message=621 zero bits\r
+                          hash=FEC07707D8425EB4B97CD2F3CC41DD59\r
+\r
+Set 2, vector#622:\r
+                       message=622 zero bits\r
+                          hash=B527C851AE9411C679FE806569211CF2\r
+\r
+Set 2, vector#623:\r
+                       message=623 zero bits\r
+                          hash=4427F5939B2B4A9D427CFC8016B7A976\r
+\r
+Set 2, vector#624:\r
+                       message=624 zero bits\r
+                          hash=B79ABF5C5F2244956C7246E9112595CE\r
+\r
+Set 2, vector#625:\r
+                       message=625 zero bits\r
+                          hash=C6A839FE592B4688A3E489CB747993E6\r
+\r
+Set 2, vector#626:\r
+                       message=626 zero bits\r
+                          hash=C73BC57828C68CEA57A4C291A5E42616\r
+\r
+Set 2, vector#627:\r
+                       message=627 zero bits\r
+                          hash=BC69BE1B5F15B03713B73E966FB9FC2F\r
+\r
+Set 2, vector#628:\r
+                       message=628 zero bits\r
+                          hash=A8E908CDE533E2191CAC03D9E8951E02\r
+\r
+Set 2, vector#629:\r
+                       message=629 zero bits\r
+                          hash=E8AE2DB7F00867E9C80438A92D15F24A\r
+\r
+Set 2, vector#630:\r
+                       message=630 zero bits\r
+                          hash=85303BD93E95711FBB82313528D3A072\r
+\r
+Set 2, vector#631:\r
+                       message=631 zero bits\r
+                          hash=57C0CA40ADF195563112736EC4D962FF\r
+\r
+Set 2, vector#632:\r
+                       message=632 zero bits\r
+                          hash=55712F2F2F21A8321B9EE45D40B89091\r
+\r
+Set 2, vector#633:\r
+                       message=633 zero bits\r
+                          hash=AEA969DA5EA58774E3A112757D4C3556\r
+\r
+Set 2, vector#634:\r
+                       message=634 zero bits\r
+                          hash=0B776070E20C5B45556C3D365F2E2A4B\r
+\r
+Set 2, vector#635:\r
+                       message=635 zero bits\r
+                          hash=7AA71D202140BF6028139ED760FE2A50\r
+\r
+Set 2, vector#636:\r
+                       message=636 zero bits\r
+                          hash=DCD63F8B8E4DA2D6F40A2C0639F24169\r
+\r
+Set 2, vector#637:\r
+                       message=637 zero bits\r
+                          hash=D629AD7E4041352C4C0305B12335B159\r
+\r
+Set 2, vector#638:\r
+                       message=638 zero bits\r
+                          hash=FBB23F27446249043A8D6F804386E99B\r
+\r
+Set 2, vector#639:\r
+                       message=639 zero bits\r
+                          hash=56F13C326ED093AFEBC0E5BE10362778\r
+\r
+Set 2, vector#640:\r
+                       message=640 zero bits\r
+                          hash=BBF7C6077962A7C28114DBD10BE947CD\r
+\r
+Set 2, vector#641:\r
+                       message=641 zero bits\r
+                          hash=B7A63C7B5075A7E2411203F360035DAC\r
+\r
+Set 2, vector#642:\r
+                       message=642 zero bits\r
+                          hash=84A9791DF6AD38264FFD569FFD2B4A17\r
+\r
+Set 2, vector#643:\r
+                       message=643 zero bits\r
+                          hash=3CF23101118B199677A7C1E2F8003593\r
+\r
+Set 2, vector#644:\r
+                       message=644 zero bits\r
+                          hash=BC066463E297D5D77C11FB4546CA71F8\r
+\r
+Set 2, vector#645:\r
+                       message=645 zero bits\r
+                          hash=191D176FC2B0519A6B8E59FB11E7FA5D\r
+\r
+Set 2, vector#646:\r
+                       message=646 zero bits\r
+                          hash=097FA71003D1CB607E0B902B4734D14E\r
+\r
+Set 2, vector#647:\r
+                       message=647 zero bits\r
+                          hash=51668258D99F2DD517B6EBF7D116480D\r
+\r
+Set 2, vector#648:\r
+                       message=648 zero bits\r
+                          hash=9546C10433C45BFB9947449DD8D304DE\r
+\r
+Set 2, vector#649:\r
+                       message=649 zero bits\r
+                          hash=5F990B44C6C17B8826F66B5735A58CA7\r
+\r
+Set 2, vector#650:\r
+                       message=650 zero bits\r
+                          hash=33CFDE37D73BFBF4A123887DC9755192\r
+\r
+Set 2, vector#651:\r
+                       message=651 zero bits\r
+                          hash=BECD814E4BCE843239F9F6F31342264A\r
+\r
+Set 2, vector#652:\r
+                       message=652 zero bits\r
+                          hash=63B2873FD2676B402ECD8F4F8207DFF6\r
+\r
+Set 2, vector#653:\r
+                       message=653 zero bits\r
+                          hash=D2CD47A3746E70D15614381EB72C8CA3\r
+\r
+Set 2, vector#654:\r
+                       message=654 zero bits\r
+                          hash=AF0DFE52AB4C98F9451A2C9B33F68DCB\r
+\r
+Set 2, vector#655:\r
+                       message=655 zero bits\r
+                          hash=D3845D847958BE58429C8395E944DEA9\r
+\r
+Set 2, vector#656:\r
+                       message=656 zero bits\r
+                          hash=516C0567E329930B320357809A0C9149\r
+\r
+Set 2, vector#657:\r
+                       message=657 zero bits\r
+                          hash=1D51D039B55CEDE15FE81B3182F458D8\r
+\r
+Set 2, vector#658:\r
+                       message=658 zero bits\r
+                          hash=FE184A019360E3853E8FEDE68A8CEEFD\r
+\r
+Set 2, vector#659:\r
+                       message=659 zero bits\r
+                          hash=2375A926E7D394D1B31448D93859E42B\r
+\r
+Set 2, vector#660:\r
+                       message=660 zero bits\r
+                          hash=A03049B0773D8483E3495F4A293B1179\r
+\r
+Set 2, vector#661:\r
+                       message=661 zero bits\r
+                          hash=AF5404823E0F25DF2C930ED8932270D3\r
+\r
+Set 2, vector#662:\r
+                       message=662 zero bits\r
+                          hash=15104505F6F8681C5054942CAC74F533\r
+\r
+Set 2, vector#663:\r
+                       message=663 zero bits\r
+                          hash=3CA34F36E564BB8F1F2EE8055266964C\r
+\r
+Set 2, vector#664:\r
+                       message=664 zero bits\r
+                          hash=0EFCE63CF4C085888A2772125DFE7AAA\r
+\r
+Set 2, vector#665:\r
+                       message=665 zero bits\r
+                          hash=CE347BA9D94E7A33932E84337E399089\r
+\r
+Set 2, vector#666:\r
+                       message=666 zero bits\r
+                          hash=A1690F2DD28599D3667F0D56344C02CF\r
+\r
+Set 2, vector#667:\r
+                       message=667 zero bits\r
+                          hash=D63BE853E6D2016ED79EA136C99F48A4\r
+\r
+Set 2, vector#668:\r
+                       message=668 zero bits\r
+                          hash=67D159316232EC454FB91A8E37D13E91\r
+\r
+Set 2, vector#669:\r
+                       message=669 zero bits\r
+                          hash=78B68214820448D6088ED85F64FAAF48\r
+\r
+Set 2, vector#670:\r
+                       message=670 zero bits\r
+                          hash=270988AB57D78852105E6B6A7B1B86C2\r
+\r
+Set 2, vector#671:\r
+                       message=671 zero bits\r
+                          hash=8B456834D4328988E5C69B0275FE849B\r
+\r
+Set 2, vector#672:\r
+                       message=672 zero bits\r
+                          hash=3561C0DFFDB90248FA1FC2D4FB86F08A\r
+\r
+Set 2, vector#673:\r
+                       message=673 zero bits\r
+                          hash=5966B8551EBA78FD542280AE4EDA2293\r
+\r
+Set 2, vector#674:\r
+                       message=674 zero bits\r
+                          hash=D2B73DB913A4D97E6EE0A535275AE747\r
+\r
+Set 2, vector#675:\r
+                       message=675 zero bits\r
+                          hash=7EED0DF065FB309AD1890DAEE56B5B59\r
+\r
+Set 2, vector#676:\r
+                       message=676 zero bits\r
+                          hash=C71A618A284A8CF4E96C88929AB868DC\r
+\r
+Set 2, vector#677:\r
+                       message=677 zero bits\r
+                          hash=2680CABF10E88C366AC11D06B6AC6A41\r
+\r
+Set 2, vector#678:\r
+                       message=678 zero bits\r
+                          hash=0EF4BB0DB62268E78A31A48E210E92C5\r
+\r
+Set 2, vector#679:\r
+                       message=679 zero bits\r
+                          hash=FF810E615A49A8DD6AA57952614632A6\r
+\r
+Set 2, vector#680:\r
+                       message=680 zero bits\r
+                          hash=EEB20C9BC165677800B6DC7621A50CC9\r
+\r
+Set 2, vector#681:\r
+                       message=681 zero bits\r
+                          hash=D0A67F50B7CC7B8F6F5D8BCE5A139CDB\r
+\r
+Set 2, vector#682:\r
+                       message=682 zero bits\r
+                          hash=9B6F3EDE897C27D99F88E293F39E78FB\r
+\r
+Set 2, vector#683:\r
+                       message=683 zero bits\r
+                          hash=F10E1B5D8A1E843BBDEBA73E573609AB\r
+\r
+Set 2, vector#684:\r
+                       message=684 zero bits\r
+                          hash=464DBC052600DBA34C94084B0EA2F392\r
+\r
+Set 2, vector#685:\r
+                       message=685 zero bits\r
+                          hash=704745D8050CA28EDD0B86C5A03F04AD\r
+\r
+Set 2, vector#686:\r
+                       message=686 zero bits\r
+                          hash=0BCB1288DB94FC29EDD88AC473FCD296\r
+\r
+Set 2, vector#687:\r
+                       message=687 zero bits\r
+                          hash=4622F26B8ED6FA06BAEF71D975C29CA7\r
+\r
+Set 2, vector#688:\r
+                       message=688 zero bits\r
+                          hash=BB1EF3DDDA35B590D4AA204D0493E921\r
+\r
+Set 2, vector#689:\r
+                       message=689 zero bits\r
+                          hash=A21F4A4420C829E598D73A0D08C1A53D\r
+\r
+Set 2, vector#690:\r
+                       message=690 zero bits\r
+                          hash=C4DD4309834D5B7D8CED4B56AD03A37E\r
+\r
+Set 2, vector#691:\r
+                       message=691 zero bits\r
+                          hash=C0FC490F0871A52E163D92F10727AB8F\r
+\r
+Set 2, vector#692:\r
+                       message=692 zero bits\r
+                          hash=C68F5B6E7BD749F6241D534CCE556F26\r
+\r
+Set 2, vector#693:\r
+                       message=693 zero bits\r
+                          hash=77280F3AAB4E5B611164739010547800\r
+\r
+Set 2, vector#694:\r
+                       message=694 zero bits\r
+                          hash=6A6ECB4134F9385B27DB1225B485086E\r
+\r
+Set 2, vector#695:\r
+                       message=695 zero bits\r
+                          hash=992AEF7295F5818813CE64844357D723\r
+\r
+Set 2, vector#696:\r
+                       message=696 zero bits\r
+                          hash=EECAE68E4F9EE6F037742AAC8F36CC1B\r
+\r
+Set 2, vector#697:\r
+                       message=697 zero bits\r
+                          hash=58CF9DED17CC58A7700BB9D270B15A52\r
+\r
+Set 2, vector#698:\r
+                       message=698 zero bits\r
+                          hash=BB448E6F9895C30B4A82B3F8AE017BEC\r
+\r
+Set 2, vector#699:\r
+                       message=699 zero bits\r
+                          hash=568777DB8BD0EC3A4DAD6A44E2AD6950\r
+\r
+Set 2, vector#700:\r
+                       message=700 zero bits\r
+                          hash=7BBA8F3F3C642D959339ACF385EA5260\r
+\r
+Set 2, vector#701:\r
+                       message=701 zero bits\r
+                          hash=EB572BDBC33997315F9362C79276BFDB\r
+\r
+Set 2, vector#702:\r
+                       message=702 zero bits\r
+                          hash=872207EF9DE60691832C4389DBA1F9DA\r
+\r
+Set 2, vector#703:\r
+                       message=703 zero bits\r
+                          hash=CFA2051C35D885F0527ED881CDB2E012\r
+\r
+Set 2, vector#704:\r
+                       message=704 zero bits\r
+                          hash=F2331152449C622545360F18DFDF0E2D\r
+\r
+Set 2, vector#705:\r
+                       message=705 zero bits\r
+                          hash=299F643AD5FAB4C693D7443E09EE66E4\r
+\r
+Set 2, vector#706:\r
+                       message=706 zero bits\r
+                          hash=66AC207DA272F1B2B91D92D33EEF0C83\r
+\r
+Set 2, vector#707:\r
+                       message=707 zero bits\r
+                          hash=A68D2270234ADF5BCA97B1930FEF77E9\r
+\r
+Set 2, vector#708:\r
+                       message=708 zero bits\r
+                          hash=7D810473F1B4C0FC0B1CBC738EA58700\r
+\r
+Set 2, vector#709:\r
+                       message=709 zero bits\r
+                          hash=56DAE3553FD72AE239FD5BDB5B95864D\r
+\r
+Set 2, vector#710:\r
+                       message=710 zero bits\r
+                          hash=6F8CB26BEEA33ED6FDB0D66468C56895\r
+\r
+Set 2, vector#711:\r
+                       message=711 zero bits\r
+                          hash=EB1562C0686C3551997D8980E70FC680\r
+\r
+Set 2, vector#712:\r
+                       message=712 zero bits\r
+                          hash=335A7C8E767A2DD0ECF3460EAABB0BBD\r
+\r
+Set 2, vector#713:\r
+                       message=713 zero bits\r
+                          hash=7C88ECDB0F7B763DF23E976A30547362\r
+\r
+Set 2, vector#714:\r
+                       message=714 zero bits\r
+                          hash=3EE39F62C092FC9C19AD08FA2D5634E7\r
+\r
+Set 2, vector#715:\r
+                       message=715 zero bits\r
+                          hash=C2A5DD81F9A0F455EDFA5905CD0EC57C\r
+\r
+Set 2, vector#716:\r
+                       message=716 zero bits\r
+                          hash=8D09FB80FEECFEDEFD4E7675554DD91D\r
+\r
+Set 2, vector#717:\r
+                       message=717 zero bits\r
+                          hash=E2A2ADE4791C6CBDCBCA91EF577C612F\r
+\r
+Set 2, vector#718:\r
+                       message=718 zero bits\r
+                          hash=B0EE0FDC62FCF2E179B737CB2239CABA\r
+\r
+Set 2, vector#719:\r
+                       message=719 zero bits\r
+                          hash=68A62DF85C4E7924DBBF6071C014B291\r
+\r
+Set 2, vector#720:\r
+                       message=720 zero bits\r
+                          hash=3277CA99DFE4A704DF82C63AC9E876FD\r
+\r
+Set 2, vector#721:\r
+                       message=721 zero bits\r
+                          hash=9FA3ADEAEBD725665FCA718E5F928736\r
+\r
+Set 2, vector#722:\r
+                       message=722 zero bits\r
+                          hash=6D8803B2A1833F4432866E0C08ABFB0F\r
+\r
+Set 2, vector#723:\r
+                       message=723 zero bits\r
+                          hash=5AC8661C27D3BCC79CA066DBD356453C\r
+\r
+Set 2, vector#724:\r
+                       message=724 zero bits\r
+                          hash=210E8AA1862D537C270DDD108D042CAB\r
+\r
+Set 2, vector#725:\r
+                       message=725 zero bits\r
+                          hash=EDE58220C773D15489430FE4570922FA\r
+\r
+Set 2, vector#726:\r
+                       message=726 zero bits\r
+                          hash=263BAC210C8109CA22170E1C6C03AEDB\r
+\r
+Set 2, vector#727:\r
+                       message=727 zero bits\r
+                          hash=7BF981647CCCE8D1B439F71A20B30A64\r
+\r
+Set 2, vector#728:\r
+                       message=728 zero bits\r
+                          hash=67130D31B6048171A64ED87D36022A6E\r
+\r
+Set 2, vector#729:\r
+                       message=729 zero bits\r
+                          hash=052ECE0F1D49378D0ED040ADC1748163\r
+\r
+Set 2, vector#730:\r
+                       message=730 zero bits\r
+                          hash=A143A45A440D8600C9DB258C2B78D006\r
+\r
+Set 2, vector#731:\r
+                       message=731 zero bits\r
+                          hash=4BC7EE611031AD2223C2164774BD0925\r
+\r
+Set 2, vector#732:\r
+                       message=732 zero bits\r
+                          hash=B4B07FCB5C0FB5A7BFCE1C7CF6A652B5\r
+\r
+Set 2, vector#733:\r
+                       message=733 zero bits\r
+                          hash=51F5103095FB1E3E2D8E0226BD070FD6\r
+\r
+Set 2, vector#734:\r
+                       message=734 zero bits\r
+                          hash=F3067BFBEB463D4D176727505731B70A\r
+\r
+Set 2, vector#735:\r
+                       message=735 zero bits\r
+                          hash=C9B4AA4E7A14E85BF47C4D1C488B47F1\r
+\r
+Set 2, vector#736:\r
+                       message=736 zero bits\r
+                          hash=534D78034B774B6266F2189576F8C6E3\r
+\r
+Set 2, vector#737:\r
+                       message=737 zero bits\r
+                          hash=1E7700C29FE15109ACAD078345B9AAAA\r
+\r
+Set 2, vector#738:\r
+                       message=738 zero bits\r
+                          hash=D3FE2DCE1591A5AEAF54118C88AFCD6B\r
+\r
+Set 2, vector#739:\r
+                       message=739 zero bits\r
+                          hash=53F88BE9E772C3F68EFBBB5FC59377F4\r
+\r
+Set 2, vector#740:\r
+                       message=740 zero bits\r
+                          hash=02D5DCBE62473E83D28DCFB60D41B9C4\r
+\r
+Set 2, vector#741:\r
+                       message=741 zero bits\r
+                          hash=86CB9BCBB2B90CF440EBA166BC8A11EF\r
+\r
+Set 2, vector#742:\r
+                       message=742 zero bits\r
+                          hash=00984F46F5EB161A229CA227E2428EA1\r
+\r
+Set 2, vector#743:\r
+                       message=743 zero bits\r
+                          hash=7B7ED0A01C7C98E0A584676168A49B1A\r
+\r
+Set 2, vector#744:\r
+                       message=744 zero bits\r
+                          hash=90C805BCB9FA376AACFB38D598EC7BB6\r
+\r
+Set 2, vector#745:\r
+                       message=745 zero bits\r
+                          hash=8483020F87D9AD4319DCD10615106E71\r
+\r
+Set 2, vector#746:\r
+                       message=746 zero bits\r
+                          hash=8444620CF80778B3BE8504D8054D0195\r
+\r
+Set 2, vector#747:\r
+                       message=747 zero bits\r
+                          hash=3A19F6EFA943BA5101A624A4C22C2E71\r
+\r
+Set 2, vector#748:\r
+                       message=748 zero bits\r
+                          hash=669EE665213EB0E263A5BDC7808745ED\r
+\r
+Set 2, vector#749:\r
+                       message=749 zero bits\r
+                          hash=8FED836D86A4E71CCA7C49FB1E174CAB\r
+\r
+Set 2, vector#750:\r
+                       message=750 zero bits\r
+                          hash=4DA9A1765B1438016507C03BDE29B224\r
+\r
+Set 2, vector#751:\r
+                       message=751 zero bits\r
+                          hash=5AA0B9F7ABE61E75F82DF8408273334F\r
+\r
+Set 2, vector#752:\r
+                       message=752 zero bits\r
+                          hash=363C2E67F9E853FBC532D0B6404DB30A\r
+\r
+Set 2, vector#753:\r
+                       message=753 zero bits\r
+                          hash=88F4DD769E65288B79BB6D7B3C7A8901\r
+\r
+Set 2, vector#754:\r
+                       message=754 zero bits\r
+                          hash=9EA86CE51B42905CB106AC010FE80F2D\r
+\r
+Set 2, vector#755:\r
+                       message=755 zero bits\r
+                          hash=95B039D9D41FD53EF1D81A5D42C74BD1\r
+\r
+Set 2, vector#756:\r
+                       message=756 zero bits\r
+                          hash=BA5DAC8846AC4807405532B6D66FE210\r
+\r
+Set 2, vector#757:\r
+                       message=757 zero bits\r
+                          hash=355BFDFAD498517887F533B909400219\r
+\r
+Set 2, vector#758:\r
+                       message=758 zero bits\r
+                          hash=9087F69A7D2125381B8E490DB623B17B\r
+\r
+Set 2, vector#759:\r
+                       message=759 zero bits\r
+                          hash=8555B4CC2C15D2DC2EB7BF343E885533\r
+\r
+Set 2, vector#760:\r
+                       message=760 zero bits\r
+                          hash=0A1DFC18C8C8381F05F8AD9D2B4509B5\r
+\r
+Set 2, vector#761:\r
+                       message=761 zero bits\r
+                          hash=AE0106BBE8EE7554E32E80E2B57CCA82\r
+\r
+Set 2, vector#762:\r
+                       message=762 zero bits\r
+                          hash=6DB6D7E05B75A8A7BA96D184EFFF0124\r
+\r
+Set 2, vector#763:\r
+                       message=763 zero bits\r
+                          hash=FF8BFF9AEA599FE67EB93D0C0B53C6AF\r
+\r
+Set 2, vector#764:\r
+                       message=764 zero bits\r
+                          hash=9B140186101F1443453FFAD77FBFF36D\r
+\r
+Set 2, vector#765:\r
+                       message=765 zero bits\r
+                          hash=FBE741340C09E966E2437AB18A32629D\r
+\r
+Set 2, vector#766:\r
+                       message=766 zero bits\r
+                          hash=B5B8E225769FF277C2C9C650183C11DD\r
+\r
+Set 2, vector#767:\r
+                       message=767 zero bits\r
+                          hash=F0AF90CDFA9FC2F1B6DA9CBB6B567922\r
+\r
+Set 2, vector#768:\r
+                       message=768 zero bits\r
+                          hash=ACEB486E7E4B2D2F1C5F2328B503502B\r
+\r
+Set 2, vector#769:\r
+                       message=769 zero bits\r
+                          hash=1E210E83F649639921F92C88938D5542\r
+\r
+Set 2, vector#770:\r
+                       message=770 zero bits\r
+                          hash=692552DCEF144E1537CAFA9E919239A8\r
+\r
+Set 2, vector#771:\r
+                       message=771 zero bits\r
+                          hash=B6BFB2A5057CBEF3AFCD66633B8594D4\r
+\r
+Set 2, vector#772:\r
+                       message=772 zero bits\r
+                          hash=3C6D48166CEF5FEE14BD2757A4924BC2\r
+\r
+Set 2, vector#773:\r
+                       message=773 zero bits\r
+                          hash=C861075B049BDEFE66185E8BCADB7A51\r
+\r
+Set 2, vector#774:\r
+                       message=774 zero bits\r
+                          hash=7BE5C9C13B8FE2C2DF446E5A773D0E73\r
+\r
+Set 2, vector#775:\r
+                       message=775 zero bits\r
+                          hash=DFDCBEF8FAABABC8EA42CECD3C9FC608\r
+\r
+Set 2, vector#776:\r
+                       message=776 zero bits\r
+                          hash=9E0573ECB4A0800788A3AA64AD731BBC\r
+\r
+Set 2, vector#777:\r
+                       message=777 zero bits\r
+                          hash=58079149366FEB19BE420802D23183BB\r
+\r
+Set 2, vector#778:\r
+                       message=778 zero bits\r
+                          hash=C93442C30B670303D1ACEC1FA95ED4E9\r
+\r
+Set 2, vector#779:\r
+                       message=779 zero bits\r
+                          hash=17EFC6C1D66C9F4B78FFB76EB45E1609\r
+\r
+Set 2, vector#780:\r
+                       message=780 zero bits\r
+                          hash=1DDA7C9121C5BD75989479780CDEE8B5\r
+\r
+Set 2, vector#781:\r
+                       message=781 zero bits\r
+                          hash=ABF0BDB3C6DD458962B7F90D17965552\r
+\r
+Set 2, vector#782:\r
+                       message=782 zero bits\r
+                          hash=BC914414B9C9D0B7C4638DE63EFA7743\r
+\r
+Set 2, vector#783:\r
+                       message=783 zero bits\r
+                          hash=44F16D5F5128B7C26FC609392145B792\r
+\r
+Set 2, vector#784:\r
+                       message=784 zero bits\r
+                          hash=33AA8CB471BA9DEE750C069BCA801127\r
+\r
+Set 2, vector#785:\r
+                       message=785 zero bits\r
+                          hash=BE0D9157906FC79539BD896262664E98\r
+\r
+Set 2, vector#786:\r
+                       message=786 zero bits\r
+                          hash=4A50833B5AEAD12D65B7ECEFAD430558\r
+\r
+Set 2, vector#787:\r
+                       message=787 zero bits\r
+                          hash=7DA74CAC21D57A7A049220AAC9B8ADE1\r
+\r
+Set 2, vector#788:\r
+                       message=788 zero bits\r
+                          hash=5B74279447CEAD5B8469411BBAAD9D5A\r
+\r
+Set 2, vector#789:\r
+                       message=789 zero bits\r
+                          hash=CF1B95C919AA1383F2F509611F4A6DF4\r
+\r
+Set 2, vector#790:\r
+                       message=790 zero bits\r
+                          hash=6C98290EB4FB505DCE1411358729D3E1\r
+\r
+Set 2, vector#791:\r
+                       message=791 zero bits\r
+                          hash=EAC786F3C8CD2450AFD832747D5468FC\r
+\r
+Set 2, vector#792:\r
+                       message=792 zero bits\r
+                          hash=FA8715078D45101200A6E2BF7321AA04\r
+\r
+Set 2, vector#793:\r
+                       message=793 zero bits\r
+                          hash=58F92368B16E9164C792C643ED83DB03\r
+\r
+Set 2, vector#794:\r
+                       message=794 zero bits\r
+                          hash=73184A7EFB43212D888DB32342D52306\r
+\r
+Set 2, vector#795:\r
+                       message=795 zero bits\r
+                          hash=252F03DA0C9E3C36169528D3B4E4244F\r
+\r
+Set 2, vector#796:\r
+                       message=796 zero bits\r
+                          hash=6CB5910268219BB4A1F1924DEC61F7E0\r
+\r
+Set 2, vector#797:\r
+                       message=797 zero bits\r
+                          hash=2A6064635BC441DF1E658D89F911DA34\r
+\r
+Set 2, vector#798:\r
+                       message=798 zero bits\r
+                          hash=A586F3BB6D4C095608D298AD35EC0747\r
+\r
+Set 2, vector#799:\r
+                       message=799 zero bits\r
+                          hash=6894571883994BDADA44DE460940AABF\r
+\r
+Set 2, vector#800:\r
+                       message=800 zero bits\r
+                          hash=6D0BB00954CEB7FBEE436BB55A8397A9\r
+\r
+Set 2, vector#801:\r
+                       message=801 zero bits\r
+                          hash=FE03DA83EDBCC44492E258FD4C6E3D95\r
+\r
+Set 2, vector#802:\r
+                       message=802 zero bits\r
+                          hash=302CD0C621C43B2730DBEBC08837BDC2\r
+\r
+Set 2, vector#803:\r
+                       message=803 zero bits\r
+                          hash=07145B0882C5205A09043382DFAE4F24\r
+\r
+Set 2, vector#804:\r
+                       message=804 zero bits\r
+                          hash=609A91E11075C20892A411FF4F415A5C\r
+\r
+Set 2, vector#805:\r
+                       message=805 zero bits\r
+                          hash=6440D61BBB689A3CD2863D16258715EB\r
+\r
+Set 2, vector#806:\r
+                       message=806 zero bits\r
+                          hash=F9C6CDD28D3ADE62ED9529733BA97944\r
+\r
+Set 2, vector#807:\r
+                       message=807 zero bits\r
+                          hash=3822E2D7737B67F2FA5B86553C9D53AF\r
+\r
+Set 2, vector#808:\r
+                       message=808 zero bits\r
+                          hash=22577911E88AF39F79409E6DE8EED4D9\r
+\r
+Set 2, vector#809:\r
+                       message=809 zero bits\r
+                          hash=CE1C7777325E894FC122DB7340B74509\r
+\r
+Set 2, vector#810:\r
+                       message=810 zero bits\r
+                          hash=3D088C81201763A97D68DE786F2D7AE4\r
+\r
+Set 2, vector#811:\r
+                       message=811 zero bits\r
+                          hash=71901B0612B27ECF046005AA6D21C271\r
+\r
+Set 2, vector#812:\r
+                       message=812 zero bits\r
+                          hash=E28E230D30E365BF78971B0917348303\r
+\r
+Set 2, vector#813:\r
+                       message=813 zero bits\r
+                          hash=A9243A1ACF0BF785C2143C3E176F9C58\r
+\r
+Set 2, vector#814:\r
+                       message=814 zero bits\r
+                          hash=F9E5D359BBFAC32B725A9B71A764114B\r
+\r
+Set 2, vector#815:\r
+                       message=815 zero bits\r
+                          hash=B83AB14602D023135055688373ED1214\r
+\r
+Set 2, vector#816:\r
+                       message=816 zero bits\r
+                          hash=F5E502B5576C2CEB07F0F03AFDEDE1F7\r
+\r
+Set 2, vector#817:\r
+                       message=817 zero bits\r
+                          hash=CA982EF1D9E6C25EEE915B4429330F89\r
+\r
+Set 2, vector#818:\r
+                       message=818 zero bits\r
+                          hash=3A4DD06175BD80C2DB56C03B0CF91B6F\r
+\r
+Set 2, vector#819:\r
+                       message=819 zero bits\r
+                          hash=2D0E135F1F85742725FDD6EBF9064B6C\r
+\r
+Set 2, vector#820:\r
+                       message=820 zero bits\r
+                          hash=B522B3D82D65EAD26299722EEA2A7C7B\r
+\r
+Set 2, vector#821:\r
+                       message=821 zero bits\r
+                          hash=AC608E3FC997F0C20108B6A4CB5369AF\r
+\r
+Set 2, vector#822:\r
+                       message=822 zero bits\r
+                          hash=29906D855DE1D77D344E9526BCB16BD6\r
+\r
+Set 2, vector#823:\r
+                       message=823 zero bits\r
+                          hash=924153067F9EF84ABEBBB33AE42426DB\r
+\r
+Set 2, vector#824:\r
+                       message=824 zero bits\r
+                          hash=213E635DAC590095B5681A944A5713A2\r
+\r
+Set 2, vector#825:\r
+                       message=825 zero bits\r
+                          hash=BD8193704A4938ED98AB586208DE478F\r
+\r
+Set 2, vector#826:\r
+                       message=826 zero bits\r
+                          hash=2E1F0B9E41C348EB0DA99DF5667F27C8\r
+\r
+Set 2, vector#827:\r
+                       message=827 zero bits\r
+                          hash=6DFF532A65D8BFBC31CA72DD8A1FAD56\r
+\r
+Set 2, vector#828:\r
+                       message=828 zero bits\r
+                          hash=C0FFDDF8EB84D9E177AFA9450E315006\r
+\r
+Set 2, vector#829:\r
+                       message=829 zero bits\r
+                          hash=9CB5F3250AD3F34D6994B0D4332906F7\r
+\r
+Set 2, vector#830:\r
+                       message=830 zero bits\r
+                          hash=ED6217AC43B3A339BB9670F04FDD42DB\r
+\r
+Set 2, vector#831:\r
+                       message=831 zero bits\r
+                          hash=687BBB8445191A64CCEEC72ECDF7998F\r
+\r
+Set 2, vector#832:\r
+                       message=832 zero bits\r
+                          hash=3189DE1FF1F8AFED0F70E352DFCD2ABB\r
+\r
+Set 2, vector#833:\r
+                       message=833 zero bits\r
+                          hash=D73CA7D6139850E92EF17C9B63414D3F\r
+\r
+Set 2, vector#834:\r
+                       message=834 zero bits\r
+                          hash=292C6A02EAFC56625ECD8310193FC285\r
+\r
+Set 2, vector#835:\r
+                       message=835 zero bits\r
+                          hash=C052DD8D3EED56A57655DA04CD7CC2F9\r
+\r
+Set 2, vector#836:\r
+                       message=836 zero bits\r
+                          hash=45FF77A86FE70EEBCD90FC47CC9E8680\r
+\r
+Set 2, vector#837:\r
+                       message=837 zero bits\r
+                          hash=D32C6A6F5F74B664023182D5691899C6\r
+\r
+Set 2, vector#838:\r
+                       message=838 zero bits\r
+                          hash=D5FD0A4541BA90A3EABCCE4B4537516A\r
+\r
+Set 2, vector#839:\r
+                       message=839 zero bits\r
+                          hash=950662198F6F2D69F220786452FBC1E8\r
+\r
+Set 2, vector#840:\r
+                       message=840 zero bits\r
+                          hash=D1950D80F172E80F1C48685C51835807\r
+\r
+Set 2, vector#841:\r
+                       message=841 zero bits\r
+                          hash=500858362F3EC254120581F2E0C47AD8\r
+\r
+Set 2, vector#842:\r
+                       message=842 zero bits\r
+                          hash=C1E1D5D3F54FC04A2EB5F0D0512B81F0\r
+\r
+Set 2, vector#843:\r
+                       message=843 zero bits\r
+                          hash=CC8B2477DD4DCA7F034FDBEC6B46F668\r
+\r
+Set 2, vector#844:\r
+                       message=844 zero bits\r
+                          hash=9B42323B56DB36C8271AA35A367CD5AB\r
+\r
+Set 2, vector#845:\r
+                       message=845 zero bits\r
+                          hash=AB9016083F7032C6C66674773609D8F2\r
+\r
+Set 2, vector#846:\r
+                       message=846 zero bits\r
+                          hash=0C13D4DDC4F23268FDE9305083417D09\r
+\r
+Set 2, vector#847:\r
+                       message=847 zero bits\r
+                          hash=0189572960A63919F8D2F3D24320F18D\r
+\r
+Set 2, vector#848:\r
+                       message=848 zero bits\r
+                          hash=F536FBF78E26387AFFB82EE89943B870\r
+\r
+Set 2, vector#849:\r
+                       message=849 zero bits\r
+                          hash=ED434D617B5C445D52FBA2CE6170AEE8\r
+\r
+Set 2, vector#850:\r
+                       message=850 zero bits\r
+                          hash=DACBBC2C19A755709235A56A16E451F7\r
+\r
+Set 2, vector#851:\r
+                       message=851 zero bits\r
+                          hash=4DC4F7F0A60021A96688D3F3FA76F7BF\r
+\r
+Set 2, vector#852:\r
+                       message=852 zero bits\r
+                          hash=AC669ABF3EB3B630D2FAAAC201FCEC00\r
+\r
+Set 2, vector#853:\r
+                       message=853 zero bits\r
+                          hash=60DE296330F876AA18DEB371AE65C7E0\r
+\r
+Set 2, vector#854:\r
+                       message=854 zero bits\r
+                          hash=556FB98F47BA15DB9C8B6B49692ADCEA\r
+\r
+Set 2, vector#855:\r
+                       message=855 zero bits\r
+                          hash=8D8ECDA926499533F75F3B658272BE5C\r
+\r
+Set 2, vector#856:\r
+                       message=856 zero bits\r
+                          hash=EAF25F841C19E96C5AD6217E6286E28B\r
+\r
+Set 2, vector#857:\r
+                       message=857 zero bits\r
+                          hash=BB73DC2D99A0537EE3C0F12484966FA8\r
+\r
+Set 2, vector#858:\r
+                       message=858 zero bits\r
+                          hash=8ED340A4653A223955796FD1F45705EB\r
+\r
+Set 2, vector#859:\r
+                       message=859 zero bits\r
+                          hash=8A297E1E2DC0F864285951CCEA06ECA6\r
+\r
+Set 2, vector#860:\r
+                       message=860 zero bits\r
+                          hash=9AC3F95AEB23040DD6A4EF13F5A46AF3\r
+\r
+Set 2, vector#861:\r
+                       message=861 zero bits\r
+                          hash=AAF51B2CA7336B723B037D139422BA41\r
+\r
+Set 2, vector#862:\r
+                       message=862 zero bits\r
+                          hash=BF36BAAE4E1018D282F4344EF585435D\r
+\r
+Set 2, vector#863:\r
+                       message=863 zero bits\r
+                          hash=94A06A629AE74CB2A47BAAA1B943F4B3\r
+\r
+Set 2, vector#864:\r
+                       message=864 zero bits\r
+                          hash=60C6B126049A35E50FFFEADF17279275\r
+\r
+Set 2, vector#865:\r
+                       message=865 zero bits\r
+                          hash=649B6E0BB7FEB5FD53161D7EF05B3886\r
+\r
+Set 2, vector#866:\r
+                       message=866 zero bits\r
+                          hash=D9E609017490235FD463CFA0600A5E5A\r
+\r
+Set 2, vector#867:\r
+                       message=867 zero bits\r
+                          hash=3BA4A172D940E2AB40AB9CD535BD6F7E\r
+\r
+Set 2, vector#868:\r
+                       message=868 zero bits\r
+                          hash=E037A9EF2AEFA27526D1A59BA348A849\r
+\r
+Set 2, vector#869:\r
+                       message=869 zero bits\r
+                          hash=9DB87D8771AD17EC919CF049FE3939AF\r
+\r
+Set 2, vector#870:\r
+                       message=870 zero bits\r
+                          hash=D45A3A26D37956A9A4797C9C522FB923\r
+\r
+Set 2, vector#871:\r
+                       message=871 zero bits\r
+                          hash=6A4988B50DD1EC5948C581D6065592CC\r
+\r
+Set 2, vector#872:\r
+                       message=872 zero bits\r
+                          hash=AA9ECDC8D4E3ECDDB3CDC851EA2EEB61\r
+\r
+Set 2, vector#873:\r
+                       message=873 zero bits\r
+                          hash=BCFE377D29D3BAF1C8275F3BF248CAF4\r
+\r
+Set 2, vector#874:\r
+                       message=874 zero bits\r
+                          hash=CEB5BACA37F7AEFAE91573A277A86B04\r
+\r
+Set 2, vector#875:\r
+                       message=875 zero bits\r
+                          hash=72EBCA0EA83692160039FB7333B0B16F\r
+\r
+Set 2, vector#876:\r
+                       message=876 zero bits\r
+                          hash=95C1F77B645C622A6C20C2D899823374\r
+\r
+Set 2, vector#877:\r
+                       message=877 zero bits\r
+                          hash=F81D627FE03A72B3987AB60067DB355C\r
+\r
+Set 2, vector#878:\r
+                       message=878 zero bits\r
+                          hash=919605A52B73DFBD22B737C9E79D61DE\r
+\r
+Set 2, vector#879:\r
+                       message=879 zero bits\r
+                          hash=39777887C42637FFEFE1220FC3E37614\r
+\r
+Set 2, vector#880:\r
+                       message=880 zero bits\r
+                          hash=FAEE174ECE449BCA53AEA3129D925069\r
+\r
+Set 2, vector#881:\r
+                       message=881 zero bits\r
+                          hash=392608BC02984B977BFAC994C1A89EBD\r
+\r
+Set 2, vector#882:\r
+                       message=882 zero bits\r
+                          hash=92C365C35AD85721569CD9F5EFD4840E\r
+\r
+Set 2, vector#883:\r
+                       message=883 zero bits\r
+                          hash=EAEBAE0873258D6D2AA8131F012AB29C\r
+\r
+Set 2, vector#884:\r
+                       message=884 zero bits\r
+                          hash=39F47A32D3E2F01E35179FABC7D0604F\r
+\r
+Set 2, vector#885:\r
+                       message=885 zero bits\r
+                          hash=4906B114B6F9BD6DAA9253ADD8A3F48A\r
+\r
+Set 2, vector#886:\r
+                       message=886 zero bits\r
+                          hash=43B4DCD80F2DDC3D3B705A38790E123B\r
+\r
+Set 2, vector#887:\r
+                       message=887 zero bits\r
+                          hash=26D8F90A22BFF9C1232F8D697B616E2B\r
+\r
+Set 2, vector#888:\r
+                       message=888 zero bits\r
+                          hash=03BC63B77BEC853ADCB65719A21459CE\r
+\r
+Set 2, vector#889:\r
+                       message=889 zero bits\r
+                          hash=3B28E58D682609B7985443C32814005C\r
+\r
+Set 2, vector#890:\r
+                       message=890 zero bits\r
+                          hash=3110D7E57271CD3803B4984DD166E199\r
+\r
+Set 2, vector#891:\r
+                       message=891 zero bits\r
+                          hash=B6C441B77B16127D316B8ABA87885777\r
+\r
+Set 2, vector#892:\r
+                       message=892 zero bits\r
+                          hash=7222B1CE1B1B2DC1053B4DAC241B0D90\r
+\r
+Set 2, vector#893:\r
+                       message=893 zero bits\r
+                          hash=C85237A9C2DE43AFD8A8AD579B9DABF2\r
+\r
+Set 2, vector#894:\r
+                       message=894 zero bits\r
+                          hash=DD9286CBBCAC6480C19CBA36BCFE092A\r
+\r
+Set 2, vector#895:\r
+                       message=895 zero bits\r
+                          hash=BE91298D0C4230C938F201B0CA70B6E0\r
+\r
+Set 2, vector#896:\r
+                       message=896 zero bits\r
+                          hash=C20019258CA235D2408334DFBC5E67E3\r
+\r
+Set 2, vector#897:\r
+                       message=897 zero bits\r
+                          hash=5E4B1101BCAED796CB86B493A966FC52\r
+\r
+Set 2, vector#898:\r
+                       message=898 zero bits\r
+                          hash=9449FAB1319A17C897D55B12FC3B22A7\r
+\r
+Set 2, vector#899:\r
+                       message=899 zero bits\r
+                          hash=45AAC4778A42A5314FF72402CCACEAF3\r
+\r
+Set 2, vector#900:\r
+                       message=900 zero bits\r
+                          hash=1D000BA2C004371FB659AED01191F285\r
+\r
+Set 2, vector#901:\r
+                       message=901 zero bits\r
+                          hash=A23457548F3276916F56414F638A0AEB\r
+\r
+Set 2, vector#902:\r
+                       message=902 zero bits\r
+                          hash=DF3CF9250EEA3E47EE7E281E18EF40E4\r
+\r
+Set 2, vector#903:\r
+                       message=903 zero bits\r
+                          hash=8B6D78C6403313A8CE3034519D9415DF\r
+\r
+Set 2, vector#904:\r
+                       message=904 zero bits\r
+                          hash=B9205D5C0A413E022F6C36D4BDFA0750\r
+\r
+Set 2, vector#905:\r
+                       message=905 zero bits\r
+                          hash=65C8F5477305B518392596E7010B2E7D\r
+\r
+Set 2, vector#906:\r
+                       message=906 zero bits\r
+                          hash=2F1A77B28C03D9815C727565082646E9\r
+\r
+Set 2, vector#907:\r
+                       message=907 zero bits\r
+                          hash=E5DF45C61143EA4F2A9F0B78F7A4A828\r
+\r
+Set 2, vector#908:\r
+                       message=908 zero bits\r
+                          hash=E6FC4512CA6C36EC292C5063F52DD9F1\r
+\r
+Set 2, vector#909:\r
+                       message=909 zero bits\r
+                          hash=DE5A6D5544DFBCE42F888201390A907E\r
+\r
+Set 2, vector#910:\r
+                       message=910 zero bits\r
+                          hash=BA7859B968106E103DBE928D769FC12D\r
+\r
+Set 2, vector#911:\r
+                       message=911 zero bits\r
+                          hash=452FD50E0F31066E35E48F10A67884D7\r
+\r
+Set 2, vector#912:\r
+                       message=912 zero bits\r
+                          hash=301657E2669B4C76979A15F801CC2ADF\r
+\r
+Set 2, vector#913:\r
+                       message=913 zero bits\r
+                          hash=60F22B1D5C2455F589DDD328CA2C2D7F\r
+\r
+Set 2, vector#914:\r
+                       message=914 zero bits\r
+                          hash=8E62279027C857E3328AED1F06E7D3D7\r
+\r
+Set 2, vector#915:\r
+                       message=915 zero bits\r
+                          hash=448DBC4F47E5A0F439CCD9A857EC6528\r
+\r
+Set 2, vector#916:\r
+                       message=916 zero bits\r
+                          hash=094C176222EFD7345E972DF4E9FB7408\r
+\r
+Set 2, vector#917:\r
+                       message=917 zero bits\r
+                          hash=9F0ECE25EF4552BAB67621741A00ADD5\r
+\r
+Set 2, vector#918:\r
+                       message=918 zero bits\r
+                          hash=DEED3676D71227B431C8B879F5EC94B6\r
+\r
+Set 2, vector#919:\r
+                       message=919 zero bits\r
+                          hash=8367F307330413E22B13A2CEBA96DD66\r
+\r
+Set 2, vector#920:\r
+                       message=920 zero bits\r
+                          hash=39DBF807A41E5E4E63B59C9535C72EB7\r
+\r
+Set 2, vector#921:\r
+                       message=921 zero bits\r
+                          hash=7876D543078D7BE5DBE57B2FCD1D047E\r
+\r
+Set 2, vector#922:\r
+                       message=922 zero bits\r
+                          hash=ED717DC70408A500125D08168FA59D64\r
+\r
+Set 2, vector#923:\r
+                       message=923 zero bits\r
+                          hash=18343B2F26E4AB3D5A52AA0ED8503B28\r
+\r
+Set 2, vector#924:\r
+                       message=924 zero bits\r
+                          hash=F63E159532EEFC6E3B638B62DEC2E0D4\r
+\r
+Set 2, vector#925:\r
+                       message=925 zero bits\r
+                          hash=3D8B2F4943795C3D1A59A18D4BF8D22A\r
+\r
+Set 2, vector#926:\r
+                       message=926 zero bits\r
+                          hash=FABABFB356CA4139326090FC656403CA\r
+\r
+Set 2, vector#927:\r
+                       message=927 zero bits\r
+                          hash=3CBF5915D2B3B4C7128B2A1A72BF0DC3\r
+\r
+Set 2, vector#928:\r
+                       message=928 zero bits\r
+                          hash=617F292BEBF954B26D56F326B51C8A82\r
+\r
+Set 2, vector#929:\r
+                       message=929 zero bits\r
+                          hash=39B1A890BBC5D92B2D0596454316D505\r
+\r
+Set 2, vector#930:\r
+                       message=930 zero bits\r
+                          hash=37B6C748CF190966338A0FDB267BC3E7\r
+\r
+Set 2, vector#931:\r
+                       message=931 zero bits\r
+                          hash=6906E292C57D56B83F76EDDCBD29D6C3\r
+\r
+Set 2, vector#932:\r
+                       message=932 zero bits\r
+                          hash=0A34172EE4EA41952596A442E015271E\r
+\r
+Set 2, vector#933:\r
+                       message=933 zero bits\r
+                          hash=BE286E91CEB7BDB1375F329E761FD1EC\r
+\r
+Set 2, vector#934:\r
+                       message=934 zero bits\r
+                          hash=2E7DA318E96482959F1D3DF3D11B6A84\r
+\r
+Set 2, vector#935:\r
+                       message=935 zero bits\r
+                          hash=0469F23BC8F9FE6A152199E9ED2FAC11\r
+\r
+Set 2, vector#936:\r
+                       message=936 zero bits\r
+                          hash=B5D466335D65B171B686700DEE05EF74\r
+\r
+Set 2, vector#937:\r
+                       message=937 zero bits\r
+                          hash=89AA431A69F3B3786AD76BCAC4043104\r
+\r
+Set 2, vector#938:\r
+                       message=938 zero bits\r
+                          hash=CA7B35842EE01530FF70DFC0101FC191\r
+\r
+Set 2, vector#939:\r
+                       message=939 zero bits\r
+                          hash=BB814C994E879EF7E97A1AC9C8DD6478\r
+\r
+Set 2, vector#940:\r
+                       message=940 zero bits\r
+                          hash=0DFD02553B4DDF982A05E812A97301B2\r
+\r
+Set 2, vector#941:\r
+                       message=941 zero bits\r
+                          hash=761BE13D5747CCBE9B3FF13D9143159A\r
+\r
+Set 2, vector#942:\r
+                       message=942 zero bits\r
+                          hash=EFF4AE91ADA4AD7D60B04C36D99F4DD0\r
+\r
+Set 2, vector#943:\r
+                       message=943 zero bits\r
+                          hash=F29268B1DF8B2FB4D1008D8C9EA3CD20\r
+\r
+Set 2, vector#944:\r
+                       message=944 zero bits\r
+                          hash=1A6BF84723F4E07DC1F35F162ACEC19B\r
+\r
+Set 2, vector#945:\r
+                       message=945 zero bits\r
+                          hash=7D80FD26D456CD41CF78309FAAAC16E8\r
+\r
+Set 2, vector#946:\r
+                       message=946 zero bits\r
+                          hash=C7F83FF5A77D8915F27FE9FF07EB57A1\r
+\r
+Set 2, vector#947:\r
+                       message=947 zero bits\r
+                          hash=E6764BA6FABAAC496DA367C7CE86001B\r
+\r
+Set 2, vector#948:\r
+                       message=948 zero bits\r
+                          hash=A431BEF64810E0C57604FD8B6914DDAA\r
+\r
+Set 2, vector#949:\r
+                       message=949 zero bits\r
+                          hash=033D993308FBB34EF6795B6BA3CBDD77\r
+\r
+Set 2, vector#950:\r
+                       message=950 zero bits\r
+                          hash=593D3B7FB9150EFA4C13A6035182C9DA\r
+\r
+Set 2, vector#951:\r
+                       message=951 zero bits\r
+                          hash=8FC5127187281126B8B02A8504D8FBD5\r
+\r
+Set 2, vector#952:\r
+                       message=952 zero bits\r
+                          hash=8271CB2E6A546123B43096A2EFCE39D2\r
+\r
+Set 2, vector#953:\r
+                       message=953 zero bits\r
+                          hash=FEACD86498D2BDE95789A291271867B3\r
+\r
+Set 2, vector#954:\r
+                       message=954 zero bits\r
+                          hash=59BD762EF36408DE5BFEC0035779A9A5\r
+\r
+Set 2, vector#955:\r
+                       message=955 zero bits\r
+                          hash=B40098A9BC802773C551B8A834484121\r
+\r
+Set 2, vector#956:\r
+                       message=956 zero bits\r
+                          hash=38690594B307EC6D6D0AC117AAC2092D\r
+\r
+Set 2, vector#957:\r
+                       message=957 zero bits\r
+                          hash=DFB27924C9DBE33F2C6AA69A601039B2\r
+\r
+Set 2, vector#958:\r
+                       message=958 zero bits\r
+                          hash=F40C201075E3C8527E8E071EC8E8DD6C\r
+\r
+Set 2, vector#959:\r
+                       message=959 zero bits\r
+                          hash=94291C4585F320174586192AE6AAAD16\r
+\r
+Set 2, vector#960:\r
+                       message=960 zero bits\r
+                          hash=222F7D881DED1871724A1B9A1CB94247\r
+\r
+Set 2, vector#961:\r
+                       message=961 zero bits\r
+                          hash=0340AEE9BF2E008763B75ED49B248001\r
+\r
+Set 2, vector#962:\r
+                       message=962 zero bits\r
+                          hash=90FBB233702817F2FB3A919C6580FAD0\r
+\r
+Set 2, vector#963:\r
+                       message=963 zero bits\r
+                          hash=FEBCD5404EFDEC5DC1816C4FEDA34D0C\r
+\r
+Set 2, vector#964:\r
+                       message=964 zero bits\r
+                          hash=30063A4CFD3C69D958AB16C661E730E7\r
+\r
+Set 2, vector#965:\r
+                       message=965 zero bits\r
+                          hash=EE22D29F1F635E8103E6FC5077EE4D56\r
+\r
+Set 2, vector#966:\r
+                       message=966 zero bits\r
+                          hash=66C599B864DE6D265B90B227336F3801\r
+\r
+Set 2, vector#967:\r
+                       message=967 zero bits\r
+                          hash=5582E98FD0E3491CBEC704A26ECA8553\r
+\r
+Set 2, vector#968:\r
+                       message=968 zero bits\r
+                          hash=709C6A80AF0276B170C521117EDE47C6\r
+\r
+Set 2, vector#969:\r
+                       message=969 zero bits\r
+                          hash=D93EA306708FF62C2099B6687C891A34\r
+\r
+Set 2, vector#970:\r
+                       message=970 zero bits\r
+                          hash=F3C57870DBBC722E29082517F35AE06F\r
+\r
+Set 2, vector#971:\r
+                       message=971 zero bits\r
+                          hash=AA7314ABB846513D166B6011E628EAFD\r
+\r
+Set 2, vector#972:\r
+                       message=972 zero bits\r
+                          hash=C0D70E73A1451C3D5A693963A704ED3B\r
+\r
+Set 2, vector#973:\r
+                       message=973 zero bits\r
+                          hash=66395B729015B4072983DFC376605A5C\r
+\r
+Set 2, vector#974:\r
+                       message=974 zero bits\r
+                          hash=F3C6D6BA10FB53E1C6A2782CEF86DC22\r
+\r
+Set 2, vector#975:\r
+                       message=975 zero bits\r
+                          hash=4FB951862744BB42434AA0B22E422E3B\r
+\r
+Set 2, vector#976:\r
+                       message=976 zero bits\r
+                          hash=B7D01D15F7334EED7EA235515822F7D5\r
+\r
+Set 2, vector#977:\r
+                       message=977 zero bits\r
+                          hash=DA076559723D30D65671EA18CF6BA6DC\r
+\r
+Set 2, vector#978:\r
+                       message=978 zero bits\r
+                          hash=20D8008CCF0D9717E968E734027F03CC\r
+\r
+Set 2, vector#979:\r
+                       message=979 zero bits\r
+                          hash=08B720602D9721AED02E32ACAE9FB8AC\r
+\r
+Set 2, vector#980:\r
+                       message=980 zero bits\r
+                          hash=88293C7E38B61C50B5C50BB0A41ECE50\r
+\r
+Set 2, vector#981:\r
+                       message=981 zero bits\r
+                          hash=BDD6D5E3EE7A9EE69B325DC4846CAEFD\r
+\r
+Set 2, vector#982:\r
+                       message=982 zero bits\r
+                          hash=0191F1602CF5CBC5A0AD79A1048ABBE0\r
+\r
+Set 2, vector#983:\r
+                       message=983 zero bits\r
+                          hash=47837B16DF8D5007E6A019979DD9B078\r
+\r
+Set 2, vector#984:\r
+                       message=984 zero bits\r
+                          hash=B1FEC41621E338896E2D26F232A6B006\r
+\r
+Set 2, vector#985:\r
+                       message=985 zero bits\r
+                          hash=4226B4EC8DBF8F12F6B52E2868FDF80F\r
+\r
+Set 2, vector#986:\r
+                       message=986 zero bits\r
+                          hash=3B980117157439DCE7B7A11F36426527\r
+\r
+Set 2, vector#987:\r
+                       message=987 zero bits\r
+                          hash=7A0AC3DABECDF99D9F5F2A22879A9D3D\r
+\r
+Set 2, vector#988:\r
+                       message=988 zero bits\r
+                          hash=C3AB2E628F197033C8032B494CCE404C\r
+\r
+Set 2, vector#989:\r
+                       message=989 zero bits\r
+                          hash=A6657FF8393E95C05828E0F12626EF24\r
+\r
+Set 2, vector#990:\r
+                       message=990 zero bits\r
+                          hash=A7829DA2128C6D9B73D1A5116EFFC1B6\r
+\r
+Set 2, vector#991:\r
+                       message=991 zero bits\r
+                          hash=3CB64782E35C56DC775E9FAC0EAE24C0\r
+\r
+Set 2, vector#992:\r
+                       message=992 zero bits\r
+                          hash=3AACEEBD65F0B79F9AE1718D3241BF37\r
+\r
+Set 2, vector#993:\r
+                       message=993 zero bits\r
+                          hash=90D84E7953BBCBFB5D55BE19F5A598E1\r
+\r
+Set 2, vector#994:\r
+                       message=994 zero bits\r
+                          hash=2F499F4DD39DE70DA7BC154F884041EE\r
+\r
+Set 2, vector#995:\r
+                       message=995 zero bits\r
+                          hash=CABC11132A3E8337EDACD79709D9C8D9\r
+\r
+Set 2, vector#996:\r
+                       message=996 zero bits\r
+                          hash=F13B70225B2ED0E8E164056164F63AF3\r
+\r
+Set 2, vector#997:\r
+                       message=997 zero bits\r
+                          hash=839344A85F0EA9C434AE63E3D96DFD90\r
+\r
+Set 2, vector#998:\r
+                       message=998 zero bits\r
+                          hash=8AA4A968CFC557DB60D34E197695E0C3\r
+\r
+Set 2, vector#999:\r
+                       message=999 zero bits\r
+                          hash=03606C67BC4E86669D469C881C6B2227\r
+\r
+Set 2, vector#1000:\r
+                       message=1000 zero bits\r
+                          hash=38397588C4D02F8B95C263852E9AEE7A\r
+\r
+Set 2, vector#1001:\r
+                       message=1001 zero bits\r
+                          hash=F2E4547CD4E120931E40E1D62E77340B\r
+\r
+Set 2, vector#1002:\r
+                       message=1002 zero bits\r
+                          hash=B8C4D9324B2A46B7360D08C5A2F73BE9\r
+\r
+Set 2, vector#1003:\r
+                       message=1003 zero bits\r
+                          hash=A3C1B8C0AD9A57634E9E6BAB8DFA5E89\r
+\r
+Set 2, vector#1004:\r
+                       message=1004 zero bits\r
+                          hash=E86F4ED753FFEE5AB0A542B69E73358E\r
+\r
+Set 2, vector#1005:\r
+                       message=1005 zero bits\r
+                          hash=03009E36EEFA228ECE5D1282294A75A8\r
+\r
+Set 2, vector#1006:\r
+                       message=1006 zero bits\r
+                          hash=A16D1F055F40CE9D9FBB93A1BF6BD02E\r
+\r
+Set 2, vector#1007:\r
+                       message=1007 zero bits\r
+                          hash=302BF04B57443360F1324882B86E8C3B\r
+\r
+Set 2, vector#1008:\r
+                       message=1008 zero bits\r
+                          hash=91492F3350F4A1C513741F6AA8A96B5A\r
+\r
+Set 2, vector#1009:\r
+                       message=1009 zero bits\r
+                          hash=3A98550DD7C8B2B4927AE1681AFE2B61\r
+\r
+Set 2, vector#1010:\r
+                       message=1010 zero bits\r
+                          hash=C098EBB2133EFF02BC8ADCF824186D2B\r
+\r
+Set 2, vector#1011:\r
+                       message=1011 zero bits\r
+                          hash=17E232E49E097D814CF4695D020BD17B\r
+\r
+Set 2, vector#1012:\r
+                       message=1012 zero bits\r
+                          hash=37600C15B477D907F963B2056138C5AA\r
+\r
+Set 2, vector#1013:\r
+                       message=1013 zero bits\r
+                          hash=AC2C9A793A7E240B65D8A2E431D482E7\r
+\r
+Set 2, vector#1014:\r
+                       message=1014 zero bits\r
+                          hash=74D75B7326B7204E4A04C4D1BE8DC24F\r
+\r
+Set 2, vector#1015:\r
+                       message=1015 zero bits\r
+                          hash=CC38525595AF2A972FAF8D10BBE9FEE8\r
+\r
+Set 2, vector#1016:\r
+                       message=1016 zero bits\r
+                          hash=E457FBAE1DD166A0C89D244AC03F4E93\r
+\r
+Set 2, vector#1017:\r
+                       message=1017 zero bits\r
+                          hash=945497A81962E79245BCA22946AD1567\r
+\r
+Set 2, vector#1018:\r
+                       message=1018 zero bits\r
+                          hash=C51753A394530424EA2434C90803EED3\r
+\r
+Set 2, vector#1019:\r
+                       message=1019 zero bits\r
+                          hash=00469F9E1A0B3DF7A21D349A346D352D\r
+\r
+Set 2, vector#1020:\r
+                       message=1020 zero bits\r
+                          hash=3C042A86226E9DF30E9446B1B610104E\r
+\r
+Set 2, vector#1021:\r
+                       message=1021 zero bits\r
+                          hash=96BB16CD24A7D15910014DAC5E222DBD\r
+\r
+Set 2, vector#1022:\r
+                       message=1022 zero bits\r
+                          hash=8EF4BEDF8C2CC4EDC5769F835136866D\r
+\r
+Set 2, vector#1023:\r
+                       message=1023 zero bits\r
+                          hash=3B86C5F8FF317783CA76EAA1FE2835D9\r
+\r
+\r
+Test vectors -- set 3\r
+=====================\r
+Message digests of all 512-bit strings S containing a single 1-bit:\r
+\r
+Set 3, vector#  0:\r
+                       message=512-bit string:  0*00,80,63*00\r
+                          hash=D100ADC7D963AC0B837F7AC29DC701D7\r
+\r
+Set 3, vector#  1:\r
+                       message=512-bit string:  0*00,40,63*00\r
+                          hash=5946DFD41CC23659B3A6671B61BEEBD5\r
+\r
+Set 3, vector#  2:\r
+                       message=512-bit string:  0*00,20,63*00\r
+                          hash=DEC544A38537D47AE3074C1B1FE258CE\r
+\r
+Set 3, vector#  3:\r
+                       message=512-bit string:  0*00,10,63*00\r
+                          hash=F86BBABF1921DDE8BDA8BFD280C7EF42\r
+\r
+Set 3, vector#  4:\r
+                       message=512-bit string:  0*00,08,63*00\r
+                          hash=F5504FB61B4A45F425A7E81A5EE46F9D\r
+\r
+Set 3, vector#  5:\r
+                       message=512-bit string:  0*00,04,63*00\r
+                          hash=6D0FE6F22A181464E6445CECCC9F0637\r
+\r
+Set 3, vector#  6:\r
+                       message=512-bit string:  0*00,02,63*00\r
+                          hash=B17122050F10191A428685C69D6443FC\r
+\r
+Set 3, vector#  7:\r
+                       message=512-bit string:  0*00,01,63*00\r
+                          hash=BC5481E124C00F21E314EF579DC23C42\r
+\r
+Set 3, vector#  8:\r
+                       message=512-bit string:  1*00,80,62*00\r
+                          hash=E0D1D11DB4A1920B5D1E2AC3C8FF2EE5\r
+\r
+Set 3, vector#  9:\r
+                       message=512-bit string:  1*00,40,62*00\r
+                          hash=B41789204BFB001544CF30C99B80C2BF\r
+\r
+Set 3, vector# 10:\r
+                       message=512-bit string:  1*00,20,62*00\r
+                          hash=427E645F8141751530520C4AEDF94AF6\r
+\r
+Set 3, vector# 11:\r
+                       message=512-bit string:  1*00,10,62*00\r
+                          hash=313E604ACFFC20F994BC77A5338868F9\r
+\r
+Set 3, vector# 12:\r
+                       message=512-bit string:  1*00,08,62*00\r
+                          hash=0A53C1D28669E7E0E50FCDF88C8127C5\r
+\r
+Set 3, vector# 13:\r
+                       message=512-bit string:  1*00,04,62*00\r
+                          hash=22589A024E2B52B44365C84BF9053EAB\r
+\r
+Set 3, vector# 14:\r
+                       message=512-bit string:  1*00,02,62*00\r
+                          hash=B0052285C8B28883ADDD0728B85A7FA2\r
+\r
+Set 3, vector# 15:\r
+                       message=512-bit string:  1*00,01,62*00\r
+                          hash=77598FEF54DCD2A8AF4062FEC8EA07D0\r
+\r
+Set 3, vector# 16:\r
+                       message=512-bit string:  2*00,80,61*00\r
+                          hash=C0516F144ADA2C0093BFEA89C9FA5CEF\r
+\r
+Set 3, vector# 17:\r
+                       message=512-bit string:  2*00,40,61*00\r
+                          hash=1A4AAB1565206E54831978864E6B4E98\r
+\r
+Set 3, vector# 18:\r
+                       message=512-bit string:  2*00,20,61*00\r
+                          hash=ED46B74E2F7904F49E2FF64038EFC620\r
+\r
+Set 3, vector# 19:\r
+                       message=512-bit string:  2*00,10,61*00\r
+                          hash=A60F5E85EB851E6367428340BF949D7A\r
+\r
+Set 3, vector# 20:\r
+                       message=512-bit string:  2*00,08,61*00\r
+                          hash=26770E1F01C793D8363B79CEF5594749\r
+\r
+Set 3, vector# 21:\r
+                       message=512-bit string:  2*00,04,61*00\r
+                          hash=71878DF60B5DF9A34B1064ED509F3B07\r
+\r
+Set 3, vector# 22:\r
+                       message=512-bit string:  2*00,02,61*00\r
+                          hash=C372906819C3B158A5A91FD08332EEE8\r
+\r
+Set 3, vector# 23:\r
+                       message=512-bit string:  2*00,01,61*00\r
+                          hash=5E468347458E0171D2459B72FA762A5D\r
+\r
+Set 3, vector# 24:\r
+                       message=512-bit string:  3*00,80,60*00\r
+                          hash=4A3D18FB567AB08710581C9810B3C1F1\r
+\r
+Set 3, vector# 25:\r
+                       message=512-bit string:  3*00,40,60*00\r
+                          hash=AD2FBD456923D0405A7413463E26FC91\r
+\r
+Set 3, vector# 26:\r
+                       message=512-bit string:  3*00,20,60*00\r
+                          hash=4B94D72B5CB2CF60E1360035A6A823A9\r
+\r
+Set 3, vector# 27:\r
+                       message=512-bit string:  3*00,10,60*00\r
+                          hash=562A13C1BC97451ACB25584C7741EECA\r
+\r
+Set 3, vector# 28:\r
+                       message=512-bit string:  3*00,08,60*00\r
+                          hash=97C6A1580F949812E5FEEE45F0DF91E5\r
+\r
+Set 3, vector# 29:\r
+                       message=512-bit string:  3*00,04,60*00\r
+                          hash=711EB2C46C3E465BCF05204A829D75DB\r
+\r
+Set 3, vector# 30:\r
+                       message=512-bit string:  3*00,02,60*00\r
+                          hash=BE9AA44A92B42D0740A59FC3EF96C59B\r
+\r
+Set 3, vector# 31:\r
+                       message=512-bit string:  3*00,01,60*00\r
+                          hash=841A0BCE1788101C5E650ABFA1367509\r
+\r
+Set 3, vector# 32:\r
+                       message=512-bit string:  4*00,80,59*00\r
+                          hash=D51020E2512CEF1F19781497A8065252\r
+\r
+Set 3, vector# 33:\r
+                       message=512-bit string:  4*00,40,59*00\r
+                          hash=03380DEF2104B313079E26A20D65A67C\r
+\r
+Set 3, vector# 34:\r
+                       message=512-bit string:  4*00,20,59*00\r
+                          hash=486D95AC56F4A12878676E896E0A6279\r
+\r
+Set 3, vector# 35:\r
+                       message=512-bit string:  4*00,10,59*00\r
+                          hash=ED0289B0EA4570C831F880A0007F7404\r
+\r
+Set 3, vector# 36:\r
+                       message=512-bit string:  4*00,08,59*00\r
+                          hash=667FFB9C10ACBAF700E30EA0C0497BA8\r
+\r
+Set 3, vector# 37:\r
+                       message=512-bit string:  4*00,04,59*00\r
+                          hash=151C00A49855680BA36700676857A8F4\r
+\r
+Set 3, vector# 38:\r
+                       message=512-bit string:  4*00,02,59*00\r
+                          hash=CA7CD07DA0E6EDA1040613CF4B70777E\r
+\r
+Set 3, vector# 39:\r
+                       message=512-bit string:  4*00,01,59*00\r
+                          hash=71DA93F3E01AE2945AED2BC4F5052C53\r
+\r
+Set 3, vector# 40:\r
+                       message=512-bit string:  5*00,80,58*00\r
+                          hash=421AD4DBECDDCCB0138E6A2AC0E4F6FC\r
+\r
+Set 3, vector# 41:\r
+                       message=512-bit string:  5*00,40,58*00\r
+                          hash=30BFC0E8F8C2FC95773138BC8DA947B6\r
+\r
+Set 3, vector# 42:\r
+                       message=512-bit string:  5*00,20,58*00\r
+                          hash=9D3A13F27EB032F2687D8E6D1788D61E\r
+\r
+Set 3, vector# 43:\r
+                       message=512-bit string:  5*00,10,58*00\r
+                          hash=0BE383B2766ED8B575B9040BC0D42EF5\r
+\r
+Set 3, vector# 44:\r
+                       message=512-bit string:  5*00,08,58*00\r
+                          hash=4427BC6CC79301E7A26C2A3D8ECB6E10\r
+\r
+Set 3, vector# 45:\r
+                       message=512-bit string:  5*00,04,58*00\r
+                          hash=534D98E515BA47AACF89E3C351887F68\r
+\r
+Set 3, vector# 46:\r
+                       message=512-bit string:  5*00,02,58*00\r
+                          hash=8A8A0244B9B3F6F3C0330CBC34304522\r
+\r
+Set 3, vector# 47:\r
+                       message=512-bit string:  5*00,01,58*00\r
+                          hash=E54B50B64867080469586A3A2B3EF892\r
+\r
+Set 3, vector# 48:\r
+                       message=512-bit string:  6*00,80,57*00\r
+                          hash=873821E3ED8865BC96639C18B23A9A44\r
+\r
+Set 3, vector# 49:\r
+                       message=512-bit string:  6*00,40,57*00\r
+                          hash=757E17C903DF12EA67252CBA283B66A0\r
+\r
+Set 3, vector# 50:\r
+                       message=512-bit string:  6*00,20,57*00\r
+                          hash=D344B3E83A02BCF8D75CF6E5FBEBFCF7\r
+\r
+Set 3, vector# 51:\r
+                       message=512-bit string:  6*00,10,57*00\r
+                          hash=08A482079AED8725E0A41DA42F3BCF88\r
+\r
+Set 3, vector# 52:\r
+                       message=512-bit string:  6*00,08,57*00\r
+                          hash=B148E58BB47D90595E34EFD04A6BF45C\r
+\r
+Set 3, vector# 53:\r
+                       message=512-bit string:  6*00,04,57*00\r
+                          hash=FEE2CB77ABF8EE1DBE1FE5112C05EBE7\r
+\r
+Set 3, vector# 54:\r
+                       message=512-bit string:  6*00,02,57*00\r
+                          hash=4A5DB81DDB230FEBA62388CD585EDFF6\r
+\r
+Set 3, vector# 55:\r
+                       message=512-bit string:  6*00,01,57*00\r
+                          hash=2B48DCA04A1CB4CCCF74D8C8AEF831E0\r
+\r
+Set 3, vector# 56:\r
+                       message=512-bit string:  7*00,80,56*00\r
+                          hash=D6B3AA2679C44FFF034482620FC4B6C4\r
+\r
+Set 3, vector# 57:\r
+                       message=512-bit string:  7*00,40,56*00\r
+                          hash=651C77103A6CAA2DDD64253AB619DCEC\r
+\r
+Set 3, vector# 58:\r
+                       message=512-bit string:  7*00,20,56*00\r
+                          hash=4DA303D58A562B00FD3A168750A5DC51\r
+\r
+Set 3, vector# 59:\r
+                       message=512-bit string:  7*00,10,56*00\r
+                          hash=13670CF998C2E742F0466D414B10FE03\r
+\r
+Set 3, vector# 60:\r
+                       message=512-bit string:  7*00,08,56*00\r
+                          hash=0846D2C1F7202CC2DC62B40E23AD1604\r
+\r
+Set 3, vector# 61:\r
+                       message=512-bit string:  7*00,04,56*00\r
+                          hash=09F09DA03DE4AB2FDCD34A101AA71560\r
+\r
+Set 3, vector# 62:\r
+                       message=512-bit string:  7*00,02,56*00\r
+                          hash=55876BC89EB5D8A45A063F46A758C83D\r
+\r
+Set 3, vector# 63:\r
+                       message=512-bit string:  7*00,01,56*00\r
+                          hash=FF2719AE2554BA4C0EB721799CDA860E\r
+\r
+Set 3, vector# 64:\r
+                       message=512-bit string:  8*00,80,55*00\r
+                          hash=99B6A99F2BF6E8DFEAE34BC1B8BEA0FE\r
+\r
+Set 3, vector# 65:\r
+                       message=512-bit string:  8*00,40,55*00\r
+                          hash=153A4356041A8AFC4610244D059D625C\r
+\r
+Set 3, vector# 66:\r
+                       message=512-bit string:  8*00,20,55*00\r
+                          hash=ADFF5B78D55AF02CA60DC92EE7A5FB72\r
+\r
+Set 3, vector# 67:\r
+                       message=512-bit string:  8*00,10,55*00\r
+                          hash=7B25E849B8EF1F651A85707D0B673CE7\r
+\r
+Set 3, vector# 68:\r
+                       message=512-bit string:  8*00,08,55*00\r
+                          hash=3B81887F8FCBD61A81E98257DBE82814\r
+\r
+Set 3, vector# 69:\r
+                       message=512-bit string:  8*00,04,55*00\r
+                          hash=3640E4FC3D96346AACC19CE13197BC26\r
+\r
+Set 3, vector# 70:\r
+                       message=512-bit string:  8*00,02,55*00\r
+                          hash=9F392C0A01B3F31C872501D822E123B1\r
+\r
+Set 3, vector# 71:\r
+                       message=512-bit string:  8*00,01,55*00\r
+                          hash=FA534E290740E8DF8637C76F1904518B\r
+\r
+Set 3, vector# 72:\r
+                       message=512-bit string:  9*00,80,54*00\r
+                          hash=1C0098B2775421532A7CB1844DD304D9\r
+\r
+Set 3, vector# 73:\r
+                       message=512-bit string:  9*00,40,54*00\r
+                          hash=CA4123F709792AABD8593207AA3D870E\r
+\r
+Set 3, vector# 74:\r
+                       message=512-bit string:  9*00,20,54*00\r
+                          hash=5425E8B0EFCD62EA3E1C5F1798E5057C\r
+\r
+Set 3, vector# 75:\r
+                       message=512-bit string:  9*00,10,54*00\r
+                          hash=671ABDDEE265899ABEEB777C26FE0628\r
+\r
+Set 3, vector# 76:\r
+                       message=512-bit string:  9*00,08,54*00\r
+                          hash=3D78D853674651BE79F7EEB985D66CA0\r
+\r
+Set 3, vector# 77:\r
+                       message=512-bit string:  9*00,04,54*00\r
+                          hash=6EE70CE7ACAC7BBFCAA5918FC7D7A231\r
+\r
+Set 3, vector# 78:\r
+                       message=512-bit string:  9*00,02,54*00\r
+                          hash=5A8CD68C9E7EBB8EC286F95527E1FABD\r
+\r
+Set 3, vector# 79:\r
+                       message=512-bit string:  9*00,01,54*00\r
+                          hash=A3B9360D025565B5BBB74E11EB4CCAF6\r
+\r
+Set 3, vector# 80:\r
+                       message=512-bit string: 10*00,80,53*00\r
+                          hash=FF3A4D6DA7A8C8C223B784F7BB89D3A0\r
+\r
+Set 3, vector# 81:\r
+                       message=512-bit string: 10*00,40,53*00\r
+                          hash=9B2E198A717FF73011A49E4436A993EB\r
+\r
+Set 3, vector# 82:\r
+                       message=512-bit string: 10*00,20,53*00\r
+                          hash=3FE32E36378A361D53811CBB3B65E036\r
+\r
+Set 3, vector# 83:\r
+                       message=512-bit string: 10*00,10,53*00\r
+                          hash=CBA94A4C71DE66B971CC1D1715B4BF97\r
+\r
+Set 3, vector# 84:\r
+                       message=512-bit string: 10*00,08,53*00\r
+                          hash=4FFB7C963D0504F6D0F76D3A74982371\r
+\r
+Set 3, vector# 85:\r
+                       message=512-bit string: 10*00,04,53*00\r
+                          hash=C540F2FF6F64B3F8201CA26DEDF38982\r
+\r
+Set 3, vector# 86:\r
+                       message=512-bit string: 10*00,02,53*00\r
+                          hash=7BD5B7EDB6049EB30E29F7AA381D8BA9\r
+\r
+Set 3, vector# 87:\r
+                       message=512-bit string: 10*00,01,53*00\r
+                          hash=4A0630379B12E49EEE8212350A936463\r
+\r
+Set 3, vector# 88:\r
+                       message=512-bit string: 11*00,80,52*00\r
+                          hash=712E4057E7BD5A9E2F37F24557FE8AD8\r
+\r
+Set 3, vector# 89:\r
+                       message=512-bit string: 11*00,40,52*00\r
+                          hash=EF98CA91A9657B23B153EFC5711A97C2\r
+\r
+Set 3, vector# 90:\r
+                       message=512-bit string: 11*00,20,52*00\r
+                          hash=66C77963623201ACADD590E332DCB36A\r
+\r
+Set 3, vector# 91:\r
+                       message=512-bit string: 11*00,10,52*00\r
+                          hash=EE1FA779386BF3ABDFE5B1CDA730BF1F\r
+\r
+Set 3, vector# 92:\r
+                       message=512-bit string: 11*00,08,52*00\r
+                          hash=FA9A2E663AEFB2A3EF14DF8407CC3CC7\r
+\r
+Set 3, vector# 93:\r
+                       message=512-bit string: 11*00,04,52*00\r
+                          hash=F03821A6191AED4FA02B66A9C7F71C63\r
+\r
+Set 3, vector# 94:\r
+                       message=512-bit string: 11*00,02,52*00\r
+                          hash=53A7A4B6D595901360F4507D9362D11F\r
+\r
+Set 3, vector# 95:\r
+                       message=512-bit string: 11*00,01,52*00\r
+                          hash=58507FDADC715BB403A179FE094FDB3F\r
+\r
+Set 3, vector# 96:\r
+                       message=512-bit string: 12*00,80,51*00\r
+                          hash=C6A4255B565F0B7FA5F3BF239B3CE550\r
+\r
+Set 3, vector# 97:\r
+                       message=512-bit string: 12*00,40,51*00\r
+                          hash=331A4C06F709E2BCE0E5331BCD8770F5\r
+\r
+Set 3, vector# 98:\r
+                       message=512-bit string: 12*00,20,51*00\r
+                          hash=10733E1F79C2B5C1F78C688C43A3CD19\r
+\r
+Set 3, vector# 99:\r
+                       message=512-bit string: 12*00,10,51*00\r
+                          hash=FD5DDB64A262D775FEAFECBE6B196361\r
+\r
+Set 3, vector#100:\r
+                       message=512-bit string: 12*00,08,51*00\r
+                          hash=D23F63302AE2F9D987D50641A74D09CD\r
+\r
+Set 3, vector#101:\r
+                       message=512-bit string: 12*00,04,51*00\r
+                          hash=206693D8C90F7FC826820AAD553FB3C0\r
+\r
+Set 3, vector#102:\r
+                       message=512-bit string: 12*00,02,51*00\r
+                          hash=54571E2A04C159B9CD187E84CD591B5D\r
+\r
+Set 3, vector#103:\r
+                       message=512-bit string: 12*00,01,51*00\r
+                          hash=5FD2ACD825D46FBB58EB912A263D0144\r
+\r
+Set 3, vector#104:\r
+                       message=512-bit string: 13*00,80,50*00\r
+                          hash=4000D3A40B0CB27806530E25F2CF1645\r
+\r
+Set 3, vector#105:\r
+                       message=512-bit string: 13*00,40,50*00\r
+                          hash=3129198B6D899EAF6355AA9038E76D25\r
+\r
+Set 3, vector#106:\r
+                       message=512-bit string: 13*00,20,50*00\r
+                          hash=D8D03681175ADBF8F46242C2EB7DC855\r
+\r
+Set 3, vector#107:\r
+                       message=512-bit string: 13*00,10,50*00\r
+                          hash=E33B91B2D6B65749DCD7BFD16FF6496D\r
+\r
+Set 3, vector#108:\r
+                       message=512-bit string: 13*00,08,50*00\r
+                          hash=BCC9EF044C7D4A807D7BA8DE5ABD9DA0\r
+\r
+Set 3, vector#109:\r
+                       message=512-bit string: 13*00,04,50*00\r
+                          hash=48277E4B13A266FF3389F2A5D219A341\r
+\r
+Set 3, vector#110:\r
+                       message=512-bit string: 13*00,02,50*00\r
+                          hash=04B174213538AAD2F2546F8CDA4E1AE3\r
+\r
+Set 3, vector#111:\r
+                       message=512-bit string: 13*00,01,50*00\r
+                          hash=1C2D889EABE9B8DF20AF4F82CB8E9F32\r
+\r
+Set 3, vector#112:\r
+                       message=512-bit string: 14*00,80,49*00\r
+                          hash=2CC4983246D6613B913C46A9A9626AC0\r
+\r
+Set 3, vector#113:\r
+                       message=512-bit string: 14*00,40,49*00\r
+                          hash=CA27C85CB612740C0B811B117080104E\r
+\r
+Set 3, vector#114:\r
+                       message=512-bit string: 14*00,20,49*00\r
+                          hash=15E7103C17842034916397988BBE4179\r
+\r
+Set 3, vector#115:\r
+                       message=512-bit string: 14*00,10,49*00\r
+                          hash=52C6EFB891B43888B59871EE62DE12C4\r
+\r
+Set 3, vector#116:\r
+                       message=512-bit string: 14*00,08,49*00\r
+                          hash=B62131086AFE3EA0965181CC25A4271C\r
+\r
+Set 3, vector#117:\r
+                       message=512-bit string: 14*00,04,49*00\r
+                          hash=F14EB6ABA0B197361A0008A2F7BD2C17\r
+\r
+Set 3, vector#118:\r
+                       message=512-bit string: 14*00,02,49*00\r
+                          hash=28DEDF5CD293E20E8D4724DE72EF21B4\r
+\r
+Set 3, vector#119:\r
+                       message=512-bit string: 14*00,01,49*00\r
+                          hash=D734625FCFCECAE9E6422BC9B0E25C09\r
+\r
+Set 3, vector#120:\r
+                       message=512-bit string: 15*00,80,48*00\r
+                          hash=4837F0FC7F4477E20897DC342E8A441A\r
+\r
+Set 3, vector#121:\r
+                       message=512-bit string: 15*00,40,48*00\r
+                          hash=1707597D3776B9FC9FA1880174591AF2\r
+\r
+Set 3, vector#122:\r
+                       message=512-bit string: 15*00,20,48*00\r
+                          hash=BF7B65F71482D88575422D0ED5B45F6B\r
+\r
+Set 3, vector#123:\r
+                       message=512-bit string: 15*00,10,48*00\r
+                          hash=D249809882892BAED703041E78B4E31F\r
+\r
+Set 3, vector#124:\r
+                       message=512-bit string: 15*00,08,48*00\r
+                          hash=80D4B2EFDAE671E9201C6EE54CF24744\r
+\r
+Set 3, vector#125:\r
+                       message=512-bit string: 15*00,04,48*00\r
+                          hash=A7517BC483991C3D517DAD8CB22AE90A\r
+\r
+Set 3, vector#126:\r
+                       message=512-bit string: 15*00,02,48*00\r
+                          hash=4FEC09054AF195AEE8BE25A69EEDAE9D\r
+\r
+Set 3, vector#127:\r
+                       message=512-bit string: 15*00,01,48*00\r
+                          hash=E8E8BBD894CC2E34C30580319F434B0D\r
+\r
+Set 3, vector#128:\r
+                       message=512-bit string: 16*00,80,47*00\r
+                          hash=B8BC4C030D9B5E7C21DAD46C64A01D47\r
+\r
+Set 3, vector#129:\r
+                       message=512-bit string: 16*00,40,47*00\r
+                          hash=2FE6FF005BD3DD6B7A0DD2E19B494D86\r
+\r
+Set 3, vector#130:\r
+                       message=512-bit string: 16*00,20,47*00\r
+                          hash=1F19F7138EF63D8E204761C6F94D7A66\r
+\r
+Set 3, vector#131:\r
+                       message=512-bit string: 16*00,10,47*00\r
+                          hash=4D068C3202A3E6672D423E18F2376590\r
+\r
+Set 3, vector#132:\r
+                       message=512-bit string: 16*00,08,47*00\r
+                          hash=1E9952941C130B19BB856BF7C575D776\r
+\r
+Set 3, vector#133:\r
+                       message=512-bit string: 16*00,04,47*00\r
+                          hash=B697FEB25C0DBE9B15AAF267CA43FB00\r
+\r
+Set 3, vector#134:\r
+                       message=512-bit string: 16*00,02,47*00\r
+                          hash=155EA0621E9038C14C0731059589FD1C\r
+\r
+Set 3, vector#135:\r
+                       message=512-bit string: 16*00,01,47*00\r
+                          hash=BD0C6E70CD8BDD76D1A785E807758744\r
+\r
+Set 3, vector#136:\r
+                       message=512-bit string: 17*00,80,46*00\r
+                          hash=9D769C10174B8913F7E8169AE915A753\r
+\r
+Set 3, vector#137:\r
+                       message=512-bit string: 17*00,40,46*00\r
+                          hash=025001736462C0854B38E97E36A6A722\r
+\r
+Set 3, vector#138:\r
+                       message=512-bit string: 17*00,20,46*00\r
+                          hash=BAAE5CD4937CE794C123719159FB04C3\r
+\r
+Set 3, vector#139:\r
+                       message=512-bit string: 17*00,10,46*00\r
+                          hash=3308EF5BBED8073DF6C40840B7CB1949\r
+\r
+Set 3, vector#140:\r
+                       message=512-bit string: 17*00,08,46*00\r
+                          hash=87162A4A837FD93A5E917C697471C471\r
+\r
+Set 3, vector#141:\r
+                       message=512-bit string: 17*00,04,46*00\r
+                          hash=C6F9639643E42CE1CD58FF5B1FC77F54\r
+\r
+Set 3, vector#142:\r
+                       message=512-bit string: 17*00,02,46*00\r
+                          hash=04684925D5CB72903C75586AFB22F824\r
+\r
+Set 3, vector#143:\r
+                       message=512-bit string: 17*00,01,46*00\r
+                          hash=0EB1E65C388190160ECF5A1B0B9D6264\r
+\r
+Set 3, vector#144:\r
+                       message=512-bit string: 18*00,80,45*00\r
+                          hash=C7257CEB571C737132D11B6521BE67EA\r
+\r
+Set 3, vector#145:\r
+                       message=512-bit string: 18*00,40,45*00\r
+                          hash=EE7648EF561CAE348C3DCC1344CA2D8D\r
+\r
+Set 3, vector#146:\r
+                       message=512-bit string: 18*00,20,45*00\r
+                          hash=18715BA9CAA905F7D42EE35BB9B6DAF0\r
+\r
+Set 3, vector#147:\r
+                       message=512-bit string: 18*00,10,45*00\r
+                          hash=81F7169AA6B34763F37EC296EDF8E777\r
+\r
+Set 3, vector#148:\r
+                       message=512-bit string: 18*00,08,45*00\r
+                          hash=16C8DFFC05C2E5A3FAB785169F655EA1\r
+\r
+Set 3, vector#149:\r
+                       message=512-bit string: 18*00,04,45*00\r
+                          hash=945DBB32B439F6746C1DCA85BCC19650\r
+\r
+Set 3, vector#150:\r
+                       message=512-bit string: 18*00,02,45*00\r
+                          hash=507294EA0591C0E74EAA016663A9D41B\r
+\r
+Set 3, vector#151:\r
+                       message=512-bit string: 18*00,01,45*00\r
+                          hash=DE75CF7B97DBB781D9B7B5D4AE8204C7\r
+\r
+Set 3, vector#152:\r
+                       message=512-bit string: 19*00,80,44*00\r
+                          hash=85D06D83AE3EF12D42A55DF38DE3905D\r
+\r
+Set 3, vector#153:\r
+                       message=512-bit string: 19*00,40,44*00\r
+                          hash=515433D6CD023AA480E8E111DC43C7B5\r
+\r
+Set 3, vector#154:\r
+                       message=512-bit string: 19*00,20,44*00\r
+                          hash=9839348A2E202C867FF409B2AD90E8E3\r
+\r
+Set 3, vector#155:\r
+                       message=512-bit string: 19*00,10,44*00\r
+                          hash=E8FB9977E83A56190180A77BF3CF73A0\r
+\r
+Set 3, vector#156:\r
+                       message=512-bit string: 19*00,08,44*00\r
+                          hash=5B80805194B94E300C6356B9316E0485\r
+\r
+Set 3, vector#157:\r
+                       message=512-bit string: 19*00,04,44*00\r
+                          hash=086E40611F0649CC5B330A0BCD430411\r
+\r
+Set 3, vector#158:\r
+                       message=512-bit string: 19*00,02,44*00\r
+                          hash=48C94CC7533CAB43EDBCC9828F0416C8\r
+\r
+Set 3, vector#159:\r
+                       message=512-bit string: 19*00,01,44*00\r
+                          hash=2B6F068A88D555E2E7802FC8A045EA47\r
+\r
+Set 3, vector#160:\r
+                       message=512-bit string: 20*00,80,43*00\r
+                          hash=2A346699E7C039F552426ACA283A666B\r
+\r
+Set 3, vector#161:\r
+                       message=512-bit string: 20*00,40,43*00\r
+                          hash=E302E0A7AF88DC248AE8EDC617197A36\r
+\r
+Set 3, vector#162:\r
+                       message=512-bit string: 20*00,20,43*00\r
+                          hash=6A7F062A9765B7E72FA96FA90DDD143E\r
+\r
+Set 3, vector#163:\r
+                       message=512-bit string: 20*00,10,43*00\r
+                          hash=CDBFDCC221EB2FFAA3786130098C8592\r
+\r
+Set 3, vector#164:\r
+                       message=512-bit string: 20*00,08,43*00\r
+                          hash=F5A9AFB7A3C5007C5AEE6ECFAAE9B40C\r
+\r
+Set 3, vector#165:\r
+                       message=512-bit string: 20*00,04,43*00\r
+                          hash=D5B00318E61E0F34BD1487EE222F7080\r
+\r
+Set 3, vector#166:\r
+                       message=512-bit string: 20*00,02,43*00\r
+                          hash=333CD297065AF4A6895006E9D4280142\r
+\r
+Set 3, vector#167:\r
+                       message=512-bit string: 20*00,01,43*00\r
+                          hash=32A631DB7E2CEEBDBEAFB4F875024DE8\r
+\r
+Set 3, vector#168:\r
+                       message=512-bit string: 21*00,80,42*00\r
+                          hash=AE560D63E7BB6F828FE0F86ADF29F86C\r
+\r
+Set 3, vector#169:\r
+                       message=512-bit string: 21*00,40,42*00\r
+                          hash=9CE9366DA2449989DD4EB7124B1424A3\r
+\r
+Set 3, vector#170:\r
+                       message=512-bit string: 21*00,20,42*00\r
+                          hash=BAD0D7713C2C6913C46F7F1A2A92B4A4\r
+\r
+Set 3, vector#171:\r
+                       message=512-bit string: 21*00,10,42*00\r
+                          hash=FD5D05F5B5EB324A2B594BA8D2435825\r
+\r
+Set 3, vector#172:\r
+                       message=512-bit string: 21*00,08,42*00\r
+                          hash=58E5890DD2E1DAA3F911EC6A9C33B88F\r
+\r
+Set 3, vector#173:\r
+                       message=512-bit string: 21*00,04,42*00\r
+                          hash=368AEBF2535160286C1508E8B0D8015A\r
+\r
+Set 3, vector#174:\r
+                       message=512-bit string: 21*00,02,42*00\r
+                          hash=F9BBF1F99BA8DE645D5DA4E4FC661B13\r
+\r
+Set 3, vector#175:\r
+                       message=512-bit string: 21*00,01,42*00\r
+                          hash=618688BF18F0A630D8AA26E0644FB20D\r
+\r
+Set 3, vector#176:\r
+                       message=512-bit string: 22*00,80,41*00\r
+                          hash=1EFCDB0E7B1510826FB1073DF48AA5EA\r
+\r
+Set 3, vector#177:\r
+                       message=512-bit string: 22*00,40,41*00\r
+                          hash=0D7D9124EA411E52CA2B01FFA1EE292A\r
+\r
+Set 3, vector#178:\r
+                       message=512-bit string: 22*00,20,41*00\r
+                          hash=BDA259C306268A65B348B575C2CA72CA\r
+\r
+Set 3, vector#179:\r
+                       message=512-bit string: 22*00,10,41*00\r
+                          hash=A3221BD958FEE82FF3C0374885B33138\r
+\r
+Set 3, vector#180:\r
+                       message=512-bit string: 22*00,08,41*00\r
+                          hash=3ECFA4CF473A94AC01EB576427B2620E\r
+\r
+Set 3, vector#181:\r
+                       message=512-bit string: 22*00,04,41*00\r
+                          hash=75A2FE3A9471A0D8D45EE5756C46DBD5\r
+\r
+Set 3, vector#182:\r
+                       message=512-bit string: 22*00,02,41*00\r
+                          hash=3106D91DCF01FDCF28203F8F2D9100DB\r
+\r
+Set 3, vector#183:\r
+                       message=512-bit string: 22*00,01,41*00\r
+                          hash=8B80DF449634ADD584C56EC82FA8B491\r
+\r
+Set 3, vector#184:\r
+                       message=512-bit string: 23*00,80,40*00\r
+                          hash=7642C132B0FF94C2585BFAB0DDD7F6AB\r
+\r
+Set 3, vector#185:\r
+                       message=512-bit string: 23*00,40,40*00\r
+                          hash=1D5E6A65A4ACA67ECD46104B81BE50CB\r
+\r
+Set 3, vector#186:\r
+                       message=512-bit string: 23*00,20,40*00\r
+                          hash=60E861BC3EDB744A966B43EBEDA7B56E\r
+\r
+Set 3, vector#187:\r
+                       message=512-bit string: 23*00,10,40*00\r
+                          hash=6D0BD086D12CEF697B746334883AE196\r
+\r
+Set 3, vector#188:\r
+                       message=512-bit string: 23*00,08,40*00\r
+                          hash=50B7EC4B54BDBBA0EF6D56765B29E2C0\r
+\r
+Set 3, vector#189:\r
+                       message=512-bit string: 23*00,04,40*00\r
+                          hash=20D8A4B3C11A4759963AF7A6429FA2C3\r
+\r
+Set 3, vector#190:\r
+                       message=512-bit string: 23*00,02,40*00\r
+                          hash=98FE37C528A7AE0E341B3DBCCD98EEA6\r
+\r
+Set 3, vector#191:\r
+                       message=512-bit string: 23*00,01,40*00\r
+                          hash=33D64C0B4E5A9E444252F0738B9C2DE0\r
+\r
+Set 3, vector#192:\r
+                       message=512-bit string: 24*00,80,39*00\r
+                          hash=5D2BE56802387E0D53C4374EEB8C82B6\r
+\r
+Set 3, vector#193:\r
+                       message=512-bit string: 24*00,40,39*00\r
+                          hash=5CB0C473C47139C526BDDB60043C68C2\r
+\r
+Set 3, vector#194:\r
+                       message=512-bit string: 24*00,20,39*00\r
+                          hash=EF271AF9F4401397DDB402C99A4F0F4E\r
+\r
+Set 3, vector#195:\r
+                       message=512-bit string: 24*00,10,39*00\r
+                          hash=72BF2334299E719FA84844CED300CD4A\r
+\r
+Set 3, vector#196:\r
+                       message=512-bit string: 24*00,08,39*00\r
+                          hash=E3FD2AC469580923C48AEE429B3562CB\r
+\r
+Set 3, vector#197:\r
+                       message=512-bit string: 24*00,04,39*00\r
+                          hash=267A19F7B8E18E2B4E720432139B6E8C\r
+\r
+Set 3, vector#198:\r
+                       message=512-bit string: 24*00,02,39*00\r
+                          hash=381382D00904888081A9552B81ED36BB\r
+\r
+Set 3, vector#199:\r
+                       message=512-bit string: 24*00,01,39*00\r
+                          hash=824D1F79E689A04CFD5EE69DDC580BE2\r
+\r
+Set 3, vector#200:\r
+                       message=512-bit string: 25*00,80,38*00\r
+                          hash=357C82CE0EB4F6F667DEF290C0D1D120\r
+\r
+Set 3, vector#201:\r
+                       message=512-bit string: 25*00,40,38*00\r
+                          hash=D389C3A8975C0AACB44104CCF632C1F8\r
+\r
+Set 3, vector#202:\r
+                       message=512-bit string: 25*00,20,38*00\r
+                          hash=03631F92DA0C67552BF7A026D679F723\r
+\r
+Set 3, vector#203:\r
+                       message=512-bit string: 25*00,10,38*00\r
+                          hash=CB0A3236BB2F2DC7B785BA63676A964D\r
+\r
+Set 3, vector#204:\r
+                       message=512-bit string: 25*00,08,38*00\r
+                          hash=79AC06CCCD507714BD453964ED787677\r
+\r
+Set 3, vector#205:\r
+                       message=512-bit string: 25*00,04,38*00\r
+                          hash=83B33925BED3AC0EB4F9AF6BC75F0D8B\r
+\r
+Set 3, vector#206:\r
+                       message=512-bit string: 25*00,02,38*00\r
+                          hash=221A948B265FA265ED0217AFA9448AC9\r
+\r
+Set 3, vector#207:\r
+                       message=512-bit string: 25*00,01,38*00\r
+                          hash=358FBC82B38B0A24D4AF61C87D6C62A5\r
+\r
+Set 3, vector#208:\r
+                       message=512-bit string: 26*00,80,37*00\r
+                          hash=66D9F3919AE352F3F16246EAD3074E75\r
+\r
+Set 3, vector#209:\r
+                       message=512-bit string: 26*00,40,37*00\r
+                          hash=84136628469F13A6D30C2F81D9FB8709\r
+\r
+Set 3, vector#210:\r
+                       message=512-bit string: 26*00,20,37*00\r
+                          hash=6B8D6430324A11559E31A92743F16644\r
+\r
+Set 3, vector#211:\r
+                       message=512-bit string: 26*00,10,37*00\r
+                          hash=F009B9C33611966B29B945EB38D2B130\r
+\r
+Set 3, vector#212:\r
+                       message=512-bit string: 26*00,08,37*00\r
+                          hash=DED34074FEDFCDBBCC4DA3074AEB5087\r
+\r
+Set 3, vector#213:\r
+                       message=512-bit string: 26*00,04,37*00\r
+                          hash=6A528A222478BCA9DFBFAC2A00B64E15\r
+\r
+Set 3, vector#214:\r
+                       message=512-bit string: 26*00,02,37*00\r
+                          hash=22C5635999C532034A3FBE8CCA3BFBAE\r
+\r
+Set 3, vector#215:\r
+                       message=512-bit string: 26*00,01,37*00\r
+                          hash=0C9193A1124BD00CEBB09A05CA6BAC7D\r
+\r
+Set 3, vector#216:\r
+                       message=512-bit string: 27*00,80,36*00\r
+                          hash=9EE0BA3AFFBC9610FBB0C1F93F98E957\r
+\r
+Set 3, vector#217:\r
+                       message=512-bit string: 27*00,40,36*00\r
+                          hash=40F6E1BAB20BC825462FA8B84B029E03\r
+\r
+Set 3, vector#218:\r
+                       message=512-bit string: 27*00,20,36*00\r
+                          hash=479AA5097DB0D27D906967DFE0359B94\r
+\r
+Set 3, vector#219:\r
+                       message=512-bit string: 27*00,10,36*00\r
+                          hash=4EE4F2F35E36A2729EA0BB07658CEF83\r
+\r
+Set 3, vector#220:\r
+                       message=512-bit string: 27*00,08,36*00\r
+                          hash=A7D27906D1889C91C565FEB36D3E41E5\r
+\r
+Set 3, vector#221:\r
+                       message=512-bit string: 27*00,04,36*00\r
+                          hash=488D5CD0C76DEEB44D839F0280F42BD8\r
+\r
+Set 3, vector#222:\r
+                       message=512-bit string: 27*00,02,36*00\r
+                          hash=3383D0E16168120B3A440D5CB517E65C\r
+\r
+Set 3, vector#223:\r
+                       message=512-bit string: 27*00,01,36*00\r
+                          hash=049F7E9F7A579E9DC8CB2E90370B7DFD\r
+\r
+Set 3, vector#224:\r
+                       message=512-bit string: 28*00,80,35*00\r
+                          hash=F15759B10756BBC1F057174E11FBEA3C\r
+\r
+Set 3, vector#225:\r
+                       message=512-bit string: 28*00,40,35*00\r
+                          hash=9E915844865C745CDDAAE9086D67CB7C\r
+\r
+Set 3, vector#226:\r
+                       message=512-bit string: 28*00,20,35*00\r
+                          hash=3C5A2485AA83037AE41529AE190DF88B\r
+\r
+Set 3, vector#227:\r
+                       message=512-bit string: 28*00,10,35*00\r
+                          hash=871E522A6D16C4A0E000C8809F9EC5F6\r
+\r
+Set 3, vector#228:\r
+                       message=512-bit string: 28*00,08,35*00\r
+                          hash=968B472E57E76D5D1E63476B38C58816\r
+\r
+Set 3, vector#229:\r
+                       message=512-bit string: 28*00,04,35*00\r
+                          hash=E662F9A0CE1298E18FE149BEE0504AB0\r
+\r
+Set 3, vector#230:\r
+                       message=512-bit string: 28*00,02,35*00\r
+                          hash=30C3AE4FBC27B9ECD88BBC21D8B3F55D\r
+\r
+Set 3, vector#231:\r
+                       message=512-bit string: 28*00,01,35*00\r
+                          hash=B4DC26D3BFED9ED9BBE0DBAF21DD95FF\r
+\r
+Set 3, vector#232:\r
+                       message=512-bit string: 29*00,80,34*00\r
+                          hash=F0EDA2E5CB682C4C82A6DED6E1A9E4E2\r
+\r
+Set 3, vector#233:\r
+                       message=512-bit string: 29*00,40,34*00\r
+                          hash=AE6E5FE9CD9B0B8FBBA08D86A73C1FC9\r
+\r
+Set 3, vector#234:\r
+                       message=512-bit string: 29*00,20,34*00\r
+                          hash=B0AF28AB9D0FC7EEE36A757E9A1ED66B\r
+\r
+Set 3, vector#235:\r
+                       message=512-bit string: 29*00,10,34*00\r
+                          hash=70F0627C98DF0A4282D20B07A6A05BA1\r
+\r
+Set 3, vector#236:\r
+                       message=512-bit string: 29*00,08,34*00\r
+                          hash=7CE886342A970ED79132994AA682BEBC\r
+\r
+Set 3, vector#237:\r
+                       message=512-bit string: 29*00,04,34*00\r
+                          hash=25313BE41F42B3D30E1CD065D73ACDD7\r
+\r
+Set 3, vector#238:\r
+                       message=512-bit string: 29*00,02,34*00\r
+                          hash=A90FA5EBF49DD9F4E77716C3C1E9765D\r
+\r
+Set 3, vector#239:\r
+                       message=512-bit string: 29*00,01,34*00\r
+                          hash=1F9DD8FC6AC8EFBC2D378D6AB44AAFE7\r
+\r
+Set 3, vector#240:\r
+                       message=512-bit string: 30*00,80,33*00\r
+                          hash=4B0858EEB2639659EACA7B7B7C3349A5\r
+\r
+Set 3, vector#241:\r
+                       message=512-bit string: 30*00,40,33*00\r
+                          hash=5E8280869101EF49835627FDFB13E5D3\r
+\r
+Set 3, vector#242:\r
+                       message=512-bit string: 30*00,20,33*00\r
+                          hash=0B495C962E6799B67D93F1B5B590C844\r
+\r
+Set 3, vector#243:\r
+                       message=512-bit string: 30*00,10,33*00\r
+                          hash=4DC7D22B8F29BEB964B2965191A11463\r
+\r
+Set 3, vector#244:\r
+                       message=512-bit string: 30*00,08,33*00\r
+                          hash=60768F63CFA2E88A75367561DF60FA01\r
+\r
+Set 3, vector#245:\r
+                       message=512-bit string: 30*00,04,33*00\r
+                          hash=009B7E32759B44054975D918DA7424CC\r
+\r
+Set 3, vector#246:\r
+                       message=512-bit string: 30*00,02,33*00\r
+                          hash=DC82A437FF020C9C9BC699ADF214D937\r
+\r
+Set 3, vector#247:\r
+                       message=512-bit string: 30*00,01,33*00\r
+                          hash=904D158775D4A8666D663AD2FB2E79A1\r
+\r
+Set 3, vector#248:\r
+                       message=512-bit string: 31*00,80,32*00\r
+                          hash=FC6B5B1628894C202D19C36A29BE2C98\r
+\r
+Set 3, vector#249:\r
+                       message=512-bit string: 31*00,40,32*00\r
+                          hash=AA186F907E4A59827646EC5DA8CB4B8C\r
+\r
+Set 3, vector#250:\r
+                       message=512-bit string: 31*00,20,32*00\r
+                          hash=C889405D3292C5F4866E2B82EB743FDB\r
+\r
+Set 3, vector#251:\r
+                       message=512-bit string: 31*00,10,32*00\r
+                          hash=2ACD03AC14947052515B8F311F759093\r
+\r
+Set 3, vector#252:\r
+                       message=512-bit string: 31*00,08,32*00\r
+                          hash=B4CDCE550EF4285C2851EF81B479FDE8\r
+\r
+Set 3, vector#253:\r
+                       message=512-bit string: 31*00,04,32*00\r
+                          hash=9D1FD01C05A09169E37ED94562BAAAF5\r
+\r
+Set 3, vector#254:\r
+                       message=512-bit string: 31*00,02,32*00\r
+                          hash=E97333985B140C769EF4CDBF13B5FBA3\r
+\r
+Set 3, vector#255:\r
+                       message=512-bit string: 31*00,01,32*00\r
+                          hash=29911578E644BDF6257D23B8D4DD0D38\r
+\r
+Set 3, vector#256:\r
+                       message=512-bit string: 32*00,80,31*00\r
+                          hash=ED9D395824171A7F82A0CB538433A22B\r
+\r
+Set 3, vector#257:\r
+                       message=512-bit string: 32*00,40,31*00\r
+                          hash=101BE3EECE1ED26CE794B90C6C5D0460\r
+\r
+Set 3, vector#258:\r
+                       message=512-bit string: 32*00,20,31*00\r
+                          hash=89B836293A99ED6E02D5DADE0121AC20\r
+\r
+Set 3, vector#259:\r
+                       message=512-bit string: 32*00,10,31*00\r
+                          hash=AEBBF1CFCA7CCE6941FA0B93B9E58B7A\r
+\r
+Set 3, vector#260:\r
+                       message=512-bit string: 32*00,08,31*00\r
+                          hash=C4714103FA3E1AC58C9AB450F4567764\r
+\r
+Set 3, vector#261:\r
+                       message=512-bit string: 32*00,04,31*00\r
+                          hash=499F861EE4EFB2FB38A00B97EFF10010\r
+\r
+Set 3, vector#262:\r
+                       message=512-bit string: 32*00,02,31*00\r
+                          hash=D95C0AD5BB39C47DB3B0D6EE7F354444\r
+\r
+Set 3, vector#263:\r
+                       message=512-bit string: 32*00,01,31*00\r
+                          hash=FB0E49A8512A6514C8E52E8F302C1313\r
+\r
+Set 3, vector#264:\r
+                       message=512-bit string: 33*00,80,30*00\r
+                          hash=92ACEF120453F4AF4AC41BF1970D7356\r
+\r
+Set 3, vector#265:\r
+                       message=512-bit string: 33*00,40,30*00\r
+                          hash=1F9836EE1AFDB7972819B91ABF856A4E\r
+\r
+Set 3, vector#266:\r
+                       message=512-bit string: 33*00,20,30*00\r
+                          hash=0C3D4612FC048FDAA32E4A94B6F1386F\r
+\r
+Set 3, vector#267:\r
+                       message=512-bit string: 33*00,10,30*00\r
+                          hash=7CE5B968386A1AC3759B4B4BA636D939\r
+\r
+Set 3, vector#268:\r
+                       message=512-bit string: 33*00,08,30*00\r
+                          hash=4250DA118C52D1BCD8C76D657535EC5E\r
+\r
+Set 3, vector#269:\r
+                       message=512-bit string: 33*00,04,30*00\r
+                          hash=07A7BDC93E71936D4358FF104F5C6F2B\r
+\r
+Set 3, vector#270:\r
+                       message=512-bit string: 33*00,02,30*00\r
+                          hash=39069C6B6051F6F0D270A0E04E91369E\r
+\r
+Set 3, vector#271:\r
+                       message=512-bit string: 33*00,01,30*00\r
+                          hash=882EE17FB046D8A07610C313AC5915DF\r
+\r
+Set 3, vector#272:\r
+                       message=512-bit string: 34*00,80,29*00\r
+                          hash=BEBF589B9A2561EDA0E6A08221882759\r
+\r
+Set 3, vector#273:\r
+                       message=512-bit string: 34*00,40,29*00\r
+                          hash=96C91B562423BCD0727E0A0731D797AC\r
+\r
+Set 3, vector#274:\r
+                       message=512-bit string: 34*00,20,29*00\r
+                          hash=421B5C3068FC2555A4DF70B3817B8780\r
+\r
+Set 3, vector#275:\r
+                       message=512-bit string: 34*00,10,29*00\r
+                          hash=43D4E2EA49CD56875A788AE9E892D9C5\r
+\r
+Set 3, vector#276:\r
+                       message=512-bit string: 34*00,08,29*00\r
+                          hash=67FDD0B32AC1C39FC3331B3CAF957E2E\r
+\r
+Set 3, vector#277:\r
+                       message=512-bit string: 34*00,04,29*00\r
+                          hash=3B1290877EE8C9D6C0785D7D08B13578\r
+\r
+Set 3, vector#278:\r
+                       message=512-bit string: 34*00,02,29*00\r
+                          hash=239986662C2E2FDD2DA5C8EBD9AC78B4\r
+\r
+Set 3, vector#279:\r
+                       message=512-bit string: 34*00,01,29*00\r
+                          hash=1FDF66EA7A8791B4DBD42B3D97624788\r
+\r
+Set 3, vector#280:\r
+                       message=512-bit string: 35*00,80,28*00\r
+                          hash=6831072E80D199D3C4A348AE6DD143D0\r
+\r
+Set 3, vector#281:\r
+                       message=512-bit string: 35*00,40,28*00\r
+                          hash=9470D664B893EFF4D79B36ED46D9493F\r
+\r
+Set 3, vector#282:\r
+                       message=512-bit string: 35*00,20,28*00\r
+                          hash=4B635B3106408769F8F1CD71EF4AF402\r
+\r
+Set 3, vector#283:\r
+                       message=512-bit string: 35*00,10,28*00\r
+                          hash=FC7ABB2218193926602C5BE159EF2157\r
+\r
+Set 3, vector#284:\r
+                       message=512-bit string: 35*00,08,28*00\r
+                          hash=8F6D97EC60BBF7BE9F9E2DE37B495D9D\r
+\r
+Set 3, vector#285:\r
+                       message=512-bit string: 35*00,04,28*00\r
+                          hash=A921143B8BCA6CAC4B44D946E5948537\r
+\r
+Set 3, vector#286:\r
+                       message=512-bit string: 35*00,02,28*00\r
+                          hash=DD2EB5678E96DE9148B8851680016F63\r
+\r
+Set 3, vector#287:\r
+                       message=512-bit string: 35*00,01,28*00\r
+                          hash=04F0A7E368A6FEF21524BEB4DC5310C2\r
+\r
+Set 3, vector#288:\r
+                       message=512-bit string: 36*00,80,27*00\r
+                          hash=07BED9042B3422E6158DA127D4C2BD60\r
+\r
+Set 3, vector#289:\r
+                       message=512-bit string: 36*00,40,27*00\r
+                          hash=D47C8F862F2A5DA9FAA888FDA124808B\r
+\r
+Set 3, vector#290:\r
+                       message=512-bit string: 36*00,20,27*00\r
+                          hash=C2C749BF832F924E379EAC89959694C3\r
+\r
+Set 3, vector#291:\r
+                       message=512-bit string: 36*00,10,27*00\r
+                          hash=4096823ABA928A856D6724FD91C57D3D\r
+\r
+Set 3, vector#292:\r
+                       message=512-bit string: 36*00,08,27*00\r
+                          hash=B731BBD56CFC1E3EFB11F717E494EA82\r
+\r
+Set 3, vector#293:\r
+                       message=512-bit string: 36*00,04,27*00\r
+                          hash=A4F83A8ACD7A56B5200834DFF5ABA455\r
+\r
+Set 3, vector#294:\r
+                       message=512-bit string: 36*00,02,27*00\r
+                          hash=1ECA937A011FD3C181A455D5DCDDAC73\r
+\r
+Set 3, vector#295:\r
+                       message=512-bit string: 36*00,01,27*00\r
+                          hash=F481C363C8AB7EF5AC2DD6B4389BF62F\r
+\r
+Set 3, vector#296:\r
+                       message=512-bit string: 37*00,80,26*00\r
+                          hash=5E6906AD1D5495F44366D61FDD593689\r
+\r
+Set 3, vector#297:\r
+                       message=512-bit string: 37*00,40,26*00\r
+                          hash=033F089D5B15DF34AEE9862A2998B190\r
+\r
+Set 3, vector#298:\r
+                       message=512-bit string: 37*00,20,26*00\r
+                          hash=C5B96A88C4D30AC218A00FE8C8A5FE0E\r
+\r
+Set 3, vector#299:\r
+                       message=512-bit string: 37*00,10,26*00\r
+                          hash=ECA700AA944E6014C5336A0A797E9EA5\r
+\r
+Set 3, vector#300:\r
+                       message=512-bit string: 37*00,08,26*00\r
+                          hash=9822EA7178B96DC5156EF33477D9FFF6\r
+\r
+Set 3, vector#301:\r
+                       message=512-bit string: 37*00,04,26*00\r
+                          hash=5EEEB310879425F489A2910A1E5BF85B\r
+\r
+Set 3, vector#302:\r
+                       message=512-bit string: 37*00,02,26*00\r
+                          hash=09C86FFA6114D9356DDD340B829B8315\r
+\r
+Set 3, vector#303:\r
+                       message=512-bit string: 37*00,01,26*00\r
+                          hash=9A7120E4C17EBCE75121C55F56EA7122\r
+\r
+Set 3, vector#304:\r
+                       message=512-bit string: 38*00,80,25*00\r
+                          hash=B3632C95BCAB4E24EE5333AA2F28941B\r
+\r
+Set 3, vector#305:\r
+                       message=512-bit string: 38*00,40,25*00\r
+                          hash=3C5C4A9AD5BA676E0F916621C4D09398\r
+\r
+Set 3, vector#306:\r
+                       message=512-bit string: 38*00,20,25*00\r
+                          hash=723FD90024007F7103E98DA58890DE41\r
+\r
+Set 3, vector#307:\r
+                       message=512-bit string: 38*00,10,25*00\r
+                          hash=8C83B58202FE44078263C22E3329B2A6\r
+\r
+Set 3, vector#308:\r
+                       message=512-bit string: 38*00,08,25*00\r
+                          hash=4E8FD8E2758CD544E6682B987AE13820\r
+\r
+Set 3, vector#309:\r
+                       message=512-bit string: 38*00,04,25*00\r
+                          hash=4B5A95DBC9911A08B27D33F5B606BC1C\r
+\r
+Set 3, vector#310:\r
+                       message=512-bit string: 38*00,02,25*00\r
+                          hash=B8CE619A1D6B9956E0B54DB4B295994C\r
+\r
+Set 3, vector#311:\r
+                       message=512-bit string: 38*00,01,25*00\r
+                          hash=4A5F3B1A66788529448A43F3E12AF39D\r
+\r
+Set 3, vector#312:\r
+                       message=512-bit string: 39*00,80,24*00\r
+                          hash=DFEBB879EC199A81A4D3B4A8B435DD4C\r
+\r
+Set 3, vector#313:\r
+                       message=512-bit string: 39*00,40,24*00\r
+                          hash=06F8D0A5735612DD5967037B7CDAC850\r
+\r
+Set 3, vector#314:\r
+                       message=512-bit string: 39*00,20,24*00\r
+                          hash=E57BCB5946E8F7058DB6528F61C430FA\r
+\r
+Set 3, vector#315:\r
+                       message=512-bit string: 39*00,10,24*00\r
+                          hash=D99EBFDA2BB73EED3665216E8C2A1CF1\r
+\r
+Set 3, vector#316:\r
+                       message=512-bit string: 39*00,08,24*00\r
+                          hash=61C9AA0D28C04D6DD753EC855214149E\r
+\r
+Set 3, vector#317:\r
+                       message=512-bit string: 39*00,04,24*00\r
+                          hash=3A6070C3732E697E7FC826E8EEB5094C\r
+\r
+Set 3, vector#318:\r
+                       message=512-bit string: 39*00,02,24*00\r
+                          hash=063DEEAE397AE2C6F3A6AE4B98AB2C7A\r
+\r
+Set 3, vector#319:\r
+                       message=512-bit string: 39*00,01,24*00\r
+                          hash=9D15B95AEB06B324A0134A1F9976DCB4\r
+\r
+Set 3, vector#320:\r
+                       message=512-bit string: 40*00,80,23*00\r
+                          hash=434B09EA2CCB9C84EE9D5E53224A1AEF\r
+\r
+Set 3, vector#321:\r
+                       message=512-bit string: 40*00,40,23*00\r
+                          hash=EC30D78EC1CE0EF63367AAEB083161BB\r
+\r
+Set 3, vector#322:\r
+                       message=512-bit string: 40*00,20,23*00\r
+                          hash=CAA711A199F4A91B0B04DD7D7226ADE7\r
+\r
+Set 3, vector#323:\r
+                       message=512-bit string: 40*00,10,23*00\r
+                          hash=4A7A550DEDFF320DDA0A5538EC0CAA5B\r
+\r
+Set 3, vector#324:\r
+                       message=512-bit string: 40*00,08,23*00\r
+                          hash=EF5BF0E556BB02C413E3E721EE46CE8E\r
+\r
+Set 3, vector#325:\r
+                       message=512-bit string: 40*00,04,23*00\r
+                          hash=AE78A69932F7567419555CB281CC43FB\r
+\r
+Set 3, vector#326:\r
+                       message=512-bit string: 40*00,02,23*00\r
+                          hash=D4974DF3B1C5C570F9EDBBC36B4E0EFA\r
+\r
+Set 3, vector#327:\r
+                       message=512-bit string: 40*00,01,23*00\r
+                          hash=66F4FC209A7DC510FD540DB13FA5A9D0\r
+\r
+Set 3, vector#328:\r
+                       message=512-bit string: 41*00,80,22*00\r
+                          hash=D8B0C69B1460D390394B18A8291CCAE6\r
+\r
+Set 3, vector#329:\r
+                       message=512-bit string: 41*00,40,22*00\r
+                          hash=842F8BAE44E33E459870B947FBA846A4\r
+\r
+Set 3, vector#330:\r
+                       message=512-bit string: 41*00,20,22*00\r
+                          hash=19EE32DC24E80C8E41A1DE95B555C3DB\r
+\r
+Set 3, vector#331:\r
+                       message=512-bit string: 41*00,10,22*00\r
+                          hash=5EC5971D4C35A16E4DF4957454C9AC67\r
+\r
+Set 3, vector#332:\r
+                       message=512-bit string: 41*00,08,22*00\r
+                          hash=28712A9C1B541BF38BDD3579D050D5CB\r
+\r
+Set 3, vector#333:\r
+                       message=512-bit string: 41*00,04,22*00\r
+                          hash=6A6B51E428A95BEEA6F4D4597296E03D\r
+\r
+Set 3, vector#334:\r
+                       message=512-bit string: 41*00,02,22*00\r
+                          hash=14D77332F92E1C1BA396812696946307\r
+\r
+Set 3, vector#335:\r
+                       message=512-bit string: 41*00,01,22*00\r
+                          hash=3494210E35210F36EF5863E9654FE203\r
+\r
+Set 3, vector#336:\r
+                       message=512-bit string: 42*00,80,21*00\r
+                          hash=2153AFCA13686918AD74D84B91B3FD7E\r
+\r
+Set 3, vector#337:\r
+                       message=512-bit string: 42*00,40,21*00\r
+                          hash=E8C2D6FDA486A004774D642971D299DE\r
+\r
+Set 3, vector#338:\r
+                       message=512-bit string: 42*00,20,21*00\r
+                          hash=D8BFD743BAC554D9FAEE587568C779C9\r
+\r
+Set 3, vector#339:\r
+                       message=512-bit string: 42*00,10,21*00\r
+                          hash=3C6D50F6E8B2DF1F0170DD1F5078005B\r
+\r
+Set 3, vector#340:\r
+                       message=512-bit string: 42*00,08,21*00\r
+                          hash=904751732AD4A6DD1633F6F32FE15B6C\r
+\r
+Set 3, vector#341:\r
+                       message=512-bit string: 42*00,04,21*00\r
+                          hash=6F6458AC973D5227EA1FA11BDDCF5C28\r
+\r
+Set 3, vector#342:\r
+                       message=512-bit string: 42*00,02,21*00\r
+                          hash=3512A0D0699AB677C0E8D18AA60669F5\r
+\r
+Set 3, vector#343:\r
+                       message=512-bit string: 42*00,01,21*00\r
+                          hash=D20E8CE906D28EB16A79AA50133D0390\r
+\r
+Set 3, vector#344:\r
+                       message=512-bit string: 43*00,80,20*00\r
+                          hash=FA25C49644FE02B2DCC09B21DC80CC8C\r
+\r
+Set 3, vector#345:\r
+                       message=512-bit string: 43*00,40,20*00\r
+                          hash=BEF7CB2C5BB419A274DB5F752B58789B\r
+\r
+Set 3, vector#346:\r
+                       message=512-bit string: 43*00,20,20*00\r
+                          hash=4E5B96D2A37D53FAD56E1011F83A9B95\r
+\r
+Set 3, vector#347:\r
+                       message=512-bit string: 43*00,10,20*00\r
+                          hash=F896E7E529BA2C51F35FA96713A90A54\r
+\r
+Set 3, vector#348:\r
+                       message=512-bit string: 43*00,08,20*00\r
+                          hash=08A7042023558FEFE2EED405784152BC\r
+\r
+Set 3, vector#349:\r
+                       message=512-bit string: 43*00,04,20*00\r
+                          hash=793B08BDBF6FE53A4DABF59D0F3065E9\r
+\r
+Set 3, vector#350:\r
+                       message=512-bit string: 43*00,02,20*00\r
+                          hash=AA147CCCFE9C4D8DB5B53CB30DD9E06F\r
+\r
+Set 3, vector#351:\r
+                       message=512-bit string: 43*00,01,20*00\r
+                          hash=5D59349615747260835F2453EEE6BC5B\r
+\r
+Set 3, vector#352:\r
+                       message=512-bit string: 44*00,80,19*00\r
+                          hash=CC729FB233027898E5C518AF9B545EB0\r
+\r
+Set 3, vector#353:\r
+                       message=512-bit string: 44*00,40,19*00\r
+                          hash=8B6E6D2982109FF64A86951CF1DB22E6\r
+\r
+Set 3, vector#354:\r
+                       message=512-bit string: 44*00,20,19*00\r
+                          hash=2C979E5B5505F99C0285462C6E9A2585\r
+\r
+Set 3, vector#355:\r
+                       message=512-bit string: 44*00,10,19*00\r
+                          hash=5E921F1CDB50574A1D42A318F72F4E06\r
+\r
+Set 3, vector#356:\r
+                       message=512-bit string: 44*00,08,19*00\r
+                          hash=91C95A8DCA2CA8989CE17EC38A6388A7\r
+\r
+Set 3, vector#357:\r
+                       message=512-bit string: 44*00,04,19*00\r
+                          hash=684120A9CFAB2CD256FA26077E98D848\r
+\r
+Set 3, vector#358:\r
+                       message=512-bit string: 44*00,02,19*00\r
+                          hash=FBB5156D83A78CB68DC5DF712C253D1A\r
+\r
+Set 3, vector#359:\r
+                       message=512-bit string: 44*00,01,19*00\r
+                          hash=3CB2BDC773A346D47EE802D67D547693\r
+\r
+Set 3, vector#360:\r
+                       message=512-bit string: 45*00,80,18*00\r
+                          hash=DBF8F334AB91DED574DD285F8C000FF4\r
+\r
+Set 3, vector#361:\r
+                       message=512-bit string: 45*00,40,18*00\r
+                          hash=0B46FA6EE628F27B47F0A4A2596EADEC\r
+\r
+Set 3, vector#362:\r
+                       message=512-bit string: 45*00,20,18*00\r
+                          hash=EBDFAF3A03CB6F6B132DC4978D68995C\r
+\r
+Set 3, vector#363:\r
+                       message=512-bit string: 45*00,10,18*00\r
+                          hash=1B8832D27893A6F8B971EF9145CAED46\r
+\r
+Set 3, vector#364:\r
+                       message=512-bit string: 45*00,08,18*00\r
+                          hash=C7424DA41E411A7DBD0EBD1182DE61A3\r
+\r
+Set 3, vector#365:\r
+                       message=512-bit string: 45*00,04,18*00\r
+                          hash=4E66E56FD2AD4E534C43A9976DB2C75E\r
+\r
+Set 3, vector#366:\r
+                       message=512-bit string: 45*00,02,18*00\r
+                          hash=760C2D53D55FBD65E7DAED31E4F463CF\r
+\r
+Set 3, vector#367:\r
+                       message=512-bit string: 45*00,01,18*00\r
+                          hash=D517E380A8C618BBA8169A905224AD4A\r
+\r
+Set 3, vector#368:\r
+                       message=512-bit string: 46*00,80,17*00\r
+                          hash=3031C0316DE64B89C3E0780FE5C2ECE6\r
+\r
+Set 3, vector#369:\r
+                       message=512-bit string: 46*00,40,17*00\r
+                          hash=E11DDBFE49C7D15D4605FE051F7DC13C\r
+\r
+Set 3, vector#370:\r
+                       message=512-bit string: 46*00,20,17*00\r
+                          hash=6AAED62F00954A26BF916E0C245ACF42\r
+\r
+Set 3, vector#371:\r
+                       message=512-bit string: 46*00,10,17*00\r
+                          hash=FF448413805677217C354881E17FD9E5\r
+\r
+Set 3, vector#372:\r
+                       message=512-bit string: 46*00,08,17*00\r
+                          hash=908FD38B278D2DF6E24A13DD924C484D\r
+\r
+Set 3, vector#373:\r
+                       message=512-bit string: 46*00,04,17*00\r
+                          hash=152F4843E348EFE4E73E74E0CF4B8219\r
+\r
+Set 3, vector#374:\r
+                       message=512-bit string: 46*00,02,17*00\r
+                          hash=E21E3D6E39C1F98BFE666A2C69520211\r
+\r
+Set 3, vector#375:\r
+                       message=512-bit string: 46*00,01,17*00\r
+                          hash=E07EA5D16AEB8431BFB016EE7BD0C5CC\r
+\r
+Set 3, vector#376:\r
+                       message=512-bit string: 47*00,80,16*00\r
+                          hash=AFF6A755F2ABD47A06165D5C28E125BB\r
+\r
+Set 3, vector#377:\r
+                       message=512-bit string: 47*00,40,16*00\r
+                          hash=DCE5532469BDD235444DF3608D98EBF0\r
+\r
+Set 3, vector#378:\r
+                       message=512-bit string: 47*00,20,16*00\r
+                          hash=DA4808CEDCF6FD31715854CF73CC3383\r
+\r
+Set 3, vector#379:\r
+                       message=512-bit string: 47*00,10,16*00\r
+                          hash=22D2C86CA8BE7782C2239D51CC285A52\r
+\r
+Set 3, vector#380:\r
+                       message=512-bit string: 47*00,08,16*00\r
+                          hash=6DE111AC57EEC38FF4F5B8B458F35C20\r
+\r
+Set 3, vector#381:\r
+                       message=512-bit string: 47*00,04,16*00\r
+                          hash=0169943B9748514AB5D0083D5174F7F0\r
+\r
+Set 3, vector#382:\r
+                       message=512-bit string: 47*00,02,16*00\r
+                          hash=C1EB9BCEEC97EBD8E6589C2CE337033F\r
+\r
+Set 3, vector#383:\r
+                       message=512-bit string: 47*00,01,16*00\r
+                          hash=ECB3F11368167148C7D35CAD06FF0C6C\r
+\r
+Set 3, vector#384:\r
+                       message=512-bit string: 48*00,80,15*00\r
+                          hash=9A42CB788CDEE1C20EEC7B16F294E184\r
+\r
+Set 3, vector#385:\r
+                       message=512-bit string: 48*00,40,15*00\r
+                          hash=2CCF587C931D62CAC815676A6A6457B3\r
+\r
+Set 3, vector#386:\r
+                       message=512-bit string: 48*00,20,15*00\r
+                          hash=F6F2004BC97D03608CABB0BD44E998A1\r
+\r
+Set 3, vector#387:\r
+                       message=512-bit string: 48*00,10,15*00\r
+                          hash=7C80829659877A03938CC796BA738DEF\r
+\r
+Set 3, vector#388:\r
+                       message=512-bit string: 48*00,08,15*00\r
+                          hash=4CA3F42094A36B4FE4DC893BFB813310\r
+\r
+Set 3, vector#389:\r
+                       message=512-bit string: 48*00,04,15*00\r
+                          hash=474513BB6D0C0F73A63DFE920210216E\r
+\r
+Set 3, vector#390:\r
+                       message=512-bit string: 48*00,02,15*00\r
+                          hash=431BE2611DFFD6DE4EAB6936E0E497DA\r
+\r
+Set 3, vector#391:\r
+                       message=512-bit string: 48*00,01,15*00\r
+                          hash=813B32050FEDCDB719F95A646E888560\r
+\r
+Set 3, vector#392:\r
+                       message=512-bit string: 49*00,80,14*00\r
+                          hash=49384B8B60C1A065346A995BB31CEA47\r
+\r
+Set 3, vector#393:\r
+                       message=512-bit string: 49*00,40,14*00\r
+                          hash=B97D733DE2C048FF0C01891114D0AFB5\r
+\r
+Set 3, vector#394:\r
+                       message=512-bit string: 49*00,20,14*00\r
+                          hash=8B8346E0F1D63A73CE1CCAD90D2CF097\r
+\r
+Set 3, vector#395:\r
+                       message=512-bit string: 49*00,10,14*00\r
+                          hash=137398F39EF97AE7B6B682F8253CE123\r
+\r
+Set 3, vector#396:\r
+                       message=512-bit string: 49*00,08,14*00\r
+                          hash=6E244EC4300F40A8DCBE38A446DE9006\r
+\r
+Set 3, vector#397:\r
+                       message=512-bit string: 49*00,04,14*00\r
+                          hash=0286C3F8D66DAB8FF8CD925A1B9D7140\r
+\r
+Set 3, vector#398:\r
+                       message=512-bit string: 49*00,02,14*00\r
+                          hash=788CC909AD9F81FEF4749B8B58C92473\r
+\r
+Set 3, vector#399:\r
+                       message=512-bit string: 49*00,01,14*00\r
+                          hash=A05C4E77731A523F396EADA342D6E66A\r
+\r
+Set 3, vector#400:\r
+                       message=512-bit string: 50*00,80,13*00\r
+                          hash=5C5208058E887AEFA1A32E8988A37455\r
+\r
+Set 3, vector#401:\r
+                       message=512-bit string: 50*00,40,13*00\r
+                          hash=7567725FF801A30914E07CFFE1A6C49A\r
+\r
+Set 3, vector#402:\r
+                       message=512-bit string: 50*00,20,13*00\r
+                          hash=346DE7910432F66E09BAC32E34EB1B58\r
+\r
+Set 3, vector#403:\r
+                       message=512-bit string: 50*00,10,13*00\r
+                          hash=145C587A9887EFE3D3E0E758B7589D39\r
+\r
+Set 3, vector#404:\r
+                       message=512-bit string: 50*00,08,13*00\r
+                          hash=E0CFD61D4F4604C26E299A7F1FF60A9B\r
+\r
+Set 3, vector#405:\r
+                       message=512-bit string: 50*00,04,13*00\r
+                          hash=031525ABB3AA04A8F9FF4EEA20955BF2\r
+\r
+Set 3, vector#406:\r
+                       message=512-bit string: 50*00,02,13*00\r
+                          hash=8FC8AFDFFBA17F5F6FECAAB9B52DF2A6\r
+\r
+Set 3, vector#407:\r
+                       message=512-bit string: 50*00,01,13*00\r
+                          hash=1959366FB1C73BE165B12D3A972BBBF7\r
+\r
+Set 3, vector#408:\r
+                       message=512-bit string: 51*00,80,12*00\r
+                          hash=822496D965F7D85215D7752AFF1C03CC\r
+\r
+Set 3, vector#409:\r
+                       message=512-bit string: 51*00,40,12*00\r
+                          hash=C2E0DE6429654FB9590324DCF1D92D8F\r
+\r
+Set 3, vector#410:\r
+                       message=512-bit string: 51*00,20,12*00\r
+                          hash=4D360BBE43BE367A2A7EE6BFF0ECDC65\r
+\r
+Set 3, vector#411:\r
+                       message=512-bit string: 51*00,10,12*00\r
+                          hash=83351D012FEF8C39D6C8ED2764365222\r
+\r
+Set 3, vector#412:\r
+                       message=512-bit string: 51*00,08,12*00\r
+                          hash=68B502C668B792ED079866770B10C965\r
+\r
+Set 3, vector#413:\r
+                       message=512-bit string: 51*00,04,12*00\r
+                          hash=9160B774CBD240B9971CC01C694254EA\r
+\r
+Set 3, vector#414:\r
+                       message=512-bit string: 51*00,02,12*00\r
+                          hash=772D02B47D9A881ED8793AEA6DB156A2\r
+\r
+Set 3, vector#415:\r
+                       message=512-bit string: 51*00,01,12*00\r
+                          hash=453952F734884B80C5843A05693F9BB5\r
+\r
+Set 3, vector#416:\r
+                       message=512-bit string: 52*00,80,11*00\r
+                          hash=F5816D1064596ABFF2E783455467626B\r
+\r
+Set 3, vector#417:\r
+                       message=512-bit string: 52*00,40,11*00\r
+                          hash=AB5FE94D6F3942B597087F55689F88E3\r
+\r
+Set 3, vector#418:\r
+                       message=512-bit string: 52*00,20,11*00\r
+                          hash=53CAAF5CBC27128942AB99FC82F93D16\r
+\r
+Set 3, vector#419:\r
+                       message=512-bit string: 52*00,10,11*00\r
+                          hash=4ECC87CE3E1663123FC0073032A46698\r
+\r
+Set 3, vector#420:\r
+                       message=512-bit string: 52*00,08,11*00\r
+                          hash=AEDD921FC1C61F882874AD4C852326E7\r
+\r
+Set 3, vector#421:\r
+                       message=512-bit string: 52*00,04,11*00\r
+                          hash=13B9902301C02A268AD8BF10B8F9E3A1\r
+\r
+Set 3, vector#422:\r
+                       message=512-bit string: 52*00,02,11*00\r
+                          hash=A223438271EB74888A765160D6522886\r
+\r
+Set 3, vector#423:\r
+                       message=512-bit string: 52*00,01,11*00\r
+                          hash=0ADAFB3AB3E613570405A34CD6F45F66\r
+\r
+Set 3, vector#424:\r
+                       message=512-bit string: 53*00,80,10*00\r
+                          hash=EAE6F63E52CD7468B6D0ECC4B071237C\r
+\r
+Set 3, vector#425:\r
+                       message=512-bit string: 53*00,40,10*00\r
+                          hash=18D3E8B9062752CAEBE9D883134AAABC\r
+\r
+Set 3, vector#426:\r
+                       message=512-bit string: 53*00,20,10*00\r
+                          hash=6EDF355D7837ABDFA212D2CD5BCB87D6\r
+\r
+Set 3, vector#427:\r
+                       message=512-bit string: 53*00,10,10*00\r
+                          hash=0A3ECD269F355AB60EEFBE4091F18AD5\r
+\r
+Set 3, vector#428:\r
+                       message=512-bit string: 53*00,08,10*00\r
+                          hash=6E7B760A6835B012538A335E380780E3\r
+\r
+Set 3, vector#429:\r
+                       message=512-bit string: 53*00,04,10*00\r
+                          hash=C662C5004355636CA82CD719F9D1C73E\r
+\r
+Set 3, vector#430:\r
+                       message=512-bit string: 53*00,02,10*00\r
+                          hash=F5AE69B217C1CF7244A23B131EDD92EA\r
+\r
+Set 3, vector#431:\r
+                       message=512-bit string: 53*00,01,10*00\r
+                          hash=C1932E05A9013D9F99F4D3E5276A119C\r
+\r
+Set 3, vector#432:\r
+                       message=512-bit string: 54*00,80, 9*00\r
+                          hash=A6B846C6737042EA576BE18DE7E02269\r
+\r
+Set 3, vector#433:\r
+                       message=512-bit string: 54*00,40, 9*00\r
+                          hash=F4152ECC66945DA718F7D9D555187B6C\r
+\r
+Set 3, vector#434:\r
+                       message=512-bit string: 54*00,20, 9*00\r
+                          hash=501779DF50469939215CCCE08A3A94D6\r
+\r
+Set 3, vector#435:\r
+                       message=512-bit string: 54*00,10, 9*00\r
+                          hash=C1ABB35E11F4BC38294874287BEE9AAF\r
+\r
+Set 3, vector#436:\r
+                       message=512-bit string: 54*00,08, 9*00\r
+                          hash=9C91D1E0FA615B35AE1BECB2246E6455\r
+\r
+Set 3, vector#437:\r
+                       message=512-bit string: 54*00,04, 9*00\r
+                          hash=0C0736C7063B09A489911E501C0150E3\r
+\r
+Set 3, vector#438:\r
+                       message=512-bit string: 54*00,02, 9*00\r
+                          hash=B38E7B51485EDD91FD7E9F4378E38816\r
+\r
+Set 3, vector#439:\r
+                       message=512-bit string: 54*00,01, 9*00\r
+                          hash=595EB1247564E5E2F0CD600972D5BDD1\r
+\r
+Set 3, vector#440:\r
+                       message=512-bit string: 55*00,80, 8*00\r
+                          hash=1903BA1EC1F52753FBB268F9F3CCD6B1\r
+\r
+Set 3, vector#441:\r
+                       message=512-bit string: 55*00,40, 8*00\r
+                          hash=AAD887A7C026424568B7ABD0811EB531\r
+\r
+Set 3, vector#442:\r
+                       message=512-bit string: 55*00,20, 8*00\r
+                          hash=A7045885FB7FCD4A53CB0F22C6CDB5AD\r
+\r
+Set 3, vector#443:\r
+                       message=512-bit string: 55*00,10, 8*00\r
+                          hash=CD5B21D3AA49BABBC11B111BBDF76EC9\r
+\r
+Set 3, vector#444:\r
+                       message=512-bit string: 55*00,08, 8*00\r
+                          hash=4643EF5500FDED7B08B5D69C62D5582D\r
+\r
+Set 3, vector#445:\r
+                       message=512-bit string: 55*00,04, 8*00\r
+                          hash=4B90DA4B10A0B514998EF664C3BAFF69\r
+\r
+Set 3, vector#446:\r
+                       message=512-bit string: 55*00,02, 8*00\r
+                          hash=3F93EDCBC0F9DAA89D2034C562F1BDFA\r
+\r
+Set 3, vector#447:\r
+                       message=512-bit string: 55*00,01, 8*00\r
+                          hash=6E4C987BE3A6B24B3E38F1CAFE963C1E\r
+\r
+Set 3, vector#448:\r
+                       message=512-bit string: 56*00,80, 7*00\r
+                          hash=F025E2F601BBD45F231B7DCC4056B365\r
+\r
+Set 3, vector#449:\r
+                       message=512-bit string: 56*00,40, 7*00\r
+                          hash=C6C66B75C45E8E06811AF898D995AE1C\r
+\r
+Set 3, vector#450:\r
+                       message=512-bit string: 56*00,20, 7*00\r
+                          hash=78A2026C6B2693223B902BE948136BB8\r
+\r
+Set 3, vector#451:\r
+                       message=512-bit string: 56*00,10, 7*00\r
+                          hash=E2BBAC6D03DDAF61E40CE15DBFBE90C3\r
+\r
+Set 3, vector#452:\r
+                       message=512-bit string: 56*00,08, 7*00\r
+                          hash=CDB03F27AEDB30F7E596343BECB734BD\r
+\r
+Set 3, vector#453:\r
+                       message=512-bit string: 56*00,04, 7*00\r
+                          hash=93E750C651C7948DA2A60699DF6DEDCA\r
+\r
+Set 3, vector#454:\r
+                       message=512-bit string: 56*00,02, 7*00\r
+                          hash=DEAF528DF04ACF72DE18B3217053D427\r
+\r
+Set 3, vector#455:\r
+                       message=512-bit string: 56*00,01, 7*00\r
+                          hash=46A254BF46ED3199BB635ECCDAF15885\r
+\r
+Set 3, vector#456:\r
+                       message=512-bit string: 57*00,80, 6*00\r
+                          hash=0FF7741D480328D0686A2DEC4B41B4AE\r
+\r
+Set 3, vector#457:\r
+                       message=512-bit string: 57*00,40, 6*00\r
+                          hash=E146B00D2369DC2DDDA083A8BB1A7DEE\r
+\r
+Set 3, vector#458:\r
+                       message=512-bit string: 57*00,20, 6*00\r
+                          hash=C87C5FF808384504E42BFD1BE5A712B1\r
+\r
+Set 3, vector#459:\r
+                       message=512-bit string: 57*00,10, 6*00\r
+                          hash=8275B17CEABDFEF760222DA01A35715D\r
+\r
+Set 3, vector#460:\r
+                       message=512-bit string: 57*00,08, 6*00\r
+                          hash=D3DD3D6F53B45B797778E7FEF28A8C5B\r
+\r
+Set 3, vector#461:\r
+                       message=512-bit string: 57*00,04, 6*00\r
+                          hash=E5F72DF56B978D8DB7E7EED04AF709B4\r
+\r
+Set 3, vector#462:\r
+                       message=512-bit string: 57*00,02, 6*00\r
+                          hash=0F5730004ACE61A069514071F184A1B6\r
+\r
+Set 3, vector#463:\r
+                       message=512-bit string: 57*00,01, 6*00\r
+                          hash=5B70D9641D978CE2E2CFFD7FB77710A9\r
+\r
+Set 3, vector#464:\r
+                       message=512-bit string: 58*00,80, 5*00\r
+                          hash=7EDDEF710BA2068E8598EE4D4359114D\r
+\r
+Set 3, vector#465:\r
+                       message=512-bit string: 58*00,40, 5*00\r
+                          hash=B89DFF15C70666B1F41D53C3EEFDF88B\r
+\r
+Set 3, vector#466:\r
+                       message=512-bit string: 58*00,20, 5*00\r
+                          hash=3762BACD52DC2AD602CFEFDBCCB86699\r
+\r
+Set 3, vector#467:\r
+                       message=512-bit string: 58*00,10, 5*00\r
+                          hash=EC0B054B6DF1C6622ACB55F025092521\r
+\r
+Set 3, vector#468:\r
+                       message=512-bit string: 58*00,08, 5*00\r
+                          hash=38C8CC15D9C50B404EB18E07F5C020DC\r
+\r
+Set 3, vector#469:\r
+                       message=512-bit string: 58*00,04, 5*00\r
+                          hash=B841829E581AA28D25B61890711D99C5\r
+\r
+Set 3, vector#470:\r
+                       message=512-bit string: 58*00,02, 5*00\r
+                          hash=D91E2A0CFD68A772D39A15DCB0061E72\r
+\r
+Set 3, vector#471:\r
+                       message=512-bit string: 58*00,01, 5*00\r
+                          hash=46D2ED6F3043A6201A7A9853320D70BA\r
+\r
+Set 3, vector#472:\r
+                       message=512-bit string: 59*00,80, 4*00\r
+                          hash=0E380317C0B7A38666CA700C54A86A7D\r
+\r
+Set 3, vector#473:\r
+                       message=512-bit string: 59*00,40, 4*00\r
+                          hash=6459F489263B4AA47205258F8844B57B\r
+\r
+Set 3, vector#474:\r
+                       message=512-bit string: 59*00,20, 4*00\r
+                          hash=67CF6FBF0D86024C9B54B140350298C2\r
+\r
+Set 3, vector#475:\r
+                       message=512-bit string: 59*00,10, 4*00\r
+                          hash=67D1FEFA06650699BBA2498D77422E48\r
+\r
+Set 3, vector#476:\r
+                       message=512-bit string: 59*00,08, 4*00\r
+                          hash=7EF6EEF95A7F051CFF31EB3F8906D7BD\r
+\r
+Set 3, vector#477:\r
+                       message=512-bit string: 59*00,04, 4*00\r
+                          hash=8EF040642F6A536C63556B8708BC17E5\r
+\r
+Set 3, vector#478:\r
+                       message=512-bit string: 59*00,02, 4*00\r
+                          hash=DB7648736FFA74596EB5C3B3918AEBA3\r
+\r
+Set 3, vector#479:\r
+                       message=512-bit string: 59*00,01, 4*00\r
+                          hash=01C0DCC29632E632E2D65D22C8D5A397\r
+\r
+Set 3, vector#480:\r
+                       message=512-bit string: 60*00,80, 3*00\r
+                          hash=505A6E9E779E4AC35767F624C815F2E2\r
+\r
+Set 3, vector#481:\r
+                       message=512-bit string: 60*00,40, 3*00\r
+                          hash=E5404AD29B710C5189669E150A710D29\r
+\r
+Set 3, vector#482:\r
+                       message=512-bit string: 60*00,20, 3*00\r
+                          hash=40BEE92CF590D130F7CD8DF31223B105\r
+\r
+Set 3, vector#483:\r
+                       message=512-bit string: 60*00,10, 3*00\r
+                          hash=A213CD218594A7F3EB14B627E1FC5B76\r
+\r
+Set 3, vector#484:\r
+                       message=512-bit string: 60*00,08, 3*00\r
+                          hash=F2ECA81F5EE194D356210A5E83657BCC\r
+\r
+Set 3, vector#485:\r
+                       message=512-bit string: 60*00,04, 3*00\r
+                          hash=BE42CF5328636668130F9000FD6B601C\r
+\r
+Set 3, vector#486:\r
+                       message=512-bit string: 60*00,02, 3*00\r
+                          hash=7D8CB103E55798EBC816DBB9D49B1B0F\r
+\r
+Set 3, vector#487:\r
+                       message=512-bit string: 60*00,01, 3*00\r
+                          hash=7996972214DBEA50ED400B5250E3AE6F\r
+\r
+Set 3, vector#488:\r
+                       message=512-bit string: 61*00,80, 2*00\r
+                          hash=47CAF317CF83F0D4B52015079A22067C\r
+\r
+Set 3, vector#489:\r
+                       message=512-bit string: 61*00,40, 2*00\r
+                          hash=2C8B88503B88BBF4E03F9112EADCAA1E\r
+\r
+Set 3, vector#490:\r
+                       message=512-bit string: 61*00,20, 2*00\r
+                          hash=27D5C2DBD350B6D18849CC5DFD690630\r
+\r
+Set 3, vector#491:\r
+                       message=512-bit string: 61*00,10, 2*00\r
+                          hash=F2F36909DBA92546CCC4536C529E1244\r
+\r
+Set 3, vector#492:\r
+                       message=512-bit string: 61*00,08, 2*00\r
+                          hash=A8F24846E4BEB0662FB1DB3448B9B80E\r
+\r
+Set 3, vector#493:\r
+                       message=512-bit string: 61*00,04, 2*00\r
+                          hash=15E190036F667CE0AE80DB61834DB56F\r
+\r
+Set 3, vector#494:\r
+                       message=512-bit string: 61*00,02, 2*00\r
+                          hash=EBC2C68270E129D7766887108739BAC9\r
+\r
+Set 3, vector#495:\r
+                       message=512-bit string: 61*00,01, 2*00\r
+                          hash=B6A4C6F85D391A98D0513E074B5313C5\r
+\r
+Set 3, vector#496:\r
+                       message=512-bit string: 62*00,80, 1*00\r
+                          hash=25F86F015DF2C1DB33B53BDAC1F7C37E\r
+\r
+Set 3, vector#497:\r
+                       message=512-bit string: 62*00,40, 1*00\r
+                          hash=26154B8662C7AB915CFD5D3AEACA736A\r
+\r
+Set 3, vector#498:\r
+                       message=512-bit string: 62*00,20, 1*00\r
+                          hash=1EFCFE1F115FE9DF8D60F1B985FEBE3A\r
+\r
+Set 3, vector#499:\r
+                       message=512-bit string: 62*00,10, 1*00\r
+                          hash=37DC0F6EDD8AC35C5A556081B41097DD\r
+\r
+Set 3, vector#500:\r
+                       message=512-bit string: 62*00,08, 1*00\r
+                          hash=E4B76A9A8F6BCA334439CB82892C2925\r
+\r
+Set 3, vector#501:\r
+                       message=512-bit string: 62*00,04, 1*00\r
+                          hash=934867C0BBFCB06C5BBA8A324EBF9EA4\r
+\r
+Set 3, vector#502:\r
+                       message=512-bit string: 62*00,02, 1*00\r
+                          hash=56859B2F54F496E8BB0A09231975842E\r
+\r
+Set 3, vector#503:\r
+                       message=512-bit string: 62*00,01, 1*00\r
+                          hash=7D7B4FB873242930EF536C6E80879BA1\r
+\r
+Set 3, vector#504:\r
+                       message=512-bit string: 63*00,80, 0*00\r
+                          hash=CC10DAD64C6DECDA5FBDD62A11BBE586\r
+\r
+Set 3, vector#505:\r
+                       message=512-bit string: 63*00,40, 0*00\r
+                          hash=83F78A4FAA4E4ED312DC33C6B2514700\r
+\r
+Set 3, vector#506:\r
+                       message=512-bit string: 63*00,20, 0*00\r
+                          hash=DDA2969799CEC4F270FCB69209474EC7\r
+\r
+Set 3, vector#507:\r
+                       message=512-bit string: 63*00,10, 0*00\r
+                          hash=8197D643B6A206825B566BFEC1461987\r
+\r
+Set 3, vector#508:\r
+                       message=512-bit string: 63*00,08, 0*00\r
+                          hash=638A19A3375D1CD4A6D597D0ED0FB2A3\r
+\r
+Set 3, vector#509:\r
+                       message=512-bit string: 63*00,04, 0*00\r
+                          hash=62881F317DE9E38108F29307239EC178\r
+\r
+Set 3, vector#510:\r
+                       message=512-bit string: 63*00,02, 0*00\r
+                          hash=441C9490934F4E743EF246C24576AF8E\r
+\r
+Set 3, vector#511:\r
+                       message=512-bit string: 63*00,01, 0*00\r
+                          hash=0B0BA2C1FE0416434ABD826DB682FAD5\r
+\r
+\r
+Test vectors -- set 4\r
+=====================\r
+\r
+Set 4, vector#  0:\r
+                       message=128 zero bits\r
+                          hash=4AE71336E44BF9BF79D2752E234818A5\r
+         iterated 100000 times=1A83F51285E4D89403D00C46EF8508FE\r
+\r
+\r
+\r
+End of test vectors\r
diff --git a/testvectors/rsa-pkcs-1v2-1-vec/pkcs1v15sign-vectors.txt b/testvectors/rsa-pkcs-1v2-1-vec/pkcs1v15sign-vectors.txt
new file mode 100644 (file)
index 0000000..178dd23
--- /dev/null
@@ -0,0 +1,9049 @@
+Test vectors for RSA PKCS#1 v1.5 Signature\r
+==========================================\r
+\r
+This file contains test vectors for the PKCS#1 v1.5 signature\r
+scheme with appendix. 15 RSA keys of different sizes have \r
+been generated. For each key, 20 random messages of length \r
+between 1 and 256 octets have been PKCS#1 v1.5 signed. \r
+As specified in PKCS#1, the block type for this operation \r
+is 1. The digest algorithm is SHA-1; i.e. the given message\r
+must be hashed and the SHA-1 hash must be encapsulated in a \r
+DigestInfo structure as specified in PKCS#1 v1.5. \r
+\r
+Key lengths:\r
+\r
+Key  1: 1024 bits\r
+Key  2: 1024 bits\r
+Key  3: 1024 bits\r
+Key  4: 1024 bits\r
+Key  5: 1024 bits\r
+Key  6: 1024 bits\r
+Key  7: 1025 bits\r
+Key  8: 1026 bits\r
+Key  9: 1027 bits\r
+Key 10: 1028 bits\r
+Key 11: 1029 bits\r
+Key 12: 1030 bits\r
+Key 13: 1031 bits\r
+Key 14: 1536 bits\r
+Key 15: 2048 bits\r
+\r
+These test vectors have been derived from the PSS test vectors.\r
+============================================================================\r
+# Thirteen RSA keys with bit sizes between 1024 and 1031, one 1536-bit key, \r
+# and one 2048-bit key are generated.\r
+\r
+# For each key, 20 random messages are PKCS#1 v1.5 signed.\r
+\r
+# Example 1: A 1024-bit RSA key pair\r
+# -----------------------------------\r
+\r
+\r
+# Public key\r
+# ----------\r
+\r
+# Modulus: \r
+a5 6e 4a 0e 70 10 17 58 9a 51 87 dc 7e a8 41 d1 \r
+56 f2 ec 0e 36 ad 52 a4 4d fe b1 e6 1f 7a d9 91 \r
+d8 c5 10 56 ff ed b1 62 b4 c0 f2 83 a1 2a 88 a3 \r
+94 df f5 26 ab 72 91 cb b3 07 ce ab fc e0 b1 df \r
+d5 cd 95 08 09 6d 5b 2b 8b 6d f5 d6 71 ef 63 77 \r
+c0 92 1c b2 3c 27 0a 70 e2 59 8e 6f f8 9d 19 f1 \r
+05 ac c2 d3 f0 cb 35 f2 92 80 e1 38 6b 6f 64 c4 \r
+ef 22 e1 e1 f2 0d 0c e8 cf fb 22 49 bd 9a 21 37 \r
+\r
+# Exponent: \r
+01 00 01 \r
+\r
+# Private key\r
+# -----------\r
+\r
+# Modulus: \r
+a5 6e 4a 0e 70 10 17 58 9a 51 87 dc 7e a8 41 d1 \r
+56 f2 ec 0e 36 ad 52 a4 4d fe b1 e6 1f 7a d9 91 \r
+d8 c5 10 56 ff ed b1 62 b4 c0 f2 83 a1 2a 88 a3 \r
+94 df f5 26 ab 72 91 cb b3 07 ce ab fc e0 b1 df \r
+d5 cd 95 08 09 6d 5b 2b 8b 6d f5 d6 71 ef 63 77 \r
+c0 92 1c b2 3c 27 0a 70 e2 59 8e 6f f8 9d 19 f1 \r
+05 ac c2 d3 f0 cb 35 f2 92 80 e1 38 6b 6f 64 c4 \r
+ef 22 e1 e1 f2 0d 0c e8 cf fb 22 49 bd 9a 21 37 \r
+\r
+# Public exponent: \r
+01 00 01 \r
+\r
+# Exponent: \r
+33 a5 04 2a 90 b2 7d 4f 54 51 ca 9b bb d0 b4 47 \r
+71 a1 01 af 88 43 40 ae f9 88 5f 2a 4b be 92 e8 \r
+94 a7 24 ac 3c 56 8c 8f 97 85 3a d0 7c 02 66 c8 \r
+c6 a3 ca 09 29 f1 e8 f1 12 31 88 44 29 fc 4d 9a \r
+e5 5f ee 89 6a 10 ce 70 7c 3e d7 e7 34 e4 47 27 \r
+a3 95 74 50 1a 53 26 83 10 9c 2a ba ca ba 28 3c \r
+31 b4 bd 2f 53 c3 ee 37 e3 52 ce e3 4f 9e 50 3b \r
+d8 0c 06 22 ad 79 c6 dc ee 88 35 47 c6 a3 b3 25 \r
+\r
+# Prime 1: \r
+e7 e8 94 27 20 a8 77 51 72 73 a3 56 05 3e a2 a1 \r
+bc 0c 94 aa 72 d5 5c 6e 86 29 6b 2d fc 96 79 48 \r
+c0 a7 2c bc cc a7 ea cb 35 70 6e 09 a1 df 55 a1 \r
+53 5b d9 b3 cc 34 16 0b 3b 6d cd 3e da 8e 64 43 \r
+\r
+# Prime 2: \r
+b6 9d ca 1c f7 d4 d7 ec 81 e7 5b 90 fc ca 87 4a \r
+bc de 12 3f d2 70 01 80 aa 90 47 9b 6e 48 de 8d \r
+67 ed 24 f9 f1 9d 85 ba 27 58 74 f5 42 cd 20 dc \r
+72 3e 69 63 36 4a 1f 94 25 45 2b 26 9a 67 99 fd \r
+\r
+# Prime exponent 1: \r
+28 fa 13 93 86 55 be 1f 8a 15 9c ba ca 5a 72 ea \r
+19 0c 30 08 9e 19 cd 27 4a 55 6f 36 c4 f6 e1 9f \r
+55 4b 34 c0 77 79 04 27 bb dd 8d d3 ed e2 44 83 \r
+28 f3 85 d8 1b 30 e8 e4 3b 2f ff a0 27 86 19 79 \r
+\r
+# Prime exponent 2: \r
+1a 8b 38 f3 98 fa 71 20 49 89 8d 7f b7 9e e0 a7 \r
+76 68 79 12 99 cd fa 09 ef c0 e5 07 ac b2 1e d7 \r
+43 01 ef 5b fd 48 be 45 5e ae b6 e1 67 82 55 82 \r
+75 80 a8 e4 e8 e1 41 51 d1 51 0a 82 a3 f2 e7 29 \r
+\r
+# Coefficient: \r
+27 15 6a ba 41 26 d2 4a 81 f3 a5 28 cb fb 27 f5 \r
+68 86 f8 40 a9 f6 e8 6e 17 a4 4b 94 fe 93 19 58 \r
+4b 8e 22 fd de 1e 5a 2e 3b d8 aa 5b a8 d8 58 41 \r
+94 eb 21 90 ac f8 32 b8 47 f1 3a 3d 24 a7 9f 4d \r
+\r
+# PKCS#1 v1.5 signing of 20 random messages\r
+# -------------------------------------------------------\r
+\r
+# PKCS#1 v1.5 Signature Example 1.1\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+cd c8 7d a2 23 d7 86 df 3b 45 e0 bb bc 72 13 26 \r
+d1 ee 2a f8 06 cc 31 54 75 cc 6f 0d 9c 66 e1 b6 \r
+23 71 d4 5c e2 39 2e 1a c9 28 44 c3 10 10 2f 15 \r
+6a 0d 8d 52 c1 f4 c4 0b a3 aa 65 09 57 86 cb 76 \r
+97 57 a6 56 3b a9 58 fe d0 bc c9 84 e8 b5 17 a3 \r
+d5 f5 15 b2 3b 8a 41 e7 4a a8 67 69 3f 90 df b0 \r
+61 a6 e8 6d fa ae e6 44 72 c0 0e 5f 20 94 57 29 \r
+cb eb e7 7f 06 ce 78 e0 8f 40 98 fb a4 1f 9d 61 \r
+93 c0 31 7e 8b 60 d4 b6 08 4a cb 42 d2 9e 38 08 \r
+a3 bc 37 2d 85 e3 31 17 0f cb f7 cc 72 d0 b7 1c \r
+29 66 48 b3 a4 d1 0f 41 62 95 d0 80 7a a6 25 ca \r
+b2 74 4f d9 ea 8f d2 23 c4 25 37 02 98 28 bd 16 \r
+be 02 54 6f 13 0f d2 e3 3b 93 6d 26 76 e0 8a ed \r
+1b 73 31 8b 75 0a 01 67 d0 \r
+\r
+# Signature:\r
+6b c3 a0 66 56 84 29 30 a2 47 e3 0d 58 64 b4 d8\r
+19 23 6b a7 c6 89 65 86 2a d7 db c4 e2 4a f2 8e\r
+86 bb 53 1f 03 35 8b e5 fb 74 77 7c 60 86 f8 50\r
+ca ef 89 3f 0d 6f cc 2d 0c 91 ec 01 36 93 b4 ea\r
+00 b8 0c d4 9a ac 4e cb 5f 89 11 af e5 39 ad a4\r
+a8 f3 82 3d 1d 13 e4 72 d1 49 05 47 c6 59 c7 61\r
+7f 3d 24 08 7d db 6f 2b 72 09 61 67 fc 09 7c ab\r
+18 e9 a4 58 fc b6 34 cd ce 8e e3 58 94 c4 84 d7\r
+\r
+# PKCS#1 v1.5 Signature Example 1.2\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+85 13 84 cd fe 81 9c 22 ed 6c 4c cb 30 da eb 5c \r
+f0 59 bc 8e 11 66 b7 e3 53 0c 4c 23 3e 2b 5f 8f \r
+71 a1 cc a5 82 d4 3e cc 72 b1 bc a1 6d fc 70 13 \r
+22 6b 9e \r
+\r
+# Signature:\r
+84 fd 2c e7 34 ec 1d a8 28 d0 f1 5b f4 9a 87 07\r
+c1 5d 05 94 81 36 de 53 7a 3d b4 21 38 41 67 c8\r
+6f ae 02 25 87 ee 9e 13 7d ae e7 54 73 82 62 93\r
+2d 27 1c 74 4c 6d 3a 18 9a d4 31 1b db 02 04 92\r
+e3 22 fb dd c4 04 06 ea 86 0d 4e 8e a2 a4 08 4a\r
+a9 8b 96 22 a4 46 75 6f db 74 0d db 3d 91 db 76\r
+70 e2 11 66 1b bf 87 09 b1 1c 08 a7 07 71 42 2d\r
+1a 12 de f2 9f 06 88 a1 92 ae bd 89 e0 f8 96 f8\r
+\r
+# PKCS#1 v1.5 Signature Example 1.3\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+a4 b1 59 94 17 61 c4 0c 6a 82 f2 b8 0d 1b 94 f5 \r
+aa 26 54 fd 17 e1 2d 58 88 64 67 9b 54 cd 04 ef \r
+8b d0 30 12 be 8d c3 7f 4b 83 af 79 63 fa ff 0d \r
+fa 22 54 77 43 7c 48 01 7f f2 be 81 91 cf 39 55 \r
+fc 07 35 6e ab 3f 32 2f 7f 62 0e 21 d2 54 e5 db \r
+43 24 27 9f e0 67 e0 91 0e 2e 81 ca 2c ab 31 c7 \r
+45 e6 7a 54 05 8e b5 0d 99 3c db 9e d0 b4 d0 29 \r
+c0 6d 21 a9 4c a6 61 c3 ce 27 fa e1 d6 cb 20 f4 \r
+56 4d 66 ce 47 67 58 3d 0e 5f 06 02 15 b5 90 17 \r
+be 85 ea 84 89 39 12 7b d8 c9 c4 d4 7b 51 05 6c \r
+03 1c f3 36 f1 7c 99 80 f3 b8 f5 b9 b6 87 8e 8b \r
+79 7a a4 3b 88 26 84 33 3e 17 89 3f e9 ca a6 aa \r
+29 9f 7e d1 a1 8e e2 c5 48 64 b7 b2 b9 9b 72 61 \r
+8f b0 25 74 d1 39 ef 50 f0 19 c9 ee f4 16 97 13 \r
+38 e7 d4 70 \r
+\r
+# Signature:\r
+0b 1f 2e 51 80 e5 c7 b4 b5 e6 72 92 9f 66 4c 48\r
+96 e5 0c 35 13 4b 6d e4 d5 a9 34 25 2a 3a 24 5f\r
+f4 83 40 92 0e 10 34 b7 d5 a5 b5 24 eb 0e 1c f1\r
+2b ef ef 49 b2 7b 73 2d 2c 19 e1 c4 32 17 d6 e1\r
+41 73 81 11 1a 1d 36 de 63 75 cf 45 5b 3c 98 12\r
+63 9d bc 27 60 0c 75 19 94 fb 61 79 9e cf 7d a6\r
+bc f5 15 40 af d0 17 4d b4 03 31 88 55 66 75 b1\r
+d7 63 36 0a f4 6f ee ca 5b 60 f8 82 82 9e e7 b2\r
+\r
+# PKCS#1 v1.5 Signature Example 1.4\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+bc 65 67 47 fa 9e af b3 f0 \r
+\r
+# Signature:\r
+45 60 7a d6 11 cf 57 47 a4 1a c9 4d 0f fe c8 78\r
+bd af 63 f6 b5 7a 4b 08 8b f3 6e 34 e1 09 f8 40\r
+f2 4b 74 2a da 16 10 2d ab f9 51 cb c4 4f 89 82\r
+e9 4e d4 cd 09 44 8d 20 ec 0e fa 73 54 5f 80 b6\r
+54 06 be d6 19 4a 61 c3 40 b4 ad 15 68 cb b7 58\r
+51 04 9f 11 af 17 34 96 40 76 e0 20 29 ae e2 00\r
+e4 0e 80 be 0f 43 61 f6 98 41 c4 f9 2a 44 50 a2\r
+28 6d 43 28 9b 40 55 54 c5 4d 25 c6 ec b5 84 f4\r
+\r
+# PKCS#1 v1.5 Signature Example 1.5\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+b4 55 81 54 7e 54 27 77 0c 76 8e 8b 82 b7 55 64 \r
+e0 ea 4e 9c 32 59 4d 6b ff 70 65 44 de 0a 87 76 \r
+c7 a8 0b 45 76 55 0e ee 1b 2a ca bc 7e 8b 7d 3e \r
+f7 bb 5b 03 e4 62 c1 10 47 ea dd 00 62 9a e5 75 \r
+48 0a c1 47 0f e0 46 f1 3a 2b f5 af 17 92 1d c4 \r
+b0 aa 8b 02 be e6 33 49 11 65 1d 7f 85 25 d1 0f \r
+32 b5 1d 33 be 52 0d 3d df 5a 70 99 55 a3 df e7 \r
+82 83 b9 e0 ab 54 04 6d 15 0c 17 7f 03 7f dc cc \r
+5b e4 ea 5f 68 b5 e5 a3 8c 9d 7e dc cc c4 97 5f \r
+45 5a 69 09 b4 \r
+\r
+# Signature:\r
+54 be 9d 90 87 75 15 f4 50 27 9c 15 b5 f6 1a d6\r
+f1 5e cc 95 f1 8c be d8 2b 65 b1 66 7a 57 58 09\r
+58 79 94 66 80 44 f3 bc 2a e7 f8 84 50 1f 64 f0\r
+b4 3f 58 8c fa 20 5a 6a b7 04 32 8c 2d 4a b9 2a\r
+7a e1 34 40 61 4d 3e 08 5f 40 1d a9 ad 28 e2 10\r
+5e 4a 0e db 68 1a 64 24 df 04 73 88 ce 05 1e e9\r
+df 7b c2 16 3f e3 47 52 0a d5 1c cd 51 80 64 38\r
+3e 74 1a ca d3 cb dc 2c b5 a7 c6 8e 86 84 64 c2\r
+\r
+# PKCS#1 v1.5 Signature Example 1.6\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+10 aa e9 a0 ab 0b 59 5d 08 41 20 7b 70 0d 48 d7 \r
+5f ae dd e3 b7 75 cd 6b 4c c8 8a e0 6e 46 94 ec \r
+74 ba 18 f8 52 0d 4f 5e a6 9c bb e7 cc 2b eb a4 \r
+3e fd c1 02 15 ac 4e b3 2d c3 02 a1 f5 3d c6 c4 \r
+35 22 67 e7 93 6c fe bf 7c 8d 67 03 57 84 a3 90 \r
+9f a8 59 c7 b7 b5 9b 8e 39 c5 c2 34 9f 18 86 b7 \r
+05 a3 02 67 d4 02 f7 48 6a b4 f5 8c ad 5d 69 ad \r
+b1 7a b8 cd 0c e1 ca f5 02 5a f4 ae 24 b1 fb 87 \r
+94 c6 07 0c c0 9a 51 e2 f9 91 13 11 e3 87 7d 00 \r
+44 c7 1c 57 a9 93 39 50 08 80 6b 72 3a c3 83 73 \r
+d3 95 48 18 18 52 8c 1e 70 53 73 92 82 05 35 29 \r
+51 0e 93 5c d0 fa 77 b8 fa 53 cc 2d 47 4b d4 fb \r
+3c c5 c6 72 d6 ff dc 90 a0 0f 98 48 71 2c 4b cf \r
+e4 6c 60 57 36 59 b1 1e 64 57 e8 61 f0 f6 04 b6 \r
+13 8d 14 4f 8c e4 e2 da 73 \r
+\r
+# Signature:\r
+0e 6f f6 3a 85 6b 9c bd 5d be 42 31 83 12 20 47\r
+dd 39 d6 f7 6d 1b 23 10 e5 46 fe 9e e7 3b 33 ef\r
+a7 c7 8f 94 74 45 5c 9e 5b 88 cb 38 3a af c3 69\r
+86 68 e7 b7 a5 9a 9c bb 5b 08 97 b6 c5 af b7 f8\r
+ba c4 b9 24 e9 8d 76 0a 15 fc 43 d2 81 4a b2 d5\r
+18 7f 79 be d9 91 5a 93 39 7e bc 22 a7 67 75 06\r
+a0 2e 07 6d 3f fd c0 44 1d bd 4d b0 04 53 dc 28\r
+d8 30 e0 57 3f 77 b8 17 b5 05 c3 8b 4a 4b b5 d0\r
+\r
+# PKCS#1 v1.5 Signature Example 1.7\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+ef b5 da 1b 4d 1e 6d 9a 5d ff 92 d0 18 4d a7 e3 \r
+1f 87 7d 12 81 dd da 62 56 64 86 9e 83 79 e6 7a \r
+d3 b7 5e ae 74 a5 80 e9 82 7a bd 6e b7 a0 02 cb \r
+54 11 f5 26 67 97 76 8f b8 e9 5a e4 0e 3e 8b 34 \r
+66 f5 ab 15 d6 95 53 95 29 39 ec 23 e6 1d 58 49 \r
+7f ac 76 aa 1c 0b b5 a3 cb 4a 54 38 35 87 c7 bb \r
+78 d1 3e ef da 20 54 43 e6 ce 43 65 80 2d f5 5c \r
+64 71 34 97 98 4e 7c a9 67 22 b3 ed f8 4d 56 \r
+\r
+# Signature:\r
+83 85 d5 85 33 a9 95 f7 2d f2 62 b7 0f 40 b3 91\r
+dd f5 15 f4 64 b9 d2 cc 2d 66 39 8f c0 56 89 d8\r
+11 63 29 46 d6 2e ab dc a7 a3 1f cf 6c d6 c9 81\r
+d2 8b bc 29 08 3e 4a 6d 5b 2b 37 8c a4 e5 40 f0\r
+60 b9 6d 53 ad 26 93 f8 21 78 b9 4e 2e 2f 86 b9\r
+ac cf a0 20 25 10 7e 06 2a b7 08 01 75 68 45 01\r
+02 8f 67 64 61 d8 1c 00 8f e4 75 06 71 64 99 70\r
+87 8f c1 75 cf 98 e9 6b 2e cb f6 87 4d 77 da cb\r
+\r
+# PKCS#1 v1.5 Signature Example 1.8\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+53 bb 58 ce 42 f1 98 49 40 55 26 57 23 3b 14 96 \r
+9a f3 65 c0 a5 61 a4 13 2a f1 8a f3 94 32 28 0e \r
+3e 43 70 82 43 4b 19 23 18 37 18 4f 02 cf 2b 2e \r
+72 6b eb f7 4d 7a e3 25 6d 8b 72 f3 ea fd b1 34 \r
+d3 3d e0 6f 29 91 d2 99 d5 9f 54 68 d4 3b 99 58 \r
+d6 a9 68 f5 96 9e db bc 6e 71 85 cb c7 16 c7 c9 \r
+45 da fa 9c c7 1d df aa a0 10 94 a4 52 dd f5 e2 \r
+40 73 20 40 0b f0 5e a9 72 9c af bf 06 00 e7 88 \r
+07 ef 94 62 e3 fd e3 2e d7 d9 81 a5 6f 47 51 ef \r
+64 fb 45 49 91 0e cc 91 1d 72 80 53 b3 99 43 00 \r
+47 40 e6 f5 82 1f e8 d7 5c 06 17 bf 2c 6b 24 bb \r
+fc 34 01 3f c9 5f 0d ed f5 ba 29 7f 50 4f b8 33 \r
+da 2a 43 6d 1d 8f f1 cc 51 93 e2 a6 43 89 fc ed \r
+91 8e 7f eb 67 16 33 0f 66 80 1d b9 49 75 49 cf \r
+1d 3b d9 7c f1 bc 62 55 \r
+\r
+# Signature:\r
+8e 1f 3d 26 ec 7c 6b bb 8c 54 c5 d2 5f 31 20 58\r
+78 03 af 6d 3c 2b 99 a3 7c ed 6a 36 57 d4 ae 54\r
+26 6f 63 ff fd e6 60 c8 66 d6 5d 0a b0 58 9e 1d\r
+12 d9 ce 60 54 b0 5c 86 68 ae 12 71 71 cc aa e7\r
+f1 cd 40 96 77 f5 21 57 b6 12 3a b2 27 f2 7a 00\r
+96 6d 14 39 b4 2a 32 16 9d 10 70 39 40 26 fc 8b\r
+c9 35 45 b1 ac 25 2d 0f 7d a7 51 c0 2e 33 a4 78\r
+31 fb d7 15 14 c2 bb bd 3a db 67 40 c0 fd 68 ad\r
+\r
+# PKCS#1 v1.5 Signature Example 1.9\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+27 ca dc 69 84 50 94 5f 20 4e c3 cf 8c 6c bd 8c \r
+eb 4c c0 cb e3 12 27 4f a9 6b 04 de ac 85 51 60 \r
+c0 e0 4e 4a c5 d3 82 10 c2 7c \r
+\r
+# Signature:\r
+7b 63 f9 22 33 56 f3 5f 61 17 f6 8c 8f 82 20 03\r
+4f c2 38 4a b5 dc 69 04 14 1f 13 93 14 d6 ee 89\r
+f5 4e c6 ff d1 8c 41 3a 23 c5 93 1c 7f bb 13 c5\r
+55 cc fd 59 0e 0e aa 85 3c 8c 94 d2 52 0c d4 25\r
+0d 9a 05 a1 93 b6 5d c7 49 b8 24 78 af 01 56 ee\r
+1d e5 5d da d3 3e c1 f0 09 9c ad 6c 89 1a 36 17\r
+c7 39 3d 05 fb fb bb 00 52 8a 00 1d f0 b2 04 eb\r
+df 1a 34 10 90 de a8 9f 87 0a 87 74 58 42 7f 7b\r
+\r
+# PKCS#1 v1.5 Signature Example 1.10\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+71 64 07 e9 01 b9 ef 92 d7 61 b0 13 fd 13 eb 7a \r
+d7 2a ed \r
+\r
+# Signature:\r
+2a 22 db e3 77 4d 5b 29 72 01 b5 5a 0f 17 f4 2d\r
+ce 63 b7 84 5c b3 25 cf e9 51 d0 ba db 5c 5a 14\r
+47 21 43 d8 96 c8 6c c3 39 f8 36 71 16 42 15 ab\r
+c9 78 62 f2 15 16 54 e7 5a 3b 35 7c 37 31 1b 3d\r
+72 68 ca b5 40 20 2e 23 be e5 27 36 f2 cd 86 cc\r
+e0 c7 db de 95 e1 c6 00 a4 73 95 dc 5e b0 a4 72\r
+15 3f bc 4f b2 1b 64 3e 0c 04 ae 14 dd 37 e9 7e\r
+61 7a 75 67 c8 96 52 21 97 81 00 1b a6 f8 32 98\r
+\r
+# PKCS#1 v1.5 Signature Example 1.11\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+46 c2 4e 41 03 00 16 29 c7 12 dd 4c e8 d7 47 ee \r
+59 5d 6c 74 4c cc 4f 71 34 7d 9b 8a bf 49 d1 b8 \r
+fb 2e f9 1b 95 dc 89 9d 4c 0e 3d 29 97 e6 38 f4 \r
+cf 3f 68 e0 49 8d e5 aa bd 13 f0 df e0 2f f2 6b \r
+a4 37 91 04 e7 8f fa 95 ff bd 15 06 7e f8 cb d7 \r
+eb 78 60 fe cc 71 ab e1 3d 5c 72 0a 66 85 1f 2d \r
+ef d4 e7 95 05 4d 7b ec 02 4b b4 22 a4 6a 73 68 \r
+b5 6d 95 b4 7a eb af be ad d6 12 81 25 93 a7 0d \r
+b9 f9 6d 45 1e e1 5e db 29 93 08 d7 77 f4 bb 68 \r
+ed 33 77 c3 21 56 b4 1b 7a 9c 92 a1 4c 8b 81 14 \r
+43 99 c5 6a 5a 43 2f 4f 77 0a a9 7d a8 41 5d 0b \r
+da 2e 81 32 06 03 1e 70 62 00 31 c8 81 d6 16 bf \r
+fd 5f 03 bf 14 7c 1e 73 76 6c 26 24 62 08 \r
+\r
+# Signature:\r
+12 23 5b 0b 40 61 26 d9 d2 60 d4 47 e9 23 a1 10\r
+51 fb 24 30 79 f4 46 fd 73 a7 01 81 d5 36 34 d7\r
+a0 96 8e 4e e2 77 77 ed a6 3f 6e 4a 3a 91 ad 59\r
+85 99 8a 48 48 da 59 ce 69 7b 24 bb 33 2f a2 ad\r
+9c e4 62 ca 4a ff dc 21 da b9 08 e8 ce 15 af 6e\r
+b9 10 5b 1a bc f3 91 42 aa 17 b3 4c 4c 09 23 86\r
+a7 ab bf e0 28 af db eb c1 4f 2c e2 6f be e5 ed\r
+ec a1 15 02 d3 9a 6b 74 03 15 48 43 d9 8a 62 a7\r
+\r
+# PKCS#1 v1.5 Signature Example 1.12\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+bc 99 a9 32 aa 16 d6 22 bf ff 79 c5 0b 4c 42 35 \r
+86 73 26 11 29 e2 8d 6a 91 8f f1 b0 f1 c4 f4 6a \r
+d8 af a9 8b 0c a0 f5 6f 96 79 75 b0 a2 9b e8 82 \r
+e9 3b 6c d3 fc 33 e1 fa ef 72 e5 2b 2a e0 a3 f1 \r
+20 24 50 6e 25 69 0e 90 2e 78 29 82 14 55 56 53 \r
+22 84 cf 50 57 89 73 8f 4d a3 1f a1 33 3d 3a f8 \r
+62 b2 ba 6b 6c e7 ab 4c ce 6a ba \r
+\r
+# Signature:\r
+87 2e c5 ad 4f 18 46 25 6f 17 e9 93 6a c5 0e 43\r
+e9 96 3e a8 c1 e7 6f 15 87 9b 78 74 d7 7d 12 2a\r
+60 9d c8 c5 61 14 5b 94 bf 4f fd ff de b1 7e 6e\r
+76 ff c6 c1 0c 07 47 f5 e3 7a 9f 43 4f 56 09 e7\r
+9d a5 25 02 15 a4 57 af df 12 c6 50 7c c1 55 1f\r
+54 a2 80 10 59 58 26 a2 c9 b9 7f a0 aa 85 1c c6\r
+8b 70 5d 7a 06 d7 20 ba 02 7e 4a 1c 0b 01 95 00\r
+fb 63 b7 80 71 68 4d cf a9 77 27 00 b9 82 dc 66\r
+\r
+# PKCS#1 v1.5 Signature Example 1.13\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+73 1e 17 2a c0 63 99 2c 5b 11 ba 17 0d fb 23 bb \r
+00 0d 47 ba 19 53 29 cf 27 80 61 03 73 81 51 4c \r
+14 60 64 c5 28 5d b1 30 dd 5b ae 98 b7 72 22 59 \r
+50 ea b0 5d 3e a9 96 f6 ff fb 9a 8c 86 22 91 3f \r
+27 99 14 c8 9a da 4f 3d d7 76 66 a8 68 bf cb ff \r
+2b 95 b7 da f4 53 d4 e2 c9 d7 5b ee e7 f8 e7 09 \r
+05 e4 06 6a 4f 73 ae cc 67 f9 56 aa 5a 32 92 b8 \r
+48 8c 91 7d 31 7c fd c8 62 53 e6 90 38 1e 15 ab \r
+\r
+# Signature:\r
+76 20 4e ac c1 d6 3e c1 d6 ad 5b d0 69 2e 1a 2f\r
+68 6d f6 e6 4c a9 45 c7 7a 82 4d e2 12 ef a6 d9\r
+78 2d 81 b4 59 14 03 ff 40 20 62 02 98 c0 7e bd\r
+3a 8a 61 c5 bf 4d ad 62 cb fc 4a e6 a0 39 37 be\r
+4b 49 a2 16 d5 70 fc 6e 81 87 29 37 87 6e 27 bd\r
+19 cf 60 1e ff c3 0d dc a5 73 c9 d5 6c d4 56 9b\r
+db 48 51 c4 50 c4 2c b2 1e 73 8c dd 61 02 7b 8b\r
+e5 e9 b4 10 fc 46 aa 3f 29 e4 be 9e 64 45 13 46\r
+\r
+# PKCS#1 v1.5 Signature Example 1.14\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+02 11 38 26 83 a7 4d 8d 2a 2c b6 a0 65 50 56 3b \r
+e1 c2 6c a6 28 21 e4 ff 16 3b 72 04 64 fc 3a 28 \r
+d9 1b ed dd c6 27 49 a5 53 8e af 41 fb e0 c8 2a \r
+77 e0 6a d9 93 83 c9 e9 85 ff b8 a9 3f d4 d7 c5 \r
+8d b5 1a d9 1b a4 61 d6 9a 8f d7 dd ab e2 49 67 \r
+57 a0 c4 91 22 c1 a7 9a 85 cc 05 53 e8 21 4d 03 \r
+6d fe 01 85 ef a0 d0 58 60 c6 12 fa 08 82 c8 2d \r
+24 6e 58 30 a6 73 55 df f1 8a 2c 36 b7 32 f9 88 \r
+cf ed c5 62 26 4c 62 54 b4 0f ca bb 97 b7 60 94 \r
+75 68 dc d6 a1 7c da 6e e8 85 5b dd ba b9 37 02 \r
+47 1a a0 cf b1 be d2 e1 31 18 eb a1 17 5b 73 c9 \r
+62 53 c1 08 d0 b2 ab a0 5a b8 e1 7e 84 39 2e 20 \r
+08 5f 47 40 4d 83 65 52 7d c3 fb 8f 2b b4 8a 50 \r
+03 8e 71 36 1c cf 97 34 07 \r
+\r
+# Signature:\r
+52 55 00 91 83 31 f1 04 2e ae 0c 5c 20 54 aa 7f\r
+92 de b2 69 91 b5 79 66 34 f2 29 da f9 b4 9e b2\r
+05 4d 87 31 9f 3c fa 9b 46 6b d0 75 ef 66 99 ae\r
+a4 bd 4a 19 5a 1c 52 96 8b 5e 2b 75 e0 92 d8 46\r
+ea 1b 5c c2 79 05 a8 e1 d5 e5 de 0e df db 21 39\r
+1e bb 95 18 64 eb d9 f0 b0 ec 35 b6 54 28 71 36\r
+0a 31 7b 7e f1 3a e0 6a f6 84 e3 8e 21 b1 e1 9b\r
+c7 29 8e 5d 6f e0 01 3a 16 4b fa 25 d3 e7 31 3d\r
+\r
+# PKCS#1 v1.5 Signature Example 1.15\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+fc 6b 70 0d 22 58 33 88 ab 2f 8d af ca f1 a0 56 \r
+20 69 80 20 da 4b ae 44 da fb d0 87 7b 50 12 50 \r
+6d c3 18 1d 5c 66 bf 02 3f 34 8b 41 fd 9f 94 79 \r
+5a b9 64 52 a4 21 9f 2d 39 d7 2a f3 59 cf 19 56 \r
+51 c7 \r
+\r
+# Signature:\r
+44 52 a6 cc 26 26 b0 1e 95 ab 30 6d f0 d0 cc 74\r
+84 fb ab 3c 22 e9 70 32 83 56 7f 66 ea dc 24 8d\r
+bd a5 8f ce 7d d0 c7 0c ce 3f 15 0f ca 4b 36 9d\r
+ff 3b 62 37 e2 b1 62 81 ab 55 b5 3f b1 30 89 c8\r
+5c d2 65 05 6b 3d 62 a8 8b fc 21 35 b1 67 91 f7\r
+fb ca b9 fd 2d c3 3b ec b6 17 be 41 9d 2c 04 61\r
+42 a4 d4 7b 33 83 14 55 2e dd 4b 6f e9 ce 11 04\r
+ec ec 4a 99 58 d7 33 1e 93 0f c0 9b f0 8a 6e 64\r
+\r
+# PKCS#1 v1.5 Signature Example 1.16\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+13 ba 08 6d 70 9c fa 5f ed aa 55 7a 89 18 1a 61 \r
+40 f2 30 0e d6 d7 c3 fe bb 6c f6 8a be bc bc 67 \r
+8f 2b ca 3d c2 33 02 95 ee c4 5b b1 c4 07 5f 3a \r
+da 98 7e ae 88 b3 9c 51 60 6c b8 04 29 e6 49 d9 \r
+8a cc 84 41 b1 f8 89 7d b8 6c 5a 4c e0 ab f2 8b \r
+1b 81 dc a3 66 76 97 b8 50 69 6b 74 a5 eb d8 5d \r
+ec 56 c9 0f 8a be 51 3e fa 85 78 53 72 0b e3 19 \r
+60 79 21 bc a9 47 52 2c d8 fa c8 ca ce 5b 82 7c \r
+3e 5a 12 9e 7e e5 7f 6b 84 93 2f 14 14 1a c4 27 \r
+4e 8c bb 46 e6 91 2b 0d 3e 21 77 d4 99 d1 84 0c \r
+d4 7d 4d 7a e0 b4 cd c4 d3 \r
+\r
+# Signature:\r
+1f 3b 5a 87 db 72 a2 c9 7b b3 ef f2 a6 5a 30 12\r
+68 ea cd 89 f4 2a bc 10 98 c1 f2 de 77 b0 83 2a\r
+65 d7 81 5f eb 35 07 00 63 f2 21 bb 34 53 bd 43\r
+43 86 c9 a3 fd e1 8e 3c a1 68 7f b6 49 e8 6c 51\r
+d6 58 61 9d de 5d eb b8 6f e1 54 91 ff 77 ab 74\r
+83 73 f1 be 50 88 80 d6 6e a8 1e 87 0e 91 cd f1\r
+70 48 75 c1 7f 0b 10 10 31 88 bc 64 ee f5 a3 55\r
+1b 41 4c 73 36 70 21 5b 1a 22 70 25 62 58 1a b1\r
+\r
+# PKCS#1 v1.5 Signature Example 1.17\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+eb 1e 59 35 \r
+\r
+# Signature:\r
+37 0c b9 83 9a e6 07 4f 84 b2 ac d6 e6 f6 b7 92\r
+1b 4b 52 34 63 75 7f 64 46 71 61 40 c4 e6 c0 e7\r
+5b ec 6a d0 19 7e bf a8 6b f4 6d 09 4f 5f 6c d3\r
+6d ca 3a 5c c7 3c 8b bb 70 e2 c7 c9 ab 5d 96 4e\r
+c8 e3 df de 48 1b 4a 1b ef fd 01 b4 ad 15 b3 1a\r
+e7 ae bb 9b 70 34 4a 94 11 08 31 65 fd f9 c3 75\r
+4b bb 8b 94 dd 34 bd 48 13 df ad a1 f6 93 7d e4\r
+26 7d 55 97 ca 09 a3 1e 83 d7 f1 a7 9d d1 9b 5e\r
+\r
+# PKCS#1 v1.5 Signature Example 1.18\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+63 46 b1 53 e8 89 c8 22 82 09 63 00 71 c8 a5 77 \r
+83 f3 68 76 0b 8e b9 08 cf c2 b2 76 \r
+\r
+# Signature:\r
+24 79 c9 75 c5 b1 ae 4c 4e 94 0f 47 3a 90 45 b8\r
+bf 5b 0b fc a7 8e c2 9a 38 df be dc 8a 74 9b 7a\r
+26 92 f7 c5 2d 5b c7 c8 31 c7 23 23 72 a0 0f ed\r
+3b 6b 49 e7 60 ec 99 e0 74 ff 2e ea d5 13 4e 83\r
+05 72 5d fa 39 21 2b 84 bd 4b 8d 80 bc 8b c1 7a\r
+51 28 23 a3 be b1 8f c0 8e 45 ed 19 c2 6c 81 77\r
+07 d6 7f b0 58 32 ef 1f 12 a3 3e 90 cd 93 b8 a7\r
+80 31 9e 29 63 ca 25 a2 af 7b 09 ad 8f 59 5c 21\r
+\r
+# PKCS#1 v1.5 Signature Example 1.19\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+64 70 2d b9 f8 25 a0 f3 ab c3 61 97 46 59 f5 e9 \r
+d3 0c 3a a4 f5 6f ea c6 90 50 c7 29 05 e7 7f e0 \r
+c2 2f 88 a3 78 c2 1f cf 45 fe 8a 5c 71 73 02 09 \r
+39 29 \r
+\r
+# Signature:\r
+15 2f 34 51 c8 58 d6 95 94 e6 56 7d fb 31 29 1c\r
+1e e7 86 0b 9d 15 eb d5 a5 ed d2 76 ac 3e 6f 7a\r
+8d 14 80 e4 2b 33 81 d2 be 02 3a cf 7e bb db 28\r
+de 3d 21 63 ae 44 25 9c 6d f9 8c 33 5d 04 5b 61\r
+da c9 db a9 db bb 4e 6a b4 a0 83 cd 76 b5 80 cb\r
+e4 72 20 6a 1a 9f d6 06 80 ce ea 1a 57 0a 29 b0\r
+88 1c 77 5e ae f5 52 5d 6d 2f 34 4c 28 83 7d 0a\r
+ca 42 2b bb 0f 1a ba 8f 68 61 ae 18 bd 73 fe 44\r
+\r
+# PKCS#1 v1.5 Signature Example 1.20\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+94 19 21 de 4a 1c 9c 16 18 d6 f3 ca 3c 17 9f 6e \r
+29 ba e6 dd f9 a6 a5 64 f9 29 e3 ce 82 cf 32 65 \r
+d7 83 7d 5e 69 2b e8 dc c9 e8 6c \r
+\r
+# Signature:\r
+70 76 c2 87 fc 6f ff 2b 20 53 74 35 e5 a3 10 7c\r
+e4 da 10 71 61 86 d0 15 39 41 3e 60 9d 27 d1 da\r
+6f d9 52 c6 1f 4b ab 91 c0 45 fa 4f 86 83 ec c4\r
+f8 dd e7 42 27 f7 73 cf f3 d9 6d b8 47 18 c4 94\r
+4b 06 af fe ba 94 b7 25 f1 b0 7d 39 28 b2 49 0a\r
+85 c2 f1 ab f4 92 a9 17 7a 7c d2 ea 0c 96 68 75\r
+6f 82 5b be c9 00 fa 8a c3 82 4e 11 43 87 ef 57\r
+37 80 ca 33 48 82 38 7b 94 e5 aa d7 a2 7a 28 dc\r
+\r
+# =============================================\r
+\r
+# Example 2: A 1024-bit RSA key pair\r
+# -----------------------------------\r
+\r
+\r
+# Public key\r
+# ----------\r
+\r
+# Modulus: \r
+ac 13 d9 fd ae 7b 73 35 b6 9c d9 85 67 e9 64 7d \r
+99 bf 37 3a 9e 05 ce 34 35 d6 64 65 f3 28 b7 f7 \r
+33 4b 79 2a ee 7e fa 04 4e bc 4c 7a 30 b2 1a 5d \r
+7a 89 cd b3 a3 0d fc d9 fe e9 99 5e 09 41 5e dc \r
+0b f9 e5 b4 c3 f7 4f f5 3f b4 d2 94 41 bf 1b 7e \r
+d6 cb dd 4a 47 f9 25 22 69 e1 64 6f 6c 1a ee 05 \r
+14 e9 3f 6c b9 df 71 d0 6c 06 0a 21 04 b4 7b 72 \r
+60 ac 37 c1 06 86 1d c7 8c a5 a2 5f aa 9c b2 e3 \r
+\r
+# Exponent: \r
+01 00 01 \r
+\r
+# Private key\r
+# -----------\r
+\r
+# Modulus: \r
+ac 13 d9 fd ae 7b 73 35 b6 9c d9 85 67 e9 64 7d \r
+99 bf 37 3a 9e 05 ce 34 35 d6 64 65 f3 28 b7 f7 \r
+33 4b 79 2a ee 7e fa 04 4e bc 4c 7a 30 b2 1a 5d \r
+7a 89 cd b3 a3 0d fc d9 fe e9 99 5e 09 41 5e dc \r
+0b f9 e5 b4 c3 f7 4f f5 3f b4 d2 94 41 bf 1b 7e \r
+d6 cb dd 4a 47 f9 25 22 69 e1 64 6f 6c 1a ee 05 \r
+14 e9 3f 6c b9 df 71 d0 6c 06 0a 21 04 b4 7b 72 \r
+60 ac 37 c1 06 86 1d c7 8c a5 a2 5f aa 9c b2 e3 \r
+\r
+# Public exponent: \r
+01 00 01 \r
+\r
+# Exponent: \r
+04 84 cc ef ad 7a 4e 6f 35 a9 6e c8 e3 0e ac f5 \r
+e3 68 b3 11 95 fe bf 08 7d f5 70 53 81 0c 2b b0 \r
+91 27 45 3a 4c 63 07 3b bf b9 90 24 91 4c cc 06 \r
+72 66 56 01 86 a1 a2 67 33 1b 7d 4c 8b df ac 96 \r
+fd a9 f3 f7 0b ec 4e ea bc e7 cd 52 19 34 3c 2e \r
+49 1c ce 82 7e 44 ee 23 0e 4f 69 58 9e 57 5a e9 \r
+06 30 30 44 2a 31 c8 2c de 30 dc 9c 79 cf 64 e7 \r
+a0 97 5e 75 e1 6e a4 58 15 48 8b 45 52 56 ee b1 \r
+\r
+# Prime 1: \r
+df 85 f4 a0 b4 33 bd 37 43 3c d7 97 8c 9b 37 f9 \r
+e4 17 29 d8 3a 26 2b 98 46 53 8e 50 39 e6 59 68 \r
+b5 95 a4 62 72 bd 5f 4a 2c 3a bf 89 0a 35 50 8a \r
+5b cb 4c 29 ef bd 91 02 85 03 83 4c fa b2 c0 f9 \r
+\r
+# Prime 2: \r
+c5 14 59 a6 72 ed 8b 72 4c 6a 8f 28 5c bb 8e a7 \r
+6a 23 93 91 79 28 be 56 c0 dc df c9 43 c3 0b da \r
+3c ee fb 86 dc c8 c4 55 67 8c fe 88 25 f3 88 77 \r
+a3 72 8a 1f 10 29 1f 54 7b 1e 8b 16 04 83 e5 bb \r
+\r
+# Prime exponent 1: \r
+b6 ba 83 a9 7c a7 6f 5f e6 0f af 0f ad 5a 97 00 \r
+2a 7e e5 2e 67 1b 1d 38 77 05 87 a9 fe 2b 59 9c \r
+48 15 f5 34 a6 28 39 e6 21 12 45 d2 7a 0d eb b1 \r
+b0 29 1a 32 8e 52 a2 61 34 ec 12 42 b4 0f bd c1 \r
+\r
+# Prime exponent 2: \r
+b9 b1 c6 13 2e e1 22 6e 6d 10 4e 99 72 5f 0b 38 \r
+35 ab 15 e5 91 6a d1 85 be ad 9f 72 ed 95 3f 7a \r
+bf c5 52 5c ad 75 c2 80 d2 54 28 94 b2 65 b8 65 \r
+3a 2d b7 75 33 6d fb e6 47 27 ed 57 ae a3 74 f7 \r
+\r
+# Coefficient: \r
+7b 8d 15 a5 dd 28 90 a6 7d 1b 54 9c 93 5f 58 5a \r
+38 da 56 f7 c8 15 5a 51 9d c8 f1 f6 ad e5 53 d6 \r
+37 93 c7 8a 0e ce 8d 53 72 4e 62 ae 50 3a d5 25 \r
+bf af 10 cf 61 6a 47 73 ce 7c cd 5c 1b 31 51 bd \r
+\r
+# PKCS#1 v1.5 signing of 20 random messages\r
+# -------------------------------------------------------\r
+\r
+# PKCS#1 v1.5 Signature Example 2.1\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+e1 c0 f9 8d 53 f8 f8 b1 41 90 57 d5 b9 b1 0b 07 \r
+fe ea ec 32 c0 46 3a 4d 68 38 2f 53 1b a1 d6 cf \r
+e4 ed 38 a2 69 4a 34 b9 c8 05 ad f0 72 ff bc eb \r
+e2 1d 8d 4b 5c 0e 8c 33 45 2d d8 f9 c9 bf 45 d1 \r
+e6 33 75 11 33 58 82 29 d2 93 c6 49 6b 7c 98 3c \r
+2c 72 bd 21 d3 39 27 2d 78 28 b0 d0 9d 01 0b ba \r
+d3 18 d9 98 f7 04 79 67 33 8a ce fd 01 e8 74 ac \r
+e5 f8 6d 2a 60 f3 b3 ca e1 3f c5 c6 65 08 cf b7 \r
+23 78 fd d6 c8 de 24 97 65 10 3c e8 fe 7c d3 3a \r
+d0 ef 16 86 fe b2 5e 6a 35 fb 64 e0 96 a4 \r
+\r
+# Signature:\r
+64 ac 09 39 71 f8 f0 96 a4 c1 d4 a5 43 66 2a 2e\r
+5a 12 81 c9 50 98 7d e8 98 70 7f 02 9c 15 9b d8\r
+32 ca c5 5d 91 36 e0 e9 b4 a8 0b f6 f2 1b 68 cf\r
+97 70 a6 34 9a e5 1e 7f 09 db da 9d 59 c4 58 37\r
+37 47 2d 4d 65 32 c7 17 7e e9 81 08 d2 cf 42 cd\r
+08 5a bb 49 22 eb 29 d9 6f 3d 0f 6b 1d 0d 43 c7\r
+39 cc f1 ba 65 16 75 e1 96 8b 50 7d 51 90 2f 38\r
+cd ec 0b 61 32 72 90 45 32 5f c1 fb 8f d5 58 e8\r
+\r
+# PKCS#1 v1.5 Signature Example 2.2\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+c1 11 46 4e 00 2e 4e c6 18 a8 e2 63 db cc a9 1f \r
+b1 8a 00 a1 8b 44 0c 4b 55 97 be e7 db 2a ed a8 \r
+31 e6 21 fc ac 8d d8 1c ee 35 03 24 2b 33 b0 da \r
+a9 87 fe 2f 54 93 ad 2d 06 a1 50 07 59 00 40 ce \r
+3c 22 77 64 2f d2 7f 3f 25 5e 3d 98 d8 9d fa eb \r
+86 be 34 e0 b8 fb b9 35 fb 92 85 60 fa 29 2d 26 \r
+34 62 5a 50 7d d5 80 a8 91 24 b9 21 29 3e 8d fe \r
+dd c2 81 d7 9e b3 a5 69 d5 9e 0d b8 01 3e 53 f7 \r
+d4 c2 f9 6e 5f 2e c2 7f d8 dd b0 18 25 d1 7f ca \r
+40 6d aa 62 24 c7 60 6d 2c 91 52 82 09 6a 78 05 \r
+5a 49 62 15 37 b4 f0 25 a6 e5 b2 12 9b c8 c1 a4 \r
+07 \r
+\r
+# Signature:\r
+6e 7e aa d8 04 94 5e b0 46 70 dd 86 76 b7 05 7d\r
+03 ac 3e 22 64 65 b1 fb 84 03 e6 ae 79 83 e0 a4\r
+6a 89 a4 eb 32 bd c8 e7 ae 5a 53 d4 8a a6 4b c9\r
+c3 db c8 cf 9c d6 dc 6a 68 fc ea e9 e2 9f 47 45\r
+fa 49 e1 8d 18 4d c5 d2 6c 4f eb 35 1f b4 b2 28\r
+c4 c1 8c ab db de 86 01 72 4a e3 80 3d b3 05 f2\r
+a0 76 fa 8a 57 f4 61 0b 8a 6e 0e d4 35 75 be 5d\r
+5b fc 16 30 47 9d f3 bc bc 51 51 77 af e4 99 4a\r
+\r
+# PKCS#1 v1.5 Signature Example 2.3\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+29 b8 5b 14 b2 da 94 7a 4c 3a d1 e5 93 7d a1 92 \r
+c6 05 08 65 af 95 04 a5 44 53 70 e4 3d 3a 8d a5 \r
+d3 55 fd 58 76 6b 25 43 ac 6f 93 10 87 83 c1 3f \r
+f2 8b 2b e5 60 83 f0 29 82 39 e0 ee 96 81 ee 47 \r
+c6 \r
+\r
+# Signature:\r
+80 b3 8c e7 35 12 6c 85 45 d9 1d 18 ec 90 37 65\r
+4d 46 e4 f3 c5 1a 6b 86 18 e1 5f 72 cd 20 75 00\r
+a4 70 01 75 77 d0 a8 c5 5a 2b a3 34 38 3f 1f 8d\r
+99 fc e2 46 0b 32 97 bc 03 7e f6 4a c4 a3 09 8c\r
+6a aa 24 a4 d0 14 4a f1 02 d0 dd a1 7e 07 dc 69\r
+59 23 93 2e 56 8a da 00 dc 4f 7d bf bc de c4 3c\r
+c9 08 38 80 17 d2 ee f0 4e 60 df e4 d5 73 40 fa\r
+b9 16 e2 b8 11 24 4c b1 e4 a5 52 38 6f e3 ed 4c\r
+\r
+# PKCS#1 v1.5 Signature Example 2.4\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+d3 b7 aa d3 7a 48 90 e0 36 5b 86 c7 da 94 91 e7 \r
+3c df 55 5d 1b 02 b4 51 81 6d c5 2f 96 30 d5 90 \r
+de 83 a5 c9 39 61 01 25 22 df f6 db bb 9c db 0e \r
+71 ae 51 40 19 64 af 18 90 e8 93 25 db d6 26 f2 \r
+da 01 34 58 e3 9e ec a5 83 e8 9e 4c 08 e5 d4 12 \r
+be 49 84 95 88 6e 05 51 cf e7 42 b8 b5 \r
+\r
+# Signature:\r
+9d 8a 88 89 a3 11 b4 86 cb e2 22 57 03 f5 d4 ae\r
+2a 54 c2 bc aa ad 06 fe 76 48 b9 e2 d8 5e dd a1\r
+a0 7d 85 6d 6a e9 bd 5c c1 e5 15 32 66 ec 7f 1e\r
+1d f3 d9 29 cc 44 70 0f ac 92 64 58 41 4c 28 41\r
+da 83 32 8e 81 e0 b9 d6 c3 88 5e 76 73 70 ad 5c\r
+f1 f5 76 d9 dc e3 48 ca ec 5e 64 43 e0 ae b7 c3\r
+f7 2b 7d d2 53 66 70 23 b9 a4 77 ab 34 df 8f 20\r
+67 e2 25 ad cb 73 ee 11 e1 59 eb 64 91 47 d6 02\r
+\r
+# PKCS#1 v1.5 Signature Example 2.5\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+f6 58 18 8c 8f 9d e6 0b 5e 99 a2 9f 52 d3 b8 89 \r
+20 1b 30 d4 64 c3 b7 27 92 a3 02 09 5d c1 e7 7d \r
+45 e9 4f 5d ab 73 db b3 13 54 38 57 ff 91 db f4 \r
+73 df c1 45 d7 3b d5 06 20 75 d1 92 a3 fb f4 a1 \r
+33 e7 e5 68 df 20 b8 cf f7 7b 3a f6 87 aa 22 55 \r
+9e c1 \r
+\r
+# Signature:\r
+0a 95 a4 4f 62 74 e7 4c ec 45 17 96 af 56 88 d4\r
+be 01 08 93 fa ae 27 d4 90 f4 77 1b 00 3f 70 46\r
+cc cd 41 9f c8 19 d7 33 19 55 f4 1e ac 93 39 f5\r
+46 c5 84 a8 b4 2a 5a c6 32 90 58 3f f3 eb 6b 29\r
+ca dc 75 4a e5 8d 5a 56 37 b6 60 97 96 e8 05 51\r
+73 ff 20 a9 cc e4 92 fd 78 37 46 86 15 e8 41 08\r
+87 f0 b4 a5 9f f2 52 a8 25 97 76 c8 ff da a6 7c\r
+87 df f8 98 3a e6 79 d1 de 22 ea 15 8d 48 f6 8b\r
+\r
+# PKCS#1 v1.5 Signature Example 2.6\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+31 ae 5f 83 a0 fb 3a c9 25 5f fa 43 5f 70 e2 ab \r
+65 55 66 e5 fb 8b 78 b8 02 c1 87 cf f1 c5 e4 0f \r
+ed 06 97 8c 5d 59 76 eb 4c a7 75 80 63 99 a6 fc \r
+4d b5 0c 1f 88 66 1b a6 8a bc 21 fb 2c cd 53 7f \r
+50 18 f3 6e d1 f7 d4 53 83 fd 46 9e 77 ba b3 e8 \r
+a9 5d fa 1b 94 1e 43 0d de c5 52 dc d8 2f 5d 10 \r
+d2 9c d1 0a 22 d1 7c e2 42 59 28 ff 5d 07 10 dc \r
+e7 d9 f8 3b 12 e0 4c 1a 01 59 c2 71 76 e0 4a cc \r
+\r
+# Signature:\r
+3f 11 ea 73 9f 32 9c 9d 40 04 60 34 b6 c0 cf ce\r
+b4 9b c3 20 1a 5f 25 ea f5 01 5a ed ed 02 18 9c\r
+e0 b0 cf de 19 12 5b d2 88 b7 d0 c0 62 32 1a 5b\r
+dc 2c fa 42 26 f5 10 4a 1f ba eb be 7f 72 f5 f7\r
+92 7e 1e ae 26 fd c5 ba 92 f2 d3 f8 69 eb c3 2d\r
+90 18 dd 04 ed e8 6d e5 c4 54 f1 f7 a1 b2 e2 d1\r
+94 0a ac ae 27 79 63 55 fe 18 ac 80 97 53 53 92\r
+9a c6 a8 38 45 8b 5d 9d c7 57 6e 38 87 ee 7b ca\r
+\r
+# PKCS#1 v1.5 Signature Example 2.7\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+96 ff 99 f1 50 60 c9 73 a6 5b 69 a8 b5 b6 3a db \r
+33 25 32 0d a9 37 29 75 84 ad 4f ad 5c 3c 74 69 \r
+01 9e 9c f7 2a cb 31 5f 1e 49 19 27 bb a1 94 87 \r
+55 82 3e b0 7e 3f 20 ac df 78 65 3c ae 45 0e 47 \r
+bc 54 ba f8 ca 11 67 a5 05 08 44 e0 22 22 0e e6 \r
+65 8a 8d dd 95 63 2e 9a dc 1a 6c 14 37 9c 1c 5a \r
+e5 a0 ce 5d c4 02 08 09 62 2a fd ec f8 1f 18 a5 \r
+1e 28 66 6d 02 b1 dc da 0a 27 b8 c3 d2 c2 7b 2c \r
+07 b3 80 22 00 01 7a 7c 12 4a 43 37 cc 4b 6e a2 \r
+ae a7 5c 68 b4 40 e3 79 47 e3 61 9b cf ee 05 5b \r
+b2 ed ab c4 24 49 07 e0 48 3d d3 a1 7d 8e df f3 \r
+a6 50 29 3f d4 ab f5 c4 5d 1a 5b 6c 54 02 ba 2b \r
+81 b7 b0 e0 c9 5e e9 49 b2 a2 38 c1 99 56 20 6c \r
+12 4e 0c d9 c2 46 20 b3 6a 83 bf 93 b9 6e f2 04 \r
+bd e5 31 6c 1f 53 27 c0 a6 21 ec ce 20 93 c0 65 \r
+2d df 32 17 68 d7 45 02 f1 90 85 29 62 9b ab 68 \r
+\r
+# Signature:\r
+18 3f 85 3d 0d 03 62 18 70 e3 ba 58 68 50 c5 ea\r
+59 fc 4e 9a cf 37 94 b9 ad 59 a1 bb 80 18 1e 77\r
+b1 11 d6 64 86 47 e1 39 a3 9e c0 4f 86 18 74 91\r
+e7 7b 4d 75 c0 60 79 5b f7 27 08 46 d3 96 e0 bf\r
+ea 83 15 79 5e 79 d7 6a 91 9e a7 6b 06 ee c1 3b\r
+af 4c e8 af e1 e3 4b c2 24 57 d7 b7 99 2e 08 42\r
+ef ad e1 79 b0 ae da cc fb e2 d2 3d 3e b3 14 e1\r
+de 91 c8 71 b9 db 5a bf fb 17 47 7f ba 23 3a 06\r
+\r
+# PKCS#1 v1.5 Signature Example 2.8\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+3a 17 6c 79 3a 54 6e 2d 27 6f b8 ff c3 28 16 3b \r
+49 49 97 a5 30 2a ae 2e 50 45 a2 a2 06 87 ea 6d \r
+1f 18 1c 6a bf e6 09 0c 8d c4 02 56 db 3d e0 83 \r
+22 64 7f b7 95 bb a1 71 3f b5 7e 33 d5 3e 0e 13 \r
+be da c6 a6 58 ad 4a b4 91 22 38 81 19 8d f2 93 \r
+67 fa ad e8 be 9f ca a4 e4 83 f7 b7 f3 dc 7c bb \r
+f9 7a 17 aa d8 8c 26 cf c6 41 0f 94 5b 54 fc 53 \r
+db 55 ac 80 3d 8b 73 69 1b 14 84 84 7d 7f 3b 7e \r
+93 94 e5 5f 0a 51 fe 61 ae 84 52 3c 94 b2 2e 82 \r
+39 6d b6 cf ac b7 2e 0e e4 94 aa 0f 1f a5 93 12 \r
+54 43 ae 15 55 a6 a9 33 fa ce 00 74 79 1d c2 c2 \r
+92 42 eb \r
+\r
+# Signature:\r
+41 3c 92 23 a2 e9 b1 22 cd 87 25 77 e5 2f 31 3d\r
+41 da c7 9a 26 cb 10 33 da 0b 6f cc 4b 48 21 07\r
+74 4b f4 90 fa 79 8d cc d0 cb d1 18 ef 39 c0 f5\r
+59 d8 7b 89 33 5d b0 9b e7 70 0f b0 9f db d3 40\r
+40 a0 0b e5 ca 42 88 34 77 b0 6e 4e 10 a7 cb 11\r
+76 8f cb 02 c3 4f b1 06 e5 22 86 0d 10 69 39 06\r
+26 0f 43 d9 06 12 99 03 93 a8 ff ac 9f d7 0c a3\r
+78 29 11 1e eb a6 f3 de e5 4e f1 c1 62 68 b3 3e\r
+\r
+# PKCS#1 v1.5 Signature Example 2.9\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+06 8a 99 1b 32 b6 76 c6 4b 89 8c 67 e1 13 72 82 \r
+b4 37 11 b0 d0 67 1c 24 7d 9f 7c 48 f5 04 3e 4f \r
+c2 06 dc 65 af 89 06 f2 52 f0 24 52 05 ea 08 43 \r
+23 d4 27 6b e5 aa 0f c5 af 9c 3f 34 b2 fd 66 34 \r
+df 57 2f c3 13 d2 73 b5 3e 9e 36 b9 46 e7 e6 72 \r
+f9 8d 85 7d 7e dd d3 dd 04 39 31 32 f4 61 f2 2c \r
+99 00 26 16 6f 38 5b e1 59 5c 7f 23 f8 9f f5 7e \r
+05 a7 be 28 5d 10 56 15 48 5f 35 6a ba b1 ff 2a \r
+b9 27 d6 09 95 2a 62 7e 46 8c a7 59 0a cb 52 13 \r
+f4 31 39 f8 e2 c9 d4 d1 7c 6b d7 91 4e 53 f0 2f \r
+d1 9a 13 1f f4 9c d2 5e de 8f 41 8a 88 53 0a 82 \r
+39 88 7f 0f c7 97 ed b5 04 64 79 64 bf 31 ca af \r
+08 0d 58 17 a0 \r
+\r
+# Signature:\r
+57 5d a9 e9 be fc a1 82 95 46 e8 29 38 15 00 11\r
+32 03 0e 74 9c a5 10 88 f1 68 bd 15 0b 13 94 c7\r
+ac d5 97 8b ca 03 f7 b9 d9 2a 29 b8 e2 85 6b 0d\r
+a0 7f 0b b1 5c 0b 33 e0 54 87 99 1a d9 7a 81 2d\r
+c9 04 aa f0 fd 1e 38 7e f1 c2 70 c6 86 8d 3e e1\r
+c6 11 57 7b c4 d0 7f f4 56 b2 43 98 32 90 8a 3d\r
+cc 4f c0 99 04 72 fd a3 cc 61 11 93 0b 99 79 5d\r
+60 c0 e3 78 88 e8 7c e0 0b bf 3c 1c f3 07 f9 e1\r
+\r
+# PKCS#1 v1.5 Signature Example 2.10\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+d6 83 9e e6 d0 74 50 32 7e 09 a0 3e 1e c2 80 e1 \r
+c8 d1 15 00 dc 39 0a 49 a9 c9 82 87 49 c3 e9 a4 \r
+be e2 ba 57 6f 6d 12 17 a8 e7 85 4a 90 7e eb 93 \r
+df ff 92 30 8a d0 d9 4e 2b 38 1f 92 b0 e8 4a 47 \r
+1b f1 f3 7a 68 e9 65 f6 58 59 d1 fd fd 6f ea 84 \r
+40 79 c4 03 70 dc ea e2 \r
+\r
+# Signature:\r
+a7 c5 f6 d0 de 9c f8 f4 17 37 f2 3a e3 e8 cf 60\r
+9a eb cf 22 d5 de 12 13 d9 57 3c b9 44 03 f8 9c\r
+0f 70 88 ff fc 61 10 6f a6 09 c7 37 1a 8d 7e 1b\r
+cd 22 1b c1 ad 94 91 2f ab f2 ff c0 2f 84 84 56\r
+4c 22 5c 06 9b fc 6d a9 f3 f9 f4 97 4e 08 e1 fe\r
+56 f7 48 ff 79 05 97 90 6a 95 4e 38 37 43 a3 7e\r
+57 5f ef 07 4f 06 0f 3d d1 5b 5e e0 f9 4d ba 69\r
+d8 6c 99 22 3f a9 c3 a6 1a 8c b2 af 2f ab 1e 04\r
+\r
+# PKCS#1 v1.5 Signature Example 2.11\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+33 84 9c 67 df 9a 6f fa c3 da 90 a8 cd 31 73 1a \r
+02 97 b9 d6 01 0a 03 32 0f 88 45 03 5f c3 43 09 \r
+ad \r
+\r
+# Signature:\r
+1b 87 05 1f 15 91 c8 ae 7e e3 cb 24 26 70 39 a7\r
+28 40 5d bf 23 1c af 21 f3 24 7f 05 85 8b 2a 51\r
+65 0b 81 bc 53 77 86 5e 4c 1e 8f d0 36 41 52 a1\r
+6b c5 8f 7d 2a c0 1c a6 79 cc 49 dd 04 89 03 d5\r
+5a d0 5f 10 2c 74 b3 60 1f 25 ad 30 62 40 25 c3\r
+0b 6f 0f 79 11 fc 22 45 8e 5d 43 5f 38 8e 3f bc\r
+49 5f a0 c6 10 c1 29 8f 82 1d a5 38 40 3a 93 36\r
+4d 2e ab f1 e3 b3 2f 81 10 a7 e0 3e 37 2e cb c5\r
+\r
+# PKCS#1 v1.5 Signature Example 2.12\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+b3 da ba ca 20 59 a7 0e 25 cb dd f4 aa 59 25 99 \r
+57 54 ac e4 3c 5d 60 36 40 48 9a f4 8f ea 6e dc \r
+4e 19 cb ee a2 c0 db 62 ae 0a 10 4c 72 e4 cd 56 \r
+cb 53 2f 4f e5 77 b3 6a 81 98 b4 87 9d 7f f8 04 \r
+26 90 f6 62 77 3f 3d 63 93 f2 58 98 d2 \r
+\r
+# Signature:\r
+26 f1 37 70 26 3f c5 bd be ad f8 8f b4 dd 30 7a\r
+38 95 9b 16 f3 df 94 6a de 86 4b 1e 7e 91 4d 36\r
+4e bf 9a df d8 6a 70 02 2d c6 1b 43 fb 1f df 86\r
+96 97 8e 2d 1f 6a 2d ef ee 75 ad aa 69 a3 95 32\r
+07 40 50 be 70 8e af 03 1d 5f ae 0f fe 24 5b a4\r
+ff 3c 5e 34 0a f5 df ec 6a 4c ce 0e 18 87 6c fc\r
+13 66 ee ed df ce 0f 83 5b 38 e8 18 81 b1 fc 58\r
+32 93 0f c7 9b 08 f1 fb 34 fb 22 42 33 f4 c4 68\r
+\r
+# PKCS#1 v1.5 Signature Example 2.13\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+09 91 12 fa e7 40 88 8c ea ac 70 54 d5 97 35 1d \r
+79 e1 59 a9 58 d8 12 15 78 e5 2c 83 7d b3 54 3c \r
+fa 6f 8e 7f 1d bd 2a 61 97 86 45 a4 d3 85 b9 bb \r
+1c 60 bf b1 1b b3 c8 75 2a e3 1f 99 6d bb 52 62 \r
+8f 93 d5 26 94 f1 82 e6 90 35 a5 e5 57 ec 71 82 \r
+62 f4 03 df 52 11 f7 3c 6d e0 d5 5a 0b a7 \r
+\r
+# Signature:\r
+8d 8c 8f 3a 86 f4 9e db d1 25 c8 3e bf 6d 52 e7\r
+65 16 15 01 48 21 54 59 8c 28 3a be 94 02 77 87\r
+2b 00 d0 77 7c 2e 69 7b 78 83 cc 32 1e 15 1c 80\r
+11 6f 9f cd 17 7a c4 c7 de dd f0 3c a1 b2 c5 93\r
+31 dc 1c 8e 94 7f 1e b2 aa ee 8c c9 41 dd c5 f3\r
+74 a6 3d 6c 99 38 ec d8 e8 8c bc ec 58 92 9c ff\r
+dd ef 0b a2 17 58 85 a8 0d c4 cd 92 d6 b7 9d 9c\r
+6a 81 69 6e 16 f9 a8 3a 10 ca 8e fa f1 97 5f 55\r
+\r
+# PKCS#1 v1.5 Signature Example 2.14\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+aa 17 e6 bb d6 db 19 e5 4b ee 1a 7f 0e dc ca ce \r
+ab 63 5d 76 28 fc aa 18 ec fa fc 40 1c b3 fe b5 \r
+1f 9a 37 31 f3 80 2c be a8 1c 73 30 28 c9 58 4b \r
+6b 78 e2 05 59 54 cf 91 04 da a6 77 aa 40 be 9b \r
+7c 65 b0 7a c4 a8 bf 25 c1 14 9e 05 47 35 cf 3c \r
+e3 32 d4 29 bc 73 80 24 45 df b3 68 8b b8 19 48 \r
+b5 7e 27 6a f3 24 62 f7 ad 80 4d 50 c9 3b c7 e9 \r
+ef 75 37 69 5a 27 1a f7 2e 4b d4 7c e5 fa 9d 62 \r
+f2 da c0 33 36 23 f4 9e b9 d6 d7 80 34 ed 1d f6 \r
+e1 2b fd 04 26 1b be 5c e0 40 e0 3e be 25 8d 2d \r
+05 2a 12 ad 4e 3b f2 53 04 23 01 c7 64 58 ed 91 \r
+0c 5f fa 70 5c 74 7a d8 ca 0c 1c 62 28 da 2c 97 \r
+e1 38 \r
+\r
+# Signature:\r
+64 4e a0 76 21 4d bd dd 30 05 5d 7c 56 18 92 27\r
+9b 46 ba b1 e1 22 53 42 4c 28 f4 49 e1 72 64 6a\r
+f3 49 8c 7a fc bf f7 68 e0 46 a7 c2 e3 d9 c0 e7\r
+12 8f 87 7b 92 19 5a a2 bb 9f 1c fb df d1 5b b6\r
+5f bd 23 ef b2 94 fb b1 1a 3c 66 05 6d 60 63 85\r
+3b b2 3c 27 46 65 a1 3e f4 f3 c1 2f 59 21 a4 19\r
+e9 49 b3 0c 0b c0 d7 7d 6b 28 69 1d 23 64 d9 5b\r
+f6 8b e8 d5 97 8e f1 bc 98 52 a4 f0 66 04 47 4a\r
+\r
+# PKCS#1 v1.5 Signature Example 2.15\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+28 24 9c 38 7a 06 14 40 e9 86 38 e1 ed 78 a4 86 \r
+51 30 e5 75 33 d7 89 10 8c 63 e1 5f d8 01 9b ad \r
+2c d1 a7 55 2b d8 af d2 06 d9 78 eb 1f 2c f3 f2 \r
+3a fc 4b 34 e6 dd 7f 69 c1 fd f4 fe c2 52 68 d1 \r
+86 55 51 94 49 22 90 6d ce 6d c4 41 f9 4a 46 6b \r
+f8 39 1a d8 2b f5 94 0e 44 71 10 f1 d1 5d e1 29 \r
+31 29 fb 44 24 a1 71 75 19 d6 d4 28 d6 6b 7a 10 \r
+91 42 ac c9 15 f1 ea c9 6d ef 2c 32 90 b0 1d 05 \r
+99 0b f8 02 3a 6a 64 71 2f 63 13 7a 8e \r
+\r
+# Signature:\r
+57 02 06 06 69 ed 47 bb ca 11 b9 16 68 28 9e a3\r
+f5 e7 46 ad 2e 38 6d d1 bc 2a 8b ab 17 46 ba 2a\r
+64 bf 15 b3 fc 2e c8 b0 cc 99 d8 54 fa 32 11 c9\r
+55 c4 55 d7 ff 2e 1e e2 39 f5 4f 38 6a 42 bb 25\r
+40 a8 75 8f 32 97 e5 52 de 1e be 8e ac 70 f3 54\r
+87 94 2b ba da d5 bd 95 73 90 ff 17 93 af 3d 30\r
+d9 36 b6 f7 9b 44 a9 b6 3c ee 62 d5 58 4d a3 a1\r
+fc ff a5 b6 fe ee c1 1c d6 3b 18 0f 0b fc 5b 6b\r
+\r
+# PKCS#1 v1.5 Signature Example 2.16\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+e4 91 a1 56 fd ba 31 6a 2a 20 a1 2e ea 50 be 77 \r
+4e c9 aa be b1 c3 98 e9 08 be a3 29 68 21 7e a4 \r
+1e 96 6d b7 27 2f 0e fa 37 c9 0a e4 e9 f3 86 21 \r
+a6 27 a9 d1 2c 8b 4e 80 60 c5 45 c5 60 59 e9 e4 \r
+8a 7f 16 81 36 72 47 33 58 19 ba 12 7e 65 93 1e \r
+1d 9f b7 0d fd df 4c 99 56 a5 b0 4c 52 bc f8 cb \r
+df cd f2 29 19 64 da fa ca 7e e7 0e 80 a2 75 9c \r
+ec 73 5d 01 ac a8 ff 89 4b 68 9b 93 78 3d a8 93 \r
+9c 62 09 dd 68 3c 60 \r
+\r
+# Signature:\r
+9f 20 5b a9 0d f2 d4 01 49 26 48 1f 9b 3f 45 a8\r
+9d 23 ec d8 4f 5f 16 e6 73 34 c4 ca f3 f3 b9 c2\r
+01 a7 98 d4 ee c5 62 76 59 88 23 18 0e 07 8d 0a\r
+ef 4f 8f ba 0b 25 c1 fd a3 e3 36 54 c4 74 a9 c1\r
+1a 23 b0 87 10 91 3d ff 76 56 f0 e7 ee 22 cc 44\r
+c9 99 c0 95 a6 51 4a 9d 2f c0 ca 4e f2 08 de 0d\r
+92 93 b0 c5 60 8b ae d1 07 4a 0c fd 57 b9 9e f8\r
+ce ab fd 34 72 b7 db 3a b9 60 6d 13 f9 bb 43 9a\r
+\r
+# PKCS#1 v1.5 Signature Example 2.17\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+06 ad d7 5a b6 89 de 06 77 44 e6 9a 2e bd 4b 90 \r
+fa 93 83 00 3c d0 5f f5 36 cb f2 94 cd 21 5f 09 \r
+23 b7 fc 90 04 f0 aa 18 52 71 a1 d0 06 1f d0 e9 \r
+77 7a d1 ec 0c 71 59 1f 57 8b f7 b8 e5 a1 \r
+\r
+# Signature:\r
+45 14 21 0e 54 1d 5b ad 7d d6 0a e5 49 b9 43 ac\r
+c4 4f 21 39 0d f5 b6 13 18 45 5a 17 61 0d f5 b7\r
+4d 84 ae d2 32 f1 7e 59 d9 1d d2 65 99 22 f8 12\r
+db d4 96 81 69 03 84 b9 54 e9 ad fb 9b 1a 96 8c\r
+0c bf f7 63 ec ee d6 27 50 c5 91 64 b5 e0 80 a8\r
+fe f3 d5 5b fe 2a cf ad 27 52 a6 a8 45 9f a1 fa\r
+b4 9a d3 78 c6 96 4b 23 ee 97 fd 10 34 61 0c 5c\r
+c1 4c 61 e0 eb fb 17 11 f8 ad e9 6f e6 55 7b 38\r
+\r
+# PKCS#1 v1.5 Signature Example 2.18\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+31 1c 88 80 05 35 d1 b4 e9 bc 78 65 18 31 a3 e9 \r
+67 e7 4b 58 28 e0 14 11 5f be 5f 60 9c e8 65 fe \r
+d2 41 97 0f 87 2e c8 f2 3d c2 bf 61 6b 80 20 e4 \r
+45 64 f9 34 dc bf 72 38 61 70 07 4d 92 0b a8 95 \r
+d3 3d df 27 93 69 f2 36 a1 9a cd 4f eb 2b \r
+\r
+# Signature:\r
+89 46 63 e6 3e c1 9f 56 20 3f 4a 44 6b 5e 2b 51\r
+74 c8 14 a5 4c be a2 c8 e2 98 f9 9b 34 c4 bb c2\r
+c8 b1 77 ba 98 57 d8 1c 85 44 36 bd 99 af 58 c0\r
+9d de 5a ca d2 d6 41 50 43 fb 40 e7 84 75 ef 74\r
+01 2e 4d 4f 75 b2 e9 58 85 c8 51 a2 3b 4a 25 54\r
+93 f3 0c 17 2e ae 01 d4 79 10 fa bd 26 9f 57 94\r
+0b a4 43 50 6c 05 22 bf 72 8a 25 7a c1 07 3b df\r
+99 b4 29 56 db 00 2a 30 a5 4d bd af 28 4d 8f 69\r
+\r
+# PKCS#1 v1.5 Signature Example 2.19\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+b2 65 a9 77 7f aa f1 58 a8 08 aa e7 08 5a 83 e7 \r
+07 9c ef 80 d5 fc 9d 7c dc 96 3e c9 \r
+\r
+# Signature:\r
+28 1e 88 ce 19 0e 98 62 90 34 36 a8 6b a4 37 27\r
+16 44 9c c0 ce 8d 55 4f 70 2d 72 52 a0 67 60 af\r
+42 12 1d d0 9b f6 ea 13 f0 eb 25 2e cc 76 42 10\r
+61 f5 74 4b d8 e3 2c 5a 8c 4f c1 f9 52 1b 3f 5c\r
+29 14 6d d0 59 12 91 ac bd c5 b6 3b 55 1d 22 8a\r
+e5 38 95 b1 97 e6 e2 7a 70 68 aa 31 03 b7 0c fb\r
+30 f4 15 84 5c 7e 52 87 f1 11 4e 4c df b4 01 ed\r
+51 98 64 cf 61 bc 46 9c 66 69 9b 29 60 a0 af f2\r
+\r
+# PKCS#1 v1.5 Signature Example 2.20\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+7c 43 9e 7a b9 90 cd ef 95 6c 42 39 47 9b 49 da \r
+84 2f 8b 76 76 5a 7a d4 89 7b c1 6c 61 ed 3d 09 \r
+80 5d 76 e8 a5 be 8b 57 8b 95 1f 45 45 df 92 a8 \r
+a5 37 ba 3e 2c 13 dc e0 a0 03 e7 b6 24 9e 32 be \r
+94 1f 21 cd a7 25 b8 04 07 be 1e 28 bb 9e 39 37 \r
+38 32 53 56 ec 21 74 1d 5c 86 f3 c2 b4 f7 b9 47 \r
+af d5 6b 2d 3a ec \r
+\r
+# Signature:\r
+6a fa d7 7a 05 6d 07 29 05 86 e9 13 80 9a 04 37\r
+d3 9a b3 07 32 45 12 b2 f5 bc 2b af 58 0b f4 55\r
+43 eb 04 ff 83 e9 63 a6 d7 f3 3e 9d ff c1 fc f4\r
+24 48 c5 fc fa 47 27 19 c6 51 f8 1f 3c 62 22 98\r
+3d 38 91 7e 29 b4 84 85 87 9c eb b0 a6 1d 38 9e\r
+23 8c 9c 71 c3 68 ed e4 08 3a 94 62 97 f7 19 0b\r
+4c ef 86 7e 9c cd a8 f9 ff c6 19 84 fc f0 5d 4f\r
+ba fe 10 7d ac f5 b1 dc 8e 2b 14 95 b2 44 f8 e7\r
+\r
+# =============================================\r
+\r
+# Example 3: A 1024-bit RSA key pair\r
+# -----------------------------------\r
+\r
+\r
+# Public key\r
+# ----------\r
+\r
+# Modulus: \r
+b5 d7 07 b7 92 e0 56 f7 2f d7 6d 8d a8 89 a5 3c \r
+e4 d8 eb aa 08 2a ee b2 30 32 e3 c5 d8 eb c4 c1 \r
+55 61 31 9b e8 df e1 88 99 1a 89 51 d4 b2 3a 51 \r
+e8 a9 38 2c 80 5e 4c fd 49 0e bb ce aa 20 80 2a \r
+d6 83 b0 5a 10 0f 29 98 5f 01 1c 3c 8a 44 26 25 \r
+52 d8 3d 9a 1b 7c 27 31 5e 14 4a d8 df 5c be 8b \r
+c6 40 0f d9 cb e7 6b 74 21 d7 08 aa 64 f0 40 ba \r
+e0 7b 7b d6 f9 22 18 f9 a7 29 28 4c c5 98 cd d1 \r
+\r
+# Exponent: \r
+01 00 01 \r
+\r
+# Private key\r
+# -----------\r
+\r
+# Modulus: \r
+b5 d7 07 b7 92 e0 56 f7 2f d7 6d 8d a8 89 a5 3c \r
+e4 d8 eb aa 08 2a ee b2 30 32 e3 c5 d8 eb c4 c1 \r
+55 61 31 9b e8 df e1 88 99 1a 89 51 d4 b2 3a 51 \r
+e8 a9 38 2c 80 5e 4c fd 49 0e bb ce aa 20 80 2a \r
+d6 83 b0 5a 10 0f 29 98 5f 01 1c 3c 8a 44 26 25 \r
+52 d8 3d 9a 1b 7c 27 31 5e 14 4a d8 df 5c be 8b \r
+c6 40 0f d9 cb e7 6b 74 21 d7 08 aa 64 f0 40 ba \r
+e0 7b 7b d6 f9 22 18 f9 a7 29 28 4c c5 98 cd d1 \r
+\r
+# Public exponent: \r
+01 00 01 \r
+\r
+# Exponent: \r
+45 17 92 b5 94 47 cc 93 78 a8 a4 d6 45 fb 22 ff \r
+4b bf 06 70 61 51 1a c8 36 db 27 43 a6 24 13 6b \r
+18 6b 69 43 a1 cc eb 6f 91 29 0d 93 3b bb 8a c0 \r
+53 a4 74 95 28 23 6c a2 72 cf 77 d9 d3 37 ad 2a \r
+b3 6a 87 a9 15 3c 5e 16 71 6e 09 ba 0b ea a6 4b \r
+31 25 26 d4 a8 c2 dc 68 fe 09 e3 7e 50 74 a0 90 \r
+9d 3f 04 ab 73 90 8a 98 0d ec 1d a7 eb 45 05 a4 \r
+8b ca d3 b6 0d 01 60 84 58 64 a6 51 1f f5 59 a7 \r
+\r
+# Prime 1: \r
+ff a9 f8 e8 b0 82 17 0b 63 73 f0 0d 73 c4 23 86 \r
+d4 02 f2 80 8b 39 3b 32 f7 8f 86 ea f6 4b 21 bf \r
+dd 33 4f b9 aa d1 6b a6 d9 da db c8 94 3a 29 e6 \r
+63 c8 b3 9c 09 59 69 02 5b b9 b2 d9 d6 fe 67 b7 \r
+\r
+# Prime 2: \r
+b6 14 37 8d 5e 3d a5 a8 0a 6d 73 52 fc 66 a5 64 \r
+59 7b 06 8f c9 d3 af 5d b0 e4 e7 35 be f8 81 dd \r
+40 17 ee 70 82 96 19 0b 6f dc 84 04 f0 7b d9 dc \r
+5c d5 d2 be 48 86 a7 cb bc b2 1d 8c 3d 64 a6 b7 \r
+\r
+# Prime exponent 1: \r
+51 0e 68 96 0d 70 11 32 51 23 ae d5 f5 00 18 6b \r
+64 c8 52 6e 22 b5 d0 69 06 48 00 f4 79 85 b4 7b \r
+89 fb fc a8 d6 d9 72 92 01 bb fb b6 8a 18 2e b4 \r
+96 aa 49 17 8d 77 45 6d b3 fb 1a 13 2a b0 99 dd \r
+\r
+# Prime exponent 2: \r
+57 eb bf 3f 76 48 52 5b a8 5d 5d 98 ae e4 69 ec \r
+e1 00 75 14 ad a2 98 45 a7 8b 80 d2 05 1b 3e aa \r
+35 ae d8 a6 5f 88 57 23 9c aa 60 dd 79 ba 74 62 \r
+e2 39 26 00 58 49 1d 71 55 f6 b4 29 e9 e3 56 55 \r
+\r
+# Coefficient: \r
+ee 10 7d c7 ef ec e9 a6 5c 0e 87 78 9a f5 59 0c \r
+93 83 9d fe 82 85 20 da 17 74 ff 80 f7 e5 14 55 \r
+7f ff 10 bd 8c ae 18 46 ef ee 7c 10 d7 a1 2c 4a \r
+05 5c c1 36 e4 a4 ef 25 fd 3e d9 d0 cd df 74 f9 \r
+\r
+# PKCS#1 v1.5 signing of 20 random messages\r
+# -------------------------------------------------------\r
+\r
+# PKCS#1 v1.5 Signature Example 3.1\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+98 6e 7c 43 db b6 71 bd 41 b9 a7 f4 b6 af c8 0e \r
+80 5f 24 23 48 8f b4 31 f5 ee 79 2b 6c 2a c7 db \r
+53 cc 42 86 55 ae b3 2d 03 f4 e8 89 c5 c2 5d e6 \r
+83 c4 61 b5 3a cf 89 f9 f8 d3 aa bd f6 b9 f0 c2 \r
+a1 de 12 e1 5b 49 ed b3 91 9a 65 2f e9 49 1c 25 \r
+a7 fc \r
+\r
+# Signature:\r
+62 75 e8 73 97 e3 09 2a ab 36 98 bb 1b 5c f2 4b\r
+8c d7 71 2b ec ac 35 e3 22 03 d5 43 14 e5 47 0e\r
+a9 aa bc 86 57 f5 64 34 e5 af 9f ae 77 8f f6 04\r
+5c 20 e2 e1 ef 7c bd f8 8f 00 75 f3 3e a9 92 77\r
+7c b7 e9 2f 7d a1 8a 0f fd 00 aa 46 71 ed 63 91\r
+1f e9 e9 2f b4 a7 6e 77 dc 6e 0a 91 65 76 71 6c\r
+15 ea ef 08 9a 71 a0 ae a3 5b ed 94 47 a6 c1 7f\r
+2a ad b7 27 fd 42 f0 ac c8 24 62 38 1d 9f a2 ef\r
+\r
+# PKCS#1 v1.5 Signature Example 3.2\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+4c 7b 98 12 0c 87 50 90 87 c4 78 \r
+\r
+# Signature:\r
+59 e5 cb e7 33 1b 92 e0 cb 8f 68 9e ae bb 30 f2\r
+b3 34 a7 46 a6 57 05 59 12 ff 1c 92 76 0b 0b 85\r
+bc 42 82 f3 18 4b 9a 81 4f 44 37 f8 25 ae 07 d3\r
+56 ba c6 9e 54 0c 90 94 2c 7f 7e 6f f4 4f e5 74\r
+f1 21 25 0a d2 30 f4 b5 0c 78 31 1e 4f d3 c9 e2\r
+65 f5 17 ce 32 97 c3 e1 dd db 5c 86 9c 69 8f 44\r
+af 52 5e 73 64 01 a8 1b 45 9f 19 8a d1 80 8c cd\r
+92 9d 49 04 74 ca f7 00 5f 91 0d ac de 21 b0 77\r
+\r
+# PKCS#1 v1.5 Signature Example 3.3\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+66 f7 07 54 22 c8 ec 42 16 a9 c4 ff 49 42 7d 48 \r
+3c ae 10 c8 53 4a 41 b2 fd 15 fe e0 69 60 ec 6f \r
+b3 f7 a7 e9 4a 2f 8a 2e 3e 43 dc 4a 40 57 6c 30 \r
+97 ac 95 3b 1d e8 6f 0b 4e d3 6d 64 4f 23 ae 14 \r
+42 55 29 62 24 64 ca 0c bf 0b 17 41 34 72 38 15 \r
+7f ab 59 e4 de 55 24 09 6d 62 ba ec 63 ac 64 50 \r
+32 7e fe c6 29 2f 98 01 9f c6 7a 2a 66 38 56 3e \r
+9b 6e 2d 15 ef d2 37 bb 09 8a 44 3a ee b2 bf 6c \r
+3f 8c 81 b8 c0 1b 7f cb 3f eb b0 de 3f c2 5b 65 \r
+f5 af 96 b1 d5 cc 3b 27 d0 c6 05 30 87 b3 96 80 \r
+e4 92 a4 ab 23 67 47 11 69 e5 28 38 94 5d ba 9d \r
+d7 72 3f 4e 62 4a 05 f7 37 5b 92 7a 87 ab e6 a8 \r
+93 a1 65 8f d4 9f 47 f6 c7 b0 fa 59 6c 65 fa 68 \r
+a2 3f 0a b4 32 96 2d 18 d4 34 3b d6 fd 67 d0 0b \r
+25 b8 1b 09 b5 62 03 85 64 \r
+\r
+# Signature:\r
+59 9e 69 c1 54 e4 fe 66 b3 6a 69 04 92 fa eb b2\r
+bb e7 34 e0 41 5d 9f 3c f7 e3 78 28 f5 3e 61 13\r
+04 49 17 3a 33 46 0c 6b 4c 8d c7 d6 81 ca 6f 4d\r
+af 1c b8 16 d4 0a a9 08 2e e1 93 7b e4 bc 6a 09\r
+c6 de 79 8c 82 86 fc d2 a2 b2 19 6c 59 99 4c 93\r
+7f 37 13 07 52 61 2c 6b ff 6d bb 53 e0 64 7f 88\r
+58 bc 38 38 64 02 1e 6d 56 68 19 20 24 92 97 82\r
+22 46 a0 f5 28 aa b3 ed 18 5e eb ce 91 9c f8 3e\r
+\r
+# PKCS#1 v1.5 Signature Example 3.4\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+d9 34 44 28 fa 8a 58 f8 fa 7b 44 3e 51 fc 9b 51 \r
+e3 7a 70 21 0d b8 bd 1d e7 f8 67 5d 84 79 ff 65 \r
+7c a7 29 55 b2 3c 6f 4a 09 16 37 9a 4e de e1 f2 \r
+6c 85 e0 52 90 21 1e eb 25 83 2b 09 cb e5 ea ed \r
+3e 39 65 b0 5a 52 fb 5b 16 49 11 82 c5 91 3c b1 \r
+82 57 48 e8 1a d0 14 f1 3d 29 6d c1 69 57 08 2b \r
+1b 83 b4 be 50 a0 f9 59 c9 e7 f3 aa 80 77 97 2e \r
+2b 93 c2 ef fd 9f 30 86 25 b8 ca 7f 54 d7 b6 96 \r
+48 79 04 47 ac 91 f7 98 5e 51 0d f7 0d 6e bc 35 \r
+72 c2 05 e6 \r
+\r
+# Signature:\r
+2c 06 01 65 fc c5 65 5c 06 57 c8 fe 08 e0 5b dc\r
+8c d7 7c 1f ec b6 d1 8b 89 38 11 c9 9d d0 91 e0\r
+d8 50 6d cc b4 9e 33 da af f6 da 96 7b 99 e3 44\r
+cb 17 fa 3c 96 31 29 9b 35 89 81 8b 37 ed 9d 5d\r
+78 94 e4 a6 9d db 24 83 2e 1a 88 60 01 4e e5 e5\r
+eb 95 3e 8b 35 48 4b a4 fe c9 c3 03 3a e2 e1 18\r
+9a f7 94 a7 2e 42 67 21 5b fe 45 8f 0f ce 6b 37\r
+a5 54 9e f8 05 43 d0 d4 1a 87 b2 c6 e4 d8 4c b5\r
+\r
+# PKCS#1 v1.5 Signature Example 3.5\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+8c 67 02 da af 58 f6 a4 75 fa d2 c7 a4 bb 15 6a \r
+57 06 42 55 77 d5 e3 0c 6a 6b d3 66 9f d0 30 af \r
+d7 89 fa a3 d0 10 18 d4 5d b2 a0 47 f5 2c b4 f6 \r
+3d ea 36 09 42 af e4 76 26 42 06 d9 83 ad 38 36 \r
+e1 55 c5 6b 2e cc 08 76 3a fb 9f d5 1d 19 99 0e \r
+fc 33 63 f6 57 e2 85 e0 35 21 e8 ca d0 1d 2c 93 \r
+5a 18 3a e2 3f 0e e8 71 00 86 a8 5b 9f ad 4e 7f \r
+2b 09 45 2e bc 40 3c e0 c0 e5 75 5a 7b 2f 33 f4 \r
+de f0 db 71 c9 79 31 ff 90 4a 81 31 99 84 bd c5 \r
+16 6f 6b 92 0c 97 ee 74 fb 7e 89 0f 49 0c 90 de \r
+30 ca c9 76 b7 17 23 e2 f8 6e 9d e1 d5 03 a4 1b \r
+c8 1d 53 cc be f8 ac 40 53 57 d9 df df 30 64 66 \r
+b4 26 95 80 21 2e 9d 71 32 \r
+\r
+# Signature:\r
+0d 89 fc f8 44 a9 dc 22 3d 5f 63 8d cc 3a 59 78\r
+71 6f 26 28 b8 a8 3a b3 3e 6e 25 5f f8 aa 01 57\r
+8c 14 e3 89 7d a4 5a ef d6 3f a8 7c f3 5e 24 4b\r
+f4 82 8e cd 21 95 0f 30 85 a3 66 21 c9 da 1b be\r
+7e a6 27 31 c6 8d 4d e0 a3 76 e2 2d ac 2f 54 8c\r
+d4 ba 4a 54 2e 71 0f 55 ce 85 a9 c1 95 93 c0 8c\r
+87 d2 96 d6 35 87 b3 fe 2c 5d 11 65 ee 27 74 4c\r
+75 d8 f4 f1 43 71 63 7c 0c 0a 44 62 76 28 95 83\r
+\r
+# PKCS#1 v1.5 Signature Example 3.6\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+56 f4 ff d1 27 9d cf e5 62 a9 dd d4 1e cd f6 0a \r
+3f f5 82 46 bf af 95 65 cf 67 4b 0b 90 75 f4 0e \r
+ea c0 8f 0b 89 66 61 8a 19 6b 12 28 eb ce 93 fc \r
+9d d7 9b d4 63 ea 7d 2c 97 4d 2c 2f 53 9e af b1 \r
+b2 bc 1e a3 4d 74 f7 20 e1 19 34 2f f7 13 12 25 \r
+aa 9a da 89 4b 76 b2 ec b1 2f 2f 40 28 44 b4 42 \r
+5c f8 f1 a3 9b 0a 9c 83 b4 5b 03 cf c0 d1 5f d3 \r
+14 d6 ab f5 32 b8 ed fc f2 36 51 4b 2e 45 86 97 \r
+86 fe fe 27 f5 4d 66 6e e5 24 e4 b9 c0 53 be 39 \r
+75 01 58 29 91 fa 2d 80 2c 7d 1b 17 8b 23 e9 b6 \r
+ec e6 fd 2e f0 13 2c 06 01 a8 6f 07 68 ba dc 59 \r
+c5 cc 33 f2 4d ed 55 4a e5 1a e3 ec 23 f9 dd 08 \r
+9e 32 4a 68 21 f6 15 7f 12 84 42 ac 58 07 65 8a \r
+d3 40 26 b8 fc fd a6 dc 7f 02 a9 3c 16 6e c9 45 \r
+ee \r
+\r
+# Signature:\r
+0d eb 39 7b f2 cf f9 79 d4 71 9c 64 8b 0a 35 25\r
+35 1f 5e 08 40 5c a2 61 4a 83 e5 6a ce 86 f5 52\r
+e4 1b b9 28 de 50 f0 bc 0f e3 1a 2e f2 ad 79 9f\r
+d3 cf 47 42 b1 13 1a 37 bd 08 f2 a1 3c ac da 67\r
+f4 95 c9 f1 a9 ef 64 85 70 72 32 9f 00 cc 4c 01\r
+22 35 59 9a 83 fc 45 94 fe d9 23 03 49 01 ed c2\r
+7d 5f 05 79 98 34 93 5c ab e2 64 ff c1 96 63 71\r
+4d 8c 3d e8 e9 61 9f d2 84 2d 22 98 f7 a7 2c 99\r
+\r
+# PKCS#1 v1.5 Signature Example 3.7\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+0e 79 ac 9c 9c 03 96 d9 69 fb 3f 7c c9 94 7b 07 \r
+8b ac 49 3b 03 52 c8 e0 cd e5 46 3e a5 c1 18 4f \r
+d5 2a 1f b7 48 19 3c 14 7a 74 80 0d 24 f7 51 ba \r
+93 5e 19 c9 11 5e df 07 22 88 33 0b f3 83 f4 95 \r
+29 6b e1 aa 4a 50 95 b9 57 3b cb db 22 8a 43 13 \r
+12 37 86 5d 26 df bf cf ef 07 8f 35 9f 9a 95 62 \r
+e2 5b 69 63 85 e1 28 13 ff fb c8 d5 29 81 9a 91 \r
+45 1d 33 a5 07 26 39 2e 4f ef 29 41 8c ca 2c 73 \r
+a0 68 e6 0e ae 31 84 70 33 1a 0f 1d b4 bb b6 37 \r
+17 3b e8 0f ea 03 c8 2c 15 d0 01 93 36 2d 3a 18 \r
+ad 9e 2f 68 05 00 d7 26 5b 15 57 03 3a 52 09 77 \r
+d8 10 fc \r
+\r
+# Signature:\r
+73 3b 7f ea 12 0c a5 f0 35 9a 89 05 75 0c 49 c3\r
+63 d8 84 f5 6c 2b 7a 72 9f ad 7b ff 44 5a 1e 54\r
+79 89 41 74 53 93 e1 76 77 12 ac 4b 9d d2 68 38\r
+88 d9 e6 8b 90 5d ba b8 79 21 85 18 48 72 73 86\r
+02 ea f4 a8 0f 45 95 f7 8f d4 a4 61 0b f8 22 0b\r
+86 a2 88 5f da 24 e1 99 64 28 cc d1 5f 20 08 e0\r
+68 51 b2 ee ad c3 dc 8e 03 01 2f 9b db 3c e0 57\r
+5d dc 3a dc 7c 59 08 49 8b 69 a7 97 ba 58 29 c7\r
+\r
+# PKCS#1 v1.5 Signature Example 3.8\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+22 eb 7d ba 73 30 7c 7c 52 a0 7c ed 89 db 8b c5 \r
+39 4a ed 22 72 f7 e8 1a 74 f4 c0 2d 14 \r
+\r
+# Signature:\r
+9e a4 60 0a 1a 65 49 fd 39 75 f6 49 8a 04 d6 9f\r
+96 fa d0 e8 e6 fe bc fb e0 1c 2f 83 17 0b c7 4e\r
+b9 1f 2e 33 53 38 d5 83 e8 85 aa c6 14 24 c9 b2\r
+66 c3 d2 d9 8e 79 77 ff e4 95 f9 c1 a6 ee 5e f4\r
+1a 4c c7 47 8c 24 b3 16 c7 d9 f6 db aa 65 a4 ca\r
+de f1 81 ca 94 6f 9b 92 18 4f ae ca 8a 13 16 ae\r
+ab 5c d3 87 8c 6d f0 74 f9 06 0b 9d b6 6d ec e9\r
+a9 36 7d 75 49 03 5a c6 bf 19 62 36 5e 1f d3 fc\r
+\r
+# PKCS#1 v1.5 Signature Example 3.9\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+f6 80 \r
+\r
+# Signature:\r
+51 63 90 61 fa 7b 7c d5 df 64 b3 0a 39 4c cf 7e\r
+24 26 97 2a a1 dc f5 d4 5e b8 ec 2c d9 0b 9b 19\r
+68 92 be 5f a0 3c 43 f3 c3 72 3a e3 13 0d 61 51\r
+b3 3a 63 7c fc 50 ba 35 26 a7 39 6c f8 47 9c 50\r
+8c 18 11 81 0d 68 b3 88 0a f6 e6 4b 16 bd 70 79\r
+be 9c 00 39 29 51 22 61 89 8f a5 7c 06 ff 7e 1d\r
+80 39 fa 99 3f d2 05 6a c7 01 9b 8d bc f2 53 0d\r
+53 80 e6 01 a4 a1 87 1b 86 c2 0b c1 c4 89 c5 f3\r
+\r
+# PKCS#1 v1.5 Signature Example 3.10\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+65 0e 64 ed 1d a8 8b cf 8a e2 75 22 be 1d 5c 99 \r
+19 f2 09 9d d6 32 45 5f 66 d9 af e8 ba f4 6c c8 \r
+a1 98 40 9b 09 28 dd 87 22 62 84 d6 69 bf 01 bc \r
+ec 44 37 6c b0 e9 bd c6 86 ac aa 8b 46 34 86 08 \r
+59 94 ca fb 5a 8c fc 33 d4 9c ee f4 79 fc 6e 04 \r
+f8 ee f6 37 eb 68 cb 57 81 8d 5f 97 70 ac 52 3e \r
+d5 b0 16 38 36 7f f4 7f \r
+\r
+# Signature:\r
+50 3e 05 66 1d 68 1e ca 57 4e 02 30 af 2d aa 87\r
+7b 90 51 6e 5e 19 72 8c 91 76 8d 6e ef ee 00 1b\r
+35 41 9c 5f cb 56 11 d6 0e 7e cb e3 c9 5e 5c 88\r
+ba 93 46 07 04 f1 69 4a e8 04 44 eb 97 18 a0 8b\r
+66 86 fa d8 6e 52 59 90 c3 c1 a6 6c 8c 53 aa 31\r
+ae d8 cb c4 0f d5 4f 5f f8 a1 34 74 9d 79 d3 8f\r
+bb 0d 58 44 26 78 ff 2f 70 c6 c5 0f 25 47 2a 72\r
+d6 32 05 e7 82 42 3d f4 0b 6c 43 de 03 a1 8f 8b\r
+\r
+# PKCS#1 v1.5 Signature Example 3.11\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+57 f8 ac 6a 9e 46 8b 7f 1f 74 5d ff e3 9e 9c bf \r
+90 24 a0 ff 36 e0 22 83 92 be 6b 29 94 29 17 76 \r
+b8 9c 0a 4b 1f a8 6b 2e c8 bb 7c 3e 64 f5 58 5a \r
+fa 77 \r
+\r
+# Signature:\r
+90 be 16 b4 08 b3 85 73 95 39 b3 b9 a2 9b 94 c7\r
+29 38 5f 79 dd 4a 79 81 1e 6f 67 c8 0e d3 59 e5\r
+f4 b2 a1 9c 22 2a 82 b3 d6 d6 2a 90 3f b1 80 c1\r
+f4 3c b3 fe 06 a2 50 bc b0 e7 c6 88 66 5c 83 68\r
+a1 1a b1 16 0a db 74 02 91 35 2b 38 38 b6 92 3a\r
+4a 37 ad 06 04 0a 53 59 20 dc 0f 10 57 9e cf 48\r
+1c d4 41 37 17 d7 d4 d9 60 aa 75 1a 74 3e 2f 7c\r
+61 6e 54 2e e6 5f bb fe 24 66 0e 10 1d aa 2b dd\r
+\r
+# PKCS#1 v1.5 Signature Example 3.12\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+80 ef 01 aa cc 5b fb 0d b4 8c 6d e3 d8 14 95 b9 \r
+c2 31 1a 38 93 89 f2 3b 70 c0 24 da 44 78 bf ab \r
+2b fe 4e 54 6f 13 ff fd b9 63 89 4e c6 da db 3d \r
+2b 0e e3 37 f1 16 31 05 8e ac 86 09 e5 a1 55 4a \r
+f7 97 a9 f9 ab 47 8c 2d 5b 91 88 c8 25 \r
+\r
+# Signature:\r
+44 c3 f5 1d cc 6f b2 b4 e7 0f 53 7f 54 64 c6 32\r
+0a d4 2e 21 28 fa df d9 a7 e9 37 cd 65 dc bf 35\r
+ac 66 cf fa fd 39 28 39 66 f2 f1 5d e5 27 72 35\r
+50 71 5a 31 04 29 45 e2 00 cc 5c 86 fa ba 5e c8\r
+ab af 50 9c 0c cd 64 d9 9d ed c7 6e 3c ea a8 c4\r
+47 17 93 37 f4 a0 77 7b 11 52 6e 47 2a cd 41 3b\r
+4a c7 c3 03 cd cd 84 ca fc 02 52 43 ef 00 6f 79\r
+dd af 55 c1 5c c4 a8 f1 5e a2 c8 7f 05 77 38 14\r
+\r
+# PKCS#1 v1.5 Signature Example 3.13\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+ac 17 95 91 55 28 3b 0c 7c ff 51 5c 33 15 d8 9b \r
+df e9 58 7c c0 01 20 d3 ab 31 bb 76 07 bd b3 01 \r
+ca ea f5 e1 5f 5a 6f 58 c9 c5 68 ff b3 d2 34 02 \r
+51 6f fe 23 0c 69 81 a8 1c 17 8a 8a 18 ca 33 0b \r
+b8 ec af b4 81 b2 49 b4 66 a8 cf 78 b7 0d 9e 78 \r
+a1 39 a8 8f 48 4c ce 7c 20 35 b2 e8 9d 49 3b de \r
+88 5e 1c de 42 cb 1a 94 49 ff 57 0d cf 9e 33 c5 \r
+cc 77 b2 59 be e2 83 05 39 68 02 ed c1 6f c5 a8 \r
+e1 0b 56 da 2d a7 86 b5 fb 6c 81 2b 2e 17 5b 69 \r
+6b 1a 9a 96 fc 72 2a 43 21 46 45 0f 07 a6 48 ef \r
+3c cf 99 6e f3 08 1f a5 bb 42 21 c9 13 ba 22 28 \r
+97 0c 9b 0e a5 26 6b ff \r
+\r
+# Signature:\r
+48 45 8c 72 f0 67 dd 9a b7 20 ef 16 0c f3 18 4b\r
+b9 80 1e 26 d6 14 a8 89 a8 35 84 41 07 ac 01 65\r
+0b 11 84 a0 0b ca a7 af 1f f7 de 3a 2e f2 e7 ce\r
+b5 b2 5c 3b 5d 5b cb 29 86 59 34 32 47 48 c6 8f\r
+07 de 17 4e 17 80 a7 0f a2 4d 6a 3a 9f 7a 41 b8\r
+19 37 c4 98 4b 2c be 06 b3 d7 b4 4c da e9 cb d4\r
+16 32 d0 09 43 c3 b5 73 b1 aa 29 12 75 0a 9a eb\r
+07 f1 10 13 0b a3 61 dc f8 f5 36 79 0d 60 78 47\r
+\r
+# PKCS#1 v1.5 Signature Example 3.14\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+99 09 8f 77 f6 ed 35 c0 8f ab 3f a9 78 86 93 67 \r
+1a 58 00 dc 30 3c 9c ce 42 46 16 fa 0c 7e e8 88 \r
+86 87 67 4c a8 8a b2 2a 5f f2 d1 2e 2b 38 8b 09 \r
+4f fd 7d bf 9a 09 27 a9 62 17 17 15 1e 08 ec b8 \r
+ad e1 55 9f 4b 48 e2 3d 31 cf 57 cd 38 84 df e2 \r
+b3 e4 b2 60 e8 96 02 94 07 96 94 96 02 6c 74 a2 \r
+18 90 d9 a9 af d2 cb b8 f2 83 0a 56 6a ed 24 f0 \r
+16 19 74 01 a8 cd 22 c8 2f b8 b2 28 91 84 58 24 \r
+0a 23 d1 01 85 eb e7 72 dc 19 bc fe 3e 44 92 2f \r
+e7 32 09 c1 ee 00 40 07 9f b0 3b 82 7c 82 17 d9 \r
+ed 7c 98 c9 5f 30 97 4f be 4f bd dc f0 f2 8d 60 \r
+21 c0 e9 1d a6 0c a2 ad 77 79 7e ce 86 de 5b f7 \r
+68 75 0d db 5e d6 a3 11 6a d9 9b bd 17 ed f7 f7 \r
+82 f0 db 1c d0 5b 0f 67 74 68 c5 ea 42 0d c1 16 \r
+b1 0e 80 d1 10 de 2b 04 \r
+\r
+# Signature:\r
+b4 6a e8 66 13 91 89 b6 b1 71 a7 62 05 fb 9c e0\r
+41 b4 02 98 e5 ba 92 c2 e9 cc 0b bf bb 4a 76 42\r
+5d e6 ce 13 02 1a e1 a4 a9 42 29 9f 98 ff 89 f5\r
+52 f4 3a 90 73 de 64 f4 9c 2c a3 62 0d 09 d7 e6\r
+e3 fe 28 22 1e 93 68 98 7e 11 0c d6 06 71 06 c4\r
+db 31 a0 38 90 23 67 96 c8 42 52 f5 6c 95 03 4a\r
+01 c5 fe 98 1e 81 b6 54 85 5a af 27 47 50 11 55\r
+72 0c 21 93 f3 a1 d1 0f 49 fe e9 0c 52 fe e9 e4\r
+\r
+# PKCS#1 v1.5 Signature Example 3.15\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+ff 79 06 42 30 5b f3 02 00 38 92 e5 4d f9 f6 67 \r
+50 9d c5 39 20 df 58 3f 50 a3 dd 61 ab b6 fa b7 \r
+5d \r
+\r
+# Signature:\r
+07 56 32 47 73 4f 3c 3d 7a 31 02 bc b4 5b b5 68\r
+15 68 ed 10 f2 ec 45 9e 46 9e 1a 9e 34 09 a1 39\r
+fb 15 1b 98 d3 f3 b6 2d aa ac 8b 8f 89 16 df 85\r
+d6 df a9 ab 76 0d f1 e1 5a c8 90 44 e5 79 cf 47\r
+a1 af 6c d6 ec 70 4c ed 9b 03 4c 6a aa 90 d0 e7\r
+0e 08 52 14 0e 75 41 f2 ef be 2c f1 90 b9 58 94\r
+1e c8 b5 97 4f 9c 44 4d 26 c3 43 16 c9 21 6b 65\r
+95 e6 56 bc 6c 78 44 fa c1 6c 51 52 60 92 8e 78\r
+\r
+# PKCS#1 v1.5 Signature Example 3.16\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+e9 9f cb f8 59 2d be 2d 7e 27 45 3c b4 4d e0 71 \r
+00 eb b1 a2 a1 98 11 a4 78 ad be ab 27 0f 94 e8 \r
+fe 36 9d 90 b3 ca 61 2f 9f 22 d7 1d 54 36 3a 42 \r
+17 aa 55 11 3f 05 9b 33 84 e3 e5 7e 44 52 28 80 \r
+62 af c0 8f cd b7 c5 f8 65 0b 29 83 73 00 46 1d \r
+d5 67 6c 17 a2 0a 3c 8f b5 14 89 \r
+\r
+# Signature:\r
+22 74 64 36 16 4e 63 93 78 71 c1 d4 7d 8e 3e 70\r
+c9 e5 2d 11 17 31 6b b1 54 cd 55 2e 83 6f 2a 3f\r
+be 6d 89 d6 07 4b 51 b0 15 9c 26 c2 8d f7 5e 3d\r
+7c fb 7c f0 02 f6 5d 1e e5 21 ed c2 c3 a6 5c 52\r
+6c 98 c7 c0 25 fa 8b b6 31 47 09 16 d3 01 b8 f7\r
+80 9d dd 91 9d ed 31 a0 d4 66 83 ec 5b b4 41 70\r
+61 6e ab cd 97 02 05 ed 76 02 02 d0 d8 7a 65 79\r
+59 08 b2 8d 32 6f 93 62 13 f2 9f eb 59 77 34 91\r
+\r
+# PKCS#1 v1.5 Signature Example 3.17\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+6a 6a 0c 9b 5b 15 bc da 19 6a 9d 0c 76 b1 19 d5 \r
+34 d8 5a bd 12 39 62 d5 83 b7 6c e9 d1 80 bc e1 \r
+ca 4a f8 70 fb c6 51 60 12 ca 91 6c 70 ba 86 2a \r
+c7 e8 24 36 17 30 6f 4f 9a b9 50 11 99 ce f5 5c \r
+6c f4 08 fe 7b 36 c5 57 c4 9d 42 0a 47 63 d2 46 \r
+3c 8a d4 4b 3c fc 5b e2 74 2c 0e 7d 9b 0f 66 08 \r
+f0 8c 7f 47 b6 93 ee 40 d2 e1 80 fa e1 ea c4 39 \r
+c1 90 b5 6c 2c 0e 14 dd f9 a2 26 ba e1 7d 20 38 \r
+5d 50 19 55 82 3c 3f 66 62 54 c1 d3 dd 36 ad 51 \r
+68 b8 f1 8d 28 6f dc f6 7a 7d ad 94 09 70 85 fa \r
+b7 ed 86 fe 21 42 a2 87 71 71 79 97 ef 1a 7a 08 \r
+88 4e fc 39 35 6d 76 07 7a af 82 45 9a 7f ad 45 \r
+84 88 75 f2 81 9b 09 89 37 fe 92 3b cc 9d c4 42 \r
+d7 2d 75 4d 81 20 25 09 0c 9b c0 3d b3 08 0c 13 \r
+\r
+# Signature:\r
+41 93 22 fa ca ce 76 f2 d5 e2 fb c1 9a ab 86 c7\r
+18 a2 80 64 f1 d7 b4 c6 62 f0 47 4a 87 77 a9 59\r
+bd 65 69 53 8c 16 08 1c 0f 52 69 8b 2f 00 17 30\r
+c0 3b 9a 3d 26 94 73 74 c9 61 fd ed a1 15 b6 b7\r
+da f6 65 18 f1 fe 82 0f 67 c3 ff 12 f0 bc 3f 11\r
+01 e3 91 1c 43 90 6b 0a 12 7e 50 be 01 40 c5 ef\r
+c4 35 e2 95 7b 44 2e 60 ad 52 5a d7 0a c9 ef 61\r
+c3 d6 4f 0e 56 6c bc 1f 9d 51 ba e1 d4 72 71 da\r
+\r
+# PKCS#1 v1.5 Signature Example 3.18\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+3b 93 ef 4a 55 50 96 69 19 15 dc 23 c0 0e 95 4c \r
+de b2 0a 47 cd 55 d1 6c 3d 86 81 d4 6e d7 f2 ed \r
+5e a4 27 95 be 17 ba ed 25 f0 f4 d1 13 b3 63 6a \r
+dd d5 85 f1 6a 8b 5a ec \r
+\r
+# Signature:\r
+ae 21 1f 4f 77 da 1b e6 af 9c 9e a7 04 db ac 4b\r
+3f 3e 27 0d 2f ac f3 65 1d 78 7d 0e bf 59 a7 9a\r
+39 61 2d a1 2d 57 c4 ac 8a bc 72 8e 1d a3 f0 1a\r
+15 20 fc 9b 32 cb 0f fe 00 8c 80 69 92 8f 83 e1\r
+35 90 a7 8b 81 7e 81 9f bf 2f d0 58 93 ec e5 b1\r
+41 86 d9 01 c7 68 e3 42 dc 54 72 23 45 ae 8a a8\r
+73 8d 4d 59 70 c5 08 54 72 bd 98 99 fa 00 42 cf\r
+14 bc ed ff db c0 ef 50 81 90 75 84 2f c3 6b b8\r
+\r
+# PKCS#1 v1.5 Signature Example 3.19\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+49 ff d5 6b f7 ef c1 13 04 a5 af bc 19 d4 79 24 \r
+90 18 fd f4 e0 9f 61 87 26 44 04 95 de 11 dd ee \r
+e3 88 72 d7 75 fc ea 74 a2 38 96 b5 34 3c 9c 38 \r
+d4 6a f0 db a2 24 d0 47 58 0c c6 0a 65 e9 \r
+\r
+# Signature:\r
+68 fb 0b d5 19 bf 6f 96 e0 76 af 29 01 2f 3c 3a\r
+11 37 c0 98 8d e7 b6 fc ed f4 f5 1b df ee 64 5b\r
+89 7f 17 70 9e 05 ca a0 b1 13 50 0d 90 4d c0 60\r
+0d 17 a9 ff 8e b0 2e 1e fc 9c 46 7a 24 00 3e f8\r
+1e 72 74 67 c4 7d d6 56 35 6d 70 37 2a 15 ea 88\r
+41 21 63 4b 01 5d 29 51 1f 28 95 55 77 99 07 9d\r
+03 c6 d4 de 25 9b 3b 36 2b 80 49 2d 81 bc 9f e8\r
+54 44 63 ec 03 0b b5 c9 c7 3c 32 74 e3 ed 12 22\r
+\r
+# PKCS#1 v1.5 Signature Example 3.20\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+bc 25 5a f8 9a 6a 19 9b ca 4a 39 1e ad bc 3a 24 \r
+90 3c 0b d6 67 36 8f 6b e7 8e 3f ea bf b4 ff d4 \r
+63 12 27 63 74 0f fb be fe ab 9a 25 56 4b c5 d1 \r
+c2 4c 93 e4 22 f7 50 73 e2 ad 72 bf 45 b1 0d f0 \r
+0b 52 a1 47 12 8e 73 fe e3 3f a3 f0 57 7d 77 f8 \r
+0f bc 2d f1 be d3 13 29 0c 12 77 7f 50 a3 34 db \r
+6f ae bf 11 08 1a 04 f8 7c 2d 62 1c de c7 93 0b \r
+9b 18 3a 99 04 75 dc bb 9c c7 f3 45 a3 b5 58 03 \r
+03 0c f0 36 1a 5d 80 81 \r
+\r
+# Signature:\r
+41 f6 52 df 79 fd d2 6d e9 5c 7a 98 fa 85 87 13\r
+fb 56 6d 8b 39 92 8e 71 76 4b 2b eb 19 84 03 e0\r
+3b 7e 06 dc 96 0c 50 51 57 bd f4 05 92 c4 d7 75\r
+03 fb 72 a4 e0 05 5f 97 4f e9 39 44 8d a3 68 f5\r
+3b d2 ef e2 6e 6f 9a 25 4b 3e 87 32 aa d8 16 87\r
+b3 61 e2 1a 40 cf 3e 5e 92 38 9a 2b 48 9c 05 c5\r
+97 f0 e1 64 e2 67 70 93 72 00 43 27 16 35 62 dd\r
+8a 0a db bd fe 3b c6 16 bd 08 42 96 84 c2 0c 69\r
+\r
+# =============================================\r
+\r
+# Example 4: A 1024-bit RSA key pair\r
+# -----------------------------------\r
+\r
+\r
+# Public key\r
+# ----------\r
+\r
+# Modulus: \r
+d1 31 e0 92 43 37 0d d2 cd 54 25 c8 d0 30 f9 9a \r
+db 10 5b 14 7b 8a 3d 00 67 c6 16 44 3b 7d 4b 96 \r
+82 38 e0 6d bb 5f 20 28 e8 53 57 4b 7c 14 be 10 \r
+83 c1 e5 7e 13 2c 1d f4 a3 a2 71 32 63 fa de 12 \r
+f7 11 4f 43 69 bb f0 56 20 55 48 41 33 1e d8 11 \r
+00 50 52 19 25 72 ce b4 8d 66 24 07 fd 30 81 cf \r
+ab 8b 48 c7 e9 2d 3c 4a 26 a9 64 5a 38 e6 de e8 \r
+8b b0 07 59 75 a4 da d9 64 6b 21 60 38 40 af 5f \r
+\r
+# Exponent: \r
+01 00 01 \r
+\r
+# Private key\r
+# -----------\r
+\r
+# Modulus: \r
+d1 31 e0 92 43 37 0d d2 cd 54 25 c8 d0 30 f9 9a \r
+db 10 5b 14 7b 8a 3d 00 67 c6 16 44 3b 7d 4b 96 \r
+82 38 e0 6d bb 5f 20 28 e8 53 57 4b 7c 14 be 10 \r
+83 c1 e5 7e 13 2c 1d f4 a3 a2 71 32 63 fa de 12 \r
+f7 11 4f 43 69 bb f0 56 20 55 48 41 33 1e d8 11 \r
+00 50 52 19 25 72 ce b4 8d 66 24 07 fd 30 81 cf \r
+ab 8b 48 c7 e9 2d 3c 4a 26 a9 64 5a 38 e6 de e8 \r
+8b b0 07 59 75 a4 da d9 64 6b 21 60 38 40 af 5f \r
+\r
+# Public exponent: \r
+01 00 01 \r
+\r
+# Exponent: \r
+56 b5 31 bb ee 18 37 a6 94 6c b8 6c 8f be 7c f6 \r
+ee ad cc d2 a4 92 1b ce bb 34 a3 ae 0c 6a 56 96 \r
+3f cb 8b 5a 70 3b 71 7d 03 2e e8 13 e5 8e 43 69 \r
+5c f3 55 47 f8 72 64 c8 2d ba fa e8 44 00 8b 62 \r
+d9 12 2e 9d e8 95 85 60 c8 db b0 07 72 7e 71 39 \r
+e0 a9 82 e0 75 88 14 11 3d e5 4b a0 a4 55 17 51 \r
+fc a0 fc b1 2d 8d e3 0d 78 b8 b1 12 98 a7 f7 8f \r
+0b 08 8f 16 87 05 3c 84 a5 76 2f 62 a4 bd 05 c1 \r
+\r
+# Prime 1: \r
+ee 22 a4 24 62 f7 71 8d fe cf 02 4b 17 c9 26 76 \r
+78 05 91 71 33 9c c0 07 06 52 60 d3 04 7e 5f 89 \r
+fe d9 10 34 28 43 37 8c 22 68 5d 53 2e 84 d2 59 \r
+3a 7c 8c 02 6a 87 66 c5 a2 b2 ed 55 8e 88 23 19 \r
+\r
+# Prime 2: \r
+e0 e3 70 0c 99 a3 e8 15 d7 4b 75 2a 84 fb 42 ec \r
+20 e5 20 3c a7 c1 af 97 fb f3 97 b9 5d 11 05 37 \r
+6c f5 d6 3e 3c 57 bf a6 58 55 e5 08 14 6c 86 db \r
+aa b2 89 c9 5b c0 45 5a 58 2d d8 f5 3f fb ed 37 \r
+\r
+# Prime exponent 1: \r
+d1 f1 34 68 e7 df 62 fb 5e b3 be 3f d9 de 7a cc \r
+63 0f f5 a3 a9 6e fe 54 b3 1c 19 44 b0 67 81 6f \r
+35 80 c4 aa 56 fc bb 92 0e 1b 98 7b 67 3d ad fd \r
+00 75 21 32 58 1c bb 5c 6e 0d f4 f3 42 cf 7e b1 \r
+\r
+# Prime exponent 2: \r
+ac d0 da 38 34 90 ea 36 6e 7d c4 09 ea ab 13 20 \r
+55 9e fd 88 de f9 4e 30 a3 22 ec 03 3b eb 6a 70 \r
+cf 40 93 64 bc 06 4a 76 50 07 a1 ba f5 c6 f8 53 \r
+31 f7 85 3e c1 4d 1d 7e 71 a8 b9 c2 ad 6a b1 3d \r
+\r
+# Coefficient: \r
+1e da 83 d4 a6 d0 99 b6 0b 2b 2b 84 c6 ae 41 65 \r
+c7 22 50 3e bd 37 3c 83 6f 97 35 ca 3b 20 a3 eb \r
+08 1b 31 e7 83 04 13 20 df c6 dd f9 05 14 ca b6 \r
+ec 4b 80 ae 0c 05 2d d1 e7 ce 34 18 ae ee 24 a4 \r
+\r
+# PKCS#1 v1.5 signing of 20 random messages\r
+# -------------------------------------------------------\r
+\r
+# PKCS#1 v1.5 Signature Example 4.1\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+2c 93 6b f6 13 3a 96 93 f1 46 ee 5a 1a 91 c2 f1 \r
+69 b2 e6 44 a5 18 e8 5a 75 f6 e4 3b 56 0d 4a 72 \r
+f3 8c 64 f8 4c 05 24 0e 8b 4e 55 78 61 63 e7 27 \r
+62 65 ba 21 3b a9 3d ee 1b 2e 10 21 35 a9 89 b6 \r
+24 8e 88 32 7e 30 03 61 a7 4f 2e 9b c4 1f 2a 37 \r
+68 3f 1a 1a 15 f9 dd 47 2e 11 8e 1c 4b 3e de 58 \r
+dd 70 f3 ba cc 25 2e 0c 65 4b 0f 7a 6e 41 a9 28 \r
+75 10 ef a0 3b c9 2e 80 5e 5b 2c 91 3f 51 e2 5c \r
+7f 85 86 40 ca fa c9 d3 c9 17 68 65 07 fa 94 f8 \r
+86 6f 86 9a 4e 5a 6a 3d 4f 9d 97 ed 81 37 f4 14 \r
+d1 44 7a 86 ee f9 e1 49 69 94 ad 2d a5 97 \r
+\r
+# Signature:\r
+9e 93 f7 ac c5 0f b3 a0 b1 24 3d c3 38 c8 cc b1\r
+2b ca b4 aa 45 04 40 b6 30 6c 81 b5 0b 8f 95 a9\r
+36 dd 16 63 30 c6 99 b2 85 80 da 1b e2 75 61 64\r
+02 da 85 bf d8 ee fc d6 99 35 87 e6 09 28 65 d8\r
+25 3b 04 08 1d 57 2f 26 27 59 f5 56 df b9 11 e8\r
+d9 4e 92 e5 5a f6 d5 89 80 18 ff 33 e5 f6 b1 f9\r
+90 19 96 e9 2f af 33 6e 2d cc e3 ab 0a 93 db 93\r
+2e 94 2c c6 47 8d 6c c2 fb 66 08 11 91 0c cd 17\r
+\r
+# PKCS#1 v1.5 Signature Example 4.2\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+94 32 3f 7c 38 b9 95 cc 6b d8 5d 47 9f 8d e2 de \r
+c1 ef 2e 84 b1 fe ef ec f3 91 50 b5 d9 f2 cb 15 \r
+85 ac 0d 71 9a b3 48 bd c9 75 0d db 8e 32 76 db \r
+89 81 87 35 bd 62 31 41 3c bc a2 de 94 1b 55 e8 \r
+cf a1 ab 13 2c c7 8a a4 f2 b5 1f d6 57 8e e2 e0 \r
+32 e9 0e 34 08 0f 0f 8e 3d b1 4d 1b 56 f3 d0 77 \r
+f2 9d bc 02 16 a4 13 44 99 8c 0f e1 ab 41 22 47 \r
+df 21 e7 4e c2 2f 5d b0 14 8e ca f4 73 ee ec cc \r
+14 ff 9e 45 d5 8c 2e 62 b5 fe 6a 50 1a b9 6f d7 \r
+c5 ed de f1 4a a8 92 66 69 2e \r
+\r
+# Signature:\r
+09 40 2a 43 56 be 73 44 9b 46 9e 36 31 e1 b0 23\r
+07 c5 ca c2 ce 15 28 d7 84 fa b9 26 df f5 1f 86\r
+24 1b 9d 66 f7 9d 6d 8e ee eb 24 9d 76 fa 9f 16\r
+6f f9 a8 c6 a3 9e 83 2d 5d 14 b9 d7 ec 5a 3d c2\r
+8f 01 eb b0 6e 39 d5 9e 84 61 b9 55 b2 a7 f5 b1\r
+f2 04 b0 4c c6 cc 62 64 61 61 ac 1c 2b f5 ba b5\r
+0f 06 8c 90 8d 28 de 5e ae f7 e8 eb fc ab b0 9b\r
+7d 75 d8 35 40 dd 4b 35 4d 13 1d 86 f0 77 07 17\r
+\r
+# PKCS#1 v1.5 Signature Example 4.3\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+0e 23 3b 25 49 bd d2 1b a5 14 80 da 8e 3d ce f4 \r
+db 20 e0 dc c0 5e e2 37 35 1e db c9 a5 3c 52 f6 \r
+74 d1 05 fe c0 93 9d 36 99 64 7e fc 1e 25 cb 4e \r
+9b 1a b7 52 ab 6f e2 88 69 ff 73 f2 3e 01 ee f8 \r
+67 4c 53 5c 4c 93 35 f7 98 f1 de ec d4 89 d0 6d \r
+c8 8f d6 bc 1d 49 96 ef f7 2b 43 9e 3c 01 4d d1 \r
+4c bf 17 71 5c 15 89 43 de 2e 6f 97 1c 34 99 87 \r
+a1 b3 95 d6 82 c3 b0 c1 7b 66 cd 3c a4 10 60 b5 \r
+71 11 e2 28 31 4b 2d 34 b5 e4 4e 55 f1 c1 1c 31 \r
+a6 eb 80 b5 f8 2d 96 bd 4a 17 \r
+\r
+# Signature:\r
+d0 75 be 06 cb d6 22 3e 87 1b 0f 33 62 a7 97 de\r
+28 2d a5 c4 03 23 f3 7c 2c c3 74 65 a1 a8 63 68\r
+dd cf a6 da a1 35 86 6c 32 03 d0 47 22 60 b2 9c\r
+3c 9b 1b 88 94 08 5d 54 7c 5e b9 31 42 4f 24 14\r
+0a 5c ba 15 3b de d4 b9 ce 7d ae dc 64 5d 39 80\r
+c5 f5 83 f7 67 11 c6 7b 19 3a 52 12 f2 a9 35 4a\r
+67 96 af 09 08 20 91 31 34 ec f3 05 be fb 65 32\r
+cd 48 d4 11 3a 0e c4 86 9a 0a 56 55 db dc 72 59\r
+\r
+# PKCS#1 v1.5 Signature Example 4.4\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+d4 7c 0f 5c 92 2e 4f 80 9e 9c ee d2 07 f1 24 a5 \r
+ac de 37 fa 14 63 8e 8f bd 0a 72 fe 45 26 21 95 \r
+8e 37 68 2c 6f f2 83 f3 d5 1d a1 52 aa 1f 63 74 \r
+cd 27 d2 a4 a5 33 05 39 16 df f1 c0 7b a9 36 31 \r
+74 81 69 63 60 69 04 58 d8 d1 e5 d6 6c 35 f9 c9 \r
+9a 50 55 d9 f7 cf e7 60 5c ca 57 ea c3 35 ad e2 \r
+ef f6 b5 aa 62 7d 5b \r
+\r
+# Signature:\r
+11 86 0b f4 d7 45 19 ff 8c fc ce 3d 33 e3 aa bd\r
+f7 71 40 a1 56 36 b2 67 8d f9 67 31 44 c2 41 b0\r
+a9 9a 0a 37 f2 92 ca d5 1d f0 b6 3b 14 f8 ab 17\r
+e3 fa 15 58 77 90 fb 06 2b 5f 26 6c 16 6b 2c a7\r
+51 57 a0 f9 e1 a5 c8 ec 26 b9 19 9d 07 18 77 99\r
+80 6a 1d e9 87 15 fb e5 27 57 a7 03 77 3c 91 8a\r
+00 0c 21 1a 78 22 85 25 cb 52 eb 44 1b 26 9b 3f\r
+33 05 0e d1 93 5a c0 e8 59 63 19 ae 80 c7 5b 84\r
+\r
+# PKCS#1 v1.5 Signature Example 4.5\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+be bd 9d de a3 ab f9 f8 eb 58 55 97 66 f8 b3 ab \r
+83 53 52 38 c4 3d cd 81 a2 94 93 03 a9 5f 05 5a \r
+83 40 ce ee 16 15 e5 8d f1 e0 14 c7 55 2d 76 9f \r
+88 41 ba 09 97 5c ef e7 e4 8d fc 6a 26 49 e8 20 \r
+03 e7 bf 42 0e 70 10 1b 32 7d 91 70 f7 3e 8d 88 \r
+7c d2 98 f5 3d c1 bf c8 82 cf 0e fc fa d6 e8 6a \r
+0e 7f 90 94 c4 f2 6c 46 92 1e 09 \r
+\r
+# Signature:\r
+84 a2 6f be 67 01 0a a1 ef 2d 6c 79 26 32 39 b9\r
+78 f4 e8 93 dd 1e c6 f0 7d 23 17 f1 51 a2 a1 b3\r
+23 e5 05 f9 45 0c 37 df 6b 1b f3 e2 4f 38 b6 36\r
+bf 77 4e 96 74 1f fa a7 69 cf d7 a8 a6 b3 a5 ef\r
+ab a2 3a ab 3a 43 7a 22 5b d9 41 86 e9 1d 39 2b\r
+ed 2e ad 8a 78 f3 81 f4 09 49 cf 1f 3d 27 24 58\r
+1f 25 70 4b df 66 08 dd 11 9e 36 d8 7d 03 55 e6\r
+70 6c 8a 52 59 fd 60 c8 df 13 bc 62 aa 9f d5 7a\r
+\r
+# PKCS#1 v1.5 Signature Example 4.6\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+9d 19 8e 2c 6e 12 f7 4a 9a 08 1b cf 70 fc 04 16 \r
+8a 49 e0 9c 5f aa a0 11 e9 a0 9e 2c 43 ee 2c d3 \r
+9b b2 f7 e5 68 2d ea b1 fa 11 1e 41 a3 19 4a 20 \r
+a8 6d a5 51 01 82 4d 3d 78 a7 e3 2d b2 b6 0a a7 \r
+73 77 0b 57 39 07 b4 09 a2 59 2c 83 f3 47 fe bb \r
+2d 5c 85 e9 25 5d 6d c1 2a aa 33 5a df bb 5d c8 \r
+62 d7 86 19 53 e2 68 7d 53 03 b6 86 ff f9 63 4e \r
+e4 d1 5c bc c2 9f 7a 35 05 a7 3d eb 6f 9e 38 8e \r
+96 85 ff f4 d5 45 0f 1e 32 75 35 9a 2b 99 44 0c \r
+67 39 f5 b9 1e bd 14 ef 78 ae 73 c1 a6 19 11 f5 \r
+ae 3a 2b 91 49 67 49 17 27 81 80 65 ee 01 0d f4 \r
+9d 5a 16 ed 8d ce e8 48 ae 09 48 a2 52 4e ac 7c \r
+4f f9 09 6c ed 61 35 76 42 c5 e0 f8 06 80 af ff \r
+ce 0b a7 eb 59 58 99 49 52 6f f5 12 35 cd c7 2d \r
+47 a2 7b 39 b8 d4 ac 84 9c 3b c0 4f a8 36 cf 18 \r
+4b ae 0c 83 41 59 56 \r
+\r
+# Signature:\r
+38 ef 24 5b 94 0d 93 97 0a 50 3b f4 3e 28 e1 7b\r
+8a ff 08 3c cb e1 e9 c4 8e 4d 80 f5 16 c2 7d 08\r
+5c a2 a4 e5 73 23 6a 24 94 d9 b9 97 f8 12 48 48\r
+12 f6 65 25 d0 6c 0a 0b b2 13 0c 15 d6 ce 18 b2\r
+2f 3c ee 57 09 7f c0 d5 58 af d9 af 27 f1 51 f8\r
+43 6f bc 87 d6 be 61 42 64 7a 17 e0 4d f6 de c7\r
+0a 95 c7 da a8 4e de 94 cc b4 3e 1d 2c 37 b9 45\r
+81 73 10 d1 4a 22 b5 b9 ae 61 14 48 ee 41 bc 70\r
+\r
+# PKCS#1 v1.5 Signature Example 4.7\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+8e 8b a8 43 6f e3 10 4b 7c e2 a4 ef c3 6c 85 7d \r
+49 e8 49 c0 08 5f c6 57 ba a0 33 17 93 b3 f3 6c \r
+7c e7 38 b6 13 0b fa c7 5e 50 11 f3 2a a3 d1 \r
+\r
+# Signature:\r
+78 44 69 9f 1c 4f 29 6e 50 26 1f 15 26 e0 dd 84\r
+f0 1c 82 cb 85 fa 24 60 9e b0 33 58 75 2c 6c f5\r
+99 94 d8 4e 12 f4 6a 72 00 cf 5a d9 7c 08 dd 4f\r
+fc 44 65 7d b5 72 14 cd 1f 4e ed 6b 77 d2 39 fb\r
+58 21 69 88 c5 e5 bc 73 5a 4f df f4 08 eb 9f 12\r
+79 d6 5b ba f6 a6 81 92 44 18 34 9e 62 ff 5e 58\r
+15 ea ea 59 2d 90 d1 ee f5 56 fc d4 d5 b4 b8 9c\r
+6c 70 73 9d 6f 0d 3d 0b d1 6a 50 f1 e0 02 4e 98\r
+\r
+# PKCS#1 v1.5 Signature Example 4.8\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+58 5f a6 a7 f7 7a 4b 6e ba 56 90 e7 3e 71 28 b7 \r
+2e 67 7c db 3a aa 86 29 ed 61 f2 ee 63 af 1a 71 \r
+ba 87 13 6a 52 db 1a 33 21 fc fe b2 48 bf 2e 5c \r
+f5 c6 39 57 1d 58 95 ad f1 fb 06 17 ed 14 0a 2a \r
+0d 98 37 c3 c1 d8 45 0c 28 9d 33 bc 96 23 79 d7 \r
+3e 30 87 f2 b7 ee 6e ad d6 65 01 48 c0 42 b6 ff \r
+04 48 21 96 c7 18 fd c0 ce 57 9c eb 62 a8 1e 58 \r
+43 73 eb 93 75 40 c4 26 b5 56 6a 9f 40 7c fc cf \r
+bc 4b 75 36 94 af 0d f4 cd 6a a9 f1 65 46 a6 33 \r
+94 a0 f6 57 73 71 34 3f fd db 65 1a 62 a3 a5 8e \r
+dd ec 67 a2 9c ca e8 96 56 3c 63 e3 c9 0d 54 d9 \r
+13 58 ad f1 94 e6 aa b1 f9 \r
+\r
+# Signature:\r
+68 93 35 1c 73 91 5f ac 47 c9 62 cc 60 17 ca 74\r
+a5 b5 ee 4c b1 bb 5a 10 ad a2 a4 31 58 a2 26 1e\r
+b2 7b 86 6d b3 9d 35 90 b4 f8 d2 0e e6 7c b1 a5\r
+78 94 63 15 0d 83 93 43 23 25 43 c8 26 50 51 01\r
+e1 d2 57 04 26 ab 9f ef d6 5b a8 4f aa ec 73 1f\r
+27 37 4a b1 01 91 c9 60 83 16 93 f2 9a 85 4c 38\r
+12 85 99 f7 28 77 49 b0 b4 8b f7 e9 df da ed c8\r
+4e ec e0 71 40 45 84 73 0c ec ce 0d 5c f0 05 cc\r
+\r
+# PKCS#1 v1.5 Signature Example 4.9\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+78 3c 18 b1 1f \r
+\r
+# Signature:\r
+13 2f df b8 41 93 df b7 9f df e6 ba bc 2e fd 39\r
+b2 6a a2 09 68 a0 7c 0e 41 56 0e e4 df cd 4f ca\r
+79 17 49 0f 24 e8 df 84 f4 e0 11 5a 3e 63 27 3e\r
+7a 3b 12 8a bb bd 17 b8 aa 5a 06 ba 15 5e cb 23\r
+0f e7 97 26 04 79 95 70 10 e4 4b a5 75 29 2e c3\r
+f1 51 ab f4 8e 91 03 e5 51 42 ec 67 a4 13 4d d8\r
+f3 8e c6 59 f9 a7 89 fd 03 41 ce f2 bb cf 9f 52\r
+9b 93 21 8f c3 e4 3a 76 69 69 d1 bf 87 88 48 07\r
+\r
+# PKCS#1 v1.5 Signature Example 4.10\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+96 dc 98 b0 eb 84 f5 59 48 30 7a dd ec cb e7 64 \r
+39 ca 36 58 bc 36 35 96 24 c8 fe 2f a0 9c 52 e4 \r
+7a cd c3 2a 15 6d 90 76 82 41 0a 85 67 ab ca fd \r
+c6 d8 bb 53 25 35 9e c7 5f fd b7 3e e0 a9 51 5a \r
+4d df 9a 31 e5 d5 19 46 03 74 28 0a da 30 de 7d \r
+d5 34 de aa 57 \r
+\r
+# Signature:\r
+8f b4 3d c8 f0 6f 2b a4 8f 19 be 5b 1a 09 31 21\r
+3a 99 0a ed 9c 9f ed 1d e5 d6 f3 5a 2a 78 2f 0a\r
+19 8f f6 38 8d 96 e9 d5 9b 88 e9 78 22 f3 49 ff\r
+41 64 ee a5 0a 62 93 5c 61 cb c7 6e 3d f7 5f 68\r
+4d 96 24 75 e5 63 59 64 96 c9 88 0a 48 ed 97 8a\r
+63 15 a3 45 57 17 91 cb 2d dc 88 da be 41 87 98\r
+a6 a4 41 c4 7a fb b1 cd 15 21 3e ca 3b 11 15 ec\r
+8f 58 f8 77 be 8f bd 38 f4 fd ae f9 39 f5 26 40\r
+\r
+# PKCS#1 v1.5 Signature Example 4.11\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+37 20 01 59 9d 99 30 c7 d5 57 45 8b 43 6d ec fd \r
+c1 4d 06 cb 7b 96 b0 67 18 c4 8d 7d e5 74 82 a8 \r
+68 ae 7f 06 58 70 a6 21 65 06 d1 1b 77 93 23 df \r
+df 04 6c f5 77 51 29 13 4b 4d 56 89 e4 d9 c0 ce \r
+1e 12 d7 d4 b0 6c b5 fc 58 20 de cf a4 1b af 59 \r
+bf 25 7b 32 f0 25 b7 67 9b 44 5b 94 99 c9 25 55 \r
+14 58 85 99 2f 1b 76 f8 48 91 ee 4d 3b e0 f5 15 \r
+0f d5 90 \r
+\r
+# Signature:\r
+a8 97 c7 f9 72 e1 17 49 e1 e7 c1 55 ce 94 62 aa\r
+7e 1c c0 a9 79 c1 27 29 79 51 26 cb 8c 0e a5 02\r
+21 c4 26 f1 bb 06 c1 ca f7 c5 1a c2 fb d9 4d 68\r
+8d a6 7d df 3e f6 66 06 e9 89 a1 6d e1 f9 2b 17\r
+70 6f 88 e8 7d 9f 14 69 a0 05 c9 fd 76 78 8e e8\r
+c4 a7 f0 12 09 e2 8b 86 f6 74 88 1a f5 7d b6 c3\r
+42 9b 6f b4 56 98 bf 5d 30 07 f6 1c 7d 44 11 78\r
+ad 12 43 a4 9b 2a a6 02 9b fe 90 2d 26 e4 23 75\r
+\r
+# PKCS#1 v1.5 Signature Example 4.12\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+bf bf d0 73 21 f0 f1 d5 fa 9f df 00 14 c2 fc b0 \r
+35 8a ad 0e 35 4b 0d 29 08 1b 23 3b 43 56 77 50 \r
+bd 6e 78 \r
+\r
+# Signature:\r
+c2 4d 31 04 94 09 aa 16 d3 f9 72 ef 8b 75 95 ea\r
+a0 07 83 3e 2b cd c7 50 48 52 f2 50 5f ba 1f c1\r
+5f 19 a0 ea dd e8 33 5c 73 06 fc 3f 51 66 1d a5\r
+20 ec c8 db 7f 47 38 85 ca bd e9 3f 0c eb f1 df\r
+9e 8a 82 37 0b 00 a0 43 ad 63 2c dc c7 8f 3f ac\r
+1d 8a 37 57 fc 8e 52 41 bf ed 55 c4 96 04 ac 19\r
+ab da c0 c9 c4 0d a3 73 c1 5f 3c 1b cc 97 3f fb\r
+4f 8b 7b 5b 55 3a e0 75 e1 b1 bd dd d2 3d 7d 2a\r
+\r
+# PKCS#1 v1.5 Signature Example 4.13\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+c6 97 39 d2 2a c8 96 6b f1 1c 11 6f 61 4b 16 67 \r
+40 e9 6b 90 65 3e 57 50 94 5f cf 77 21 86 c0 37 \r
+90 a0 7f da 32 3e 1a 61 91 6b 06 ee 21 57 db 3d \r
+ff 80 d6 7d 5e 39 a5 3a e2 68 c8 f0 9e d9 9a 73 \r
+20 05 b0 bc 6a 04 af 4e 08 d5 7a 00 e7 20 1b 30 \r
+60 ef aa db 73 11 3b fc 08 7f d8 37 09 3a a2 52 \r
+35 b8 c1 49 f5 62 15 f0 31 c2 4a \r
+\r
+# Signature:\r
+d0 6d 32 26 0d a2 db 48 10 4f bd c2 4e 16 a6 5b\r
+48 73 7d 43 ce 24 37 04 04 2a ad 6c 03 fd e5 a3\r
+dc 0f 2c c6 e3 ad 68 c3 c6 2e ab fa 1f 7b 1c ab\r
+00 9d 11 75 af f7 7b e5 8f b1 2a 4e 58 12 7f ed\r
+63 ea 3d f4 41 81 bd a3 8c 77 3c 83 b9 e8 04 bb\r
+3d b7 96 32 63 df 30 e9 2c 4c 27 19 56 e7 e8 10\r
+45 2c 15 e0 6e 93 96 66 df 0c 83 34 03 30 96 c0\r
+7d ea 05 b4 4e bb 14 24 92 e7 66 91 31 eb cf 2c\r
+\r
+# PKCS#1 v1.5 Signature Example 4.14\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+73 30 47 f3 36 f9 15 47 38 67 45 47 db 02 a9 f4 \r
+\r
+# Signature:\r
+c1 13 c0 46 5c 84 cb fb 0f a1 bd bc 54 c3 e1 06\r
+8c a2 3e 69 b8 39 19 09 c3 90 0f e5 b4 e7 e3 f0\r
+34 c9 a9 88 a3 dd c3 c3 81 75 6a 1e 1a 27 c1 ec\r
+fb 3a 70 e1 ee 0e 92 04 18 ac 4a b6 d9 53 2b 8d\r
+09 59 a6 53 b4 c5 08 67 06 63 46 2b 2e 13 58 16\r
+b6 94 a6 b9 b4 68 a2 9f 38 de 53 bf cd df 97 e0\r
+3d 8d d2 4f 97 26 33 a4 9c f3 ea ae 1d 69 62 94\r
+38 60 dd 25 43 40 08 6b 10 35 7b 80 c1 cf bf 31\r
+\r
+# PKCS#1 v1.5 Signature Example 4.15\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+a9 74 0b 9a a0 d3 40 58 fd 3b 90 6e 4f 78 59 df \r
+b0 7d 71 73 e5 e6 f6 35 0a da c2 1f 27 b2 30 74 \r
+69 bd 0c e1 95 49 d0 70 01 20 cb e5 10 77 db bb \r
+b0 0a 8d 8b 09 de 8d 83 96 e3 65 07 fe 1e f6 a1 \r
+90 17 54 8e 0c 71 66 74 c2 fe c2 33 ad b2 f7 75 \r
+66 5e c4 1f 2b d0 ba 39 6b 06 1a 9d aa 7e 86 6f \r
+7c 23 fd 35 31 95 43 00 a3 42 f9 24 53 5e a1 49 \r
+8c 48 f6 c8 79 93 28 \r
+\r
+# Signature:\r
+4f bd 4f b2 37 04 f4 14 9a da 32 7f a5 33 88 52\r
+6a 07 dd 43 d9 15 fc bd a9 a1 3b b2 a3 73 8f 4a\r
+db 1c 3d b2 6a b6 90 48 80 5a 80 c8 16 05 c9 6d\r
+68 f8 41 80 2f 5a bb 02 05 7b 61 1f e2 f3 94 71\r
+62 65 e5 45 25 2c 23 0c e4 74 af f0 bb d4 ff 1f\r
+38 08 49 60 36 a4 94 8c a7 a1 10 ff 26 c6 38 c5\r
+0f 32 15 b2 8a 09 f2 3a f6 f8 4c dc 89 78 98 d0\r
+fd 22 3b 13 48 1f e8 92 b1 a5 8b a2 e4 b3 68 5b\r
+\r
+# PKCS#1 v1.5 Signature Example 4.16\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+af 8f 08 87 c2 19 00 4d 2a bd 89 4e a9 25 59 ee \r
+31 98 af 3a 73 4f e9 b9 63 8c 26 3a 72 8a d9 5a \r
+5a e8 ce 3e b1 58 39 f3 aa 78 52 bb 39 07 06 e7 \r
+76 0e 43 \r
+\r
+# Signature:\r
+32 7e c9 d0 be 7a ab 7b c9 59 d4 02 27 e1 d0 04\r
+81 fc 04 01 1f e0 8f d5 44 9b 90 c0 f0 54 e0 d6\r
+59 b9 26 cc 81 29 21 c2 0a 56 3c 4a be 4f 82 5d\r
+6b 5e ef 57 b3 e2 d6 5d 20 a8 01 3a 50 dd 5c 93\r
+23 8c f0 49 f2 ff 0c 7e be b8 e8 ca f7 2e 46 e7\r
+cf 8a 0c 3f 49 25 61 6b 1b c1 82 6f fc b0 bd a6\r
+0b be be df d4 c6 0f 27 88 d1 66 6f b8 45 11 85\r
+36 46 c2 dd 46 68 51 fa c8 5b e0 ed 5a ce 5f e2\r
+\r
+# PKCS#1 v1.5 Signature Example 4.17\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+38 df 86 55 7f 37 5d 09 cc d8 bd 15 d8 cc f6 1f \r
+5d 78 ca 5c 7f 5c de 78 2e 6b f5 d0 05 70 56 d4 \r
+ba d9 8b 3d 2f 95 75 e8 24 ab 7a 33 ff 57 b0 ac \r
+10 0a b0 d6 ea d7 aa 0b 50 f6 e4 d3 e5 ec 0b 96 \r
+6b 81 57 79 a9 1b 3a 8b d0 49 bf 2a eb 92 01 42 \r
+77 22 22 c9 ca 0c 32 8c 65 9e 0a 64 37 43 3c ce \r
+b7 3c 14 9a ec 4a 74 80 d5 bb c4 29 20 d7 ca 23 \r
+5d b6 74 \r
+\r
+# Signature:\r
+30 46 05 5c 2b 8e f7 fa 92 c8 a9 e3 95 98 5b d4\r
+60 fb 6b 47 98 65 53 94 4d 21 04 51 19 f7 e7 61\r
+7e 03 fe 80 87 0a c6 aa bf 63 b0 96 ca d5 cc e7\r
+f5 06 95 3a 7f 69 3f e1 37 ad fb 97 cd 45 81 28\r
+ae 95 c4 7c a9 48 da cf 24 03 6a de aa 48 f2 9a\r
+46 9f b5 13 19 1e 05 ac f7 9e 67 a7 93 a3 af 5e\r
+4f 9c 6d 0d 01 fd d0 e0 cd 42 96 ad 3d a2 ca 89\r
+a5 0e ed cd 9f 7b 87 7d 2a e1 d5 8d 98 dc d7 8f\r
+\r
+# PKCS#1 v1.5 Signature Example 4.18\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+cb 34 ed d5 ab 65 40 41 b6 14 30 56 \r
+\r
+# Signature:\r
+1d df 48 ba 53 51 be d0 79 5f 55 b3 06 aa 1c 6e\r
+d8 36 f5 92 ba 93 cf 0c 46 b7 c2 73 70 9d 36 b8\r
+df f0 2a bd b1 a7 68 d1 c7 11 4a 86 a4 57 49 6d\r
+a5 79 e4 d8 19 f7 2a 19 2e 29 8b e2 15 2f 7c f3\r
+9d 1e 30 82 7d 02 82 cc f3 4d c8 88 9f 1c 2f 59\r
+70 93 0d 97 35 04 2f 8a 5a 71 22 63 16 5d 6e 6c\r
+50 35 e2 e4 a5 0e 86 3c 06 79 9e 3c 89 cc b5 cb\r
+0e 70 b3 c9 9c 08 40 30 67 7a 7c 97 90 7a 17 24\r
+\r
+# PKCS#1 v1.5 Signature Example 4.19\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+5b 09 ec 88 b1 52 71 78 fa 04 32 63 f3 06 7d 9f \r
+fe 97 30 32 a9 9f 4c b0 8a d2 c7 e0 a2 45 6c dd \r
+57 a7 df 56 fe 60 53 52 7a 5a eb 67 d7 e5 52 06 \r
+3c 1c a9 7b 1b ef fa 7b 39 e9 97 ca f2 78 78 ea \r
+0f 62 cb eb c8 c2 1d f4 c8 89 a2 02 85 1e 94 90 \r
+88 49 0c 24 9b 6e 9a cf 1d 80 63 f5 be 23 43 98 \r
+9b f9 5c 4d a0 1a 2b e7 8b 4a b6 b3 78 01 5b c3 \r
+79 57 f7 69 48 b5 e5 8e 44 0c 28 45 3d 40 d7 cf \r
+d5 7e 7d 69 06 00 47 4a b5 e7 59 73 b1 ea 0c 5f \r
+1e 45 d1 41 90 af e2 f4 eb 6d 3b df 71 f1 d2 f8 \r
+bb 15 6a 1c 29 5d 04 aa eb 9d 68 9d ce 79 ed 62 \r
+bc 44 3e e2 0c \r
+\r
+# Signature:\r
+af 56 fc 32 97 39 e2 f7 75 4b 6c a2 51 64 a6 fa\r
+58 f6 85 dd b7 42 b4 84 1d 73 a5 e2 c4 c4 53 43\r
+b7 4d fd 2f 0d 37 0e dd dd 36 a0 17 56 4a 8d 3a\r
+d4 02 e2 a3 41 c9 72 06 2c 23 81 4a 00 13 1e 17\r
+b1 de c7 b4 c5 7c 5b f1 d4 fa 79 22 29 37 a4 dc\r
+5c 00 23 5f 85 3d d2 3d c9 75 7f 33 5c 85 c2 07\r
+eb 07 4d 4b cc 24 3e da a7 83 1b 83 13 56 55 e2\r
+27 7e f2 9e 7a eb f3 4a 0f 7b 23 4a 28 65 0a 30\r
+\r
+# PKCS#1 v1.5 Signature Example 4.20\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+3c 33 0c 1e f7 18 c1 41 e4 7b 8f a8 59 be 4d 5b \r
+96 \r
+\r
+# Signature:\r
+0b 10 22 dc 38 e2 17 fd 3b 0e 7e f1 9d fc b4 b4\r
+56 36 62 40 98 30 95 f6 db 96 58 31 a7 0f 0f 8e\r
+20 e2 dd 2a c2 31 cc 37 90 45 c2 73 65 e7 3a 53\r
+71 9b b6 f0 11 c3 f8 63 6b 64 99 4c a4 80 60 2f\r
+b3 b4 f0 e2 27 4b 58 b3 63 e0 d3 08 b5 28 e1 58\r
+59 a9 1d cf 99 bf fe fb c8 05 22 41 b9 74 19 2e\r
+63 62 18 f3 98 33 2d af e8 25 9c a5 f5 cc fa 54\r
+c9 b3 2b 27 35 af 07 24 f4 0b 5a 5d 61 21 a4 0d\r
+\r
+# =============================================\r
+\r
+# Example 5: A 1024-bit RSA key pair\r
+# -----------------------------------\r
+\r
+\r
+# Public key\r
+# ----------\r
+\r
+# Modulus: \r
+c5 5f fb dd 6a 27 53 bc 02 af 20 ae 18 ea 0d af \r
+23 0b b6 f8 79 5d 05 ef ec c8 15 ba ec e2 2b 38 \r
+79 99 5f 6d 97 64 c1 df 8f 97 85 13 81 68 62 66 \r
+b8 09 2f b6 01 18 98 a7 67 07 a4 d1 d5 bd a0 8d \r
+24 6c 68 7a 8b ba fa 63 98 ac 9e a2 72 68 23 71 \r
+4a 0c 39 34 ca 6e 5f 8c e3 39 87 b5 34 85 7e a9 \r
+f8 5c c4 e1 9a 1d 21 83 e0 e4 c8 aa 55 cb 22 7b \r
+0e 56 ce b2 b6 2b 30 ef c7 88 64 b2 f9 fb 92 49 \r
+\r
+# Exponent: \r
+01 00 01 \r
+\r
+# Private key\r
+# -----------\r
+\r
+# Modulus: \r
+c5 5f fb dd 6a 27 53 bc 02 af 20 ae 18 ea 0d af \r
+23 0b b6 f8 79 5d 05 ef ec c8 15 ba ec e2 2b 38 \r
+79 99 5f 6d 97 64 c1 df 8f 97 85 13 81 68 62 66 \r
+b8 09 2f b6 01 18 98 a7 67 07 a4 d1 d5 bd a0 8d \r
+24 6c 68 7a 8b ba fa 63 98 ac 9e a2 72 68 23 71 \r
+4a 0c 39 34 ca 6e 5f 8c e3 39 87 b5 34 85 7e a9 \r
+f8 5c c4 e1 9a 1d 21 83 e0 e4 c8 aa 55 cb 22 7b \r
+0e 56 ce b2 b6 2b 30 ef c7 88 64 b2 f9 fb 92 49 \r
+\r
+# Public exponent: \r
+01 00 01 \r
+\r
+# Exponent: \r
+07 e3 fa 71 b3 98 b6 e4 41 47 37 0b 3e bb bc a8 \r
+4f c2 5c 22 3a d7 d9 30 ea 4a 65 73 ff 9c 5b 15 \r
+fa e6 82 c6 22 d3 48 5c e3 a4 af 11 44 8f 23 bf \r
+ef 83 8e 80 bc 32 7b 87 d5 ba 9c 80 37 07 49 af \r
+c8 c1 c0 17 54 6f c6 b6 59 31 b7 59 ca 43 41 fa \r
+5e 5e 10 b2 40 87 e6 e2 c0 f4 db b7 90 69 52 99 \r
+9c bd 90 d2 43 5f ca cc 9c 82 e4 8f df 24 e4 95 \r
+cf f3 0a d4 19 e7 12 3e 3a c9 42 27 2e 1a ba b1 \r
+\r
+# Prime 1: \r
+f7 f7 c0 02 f0 19 6e cd d7 1b a5 ad 74 2b 69 48 \r
+27 d2 88 af 1b 1b b6 9c 5e d7 fb 22 9d ee 4b 7a \r
+32 f2 f7 56 8a 6f ca f3 83 d8 9a da 9f c1 4a 7b \r
+a5 d0 a4 a4 6c 2c 54 3e ec 17 75 49 c8 a0 48 b7 \r
+\r
+# Prime 2: \r
+cb c4 b2 86 04 76 a2 d3 e8 a4 da 21 00 16 ca ce \r
+d0 e3 67 cb 86 77 10 a4 b5 aa 2d f2 b8 e5 da f5 \r
+fd c6 47 80 7d 4d 5e bb 6c 56 b9 76 3c cd ae 4d \r
+ea 33 08 eb 0a c2 a8 95 01 cb 20 9d 26 39 fc ff \r
+\r
+# Prime exponent 1: \r
+6c 76 27 bc a1 3c de a4 96 a4 77 31 89 90 bb 7a \r
+5e 40 ce 9c 99 24 e4 19 3d bb 07 14 3b 34 52 3b \r
+5f 31 bb 52 55 37 54 f4 73 05 39 a6 cb 1e 06 f0 \r
+52 b5 12 6f 01 09 da c7 b3 09 07 ba 80 50 eb bd \r
+\r
+# Prime exponent 2: \r
+40 92 74 80 43 a9 d4 af 92 69 ab 36 09 f1 2f 13 \r
+9a de 75 65 e9 96 91 8f a0 81 ed 4d 9d 8a 39 78 \r
+fa 92 7a d6 1c df 07 c6 1c ee de 96 b9 6d f4 6e \r
+7c 68 ef ca 8b fe 63 ad d4 83 aa 32 22 8a fd c1 \r
+\r
+# Coefficient: \r
+2a 61 94 ca 29 70 72 38 45 ff f3 8c a1 a9 a3 b5 \r
+66 b4 24 5d e2 f9 01 34 b8 e6 ae c8 ae 07 f3 bb \r
+7c 5e 5a e6 e1 83 34 85 e5 5d 8c a6 0c e1 64 2f \r
+72 75 96 8e 66 12 38 35 52 11 c6 38 48 94 0f 3c \r
+\r
+# PKCS#1 v1.5 signing of 20 random messages\r
+# -------------------------------------------------------\r
+\r
+# PKCS#1 v1.5 Signature Example 5.1\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+ea e9 a4 0b ff 18 3f 41 14 73 2e 7b 3b a5 56 f4 \r
+ce 28 8d aa 83 e3 ff 23 61 12 44 a7 a0 90 1f 11 \r
+7d 86 c0 9c 33 a5 23 2b d3 20 fa 37 a2 38 a8 aa \r
+62 dd 21 ab bf ac db 93 fa 1c 44 cc 55 ac 61 be \r
+a2 4a 6a 34 cc 64 76 75 38 37 e1 6f ac d8 2e b4 \r
+9e 1c 57 c9 58 fb bf f5 68 88 7c f8 2e eb e9 61 \r
+e5 80 e0 64 db 9c be c3 b5 3d f1 f2 71 99 e4 9a \r
+04 cb e5 9c 69 a2 65 cf ac 8c e4 f9 1c a9 5d 52 \r
+b1 14 5c 8b 9f 44 40 b3 9c 18 50 94 be 18 48 74 \r
+da 59 71 d7 d7 63 fe 07 ce 16 e5 7f 1e 50 d2 28 \r
+65 04 b4 81 e2 c6 85 bc 9d 9c 01 49 3f d3 a6 d8 \r
+bb 9b 2e 96 bf de b6 c9 29 14 ca \r
+\r
+# Signature:\r
+44 ce b4 42 24 2b ae 08 59 94 ea d0 7b 70 95 43\r
+ea 23 95 a6 e8 d4 64 73 d7 0d f3 4a 95 55 aa 56\r
+7f 4d a1 38 e9 63 fe 92 86 a8 4f b7 c5 cf 82 00\r
+03 59 04 b5 0c 32 40 3c ae 51 7b fa 7f ca 8a 66\r
+fc fd 63 2a f7 47 c4 9c df b0 b9 ae e3 52 28 b7\r
+dc 4c 21 00 39 69 b0 a0 13 ed e1 29 2b 65 d1 0a\r
+50 c9 02 63 fb 0b f4 f4 b8 37 66 41 b0 3e 1f af\r
+b8 83 f0 38 f4 32 3d fe 5b ea c4 68 de ea 99 c3\r
+\r
+# PKCS#1 v1.5 Signature Example 5.2\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+9d e5 ca 46 74 85 61 a0 b9 28 b2 60 a9 5a 3e d9 \r
+20 ad c8 d5 ee b9 27 1d c7 1b c1 4f 69 cc d6 31 \r
+1d 18 6a 77 9f 5e b8 db 17 c6 90 d6 86 7c f3 36 \r
+9b bf f1 5f ab b3 cd 2c fd d6 f7 d7 52 86 ff 2d \r
+24 99 c5 ab b4 8e d5 4f d4 d8 49 a9 18 0e 11 0e \r
+0a 53 a7 21 39 82 92 11 0f e8 be 26 \r
+\r
+# Signature:\r
+44 5f f5 b6 87 9f 8c e7 53 95 01 6f 04 95 f1 31\r
+35 b1 79 e7 3a 3c ae b3 30 e3 cd a7 f3 1f 1d cb\r
+a7 aa 82 e2 68 c9 35 e9 d7 01 4e 0b 0d ce a6 9c\r
+7b 96 8a db 17 42 4a 64 df d1 e2 bc 57 07 f9 20\r
+fc 0c 83 cc 63 df c7 4b 96 3e 68 2b 46 a2 2a c2\r
+56 ac 6b e5 70 9c 07 cf cc 3d 4e ba 3a 1d 61 ab\r
+15 f1 ba db 0a 49 fb 5c f0 9a 1f 74 81 a3 aa ea\r
+f7 c2 57 54 03 77 ae a7 b5 44 17 a6 09 c7 6f 4c\r
+\r
+# PKCS#1 v1.5 Signature Example 5.3\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+18 3b a1 a3 81 1d 62 5c a9 da 1b ba ae dc 76 19 \r
+20 12 fc b6 74 bb 9e 77 d8 f3 77 08 d2 40 d3 49 \r
+e0 57 97 41 6f eb 24 e3 01 8c 7a 20 5d 05 9d e8 \r
+e0 ae 05 a8 d7 e0 9e af ee b9 f0 6d e5 d4 28 7a \r
+bb ef 05 9b c5 86 b2 1c 82 d6 4a ec e8 d7 42 8a \r
+fc d7 b2 2f c5 d1 68 bc 07 6b 61 5f 02 73 3c b6 \r
+31 25 c8 f3 6d 5c b8 09 ce 80 65 08 23 98 b3 88 \r
+5a 89 19 57 0c 47 8a 07 2f 59 66 15 d7 8f 01 36 \r
+d1 1b e3 2b 3f e0 f4 fb e3 c7 da 5d 81 34 19 10 \r
+17 7e 48 b1 bb ac 27 6c 12 ee 81 54 65 dc 67 d4 \r
+53 24 f9 05 aa ca 48 38 d8 1f 74 31 46 3e 89 eb \r
+8b 95 36 58 69 36 af b4 2c b4 7b d8 c3 18 29 d3 \r
+1e c1 ee 29 f9 1c cc 6d f9 cd 1b 0b 9b 86 46 b6 \r
+02 67 fd 7e ce ae 92 c0 ae 9e 0c e5 ff 6f 7e 0b \r
+f7 56 a9 b8 ff c9 c6 16 \r
+\r
+# Signature:\r
+ab 4b 78 96 4c 2a 35 d3 28 55 e0 ef ce d3 4b f8\r
+02 19 b5 8c 48 8e a3 75 b1 f3 27 16 6a 51 35 e5\r
+da 99 45 c2 87 29 7a 3d 93 2e 57 27 46 f0 22 74\r
+8b 85 58 5a 0a bd 91 86 f4 ac 35 ed c8 50 d2 fd\r
+88 05 b9 e9 f5 1a 5a dc b9 5e 1a c1 72 9e 57 b8\r
+53 31 c1 ed 15 c3 d0 cf ae 33 f6 1c 11 9b 55 c9\r
+5e 34 4b 72 f2 b4 f8 e7 e8 fa c7 a3 3e 5b 8b 27\r
+6a 60 88 a7 fa bf 4f a1 72 35 7f b6 e3 f4 4a 94\r
+\r
+# PKCS#1 v1.5 Signature Example 5.4\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+87 07 dc db 49 d2 83 a2 3a 9b d6 ff 87 af f8 34 \r
+f0 6f f7 f4 7b 0e 5f 57 ff 1a 0d 99 5b ba 9c dd \r
+5e a0 1b 42 b2 5d 6f f1 7a 0d c1 06 05 cf 45 2a \r
+ca 73 be 54 ed 5e 0c e2 15 66 af cc 17 91 2a be \r
+18 df ac d1 bc 03 e3 e2 88 2a 4b b3 a4 f3 9e ea \r
+f9 63 d7 c3 5e 6b a8 58 b1 37 6a 07 51 60 c6 cf \r
+ae d5 e8 c5 2e 45 11 32 34 72 19 bd 88 89 3e eb \r
+e3 56 59 a0 ee 4d 94 f9 4d 03 5b 7a 86 86 ff b4 \r
+16 eb 99 fb 2a aa 81 23 6b 05 ac 46 45 92 5f 2c \r
+2b c1 9e be 89 a6 3f 2f 45 1d 0b 13 b2 fe f0 61 \r
+e5 30 a3 49 ba f3 b2 35 64 22 b0 95 fd 9f 19 29 \r
+93 ab 99 c9 f9 22 6e f9 a7 b3 cf b3 65 82 08 59 \r
+29 c8 76 b5 e9 d7 c6 ac ac 7b b0 27 52 34 e4 1e \r
+d3 51 c8 38 b7 a3 1a \r
+\r
+# Signature:\r
+17 53 98 8b 39 dc 74 5d f9 69 1a f9 ee 69 ca da\r
+73 a9 87 7c ca 12 f6 d4 06 27 dc ed 76 22 14 7e\r
+c9 01 a5 b4 63 e7 ef 9b 37 fb d6 92 78 5a a2 2a\r
+46 5d f4 03 af 92 a2 9f 79 5d 40 a8 3f a9 64 b8\r
+5a 7e c0 5a 3c da e3 f8 bc 8a 61 a7 9d c8 42 e1\r
+d3 77 bc 5e 1d 46 ad aa a8 66 be 28 2c 6e 23 88\r
+17 36 44 f4 06 27 bc f8 a0 97 4a 4b e8 fc c4 8a\r
+ee 7e 82 59 f8 68 a2 bd 78 9a 90 89 92 05 6e 55\r
+\r
+# PKCS#1 v1.5 Signature Example 5.5\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+ac 9f a3 f6 3d f0 68 e9 0d 69 2e cc fa 7d 87 96 \r
+49 1a ca 79 5b 98 58 a4 55 18 62 32 29 af 28 b1 \r
+3a 50 2d 8c b3 b9 50 92 50 58 82 eb 99 4d e7 46 \r
+59 62 56 98 a0 05 04 17 94 0d 8b fa 28 a3 f9 3d \r
+14 9f f8 b0 bb 39 26 f6 18 ef 91 96 6f 4d 39 bd \r
+ba 5a 05 17 dd eb b1 6d 2b c4 b4 e3 3a 7d 61 9c \r
+95 a3 3c f5 f5 72 db e0 7f ab 4a a6 7f b3 f3 9a \r
+a2 98 1a 3d c0 ca ee 64 75 8e a8 98 eb ce 10 bf \r
+3a a4 fc 84 49 e8 e0 cf 7e 88 b1 88 23 8c 20 68 \r
+ef ac eb fe ef 40 73 a6 54 a5 8a 30 99 d0 36 ae \r
+ee 2d 81 82 98 d4 ab 39 23 8e dc 45 9a 9f d3 57 \r
+7e 9f 5b fc 03 68 aa 65 7a ee da 1e eb 8a e7 f5 \r
+ac 1e af 3b 1c 95 81 7d de 2e c1 a5 9f cb 5e f2 \r
+7c c3 4f b7 53 31 da 7a 49 96 92 5a c3 ad 17 bb \r
+c3 da fe 6a 9c 64 4e 30 98 ef fe f8 fe a5 cc 0d \r
+5f 0c 04 8e 10 88 \r
+\r
+# Signature:\r
+11 e1 a8 28 f0 0a 98 7e 03 d6 2e 2a 53 6c 29 7d\r
+da c0 22 e0 63 ee 0d e4 e4 69 5d ed 1f db 22 09\r
+00 a3 ac 3f 87 d1 be 75 f9 59 c2 8b 57 8a 43 b2\r
+56 64 3c df ff 92 15 95 fd fb ea f4 10 c2 ae d9\r
+e5 e4 7e 1d 15 1a e2 8c 76 99 ae e2 25 a6 45 bc\r
+42 b3 be b5 2f 08 38 7e c5 54 d0 20 4d 28 3c 3b\r
+cc bc ca 21 6e da d9 4e c6 4f 9c 20 b3 40 6a b7\r
+8a 6c 4a 4d ae 3f a6 17 a0 0c 6a b2 f8 e2 47 62\r
+\r
+# PKCS#1 v1.5 Signature Example 5.6\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+15 74 69 73 44 e9 86 85 cd 6e 65 e4 67 83 f0 b5 \r
+\r
+# Signature:\r
+3b 7d 67 d1 3c d3 c0 fd 30 5a d4 04 d8 a3 dc de\r
+4a 45 17 9c 2d 0b 87 11 5d 6d 06 0c 24 9b 87 f3\r
+9e 46 3b 76 4b 42 07 c4 8a 74 cf ce 25 31 e8 18\r
+3d 3d 01 25 85 ce 57 39 d1 62 c4 ea 22 32 44 02\r
+ea 2e 6e af b8 a5 73 fc ff 40 15 c9 5c 45 e4 ca\r
+7a c5 1a e3 a0 6f 42 1e 60 6d 68 3f 5e 12 2b 55\r
+79 14 8a 9c 46 6a de b0 24 28 f4 89 6a 86 df 63\r
+be 58 7d dd 7a 6a 8d e7 17 6b e4 e7 ff 4a aa 99\r
+\r
+# PKCS#1 v1.5 Signature Example 5.7\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+be 46 be 8b dd 85 43 d3 70 bb b7 ac 83 9f 5e 64 \r
+53 f3 0c d8 75 2a 4b 92 67 32 c5 9e 61 09 04 4b \r
+e3 a0 75 6c 70 25 a2 32 80 df 2e d7 66 ba 39 ab \r
+b2 0b 94 4c 06 5f e1 48 7d ea 31 b4 70 8a 68 9a \r
+50 b2 8d 54 29 94 cb bb 3a 5b b9 46 0e e7 a9 c1 \r
+53 8b da 75 1a 52 8b 76 70 f9 15 78 d6 67 3e 08 \r
+ab cc df 5f 4d 8c 1e be cf ca c7 5c c4 2d bb b8 \r
+cd e3 c1 b4 74 b5 56 b3 2b b8 48 fc 32 7b a6 e3 \r
+cf 5f 77 b1 eb c0 4a 19 f3 c8 c3 9b 6b 84 77 84 \r
+ea a3 25 a2 b6 f3 \r
+\r
+# Signature:\r
+91 de 2f 90 32 47 b2 d1 3a be 93 dd d9 6d fa ef\r
+1b 4d 17 2b 09 09 58 f0 cc 34 fa 92 83 5a d6 0c\r
+44 b4 27 fe 03 1c ad bf 92 ff 1c d0 38 41 44 c9\r
+b5 f2 8f 64 5c 63 e8 d7 16 bc ec 2e 04 3b c3 96\r
+56 64 17 85 c2 6b a3 6b a2 a1 09 e3 64 4e bf d9\r
+62 d7 a3 16 91 6b 3f 13 66 20 13 cc 0f 37 ad 8f\r
+9e 0d 9e c8 b4 c8 ad 5c 75 32 cf a0 44 ae dc 73\r
+78 77 94 c2 98 79 7c 8a 7e 14 49 ea d6 15 0d ed\r
+\r
+# PKCS#1 v1.5 Signature Example 5.8\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+0b 7e 06 63 e7 15 ea 38 bc 93 0e c9 d8 e2 a0 29 \r
+aa 1a 4c 95 e7 b2 00 47 ae 15 44 d5 b2 d8 47 6f \r
+c8 05 53 9f b0 ef ab 7d 5f f1 2c 36 d7 6a 79 7b \r
+75 c0 b5 3f a9 26 54 73 da b6 80 c2 55 d5 7e 99 \r
+b6 d9 fe 08 cf 1a 57 34 91 e2 19 78 fa e9 53 9c \r
+c0 58 84 63 3a 1d d5 cb 21 53 6f d4 2d dd 73 1c \r
+a7 6c 34 57 81 3c e1 bb 59 c2 1d d3 1b f2 ae 3b \r
+fd 7d 20 c6 c7 12 a9 dd 43 95 1f 1b 19 8d ea f7 \r
+41 08 ea d2 29 26 d2 b0 19 1e 59 d5 f6 79 ad 97 \r
+c7 1e dc 69 de 97 98 7e 54 3e 87 a9 6a 9f ee 77 \r
+e3 f0 ea 95 7b d4 6a \r
+\r
+# Signature:\r
+48 51 09 8a 85 e7 0d a3 33 92 a9 e9 0b 34 76 a4\r
+8b a0 e3 2c d6 ad 3d c1 dd 91 da 57 e8 8d fb c7\r
+b6 57 4b 08 e8 71 60 80 e1 5d f4 05 79 c5 70 5d\r
+5b ef 58 4b 08 b2 63 db c4 f0 d1 59 56 ff 11 25\r
+c4 8f 89 59 1e bc 94 1d 9f e8 f9 a7 80 c8 2e a3\r
+2b f3 ef a1 6c ab be e5 80 fd 6b 95 74 08 0f 69\r
+07 fe af f8 1d 48 c4 9a 6d e2 24 84 80 f1 d8 52\r
+39 e9 a4 18 dd 53 10 de f7 76 e0 8f 50 9a 14 78\r
+\r
+# PKCS#1 v1.5 Signature Example 5.9\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+13 42 33 ba cf a1 6d c8 4d 8f a4 bd bb 47 93 d1 \r
+da c0 7d 60 54 bd 08 39 61 da 68 67 9c a3 75 33 \r
+4f 09 20 b9 df b8 a6 8e d7 7f 27 fd 92 19 28 13 \r
+61 e0 9f a6 08 4f 96 e6 98 85 b4 7e a7 75 af 06 \r
+77 2d 66 12 d4 d1 6f 4a 5c c4 cd 0d 1e b2 3b 7a \r
+1f 09 56 4b 84 2e a0 7c bd de 60 45 3a 2a a4 ab \r
+69 dd fe b5 b1 3e 9f 08 cd 07 2e 5b 71 ce d3 34 \r
+ea 70 4c 74 9f f4 72 7e be 12 c0 29 0e 00 a8 41 \r
+d7 4b 06 55 cf d8 06 5d 28 20 fd f8 fd c1 bd 45 \r
+58 81 80 8b ff 0e c7 27 60 74 75 bf 0b 2b c8 93 \r
+59 58 32 9b 77 8e fc e5 60 fc 26 c3 bb 6e 2d c9 \r
+ae f1 8f 96 9f ba 64 74 5e d4 d8 5b 14 75 7b b8 \r
+33 ea db 9c 5c b0 ea ed 08 d3 0b 95 15 00 5a 3e \r
+88 09 1f c5 cd 2f 36 ad 95 5b 7c 6f 2b 19 bb a3 \r
+74 fd \r
+\r
+# Signature:\r
+3e 37 b4 2d be c1 29 db 81 c5 e2 a2 22 f3 1e 81\r
+b9 37 ff 02 24 95 18 18 37 30 37 8b 4c 09 2a a7\r
+f3 b2 34 59 61 1a 82 4f c5 27 54 42 1a 27 cc e9\r
+18 b6 2a a7 b4 46 38 a0 c0 82 79 80 52 a5 88 46\r
+68 82 51 06 90 ac 77 30 23 28 02 46 c8 90 ff 1f\r
+62 27 04 9e 66 8b c9 d6 e4 89 b6 94 4a 34 e8 f9\r
+30 02 bb b0 0d 75 2b 57 7c e3 52 53 00 82 be cd\r
+30 9b 0d ac cd 1d 68 d0 6e 1d f7 12 21 c6 22 69\r
+\r
+# PKCS#1 v1.5 Signature Example 5.10\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+35 da 3d 02 34 bd 74 fc d7 6e 8e 69 52 8f 65 1b \r
+88 27 1c bf 16 28 69 38 c2 c4 a3 7d 41 1d e8 f6 \r
+75 78 eb 8b 3d 20 a8 fd 7d cd e7 b6 56 fe 96 a6 \r
+80 87 32 28 ed 0f 9a 62 0f 15 05 44 23 72 f9 b2 \r
+b4 16 84 98 72 34 90 f8 11 f3 11 1f 5f 77 38 63 \r
+47 b4 82 2e d9 d6 b5 53 83 92 21 5c b6 c4 86 5b \r
+b7 b5 b7 e2 84 2e ea 0e 90 01 ca 0c df 5d 6b \r
+\r
+# Signature:\r
+12 ff 2a b5 fc 83 d6 49 59 7c 47 bf f3 29 b7 f4\r
+61 db bb da 01 fb 6b ad 26 54 3e 4d bc d6 0c 5e\r
+2c de bf b1 12 78 4a 96 4e 27 f2 a2 e7 fd 07 ec\r
+39 0a ab 14 94 37 03 58 a7 5b 5e 1f a4 f1 ad 52\r
+02 e6 d5 46 c0 f3 15 e8 6f af f1 d2 5b 94 72 82\r
+da 32 ea b5 6c 22 f0 6c 8a 9d 32 ae f2 81 d6 f0\r
+aa 55 d7 ad 3b cd fd b2 09 a1 6e f4 5c c6 f9 68\r
+2e ae 96 3c bb 21 3a db 7f ad 1b ef 49 c0 70 4f\r
+\r
+# PKCS#1 v1.5 Signature Example 5.11\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+75 fd b0 72 73 f7 54 d1 11 6f 99 7a f2 d1 1a 51 \r
+2b 94 e9 e0 48 01 b3 fc 73 91 30 b7 47 b4 be 87 \r
+44 d7 e7 f8 a2 97 a0 89 d9 05 0c 5f 54 f8 a3 9a \r
+a3 f2 \r
+\r
+# Signature:\r
+07 ff c1 b7 a1 0d da ba 96 05 f0 a3 d9 3c 8a 5e\r
+4c 0b 77 58 61 39 05 07 31 d9 cc 9b 3c 83 d2 b7\r
+3f af 9a 4e 24 d1 c8 bb 0d 62 3d f1 0f c8 40 7d\r
+15 14 48 fa 43 ee 65 81 e7 b0 ac 80 d1 4a df a4\r
+f6 d2 7a 76 67 50 b2 31 cb c1 c5 cf d6 2d f1 b9\r
+72 7d 8b 87 41 46 9f 68 e5 0a 9b 3b c7 ad e1 37\r
+db 06 74 76 03 74 28 56 d5 e7 dd b4 e1 6a 5b 49\r
+d7 36 5d b2 76 3b f5 fd ea 08 3d 81 fa c9 2d 87\r
+\r
+# PKCS#1 v1.5 Signature Example 5.12\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+96 c9 fa ce fb a2 ed 33 ed 8b 7b 3d 8b 6d f2 8f \r
+2f ab 0d cd d7 a3 cd 7a 7d ed a2 54 5e d4 47 0e \r
+d2 5b 46 d2 16 6e eb b7 e1 47 10 17 83 b6 45 ba \r
+c6 26 64 b8 72 70 09 f3 5d 1e a5 fd a5 e7 c2 8d \r
+6a f6 fe 92 04 6c a7 24 ca b8 42 5a 52 a0 85 f9 \r
+ac 90 83 d4 d6 90 bb dd df d0 a8 2d 94 8f 70 d6 \r
+85 e2 6b b9 f5 27 40 8a bc 84 7b ff 12 02 de df \r
+6d 2f ac 6c f3 68 2a 51 6b a7 2f 4f e9 7b 90 46 \r
+6a f6 e5 43 12 31 65 b8 a6 83 ca ba 2f a2 3a 86 \r
+ac 06 21 30 65 e1 ed 9b 4f 49 af 4f ff 6d 46 b3 \r
+6d 13 3d 8d a2 dd 29 d5 5f 9f 32 2c 40 78 5d dc \r
+21 c4 26 c5 e0 a6 7d 41 4f 5a b9 71 c4 46 0f f9 \r
+b1 14 30 5a 8a e7 e7 b9 5c 73 03 4e 8e 93 c0 35 \r
+29 dd 50 c9 4f 07 62 79 77 5a 5a 3a 80 c5 d2 48 \r
+6a 2d 51 08 48 bd c9 b8 52 ac 1d 32 ce b7 c0 41 \r
+a0 8f 2f 8e 62 \r
+\r
+# Signature:\r
+46 d0 3f ae c4 a7 23 18 62 1e f4 d0 c1 bc a7 1a\r
+2a ee a7 a8 1d f8 fe bb 8b a3 fb 35 40 d7 2d 15\r
+34 b9 82 69 16 e8 9f 27 d3 25 67 6c cf 5a 0a a1\r
+61 12 db 2d 93 03 e0 eb ce 4b 85 58 7c 55 ac a0\r
+68 50 de 84 de c2 13 d1 13 74 04 a5 de e6 ca 88\r
+d9 1a e2 8b 7b 53 6c 90 20 2b c7 72 6d a5 04 2a\r
+85 08 d3 b1 3c fb aa dc ee 12 78 d3 5d 30 3a cf\r
+ee 6e 07 41 90 49 11 a5 f1 88 10 ad d3 e7 b8 f6\r
+\r
+# PKCS#1 v1.5 Signature Example 5.13\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+c4 b4 c9 96 6e 56 f4 0a ff 47 08 13 1c d3 71 44 \r
+21 34 3e de 70 c4 d4 6d b6 ef be 1b 19 a9 e3 c2 \r
+e5 81 06 00 8a 98 38 59 cf 94 2a 31 97 74 69 5a \r
+0c 98 a9 63 e2 fe 9d 93 79 bc \r
+\r
+# Signature:\r
+b1 6b 10 f2 bd 7e a0 f7 6a 9e d2 ff cf 3e c1 0e\r
+dc b8 24 60 fe 55 82 a7 76 4c 0c 50 56 ec fb 09\r
+72 06 48 d5 f1 9b 3d ea f2 ac c9 86 46 0e 71 14\r
+26 15 83 a5 f4 a9 90 e9 22 fe b5 b4 78 97 34 fd\r
+cc e1 5d dc 87 ca c3 f6 c7 c9 e9 e2 19 23 15 f0\r
+84 1f 43 ea 86 de a9 a9 38 05 08 b0 6c 9c a5 e9\r
+d4 a6 51 d0 12 16 62 7c 46 6b f0 d6 ae 74 4b f3\r
+0f d7 91 a8 21 03 39 f5 05 7f f8 5c eb 84 f1 96\r
+\r
+# PKCS#1 v1.5 Signature Example 5.14\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+b8 38 a5 d8 88 95 0f 1b 8e 4d 94 7b ba 51 af f9 \r
+bb 60 b8 3d 09 ed 9d 97 96 7a 76 95 5e d1 dd f0 \r
+48 15 20 bc f4 f0 8b eb bf 89 9c c7 c3 ef 0c 04 \r
+d5 00 1b 1e 2e 84 5f af c5 83 30 0c 98 ac a7 a0 \r
+3e 90 a4 34 de 77 fe f7 20 da 36 63 f2 19 98 20 \r
+8a 94 f8 94 76 7d 3e d8 13 96 b7 ef b2 86 e0 ff \r
+7d b6 ea 8f db 4e 72 83 46 00 fe 5f 7f 15 0a 01 \r
+b1 d4 a0 8b 5e c9 ee 1f bc 10 01 d1 2d 52 36 db \r
+f0 72 7e 7e a3 60 78 f3 eb ac 50 46 b7 65 b4 e2 \r
+3c dc ef d1 15 d6 2a 50 34 4d bb d7 42 8d 48 ff \r
+c9 4b 11 e2 1c \r
+\r
+# Signature:\r
+b1 56 81 ee f2 96 a6 6b 9f cd 66 30 f8 9c 55 82\r
+6a 38 9e 0c 2d 3d 47 6a 0f 8a 1e 08 cb ca cc 66\r
+02 c7 14 43 8f 32 f3 4e 02 c3 6e 5c 0f 16 8a b0\r
+28 91 7e 90 50 fb c8 50 f0 cf 65 d5 ee db 3b 54\r
+be 54 95 bb f0 fa ee b3 2b be 5a 8f 87 bb ac dd\r
+25 85 fb 90 7b 13 18 5b 02 61 56 63 d2 01 1e f2\r
+3d 0a b0 4d ad 1f fa 67 9b 53 15 2c 9c 42 b8 46\r
+39 68 4e ae af 64 4e 4f c6 ff 2e c7 d4 7b a5 ac\r
+\r
+# PKCS#1 v1.5 Signature Example 5.15\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+9f d5 39 c8 ad 86 49 24 ee c1 d6 55 c0 7d 1f 28 \r
+27 0c db 32 6b 57 2c 46 67 ec a6 48 8c 03 36 57 \r
+ff 29 25 4b 91 f3 21 6e 1c ac 97 97 53 f2 23 b1 \r
+79 ea 5f 9e fc 23 6d 40 1d 1b 9a 3c 20 eb 2a fc \r
+9b fc fd 07 92 ac c5 b0 0c 98 28 a6 45 \r
+\r
+# Signature:\r
+38 bf df d3 27 2e 48 cf ee 68 ce b9 13 04 eb 91\r
+ee 25 e4 83 40 1f 30 fe 12 d5 e4 35 18 e4 b7 71\r
+14 a1 2c 8c 79 92 ae e7 d2 e7 74 ff f9 1d 8f d1\r
+cb 7c 6a 2a df 79 b7 c8 ab 93 e8 37 4d b7 4c 26\r
+90 9c 65 9a 97 c7 6a 22 2d f4 fc 8c 7e f5 19 90\r
+80 ea ae 2d 03 1c a7 51 c5 01 32 89 db 4e ad 77\r
+b2 8b 76 a4 c4 96 ad 0e b4 22 fc a8 8f c6 84 e4\r
+2a ea 88 fd 33 c2 56 75 1b a0 66 83 4e 77 a1 e2\r
+\r
+# PKCS#1 v1.5 Signature Example 5.16\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+1d e8 07 40 9d 0a 61 b0 32 2d fe d4 99 e8 c3 32 \r
+41 ec 89 cd 7d 9f c5 \r
+\r
+# Signature:\r
+8b 66 64 f8 69 d7 55 c5 d3 e6 df 99 22 e2 27 c1\r
+10 91 8a 6f bd 88 c1 a2 e1 28 95 23 ad bb d8 aa\r
+43 1d 07 86 85 3a b5 96 dd 5b 00 12 43 b5 4a 2c\r
+b1 0c 31 66 bf 00 23 38 fc a2 03 45 ae de 1b 22\r
+ea 1f a3 d2 41 c8 6c 76 bf c0 2f 4f ce ae 12 c8\r
+a9 d7 e4 4a d6 17 16 65 e8 8f 12 85 22 dd 53 5a\r
+9d 65 00 8f 6a 73 2d 40 af 20 4e 22 0f 1f ac d9\r
+42 e0 9d 15 09 9f dc 51 b3 a1 42 6c b2 dd 32 93\r
+\r
+# PKCS#1 v1.5 Signature Example 5.17\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+4b 2b cb 26 79 a1 4c 3c 4c 06 9e d0 89 a6 5a ba \r
+29 f2 2b 61 78 c0 \r
+\r
+# Signature:\r
+1c 47 82 8e a5 3f b6 43 6e 95 96 b0 ce 47 d9 f3\r
+8b 5d eb 0b 19 7c 1b c4 74 e2 e8 22 65 70 cc 1b\r
+72 f2 39 31 2a e7 c3 c6 38 2e 1d 8c da 7d 4f 12\r
+fe ba d7 0a fa e5 ac bf 24 28 ab c0 44 21 bb 4e\r
+1e 59 90 11 1b 9a c8 3c 62 43 5c 21 aa 25 fd 9b\r
+49 07 58 54 11 d2 53 ba 9b 87 78 f6 24 05 3d 46\r
+fe 95 d7 e2 2c a3 93 81 c7 79 2e ff 46 43 8f bc\r
+16 5e d7 62 9c 2f c1 ce f1 b3 4d 77 76 8a 20 55\r
+\r
+# PKCS#1 v1.5 Signature Example 5.18\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+ef 46 ae 51 e0 15 8c d0 ef 9c 78 d7 1e 00 15 67 \r
+d6 6a e3 c5 e9 a6 4f 24 57 15 c7 c2 ad 8e ea 0f \r
+9d 32 00 23 07 2f db 0f b8 6a 45 21 7f d7 12 cc \r
+80 e5 b9 41 47 c4 5f e0 0b 69 2c cd a1 10 25 98 \r
+41 b2 c7 e5 c3 dc ff 59 56 f2 a5 96 cd a6 8e b7 \r
+7f 4c 85 90 d7 36 b8 fd 60 66 77 3e f6 f9 5a 38 \r
+cd 38 4e 94 83 a8 9d c2 b6 c2 e8 74 5c 95 c1 2f \r
+a6 72 a1 be cf b6 3e ac 9b 55 3e da 8d 29 37 54 \r
+ec 39 47 ea c0 22 8d e2 63 14 b5 9b 66 99 4c c6 \r
+0e 83 60 e7 5d 38 76 29 8f 8f 8a 7d 14 1d a0 64 \r
+e5 ca 02 6a 97 3e 28 f2 54 73 8c ee 66 9c 72 1b \r
+03 4c b5 f8 e2 44 da dd 7c d1 e1 59 d4 51 d4 bf \r
+65 80 f3 e6 9c dc 02 71 38 2e 8d c1 4b c7 33 af \r
+38 99 2c 1c d8 82 c7 b1 50 d2 3a 06 7b 9b cf 3c \r
+cd ab 6b 0f ba 13 2b 4c 14 47 c8 7c 39 3f \r
+\r
+# Signature:\r
+8c 1d e1 5a b8 6c bf 5b d9 31 7c e2 b8 fc 82 f5\r
+72 2d b6 96 1c 9f 55 51 40 f7 8e bd a2 4e 3f 51\r
+fd 73 01 c1 e4 fe 12 b6 95 7c 30 14 4f a1 e1 27\r
+27 46 03 dc 02 05 11 30 b2 53 85 fc 86 46 ee 96\r
+a7 45 50 d2 d6 3f 85 81 85 bb 98 46 52 a3 43 1d\r
+53 3d a6 01 46 22 a6 4e 06 91 66 2a 4f 7c 9d 58\r
+31 9b a3 f8 5f 19 18 24 75 e1 50 9b bf 21 3a f0\r
+10 10 b4 b9 f8 2e 64 75 11 fc 97 c6 b7 c9 7e 8d\r
+\r
+# PKCS#1 v1.5 Signature Example 5.19\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+f8 7b b1 2d aa ad 62 c8 64 ac 3d 44 4d 51 4e ec \r
+6e 59 b6 7c d0 82 0d fc bd f8 51 ea 73 89 1f 58 \r
+a8 be 6e 84 3e e8 77 3e 4d c1 c7 d7 42 da 82 ff \r
+16 c1 01 1b 99 56 6b 9f 3f d1 7d 68 d5 ac 99 ce \r
+f5 a3 a0 f7 53 18 76 9d c0 13 bb 05 5b e1 30 56 \r
+df 49 a8 39 b8 39 52 51 39 9b 27 a0 bb 31 c5 54 \r
+ae df 3d 9c 74 82 b6 62 0c 5d 7c 69 14 a5 64 db \r
+04 a0 00 04 56 99 ee 1e 50 88 a5 b6 8d 81 4e fe \r
+9d 13 0d c3 4e 2b d9 78 51 13 9c 73 46 07 65 b1 \r
+f2 65 46 86 fe de 9c 9b 3e 92 40 9d b2 d4 2a 32 \r
+ba 9e 20 bc ae b2 c4 f9 ff 9b 0e 83 4b 74 92 a2 \r
+b1 d8 c6 5c 8b a4 98 34 2a e7 d1 d9 fe 74 05 c2 \r
+\r
+# Signature:\r
+20 7a 34 8c df 68 4a a8 e1 a4 af 7b 7c 25 27 07\r
+ce 6f 1f 9d b2 29 1f 2a 95 a0 71 5d 9c 7f c5 1a\r
+a2 30 11 0b 5b 51 8a 9c 8f 95 8d d2 0c 75 24 d5\r
+b6 51 06 d7 42 1b a9 fc fb 78 91 78 41 2c 36 40\r
+f5 40 b8 1b b3 18 97 d2 64 5e c7 9d 8e 59 75 04\r
+8e 45 22 61 a1 c2 00 9c fe ee 07 15 a0 1b ee fd\r
+75 e7 04 b2 a6 f0 f0 ae 7e a3 6c 53 cf e3 6f 57\r
+f0 34 e3 85 44 8f ca ab 08 dc ff 47 7d 36 ff 15\r
+\r
+# PKCS#1 v1.5 Signature Example 5.20\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+4c 4b \r
+\r
+# Signature:\r
+1c b6 88 12 83 dc d1 86 3b a7 9d fb 22 35 1b c9\r
+a8 e0 35 8b 2f 8a 1d e3 f9 06 5d 8c a8 59 31 4a\r
+e1 12 13 a2 cc 87 b2 f6 32 ef a6 7d 21 03 f3 82\r
+00 b9 19 3e b8 d4 99 82 09 9a fc 74 42 8f 4b 41\r
+31 6f 48 78 b3 f6 00 bc 2f b3 04 58 cc 9c 2a 03\r
+4a 06 8e 98 d5 7a e7 9c e3 e2 fc 84 b6 a7 45 f0\r
+37 a5 de a2 b9 da 4e 8d b4 ad a6 9f b8 2d 20 a4\r
+1b b8 43 07 93 ee f9 2a 4f d6 18 6d 17 96 63 cb\r
+\r
+# =============================================\r
+\r
+# Example 6: A 1024-bit RSA key pair\r
+# -----------------------------------\r
+\r
+\r
+# Public key\r
+# ----------\r
+\r
+# Modulus: \r
+d6 31 14 57 e1 ca f1 22 44 36 69 79 83 c8 6d d3 \r
+38 20 58 62 d2 a1 05 ba f7 10 34 28 fd 83 53 a1 \r
+9b 7b a4 22 8f 78 b4 7f 79 07 35 70 34 c5 2d 85 \r
+97 da 2b 5d 13 dc 53 5b 83 6c 74 13 0a 36 48 91 \r
+8d 4a 7a 83 99 0c 2e 28 81 6a ec 0f ca 01 d1 05 \r
+c6 c6 52 ec 57 33 d0 1f 00 58 b2 df 5a e6 73 33 \r
+40 5a 3a 5b 12 20 a2 6a c3 d1 42 f2 b4 d8 37 eb \r
+73 86 a4 0a 74 cc 3d 1e 4f bc 64 fd 7d a6 3c 41 \r
+\r
+# Exponent: \r
+01 00 01 \r
+\r
+# Private key\r
+# -----------\r
+\r
+# Modulus: \r
+d6 31 14 57 e1 ca f1 22 44 36 69 79 83 c8 6d d3 \r
+38 20 58 62 d2 a1 05 ba f7 10 34 28 fd 83 53 a1 \r
+9b 7b a4 22 8f 78 b4 7f 79 07 35 70 34 c5 2d 85 \r
+97 da 2b 5d 13 dc 53 5b 83 6c 74 13 0a 36 48 91 \r
+8d 4a 7a 83 99 0c 2e 28 81 6a ec 0f ca 01 d1 05 \r
+c6 c6 52 ec 57 33 d0 1f 00 58 b2 df 5a e6 73 33 \r
+40 5a 3a 5b 12 20 a2 6a c3 d1 42 f2 b4 d8 37 eb \r
+73 86 a4 0a 74 cc 3d 1e 4f bc 64 fd 7d a6 3c 41 \r
+\r
+# Public exponent: \r
+01 00 01 \r
+\r
+# Exponent: \r
+5e a6 11 77 44 2f 89 9e ba c5 d0 96 01 c5 ef c2 \r
+06 6b 44 a3 66 b0 00 f8 3d 74 cb 97 d1 6e d6 e5 \r
+f2 ef 0f f8 b5 ad 81 15 53 45 fc 37 39 1a 68 a3 \r
+40 17 08 52 79 14 43 41 8d 31 bf 99 2a 4a 12 86 \r
+6f e9 ff cc de bb bb a6 37 ee 88 7b 71 6c aa 92 \r
+e2 49 ce d6 57 ee d7 1f 5c cd d9 16 3f 32 69 52 \r
+5d 78 9f 4b 33 c4 8a 95 76 44 36 ec 32 5e 86 89 \r
+69 1c 27 2d 90 bd 88 88 98 51 37 2f b8 dc b9 \r
+\r
+# Prime 1: \r
+f3 d4 b8 51 ad 7a c7 78 be cd dd ae 71 b6 13 f6 \r
+59 7c 70 75 c4 d2 8d db ae 1e fa cf 03 59 71 ab \r
+63 ee 90 db bd fb da 43 25 a1 5f bf 84 5e ea 54 \r
+bb cd 05 57 4b 1c d6 01 dc ad ba 12 06 28 05 b9 \r
+\r
+# Prime 2: \r
+e0 e1 ad 57 d6 8f 30 13 28 8c 14 83 e8 c5 b1 2e \r
+fe b6 ec 14 5a e4 18 8e 1b 3b 39 04 87 90 0a d2 \r
+c3 25 d2 32 80 6a 62 17 34 2a 65 75 95 14 f2 26 \r
+8f ca 72 c4 c5 bb a0 32 81 89 dc fa e2 06 ae c9 \r
+\r
+# Prime exponent 1: \r
+3b b6 d2 d5 1d f9 3d b4 b2 75 d4 5e 8e 76 9a f8 \r
+ef fd 6b c5 4b c8 8c f9 49 f1 48 57 3e 68 bf 4f \r
+cc 0f 76 e6 79 e6 9e 13 67 b9 d7 ab 1d 8d e9 31 \r
+8b 34 b0 a4 2a 3f 0b a2 35 1b 4e c0 6f 45 89 f1 \r
+\r
+# Prime exponent 2: \r
+71 f4 aa 5c 8a 93 80 af 14 aa f7 72 68 b0 55 3b \r
+15 44 28 99 9f fd 5a 1c 18 dc 87 e6 2d b3 e6 68 \r
+2b 0f ad 56 7e 10 6a a8 8b 7c b8 71 3f 1c a0 20 \r
+be 58 be 93 cc 07 6a 04 6d f4 28 90 d1 9c c5 51 \r
+\r
+# Coefficient: \r
+23 1a b8 dd 9a 56 99 d7 97 59 11 ef 0e f8 7c 28 \r
+dd b9 2e 24 6e c3 4c 5f ac 33 83 22 dd ec 89 8d \r
+56 68 67 45 3d e6 d7 8a 45 c3 16 b1 45 a2 86 18 \r
+94 0e 1a cd 11 58 c3 af 92 fa ab fd c3 97 84 32 \r
+\r
+# PKCS#1 v1.5 signing of 20 random messages\r
+# -------------------------------------------------------\r
+\r
+# PKCS#1 v1.5 Signature Example 6.1\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+8f 75 0e 65 95 1b 5d e7 58 14 b0 b7 66 30 dc 9f \r
+1c 62 53 a0 59 0e ac b5 51 2a 8a 4e 1a 8b e8 52 \r
+5d 36 94 1f a9 d0 92 f6 bb 44 22 aa 8c 0a d6 42 \r
+3e a2 8c 10 ca a6 e9 54 b7 95 69 d4 4c 86 0f 1c \r
+65 81 eb 17 a7 54 3e 7b f7 fe \r
+\r
+# Signature:\r
+b1 8b 5e c8 8d 4e 24 c9 14 b6 65 ff 9a 2c 75 f4\r
+e9 19 37 df 8c 19 95 59 43 e4 51 ad df 34 84 e4\r
+97 97 8d 26 da 23 1a f1 4d 9c 29 27 ed 21 0a fb\r
+f9 de e3 32 67 aa 45 68 46 49 e8 6f b2 25 a0 53\r
+b5 45 52 90 c3 20 e3 f6 40 62 3c 75 ca 42 37 21\r
+f2 80 b8 87 44 24 97 f3 2a 90 d7 8f 64 44 04 77\r
+ad 09 27 c7 ba 01 c4 4d a9 d5 c2 83 a4 38 be 0d\r
+c5 80 a0 05 28 fc 65 e2 04 d4 2a 2d 4e 29 13 c1\r
+\r
+# PKCS#1 v1.5 Signature Example 6.2\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+bd bf 3b 36 40 73 fe 04 8f ba e5 5e 3c de 66 8e \r
+84 f7 53 ab fc 71 0b 8c db 7b 6c 0c f8 2d d5 b6 \r
+74 d2 1e 2b 3e 36 b1 b0 36 0d f8 bf 7e 62 27 c9 \r
+2e 15 f3 d7 84 \r
+\r
+# Signature:\r
+66 ac f0 43 bc 6a ae 81 a4 d5 2b 4e 8c 40 12 8b\r
+25 c6 d1 0a 8c 69 8c 83 ae d7 1e 8f 35 83 89 8b\r
+e8 f4 c9 be a4 b6 31 90 e2 15 26 ca f8 3a b1 4a\r
+4f 8b eb e8 13 a5 ab eb 95 95 67 bb 2f 06 c5 f1\r
+1e 46 4b 5c df 7b 2a 13 2d 42 6d db ec f5 85 90\r
+0a 0d 80 92 ca 52 b6 dc 0a bc 35 f1 40 94 69 89\r
+46 e1 cd 0e cd 6b d4 1e 2c 6f 96 3e e8 9c 82 19\r
+3e cc 5f d4 76 30 d3 4a d1 6c a2 47 9e af 06 2d\r
+\r
+# PKCS#1 v1.5 Signature Example 6.3\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+3c 5c 74 bc 8f ae 80 7a e5 8b d2 13 e6 27 2a a3 \r
+85 79 31 57 5c 2a a2 be 4b ca e4 d7 9a e0 87 b6 \r
+b8 6f 91 5d f8 c0 96 c1 22 ed fb dc 79 7f 9d 70 \r
+b9 76 13 97 fc e3 d3 e0 b8 a6 f2 56 db c6 60 5b \r
+a9 48 d5 fb e6 f5 24 5c 02 95 ce 5d d7 3b f7 43 \r
+65 17 f7 c4 22 2d 2c fd 85 42 e7 a1 00 cf 05 13 \r
+04 a1 ab 6f e0 05 da 07 7b 62 87 8f d0 b7 41 e6 \r
+27 1e 0d 34 6b 20 72 3b 7e 00 b3 b8 19 4e 1a 46 \r
+0c 6b f2 56 00 76 82 90 c1 dc aa 2f 41 b9 41 a6 \r
+4f d9 02 14 d5 16 6d 78 aa bb af 7e 41 d2 4f f6 \r
+36 c9 76 2f d8 92 19 9d 2c fd 9d ed a5 00 51 e0 \r
+01 b9 fd 3e 5e 22 27 ae cb 15 c1 b3 13 71 b3 5a \r
+78 b3 b8 b7 63 63 76 f1 34 56 2b 4e 52 f4 51 b7 \r
+41 a1 9a c9 32 56 9f f3 04 1f af 12 27 9f 90 \r
+\r
+# Signature:\r
+5e 89 7f 87 9b a4 6f 67 11 2c d7 c7 c6 fb 27 37\r
+ad 79 3a 87 28 79 05 2a 88 45 7a f5 e9 d5 99 59\r
+a8 48 13 4a 68 24 de 3a 67 4f 72 a9 06 87 9e 95\r
+be 0e d8 7e a9 f9 74 a7 a0 7b a9 ad be c2 fb fa\r
+02 94 37 8b 14 e7 35 f5 5f 40 3c a0 53 08 4f 51\r
+d3 d3 42 d8 af 9c 64 b4 d1 54 ad 9a a3 c6 bc aa\r
+ce 1f 1b be 62 ee b5 d0 e6 c4 c0 30 93 c2 af 0f\r
+07 88 8b 8b be fa 79 40 03 23 13 3f 77 6a 32 13\r
+\r
+# PKCS#1 v1.5 Signature Example 6.4\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+42 56 46 65 0d 6b 37 9e 16 e1 5b f3 85 3d dc 9d \r
+44 4f 44 53 5c 49 3a 37 03 b0 01 63 af 34 76 df \r
+37 2a 5b 28 f3 34 c0 86 03 13 e8 13 6d e6 08 29 \r
+1b 33 78 38 1b 9e 21 eb ef 24 82 5d 12 \r
+\r
+# Signature:\r
+a6 a0 cb 02 48 1a f2 48 ab ae 89 cd f4 16 1f 67\r
+76 d4 71 08 f1 8e c6 e8 43 7c 22 4a 14 f4 52 ad\r
+a1 36 52 0f 0f e0 10 a7 34 5a f1 97 1a 02 e4 bc\r
+f8 c9 8b 26 c5 b8 c6 00 3d e4 d2 b4 07 2d 8d ef\r
+1e 19 23 d9 cc e0 a6 75 14 1d 37 87 3e 59 48 ea\r
+6c 8a 78 0e d2 a5 ec c2 ba 9a 81 20 6c 7e cc c8\r
+0e ac 02 6d b7 d7 60 22 3a a2 38 7a 18 2e 98 d6\r
+6f 1e 23 df ea f3 51 5c ee 4f a1 ab d4 64 b7 68\r
+\r
+# PKCS#1 v1.5 Signature Example 6.5\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+f4 7d 87 bf d4 88 af 5b 24 db 34 ad 0c 13 1e fc \r
+a1 0c dd 1a ae ff be 6e 36 48 47 22 ed 68 09 b1 \r
+d5 7a 18 3b a0 3d 5e 40 5d 12 56 b2 50 5e cb 84 \r
+db 35 df a9 4d e8 5d c2 a1 58 8b 6e 83 12 4c f8 \r
+6c 5e 91 66 86 0d 4d d4 71 70 43 2b 08 ae 6a 6e \r
+30 87 10 86 fa \r
+\r
+# Signature:\r
+6c 00 8f f0 e1 28 fc ec 26 5f 37 9e b0 83 db 50\r
+62 4a 27 98 f9 33 67 c6 d1 6e 5d 95 a9 89 f4 f1\r
+ee d0 cc 4c d8 61 c6 a5 24 f2 b9 fa 30 e8 86 f1\r
+47 77 41 d7 ea 8a 60 df 14 0a ec f3 a6 cc f0 04\r
+3d ab 92 cb e7 29 53 cb 1c 18 41 e0 59 18 ec ed\r
+5b 0f 69 4a f9 a9 8e c7 f4 e2 28 6d 23 3d fd 35\r
+13 2a 0b 58 4b f0 e0 dc bf 05 11 9c e2 e3 a4 d8\r
+13 cf 02 8f ec 48 c3 4a 18 81 eb b5 31 ca 48 9b\r
+\r
+# PKCS#1 v1.5 Signature Example 6.6\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+03 18 78 d5 88 ee \r
+\r
+# Signature:\r
+cc 15 4e 1a f7 13 f2 f9 5e 16 f4 11 17 5d 98 36\r
+ad 6d 8b bd c8 f9 8c f0 5c fa 00 58 23 5d 1f dd\r
+e0 40 82 76 4c 29 dc dc c5 9e be 26 57 8b f9 e8\r
+ad 6a 5a a8 6b 9d 62 91 4b 4c f6 96 a8 ec 2d a8\r
+79 f8 fa 42 31 46 31 32 ea d7 bb 3b e7 50 ae 0c\r
+56 28 a3 96 b7 0a df a2 7b 40 34 23 b1 00 18 f9\r
+d2 4f ea 33 70 30 14 7f bf aa 15 d4 75 32 c9 25\r
+7c 2c 7f 54 1b 5b 97 4d 15 dd 1e 3f d2 e2 0a 69\r
+\r
+# PKCS#1 v1.5 Signature Example 6.7\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+27 26 38 52 ea a9 60 bf 76 71 87 6f c7 90 0f 89 \r
+8e a8 2e b2 b0 fc 41 85 65 fd ae 62 f7 d9 ec 4c \r
+e2 21 7b 97 99 0d d2 72 db 15 7f 99 f6 3c 0d cb \r
+b9 fb ac db d4 c4 da db 6d f6 77 56 35 8c a4 40 \r
+11 5d 3e 5b 3d eb 1b a1 bd 90 ca 12 86 fd 10 0c \r
+af 9b e4 85 a4 4a 38 45 00 57 18 10 4b bd fc 5e \r
+78 1a 9e 37 d6 7a ff e5 56 dc a1 0f 8e fa 39 f9 \r
+cb 63 92 a7 2e 3f 28 25 81 1a 2c 05 af 84 af 9b \r
+e7 f3 71 db d4 10 6d 9f \r
+\r
+# Signature:\r
+94 79 8d 17 94 78 bf e0 6d 96 a3 4a c9 9b c9 d5\r
+de 35 dc 46 97 ac 3f 70 e9 b3 4c 95 e2 2b 1c 30\r
+d1 42 6b e3 50 8e 62 2c 1a 18 ab 3c 46 72 fe 3d\r
+e3 40 eb 51 0f b9 87 b5 3a e9 3a 59 af 6b 00 bb\r
+ae e0 e8 27 08 e6 c6 ae 82 c8 45 53 24 01 78 36\r
+db 17 66 0d 06 9d 80 27 1e 1e a9 98 11 63 b1 4b\r
+66 87 6d fd 12 8f 09 cd 2e 3d 6a 36 b7 3c 3b 40\r
+ad 8e 13 24 84 90 29 c8 b8 e3 c8 89 4e bf a1 94\r
+\r
+# PKCS#1 v1.5 Signature Example 6.8\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+a4 fb 21 03 d0 be 29 0e 99 60 16 a4 39 46 2e 6b \r
+bd b0 72 4d 86 cd 51 85 91 33 ca 3d 39 da b7 7d \r
+a2 06 9d 82 83 58 96 38 7c cf 3d f5 cd d7 a5 79 \r
+3f 22 3f 3d 92 3e a4 63 51 35 31 ad a6 67 ab fe \r
+f7 53 98 c7 a4 bc 6e fa dd 4e de ef 35 ab 8f 54 \r
+01 e0 da f7 c2 fc a1 cd bb ee d3 bc dd 09 33 ff \r
+3e e4 c5 e2 88 ab df 21 9e 36 a3 ee 6f 21 08 41 \r
+a0 3c 9e 3e 4d ac 18 12 24 82 ef 85 f4 9f da cd \r
+c5 02 d2 79 f1 57 7b e7 7a 4e 00 b7 c7 f1 7b a5 \r
+da 6b 28 c0 1a 07 a8 63 df b2 1c 15 6d a3 20 01 \r
+f5 3d 7e a3 fc b8 c9 55 4f 07 54 59 a6 7c c3 c4 \r
+e6 9a 6a 37 17 87 87 46 3c eb ca ed a6 49 0a 8f \r
+80 b3 92 de f9 f2 2a 4f \r
+\r
+# Signature:\r
+72 66 70 c9 51 0b 58 35 4c 8a f3 2b 41 db 8f 69\r
+21 07 c0 c8 76 e5 52 73 a8 20 a0 c3 0d 39 24 46\r
+0f a5 bc 33 df e1 9d 72 e5 63 49 28 2a 80 fb 12\r
+a8 fa 9e a4 a5 da 69 c5 82 d7 c6 41 22 a8 a7 91\r
+b3 21 2c 39 e0 28 26 5b 84 54 df 71 5b a3 0b 00\r
+3d 12 91 69 cf 12 51 1c 0d 3e 7a ae ce f3 79 2c\r
+f1 85 64 4c f8 0e 44 81 47 b1 a7 96 1a f3 84 41\r
+7d 18 2c 6f 85 52 46 da d5 b8 93 d9 a7 68 0e bc\r
+\r
+# PKCS#1 v1.5 Signature Example 6.9\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+e5 50 6e 04 b1 91 84 10 76 85 87 25 a9 fd d8 f9 \r
+74 5f 24 2e 99 49 4a 42 3f 80 36 74 74 27 1d ce \r
+95 a9 9a 2f 71 13 4f 39 fb 3f 2e 47 c6 a0 b2 fb \r
+6f 61 5b 0d ee 6d f3 3b 28 f8 b0 d4 1e 92 d1 42 \r
+b1 46 e8 cd e9 b1 1d 6e c1 d3 7d 71 fd 82 b7 19 \r
+ce 1a dd b8 21 ca 4c af bd 2a a4 f1 e6 11 a2 59 \r
+e5 f0 5b 53 1f a1 1e 3b 67 1b 7a 5b 10 b4 c8 15 \r
+6c 25 b0 a5 9e c6 e1 58 f6 d3 46 d8 48 04 fc f9 \r
+2a 72 76 8f 4e bc 93 5e ee 5c fe c7 f6 e6 e8 3c \r
+be 15 8a 13 27 5e 84 18 3a 94 d7 24 b0 e9 66 96 \r
+\r
+# Signature:\r
+34 22 0e da fd 4a c8 84 b9 d0 0f bb fb 71 a4 a6\r
+c4 d4 b7 1c 19 84 22 05 07 99 d0 c0 fd 54 e9 09\r
+a4 ca d2 29 8f aa b3 34 7a 0a f0 d2 7d 53 01 a8\r
+86 00 9c f5 c6 f1 25 df c1 13 1a ce 38 8b b2 14\r
+c2 84 44 20 c0 23 db c8 b4 a9 66 11 b3 b3 93 ac\r
+c3 83 94 90 fc 4e e2 d3 69 b8 c3 c8 76 57 22 83\r
+ef 34 d7 0c 64 03 ef 9e 2e 87 a2 76 b2 35 72 ed\r
+82 e2 40 22 67 c2 73 7f 75 bb 4a 27 d3 cf 16 d2\r
+\r
+# PKCS#1 v1.5 Signature Example 6.10\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+8f c9 cf a7 21 df a0 9b a0 72 9e f9 18 9e 54 27 \r
+b3 e7 38 c5 ae 38 a2 65 7f 7c 7e 31 4a 49 ca eb \r
+a0 fc 9d 45 40 f5 f8 d6 c0 47 53 60 0e f6 b9 c3 \r
+39 65 40 f8 6c 11 75 b6 0b f4 0e 3d 8c 84 51 35 \r
+5e 13 74 f4 30 43 c0 c6 aa 41 d3 79 6b d8 27 9b \r
+3c 30 62 b3 74 99 6b 7e ae dd 4d b0 ae e8 c9 4b \r
+93 b1 71 fc 41 1d 4d fc 37 28 d0 23 15 58 cf c8 \r
+fa 45 f9 51 b3 5c 9d 46 12 18 a6 50 c7 02 ce a9 \r
+3b b3 fa 14 36 ed 44 5c 95 24 9d c2 20 54 71 01 \r
+b9 a9 3e b0 14 cd 84 3f f3 9c e4 c9 6f 82 a3 9f \r
+86 3a 4c 2e 1f a9 \r
+\r
+# Signature:\r
+a2 6e 7d bd 5d fe 08 c7 2b d8 0d 5e 26 68 d5 d7\r
+2a bb 1a 0c 04 20 ff 0e a8 6a 9c 76 08 c4 70 e1\r
+c3 f7 2e bf 44 5d 12 18 71 81 41 55 58 dd 03 eb\r
+e4 07 aa 06 b5 16 47 ba fe 0c 85 f3 d3 b8 dc e9\r
+0c eb f0 a0 ee cb ac 12 28 e7 85 82 0c 4f 90 9d\r
+2e f3 92 f0 31 17 56 1e c3 8e b0 d8 8b 02 32 72\r
+a4 28 63 51 62 0f 21 04 3c ca f7 50 36 84 00 29\r
+57 ef 79 bc ff 9d 1c 20 1c 42 e0 96 0b d9 69 79\r
+\r
+# PKCS#1 v1.5 Signature Example 6.11\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+96 1f e3 4a 21 2c b0 e6 f6 dc de cf 1a 4c b7 b2 \r
+14 39 0a 77 f4 4d 3a 3b 3e e2 b1 2f 1f 0e e3 14 \r
+2e 9e af 70 89 55 ec 83 7e a1 d0 d2 95 4e 6c e9 \r
+50 f3 4c 87 30 54 8f 2e 09 5d 5d bb 93 8b 19 0b \r
+73 8b ff 81 71 93 02 b6 79 8b 76 8b 0b bd d2 e2 \r
+b9 67 2d 89 14 05 c7 71 a7 79 02 fd 54 27 42 5a \r
+f0 4e 21 b9 1c 5f 39 37 20 41 e4 94 d9 be 62 de \r
+ce 31 bd 8a 26 2f 6d db 84 9f 06 8a a9 9f 7d 62 \r
+62 e1 84 ab 9c b1 62 24 47 d6 2f f6 71 09 20 30 \r
+70 71 c2 72 be 0b b3 7f 0e ef 64 5f 99 ea b5 1b \r
+0b cb bb 64 87 d8 d2 b4 9f 3f 23 e0 aa 91 8c 89 \r
+ac 85 56 53 e1 cc c0 05 91 58 0e 0c e1 e3 87 79 \r
+c0 4b e7 df 1c 66 63 ac d9 93 7e 47 2b 3e b6 d4 \r
+b7 0a 08 0d e8 e0 35 48 f5 12 45 be 7c e0 b8 6d \r
+ee c1 76 e0 0e 54 bd 63 bd 5b b0 2f c9 54 \r
+\r
+# Signature:\r
+98 ac 47 73 59 15 9e 93 e1 b3 36 ee 05 60 6d 42\r
+b7 e1 25 0d 12 95 60 c0 d0 95 f8 f8 ea 3c 04 74\r
+32 a9 9c 1e c4 bc 88 7d 7f 07 f6 1d f1 6f 0c 09\r
+f7 15 b7 05 38 8b b8 a6 11 87 34 6e 8d 7b 07 ea\r
+b2 fc 05 db 89 e0 30 09 44 ae 37 73 e4 4c b9 2c\r
+5c f0 f4 fb e0 1a 05 ad 79 bf aa 24 7f 83 ed 1e\r
+da 48 ba af d1 e1 80 07 8c a8 d3 21 d5 0b 42 57\r
+87 f0 12 43 a4 93 37 4e 84 f5 cd 56 b7 53 d7 ac\r
+\r
+# PKCS#1 v1.5 Signature Example 6.12\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+96 ff 0a 5e ca c9 51 16 bd 73 43 79 5a f8 3c 87 \r
+ed 9f 83 45 d0 3f 6f 32 2f 29 54 93 f4 0b 19 ba \r
+8f fe 2c 89 8c 7b 20 66 21 f7 2e 02 c7 f0 f0 0f \r
+9f 1c 52 3d 73 d3 35 a2 6c ed dc 73 98 b7 ca 20 \r
+09 ca cb b1 82 83 b7 6b 28 15 d1 e9 01 00 09 6e \r
+95 b8 85 30 f1 c4 8c 39 61 c4 35 bc e0 28 9f f6 \r
+2e 21 bf 4d 3e c8 99 c8 7e 14 c8 ea d7 92 2e 79 \r
+5e 3e 6f 41 80 c0 89 9e a0 \r
+\r
+# Signature:\r
+7c 7b 01 57 f6 a5 09 09 51 09 63 28 2f 00 11 1e\r
+ea 70 19 37 54 e4 27 a0 2b 34 6f eb 68 2f 4c 71\r
+87 bb 38 1d 31 d2 3b 94 76 88 43 24 5a ad 53 61\r
+fc a4 2d 8b 28 4c 8d 92 e6 fb 99 2f a7 71 2f a5\r
+a9 31 55 df 02 0d 30 0a 3b f8 98 86 66 8c f3 7b\r
+d1 3b 55 0a db 2d 2a 86 c6 9d aa ac dc 50 30 dc\r
+84 34 3c 8b 49 34 f0 3c dc 0e ef 0f 6c 1e a7 ec\r
+09 62 00 79 03 b4 48 21 7d e9 3b 75 07 54 9b 2e\r
+\r
+# PKCS#1 v1.5 Signature Example 6.13\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+32 a1 2e 0c 67 0e d2 15 ae 54 49 a0 91 7a e9 5e \r
+23 db 80 3a d2 8a 18 42 ed fa 90 bc 40 5d d8 9a \r
+1b 46 8a ce bd 08 fe 9c 69 3d 8f b1 05 e8 22 2e \r
+b5 7f 79 e4 b2 27 00 e0 7f 27 6d 4a ec c7 a1 5f \r
+b7 47 33 06 56 27 b8 79 b0 16 ee d4 ab 4a 1c \r
+\r
+# Signature:\r
+85 b9 0e b8 26 51 4a 0e c0 fc 1b dc 34 86 a8 dc\r
+8b 0f 26 3e fe 57 cf 17 50 a4 2a 6b 5b 99 72 64\r
+fa 61 78 64 83 7e 63 9f 45 d9 20 58 41 cd c1 34\r
+ab ea cf 6e e0 ec da 09 b9 8d 76 9f 51 f3 94 7a\r
+33 58 7f f0 c8 dd 01 b7 f6 b2 4a 2f bf 29 c9 ff\r
+f7 37 ee e5 6a da 2c eb 74 6b 02 5d 95 65 22 d9\r
+20 d1 2d dd 13 db a0 8b 20 e1 ee e1 3a 8b 25 80\r
+e5 92 c3 4e 39 33 37 66 11 5a 23 b9 d0 0e 2a 42\r
+\r
+# PKCS#1 v1.5 Signature Example 6.14\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+bb da 73 cb e2 bf f7 ff 53 62 eb e9 32 c0 a0 dd \r
+68 ac 84 ee 99 8f bf 59 a2 a9 26 55 20 32 31 63 \r
+b3 0d 9e 70 08 b9 4b 0c 0e bc 5f 6c 4c 97 3c 13 \r
+ff 15 3d 31 69 0c 3c 95 ab 23 1f 0c 9e c9 98 fb \r
+fc ad c2 8b 2d 7f 06 50 7e 17 d2 1e 82 da \r
+\r
+# Signature:\r
+26 f9 52 b6 57 fd b9 a1 1d c8 43 79 0c 9d 2a 6a\r
+51 c9 76 10 1e fb 82 d0 53 60 67 62 ab a3 3a f6\r
+28 0b de 38 15 e0 87 4d 60 78 75 38 42 e5 b1 c9\r
+0c f7 99 12 20 fc fa 62 28 49 43 69 0c 30 1e 9f\r
+c6 e4 79 af 68 b9 69 47 85 be 40 d4 69 86 a6 2a\r
+12 1a a9 ad 0d e9 69 52 1f 1c b8 e7 c4 bd 70 c7\r
+c8 cd 7a 9d 13 54 e7 d0 aa 0d 85 d6 d7 aa 00 e4\r
+64 90 26 d6 f0 70 f8 b3 c2 7c 98 55 6b ea a4 c0\r
+\r
+# PKCS#1 v1.5 Signature Example 6.15\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+2c 32 5d da f6 52 6a 1e a3 51 8e e5 e5 40 7f 03 \r
+90 e0 eb aa a5 f4 72 a1 e9 ab 46 f7 46 d7 1b a2 \r
+e2 17 fa a8 17 99 bf 35 8f 95 e9 83 08 27 0b 18 \r
+a0 01 99 29 a2 88 d0 c9 56 e0 bf 17 c5 19 8c eb \r
+2c d9 fe 40 d7 02 a4 4e 56 45 ec a5 b4 39 ab ca \r
+7b 2c 6f 95 ac c3 c2 c3 65 19 5c 79 5e 91 d6 3b \r
+3c 09 33 24 4f f1 25 63 af 66 22 a4 0c 74 15 db \r
+60 a7 8d ca 02 60 25 14 39 53 8d 38 aa 38 28 9d \r
+92 88 86 ab 12 87 36 a6 a8 73 9c 14 55 c4 84 9f \r
+2d 54 56 45 37 93 \r
+\r
+# Signature:\r
+6d 1f 20 3d c3 ff a7 a3 34 d3 1b 9a 75 e0 12 58\r
+1b 8d 62 b2 bf 73 80 0b e5 1d 02 65 33 99 83 18\r
+c0 ca c9 2a 02 d4 6d 75 9b f8 0a 41 da a0 a6 a2\r
+9f 4f a0 bb 60 66 4c ac ad e2 4a 65 cb 47 65 11\r
+09 be ec 82 31 91 95 25 d1 47 32 68 74 55 78 db\r
+9e 30 64 10 8a e4 6a 48 70 f1 80 66 78 9b 03 66\r
+a7 d0 ce 37 e0 30 b5 89 46 ec 8c 1a 14 11 54 db\r
+0e 26 1b ef 8b af 2e 9f 65 fc d1 6b 7d 57 97 b6\r
+\r
+# PKCS#1 v1.5 Signature Example 6.16\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+29 85 e8 b5 50 81 2f b6 6c 18 f8 0e 6f 09 2a 94 \r
+5d 09 15 83 86 1b 62 5d 1e \r
+\r
+# Signature:\r
+2e 84 30 13 cd 5e 79 5e 21 66 c8 e9 1b 06 c3 13\r
+1d c3 a5 e1 21 36 d7 16 0f fd 11 bb ef cf 6a b6\r
+40 e0 5d 76 e0 c6 1e d3 06 f6 08 6b bb 56 7c a8\r
+7e 40 c6 92 4d 5c 84 a6 ce 28 a8 39 50 bd 4b 84\r
+e2 7f c5 06 9f d0 62 4d 50 ea c2 4a 94 11 b5 f7\r
+67 85 d9 db 5d a3 0f 42 56 95 b0 19 b8 4c db b8\r
+25 bd 46 e7 35 2e 08 f1 14 c8 7b 06 6f e4 3d 10\r
+56 a2 c6 10 ce a7 e3 d3 dc 98 bf 44 97 eb 4f 13\r
+\r
+# PKCS#1 v1.5 Signature Example 6.17\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+77 78 8e 83 8b 83 4e 8f 4d 04 5a a8 94 b9 0a bb \r
+85 94 0c fc 58 d7 72 5e 7f 37 3d a5 54 71 37 c6 \r
+0b ea 75 1e 01 42 bf 9a 6f 46 49 ae b5 46 ed 56 \r
+0c c4 ea 15 62 d4 a5 fa 3e b1 b1 14 77 a3 05 1e \r
+24 c6 06 b8 a7 1c 1a 77 4b dc f1 a5 31 0f ed 55 \r
+59 23 73 0f a8 af 4c 15 80 0d 36 2b 37 ad f1 4f \r
+7a fc e7 8e fa 6b d8 93 56 3e fe 0b 3b 82 8e bd \r
+49 9f 12 a2 fe 33 2b fe 46 dc bb 31 4b bd bf 69 \r
+08 7e 2a 66 5d f1 10 83 5d e5 5d 61 e5 c2 02 5f \r
+d8 db \r
+\r
+# Signature:\r
+8e 5f 33 53 c4 9c bb b2 ea 69 6a bb 57 40 ba e0\r
+15 ef fd 95 0d 56 07 13 76 05 a1 00 c4 a5 3f 1b\r
+95 17 6c af 34 9f 4f d5 88 ae dd dc f5 06 0c cb\r
+72 47 8c fb 09 85 62 f3 4d 8f 8e ba 44 6a 38 47\r
+56 5a 7b 89 55 ad 9e 0c 6e b6 70 99 e1 a4 6c 3e\r
+b2 d4 9d 90 90 ae 5f 63 e8 a0 8b 6e 8f 21 f0 03\r
+e4 51 d2 50 ff c5 a7 90 d6 6a 0e 2e 3e 28 a6 33\r
+9f e9 1d 11 29 21 f5 5d 12 30 30 6f ad 5c 01 90\r
+\r
+# PKCS#1 v1.5 Signature Example 6.18\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+1d 59 9d 76 2c d5 4d f7 0f 1a 09 83 bc 3e a2 bb \r
+ca 6f cb bd 16 26 03 ba 81 56 10 77 fd 92 84 92 \r
+5c f1 f1 b0 8b ea 1e 70 bc 59 5d f0 b3 43 b8 3b \r
+9c f3 d6 34 f9 5e 37 e8 d1 c5 85 fa b1 99 \r
+\r
+# Signature:\r
+71 74 97 a4 e6 0d bf fa 19 6e ff 75 8e 90 1c e1\r
+fe 6e 2b c7 e1 d5 3a 3d cf 62 25 67 1a f1 46 c5\r
+de e2 00 a8 14 f4 89 8d 16 a9 b5 f5 08 dc 9f de\r
+4d 64 07 0e 55 ae 3b 1f df 79 19 f4 2b 7c ff b7\r
+e9 28 c4 ca eb 55 2d c6 fd 08 18 34 b2 dc 2f ed\r
+07 e7 e6 27 d3 4b 39 10 ca 71 3b f4 15 4e ff 99\r
+96 57 36 15 18 fc e5 a8 f6 42 dc 9a 18 a6 6e de\r
+22 19 0f 60 aa f9 58 d6 24 6b 00 a0 32 c3 98 41\r
+\r
+# PKCS#1 v1.5 Signature Example 6.19\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+da 51 00 86 60 b6 3b 87 67 e6 5f 12 c6 30 8e c1 \r
+8e d9 57 5a 42 6b c5 fb e6 60 10 ec 3f 01 17 5f \r
+fa 57 41 ea cc dd b0 2f ce 7b 2e f7 78 44 40 d7 \r
+2d 37 52 20 3f 53 4e 52 fc f6 26 a8 c5 96 51 3f \r
+41 90 64 bb ba fd e7 f8 d6 5f 30 d7 ca 68 71 89 \r
+70 de 71 fc 8c 0e ed 4d a0 0a 4e 1a b5 41 02 d9 \r
+d1 65 bd 7c 54 af 5c 31 c1 5c 05 bc a5 5b 6f dd \r
+19 10 86 a5 3e 52 96 f4 84 c3 47 d8 fb 94 5a 10 \r
+c4 94 49 75 27 32 f6 2f 34 c3 25 15 58 86 51 13 \r
+79 19 28 5a 2c 8e f7 b4 aa 0e 69 0b 0b 65 43 7f \r
+f8 d5 6f c9 5d cb c3 e7 8d \r
+\r
+# Signature:\r
+32 67 72 28 ff 08 c6 6f d0 3b b3 1f 0d fe 89 01\r
+53 b3 44 6b 57 eb 84 ef 39 56 20 8f 72 a0 7c 87\r
+67 e6 bf 09 f0 38 bc f7 f7 35 ee 24 a1 f6 40 a1\r
+89 8d 40 9e b5 3a bd b6 93 94 27 34 56 9a f7 1a\r
+4c d9 9a 65 20 ba ca 5d 42 86 b1 99 cc 67 62 8e\r
+2f ca d2 96 a3 0e ca 49 9e b8 80 50 7f 6a 37 44\r
+0b 61 c1 28 4c 40 3c 41 32 1b 99 05 3f 5d 69 72\r
+8d 5b 97 35 76 cf 04 74 83 33 d8 08 d5 e6 8a 8f\r
+\r
+# PKCS#1 v1.5 Signature Example 6.20\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+8c d2 da d2 a5 d5 f9 fa a0 7e 24 a9 6e 86 f9 b0 \r
+ac 8b 40 22 2a c9 fb 8a 8a 15 72 7c f2 f5 3e 68 \r
+4a f4 ab dc 98 68 a7 25 3b 25 b0 96 bd 70 1f 46 \r
+a9 43 \r
+\r
+# Signature:\r
+8f 03 22 eb 2c 54 05 24 85 a6 45 49 ad ff 2a 36\r
+31 db 65 76 fc 0c af b5 51 69 7d c5 35 6f 02 e0\r
+93 cb 69 17 3a 7e 83 55 a0 da de bf a5 3c b2 90\r
+7f 00 2d b3 a3 e3 87 da 05 7b 7c 73 55 16 43 84\r
+3e f5 74 48 1f 80 74 15 17 7e 4b 34 c2 5b d5 5f\r
+4c 02 fa 0a de a3 a9 58 04 65 f3 58 c0 05 96 b5\r
+cc 06 2d 58 92 30 3e 1a cc 11 3c 3b 4b c7 4d 42\r
+e8 58 02 90 78 48 2a 1b 23 4a 62 5b 04 28 44 06\r
+\r
+# =============================================\r
+\r
+# Example 7: A 1025-bit RSA key pair\r
+# -----------------------------------\r
+\r
+\r
+# Public key\r
+# ----------\r
+\r
+# Modulus: \r
+01 69 34 cd ff 48 50 b6 00 2c c0 f0 f4 01 0a 32 \r
+c6 55 e5 cf 6e 7c 89 93 7f d7 55 ef 6a be 37 9d \r
+ad de 70 cc 21 77 51 f1 4c ba 6d 90 fe 52 dc 0a \r
+f5 8b 25 2f 26 bf 72 da 57 9f da f5 7d dd 6c d6 \r
+02 18 79 94 9a 02 76 b4 43 3f f0 1e fc cc f3 5a \r
+11 e7 c7 7b 38 c1 8c ca 94 ae 01 2d 0f 37 04 21 \r
+49 1c 52 ad 15 ac 76 b1 2e cd 21 8f 52 e7 57 86 \r
+6e 08 9d d8 ad bb 48 e9 ba 89 43 36 c5 75 c4 06 \r
+55 \r
+\r
+# Exponent: \r
+01 00 01 \r
+\r
+# Private key\r
+# -----------\r
+\r
+# Modulus: \r
+01 69 34 cd ff 48 50 b6 00 2c c0 f0 f4 01 0a 32 \r
+c6 55 e5 cf 6e 7c 89 93 7f d7 55 ef 6a be 37 9d \r
+ad de 70 cc 21 77 51 f1 4c ba 6d 90 fe 52 dc 0a \r
+f5 8b 25 2f 26 bf 72 da 57 9f da f5 7d dd 6c d6 \r
+02 18 79 94 9a 02 76 b4 43 3f f0 1e fc cc f3 5a \r
+11 e7 c7 7b 38 c1 8c ca 94 ae 01 2d 0f 37 04 21 \r
+49 1c 52 ad 15 ac 76 b1 2e cd 21 8f 52 e7 57 86 \r
+6e 08 9d d8 ad bb 48 e9 ba 89 43 36 c5 75 c4 06 \r
+55 \r
+\r
+# Public exponent: \r
+01 00 01 \r
+\r
+# Exponent: \r
+0d 17 19 e5 bd 47 6d 87 c7 ec c3 1e b8 ab 42 5d \r
+4f e4 c8 f5 c7 ae 23 0a 10 47 55 3f fb 53 9f d3 \r
+85 5a f5 a4 3b 2d dd 4e 95 a2 b3 0d 40 7a a8 81 \r
+59 bb ad 2a 87 3d 80 93 b4 8a 4b ce 20 ad 99 26 \r
+25 3e d3 39 ac 3b 54 3f c7 42 96 95 33 8d b0 bc \r
+1d c3 68 6c fd 13 9b b5 b2 87 36 bc 16 60 a9 53 \r
+48 fc 91 c3 25 d0 3a 7f b2 16 d2 d9 cd 93 64 de \r
+4e e7 d2 11 9c 3b 0f bb a8 a7 1f 0d 3f 5a b9 b9 \r
+\r
+# Prime 1: \r
+01 58 c0 24 6c d1 69 fc 59 3b 25 8b bf 45 23 ab \r
+2b 55 c4 60 73 3a 7f b4 69 10 90 77 b3 0e 4d 35 \r
+f2 1a 35 b1 f4 1e 42 04 e8 1d 2e 4c 46 3c 24 11 \r
+39 34 09 8b 45 2d ab 4b e1 59 97 20 ef 68 72 83 \r
+3d \r
+\r
+# Prime 2: \r
+01 0c 38 2d ea 5e 7d 79 29 8c 64 1f b2 e4 fa 09 \r
+f2 4f 6a 7a 45 9a 88 2c 87 a8 03 49 5f 05 6e cc \r
+3b 43 c5 37 73 1f 85 ef c8 fb 53 87 ad 67 31 a6 \r
+43 53 32 15 de cc 38 7d 96 76 12 2c 17 0e 91 e0 \r
+f9 \r
+\r
+# Prime exponent 1: \r
+d5 78 dc d5 38 f2 fc dc 30 00 b6 c0 f0 49 fe e2 \r
+ad 90 14 fd 24 fb 10 b6 82 18 42 d6 70 03 a5 64 \r
+cd 8f f4 2a 2a 56 4c fd 81 9c 3a 84 bf 16 c2 47 \r
+7e 8e 6e 5b 9e c4 d4 0e ad 50 24 87 ba 50 36 2d \r
+\r
+# Prime exponent 2: \r
+88 88 dc 8e ae 94 ee a5 80 ca c2 fc 1c e5 4f 44 \r
+e2 ba 50 0d b8 71 53 41 a6 fc 2d 50 4a 82 b1 42 \r
+05 e8 91 a6 6f c8 8d 5c 60 db 8f 78 6c cc 70 57 \r
+5b 35 66 be a8 74 a5 31 7f 5f 16 c4 91 ed 1e 79 \r
+\r
+# Coefficient: \r
+17 b0 d6 23 36 19 1e 63 bc a1 59 93 4d 06 16 cb \r
+89 97 40 9c bf ca 37 05 69 5b 14 fb 64 a0 81 c1 \r
+c9 f5 86 19 3e 52 3a bd 0b eb 8d 72 0c fe 53 7d \r
+fa 1e de c4 a6 64 37 d2 41 19 6b 7a 2c e5 56 c4 \r
+\r
+# PKCS#1 v1.5 signing of 20 random messages\r
+# -------------------------------------------------------\r
+\r
+# PKCS#1 v1.5 Signature Example 7.1\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+35 39 99 7a e7 09 fe 32 c1 03 6a 13 27 57 f2 a1 \r
+66 7a 91 cc 83 be 73 3a ad a1 bd d2 17 92 4c 9a \r
+2c 9f ed 1f ec f6 1d 1c f7 9d ae 9a 83 f8 ae 3f \r
+4d 05 1b 34 fb b5 59 cb fd a4 92 f1 d8 3b 8b eb \r
+a0 45 d4 ae 1c 8f ea 15 b7 57 7a 1b 8a 3f 55 ba \r
+c1 72 7e dc a7 f8 f5 2c b4 ba 61 ca f1 fa 8f 8f \r
+d9 aa c7 79 09 5c a8 4c 79 91 52 9f b8 06 99 d0 \r
+d4 68 8d fd b1 42 ed 61 a9 5b 89 ce 33 06 bf 97 \r
+80 e1 b9 1b 84 8c 8d 20 03 97 0e 52 70 2a 1f 61 \r
+2e 2f 40 17 cf e0 a9 1d b9 e4 6d b9 dc \r
+\r
+# Signature:\r
+00 08 0f 77 0a 2d 1f 6a bf 5f 22 1f 62 e1 66 ab\r
+d7 9d 06 c7 b9 a8 78 d6 1b 80 fc 4d 5b a2 90 b2\r
+3a ba ab 51 8f 09 44 7e 45 ae e6 f3 bd 06 10 24\r
+44 36 a4 73 01 60 e6 a6 72 11 0c 01 ae b5 62 4b\r
+71 8d c7 c0 86 1e 58 6b a8 b6 0a 29 d6 a5 75 5c\r
+d2 cc 50 85 99 c6 e2 8d 73 55 b2 7e 40 b7 40 c6\r
+fb bb b1 a9 18 23 b1 c1 24 2b a6 93 d4 52 69 51\r
+47 db b2 3e a8 9c bf 11 eb 8b 07 ec 3a 02 7b 0f\r
+17\r
+\r
+# PKCS#1 v1.5 Signature Example 7.2\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+31 80 08 87 3c 4c fe a7 12 5e a6 fd 52 15 df d9 \r
+8d 5c 5e 73 32 3f 03 f2 15 c6 9c 8f 2b b1 98 3b \r
+59 df a6 e9 9a dd 30 69 66 f3 11 0c 16 1c a2 26 \r
+24 b8 80 70 26 5b 8f 3f 9d 5d f7 29 91 e7 9e 5b \r
+18 9a a3 d9 cd 9b 20 47 cf a6 1d 01 23 4b 23 3d \r
+36 ac 4b 96 ed 08 16 48 87 74 90 fa 4a 80 ec 4c \r
+bb d9 d2 e0 06 2c 39 e1 85 3a 0c 38 34 4b a8 58 \r
+bd 1d 99 5f 6c aa 28 bf 90 40 26 26 8a 99 72 11 \r
+43 c8 6a 43 43 ba f8 9b 6d 55 07 64 25 1f b0 7d \r
+16 7b 4c 4b 1b 70 f9 9e f5 fe 50 e6 2e 54 13 fc \r
+ce 0f 99 59 c2 a3 78 c4 1d 6f 42 36 17 8b 14 b8 \r
+91 9d b1 d0 \r
+\r
+# Signature:\r
+00 6d 54 7d a4 ed cb 10 33 15 cb 8e 4b 66 9b ee\r
+96 aa 21 56 23 5c a5 c3 e3 1b 24 a1 5a 13 92 e4\r
+94 04 7f ed cb 70 81 90 7c 56 17 a8 aa 18 d1 01\r
+b0 53 2a 36 32 45 19 23 c4 8a 75 b0 ec 21 76 cb\r
+98 e5 ce 51 58 8b cf 86 8e 29 d5 d9 69 4f 00 ae\r
+2c 92 4e 73 d2 e6 dd 14 4d 24 fa 45 d0 12 06 a3\r
+f5 d9 36 41 3c cb b7 4b 0e 2d 04 7d 82 b6 00 b8\r
+9d 51 59 4f ce 7d e6 bb d9 5b 97 fc fe c5 98 c4\r
+eb\r
+\r
+# PKCS#1 v1.5 Signature Example 7.3\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+7f 83 b3 e0 54 c0 24 82 50 78 dd 9f 04 0e 1d 09 \r
+05 82 00 c9 75 7b 76 fb 37 2b 8b 52 66 b9 dc 26 \r
+9e c7 56 9d 00 \r
+\r
+# Signature:\r
+01 34 ee 21 51 51 e5 32 50 f5 a0 01 6a cc e3 70\r
+1e 2a 58 dd aa d6 cc 36 9d f0 dc d9 34 6a 2b 53\r
+0f e3 71 5a fe ff 1e 9b cb 72 08 31 c1 25 58 97\r
+0a 9e 03 89 60 04 f2 87 ad b8 21 f3 17 cf 63 93\r
+00 ca e6 e9 09 e9 1e d2 a3 ea cb 99 52 a7 cc 54\r
+94 76 52 64 24 79 51 d2 8c 16 af 03 e2 4b 80 ee\r
+32 b0 b6 2e df 10 d7 00 91 92 71 35 f0 5a 88 9f\r
+2f 60 56 b9 5c dd ac e4 7c 69 f9 73 08 c0 df 2e\r
+ba\r
+\r
+# PKCS#1 v1.5 Signature Example 7.4\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+17 eb c1 50 07 bb 5e 4a f9 17 20 1c 3b a3 84 92 \r
+65 89 c3 15 9a 89 d1 ab d4 c2 c9 86 fb a0 37 9e \r
+8a f1 29 75 c5 d0 31 d1 bf c1 5c a9 17 36 f0 7b \r
+17 66 d8 b8 a7 2d b1 0c 26 8c 98 fd 7a a1 1e 29 \r
+99 f0 6d 86 12 7c c8 89 cf 15 0d cc 73 8f 6a b8 \r
+ba ae 94 3c c6 06 dd 4d 9e ce 70 1a 4a 7b 10 1e \r
+35 1d ee 20 b1 5e bc 55 25 6d b3 ce 46 a6 bd 50 \r
+61 12 5b 62 b9 95 e9 70 d1 6f 7c 9a 8f c1 57 ff \r
+68 ce c7 e6 0f 60 8f 66 26 dd 39 52 8b 24 09 aa \r
+2f f9 32 fc 11 9b 2a 7a 81 77 2a 57 6b 3d 50 a0 \r
+d2 87 a7 fa 2d b8 7d 2b 92 e1 c9 61 a7 0c aa 44 \r
+d8 81 37 b9 50 e1 00 71 1a 98 54 ad fa fb 49 4d \r
+34 e2 86 06 a2 7c \r
+\r
+# Signature:\r
+01 05 da dc 99 c5 9b 5e 3a c5 54 b1 b5 e7 48 0e\r
+5c 0a 62 c7 ab ae fd ac f4 42 6e cc fe 68 6b 8a\r
+aa 1c a4 f5 1e ba bf fa 77 d9 98 03 e7 ee 8d 20\r
+d1 20 4a ad 8c 67 38 5d 07 44 c8 54 de 2f 99 7a\r
+56 aa ae 04 ce cc 65 65 35 c1 6b b2 14 5d 18 01\r
+81 25 94 a8 01 3b 0e b5 4e 7b f6 5d 38 42 00 54\r
+ec 46 da c7 1a 12 52 08 b3 02 21 4a 7c 9b 3a 92\r
+ca 9b f7 37 39 c7 66 30 9a f8 03 ed de 7c 54 d2\r
+46\r
+\r
+# PKCS#1 v1.5 Signature Example 7.5\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+6a 52 ba 19 0e 44 ca 0f 10 70 02 10 48 76 2f 3e \r
+79 ed 51 c9 4f 6d c1 a9 f1 ed 78 35 2e f3 79 aa \r
+49 b3 a9 38 7e 3c a7 a1 96 f1 05 dc ab 18 50 6f \r
+29 4a 69 \r
+\r
+# Signature:\r
+00 0b 70 e6 01 c5 ec 58 68 4e 09 18 ba 7a 53 9e\r
+9d 2d d2 9b 01 a3 f4 53 ca d4 a9 a4 0e 50 f5 db\r
+df 72 c1 10 52 f2 0b e4 4a 5d 38 51 b0 1f d0 9d\r
+9c 92 08 47 0f 0a 4a 95 03 5e 98 9e ed 7d 6b 06\r
+2e 13 f4 99 5b f0 93 0b 4a 3d 9b 8a 9e d7 5e 33\r
+88 6e 4b 19 4a b5 cc d6 b4 12 95 9c b4 f5 49 8b\r
+d3 2f 66 85 46 be 2c 00 7a e8 de 5d 98 97 7b 94\r
+b1 7e 12 63 88 4b 54 e7 84 b3 8f c1 12 b8 cb dd\r
+56\r
+\r
+# PKCS#1 v1.5 Signature Example 7.6\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+bb e0 b9 de 2b 5e 9d cd 31 67 42 94 3f 92 19 b2 \r
+4f 66 a3 8f 9d e7 09 46 4f a5 49 5d 79 4a 63 7b \r
+9e bc 06 77 62 da 7a 6e ef f0 98 fa 44 f3 cc 36 \r
+f2 cc ef 67 fd 46 c5 9e 24 73 8c 81 0c 69 ed dc \r
+d9 0c c7 d7 1a 4c 3e 69 3b ca a2 8a 53 3d 90 4b \r
+41 ce d3 39 9b 4c 76 47 e5 ec 4b 3a d9 03 87 0f \r
+5b 5f 8d 6a 8d 81 28 ae 23 81 ce c8 6c 4d 85 b7 \r
+8a 45 1e 1e a9 7e 33 93 ff e9 97 e5 46 b0 9c 8c \r
+f8 22 52 b3 3f 74 5f ee d4 13 32 06 51 8e 2b 88 \r
+03 19 dc df 91 06 71 8a fb 01 6c 51 4b 38 05 32 \r
+65 bc 98 79 10 0e 47 b0 3e ba 03 68 f0 9e 29 23 \r
+ac 6f 40 a0 4b 75 05 4c d5 05 bb c8 96 5d 64 9a \r
+1b ae 7b b6 64 3c b7 41 95 e9 1c 51 f4 18 3d b2 \r
+d7 38 ce 60 35 50 d6 34 e6 dd 4f 27 f4 da ac 61 \r
+56 cf a7 e2 46 8b 5d 6a eb 78 29 09 \r
+\r
+# Signature:\r
+00 c2 e0 74 df bc d0 e7 3a c0 02 1a eb 99 33 10\r
+6b 20 1b 93 c1 7a 7b f9 33 56 d2 91 fb 4a ae b3\r
+d1 31 63 00 a8 de 7b 07 e3 d7 79 bc c2 99 e5 2b\r
+6c b0 30 88 01 6d ae b8 41 38 2e b3 43 5f 2e 03\r
+eb f2 2d c0 86 fb 20 eb e5 3a c5 45 90 24 97 63\r
+a2 65 5a a7 eb 0e 7d 38 64 93 6b 34 00 6a 6c 4f\r
+a0 2d 9c a1 04 ad ad a6 aa 01 b9 77 b6 de f2 75\r
+06 08 a7 8f 3e d8 3a d7 12 a7 a1 b0 fb de 7c 7c\r
+8d\r
+\r
+# PKCS#1 v1.5 Signature Example 7.7\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+83 a4 8b ff 88 6d 1d 68 f2 92 0a 0e cf f2 98 32 \r
+1a 96 f5 ca dc df d8 be 16 b5 0d 34 d6 7d 94 cd \r
+b1 a1 bf a0 ea e2 46 99 b6 63 c7 ba 3a 08 a3 90 \r
+f7 22 58 84 85 67 94 d1 80 c5 46 ca c0 6e 41 18 \r
+\r
+# Signature:\r
+01 2e 81 bd 38 63 50 65 bf 65 54 33 6b 00 d1 06\r
+18 33 05 53 e0 e8 08 78 aa d3 55 f0 0d 59 40 d8\r
+ba 45 01 c5 c4 9f 10 16 d5 f0 e6 a7 3a 4d 9f 87\r
+40 d2 cf c2 5e a2 48 df 3f 7b 1a e8 fc d2 6b d5\r
+62 e0 f6 eb 77 7f 46 d7 57 30 69 db 89 07 c0 21\r
+b6 45 d3 b2 40 58 47 51 99 a9 1b 55 72 d8 ac 87\r
+f8 3e e6 af 5c f9 e1 71 a8 58 f6 0d 2b 81 40 f5\r
+2d ae d6 84 42 22 8b 4f ff d8 de 40 07 8d 3d e8\r
+cb\r
+\r
+# PKCS#1 v1.5 Signature Example 7.8\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+18 \r
+\r
+# Signature:\r
+00 f2 c2 99 02 4a b7 bd 25 2c 69 46 be a1 0d c0\r
+53 97 38 98 bd 5f 0e 3c 94 60 e6 fe 09 d7 d1 91\r
+e7 1b f7 9d 43 6c aa 84 e9 86 be 3f c0 98 19 c0\r
+80 e5 6a 08 5c f4 24 41 4a f3 fc 70 07 cf 1a c3\r
+6f 1c f8 63 57 80 b5 56 8d 73 4a d6 d8 1a 2b a8\r
+eb 18 8b 29 46 69 d8 71 ca 40 e6 08 f0 ed 33 d5\r
+69 0c c6 15 70 c5 b8 47 eb db dc dc 4f a7 8f 42\r
+9e fc e1 3c 67 47 e5 4d 6f 26 1b 04 55 d6 dd 65\r
+c2\r
+\r
+# PKCS#1 v1.5 Signature Example 7.9\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+04 a6 e2 4b 93 c2 e5 f6 b4 bb e0 5f 5f b0 af a0 \r
+42 d2 04 fe 33 78 d3 65 c2 f2 88 b6 a8 da d7 ef \r
+e4 5d 15 3e ef 40 ca cc \r
+\r
+# Signature:\r
+00 ec c8 95 fb d9 47 e2 df c4 7c 03 ba 2e 99 3d\r
+1a 14 3a 7a 6a d6 3a 91 6e d5 44 83 ce 26 38 9f\r
+89 d5 80 f4 ed bd d0 b3 7e 08 ca aa 5a 0c 1e 52\r
+6e 1e 9a 1a 8c 0d c9 cf 50 ed 77 de 26 76 46 0d\r
+28 8d ce 56 5f 12 8a 26 6e a2 9b 4e cc 32 9a 94\r
+cc 25 23 96 dc 50 d5 c0 a1 3d 80 93 81 fa d8 8a\r
+07 89 ad 4f 56 aa 77 e5 44 ec 25 70 af 99 18 b7\r
+f7 41 b4 86 ca 50 b3 38 4a d1 12 40 60 59 16 85\r
+a1\r
+\r
+# PKCS#1 v1.5 Signature Example 7.10\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+99 65 bd a5 5c bf 0e fe d8 d6 55 3b 40 27 f2 d8 \r
+62 08 a6 e6 b4 89 c1 76 12 80 92 d6 29 e4 9d 16 \r
+9f 16 fe 51 c4 c0 8a 64 94 b5 00 73 62 20 91 a3 \r
+82 2e a5 7c 32 8b d9 b6 9d 24 65 a2 12 2a f1 78 \r
+bf 6b 1b e3 07 ee 4c 31 47 9f fd 9f 4d 11 f3 3e \r
+a2 0b 7a ec e8 12 ca b4 ee dd 46 99 31 51 d5 68 \r
+ff 64 a1 67 04 a5 5d 95 0a b7 79 1a a2 3b 26 a0 \r
+a8 af 88 0f 6f 80 56 bd d2 06 83 8b 44 c6 07 b6 \r
+61 b4 f1 dc 36 21 06 5f de d3 db 6f 9e 3f 2d c8 \r
+f4 00 ef e3 c2 af a6 c0 27 99 40 57 6b b0 5e 39 \r
+80 4b d3 50 5f 4b d2 82 52 91 8b 28 e7 4e 05 8f \r
+24 f2 7e f0 db 3d 0d cf 9e b2 9d 41 ff c1 10 07 \r
+ce 86 b9 82 e8 9c 03 75 bd 99 76 a5 af 13 1a 61 \r
+4d 28 08 ba 25 07 9d 97 7f 0b 23 97 96 ba 6b 1b \r
+cd 5e 85 5d 96 \r
+\r
+# Signature:\r
+01 56 62 e3 0e 79 0e 37 86 83 81 b4 f6 77 a2 ae\r
+d6 b2 ac c5 64 49 17 31 82 49 10 ed 80 ad c4 77\r
+15 9c 88 61 8c c7 d0 be b0 49 b1 aa e7 4b 17 21\r
+e9 0b a7 f7 b0 ea 26 bf 33 ad 04 f8 6f f3 14 38\r
+97 bf 0d 4e b4 5e b7 de b5 44 11 ba 96 80 aa b1\r
+3a db fc f1 8a f4 6b 87 fc b1 46 1c 26 20 6a 95\r
+3b c3 cd bb 31 e2 96 ea 09 02 4b c5 c7 b6 2d e6\r
+c6 9c 14 bf cf eb 56 39 1a 9e f5 8c d8 05 eb 63\r
+1f\r
+\r
+# PKCS#1 v1.5 Signature Example 7.11\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+71 c7 b1 8b 4a a8 ea 53 89 ad 78 49 23 28 65 be \r
+2a 93 e3 47 a1 68 d2 5c 6c 6e a2 43 9c 1c c8 0b \r
+b0 b7 22 3b e9 c8 93 71 22 84 5b b0 a3 9c 02 5c \r
+43 75 9d ef e6 e4 e8 eb 3b aa b4 f1 eb dc a2 c8 \r
+ad 12 a4 65 a3 0f 8a 65 25 b1 20 ef 6a ae c9 bd \r
+db 45 cd 42 c0 15 0c 40 7b 04 8e df 65 19 94 92 \r
+f2 07 ca 01 aa a5 54 3a f3 8e e9 8d 53 bd 10 d8 \r
+ee bc 3b 64 97 7e 75 75 1d 74 50 dd b1 c0 e1 fc \r
+24 da 17 18 81 1f be 9b 0a bf c3 ca 31 e6 99 5f \r
+c7 34 90 73 e2 17 b3 7e 23 c5 f1 7a 8b 7a 3f 00 \r
+48 6a 37 02 b9 51 0d 6f 05 1b 27 61 71 6e 32 c6 \r
+2b b5 93 9b 2f b1 1a cb 1c 83 \r
+\r
+# Signature:\r
+01 3a b6 3a b1 83 35 3a 23 5f b8 93 ab 4c 35 d6\r
+40 9c 21 84 9d cf cd a3 bf da 14 29 fe e7 42 a7\r
+d8 16 0f d3 c8 3b 38 53 a3 33 f9 51 53 9b b5 77\r
+1f 4d 0f e1 3a de b6 4e 40 30 b9 2e 8b 08 13 eb\r
+52 b1 aa 33 bd 94 c5 b8 bc 1b bc cd f6 c1 df 0b\r
+a6 70 71 7c 0c f6 fd 48 5b e2 fe 9e 16 81 3b e8\r
+cd d5 80 e6 10 86 67 5e 31 83 1c 92 4a 41 d4 67\r
+1a 95 d8 35 e3 fc a4 95 e8 86 58 d1 e5 70 e6 28\r
+c7\r
+\r
+# PKCS#1 v1.5 Signature Example 7.12\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+0b eb 19 b5 62 92 8c 27 1b b7 06 18 9e 43 cf a5 \r
+7b e7 6b 2f 7a 83 e0 2a a2 cc b0 37 c0 f4 f7 f7 \r
+31 62 d6 c2 6f 70 de 97 18 21 e7 b9 66 5c b9 31 \r
+bb 0e ac 82 0b f8 59 98 4d b4 be ef ef 4a b8 8e \r
+91 63 1c 0c d3 1d b7 f9 35 8a 5a a1 df f2 40 6b \r
+45 f9 bd cb ef 20 d5 5c 28 2b ae 5c fb 61 06 02 \r
+3b 56 33 c0 51 af 17 e7 29 bb 07 c9 af 6d d2 \r
+\r
+# Signature:\r
+00 d6 3d a4 d5 d3 e2 28 4a 19 2a 6a 9d a3 f1 a7\r
+d3 fc c1 64 b9 fc 3d fd 74 52 b0 2f ed 6e f1 be\r
+5a d2 a7 69 ec 9c 36 05 9b 71 91 1c cf 7a b7 1c\r
+e3 09 87 ec 47 bb f5 5e 6d 46 30 d6 23 42 b3 15\r
+50 48 ee 0b f4 3d 24 fe 69 ab da c1 2f 79 4b 67\r
+98 bd 1a 7c b4 89 a6 4c e0 82 25 4c 3d 92 f4 75\r
+56 6b 56 40 0d 96 20 cd fd 63 fc 17 c1 93 c4 25\r
+d7 ed e9 41 f7 6d a1 e3 45 af 0e 2a 8b 88 44 c7\r
+40\r
+\r
+# PKCS#1 v1.5 Signature Example 7.13\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+02 87 ab e2 67 0a 45 f8 77 90 48 f5 \r
+\r
+# Signature:\r
+00 42 f4 14 78 2d f6 5d 93 47 bf 1c ad 53 48 53\r
+74 6c c0 b8 53 c1 c5 26 f9 17 14 45 fc fa a4 99\r
+1a 70 f5 a8 44 5b cf 41 14 f0 7f c8 35 4c 84 a9\r
+3b 94 37 33 d3 93 7a 59 88 3b 89 6c e6 5f db 16\r
+5b 1e 30 55 37 4c e2 42 e1 26 8c 16 41 cc 44 3b\r
+b9 e7 da 7f 71 f3 e7 f6 31 3f 23 9e 62 00 e7 9a\r
+1b e3 ea d6 c3 6e 94 1f 24 46 0b aa 57 df 63 9e\r
+57 da b3 ef f9 e7 7b 87 af 35 5b 83 da e7 7c be\r
+06\r
+\r
+# PKCS#1 v1.5 Signature Example 7.14\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+3f 49 54 2c 0e 9f 50 93 2c 0d 45 3d c9 53 20 af \r
+21 dd 2b d1 72 9c 29 f4 f0 8c 70 94 4c 2c c7 5d \r
+e9 16 6b 4f d2 30 aa 93 70 2c 5f 2c 3d 9c 29 9a \r
+35 91 02 57 00 33 54 0e b8 28 ca d7 5a 57 76 d2 \r
+e8 cb 45 61 41 a6 fa 97 bc 4e 6e 62 d3 df 08 29 \r
+82 a4 d9 8c 2d e4 41 e5 9e 93 12 \r
+\r
+# Signature:\r
+01 5c 39 93 ce eb d8 db a4 5a 36 8d d4 05 af 8a\r
+53 b9 3e 82 70 19 f9 94 e4 ed 78 2c 39 11 b9 b5\r
+80 d5 42 24 26 9b 79 97 f1 74 96 30 e5 2f 22 1f\r
+af ab 96 41 c7 81 e7 04 4d 32 56 e2 e4 4e 14 37\r
+91 72 32 69 45 18 ba 9e 71 38 da 47 fe 53 43 29\r
+b8 c9 68 9e 27 85 c0 2b 60 3d d1 60 d3 73 36 a2\r
+b0 5b e0 47 82 65 9a c0 e9 67 1f e9 32 ea 80 91\r
+d6 13 18 b2 b2 01 bd a7 9a f6 c0 c4 44 69 38 e3\r
+f6\r
+\r
+# PKCS#1 v1.5 Signature Example 7.15\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+d0 db c9 6c f9 bf b1 e3 cd 6d e2 ea a0 8d 6d 79 \r
+5b ed 81 87 ce b0 85 65 80 e4 b1 42 b9 ae 60 a0 \r
+98 cd 42 98 4e 8d bf 1d 05 a0 c0 ab 83 51 54 8f \r
+0a 13 64 6f 33 39 0b 2b b0 c8 64 b3 97 cf 13 37 \r
+1f 8b 2f 67 5a 82 e4 6b f1 6c 4a fc 60 5e e3 e5 \r
+a1 46 9c ac 51 fa 73 4b 44 65 d4 c1 3d 5b 2d d1 \r
+2e ed a5 4e 7d 08 1c d9 e3 ea af 9e 57 db 42 20 \r
+20 a0 b5 a5 ec 28 ca 43 97 7a 5d 67 6f fa b6 2f \r
+78 10 71 93 59 41 59 ce bf bd 86 26 98 19 a0 f3 \r
+41 a0 f4 12 84 dd 0a 73 ca 80 14 d2 e0 b8 01 79 \r
+c6 38 0b 40 3a fb b1 1b 42 db 34 9b af d7 57 0f \r
+be cb d1 4b d0 c2 1a d6 41 68 7a 6a c3 29 25 f7 \r
+03 1a 24 a6 56 8a b9 e2 87 eb 80 75 41 10 df ba \r
+68 8a 59 63 25 bc ac 4a 39 ce 8b 84 a4 \r
+\r
+# Signature:\r
+00 8c c8 2d 64 55 9d e0 04 0f 55 41 19 9a ef f3\r
+99 9f e2 f0 86 f1 57 ff 51 f2 22 0d b3 45 51 9a\r
+a1 14 b0 17 62 e7 0b c9 65 83 bb 38 b2 2b 3f 87\r
+be ab 32 e2 3a 3d eb db 8a 59 54 29 ff 12 fa d4\r
+95 d7 4e 22 0e 4f 7d ca 22 27 28 43 89 9e 81 04\r
+c6 9a 59 64 2f 6f a8 25 89 0f e8 13 2a 0f 79 94\r
+02 53 e5 00 7f b1 17 7a 5b f4 18 06 7e dd c8 d3\r
+2c 5e 59 35 bf 33 8f 1c 69 0e fc 80 11 dc 8c 84\r
+2e\r
+\r
+# PKCS#1 v1.5 Signature Example 7.16\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+7d f0 23 6e 87 1a 71 c3 17 90 eb 5f 01 1c 91 1c \r
+27 c6 03 73 b8 dc 9e bb 13 ac 85 ac cb 3b cb d3 \r
+b4 74 f9 78 86 2d d8 42 02 ab 20 b3 34 73 94 25 \r
+e1 b7 9e 0b b8 b4 bc 47 dc 71 53 f5 7a da 04 12 \r
+44 7b f5 a5 e6 67 34 19 ba ad 65 3e 5f 5c 39 e2 \r
+ef 7c fe 7e f4 77 8a b9 98 ca f9 7c e1 6c 58 33 \r
+27 72 dd df 82 6f 1e ec 1a f3 db 80 e3 13 75 d6 \r
+68 0a a2 54 b4 ab 6e f9 a3 ec 0e 04 03 e4 b5 83 \r
+d3 71 dd d9 6d d5 7b 2c 61 a6 e4 01 25 1a 1a 63 \r
+0d 1d dc dd 84 d9 0d 82 fa f5 a0 18 d2 a8 8e 26 \r
+58 55 e9 d7 ca 36 c6 87 95 f0 b3 1b 59 1c d6 58 \r
+7c 71 d0 60 a0 b3 f7 f3 ea ef 43 79 59 22 02 8b \r
+c2 b6 ad 46 7c fc 2d 7f 65 9c 53 85 aa 70 ba 36 \r
+72 cd de 4c fe 49 70 cc 79 04 60 1b 27 88 72 bf \r
+51 32 1c 4a 97 2f \r
+\r
+# Signature:\r
+01 45 5e 3b b2 9c bc a8 83 9b 9f 54 4d 51 47 2e\r
+bc fd 25 c2 92 27 c4 65 5d 5f 7e bb d8 3c 48 e7\r
+64 3e 7b 59 4d 6f 7c d5 f6 bf 9a 40 b0 5c 4a 05\r
+cb ee 1f d6 59 d3 ce de 3e 7c ad 61 e6 fd f8 f0\r
+e4 fd ef 08 12 a8 53 90 8f 0f 99 ca 7e 38 8e bc\r
+19 e8 74 76 5b 11 64 0f 1e e1 e9 8f 54 95 3d e6\r
+17 6f 15 82 03 70 17 c8 38 60 9a 57 a1 2a cb af\r
+a6 a5 65 47 f5 7d 62 db e8 76 69 ed c0 fe 3b aa\r
+da\r
+\r
+# PKCS#1 v1.5 Signature Example 7.17\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+12 88 c0 3f 95 00 6e a3 2f 56 2d 40 d5 2a f9 fe \r
+b3 2f 0f a0 6d b6 5b 58 8a 23 7b 34 e5 92 d5 5c \r
+f9 79 f9 03 a6 42 ef 64 d2 ed 54 2a a8 c7 7d c1 \r
+dd 76 2f 45 a5 93 03 ed 75 e5 41 ca 27 1e 2b 60 \r
+ca 70 9e 44 fa 06 61 13 1e 8d 5d 41 63 fd 8d 39 \r
+85 66 ce 26 de 87 30 e7 2f 9c ca 73 76 41 c2 44 \r
+15 94 20 63 70 28 df 0a 18 07 9d 62 08 ea 8b 47 \r
+11 a2 c7 50 f5 c0 a4 25 31 3d f8 d7 56 4b d2 43 \r
+4d 31 15 23 d5 25 7e ed 80 6a c8 c9 c6 af 04 ac \r
+\r
+# Signature:\r
+00 6b eb b9 6f 0e 28 2f 1b 4d 03 e6 c5 65 05 b9\r
+37 78 da 9f 49 36 50 e8 aa eb 65 cf e6 28 50 04\r
+2f 75 ab e6 e6 ea fe b9 a7 0a bd 21 eb 5d ba 73\r
+cb b8 7c 12 98 0a ac df 16 71 6b 19 98 c9 49 9c\r
+e4 39 c5 4a ab 4d 19 ce 72 7b 78 75 a4 1a 3d 30\r
+81 4e 50 8d aa 26 eb 70 aa bb d0 dc ae cc 4d 4b\r
+51 69 80 71 51 1e b3 1b 21 0e 66 dc bc 7f c0 b8\r
+c6 23 14 da ea 69 d4 7a e2 78 10 0d eb 51 40 92\r
+00\r
+\r
+# PKCS#1 v1.5 Signature Example 7.18\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+54 13 99 3c 26 58 bc 1d 98 85 \r
+\r
+# Signature:\r
+00 bb eb 2c a0 bd 64 cb 89 60 37 5b 08 a9 48 0e\r
+69 c0 9f d3 82 de a2 f9 40 89 b1 53 3a 08 51 fa\r
+0c bd 0e ad ef ca 8c 70 b7 70 79 7a d0 89 e8 40\r
+d2 fe 1a 8f b8 54 9f 32 90 58 3b bb 81 d3 ee 2b\r
+1c 48 f1 ea 75 1b f3 2f 95 90 be 3a fd b7 74 5e\r
+16 6e 0b 32 2c 08 31 24 e6 45 83 94 82 d0 81 26\r
+22 d3 1a b1 87 7a 9b b4 1b 8d aa d8 68 f3 0e 75\r
+07 83 2a c3 41 01 12 13 3a a1 7b 2d 47 6d 47 6d\r
+89\r
+\r
+# PKCS#1 v1.5 Signature Example 7.19\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+9c 84 c1 48 6b c1 2b 3f a6 c5 98 71 b6 82 7c 8c \r
+e2 53 ca 5f ef a8 a8 c6 90 bf 32 6e 8e 37 cd b9 \r
+6d 90 a8 2e ba b6 9f 86 35 0e 18 22 e8 bd 53 6a \r
+2e b3 07 c4 3b 48 50 a8 da c2 f1 5f 32 e3 78 39 \r
+ef 8c 5c 0e 91 dd 0a fa d4 2c cd 4f c6 06 54 a5 \r
+50 02 d2 28 f5 2a 4a 5f e0 3b 8b bb 08 ca 82 da \r
+ca 55 8b 44 db e1 26 6e 50 c0 e7 45 a3 6d 9d 29 \r
+04 e3 40 8a bc d1 fd 56 99 94 06 3f 4a 75 cc 72 \r
+f2 fe e2 a0 cd 89 3a 43 af 1c 5b 8b 48 7d f0 a7 \r
+16 10 02 4e 4f 6d df 9f 28 ad 08 13 c1 aa b9 1b \r
+cb 3c 90 64 d5 ff 74 2d ef fe a6 57 09 41 39 36 \r
+9e 5e a6 f4 a9 63 19 a5 cc 82 24 14 5b 54 50 62 \r
+75 8f ef d1 fe 34 09 ae 16 92 59 c6 cd fd 6b 5f \r
+29 58 e3 14 fa ec be 69 d2 ca ce 58 ee 55 17 9a \r
+b9 b3 e6 d1 ec c1 4a 55 \r
+\r
+# Signature:\r
+00 e6 be 96 e1 8d ce bf 83 88 ba 82 ec 6f 27 10\r
+5b c2 78 71 59 5e 01 70 5a 2b 97 a1 f4 d7 88 38\r
+35 2b 0e 7c 0a 2c 62 7a 6f f3 7d b1 69 a9 a4 64\r
+8a d2 7a f0 65 33 a4 f0 41 d4 c8 20 ab f4 fb 52\r
+64 64 08 14 34 df 36 78 85 03 c6 5a f7 62 aa 21\r
+9f b7 6a 91 cb b4 0e 14 92 a9 cb 77 36 9b b4 cc\r
+a1 93 4e 38 53 de 6c 86 a5 dc 11 48 ed ee b3 b0\r
+03 04 14 fe 30 83 ad 72 fe 29 5c 29 b5 ea 9b 66\r
+60\r
+\r
+# PKCS#1 v1.5 Signature Example 7.20\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+94 0c da b4 a3 e9 20 09 cc d4 2e 1e 94 7b 13 14 \r
+e3 22 38 a2 de ce 7d 23 a8 9b 5b 30 c7 51 fd 0a \r
+4a 43 0d 2c 54 85 94 9a 2b 00 7e 80 97 8b bb 19 \r
+2c 35 4e b7 da 9a ed fc 74 db f5 f7 1d fd 43 b4 \r
+6c 93 db 82 62 9b da e2 bd 0a 12 b8 82 ea 04 c3 \r
+b4 65 f5 cf 93 02 3f 01 05 96 26 db be 99 f2 6b \r
+b1 be 94 9d dd d1 6d c7 f3 de bb 19 a1 94 62 7f \r
+0b 22 44 34 df 7d 87 00 e9 e9 8b 06 e3 60 c1 2f \r
+db e3 d1 9f 51 c9 68 4e b9 08 9e cb b0 a2 f0 45 \r
+03 99 d3 f5 9e ac 72 94 08 5d 04 4f 53 93 c6 ce \r
+73 74 23 d8 b8 \r
+\r
+# Signature:\r
+00 80 e2 c3 4f d4 ab 4d 1d 70 1e a3 f0 85 76 3a\r
+ca ff c9 fd 3e d9 18 d0 4b ff ee 19 31 62 48 98\r
+c7 8f 89 41 bd 2a 59 ce b5 b8 40 f0 11 45 16 ce\r
+41 1f ae 75 2b 1b 8a 22 1f fc a7 a6 87 66 c6 97\r
+c5 0a 3d 88 d8 d0 2f fc 12 41 d8 4b b7 a7 22 7f\r
+3d 05 14 9e 15 11 12 77 a1 36 a5 b8 dd 96 dd 4b\r
+22 5c 5f 49 cd f6 07 1d bf 71 93 5c 7a 6f 1e 2e\r
+9a f3 02 1c 0d 58 a9 b8 1c 9b de 61 fa 47 2c 07\r
+a6\r
+\r
+# =============================================\r
+\r
+# Example 8: A 1026-bit RSA key pair\r
+# -----------------------------------\r
+\r
+\r
+# Public key\r
+# ----------\r
+\r
+# Modulus: \r
+03 33 12 64 88 f7 a2 91 51 32 e3 0d 5e 97 f6 ed \r
+7b bb 67 b6 19 85 00 8e ae a2 a5 da fb 96 a4 48 \r
+ab 75 ce 3d 6e 68 a6 26 5e 7c 24 56 84 99 93 24 \r
+c8 1e 0b a6 38 98 63 fe b4 88 b3 f2 55 d0 d6 19 \r
+c1 90 40 b7 4c 18 9f 0c 9a f4 b0 d5 a5 5a 54 4c \r
+09 0c d6 15 2c 90 a6 f2 55 0d 7d 2a 6b 6d 34 7d \r
+5b 1b 9d fb 1d e4 40 3c 79 66 23 d7 03 bf 9d b4 \r
+43 bf 67 02 68 3b 8d 2a 9c 61 e9 36 8a c4 25 a5 \r
+81 \r
+\r
+# Exponent: \r
+01 00 01 \r
+\r
+# Private key\r
+# -----------\r
+\r
+# Modulus: \r
+03 33 12 64 88 f7 a2 91 51 32 e3 0d 5e 97 f6 ed \r
+7b bb 67 b6 19 85 00 8e ae a2 a5 da fb 96 a4 48 \r
+ab 75 ce 3d 6e 68 a6 26 5e 7c 24 56 84 99 93 24 \r
+c8 1e 0b a6 38 98 63 fe b4 88 b3 f2 55 d0 d6 19 \r
+c1 90 40 b7 4c 18 9f 0c 9a f4 b0 d5 a5 5a 54 4c \r
+09 0c d6 15 2c 90 a6 f2 55 0d 7d 2a 6b 6d 34 7d \r
+5b 1b 9d fb 1d e4 40 3c 79 66 23 d7 03 bf 9d b4 \r
+43 bf 67 02 68 3b 8d 2a 9c 61 e9 36 8a c4 25 a5 \r
+81 \r
+\r
+# Public exponent: \r
+01 00 01 \r
+\r
+# Exponent: \r
+01 4a 2b 15 df a8 83 1d b4 ef a0 5b 19 50 84 b7 \r
+42 73 4e e1 36 f4 48 3f 3b e2 50 9d 2f 61 90 23 \r
+c3 0a 1f f2 df 78 cb d1 17 b1 4f 2c 99 13 17 1f \r
+72 93 b9 fa 6d 41 f0 bd 11 a5 31 74 74 67 54 86 \r
+d7 f0 ae c0 a7 78 ba 92 0e 81 f5 64 d1 59 30 cd \r
+de e7 e2 b0 6a d8 ad b6 12 75 1f 4e 38 4d 6f 3f \r
+a0 a6 63 9f d6 2e df 86 f5 2c 9f e0 77 62 91 83 \r
+21 83 d3 59 b7 34 32 60 c9 4e 12 5f 4a b8 bf 43 \r
+69 \r
+\r
+# Prime 1: \r
+01 d6 e7 bd 8e 39 5b be f2 10 46 49 c0 12 78 cc \r
+1c 51 c9 68 7d ef b4 59 1f 03 b6 78 52 a4 bc b5 \r
+30 75 0c f9 bf ca d0 72 8c 53 99 d8 70 35 01 06 \r
+cb a3 ec 41 6a 31 e4 2d 0b 59 75 10 ff 1c 9d 53 \r
+bb \r
+\r
+# Prime 2: \r
+01 bd 46 6f 43 a4 d4 61 3e 42 64 f0 1b 2d ac 2e \r
+5a a4 20 43 f8 fb 5f 69 fa 87 1d 14 fb 27 3e 76 \r
+7a 53 1c 40 f0 2f 34 3b c2 fb 45 a0 c7 e0 f6 be \r
+25 61 92 3a 77 21 1d 66 a6 e2 db b4 3c 36 63 51 \r
+f3 \r
+\r
+# Prime exponent 1: \r
+fb 66 85 00 65 06 e2 0e 01 3a 45 2d 51 af 43 e8 \r
+ea 91 08 44 13 b0 c8 d3 91 fb dc 88 e2 82 0c 89 \r
+6e 34 1b 31 95 69 6b 7e 17 33 cf 25 38 66 ef e5 \r
+d0 01 d5 7a 88 60 34 dc 16 4a 35 64 bd 36 10 f9 \r
+\r
+# Prime exponent 2: \r
+be 4e 9e 3b 40 f5 6c 62 59 aa 1e 5c df 56 59 b1 \r
+6f b8 42 94 e5 8a d0 16 bd 2c 96 cd 08 e6 cf 68 \r
+54 a1 1c b8 0a d4 be 3e 05 7a aa cf 02 bd 32 63 \r
+73 a2 35 ce b8 9e 82 43 0d 6e 6d 47 d6 ce f8 35 \r
+\r
+# Coefficient: \r
+c0 23 5c 89 73 cf bf 30 bf 1d d3 c8 39 f0 2c 94 \r
+c6 9d c5 34 cb fc 98 88 05 d6 fc 46 2a db d3 77 \r
+d1 75 b9 a9 64 60 18 d7 fa b7 5c 1d 1f 7d 61 b7 \r
+7f a7 95 59 b8 6f fa 9e c6 e2 11 33 fa 7f 1a 45 \r
+\r
+# PKCS#1 v1.5 signing of 20 random messages\r
+# -------------------------------------------------------\r
+\r
+# PKCS#1 v1.5 Signature Example 8.1\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+9a 28 20 f3 b9 02 9a bc 18 65 eb 06 fe 61 b8 d3 \r
+97 b6 55 72 d6 00 61 ca a7 4e 63 56 93 1e 25 6b \r
+89 71 2d 18 66 84 b4 de 1e 14 c9 eb fe f1 6e 40 \r
+d9 9d 10 94 39 6c 56 1c 88 31 77 e5 12 6b 9b e2 \r
+d9 a9 68 03 27 d5 37 0c 6f 26 86 1f 58 20 c4 3d \r
+a6 7a 3a d6 09 04 e2 15 ee 6f f9 34 b9 da 70 d7 \r
+73 0c 87 34 ab fc ec de 89 7f dd 67 0a 01 46 58 \r
+68 ad c9 3f 26 13 19 57 a5 0c 52 fb 77 7c db aa \r
+30 89 2c 9e 12 36 11 64 ec 13 97 9d 43 04 81 18 \r
+e4 44 5d b8 7b ee 58 dd 98 7b 34 25 d0 20 71 d8 \r
+db ae 80 70 8b 03 9d bb 64 db d1 de 56 57 d9 fe \r
+d0 c1 18 a5 41 \r
+\r
+# Signature:\r
+03 22 d0 0f c1 d9 66 94 f3 6e ae d2 30 90 56 f3\r
+ea 1c 1c c2 2b 13 b6 5e 79 11 8d 20 2c 42 d1 61\r
+30 99 38 05 09 da 74 35 bb 57 92 16 fd 57 65 06\r
+68 42 e3 56 a6 41 6f c8 42 a2 4a 9e a1 bc 6a 90\r
+98 05 23 b4 28 e3 99 bb d6 fc dc 2c b7 71 da f0\r
+03 7a 2d e8 c7 64 9b d5 33 17 de 0e 37 c3 14 ba\r
+b0 c4 37 bb d7 98 df b9 65 50 6c 34 8b 74 2f 13\r
+8e f1 d1 a2 03 e0 51 e3 4b dd 3a 30 e0 fc e1 ac\r
+43\r
+\r
+# PKCS#1 v1.5 Signature Example 8.2\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+ea 9a 1a 04 b7 cf 47 8a 89 7a 70 8f d9 88 f4 8e \r
+80 1e db 0b 70 39 df 8c 23 bb 3c 56 f4 e8 21 ac \r
+8b 2b dd 4b 40 fa f5 45 c7 78 dd f9 bc 1a 49 cb \r
+57 f9 b7 1b 6d 48 b2 b6 a5 7a 63 c8 4c ea 85 9d \r
+65 c6 68 28 4b 08 d9 6b dc aa be 25 2d b0 e4 a9 \r
+6c b1 ba c6 01 93 41 db 6f be fb 8d 10 6b 0e 90 \r
+ed a6 bc c6 c6 26 2f 37 e7 ea 9c 7e 5d 22 6b d7 \r
+df 85 ec 5e 71 ef \r
+\r
+# Signature:\r
+02 68 44 09 39 99 6a e5 cb da fd bc a8 6a 7c 42\r
+8a 04 b5 78 fe 2d be 51 26 a8 2f af 2b ec ff 09\r
+9a c6 0c b8 1b 11 7f 1e bf 42 04 fe 43 70 54 8d\r
+5d 2c 46 80 63 68 2d a8 7d c8 01 79 bb 3b ba 85\r
+a1 48 ae 2d e7 dc b4 94 f4 76 22 1d f8 21 9d 4a\r
+ae 1e 45 af 65 de 33 4a 1a 6d c1 45 52 86 ae 09\r
+cf 26 72 58 85 e7 74 80 99 72 d7 81 98 05 ff f5\r
+a8 c8 9d 37 37 64 50 73 92 49 f5 7e b1 51 b7 1d\r
+c0\r
+\r
+# PKCS#1 v1.5 Signature Example 8.3\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+07 df 58 6b 90 5b 23 b9 1a f1 3d a1 23 04 bf 83 \r
+ec a8 a7 3e 87 1f f9 \r
+\r
+# Signature:\r
+01 bf d9 15 ff 77 80 f1 4c cc 55 bd 03 06 b3 ae\r
+da 5b 5b 59 55 a8 26 d4 52 6b 0b c7 66 15 4f a8\r
+da 59 56 05 78 cc d4 88 2f e9 70 92 fb c7 36 fd\r
+a7 3c ee fd 10 38 94 06 3e 93 e2 2a 7b 5c 44 f7\r
+a8 5e 3b db 96 71 9a 09 37 43 03 c9 1e d7 e2 27\r
+49 fe 3c 4d 6b 96 69 9d 50 7c 50 ad cf bd fc 13\r
+1d 6b 5f 2c f1 83 0e 31 ea be 39 ae b5 17 96 9c\r
+94 a8 1c fe fe 67 31 aa 2c df fe 28 c8 af 71 40\r
+f4\r
+\r
+# PKCS#1 v1.5 Signature Example 8.4\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+50 0b 87 77 c7 f8 39 ba f0 a6 4b bb db c5 ce 79 \r
+75 5c 57 a2 05 b8 45 c1 74 e2 d2 e9 05 46 a0 89 \r
+c4 e6 ec 8a df fa 23 a7 ea 97 ba e6 b6 5d 78 2b \r
+82 db 5d 2b 5a 56 d2 2a 29 a0 5e 7c 44 33 e2 b8 \r
+2a 62 1a bb a9 0a dd 05 ce 39 3f c4 8a 84 05 42 \r
+45 1a c7 cd 69 8d 84 b6 51 28 d8 83 5e 3a 8b 1e \r
+b0 e0 1c b5 41 ec 50 f1 03 6e 00 8e 71 e9 64 da \r
+dc 92 19 ed \r
+\r
+# Signature:\r
+00 7a e0 cf d7 f4 c6 ad 1f f8 4b 4a 60 6b a1 c4\r
+79 8c 2e 49 9b 04 5b 56 7d 32 63 4f d9 55 f2 68\r
+26 0a b6 59 bf 5b e9 9e 08 26 eb 38 70 e8 f6 2f\r
+5a 3c e7 58 e6 d1 56 c3 29 9b 43 1c d9 df c6 58\r
+37 ee 94 22 0d 95 23 51 14 87 99 be 9f ca f9 be\r
+26 4d ae be ba 2b e8 66 05 20 1e f9 a0 d9 8f 58\r
+ec 63 8a bf c4 f2 78 48 f5 d4 79 d3 34 ac c2 a9\r
+7f dd 2d 32 7e c4 c7 dd c5 a8 ab d5 66 de 35 d1\r
+4f\r
+\r
+# PKCS#1 v1.5 Signature Example 8.5\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+6b 3f 6a 63 d4 e7 78 59 24 3c 9c cc dc 98 01 65 \r
+23 ab b0 24 83 b3 55 91 c3 3a ad 81 21 3b b7 c7 \r
+bb 1a 47 0a ab c1 0d 44 25 6c 4d 45 59 d9 16 ef \r
+a8 bf f9 62 12 b2 f4 a3 f3 71 a1 0d 57 41 52 65 \r
+5f 5d fb a2 25 f1 08 95 a8 77 16 c1 37 45 0b b9 \r
+51 9d fa a1 f2 07 fa a9 42 ea 88 ab f7 1e 9c 17 \r
+98 00 85 b5 55 ae ba b7 62 64 ae 2a 3a b9 3c 2d \r
+12 98 11 91 dd ac 6f b5 94 9e b3 6a ee 3c 5d a9 \r
+40 f0 07 52 c9 16 d9 46 08 fa 7d 97 ba 6a 29 15 \r
+b6 88 f2 03 23 d4 e9 d9 68 01 d8 9a 72 ab 58 92 \r
+dc 21 17 c0 74 34 fc f9 72 e0 58 cf 8c 41 ca 4b \r
+4f f5 54 f7 d5 06 8a d3 15 5f ce d0 f3 12 5b c0 \r
+4f 91 93 37 8a 8f 5c 4c 3b 8c b4 dd 6d 1c c6 9d \r
+30 ec ca 6e aa 51 e3 6a 05 73 0e 9e 34 2e 85 5b \r
+af 09 9d ef b8 af d7 ad 8b 15 23 70 36 46 \r
+\r
+# Signature:\r
+01 92 1f 22 f4 71 a0 8a f8 19 a9 52 e1 83 68 ce\r
+15 f9 b0 64 eb 1d 00 b1 28 99 78 02 44 fe 8c 44\r
+24 b2 1f 64 35 0b 92 26 fe 95 ff 54 f1 14 39 83\r
+9b fb 54 f9 39 c9 14 95 e4 f0 27 90 18 97 27 3c\r
+fa 29 5a 57 15 1f 4e 91 1d c1 02 a7 7d 95 8b 62\r
+27 24 c0 fd 3a 34 b3 b7 be fb 8b 8c d0 66 6e 81\r
+5d 0c 07 f2 ec b7 c4 dd 2f 42 b7 f4 09 13 12 e3\r
+d7 b2 df 26 78 87 e0 ac a7 0b 54 1c 4c 1e ea 16\r
+b5\r
+\r
+# PKCS#1 v1.5 Signature Example 8.6\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+93 29 a5 80 90 de 8b e5 7c 42 \r
+\r
+# Signature:\r
+01 5c e2 4a 6f 2b 37 3a 19 99 7b b2 0c 18 ac 65\r
+9f 1e dc 0f 25 c9 e5 bf 76 d5 69 99 65 20 c2 80\r
+ef dc f1 5e 2d 63 ca af f6 c7 7a e0 38 97 03 7a\r
+06 15 f9 83 8c 52 10 4e 97 25 18 e2 90 fa c3 8f\r
+63 24 75 30 b4 cf 61 c6 ec e3 42 9b 53 07 81 cf\r
+34 96 4f 32 ae 50 f1 09 34 63 83 86 d3 b4 df 76\r
+1c 59 7d 4a a7 fe ca 26 6c 27 f8 ce 66 ad e1 be\r
+26 59 ce 14 2b a5 f9 35 88 3c 7e 8c 9b 89 57 ab\r
+f2\r
+\r
+# PKCS#1 v1.5 Signature Example 8.7\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+6a ce 0f 1e 1d c6 3e 39 4a 06 1f 52 2a 54 2f be \r
+71 20 25 4e 36 e9 f6 5d 19 57 c9 56 28 78 2c b0 \r
+36 8f 3c 13 da d6 56 71 79 c1 ea 24 fe 83 5a 26 \r
+63 85 e4 68 83 17 b8 2b 0c 3f e6 3c f2 d5 2f 04 \r
+ae 8a 38 a5 75 59 bb 95 d9 eb d5 fe 8a 9a fe 14 \r
+79 90 9e b9 9e 0d 3e f3 f3 12 e0 a4 ab b7 66 c7 \r
+e2 13 1a 5f fb 48 31 83 fb b4 22 34 d3 2e 58 1f \r
+59 50 65 c4 89 82 61 ec d0 ae 57 2c 22 1c 25 8d \r
+e9 50 a4 08 01 ef 79 6d 4d d0 04 06 45 fc 53 4d \r
+8e 78 58 23 48 38 ed 12 c6 87 40 c1 4e 37 16 13 \r
+f0 04 61 76 bb b0 f4 3d 99 75 19 c4 0c 67 14 96 \r
+ff 35 0a 3f df 42 9c c2 2f 46 4f 43 5f 6b 29 e7 \r
+e1 c3 0e bd 50 59 27 d4 a0 96 58 7f c3 8d 3d 64 \r
+94 39 1e \r
+\r
+# Signature:\r
+02 73 ba 2c 50 2b 3f 29 84 c5 48 d9 f7 d6 c9 b3\r
+d7 fd 46 08 78 c8 4d 6b e3 3b 28 10 6e 15 fc 22\r
+17 ef f7 41 cd c2 66 83 4b ea a8 6d a4 05 f3 ca\r
+e6 06 cc 61 f2 54 7b b9 22 92 03 45 fe 8f bb 5e\r
+7b 6a bf 91 ea e8 c4 26 60 64 50 25 cc 7f c0 7a\r
+53 4b 76 d3 78 75 e3 f4 0d 52 70 c1 0e f4 6c 7f\r
+e4 5a fa bc ff ae 2a 9c 94 11 bd 04 d6 1d 4c 0e\r
+5f fc 02 2c b3 6a 64 b7 c3 a8 c8 9b fd e4 36 ba\r
+fd\r
+\r
+# PKCS#1 v1.5 Signature Example 8.8\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+fd cc 0f 1e 5d cb e5 01 6a 6b 0f 8c 28 f5 b3 31 \r
+ff 58 28 37 13 8d bf 62 ef 7f f6 1b c1 a3 53 96 \r
+c9 2e 3d 54 8d 39 9e 35 0a 3c 6b c2 fd b5 da 94 \r
+b9 86 a4 ce 6d ee 10 4e 9f 27 4b 15 25 58 bf a7 \r
+22 cc fd da 3b 26 b9 f8 e5 15 25 f3 81 03 4c 51 \r
+fd c9 f7 91 2a c9 27 d1 a7 08 cc 2d bb cd 7b a6 \r
+c0 31 b0 11 cb a8 e2 df 8f c9 b8 83 64 ee 96 5f \r
+24 27 0e 43 48 62 32 53 cb 9e 59 d6 f7 94 09 09 \r
+94 a7 a4 c9 30 02 70 b5 7f 24 39 eb bb a4 65 84 \r
+67 af db 7f e8 6b 4f 1a ad 1d 3d 3b 2f \r
+\r
+# Signature:\r
+00 a7 c4 50 b3 0b 2e cb 19 bb 70 9a 92 31 cb fa\r
+9f 0d 61 69 7a 26 b9 0a 96 d9 1c 24 c4 da 70 d7\r
+b0 0b 59 23 c8 e1 2d 41 09 4b 70 5d 50 c7 78 bb\r
+da ce c6 60 d5 c1 5d ff d3 a2 47 8f d9 33 70 80\r
+dc a1 6b 9c 13 e6 23 3b 82 92 b2 fd cc 29 e9 bf\r
+3b 21 a7 18 78 f3 4e f5 eb 7c d5 0a d4 12 03 72\r
+5a 0f 1c 66 3f 73 42 ec 7c 3d f3 d5 aa 51 d0 58\r
+df cc ce 5f e6 9d 36 3b 42 84 32 08 79 e8 6d 58\r
+b5\r
+\r
+# PKCS#1 v1.5 Signature Example 8.9\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+2d 1f cd 17 66 f7 d4 5f 29 59 4f 9d 4f 74 39 41 \r
+ae 91 2a 97 91 1f fc 3d 65 dc d9 65 60 10 77 3b \r
+b0 22 4b a6 df 11 1b 1c 13 68 38 4f 24 92 fc 4f \r
+a7 28 0c 06 65 14 ae 84 f7 61 45 63 d9 05 2c a9 \r
+4e f4 46 a3 1b 46 3b d6 c2 50 56 80 50 88 c1 d3 \r
+1a ba ff 52 15 f7 a8 f8 9e 7b 64 f2 \r
+\r
+# Signature:\r
+02 c0 e0 71 e8 36 90 dc 14 d9 a3 7d 61 e0 af c2\r
+7d f9 78 03 9d a6 01 ca 2c ec 1d ec 8f 0d 17 d2\r
+ff c4 50 e6 78 38 0a 02 5a 41 c7 46 11 8f 58 36\r
+42 52 a1 22 53 9e cc bb b4 ab 3d 8d 37 7b db b9\r
+11 c5 8a 4c b9 46 2f 36 dc 38 92 48 50 1b d0 8f\r
+48 e3 53 3b 82 59 1a 2a 20 cf 62 df 5f 5a 1f 84\r
+ea 30 0c b3 94 57 13 71 41 ad 8c d1 d1 85 ab b1\r
+7b a5 d0 3b e3 48 c0 67 97 b0 95 58 f0 33 1c 24\r
+b9\r
+\r
+# PKCS#1 v1.5 Signature Example 8.10\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+4f 46 9a b7 9c b8 93 a5 3c 0e e3 81 5a 8b c0 87 \r
+eb 74 ea 36 61 5b dd c3 33 de e0 5f c7 26 65 aa \r
+6d 0b d5 9e 47 22 98 29 83 4b 1f 91 c9 cd 81 ce \r
+28 d6 8f 14 82 5a 34 5f 3a 4f 38 a0 1b 2d ae 59 \r
+10 07 64 aa b9 90 a8 50 b1 1c 13 d5 df e4 19 f1 \r
+d9 20 d0 0c f1 3b f4 30 e4 ca 82 87 98 9b ee be \r
+da 3e 5d 40 36 02 8c 8e f9 54 6e 35 01 50 d1 96 \r
+f0 05 60 ba e1 47 22 99 e7 f4 29 1d 54 46 29 c4 \r
+f6 52 e3 5c de 4f 80 3e 1b 3c a3 38 09 51 5e f2 \r
+3d 25 4b 8e 65 20 2a 14 a4 11 b1 bc 31 5c 5f fa \r
+ec b8 21 11 97 80 9d cb 5c ed 68 2c 09 f6 7e 41 \r
+d1 60 2c \r
+\r
+# Signature:\r
+01 71 29 64 ea 9a b9 70 29 5b 81 b0 fb d8 35 7e\r
+54 b9 36 ee 87 72 d8 ae 9c 96 12 71 6f cc 2f cb\r
+78 4c a9 ab ee eb b8 fc b6 89 82 16 1c c7 4e 40\r
+c7 c0 22 47 c0 d0 0e 03 bc 8e 1a 70 51 b8 7c 90\r
+dd 7d 3d fc 95 e0 b3 c8 8e 7a 0f 37 f3 0e 1b d5\r
+fe 8b 6e ee 46 5a 0b 34 cb 59 c6 4e bd b5 7d 6f\r
+5f df f2 e7 0b b1 9c 60 d9 88 ea 95 6c dc dd 1b\r
+e5 62 f2 6f b3 7c 34 da 52 a9 f9 11 b9 97 43 81\r
+2c\r
+\r
+# PKCS#1 v1.5 Signature Example 8.11\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+52 bb 76 c9 ea 26 5d 6f ad 10 83 72 ff ab 25 03 \r
+bb 20 d3 8d 37 df 19 92 54 a2 f6 de 0c 4f ca 7a \r
+73 03 36 \r
+\r
+# Signature:\r
+01 0c 55 34 23 60 22 60 15 8a 17 13 3b 5d 30 ef\r
+e9 8e 9a eb 35 3b ab 33 71 e4 91 cd be bd 35 0a\r
+0a 47 0b 9d bf d1 89 33 51 1f 0d 0e 36 94 a8 ac\r
+4b f3 f5 b6 eb 9b f7 1c 23 d9 4c 2e 64 be b7 b7\r
+c7 22 52 ca 82 7b d0 c0 56 7b a8 a1 0a 6d 3b 7e\r
+18 7b 0f d8 e9 e9 5d 4f e4 80 f2 50 dc 7f 03 42\r
+29 0e 9a 7d 32 70 3a 72 13 c6 52 13 ad ed 45 57\r
+54 78 1f 3d b7 3e 79 e3 d1 ba 6a f7 f6 90 fe 81\r
+73\r
+\r
+# PKCS#1 v1.5 Signature Example 8.12\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+5f 59 7a 19 cb f5 14 30 d3 c6 a2 47 a5 23 54 07 \r
+38 6c ae d0 a2 94 f3 f4 1f 3f 37 82 50 d4 c5 a2 \r
+c9 92 75 f9 55 44 cc c1 d7 7e 5c 15 1a f1 3e d6 \r
+0b e5 22 eb 8c ab ed 89 a9 b4 5b 09 65 46 00 f9 \r
+fc 75 1e 8b 12 e6 7e 52 \r
+\r
+# Signature:\r
+00 3b d4 aa 90 81 fe 7e 9f 69 a2 69 fe c8 c8 a7\r
+36 70 c0 37 e8 5a 1f 36 fc ad 74 e5 b5 2d 71 0a\r
+5a 18 ba 09 5b 98 10 cc 69 37 bc 76 34 09 51 e7\r
+fe d7 5b 32 6d 0a 3b 0f 26 c2 9c d5 eb 64 15 bb\r
+f7 e2 dd 60 ad f6 a0 e6 13 02 dc c6 60 cc e9 10\r
+40 8b 4f 99 a4 40 ae 2a d6 c3 07 72 c2 9a 9e 7b\r
+32 80 e2 e2 93 9a ba 0b 54 ab 02 2a a3 29 50 22\r
+71 8c d3 b7 87 b1 13 79 90 fb eb ef ac ec 8c b7\r
+49\r
+\r
+# PKCS#1 v1.5 Signature Example 8.13\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+84 0c c9 00 cb 4b 2c b6 7a 30 4a 9b 02 82 6d b0 \r
+d6 67 36 92 2e 78 70 13 d6 bf 21 4d f5 79 ff 0c \r
+f4 82 1f 9b \r
+\r
+# Signature:\r
+01 3b 6c 08 0f 68 93 95 05 e1 87 a4 94 82 c7 91\r
+27 8d a3 ad 4a 74 7c 4f 01 79 1b 92 48 05 b6 82\r
+f6 49 bb d8 0d ba 12 fb be 59 40 f1 7f 27 e7 5d\r
+42 67 7c 4c cc df fd 00 48 77 2e 36 93 4c 69 12\r
+12 8f f9 03 af ea 5e 1c a8 fe 94 24 fc 97 9b 21\r
+87 98 76 98 a5 c5 a7 5e 7d 70 70 a2 a6 74 85 2b\r
+d8 05 bf 13 bb d1 29 6b ff 13 10 a6 d6 ed 45 fd\r
+f8 67 2d 52 41 e7 4c d4 c4 19 86 e4 36 25 50 0c\r
+23\r
+\r
+# PKCS#1 v1.5 Signature Example 8.14\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+c6 41 71 94 13 3b 5f 8e a6 3d 95 58 1c 89 6f 5b \r
+9e f3 d8 7c f6 6c 02 91 64 0f 35 0a 32 5b 49 11 \r
+52 e9 d1 43 0d 68 70 34 6e 46 8e 71 99 45 d4 e3 \r
+65 d0 01 07 5f a9 70 f2 a9 87 0a 1c 65 43 4b a1 \r
+70 02 41 2a cc 4c c7 4d 28 b2 de e2 9b 36 e3 97 \r
+b6 8c 5d 59 cf 67 7c 29 ae e7 93 a9 30 0b 7b f4 \r
+c6 73 b3 e0 b6 03 a3 61 1c a9 02 44 ff 08 78 75 \r
+c5 16 88 57 cb 92 a9 5a aa 61 df f3 c2 12 dc 62 \r
+06 f1 71 47 c4 4b 95 07 d5 c8 90 75 8b b3 5b b7 \r
+2a 2a 5e 9d 4d b2 65 e5 37 3a 5b 34 02 90 4f 0f \r
+1a 12 05 d5 bc c5 90 25 d3 22 0a 5d e1 b1 82 a8 \r
+4d 30 41 2b 84 26 d4 69 32 32 1b 57 ef 72 64 0a \r
+dd 2c ee bf 5b e9 68 43 6b cd 12 16 90 78 84 82 \r
+32 93 b0 10 ec 28 f0 d9 \r
+\r
+# Signature:\r
+01 60 47 ca ad 6c 47 bf 27 d0 cc fa 03 41 01 7e\r
+56 5e 02 8c f2 6c 8e 66 0f 79 e0 91 f3 50 ce b2\r
+aa cf 92 f7 d0 1d 37 3f 71 55 11 9c 07 29 17 f2\r
+4f 01 bf 74 7b e2 dc dc 41 d1 be 58 85 35 c2 d6\r
+ac 17 04 c5 fb 16 f6 e5 dc 4b bc 84 53 f5 21 db\r
+73 1e ba 78 98 e6 e5 21 2b 80 ce 9d a0 f1 56 28\r
+18 99 98 31 35 03 df d4 4e 3d 69 de 9b a9 cb 5e\r
+b3 2a c4 1c b8 e3 62 1b a1 d2 91 d0 c5 da 24 9f\r
+15\r
+\r
+# PKCS#1 v1.5 Signature Example 8.15\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+a6 42 f0 f7 0b 4b d3 b5 4b e2 20 11 9a 7f 79 \r
+\r
+# Signature:\r
+00 a0 33 6e 63 67 52 7b bf 13 b0 a9 33 b6 31 c7\r
+2c b3 3e ab bc 29 2a 0f 8f 75 55 0c 22 30 fe 82\r
+57 f2 af 76 d5 43 cc d1 07 dd 2c 87 78 d3 ac 8a\r
+7b 5b b4 ac fa 57 f2 af 6a 23 14 95 23 5a 51 da\r
+dd b0 83 e3 73 b7 77 a9 5c f9 c4 a9 b6 be 77 51\r
+b6 5f eb 62 3a b3 34 43 36 54 b1 21 0f 7f 78 2b\r
+17 25 c6 ba 4f fd 20 d1 7e d4 b6 ec 4a 3a f6 4b\r
+d2 73 47 55 b7 73 9e eb f4 18 f0 9d 3a ff 28 9d\r
+13\r
+\r
+# PKCS#1 v1.5 Signature Example 8.16\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+ca 16 e4 3d 9c 82 d9 d3 0c 8f cb 40 22 93 3c ff \r
+c7 d7 4c aa 0d f4 86 35 09 31 8e da ba 4e 0d 51 \r
+99 77 9c 03 50 4a ff a2 7d 87 19 1b 6b f6 86 a8 \r
+4d 97 9a 2f dd 5b 8a 4c 49 32 14 45 c6 f7 5d 25 \r
+23 59 17 ad be e2 a5 cf f8 a9 7a ef 78 c0 09 22 \r
+10 11 d8 3c 0f 9d 37 16 08 75 af 73 67 71 8b 10 \r
+ee c3 b4 29 90 e6 43 f6 37 07 cf bb 30 a7 fa 74 \r
+ab 16 a7 eb f1 c8 38 c3 b2 26 37 b6 3c cd cb 6e \r
+b3 4c 62 eb a9 e9 48 c7 ac 90 30 f0 63 77 29 d3 \r
+e2 78 0a e6 be 4d 2f af 34 6c 11 63 d3 f9 82 48 \r
+19 3a 76 39 9f b7 84 ca cf 68 fb 33 c7 4b ab c9 \r
+dd b6 27 52 0c 0c 61 12 34 64 68 cf 20 a8 e0 2c \r
+c9 a9 bd 27 91 0e 83 29 7b 85 e8 57 32 4a 01 00 \r
+f5 cd d5 93 1b 6a 6d e0 5f 94 83 3a a8 61 0a 3a \r
+4b 08 a5 a3 93 53 \r
+\r
+# Signature:\r
+02 48 59 23 3f b9 db 7c d1 41 f4 b8 77 6a 1d 83\r
+e1 03 db 3a c9 42 89 d3 6e f4 0f 5e 6e 63 c3 12\r
+12 af dd dd 16 88 c2 c1 c8 d4 db 04 71 9e 1c 6e\r
+8d bf 7d 60 be 25 f1 d6 88 87 fd ad da 3d 11 2e\r
+3d 0d 24 c0 cd d7 98 8a 55 c7 10 29 40 08 2d 1a\r
+c3 1f b3 ef ab e7 c2 88 cb 4e e7 2a 99 2a c9 6d\r
+1e dd 78 ec 72 82 73 97 0a 79 69 95 c3 e2 a3 85\r
+81 e2 28 03 25 8e b4 cd 9d a2 04 0f af 74 1c 54\r
+2a\r
+\r
+# PKCS#1 v1.5 Signature Example 8.17\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+3b aa 7e 9a da 21 43 f8 48 82 5d 22 93 67 04 d1 \r
+c9 97 b2 da 76 76 9c 98 6f a1 52 b8 98 ae b1 1c \r
+10 b9 45 79 76 4f 9d c9 33 65 2a 81 03 67 04 76 \r
+95 8d 59 86 7a b2 4a 97 12 84 05 6e 99 c6 48 b7 \r
+7e 7a 65 36 44 87 0f e4 c7 ce f3 7f 90 01 60 48 \r
+72 ad ed e1 6a ac ed 8a a5 df 42 05 33 04 e4 d1 \r
+71 12 0d 7a b3 ce 81 a4 d1 a2 74 98 d1 38 01 8f \r
+66 21 bd fc 1d 53 e7 f3 c1 a5 aa 5d 62 b0 9a 55 \r
+4a 56 f1 ed 4f 38 5a 07 68 ea a2 da 0c 9f 56 37 \r
+03 4c 2e ef 58 cc 35 17 8b c2 a6 27 2c f5 29 b6 \r
+5a df \r
+\r
+# Signature:\r
+01 e6 3b 86 d0 c1 59 99 09 3d 44 28 af 7c 6d e6\r
+48 07 45 d8 19 e4 29 62 3f 47 2b 45 de 61 aa 56\r
+7b 60 d9 94 79 2a 0d 11 65 80 55 98 f4 e2 1f e6\r
+13 99 9a 96 22 5d 0b ba 98 f9 cf be e8 3a f5 85\r
+fa 07 84 39 a7 42 51 5a e2 18 ec 31 f8 d5 08 f2\r
+9b 0e 58 75 fc a8 f0 4f 11 a1 c8 2f 2b b0 ae 52\r
+8f da d3 ca 50 75 bb 3f 41 bb 57 83 34 81 33 fb\r
+a8 a0 b3 ad 95 1a 1a 64 9c a0 f9 75 8b 20 c8 70\r
+fd\r
+\r
+# PKCS#1 v1.5 Signature Example 8.18\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+7e b3 c9 8e 46 fd 1b 5c 9f f1 b1 1b e1 61 9b 56 \r
+60 57 f2 6c 55 e2 88 f4 84 4c cd 50 ba a9 1b 03 \r
+8d 60 95 83 6f 77 1f c1 c4 25 fb 53 3e f2 b1 dc \r
+4a 3e 94 9b b9 95 25 c2 8f e8 a3 e9 31 78 f3 a0 \r
+ac 97 fd 5d aa 81 b5 92 86 18 8e 17 b4 4b 37 71 \r
+bc a8 55 d8 5f 3c 4d 28 6f 10 68 10 f4 e5 22 ea \r
+05 83 4f 11 a3 1e 89 c3 59 90 c5 1b 08 0c 03 a6 \r
+61 e3 d4 a1 b9 7a 2c 27 94 0f 5b 2e 41 2b 69 9e \r
+a6 10 e8 99 6a e6 71 5a b6 e2 09 69 b6 aa 54 cc \r
+72 31 9d fe e6 3b d2 ca cf d0 60 8d 40 e2 b4 03 \r
+95 fe 55 dd a5 be a3 b0 f9 b9 4b 5a ad c0 98 dd \r
+56 8d a3 95 db 2d 44 e4 \r
+\r
+# Signature:\r
+01 5c fa d9 6e 4b 57 d9 cb b5 78 c7 90 74 a2 ba\r
+86 9c 06 02 88 68 c5 a3 fc f4 a5 e3 61 83 1b d8\r
+c0 2c 25 b1 2b 90 23 4c 8e a4 82 2f b6 5e 82 d0\r
+91 a9 0f 89 b6 c1 15 6e 4b 44 d7 8d 32 a6 47 37\r
+d6 15 87 c0 ce 3f 4b 34 3e 71 f8 f7 a8 4c 6f 8f\r
+c8 ae f8 f4 64 c8 b3 59 e4 fb 18 ad c6 99 c5 a0\r
+76 45 37 55 93 0c 5f 6f a7 07 1f 8f ec b8 63 1a\r
+a4 14 f5 08 35 03 8b e7 ab 05 a4 b0 50 f3 f5 6e\r
+86\r
+\r
+# PKCS#1 v1.5 Signature Example 8.19\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+6a 45 ee 0b 7e a8 03 68 b2 c4 29 af 28 81 53 f4 \r
+56 cc 66 32 17 a8 ff cd 2a a0 5c 5d 32 2d b7 57 \r
+56 cd bc 0f 68 41 41 fe 6b ca e1 89 bf 24 de 1c \r
+8e dd 5b 11 36 44 a4 50 0d 0d 4f f5 80 08 36 40 \r
+e1 2a 2c 95 de 69 e9 59 6b fb 1d 44 36 57 86 e1 \r
+67 d0 25 d8 9e a2 f8 d1 3a 0e 64 77 f1 3b 85 bb \r
+dc f1 60 77 4b 18 25 8c a0 be c0 bd 7b f1 39 11 \r
+b3 89 6b 48 89 fa 3d e0 4a b2 6b d6 82 b4 ab 43 \r
+7c 0c 17 f3 53 a2 3a 43 e9 2e 20 e7 f8 20 69 4e \r
+40 3a ab dd 5d 19 6e 93 89 5b 47 92 55 df 40 30 \r
+ad 8c e3 a5 3d 15 73 be 22 6d 81 aa 18 e4 85 89 \r
+57 a2 d0 a3 35 9c 2e 7a \r
+\r
+# Signature:\r
+01 64 f0 db cd d9 52 11 86 a2 80 84 a3 f3 ae 6a\r
+ac b6 59 6b 85 6e 8a ab 2e 72 a7 f2 33 d6 2d 2d\r
+3e f1 96 d3 78 7e 4b 04 57 31 da 9c 61 50 ad 9d\r
+5f 91 8c 6b 06 c9 2a 11 a0 bf d5 ef cc b7 b0 3a\r
+01 07 24 14 39 d3 4d 31 3d 35 b3 6a 0d 8c a0 81\r
+3c 36 23 b2 bd 78 f2 e3 a9 71 99 64 8d a3 58 06\r
+ff c5 8e ed 33 ac 9f cf 79 53 8f a8 89 15 b1 a5\r
+75 85 78 b9 a2 db 01 38 04 bf 32 e7 a5 6d c7 24\r
+37\r
+\r
+# PKCS#1 v1.5 Signature Example 8.20\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+92 a4 b4 bc e3 da a0 a7 a6 4b 72 ad 87 1f 3a a8 \r
+ea b5 ac 40 11 aa ae a2 ce eb a8 92 77 c6 43 29 \r
+57 26 26 c9 56 88 4f 48 54 f8 61 3d 22 51 8b 14 \r
+f0 38 fc af 9e 68 e1 30 02 fb 0a 00 a7 8c c2 ea \r
+51 44 fc 13 11 76 d5 e5 d6 7e 10 6a 99 87 9c \r
+\r
+# Signature:\r
+01 24 fd 8b 2a cf 22 37 fc 71 a2 ee 97 e2 6a 4d\r
+ab 7d ea 82 9e 15 be b2 f8 a7 37 91 a0 ba 15 2d\r
+a5 b0 6a df 34 1d 74 09 e8 d3 d3 17 5b 51 01 34\r
+32 5a 35 32 97 a8 d6 d6 6c 09 70 03 22 ee c5 e3\r
+3f 62 48 6a 21 11 30 d7 4c 70 dd 92 5d f8 60 2a\r
+e3 c4 c6 cc af 93 cc 9a 97 0d 1e 85 32 60 ee c6\r
+94 81 c5 f1 33 7e 9d d3 ae da 88 d8 82 99 be 08\r
+09 5b 71 5a 5b 21 66 e6 17 c9 26 72 2c ed d6 ef\r
+34 \r
+\r
+# =============================================\r
+\r
+# Example 9: A 1027-bit RSA key pair\r
+# -----------------------------------\r
+\r
+\r
+# Public key\r
+# ----------\r
+\r
+# Modulus: \r
+05 f3 74 34 88 26 1c 6f 06 25 e4 32 fa 6e b8 7f \r
+b1 2b 26 21 82 90 bf e3 96 ba 76 ea 42 61 32 2f \r
+81 43 e4 b4 eb cd 5d 2a e1 9b 0f 9d 8d cd 2f c7 \r
+e6 82 32 08 a7 51 83 3d 3b 4e 8e 38 7c 39 f8 ed \r
+6b bc 9f da ec 32 d3 ea 9a bb ff 57 47 23 f3 f1 \r
+22 99 90 96 3e a4 fd 9f b5 44 f6 42 90 aa 2e a7 \r
+da 63 11 91 a2 0d bc 94 23 b4 61 23 3b 93 72 49 \r
+f2 f4 ea 10 92 8f ae 2a 6f e6 64 f1 2c 09 23 ed \r
+11 \r
+\r
+# Exponent: \r
+01 00 01 \r
+\r
+# Private key\r
+# -----------\r
+\r
+# Modulus: \r
+05 f3 74 34 88 26 1c 6f 06 25 e4 32 fa 6e b8 7f \r
+b1 2b 26 21 82 90 bf e3 96 ba 76 ea 42 61 32 2f \r
+81 43 e4 b4 eb cd 5d 2a e1 9b 0f 9d 8d cd 2f c7 \r
+e6 82 32 08 a7 51 83 3d 3b 4e 8e 38 7c 39 f8 ed \r
+6b bc 9f da ec 32 d3 ea 9a bb ff 57 47 23 f3 f1 \r
+22 99 90 96 3e a4 fd 9f b5 44 f6 42 90 aa 2e a7 \r
+da 63 11 91 a2 0d bc 94 23 b4 61 23 3b 93 72 49 \r
+f2 f4 ea 10 92 8f ae 2a 6f e6 64 f1 2c 09 23 ed \r
+11 \r
+\r
+# Public exponent: \r
+01 00 01 \r
+\r
+# Exponent: \r
+01 4c c3 26 32 52 f8 c4 fb 77 cd 57 a1 42 0c 04 \r
+c0 43 27 8a 0c 45 e7 d4 23 79 49 3e 34 0f 9c f1 \r
+a9 6f 96 06 3a b7 59 d1 63 04 06 ae 28 6a 18 34 \r
+b6 d1 db 71 ee 72 2c 93 74 5f dd 4a d3 3f aa 72 \r
+d8 93 51 da 69 1a 7d 0a 71 d2 c5 5c 57 97 d2 cc \r
+b3 b4 62 62 08 bc 5f 5c 84 fe 43 2f 66 4d c3 0e \r
+de 09 63 e6 58 45 2b 2a d5 ef a4 93 5a 12 2f 46 \r
+1d 1e ab 84 1c 8a e0 e6 e8 2f c1 fe e8 5d 18 1c \r
+bd \r
+\r
+# Prime 1: \r
+02 94 ea 0f a3 4e c3 13 72 33 44 20 2e 85 ec a2 \r
+4b 5d f6 46 1a 1c 30 08 7d ca b5 d2 53 39 4a f5 \r
+66 6f 03 5c 33 35 41 0d 8b b9 86 62 c9 78 f6 1d \r
+37 db 4d 83 f0 b2 4c dc b6 3f ca db 79 c5 27 f5 \r
+ab \r
+\r
+# Prime 2: \r
+02 4e 19 16 52 f1 70 9f f4 74 37 40 85 81 88 8a \r
+9d a1 09 17 c5 b5 ab af 91 46 10 9f da c6 94 76 \r
+6f 4c 8f b0 57 96 8e 84 8d 99 58 6b 05 f8 a0 2f \r
+ba 6c a1 eb 12 ba 08 df d4 9b 62 c2 7a 8f 15 f4 \r
+33 \r
+\r
+# Prime exponent 1: \r
+01 22 7f 36 dc 6b 14 27 89 fc aa a7 12 8b df 14 \r
+fe d7 90 16 04 07 fb bc df bd a7 e9 88 97 18 31 \r
+81 12 ae 81 6a 28 b0 2d 4a 0b 03 dc 8b fd d4 ff \r
+c6 bb 67 f8 e4 65 1a 8f b0 b3 9d 70 96 b7 67 f6 \r
+fd \r
+\r
+# Prime exponent 2: \r
+02 25 ec 05 3c e8 da 6f 86 ad e3 6b d2 bf 43 93 \r
+02 91 37 5b 1b 1a 51 d4 7d 0b 11 a5 17 8a 26 83 \r
+34 f7 e1 94 92 1b b1 d7 5f ea 7f 56 c5 aa cd 05 \r
+8d b3 7d 36 08 2e ac e4 83 4b 07 bf 7b dd ea b4 \r
+b7 \r
+\r
+# Coefficient: \r
+02 0b d0 f5 15 80 87 ed e3 8c b5 dc 66 e4 01 0a \r
+e4 e4 8c c0 04 2e 15 2c d5 ee b0 51 c9 ec 45 ad \r
+23 40 24 53 52 c0 1d 94 c6 a5 26 aa 5a 45 4c db \r
+ae ac 85 95 34 9b be 6a 8d 55 19 a3 c9 b7 d0 7c \r
+3a \r
+\r
+# PKCS#1 v1.5 signing of 20 random messages\r
+# -------------------------------------------------------\r
+\r
+# PKCS#1 v1.5 Signature Example 9.1\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+82 e5 c5 aa e6 4e 60 8b 27 50 4b 91 db \r
+\r
+# Signature:\r
+01 45 82 da e9 35 e6 b2 ae ff 7d 72 50 89 da b0\r
+58 c6 78 b2 ee 28 bc d4 44 a7 2b df ac 31 46 3e\r
+18 e9 4d 7b 5e cc 84 a4 31 69 6a 1c dd 79 f9 c0\r
+8c 33 e1 d4 b3 22 dd 27 7b 50 3a e6 e4 f9 c3 15\r
+30 5b 43 72 fe 45 fe 4a 7e bb fc 4a e5 90 fa 3c\r
+52 0b f8 28 15 8f 78 20 29 9f 09 b1 34 ed e1 17\r
+b6 72 a1 ea c2 f0 50 c0 44 b2 55 ca 8d 45 52 d4\r
+b5 f3 f5 7b 87 34 db 24 74 50 07 44 a5 33 75 00\r
+5e\r
+\r
+# PKCS#1 v1.5 Signature Example 9.2\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+77 e0 fb dc d6 e0 49 8f c5 68 4f f1 3d 4c 9f 5b \r
+78 0e 77 e2 46 46 37 ff 66 ea a2 d7 d9 c3 de fb \r
+9b 0e 3a 38 37 73 db 97 a4 fb 49 1b eb 21 14 fd \r
+ea 2c 2a 48 0f fc 21 9b 79 6a d8 05 d5 4f be c1 \r
+7d cb 34 b1 da 17 96 cb 9c d5 f2 41 6a b5 e7 66 \r
+f8 e0 06 91 8e be c1 82 29 98 a2 8f ff a6 23 0c \r
+07 87 26 fb a2 e4 a7 b0 \r
+\r
+# Signature:\r
+05 93 27 ce e7 26 ff b6 03 e8 a9 fc d5 74 ab a9\r
+cb df c3 6c 0a a6 6f cf e3 55 5c f2 ef 35 82 d3\r
+22 0d f9 d6 bf 8a 78 e3 ff f0 c1 29 b3 ab b3 dc\r
+71 21 12 a2 05 6b ca 08 63 65 54 c1 ac 57 df 87\r
+f3 66 41 52 68 8c 6a c7 2e 6b 88 f5 63 7c d7 3f\r
+16 69 89 c8 29 09 fb 67 bc 1f a2 e2 d5 23 e5 1c\r
+91 8f 2b be c1 d7 52 02 af 24 0a 61 cd 2d cc 55\r
+5c ae ae 9a 68 57 0d 77 81 0c f1 df 81 23 ff 41\r
+c0\r
+\r
+# PKCS#1 v1.5 Signature Example 9.3\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+0d fa 5b aa 1c dd b8 34 70 7a 5f 8c c6 ec e5 71 \r
+a7 a7 fc a5 67 63 62 d2 b2 37 41 a9 57 0a e2 63 \r
+8f 6b 1c 23 89 85 36 75 cc c6 cc 1b 4c 6d ae 23 \r
+cd a7 1a b9 6b 5a 2f 22 14 57 50 43 3e 2d 6b a4 \r
+27 6a c1 ff 9a 48 af c9 f3 12 f4 13 37 85 ca 5a \r
+f3 74 66 74 31 9a 67 57 a1 64 e3 4d 14 98 bd 55 \r
+30 90 2e 32 18 55 e3 be d4 08 81 f0 05 42 25 6a \r
+a2 1a 42 fc \r
+\r
+# Signature:\r
+01 d1 95 41 69 af 58 99 3e 14 77 2a 94 f1 9b c4\r
+79 24 cc db 2e 90 ee 43 36 fb 6e 08 49 8a f4 da\r
+26 51 a2 b7 83 6c 31 3a 57 c8 61 b5 51 84 ec 3b\r
+15 fa c8 14 53 51 be c5 a7 27 0a 3a a8 69 4d b4\r
+e9 a9 2c b9 32 7b b7 a4 f7 b7 0d 24 4e af 9e bf\r
+a9 ed fd 4d 54 78 2f 3f 97 26 26 95 b9 7d 41 6e\r
+52 7b e4 ea 2d ef fe 6e b5 e0 6c da 6f 0a 7e 41\r
+66 77 ac 0f d6 f8 19 5d 4c e2 89 70 d2 ca 41 1a\r
+2b\r
+\r
+# PKCS#1 v1.5 Signature Example 9.4\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+16 7e 79 56 8c 77 36 69 0c 3b ed bb c8 d4 24 eb \r
+53 6a 12 85 5a 60 cd b1 0f 94 ba 11 23 17 e9 17 \r
+a1 b7 d6 fc fa a3 43 8d 68 ee 09 fd 47 \r
+\r
+# Signature:\r
+02 9a 2b 90 86 14 ed 7a 5f ab 72 f2 a1 c8 e5 48\r
+b6 f8 b8 b4 5b 75 81 fd 24 51 fe 45 a6 22 fa 0f\r
+08 dd 0b a2 e8 f3 c4 17 20 1e a0 27 79 10 18 4f\r
+37 6d a8 03 fa 72 c5 0d 39 be 28 82 52 6d 1e 85\r
+df 9a b1 79 75 76 4a cf b2 07 36 6f 6c d2 c8 b1\r
+36 a9 99 da af 48 f1 c0 8a 9e a1 f0 84 25 c2 1b\r
+65 41 80 da 4a df 10 9b 4b c5 b8 17 dd 67 bf 7d\r
+aa b4 a3 84 03 4a b4 ad e6 94 89 8c fc 27 2a b6\r
+53\r
+\r
+# PKCS#1 v1.5 Signature Example 9.5\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+0d 03 f7 12 84 f2 e4 83 24 2d 92 3f d1 e1 53 bc \r
+16 0f 0c dc 2c 0b 76 f1 bc 2c f7 d1 be 9c cc 7f \r
+af a6 af c3 90 34 01 84 09 cc fd 16 28 a7 0b 35 \r
+83 33 bd 96 ee d3 ad f3 14 2b 17 60 bf 8a 9b b1 \r
+9e a2 47 3a 2e d8 5c 91 cd 5f 0a 5f 2d 46 32 d6 \r
+17 64 19 fa 1d 8c c8 8b 67 08 47 77 11 ea 49 58 \r
+a8 39 01 fe f2 84 f5 a6 c5 02 79 8c 8b d0 a3 50 \r
+f2 ea 83 ed 18 1e b9 70 d3 0b 78 13 4c 8e 1d 64 \r
+f0 d1 49 5b 70 17 24 5f a6 9b d5 74 27 f7 49 20 \r
+ba 0e ed e9 cb a3 4e b2 22 76 b0 f2 74 13 ba 3f \r
+0d a8 eb de db 9b 0c 80 0e 44 48 1d 01 e6 bb b0 \r
+df eb f9 a1 5e f6 a7 02 0b 2c 55 ee 02 79 11 79 \r
+6f 66 f4 3d d8 46 02 1f 8d 6f 7e 01 bb 80 2b ac \r
+09 fd e9 b9 04 be cf 99 90 e6 84 e6 56 9a ca eb \r
+3c c6 4d cf 5d \r
+\r
+# Signature:\r
+04 22 79 1f e7 b4 3e 1f 31 9a e6 7d 91 8c 59 87\r
+e6 39 36 81 a1 86 1c 1e 71 dd 6f ce 19 23 71 0d\r
+bc ed 43 01 fd cd 4a ad 8f 4f c2 7d fa 02 a9 4d\r
+91 bd 96 20 0a ed 8b 3c 5a 96 ef ee 7d 11 af 90\r
+87 fb 81 90 5c 5d f2 c2 4e d7 ed 63 d5 fc 22 ba\r
+bd 6b 9e 3b 57 cd 25 41 9a 78 17 e9 36 16 e9 34\r
+54 b9 58 53 fe 52 04 b5 8c 09 8b 46 de 0b 3f 01\r
+f5 82 76 32 48 c2 90 b9 e8 09 69 65 24 42 a4 d8\r
+e5\r
+\r
+# PKCS#1 v1.5 Signature Example 9.6\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+4a ca 96 3f 14 ac f6 a7 9c 51 08 1e f2 57 16 66 \r
+71 e3 b4 5f ee 31 24 07 ba 3c f6 d7 11 ab a1 ae \r
+25 a4 a8 ba 45 48 19 a3 91 2a 31 2e 99 0f 1f a7 \r
+4c bc b7 27 77 f1 c7 c6 63 a2 d1 cd b2 c5 c0 07 \r
+4d 45 16 f4 87 17 de 14 03 e8 ff 7d 0f 9d e7 c7 \r
+c8 51 f3 e3 51 16 8b a6 c4 14 be d5 d4 2b ae 52 \r
+7b 72 4c eb 83 4d 79 ba cf 70 2c 56 a6 23 c1 68 \r
+80 87 dc 9d e9 53 8e a7 c7 c7 61 cd 2f d5 78 f0 \r
+dc 3f 55 2f fb d4 af c7 f4 ec 71 22 fd ec 1a 3a \r
+2b 10 4d 53 2d b8 1c b9 14 18 54 d5 7d cf 54 b7 \r
+56 01 a9 05 fa ed a6 5c 2a 7a 7b c2 b0 29 ad 12 \r
+dd 7a 6a d1 b4 0b e0 40 28 b4 b5 b6 37 30 ef 98 \r
+44 73 f0 c4 82 14 89 93 c3 6b 44 e5 4b e9 a5 f2 \r
+34 e7 43 29 2a 12 a3 4b f2 ff 73 b7 f7 98 \r
+\r
+# Signature:\r
+04 26 43 c0 3a da 72 4e 2d bb 19 cc 07 ad 0e 75\r
+22 28 b9 d3 6f 65 3c 6a 9c 0c 29 35 6c f4 c3 f1\r
+ca 19 37 76 d5 fe f4 3f c5 54 17 71 66 69 de 9a\r
+b2 ad dd 3e a8 8a 90 ae 93 9a 5e b1 10 13 e2 28\r
+ae 08 16 ee fa 4d d4 2c 6c 08 c8 78 bd 58 b4 90\r
+40 29 6a 86 3b fd 11 28 5f 8b bd 31 5b e1 6d 2d\r
+65 d7 f5 e5 f2 6a a9 71 47 f9 5f 5e e3 6f 98 9a\r
+a8 96 d7 f9 f1 b3 05 1f 82 42 44 f9 05 96 72 3d\r
+11\r
+\r
+# PKCS#1 v1.5 Signature Example 9.7\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+a7 5a 45 80 \r
+\r
+# Signature:\r
+00 4f e4 c5 d9 14 3c 85 1e 46 16 7c c1 81 57 5c\r
+07 5e 69 b9 81 f9 c1 03 f9 d9 b0 11 ff 8b 29 ba\r
+55 a4 31 87 ce 87 77 99 63 17 a0 3c 9d 90 af c1\r
+89 0a 9a de ec 8e ac 08 7f 99 b8 15 e6 eb 2b 87\r
+1d cd dc 80 92 24 9d 8f 51 3c 6c 56 09 fd ae 2c\r
+fc 6b f0 1f cb 80 25 a4 f7 9b f1 2a a8 e1 09 82\r
+9a 0b b3 8a 09 d1 a3 93 65 e0 40 56 52 da e4 51\r
+e5 c3 29 8f 47 04 05 98 ec d7 0e 4b 40 33 89 bc\r
+d5\r
+\r
+# PKCS#1 v1.5 Signature Example 9.8\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+7c fc 00 a6 43 ae 99 79 68 01 ee 3c eb e2 cb b1 \r
+a6 be 1c ac 15 c6 48 d4 ba 33 01 29 38 71 a9 9f \r
+7c b1 43 c1 28 c7 7f 96 31 1f e4 3a 39 01 df 2c \r
+2a 5c 40 4b e8 31 46 97 e0 9b 2e 80 aa c6 ac 39 \r
+97 1b be 0d bc 26 67 3f 31 95 9f 23 8e af d1 50 \r
+12 e4 96 7d 33 55 18 92 a3 d3 65 1f e4 46 9b 2d \r
+ba 45 57 df 89 3a b6 b9 4f 13 25 c3 a1 \r
+\r
+# Signature:\r
+05 98 5a 4c ce d0 e8 fd c5 89 24 ed ba 9e 40 0e\r
+67 48 21 4f 8d 0b 83 aa fa 20 35 0b bf 0e 68 76\r
+ca 5a 9a f3 97 0d d6 3b e6 84 f9 93 6d b2 82 ff\r
+8b 53 cf 5f 1b b1 cb f4 47 33 01 f3 72 d9 94 8a\r
+f9 39 1b 20 02 b2 be 3e 45 ff 24 a2 d8 99 ae 8b\r
+52 b6 71 b0 4b ab 46 01 06 be dc fa c0 13 95 9a\r
+48 18 95 98 42 7f b9 57 15 9a 6d 32 9c 19 f3 6c\r
+a7 53 81 b9 35 0d 34 38 9c 16 e1 80 a8 51 e4 57\r
+cd\r
+\r
+# PKCS#1 v1.5 Signature Example 9.9\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+3d 90 de 72 35 51 59 49 24 5f 49 03 68 c1 f4 93 \r
+83 e4 4c 1d b5 1d d5 38 5b df f5 bd 34 45 0e 63 \r
+ce 42 15 0b 44 1e f9 eb c7 29 a9 03 34 53 f0 a9 \r
+39 9f f6 86 1f 50 65 b6 66 6d c2 0b 28 72 03 42 \r
+8e 72 bd f4 cb 74 8a c8 d4 a5 5f 43 d2 23 5e 0a \r
+b2 ec 2c f2 b0 6a 01 5f 41 e3 51 68 ac 7e 3c 56 \r
+8f 2f 16 ef 57 28 b2 be 95 24 91 9d 36 76 d6 8f \r
+53 7e fe f2 9a 05 af 97 cf ed 7c e9 ec 45 c1 2f \r
+16 5e 4d 7a 4f e7 2b 99 ea bf 83 31 6c df 2b d1 \r
+64 4b 82 fa 13 e4 ff c4 49 e7 6d 44 c3 87 69 63 \r
+51 47 8b 1a 0f 85 96 15 da 90 5f 20 e6 8b 24 56 \r
+5c 87 3f 83 4e 59 34 58 51 8a de 41 c1 42 81 74 \r
+da 0c 47 66 3a 76 00 c6 50 25 01 5e 09 c1 \r
+\r
+# Signature:\r
+00 98 13 b2 fd c5 1b ff 88 de db ec a3 b1 4a e5\r
+8b c7 e7 14 c1 d9 2d 74 26 e4 94 4e f9 3e f9 ce\r
+6d 10 dc 98 9e af e7 34 8d 0a 95 f9 9f 56 94 8f\r
+72 60 2a c5 e8 61 4f 6b 38 e6 8d a7 9f 48 e2 76\r
+8e da 58 64 cf f2 54 51 37 f3 cf 4d 81 a5 ae b8\r
+9b 21 07 26 74 ca eb a0 00 71 00 c0 7e f4 dc bb\r
+d0 5a fb ad 9e 8b 30 d7 46 ea 36 0d 6c f8 75 d1\r
+0a 67 a5 7f 4b 5d f4 12 1d 72 97 a4 bd ce 12 8c\r
+b5\r
+\r
+# PKCS#1 v1.5 Signature Example 9.10\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+20 e6 a3 fe 16 b5 21 b3 c1 e6 ae 99 3e c6 e8 49 \r
+a9 c1 1f 20 42 a2 d4 ce 89 cf 0f 99 e1 b4 b9 47 \r
+1d a9 a1 73 0d a8 85 1f c5 ab 3c 09 22 05 5f 00 \r
+37 58 b2 35 c2 8d e4 08 80 66 3f cd 80 14 07 18 \r
+15 dd 06 49 4a 54 7c ce c3 34 8e 12 d5 38 d5 df \r
+b4 8f 80 7b 59 e9 b7 cd 81 f3 91 c0 2c 01 6c d9 \r
+c1 a8 4f 9c 59 51 79 d8 f2 00 24 2a 56 68 18 2c \r
+f2 cb a3 b9 fb 6e ad 45 1d 6d 27 d9 c7 36 15 25 \r
+d6 88 b5 52 33 ff 45 29 1c c0 74 02 d2 92 de 0b \r
+e8 3d 16 46 c4 3c 28 88 1f d4 55 49 b1 4d 12 61 \r
+b1 2f 12 04 38 27 6c 6b 3f 98 f5 5b cf 17 80 bc \r
+1a 91 eb 11 d0 22 9e 1d 78 68 d7 fe e4 9d 6b 91 \r
+68 e2 4d e1 cb 4f 0f 22 e6 7c bb 15 69 20 41 13 \r
+02 72 94 b3 7e c7 fa e5 8b c6 4e 82 5e aa 4d 56 \r
+94 d0 05 8f 2c d4 c7 d2 14 18 da 3c 03 07 fa 2f \r
+04 92 e8 b3 77 58 d3 ea 40 a4 e3 0f 60 \r
+\r
+# Signature:\r
+01 f0 2b 3f 83 91 23 af f2 a3 f4 3d a5 aa a0 b6\r
+bb b6 0c 04 37 82 f4 96 2a 7b 9f 02 5c 94 8e 34\r
+32 2e 98 de 37 03 e3 bb 45 a7 06 a2 bb 05 09 be\r
+d9 f4 10 52 8c 88 1a b9 a1 dc 01 97 06 8c 37 28\r
+c3 71 6d 83 81 d9 f8 67 80 fe 78 a6 43 4b 72 f5\r
+1e 69 cd 32 a7 21 3c ce a7 43 b3 3c 3c 96 eb 00\r
+42 fb 98 a7 0c 2e 52 fc 17 8a b2 cb 9f f8 bd dd\r
+c1 04 6b 08 e0 47 ba dd d6 5a 45 a4 e6 53 39 d7\r
+25\r
+\r
+# PKCS#1 v1.5 Signature Example 9.11\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+6e b4 9f 8a bc 5b 49 48 72 0a 7f 42 f7 40 84 78 \r
+00 22 e0 e9 f9 f6 88 86 d9 f3 4e 7f 7f 8a c1 54 \r
+db e1 9c 91 b8 ed 38 ec 03 6b 61 42 12 ca 35 f7 \r
+9e d8 74 57 9e 24 85 da c8 20 5d 0e 56 b4 b4 c0 \r
+00 0a 8a 75 a6 d4 97 fc 51 19 11 1a 40 db 51 3d \r
+f6 61 96 55 b5 8a 11 6f ab ee 08 2b fa 79 37 3d \r
+91 76 56 87 10 11 24 18 87 f4 42 60 8b d1 eb 1d \r
+95 d1 76 80 65 fa 63 32 4f ab 27 36 f9 22 70 5c \r
+f2 89 fd e9 26 74 33 85 92 07 a8 bc f1 2d 17 86 \r
+1c fd 06 2b 88 df 78 87 0d 5a 5e 91 13 1b 63 \r
+\r
+# Signature:\r
+02 a2 fa 32 71 77 96 71 0b 52 b0 51 90 6c db 98\r
+15 b2 d0 36 6c 07 0a 78 ff 72 d4 59 42 d7 ad de\r
+ae 7e dc 73 ca 93 01 f1 f9 fa e6 8a 0b d4 b1 df\r
+05 a9 a6 71 f8 a5 b7 d4 5c d1 1f dc 0f 0b a0 9d\r
+25 ce c3 b6 30 3d 9a 66 6c 76 32 64 96 ea 31 ae\r
+38 86 a0 c3 b7 d2 27 62 ee a2 78 93 4b 96 a4 f9\r
+0a 50 1a d3 08 8f 70 2e 14 76 3c e3 38 46 e2 fd\r
+be 6d 66 1c b8 2e 6d 98 9d f3 c5 ac 8f e4 0a 85\r
+62\r
+\r
+# PKCS#1 v1.5 Signature Example 9.12\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+45 cf ec 13 2e e5 93 f0 c3 f3 81 3d 3c b4 49 e6 \r
+e5 e6 1d 13 de 52 9a e3 e7 1c 99 8e a4 56 35 9c \r
+e6 6b 82 04 5b 7a c7 97 fe 96 98 5d ea bc 51 22 \r
+53 0b 2e 29 ef c9 75 ee 96 03 b4 f9 6f 3f f4 e5 \r
+9b 0e 35 a9 ad 92 f2 b8 67 79 4d 8e \r
+\r
+# Signature:\r
+03 9b e4 8f 13 3a e7 f0 b1 9e dd b2 13 56 09 73\r
+a3 e2 a1 14 6c 79 42 f8 26 4b ba 5a d0 08 69 2d\r
+11 38 01 fc 27 78 a7 e3 3a 9e 11 5e a6 32 e5 01\r
+88 c8 7b 69 e8 d4 d8 cc a4 8a bf 9f 25 1e fc 00\r
+17 b9 9e de e5 66 dc dc 0b c5 8d bf 6d 67 bf 86\r
+3d b8 a8 9a bd f1 2a 77 f1 b7 0d e4 39 d1 76 f2\r
+ea ad a5 46 4c 79 a5 84 27 0c a5 14 f4 8f 1d ae\r
+86 78 ec f1 ac 29 6d 07 c4 68 98 ba d4 1a cb 19\r
+9d\r
+\r
+# PKCS#1 v1.5 Signature Example 9.13\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+22 51 29 87 15 7c f9 b9 ab 4e 53 37 b0 98 91 d6 \r
+3c ec 37 43 c0 f7 bc 9d 18 2e \r
+\r
+# Signature:\r
+02 c7 75 7f 99 93 ef 8c 6d 60 a3 f5 ab ed ce a5\r
+35 df f5 5a b9 f4 f6 2d 12 54 bf 26 1d d6 a2 ee\r
+52 da 63 49 f4 7b 9b 28 9f 1d 0e a3 e0 ff 08 f4\r
+55 fa 54 85 65 8e 42 17 f4 40 c0 8b 90 ae 4c 6c\r
+c2 56 97 cb 83 35 31 db b4 74 03 25 43 10 0b 5f\r
+92 b6 78 19 5d db fb 1b 59 c5 9b e7 c8 3d d8 17\r
+45 cd 4e 70 9a 0e 3f 79 8e ad 5b f8 66 2d a6 5c\r
+10 57 cc 08 2d 90 50 50 c4 65 95 8b 55 5d 77 b8\r
+b1\r
+\r
+# PKCS#1 v1.5 Signature Example 9.14\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+ae 48 cd 83 f4 a1 f9 4e 17 19 21 96 90 c8 c6 f6 \r
+73 7a bd 15 e0 d0 8e 7f c2 ea 0d 31 5b 45 be c2 \r
+46 e8 45 bf 17 60 c8 6c 3f 82 d8 4b 1e 9d 68 dc \r
+cc 01 d9 a7 d0 7e cc 6b fb ee d8 3d 7a d0 3a 6d \r
+56 6a 89 bc 64 42 1e 7e b4 7e 52 c0 23 86 58 d5 \r
+e4 c5 59 7f 12 5a fc 6c 83 3c 63 cd 6f 97 f9 dd \r
+5c ce 8a 26 38 80 7c e8 a5 83 da 03 2b ec 81 a3 \r
+8c d2 99 a9 c7 8e 82 54 f2 88 51 64 13 52 5f d9 \r
+4a 9e 0a 95 c6 56 d7 3c d5 2a 4d cc 7d d0 94 7f \r
+4a 00 5e ae dc cf d0 3b b1 71 5c 35 1c f0 59 cd \r
+52 2c 7f 53 8c 16 28 e7 2a 05 64 4e 8f ff 50 92 \r
+6f a8 68 2a 67 53 78 6f 2a a2 61 0a bf aa 95 bf \r
+99 af 15 61 71 51 d0 bd 0f c4 6f c3 b2 9c be e1 \r
+e6 63 b9 23 13 6b 5e 19 92 83 9f 0b a5 2e 44 fc \r
+cb d9 f3 20 ed e2 0f 55 a4 23 77 0e 57 3a 9f b2 \r
+b3 6d c8 f1 84 \r
+\r
+# Signature:\r
+00 fb a9 f6 f9 59 b1 70 b0 94 6d cb db 98 dc 8e\r
+84 79 c6 69 ad ba 6c 54 63 6a 2d c7 d7 f7 03 3d\r
+35 04 05 d7 17 f2 d6 3d ae 65 c2 4b 37 db 1d c3\r
+e9 f6 17 43 af 1c e6 de 24 67 d1 85 ae f0 8d 2b\r
+f8 65 f0 75 ba a6 a2 9c 58 06 61 dc d4 a4 8f 21\r
+ff 4e 7b 03 9e ef 1e 1e 20 ba 80 cf 20 ea b6 ec\r
+de 60 fa 5d 37 67 a3 0e 6a d4 14 47 13 ca 49 fc\r
+03 80 99 af 53 6c 0d 5f 55 c4 cb 15 33 53 81 be\r
+a0\r
+\r
+# PKCS#1 v1.5 Signature Example 9.15\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+2c 8a 00 7b 60 30 56 d3 31 87 bf 52 ce f6 16 1a \r
+a5 f5 f5 33 7f c3 59 d4 63 44 72 1d 94 5f bc 4d \r
+24 0d 30 62 0b 29 6c 39 77 cf 45 c2 47 eb 2c 36 \r
+39 40 79 98 3f 03 ad 82 39 9c 4b 28 6c 48 16 59 \r
+10 b3 48 b9 5e f3 9c 43 bf be b3 56 6d 1d 1e ea \r
+5a 42 7f 4c b1 68 1f 2a 7c 40 1f 3f 0d 6d 9e e7 \r
+99 3b e5 ec 5d 34 a7 55 41 e9 f8 dc 7c 60 69 a8 \r
+97 7c 9f 93 6e db e4 1a 4e f7 85 a3 ef 7b a0 51 \r
+89 90 09 ed 61 2a 22 8f 90 31 67 a9 34 ee e6 9b \r
+4f 87 36 c2 95 11 c6 bd c6 1e ee 96 08 a9 91 1b \r
+ba 52 83 9b e9 9f 91 d2 ef 85 b8 cf 10 c1 d6 35 \r
+08 08 29 ba 79 91 fe 2e f8 2e 2b ae 27 08 14 06 \r
+e8 9b ab 75 c3 ed 19 e8 7a 4a db 72 ec 26 21 f3 \r
+f2 58 5b 38 cb b3 6b 3c 0d 40 5f fc a7 a6 fb 02 \r
+24 42 07 94 cb d8 d7 83 18 01 c8 81 e1 65 \r
+\r
+# Signature:\r
+04 10 47 e2 42 b6 44 87 41 f2 8a 4c 8b 2d fe ca\r
+cc 0f f6 61 9e 95 6a 6a 6b 10 cd d0 1e ed d2 01\r
+c8 0e 0f bf 7c 5b ef 52 a7 aa 99 00 a8 59 39 4b\r
+47 e8 3d 08 b5 e1 da 03 a3 35 54 00 0c ce 17 c1\r
+d8 62 29 a3 a2 03 50 d1 16 43 a7 58 c1 16 b8 fb\r
+f7 26 60 df 4c 86 ef 8c 1f c4 54 4c 3a e1 d1 fc\r
+3c e9 f2 63 f6 2e 80 07 cd 7f f7 ea 8d 50 a0 82\r
+83 89 ff 43 1f c5 c5 62 81 6d 3d 24 b6 07 21 1d\r
+29\r
+\r
+# PKCS#1 v1.5 Signature Example 9.16\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+7b 15 d1 a7 9c 7a d2 d1 2f 75 da 57 d1 4a 8e b7 \r
+1f dd 4c 4e ff 52 43 74 1a cd e2 3c e6 da d3 08 \r
+c8 1d 5d 58 0f f9 c3 f8 93 ff 12 4f e4 58 b3 18 \r
+84 da f7 fc 44 66 d7 00 dc 49 3f 1c 7a 7d bf 62 \r
+24 1b 17 e7 36 23 fa 17 81 4a b4 d2 c9 24 5b e8 \r
+3b b3 cc 5f 94 44 b1 52 17 b2 44 1f 45 9c 00 b8 \r
+2e 58 68 9a 11 dd 5c 59 fa 39 5d 1a 6f 9b 2c 25 \r
+cc 84 99 92 7a b9 a4 98 28 53 36 52 ce e2 32 32 \r
+97 2d 65 69 ee 56 44 78 66 f1 0e ba d5 4e a3 f0 \r
+61 32 0c 6d 3f ef ce 34 55 2b 62 66 96 7b 05 78 \r
+d6 c4 55 b9 ac 24 66 36 17 12 e7 d0 5b d3 33 2e \r
+c1 30 d4 5c 6a 49 76 16 2c 79 7a d1 36 3f 49 69 \r
+e4 ae 3d ed 6e 36 ea 2c d7 fb 35 66 09 be 03 1a \r
+79 b2 94 \r
+\r
+# Signature:\r
+03 02 52 90 b4 46 2f 9a b7 9f df aa 7b 1d 53 a4\r
+d1 27 96 c8 5a ac 28 de ac 21 27 c8 25 2c 2a 62\r
+39 5a 8b 81 9d fc ee bf 68 dd 4d bf c8 7c 1c f3\r
+d0 17 a5 3a 26 40 92 50 6b b6 fc 95 28 e6 f8 76\r
+78 73 6c a5 6a 14 a1 aa 26 77 a8 b8 4f 5e 03 fa\r
+2c 0c e4 78 5b 26 ba 92 e7 5f bd c1 6d 8d 4c 7f\r
+b0 bc 39 a8 8e 13 2e 1e 05 ad 00 f1 2f 07 27 06\r
+34 3f 5e b3 da b5 11 2e 3b be 76 ed 0b bc 7b df\r
+cf\r
+\r
+# PKCS#1 v1.5 Signature Example 9.17\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+7a 76 44 00 1f 80 13 c5 0f d7 17 b2 44 65 47 7a \r
+bc 34 ba 9c 1e 53 ad 76 32 64 5a 6e f7 c8 e6 4e \r
+8e cb 7b ca 5b 4f 09 b5 2f 4d d4 8f 8b b3 dd 33 \r
+8c 78 18 2c e8 6e 8b fb 1c 68 a8 76 f7 32 16 63 \r
+06 a8 ea 8c 0d 7c 21 ff 26 fa af 4a b4 55 10 36 \r
+19 50 c7 6f 95 c2 73 0b 9d 3e 4d 6d 85 ea 25 58 \r
+4a c9 67 a0 2b 1e 0a 26 \r
+\r
+# Signature:\r
+03 b2 ac cf ef f0 63 bd 17 5e f8 ae 0c b8 5b db\r
+80 0d dc 27 77 6f 8d 3d c7 e2 1d 19 9b b8 d6 5f\r
+5b 24 2e 79 d4 5e cd cf f0 2e 80 3f 56 81 ff 04\r
+4a 43 b5 5a 9a ac b1 ea f1 67 84 83 8b 1d 5a 2b\r
+7c 1a 36 4d c4 05 31 1a 65 55 05 7e c7 3f 0a 8f\r
+4e 0f fc a4 23 02 2c a6 ad 74 46 9b bd 55 57 bf\r
+a1 cf 4b 95 63 6f 53 45 37 ef f2 fb 16 af 5e 64\r
+71 82 4a fe 21 67 91 8c 89 ad e0 1d 52 ae a7 39\r
+9d\r
+\r
+# PKCS#1 v1.5 Signature Example 9.18\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+12 d2 24 fc 10 a0 fc 40 95 3a b6 d7 01 c4 16 c3 \r
+a8 23 77 2b ea fa \r
+\r
+# Signature:\r
+03 2c b5 c8 d6 12 90 b7 66 e6 49 8a a6 01 49 4d\r
+9f 06 6f 27 a4 7a 28 70 f3 67 89 43 29 1a b2 2d\r
+3c 45 c0 76 e5 60 81 9d 33 f8 89 f8 cf ab 2d f6\r
+c6 3c 0c e1 ed 5c eb 51 54 70 77 c0 82 78 18 7a\r
+82 72 fe c7 de 95 54 cd c9 16 ca 72 f2 c4 51 43\r
+f2 cf 32 43 c4 bd 20 0c 6e 99 3f 0d b5 b7 1d 4f\r
+63 77 1e 24 9b 19 b9 97 a6 e5 a9 19 ca 10 0c 90\r
+fe a6 a2 d4 dc 68 81 c3 a0 e1 c1 35 53 83 cf bb\r
+4b\r
+\r
+# PKCS#1 v1.5 Signature Example 9.19\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+e0 d4 e2 a5 e9 8a 51 23 7d a5 08 5d cf 09 8a e2 \r
+c0 5b 4e 16 92 54 ee 6d da 16 21 0e 4a 3f e8 1c \r
+72 56 ea ef f2 8c 0c 63 d8 54 b7 84 1a 13 6c 43 \r
+60 b2 15 dc a0 58 74 8a 4b fa 82 58 68 04 28 21 \r
+99 2a 4e d5 a7 d5 8f 80 12 20 75 49 be 8c c9 ce \r
+cc 85 01 b9 f8 02 83 0f 86 58 45 ce 2e 33 9b ec \r
+28 05 96 11 a1 a0 0b 55 35 c3 c6 15 e9 d2 a1 39 \r
+59 f1 01 5c 8b ad 2d 75 3a 59 a6 14 3b 3a 30 58 \r
+ef 72 25 60 ff e1 c1 84 87 c7 41 da d6 1f 07 a1 \r
+56 42 e7 26 ad 18 a9 84 87 5e 68 c6 2e eb ed cf \r
+94 6f 13 b8 93 b2 80 8f 78 f9 29 48 07 d7 74 68 \r
+54 94 e6 b8 90 40 ee e6 de 1b a7 18 ba 2e 08 2c \r
+3d 5e f1 7c 10 28 cd 66 \r
+\r
+# Signature:\r
+03 e7 83 bb 53 db b6 7c f2 19 5f c1 a5 7f 4b 74\r
+c9 82 03 b1 f3 d6 15 fe b9 20 e4 ab e8 37 58 34\r
+67 2f 4b 8f 55 fe f2 ac a8 b5 d4 0a ef e4 ef bd\r
+aa c3 e8 21 08 d0 7f 2f 1c f8 c0 d4 df f8 1b 39\r
+66 ec 69 be 51 17 ac 1a a6 11 8e 46 0b 92 d8 8f\r
+cd d9 4d 08 eb aa 53 62 e5 9d 52 00 4b 43 36 95\r
+14 37 da 0f 51 d6 3e 50 56 15 b4 b7 55 54 08 0b\r
+94 89 7f ef 29 3a 34 c4 04 00 c4 f9 9a a1 de fe\r
+35\r
+\r
+# PKCS#1 v1.5 Signature Example 9.20\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+64 b3 ba 40 98 03 c9 b9 60 c1 c4 96 2f 51 27 1b \r
+c8 9a 40 bd 40 5c e5 bc dc 88 51 d9 7c 9b e5 e5 \r
+b7 46 4e 50 d9 9b 6c f8 ad f8 ff 83 2b 73 7d e8 \r
+b6 ff 1a be b8 9d ba e9 3a 90 63 94 87 80 6b 05 \r
+96 cd 31 68 60 f6 8f 00 27 a3 50 3e 15 89 67 af \r
+df f4 69 07 68 17 fc 7d a3 22 3c ca 1e 6c 48 97 \r
+3b 57 0e 0b f7 4b b8 b3 96 54 37 2b 7a 1d 6f \r
+\r
+# Signature:\r
+00 d2 00 eb a0 b6 52 2a fb 42 0e bf 16 48 8c 53\r
+03 52 c4 2d de 81 e7 64 c0 ca db 43 82 8c b9 98\r
+d0 a6 0b 23 b5 b6 95 8a 00 fc 25 53 e2 35 e8 57\r
+4e 4d 4f ec 9e 66 8d ba 40 de 66 61 ab e1 3f cb\r
+84 c1 ad 15 c4 b0 cc 0c 6f 4f 0f 83 77 87 c4 32\r
+5f 04 5d 61 ee 2c 99 72 b0 1f 32 12 65 4e c4 26\r
+62 56 7f aa c4 0e 9c 0a 28 15 8a 2a 6c 31 f0 1a\r
+84 91 26 df 9e 96 cb 82 09 be b5 81 d6 84 6b b5\r
+ab\r
+\r
+# =============================================\r
+\r
+# Example 10: A 1028-bit RSA key pair\r
+# -----------------------------------\r
+\r
+\r
+# Public key\r
+# ----------\r
+\r
+# Modulus: \r
+0d 5f b9 9f de df 42 56 e2 8d 4b 41 d7 07 fc 27 \r
+63 3e 89 95 15 f4 da bf 6b 46 27 10 ac 11 25 81 \r
+fa 73 fa 83 69 58 2c 9f d4 52 5a 70 16 18 99 df \r
+63 25 84 9e 5c 43 49 3e 13 35 4e 27 09 55 a4 3e \r
+38 35 b5 99 8e d4 2a 57 5b bf 68 8d 69 ec 36 6d \r
+2b a6 f0 50 4c 1e e1 7d c5 9b 7e a0 b4 64 0c be \r
+cd 8b d7 96 2b e8 56 6f 0e bd 65 57 43 65 6a 29 \r
+12 85 e0 37 bb fa 86 55 80 1b d0 31 4f 46 4c 56 \r
+91 \r
+\r
+# Exponent: \r
+01 00 01 \r
+\r
+# Private key\r
+# -----------\r
+\r
+# Modulus: \r
+0d 5f b9 9f de df 42 56 e2 8d 4b 41 d7 07 fc 27 \r
+63 3e 89 95 15 f4 da bf 6b 46 27 10 ac 11 25 81 \r
+fa 73 fa 83 69 58 2c 9f d4 52 5a 70 16 18 99 df \r
+63 25 84 9e 5c 43 49 3e 13 35 4e 27 09 55 a4 3e \r
+38 35 b5 99 8e d4 2a 57 5b bf 68 8d 69 ec 36 6d \r
+2b a6 f0 50 4c 1e e1 7d c5 9b 7e a0 b4 64 0c be \r
+cd 8b d7 96 2b e8 56 6f 0e bd 65 57 43 65 6a 29 \r
+12 85 e0 37 bb fa 86 55 80 1b d0 31 4f 46 4c 56 \r
+91 \r
+\r
+# Public exponent: \r
+01 00 01 \r
+\r
+# Exponent: \r
+e7 6f 42 b4 74 02 d5 e0 f9 64 64 92 5a b4 b3 bc \r
+68 94 30 0e e4 86 fb 70 ce d4 91 f2 d1 b3 67 80 \r
+84 c1 c2 cb 96 95 68 a5 f7 7d ab cd 40 93 39 37 \r
+a8 67 f9 34 fb 2a ea ae 6d 78 67 98 e0 d0 4a 10 \r
+6f 54 5e 41 a9 c9 38 33 d8 1f d4 d7 53 53 17 9c \r
+b0 bc a4 5e 79 aa c9 41 34 64 b0 36 7f 31 ac 5a \r
+ca 56 6f 22 14 bf 51 46 a9 48 4b 87 e4 2b da c2 \r
+b0 1a 99 67 03 50 6b e0 77 49 aa 0f be b3 b2 29 \r
+\r
+# Prime 1: \r
+03 ff af 4a 61 21 d7 42 0c fd a6 4c 41 71 2f 47 \r
+c8 f2 d0 d2 5b 17 e9 5b 35 41 42 84 69 10 af ef \r
+bd f2 1e 74 23 e8 b3 be 44 ae d9 af 5e 49 81 68 \r
+5d 3b 9a 1d 59 c9 b9 47 fb 9c 33 9c 9a 31 e5 7b \r
+d9 \r
+\r
+# Prime 2: \r
+03 58 31 e3 b9 29 3b cd a4 51 be 9d b1 91 97 48 \r
+6a a2 e2 2e 92 98 65 0f 2b 7f f4 25 69 eb ec 33 \r
+d2 0a 34 98 44 a3 3b ea a0 93 d1 43 4a fb 4a 04 \r
+a0 4a ed d3 bb c4 b3 87 77 a5 5f e6 50 5b 8c 15 \r
+79 \r
+\r
+# Prime exponent 1: \r
+02 8e 91 d5 ab ba 69 dc 50 56 38 e9 f5 c6 9c 06 \r
+f8 d5 5a f5 c7 4d c8 e7 8b 6c 09 4e 85 a8 27 f7 \r
+d2 ab 69 11 b6 8c 6b b2 b4 54 61 d9 a3 1e b9 62 \r
+b4 8b 12 06 c6 8d 18 ae 90 92 d6 e5 c2 2b 39 a4 \r
+31 \r
+\r
+# Prime exponent 2: \r
+02 98 04 e1 32 fa 3a aa 4b 15 26 bb 50 3a b4 d4 \r
+71 f7 6f 69 65 42 11 a6 89 3b 0c 13 74 29 87 9f \r
+cc f7 23 41 30 82 54 76 ac 20 d7 fb d3 8c 3e 24 \r
+86 58 76 48 6e e8 a7 bf 99 58 45 9e ee 95 81 78 \r
+29 \r
+\r
+# Coefficient: \r
+02 11 97 5e 88 56 d4 ea 9d 1d df 87 b8 7d 39 79 \r
+2f 1c f7 e2 f1 82 f4 a4 e6 91 e5 00 2b 10 a0 8a \r
+46 dc a1 a4 f4 83 00 85 d8 d4 0b ea 1d ff 11 b0 \r
+c0 df 20 22 43 eb 99 3e 58 0a 94 49 9b 9c ed d2 \r
+be \r
+\r
+# PKCS#1 v1.5 signing of 20 random messages\r
+# -------------------------------------------------------\r
+\r
+# PKCS#1 v1.5 Signature Example 10.1\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+b2 d5 88 50 9c 2e ac da 28 1e 76 71 cb a2 fc a9 \r
+14 ef 73 a3 ae a9 20 20 43 ea d6 b7 21 25 c1 b0 \r
+d5 cc 15 41 46 20 d5 73 d7 ab 0b 3a 8a b6 6a 92 \r
+df 87 0b 75 b1 c4 d6 8e a7 05 6b e0 41 9e a2 53 \r
+e6 b0 8b 12 9e 0f 64 f1 0a bf 82 e1 67 f8 e3 e9 \r
+28 2e 7b f7 1b 04 3b aa 2b a2 d8 75 6d 46 b6 d3 \r
+6e 97 34 15 f4 f8 c0 eb 43 fc 60 4c ed 49 3d c0 \r
+46 a2 5a 11 9b d1 58 1d bb 59 7c 3e 67 c2 fd dc \r
+39 6d f5 d2 3b 7b a8 0b d2 e3 12 90 bf c2 62 25 \r
+e0 09 55 a9 8d 91 19 11 a3 99 67 6f bb \r
+\r
+# Signature:\r
+07 9a 7b 91 6f 67 41 17 f1 d8 77 f4 93 43 25 68\r
+41 48 d5 d0 b0 d5 c2 c6 15 6a 11 15 9b c0 bd 30\r
+d0 a7 35 34 dc 94 45 eb e2 06 d6 07 5e b4 ea 7a\r
+7c 04 32 bd 44 b8 3c fa e4 68 5a 9e b9 a9 7c bb\r
+fa 4e 82 f7 1d b5 1a fa 0d 27 cf 27 f0 60 9b b3\r
+f8 80 64 13 24 7d 5d 49 54 f7 89 a1 01 bf 39 21\r
+72 8b 48 7e 85 fa 3f d4 dc d7 2d 04 44 8e 42 d3\r
+ec 05 cc 47 5d 74 cb f7 65 c3 4e 3e c1 4c ca 50\r
+40\r
+\r
+# PKCS#1 v1.5 Signature Example 10.2\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+ca 25 18 a5 a2 24 b2 3d 42 05 d8 dd 7e b0 4c bd \r
+cd 0c cb 82 bc 87 96 1d 85 9d 66 00 b1 ac 3e 25 \r
+a9 40 7b 6c 06 50 27 c0 40 81 f4 45 a2 30 ab 93 \r
+08 e7 55 f3 3a 75 97 73 be 6b 96 9e 0e a7 74 aa \r
+6e 33 4f b6 04 18 42 75 f3 6a 03 1d ae a6 51 86 \r
+97 79 5b d6 a7 d6 69 7b 40 6d a2 ce ce 15 dc 11 \r
+3d 85 44 98 85 61 13 1d 4f c6 f6 e3 c5 80 d8 06 \r
+80 7d f2 c6 85 65 09 54 2e 4e d3 9d 34 6e ba 15 \r
+97 6a 8f d0 1d 79 41 b0 16 56 06 c7 61 76 64 9a \r
+16 10 05 a0 \r
+\r
+# Signature:\r
+00 be b9 21 ce 74 89 81 9d 2f 85 c7 88 39 a2 7d\r
+7e 19 ea 0a 76 4a c5 31 01 e8 6f 31 70 a7 6e 31\r
+8a 7e e8 9b 1f 5e 23 e7 e2 db 96 66 eb 43 91 b2\r
+79 2a 57 67 ee 35 9b 5c 71 e2 74 79 10 c8 2c 60\r
+83 d6 d3 48 29 b9 6f a5 a2 ec 0f 62 f1 bc da 5d\r
+78 f8 dc 3c 65 0b 94 e3 2b 38 60 da 5f c5 b1 7f\r
+bf 68 7e c0 07 5a 9c 73 dc 1e 98 d1 f3 6a ae c4\r
+49 3f 78 91 e3 ab 08 e2 04 2d 8b 1e 46 2e 8c 4c\r
+33\r
+\r
+# PKCS#1 v1.5 Signature Example 10.3\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+d4 33 d1 5b 2d 61 b8 6a c8 ec 0d ae ba 65 e1 1d \r
+ed 3c 38 84 25 25 e4 b7 c8 e4 53 b0 f5 53 cb 4e \r
+b8 75 a6 9d 78 16 f5 4c 87 79 3e 3a bb 79 fc 55 \r
+11 35 37 b4 76 29 65 cf ee 58 6e 0a 17 99 78 51 \r
+e3 dc 9e af 6f 1c 9c 2e 98 c9 61 3e 3b be a0 13 \r
+ff 58 61 6b 2a b0 5a b3 24 a9 c5 ff 4c 5e fd d9 \r
+90 dd 97 d9 16 93 c1 eb d4 c0 9c 73 21 16 c8 df \r
+c3 ec 51 5c 20 53 2c ba 7e 47 58 c6 8a 69 cf a0 \r
+ac 31 86 \r
+\r
+# Signature:\r
+03 ae 3b e1 c7 44 6a d3 ef d8 ba e6 1b 3d 32 d3\r
+ef 15 24 82 b1 bf ee 31 2f e9 e6 be ee ab 8c bd\r
+08 f4 c8 f9 cf 06 7d ea b6 ba c7 c0 fe cd 87 bb\r
+ab c7 f6 79 8c 77 ef 1c 3f d8 bc a2 8c f9 ec e6\r
+56 79 5f 60 b3 78 75 ea be f8 21 53 a1 2b c7 fd\r
+e3 fb c9 e5 e1 48 f4 e1 6c b7 2a 77 3d 9d d0 23\r
+17 f7 0b 33 91 40 08 05 e8 5e 7a 23 56 7b 34 aa\r
+65 a3 5f 74 41 70 af fc b3 23 37 1a d2 ab 9f 1e\r
+4d\r
+\r
+# PKCS#1 v1.5 Signature Example 10.4\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+7d 0f 5b d7 90 0f 1e 65 65 4e 6c 7e eb 06 4c b8 \r
+28 f3 55 d6 de 9b f0 d3 47 83 ff cb e8 0a b1 b8 \r
+ae 07 b7 f1 e3 f5 a3 20 dd 9b 8b 76 be 0e 97 72 \r
+de 19 a8 d3 \r
+\r
+# Signature:\r
+09 e7 a5 30 41 71 da 63 8b e7 60 1f bf f6 e4 95\r
+36 f3 36 60 82 25 3a bc 1d b5 d1 b6 54 93 da 59\r
+5e c9 3c 37 f5 89 0b 5f 47 15 bd 5e 80 c0 bb c5\r
+c6 3b 74 af 2e 60 43 91 32 d2 52 13 75 0b c1 de\r
+30 2e 3e 8b 83 da d2 de 0d ff c4 fa ab 40 56 dd\r
+7c 40 5e 04 d5 94 24 53 65 9d 49 0f 3c 3d aa 7d\r
+3f 11 70 11 81 6b 56 59 01 04 de 7f 9c 05 23 73\r
+e2 dd e4 14 49 04 27 a5 89 64 49 3f f4 5f 08 a6\r
+e8\r
+\r
+# PKCS#1 v1.5 Signature Example 10.5\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+d9 6a a0 91 c1 60 b5 52 b1 6d f0 65 8f a8 \r
+\r
+# Signature:\r
+0b 69 75 4e d6 d7 a7 d2 d8 5b 2c 7a 30 6c 78 d6\r
+3d 0f fa 43 8f 43 be ec 3a 02 86 ce 57 e7 e0 f8\r
+5c a4 30 e6 39 08 c0 fa 58 4b a2 50 5f 8c 94 65\r
+6e c0 24 94 bb 03 2f 92 0c 4b 6b 8c 94 3e 6b e9\r
+2f 57 8a a8 cc df aa c0 a5 4b 8a 9c 0d f5 48 27\r
+1f 89 73 c9 ff a2 a2 0c 84 76 2e 90 17 e7 45 2e\r
+5d 74 da 69 0f 75 c0 99 ab 91 e2 a7 96 3b c5 37\r
+f9 c2 4c cc 3c 41 8c 6e 98 58 61 d9 3d aa b2 e6\r
+13\r
+\r
+# PKCS#1 v1.5 Signature Example 10.6\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+56 f0 48 64 5a 49 fa 01 41 f4 d6 74 aa fc f2 ff \r
+fa 83 f9 b4 52 f1 fe ed 43 05 7c ac 27 67 5e a1 \r
+a1 41 d8 7f 92 f9 ce bf 6e e4 f7 8f 8e d4 c3 a2 \r
+9d eb 72 97 47 b4 f9 8e 4c 75 90 aa a8 d5 6d bc \r
+61 d3 8c b5 62 22 26 f6 8e 43 f9 c4 f4 c0 39 98 \r
+ae e9 09 34 39 5b c8 40 c8 6d cc 88 74 77 6f 43 \r
+03 9f 56 a8 9d 24 bd c4 b3 05 df 09 e5 ca 0c 05 \r
+12 ad 6d 15 71 91 9a 3d b3 a6 bd 98 b7 82 0a da \r
+08 69 d2 25 a4 04 02 7a cb 6d 76 7f c3 14 db 37 \r
+7e 8d 1d b6 ef 0a f2 94 54 db 2b d4 c1 ce e0 13 \r
+a5 97 43 48 6d 32 32 95 83 cf 80 11 3c da a1 0e \r
+4f 2c ea 6c 4f 9f c6 e4 e2 71 6e de 85 72 7c 3a \r
+fd 43 49 46 09 77 76 30 ee 33 63 7e a3 5c 9b 4f \r
+68 8e 49 2c 3c 64 0d \r
+\r
+# Signature:\r
+06 66 ef 71 e2 c8 a1 eb 1c 46 40 3f d2 3e 52 18\r
+83 ad a1 b9 bc 5f bd 35 3b bb 3c 3d fb 57 0a c1\r
+c7 21 fa f3 f5 97 32 f2 13 37 73 80 39 79 48 46\r
+2f d2 0a 3f 0e 5e 08 91 a6 b0 7c 31 b3 60 aa a9\r
+65 e2 f0 93 0e b3 41 ee 77 ec 43 90 65 c0 aa d9\r
+17 87 ab 6d 2e 6c de dd f5 54 81 65 1a eb bf 9d\r
+11 d5 4b c1 13 26 18 3e bf f4 9b d4 0b df 76 d7\r
+ef 69 b6 7e a3 96 8f a8 49 03 2f b8 24 b6 dd 6a\r
+e3\r
+\r
+# PKCS#1 v1.5 Signature Example 10.7\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+79 da 89 e3 55 d5 51 a0 e0 31 f4 fb 71 ab 6f 41 \r
+44 c4 76 2e 07 d0 64 14 33 cb 5e c8 61 34 96 3f \r
+7d 2c 4d c7 be b5 c6 d4 61 57 c6 c4 e1 4a 4b 9c \r
+7a 2c 0d 46 0f 1f c0 62 ea 1b 4f 98 74 d5 b1 c2 \r
+9a e2 f2 a5 b3 90 62 e4 12 12 e6 5c 85 c2 8e 76 \r
+75 89 96 5d 17 10 ad 5b c7 6f a5 a6 72 9a 06 fd \r
+49 6e 2e 09 97 e5 73 37 bd 51 6e 6b c7 9b e9 e0 \r
+70 aa 7b 86 c2 dd f1 4f 94 98 5f e1 58 2a 29 2c \r
+d1 39 34 b3 c3 8d fe 59 77 ed 1d 9f 8a d3 24 c0 \r
+dc 07 e5 85 3c 7e 48 90 bf bd c1 a0 1e cd 72 c5 \r
+ff 68 a0 2f 1e \r
+\r
+# Signature:\r
+0a 06 82 f7 42 e7 43 e1 c7 da ba ac 61 8a 78 6f\r
+28 ed 13 a6 58 7a df c3 3c 98 29 d7 52 c1 3e f2\r
+7a 00 c7 e6 d4 5e 27 17 1a 58 41 77 1d 78 69 8c\r
+6c c6 67 78 b8 c0 93 38 e3 5b 9b 6f 59 c0 64 ce\r
+b3 eb 20 ce 90 9a 5c 6c ea ae bb e9 3e 86 c7 c5\r
+ff 4a 39 17 f1 26 81 96 32 cf 96 fa b1 d3 91 73\r
+a7 ae 7f c2 ff 5c 0f b4 09 05 35 da db 58 d8 7d\r
+0d a3 db 32 ec ec 13 71 8b 3a c5 c3 0b a8 02 e3\r
+8b\r
+\r
+# PKCS#1 v1.5 Signature Example 10.8\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+e6 9a c9 43 3e 6c 28 ac 53 f8 03 4a 86 8d a9 88 \r
+3e 31 9e 82 e6 bc 2e 49 45 5e 6e 4f 09 8b 53 f2 \r
+87 a8 58 da 1d 87 6a 9a 5a 6a 9f c1 4f d2 42 38 \r
+cd 4e 4b 57 31 07 7a 4d bd d5 03 8a 9b c1 f5 de \r
+f4 3f ec 77 f6 7e b0 62 fa ef ef 7d 04 29 23 8b \r
+25 d0 31 85 78 96 62 3a 3f 1d 37 bf \r
+\r
+# Signature:\r
+08 a0 20 e4 20 98 78 f1 e6 37 ad 59 da af 83 5d\r
+af 4c a6 64 84 47 94 c1 c6 48 f0 e2 23 3d ba 75\r
+48 bd 16 1f 0c 0a 18 24 d7 62 03 1a 41 75 72 84\r
+2f 8e 64 4a a9 3f 9d 91 dd 77 09 e1 6a 42 9c c1\r
+43 90 3e f4 f8 37 a4 58 39 6b ca c2 40 92 b0 17\r
+24 c6 fe 3d d1 ad 24 3f 3f 70 b5 ae 6f aa 09 f3\r
+70 ca a5 12 10 4b 91 76 06 0d f2 bf 12 1c bc e9\r
+19 8e c2 fe 45 a5 9e bd dc 46 75 32 b5 af b9 b2\r
+35\r
+\r
+# PKCS#1 v1.5 Signature Example 10.9\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+45 e0 90 56 a2 8e 4b 2e 7c 11 f6 5e 68 8a 1e 3c \r
+33 f0 e5 2c 9a 03 6c 09 d8 1d e5 a6 da b5 8d 4d \r
+55 cf 41 1b 53 ad 64 6e 83 a3 4b 0c 08 c2 21 ae \r
+03 76 ab 76 a7 9d 1f ee 67 1a 58 44 20 56 4f 8e \r
+85 2e b6 f2 d4 27 ae e0 a0 96 dd 72 db e8 50 7c \r
+67 7f 8a a0 0e b7 c2 5d fb 0a 49 dd 88 a6 c7 84 \r
+76 b8 00 11 b6 82 8b 3a af 46 47 79 44 22 ba 6b \r
+d6 3b 7a b0 e7 da fb d3 6f 6c 41 de a0 3d 73 22 \r
+35 64 96 94 60 d9 28 54 0b 73 92 57 e7 0b b6 8d \r
+5c 65 3c 37 96 94 58 95 \r
+\r
+# Signature:\r
+08 71 7d 50 86 a6 45 3b de ff 77 d4 c2 b8 56 e3\r
+ba 99 0b ab f6 97 01 df 6c a0 a3 b3 a8 1b 55 69\r
+7d 31 88 9d 10 0d 68 95 c9 7f 0a 56 b4 71 68 c9\r
+8d a6 2e 59 ec 79 d7 ae ab 2f 9a 57 07 46 98 8a\r
+26 f4 23 57 6c 70 3f d8 41 ae 51 c9 c2 29 a2 e9\r
+c2 5f e9 4c 5b 6c e2 fa 64 54 12 be e6 59 fa f6\r
+09 a3 2e b2 c0 5b ee ab aa 4f 58 ca ac 31 33 e5\r
+ea aa 27 34 4d 30 ee ca 22 c6 eb d8 d9 e3 44 41\r
+0e\r
+\r
+# PKCS#1 v1.5 Signature Example 10.10\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+b8 1c 8b c4 ac 1f d9 71 b2 1f 02 7e 06 f4 d8 7b \r
+34 d5 76 9d 23 c8 59 9d 1f 15 7b 08 a7 f9 2e 34 \r
+19 fe c4 c8 c1 b3 4c a4 63 c7 68 b7 2e 07 f9 da \r
+bc 3c bb dd 8b 56 17 cc 25 28 75 00 2a 1a 13 92 \r
+af 0f af c0 8c 72 11 75 8f 3c 04 20 50 ad 73 1b \r
+63 6c 0e 83 19 1a 79 de 5a a2 cb 94 dc 8b 0b dd \r
+e7 5d b7 d0 c8 ba fb 42 23 d3 47 b0 24 b3 d9 c6 \r
+b2 39 61 9b 5d 8b 63 46 ea 86 fb 8f 24 c5 84 dc \r
+1a 47 79 1c b7 c8 c7 eb f1 ed 43 8b 88 \r
+\r
+# Signature:\r
+01 b9 f4 33 94 c7 cb 88 5b fd cc 3c 84 96 22 23\r
+e8 aa a9 4c 6c 9b 79 05 40 1d 24 f0 dc 44 3b 2e\r
+8d 84 0e 28 a9 5f a2 2e 1a e3 6f fe 08 96 6f 38\r
+d3 87 14 cf 68 da 8d b2 37 64 b8 8c 4b b2 be 4f\r
+d3 da 9c cd 1b 50 69 42 aa 9d 73 fc 09 38 2d c3\r
+30 83 14 70 6e 6c e2 7f 00 76 1f 3c 9b d5 4f a0\r
+e3 1c 96 71 9a fb f0 76 3e 35 ca d8 89 b7 2e 13\r
+bd 12 b7 6d 6f 20 20 fa f6 1d d3 d7 08 22 8d f0\r
+6d\r
+\r
+# PKCS#1 v1.5 Signature Example 10.11\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+d0 32 28 83 e5 98 16 3d 72 20 36 da 3e 63 2a a6 \r
+55 97 ac bc d1 f4 76 03 10 96 96 f9 b3 9f dc \r
+\r
+# Signature:\r
+07 8d 17 ab 8e 6f f0 be 50 b3 53 9e b0 3a e8 f0\r
+90 3b 7a 07 74 81 78 1f b0 b1 f0 9e dc f7 78 86\r
+31 2a d6 c0 60 27 4f 0c 38 9c 16 31 40 40 c8 d7\r
+d9 90 9c b7 5d f1 8c 82 d6 2d d3 4e b5 9c 6a 87\r
+d3 c4 6a 7e f7 47 4a 5e 44 7f 77 44 a6 a9 2f 59\r
+90 ea ec 7b fb 00 84 4d 68 4d 30 7d db 49 81 89\r
+41 49 e7 52 bf be 2e 77 05 7d a7 60 54 69 af 7f\r
+fb 67 27 a9 98 1b 94 39 ca a5 d8 0e 6a e3 b3 d6\r
+51\r
+\r
+# PKCS#1 v1.5 Signature Example 10.12\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+e8 74 2f 04 b5 65 4d 92 88 b2 31 a4 7a 36 58 39 \r
+bb 01 be 87 \r
+\r
+# Signature:\r
+09 b7 53 06 a7 21 2e a6 f4 7e b0 cc f4 e2 e0 d6\r
+f8 f3 ab db 9c dc fa ad be 51 92 2f 92 ea 62 62\r
+3c 58 ea 74 ea 1a 24 7c 9d 73 1f 2c 03 35 36 b3\r
+52 73 c7 17 49 5f 32 5a 60 40 5b d5 f5 e4 05 b6\r
+80 27 9e 75 21 60 47 87 40 45 72 16 dc 92 9d dd\r
+65 de a5 05 53 55 46 e4 77 0f 82 11 b8 49 c3 65\r
+21 8e 56 6e 5b b4 1b fc 36 1b 65 cd cc b0 e6 04\r
+c9 ed b9 70 ee 6a 28 6a 1f ce c0 ae 9d 92 55 8e\r
+ab\r
+\r
+# PKCS#1 v1.5 Signature Example 10.13\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+a0 3c 2b 85 fd e4 64 68 d1 c5 06 37 b0 0a 72 dc \r
+fc 32 c4 16 31 73 9c 06 02 45 f5 3e 57 c6 6c 51 \r
+76 6f 24 ea fd 93 e6 c6 67 43 48 05 91 bf 14 44 \r
+6e 04 0b 67 a4 f8 46 99 57 6c 2e 14 63 ca cc bc \r
+b0 73 e4 b7 ec 6d a6 c8 cb 41 d4 a1 23 c7 48 cd \r
+7e 83 d2 61 e5 4c 2f d2 bc 49 5b c4 c4 4a 78 f9 \r
+82 00 34 03 09 2e c6 96 0c 08 8e 2b cd e3 48 a2 \r
+e0 e5 5a 4b 4f 42 ea b2 29 b9 5c 38 3f 21 13 ed \r
+6c d1 f3 f3 16 7d e3 d2 8d 36 2c 8d 78 b2 eb 6e \r
+31 62 0e 34 b2 f0 f9 41 da cd f7 b4 b8 56 8c 6a \r
+86 3a 55 1d 7b d4 a5 d7 09 3e da 69 e1 e2 80 56 \r
+dc b1 eb 69 ae 03 ad 74 be 72 a7 5a e8 fb 56 a2 \r
+71 25 ca 3d 2d b3 76 9d 13 d3 5d b1 08 e2 64 4a \r
+7f 3b 37 93 8f ec 97 62 31 52 06 d3 0c cf d5 76 \r
+ae 7d e0 76 98 69 e5 04 4d 07 64 6c f7 8c 64 a4 \r
+86 48 0b 0f d4 2c c7 b2 46 \r
+\r
+# Signature:\r
+05 8d a5 49 4c 4e 98 aa 12 1f 67 f6 5a 2c 86 54\r
+25 a9 e6 00 2b 22 3f 03 88 80 97 53 57 3b 4f 33\r
+4d e4 5d 8f 00 07 25 5d 11 2d dc 84 db 26 67 00\r
+e4 40 b5 a8 69 00 c3 d3 d3 5b 02 4c 18 d8 a2 5a\r
+58 00 22 6d 0a 56 d8 38 d8 91 9e 6d 5a 87 30 d6\r
+19 49 90 15 ec 46 65 c6 3d 77 80 83 a0 42 dd 4f\r
+05 2a 1b bb 5f 40 80 cb bb 41 fa 94 5b ad 6a 74\r
+77 9f 68 07 25 e4 7a 08 a0 51 4f 35 0f a5 ad f9\r
+0a\r
+\r
+# PKCS#1 v1.5 Signature Example 10.14\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+c4 0c 70 f2 6d a5 69 48 6b ac e7 85 da 32 e3 37 \r
+a0 eb 94 fb 3a 0a a4 09 c5 77 01 75 c8 e8 cb 2b \r
+aa 8d 2a 1b 98 46 c3 7d f7 d6 71 03 6d 5e 91 \r
+\r
+# Signature:\r
+05 25 61 28 af ba 1f 55 d8 1f 79 ea 33 87 91 47\r
+a2 4a d7 77 93 46 ee 79 8b 21 1c 24 71 53 ea 38\r
+d2 6b 21 70 65 f6 1e 01 10 b5 3d 72 cb 64 93 4d\r
+9b 1a d1 b3 de c3 32 09 2d 25 8f 0c af 1c 4a ee\r
+8b 23 e0 9b ab 0f 0c 27 88 58 b4 41 d0 8c a3 ae\r
+9f 00 aa 9a 3f 01 8f 7d 9f a9 8a 18 df 0d 24 84\r
+7e 56 7a 47 f5 77 9b d1 79 3a 4b 02 52 f2 ba d4\r
+0c 9c 4a 81 30 1c c2 8c 26 09 d7 bb 33 37 e9 7f\r
+14\r
+\r
+# PKCS#1 v1.5 Signature Example 10.15\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+9e 6d cb 11 e0 e8 47 71 39 fa f0 41 a7 4e 2b ed \r
+64 3a 62 ad ed ac 7c be f3 65 ec c4 3a e4 e5 82 \r
+60 bc 72 46 23 bd 63 42 dc 66 0d 66 14 2e a6 36 \r
+80 71 5f 52 2f f3 cd 4b 63 6f 84 aa 9d 75 fb fb \r
+c3 84 10 7e 43 00 4d 98 6f bc e1 a2 7f 7e cc 7d \r
+02 39 2c \r
+\r
+# Signature:\r
+0c cf 23 4e b4 80 08 5d 92 0d 37 d6 87 96 5d 2f\r
+d2 e4 a4 f3 bd 3b f7 dd c1 6b 5d 62 a6 90 32 74\r
+20 7c 6f 90 83 6e 29 ff c6 3a 57 f9 81 30 c5 25\r
+23 25 19 c7 08 f0 dc 8a 12 55 ab 55 db 1a 2b 9a\r
+bc 11 06 16 02 07 5f f6 f9 7f 90 92 79 6b 98 87\r
+1a 6c d5 d2 61 7d dc 9d 25 5a 73 00 c9 10 fd 21\r
+0b 14 a9 81 e5 a0 e0 c6 bb 2b 04 5f a9 75 68 98\r
+b9 3b 8a 63 45 44 d7 7a fd b1 cf 0e 79 58 f1 1a\r
+43\r
+\r
+# PKCS#1 v1.5 Signature Example 10.16\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+20 bc 46 3b 5e 12 20 a3 9c 84 e8 9f e6 71 6e ec \r
+ab 55 55 f8 bf ce 60 cf b8 37 93 cc 40 a4 da 1d \r
+22 c0 ab 4e aa 93 1f b7 47 be 35 f1 cf 6f b1 46 \r
+5b ef 1d f2 76 0f cb 3f 70 d3 e2 96 e7 b2 70 45 \r
+0d ff e2 d5 88 c4 39 6a 5f 6f 1e 63 87 aa 86 97 \r
+1f b0 ad 24 df 55 04 43 dd 12 2b db 2c f3 c9 ed \r
+61 25 fe 55 ce c9 91 cb ae 8e e1 56 2a 8c 0f 4f \r
+36 4f 8f 0a 80 cb 30 fd 99 44 0b f6 55 f0 80 4f \r
+92 96 8c a2 e0 1c 0d 5a bb 4e e2 67 63 6d d4 f5 \r
+11 a8 d3 29 41 16 21 6b ed c1 08 86 45 e4 65 d8 \r
+e1 98 b8 af e1 cd 54 24 b4 2a 53 3c ed 19 8a d5 \r
+97 \r
+\r
+# Signature:\r
+05 1b 71 42 66 06 6b bb 81 9a 2a 38 05 a8 9c ff\r
+46 18 75 c0 95 f4 f3 89 82 d1 af c2 ad 2f 14 24\r
+50 b8 a7 52 94 7f 03 1c ce 2c 9c 34 0c 8a c9 f9\r
+f7 a5 48 b7 cc 17 e4 cc 52 56 96 ea 0c 87 53 a1\r
+e1 5b cb 98 5d ea ec 77 6f b9 e7 d9 f7 58 62 f8\r
+98 35 23 d9 f8 71 c6 3f b7 56 1a c7 1c 37 6b f4\r
+95 d4 32 38 59 bd 14 18 8f cd fb 4b 37 ab cb 5d\r
+c1 a5 8e ed ea 7e 0f e6 2a c1 6e 20 8a ab 4c ee\r
+26\r
+\r
+# PKCS#1 v1.5 Signature Example 10.17\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+92 da 26 0b c2 13 b7 2b 48 a0 57 53 50 3d 00 a1 \r
+db fd 02 ac 7b 9f d4 4d 24 01 ea 7a d5 8a d1 86 \r
+1f da 53 63 29 ae 41 73 c9 16 80 05 b9 66 2c 05 \r
+cb ea 47 ad 86 4a f7 cb 16 60 2d 3d 18 34 71 bc \r
+98 bc c6 2c 6d 00 d3 34 bf f5 b9 0c fe 7d 7e 12 \r
+d0 7f e7 d4 cb d9 dc d3 c4 c2 34 90 be 8c ba dc \r
+08 c9 17 79 80 37 3c 79 eb 4e ea 6d 81 a6 be e2 \r
+27 0b f4 20 f9 19 79 ad 3f 27 1f d6 8d d4 28 3b \r
+e8 14 10 92 8c a4 5b 9d eb 58 d3 ae 98 b2 f4 fc \r
+a6 21 25 95 0b 5e e1 28 db a1 05 c3 5c c3 98 d1 \r
+5e 74 2b ba 92 69 7b 5c 62 b2 67 ce 01 14 1c ec \r
+ef 80 75 07 de 29 c4 85 30 5d 0a 99 09 43 23 0d \r
+8d 9b 72 52 ee 0b 19 56 de 84 5f 2f bb 28 38 78 \r
+5b 47 0a 7c 20 53 db 39 6b 31 5a 30 d8 a7 f9 1c \r
+ff fd 03 e8 a3 9b a8 bc \r
+\r
+# Signature:\r
+03 e2 3f 86 52 37 4d 48 d3 81 c3 78 35 3e b4 7d\r
+90 64 cd 70 8e 1b 9b f6 88 70 4c 04 c0 09 00 88\r
+46 e6 a4 7e 0b d2 e3 0c 33 40 f5 d4 e1 9d 2d c5\r
+d8 89 0c 8f 01 04 dd 6f 5d d6 ca d9 c4 d9 94 84\r
+09 c3 cc 0b e6 70 71 9d d0 48 41 80 89 1c 93 5b\r
+99 79 db 8e b4 68 a2 3e 4e f4 60 29 f3 af 14 57\r
+4b d1 0b 47 3e dd 9b 12 7a 30 6e 51 24 ad a4 02\r
+c1 48 f5 1b 52 e7 e6 28 bf ac ec 3f c2 54 3a 0f\r
+92\r
+\r
+# PKCS#1 v1.5 Signature Example 10.18\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+86 03 a5 62 2a 2d bb bc bb e5 33 30 e9 08 d5 a2 \r
+5f 6e 67 a5 1e 07 68 d7 c3 c3 fb e8 b9 2e 8b 1b \r
+36 dc 00 74 3c e3 3d a0 f1 c8 cf b0 0d 63 ed d6 \r
+b2 25 2f b6 72 13 97 d2 50 4b 30 ed 1d 29 3a 82 \r
+e2 44 c9 51 bb fc 24 29 8a 42 ff ee 26 e4 56 a7 \r
+be 10 5c b5 e3 7b 3d 25 de 28 bf c0 10 42 c4 a8 \r
+2c e8 70 45 54 87 e5 b3 0e 26 f8 d5 39 8c 86 12 \r
+6e \r
+\r
+# Signature:\r
+08 22 fc 22 a9 cd 87 7c 09 b6 f9 2e 80 17 cc c0\r
+28 d5 37 99 67 c7 d0 4e f3 2f 86 9c 7e f6 7d 59\r
+3c 77 45 f6 29 d9 3d f2 60 03 8c d3 33 ea ee 92\r
+35 9f db bf 84 62 3b 7b 55 14 23 5b 83 06 27 2f\r
+4e fd 13 a6 70 0b e9 28 9a d5 4e 57 d5 2d 1f eb\r
+b4 6a 37 af d6 95 94 2c 4c bc fd 37 68 f2 82 1e\r
+88 8e fa 0e 2c 5f d3 c9 c4 2c c3 55 50 d7 95 5c\r
+db d3 5c 8e f8 58 1b 41 f8 dd ab 26 18 26 2e 3d\r
+ff\r
+\r
+# PKCS#1 v1.5 Signature Example 10.19\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+06 7d 4b ec b0 3e 1e b2 75 ae 22 50 7a 77 a5 39 \r
+6e 71 9b 5f 00 b1 05 95 0b c7 99 8e 08 03 da 57 \r
+a4 de 08 a4 07 8b 9a 00 d2 d4 6f \r
+\r
+# Signature:\r
+09 10 8d 44 57 5f 61 4a 68 3e e4 d7 8b ce 1c 58\r
+f5 24 36 87 cb e9 c5 48 34 60 b6 5d f2 36 92 7d\r
+bc 78 c0 64 39 ce 1c 7c 51 97 39 c8 f8 95 00 82\r
+d9 56 d6 0f c3 64 5b a7 af 8e 78 89 54 70 63 1b\r
+b4 da 00 c0 1b 98 2c c1 1c 68 d2 65 0c 7c ae a4\r
+a2 6e 21 0f f4 b1 ca e1 db 50 5f ce a9 29 34 87\r
+b2 07 31 78 ca 24 5c f0 ca 23 56 ba f8 65 54 6b\r
+54 af 95 35 ba b1 8d b6 79 ef 56 27 09 29 79 c0\r
+a8\r
+\r
+# PKCS#1 v1.5 Signature Example 10.20\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+88 4f c5 02 c8 82 48 49 47 8b 2e ac 1e 7e bb b7 \r
+ca f2 8e eb 48 89 45 86 02 ec 70 35 81 d0 5e f9 \r
+b1 a4 22 0b d2 f9 22 f2 5e 46 4c 88 07 01 c8 a4 \r
+5b 1d 1f ab c8 66 2e b2 49 40 04 26 c2 22 62 38 \r
+eb 8a d0 f9 06 9c 90 f0 01 82 77 44 80 25 a6 41 \r
+80 ed 55 d1 af d2 7a ff 4f 00 70 2f 71 5d 29 10 \r
+00 0d f3 92 5c 70 10 ff 11 7f 6d 8d 2a 81 67 09 \r
+48 9e fd 29 a4 5c 59 23 17 7b f9 2c d0 bf 6b 94 \r
+74 5d 34 8a 14 4e 98 74 0f 72 22 6a 3e 2a 9d 41 \r
+7b 7c 1f d8 f8 95 f5 15 c5 c6 d4 06 a7 2b dc cd \r
+39 15 2c 30 fd bd da 0e 62 82 3e e9 df ab 34 32 \r
+e6 64 2e ec b6 98 7b 90 46 e0 40 a4 78 a4 df 64 \r
+8d ef b3 01 6a a4 43 d0 67 a1 fa 41 55 55 53 74 \r
+f8 ba 32 5a 8b 55 e4 d6 b5 fa 09 0e eb ae c9 c9 \r
+2e 26 1c c0 4c ea a4 8b 3b ed 7b 3f 87 d3 \r
+\r
+# Signature:\r
+0b 41 b4 12 19 71 26 15 9e 9b da 1a 24 62 c8 a4\r
+fd 3d ff dc 6e 98 e4 db fc 06 cf cc f1 6f 74 fc\r
+b5 23 38 af 14 ed 39 36 e0 2c 1d 7e 77 23 6c c6\r
+a4 89 f0 0f 08 98 52 de 5c c4 25 b4 50 94 a0 42\r
+e3 85 46 4b 64 c3 b2 ff d0 1f 19 a0 1c 2c 03 81\r
+f7 58 a6 73 65 d1 e6 5a 70 7b 13 4e 3f 8a 93 16\r
+b4 aa cb 7e 85 1a 5e ab 3c d8 11 bd 45 22 dd 14\r
+1a 00 15 7d c3 fc af c4 15 4c af 05 93 ca 62 10\r
+2e \r
+\r
+# =============================================\r
+\r
+# Example 11: A 1029-bit RSA key pair\r
+# -----------------------------------\r
+\r
+\r
+# Public key\r
+# ----------\r
+\r
+# Modulus: \r
+1e d7 ee a9 40 5f 50 7f 94 16 23 a1 7b ea 71 7b \r
+86 0d e4 4c b7 76 87 b8 b8 5a 6d 7d 1e f4 f8 62 \r
+8d 25 7c b9 42 38 c6 25 ba 25 d4 6a ae 59 39 60 \r
+af 79 f7 5e 28 ab 63 ac 3c ac 48 20 b8 2d a1 cf \r
+75 0d 6c 93 0d 6b 82 78 54 aa f6 ca c0 c1 7b 80 \r
+b0 29 f5 d3 19 cc ca 66 5c 56 94 f5 4b a5 f0 96 \r
+f4 54 34 13 ec 4c 5e 97 cc 1d da 89 d2 af d4 28 \r
+57 87 59 03 2a df 92 89 50 65 ba af e8 8d 2d 8b \r
+61 \r
+\r
+# Exponent: \r
+01 00 01 \r
+\r
+# Private key\r
+# -----------\r
+\r
+# Modulus: \r
+1e d7 ee a9 40 5f 50 7f 94 16 23 a1 7b ea 71 7b \r
+86 0d e4 4c b7 76 87 b8 b8 5a 6d 7d 1e f4 f8 62 \r
+8d 25 7c b9 42 38 c6 25 ba 25 d4 6a ae 59 39 60 \r
+af 79 f7 5e 28 ab 63 ac 3c ac 48 20 b8 2d a1 cf \r
+75 0d 6c 93 0d 6b 82 78 54 aa f6 ca c0 c1 7b 80 \r
+b0 29 f5 d3 19 cc ca 66 5c 56 94 f5 4b a5 f0 96 \r
+f4 54 34 13 ec 4c 5e 97 cc 1d da 89 d2 af d4 28 \r
+57 87 59 03 2a df 92 89 50 65 ba af e8 8d 2d 8b \r
+61 \r
+\r
+# Public exponent: \r
+01 00 01 \r
+\r
+# Exponent: \r
+0d 93 80 72 b1 6a 02 f5 d5 0a 15 ae eb eb 5a fe \r
+43 18 74 48 2c 6d 18 fa 7e f3 16 c4 7f 4e d6 d2 \r
+12 4c d0 e4 7e b8 9c c7 58 73 74 57 6c dc cb 3b \r
+ba a1 95 f7 b5 31 13 93 69 b5 6f 9e 2f 53 ae a8 \r
+ac 7a 97 e1 d7 45 8f 52 6c f7 d7 10 c4 90 2a ae \r
+df 99 7c 11 94 b8 7b 62 cc d8 da b8 ff 5b 67 d4 \r
+0f e8 3d e1 b8 2b 91 60 9a 7c 5c f3 92 29 eb 3a \r
+1b 2f 0e bf 0b 12 5c b8 00 91 a0 7e bc 77 9c e7 \r
+fd \r
+\r
+# Prime 1: \r
+05 90 a1 e5 18 71 07 fa ef 1e 0c d5 2f a2 dc ad \r
+a2 d5 8a bc c9 e0 73 8f f4 85 0f 7d 2d ee 19 82 \r
+3f 6e 3e 2c a9 11 b7 17 4b e7 0b 15 c1 b8 87 e0 \r
+ae 15 10 21 22 42 2f a1 58 b9 8b 0d 38 21 15 24 \r
+5f \r
+\r
+# Prime 2: \r
+05 8a dd 02 9b c9 7e cf d1 d0 db 26 be 45 ee 8d \r
+3e 54 bf e6 36 fc 4d a6 66 dc f2 50 ab 2c 2e 96 \r
+56 62 16 b8 a5 17 f1 0f 75 b9 8f de 6c cd 8a 58 \r
+e8 fc 58 2e 78 74 90 e1 95 8f 7a 0f da 82 ad 68 \r
+3f \r
+\r
+# Prime exponent 1: \r
+01 80 ee fd a3 f9 06 9a fa f9 37 a6 72 d4 a2 a4 \r
+18 17 73 01 47 da e9 de bf c7 24 44 42 a0 cf 2b \r
+ae 4f ef 64 c9 da 0b 8a b3 eb 9d c7 27 2c e1 2a \r
+08 5f 90 98 23 55 96 e1 15 c4 2c 9a 49 cc 46 96 \r
+29 \r
+\r
+# Prime exponent 2: \r
+05 12 e1 4e 11 05 7d 84 8c 23 f1 6b 5f 46 2f a2 \r
+b7 8b e7 fc bd 1b 6d 8e 46 9e 3f 69 9f b9 9b 90 \r
+5e d5 fe cc db bd b6 1d 1b fd 5a 7a 19 0a 74 7a \r
+fe 16 7c 37 56 68 07 75 ab 6f a4 23 3d 3a e1 ba \r
+0b \r
+\r
+# Coefficient: \r
+26 2e 28 23 16 98 be 32 87 a9 c7 06 f3 94 7b 7d \r
+5c 2f 5f d2 b9 14 46 f5 e9 a3 15 44 d9 af f4 55 \r
+a3 ec c6 b5 43 14 82 0c 2a 48 82 61 d9 f9 8d 34 \r
+8d 9c 3d 10 02 e4 e8 28 7a 15 2c 12 87 09 65 60 \r
+\r
+# PKCS#1 v1.5 signing of 20 random messages\r
+# -------------------------------------------------------\r
+\r
+# PKCS#1 v1.5 Signature Example 11.1\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+84 55 19 dd 45 d2 dd cb c8 db e0 b8 29 54 c4 58 \r
+c3 66 4d 88 27 4e 50 2d 27 91 46 b1 8f 6a 81 67 \r
+50 e9 4b 4e cd ee 68 32 cb 35 df cb db dd 3e 5d \r
+c0 64 04 d5 f0 c7 0e 7c 7c d0 e1 9f 38 bc 5a e3 \r
+2c 7c d9 1f 94 d8 f5 67 82 39 7b c7 4e 6b 06 98 \r
+27 ec 27 30 17 37 40 ce 4a 10 e6 48 c7 88 97 af \r
+1a 89 e8 33 31 d0 f4 61 37 8d 06 05 28 73 f1 7d \r
+9f fc e4 6a 32 47 26 07 fe 73 e4 a5 61 87 9e 61 \r
+9e 7c 1a e8 14 e4 5e 1d 2b db 12 19 46 b2 ae b8 \r
+56 39 16 c5 43 eb fd c2 c0 90 fe b5 56 65 00 a8 \r
+ce 74 af a4 53 72 bd e0 c6 67 3a 7f 6a cc b0 ee \r
+9d 57 bd e9 3c 36 dd c5 7b 84 90 aa 2d 68 58 5a \r
+3d b7 29 7a da 6d 9b 3f 35 6d bc 74 d3 15 c5 fa \r
+1a bf 7d e6 ce bc a8 3c 9d f7 \r
+\r
+# Signature:\r
+08 63 a6 26 dc 42 ba f3 e1 61 c3 5b 3d e3 b1 ab\r
+c1 aa 5a df 54 16 46 5d 4c 7b 6b 01 ae 2d ad 73\r
+f9 f1 58 eb 21 3d bc 36 0b e4 d4 7e 57 07 87 1c\r
+39 c3 8d bb c9 6b 46 c8 f9 af eb d3 dd ac 87 16\r
+90 98 e1 a7 67 18 d3 54 cd 09 1c a3 52 96 a7 7c\r
+21 d2 51 2f fe 65 e3 b7 1b 90 22 e9 cd 1f 7c 35\r
+ce 13 65 fd 1f 2c 2c b9 67 ff 4c 8f 90 f0 c8 ea\r
+ef 0d b7 3f ed 00 e9 8c fc 83 f8 0c 67 b3 be 1d\r
+33\r
+\r
+# PKCS#1 v1.5 Signature Example 11.2\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+86 8e 7c 4f c6 34 0b 6b be b7 b8 6e a8 9e e7 26 \r
+5f 32 31 f4 8b aa 92 e4 a2 e8 ce 0f a1 c1 a8 c0 \r
+fb 0a ca 94 4c 74 bc cd \r
+\r
+# Signature:\r
+10 cb f8 71 7f 76 27 8f cc 8f c0 aa b4 6e 90 a3\r
+d1 80 c3 c9 2a 4a 83 eb 93 c8 92 0a f8 8b d6 50\r
+6b 40 73 45 3f 0b ef f3 e6 1e db b4 db c9 c9 47\r
+c6 9d eb 69 a1 ac 92 9e fc 15 62 5b 9e d7 cf 1b\r
+c4 23 a8 87 5f 37 80 dd da 9e b2 fc cd 9f a0 14\r
+62 6a 7f cf 99 86 49 bc fa 59 53 a3 c4 3e fb cc\r
+38 70 4d 02 49 19 df 2f c4 ad ea 39 e3 4c d1 5c\r
+d4 f8 6a d3 f5 01 01 2f 6b d2 8a a5 00 2c 3b 41\r
+ba\r
+\r
+# PKCS#1 v1.5 Signature Example 11.3\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+92 cf 88 0d a5 89 15 e3 aa 95 08 93 53 e4 61 84 \r
+c9 15 94 5c 57 67 9c 1e 4b d3 82 5e d9 19 a3 20 \r
+52 e9 78 6e 23 b9 42 53 9b 93 15 f5 81 da f0 b4 \r
+1f a3 26 1b 96 7d e4 0c d5 d9 2a 48 24 f3 64 bd \r
+1e 1f 51 84 4b 10 9b 14 54 13 4a df 23 4e \r
+\r
+# Signature:\r
+08 82 89 66 ac 58 36 c5 13 da 4f fb 87 61 87 97\r
+94 3c 61 2e de 7e 12 b3 10 03 ef 17 10 65 b4 ce\r
+dc 6a 80 b1 45 6c 21 b6 74 b3 77 9a d3 5f 70 17\r
+7a a9 2c 6e ac 0b 83 3a 96 7d 7e 98 99 0b 48 24\r
+42 05 db f2 6f 5c d5 7e f8 7d c6 fe 5e d9 99 cf\r
+8c a7 5d c8 e6 26 fd 6e b2 81 c4 99 af f7 29 89\r
+ed f5 2e c6 f3 bc af 81 ec 5f 8e 82 30 b8 7e de\r
+dc f7 b7 78 14 3e d6 c8 ce bb ac 9d e5 41 09 dc\r
+f7\r
+\r
+# PKCS#1 v1.5 Signature Example 11.4\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+87 3c 47 15 90 2f f1 9d e0 8b cc b0 cf 26 37 63 \r
+fa b0 16 d0 22 0f 03 27 b4 75 5e 35 4e b2 47 f5 \r
+db c2 d3 96 98 9b bd 36 d3 1f 61 98 93 90 ca c1 \r
+66 43 12 5e 63 e1 a1 ae 1f 1b c9 bb ed ac ce 67 \r
+fc 1b 51 a7 \r
+\r
+# Signature:\r
+05 25 9c 48 15 93 ea 86 d1 f0 02 ca 58 aa ee 93\r
+29 fa fe 21 8f 67 50 f0 e5 88 f3 3b 64 e7 08 fb\r
+27 a6 fe 81 eb ca 8a da ec 75 7a 14 ff 55 a0 c8\r
+8a da 2c 3b 43 e3 9e 8d fb e6 76 89 43 65 a2 21\r
+0c 2a a8 1f 42 4d 85 29 c2 07 6b 00 c9 2d d8 c8\r
+ae 3b 78 0d 87 db a7 29 dd fd ef 7d 40 7f 85 4a\r
+71 cb 68 8b 9f 03 c7 1f 3b aa 24 a2 a6 e1 cb 41\r
+07 74 30 9e 40 c1 3c 2b 26 47 38 e5 69 7c fd de\r
+f3\r
+\r
+# PKCS#1 v1.5 Signature Example 11.5\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+14 b2 76 02 ec e8 f0 67 b5 84 83 af 17 77 c4 ed \r
+10 b8 b6 4e 64 c6 9f 57 ef 88 9a 1c a5 d5 b5 d6 \r
+51 c6 08 db 23 9d ee a1 50 ff 12 cf 50 c8 67 96 \r
+12 f9 7e cb 09 f7 \r
+\r
+# Signature:\r
+15 c4 b3 f0 81 a2 e5 8a f5 94 e4 2f d6 ac cf 1d\r
+0d 61 d9 3a 5e 3a 84 cf 90 4b 98 d9 ad 71 33 61\r
+b7 84 b2 4d 92 95 e4 3c 23 be 93 ef 36 51 4a 9b\r
+ac 2c 1b df 4e e7 32 34 36 76 3a 20 66 2f 2d b3\r
+41 d9 e3 8b ed 5f 12 c7 dd 18 bc 3b b0 fc ba 5c\r
+00 50 bd 1a 2a 44 03 71 97 b8 c9 fc 2a a5 99 eb\r
+43 c3 d9 67 92 42 c9 9b bc 49 b0 3b 98 ea ca 83\r
+46 28 72 59 e6 ea 2e 89 15 5d 0d d2 b4 77 80 35\r
+75\r
+\r
+# PKCS#1 v1.5 Signature Example 11.6\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+e5 66 e5 fa 55 6c 76 5b 62 bd 6e 37 45 21 f5 08 \r
+fe 44 66 68 c6 47 4b ef 04 6c c6 89 4a 87 32 2e \r
+19 31 e8 0d 9e d9 ea 80 6b 16 7a 3a f7 7f c0 49 \r
+38 b5 54 8e fb c0 68 d4 f1 96 6a 99 76 25 af 31 \r
+a4 00 7f 06 98 a8 46 9a b6 81 f4 d5 08 b4 a4 8c \r
+8f e7 20 cb 5a 94 a7 f4 43 dd 5a 58 03 04 97 da \r
+a9 59 a3 aa f6 e3 41 84 39 7a \r
+\r
+# Signature:\r
+07 e7 c9 44 26 24 bd 26 6c c1 cd 1a f3 b8 f0 62\r
+94 dd a1 c0 77 67 fe 19 bc ed 6c 9e d7 c4 b1 ed\r
+7f 26 e2 03 db 7f 3a 1b fa 57 da ba 6f 3a a0 60\r
+03 bc dc 1e 00 c2 d3 d7 6b 9c bf f9 68 49 b1 af\r
+f5 42 d0 d7 af c6 e4 22 49 2e ab 0a b7 f8 e1 d1\r
+ae 0b 27 9b 85 19 45 b7 65 85 1b 9f 8a d8 80 dd\r
+16 4c 11 ac 4a 57 f9 6a 0e 48 4b a1 6a bf 1c be\r
+8a ac 09 0a db 6a 71 79 7e 13 35 ee fe 2a c9 98\r
+0d\r
+\r
+# PKCS#1 v1.5 Signature Example 11.7\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+b4 43 c3 43 52 7b 30 d5 ff \r
+\r
+# Signature:\r
+0b 3f 13 c2 72 24 d1 61 01 b9 c8 20 1f 1b 4f 85\r
+37 db 3c 11 6f 3c e1 30 be 0d e0 dc 0d d2 0f 77\r
+3c df 7b 7f 37 23 87 c4 b6 53 e5 dd 44 21 84 45\r
+74 11 a8 2f 8e d0 03 66 ec c0 77 a4 26 7c 9d 7e\r
+56 54 96 63 23 9b 43 19 fe 49 9a a7 89 54 04 9c\r
+74 3b bf 09 d7 7b 30 29 d9 18 bb 7b 9a 6a e8 0b\r
+12 9e 41 bb 56 da d2 b8 a4 b6 f3 19 33 74 c8 29\r
+2f e0 17 d0 63 34 7e 91 cb f4 dd 39 39 c2 37 f8\r
+3c\r
+\r
+# PKCS#1 v1.5 Signature Example 11.8\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+db 90 04 7f 61 5a d7 19 72 ba ed 0c 10 62 6e c8 \r
+cb 18 c6 d7 5e aa e0 58 21 9f d6 19 54 26 d4 4d \r
+5c 54 3b ef 3c 4c 14 98 e8 77 d7 c8 53 e5 31 21 \r
+eb 31 57 00 81 d5 de 48 85 cb c9 25 a6 c2 23 21 \r
+cc c9 c3 78 4e b2 19 e4 2b 7e db 92 88 77 60 73 \r
+29 79 8d 55 73 9c 89 d6 d6 b3 f0 d4 30 bb bc 47 \r
+22 ea fa 67 de fc 86 ab a6 e6 34 83 fd 64 99 b0 \r
+3f ab dc 84 65 d9 8b bb e4 40 2b 02 31 13 5c 21 \r
+24 3d 7e 02 ad 5f 7e 9e 8b 94 60 c1 2d de 2a 39 \r
+5b 45 69 61 cc 3d fd 9a 12 f5 d9 35 9e 0b 3a 6b \r
+d7 7f 44 65 5b 60 3b 02 55 db ba ff 8b c8 40 75 \r
+9a 34 62 fe ce 0d 8d b6 e4 5e 2f e2 bb f8 b6 e9 \r
+7b 3f ea c0 79 86 73 82 57 ab 9f 8c fa 79 5a 20 \r
+19 2b 5e 2c ea 11 8c a7 62 25 2a f6 c6 eb 00 ec \r
+5c 68 20 bc c7 c7 \r
+\r
+# Signature:\r
+00 aa b0 67 d3 a8 63 3d 0b eb d5 91 ed 34 d0 67\r
+f4 71 8c d7 f9 b1 e3 5a aa 40 5d a1 22 2a b9 40\r
+38 66 92 1f bd 05 74 33 40 7a 4a ae 7e 26 c5 cf\r
+a0 bc 9c 11 57 05 7b 1d a1 cf 36 28 51 87 19 a6\r
+03 f6 c3 c4 de a3 0b f4 9d b9 b0 68 af ec 69 81\r
+21 dc e5 d6 0d 93 a6 f5 63 3f c6 af 9d f4 c5 dc\r
+cc 13 8c 29 4e dd 42 9d 4a fe 3b 33 78 86 82 55\r
+cc 53 78 8c f2 b4 77 45 d6 4a cd 88 5b b4 7d 2e\r
+ec\r
+\r
+# PKCS#1 v1.5 Signature Example 11.9\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+2b e0 06 7b 95 18 5b ad e1 18 dc e9 5c 57 02 9b \r
+55 4b 25 e1 c3 95 19 f8 f8 90 73 b9 a0 4b 7e 91 \r
+29 9c db 87 b0 bd 17 c9 f1 51 92 5c 75 6e b9 b6 \r
+45 07 25 61 26 41 07 88 21 38 85 4a e7 d5 07 e1 \r
+5f cf e8 47 09 45 40 e7 1a 54 7f 63 b5 90 46 7f \r
+ad ff 64 7f 64 3e 1c ec 11 24 65 29 06 2c 9e 40 \r
+88 92 f2 a2 0c cc c0 ae 45 ca 97 a4 7f ca dc 8f \r
+ed e2 1a 24 71 11 67 70 6c c4 b5 d6 94 77 e5 a8 \r
+a1 46 b9 60 cd 4b 17 27 42 7b 16 51 7b 63 eb fb \r
+cf 84 d0 b1 ac 8e 7e 70 f0 44 35 75 22 b1 d0 cb \r
+\r
+# Signature:\r
+09 76 81 12 17 71 45 44 41 01 33 24 3b eb a9 a2\r
+1a 6f 72 12 c6 87 91 5c 72 02 7b ba 31 12 f6 97\r
+05 42 5c b9 94 cb b6 d3 59 c1 46 b9 5d b1 44 64\r
+35 d4 cf 96 1d fd 5c 49 87 39 bf d4 be 6e f1 ad\r
+d7 4b 81 b2 89 8a 4c e4 3d c3 7c b0 e9 ed 77 44\r
+cf 40 9b ab ff 71 78 85 42 ff d2 86 eb e5 25 5d\r
+63 dd 7b d5 5b a4 3f 51 84 e2 48 d3 a6 69 33 cd\r
+b0 69 91 ec c9 0e b3 9e e7 1d 65 c8 8e d2 4d 94\r
+4c\r
+\r
+# PKCS#1 v1.5 Signature Example 11.10\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+a7 90 e6 ac 5d 55 6f b7 cf 44 46 0c 7b 9b e5 eb \r
+7f 24 f9 87 ff 89 0d cb 78 40 24 1d 45 54 5b 71 \r
+05 63 5a 1a af 44 57 e6 41 0c 65 ae ce 50 11 e2 \r
+77 5e c8 53 0a 64 a1 88 39 e9 c5 8a 7b 77 42 4f \r
+74 29 3d cb 9e 9e a8 73 6d 6b a5 8b 1c 66 53 d5 \r
+7b ea ab 98 73 5f 7a f7 32 47 7b 9a f6 a3 3f f0 \r
+75 c7 e4 66 39 d7 48 55 08 20 ba 6a bd 4a 9d 48 \r
+cb 49 03 f6 5b 76 f8 14 c6 cd c9 5e 8d 9e 87 0c \r
+24 4a 02 9b 29 4a 8a 5c 82 6a b1 61 f6 f9 78 d9 \r
+f1 c0 3f cd da ae fb fa db 8c aa e8 4b c2 dd 33 \r
+2e b0 49 97 d6 1e fa 91 e9 24 1e 4c cd 97 64 c7 \r
+26 e7 66 ed 3b 03 38 d0 86 f1 03 2c 15 33 ef 59 \r
+3f 88 fd 56 03 37 91 b1 d0 62 5c 6c a5 1e ec 27 \r
+9c fb 6a e3 f1 27 00 cf 5b ac 27 1e 65 67 \r
+\r
+# Signature:\r
+0d 1b 11 1c e8 de 1d 7c 4f 7f ce ac 73 df 70 aa\r
+6e da 58 dc 32 eb 98 f7 8e 7f b9 bc 25 de 3e 6b\r
+09 ab 8c ae 3b 20 26 b6 18 7f f6 36 72 e5 7d a4\r
+ac 28 96 24 45 d1 fe 95 1d 27 be 6a 6c e7 a5 80\r
+7e 13 76 13 94 46 e8 54 9d 48 aa 59 fc 22 33 54\r
+d1 21 fd cc 38 f1 d0 27 5e 41 86 92 27 00 ad c6\r
+1d ae 1e 4b e8 05 22 2a 1c f0 7f 11 0a 61 58 a2\r
+a2 62 58 f1 9c 65 7a 11 0c 0d 9a d2 91 68 0c 75\r
+96\r
+\r
+# PKCS#1 v1.5 Signature Example 11.11\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+32 af d1 3e 60 7d 87 b2 5f f4 0a 88 5b 25 09 f5 \r
+21 f2 a0 a7 72 a9 6a 39 fb 3f 71 c9 63 84 b3 d7 \r
+57 8f 48 fc ea 97 39 56 0a 65 bf b4 83 d9 60 8d \r
+20 25 55 f6 6d 61 2d 16 b9 25 53 87 b4 e1 12 41 \r
+15 ed 48 bf ef 8b 89 d8 dd fc 21 9c cc e4 87 86 \r
+c9 e6 42 6a 92 12 e7 b1 6d 97 1d 27 8a 11 18 f2 \r
+f8 6b 9c 4b bf 75 c9 c2 d0 99 e3 f6 65 48 f1 f4 \r
+a8 a8 21 d7 27 44 98 f7 cc e6 ec 5e 2b f2 bf ad \r
+2c 6f c0 05 e8 0a 48 ca e4 69 92 fc 82 67 a6 48 \r
+0a cb 89 4c cc 9b 62 09 5c ad 97 db 70 d8 82 a1 \r
+3f b3 85 88 c4 8c a1 90 f1 80 cb 3e 61 ac b4 e2 \r
+cf d9 cd bf 85 5c 53 99 21 f6 8e 11 49 d0 54 7e \r
+f5 9a f5 37 92 dc 66 0d a5 ef 48 a7 ab 89 36 d3 \r
+d3 6e d6 b6 46 9e b6 fd 95 e3 af 18 2c 87 68 fa \r
+60 04 78 54 f1 8f 37 41 c1 88 3b b0 79 26 88 ca \r
+db 9e 4d f3 91 d9 11 45 b8 5e 2a e2 4f fd fe 51 \r
+\r
+# Signature:\r
+01 a9 37 b3 cc 82 54 d5 15 08 70 9e 4a 4d e7 b1\r
+81 de d9 a4 47 b3 ec 8d ad 49 2c 39 79 52 df 7c\r
+55 0e 4b 26 c9 50 17 29 9d 8d 45 5f f7 97 1c 33\r
+8c d0 14 df 78 e2 a8 aa 5e be e2 58 f4 92 53 d5\r
+1a ce 9a 49 31 9f fc 80 7a d7 0b 2d f2 c9 6d cd\r
+b7 3b 48 ac bc 4f 6c 3c 2a 70 1e 7c 15 4b 27 9b\r
+07 05 bd f2 54 8c 8b 36 11 b9 7d a1 ac 09 cd 12\r
+12 50 99 54 0b f7 ba 99 b0 8c 2f 3d 5f 6a ea 7d\r
+40\r
+\r
+# PKCS#1 v1.5 Signature Example 11.12\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+5b 00 b8 b7 94 a1 0d 21 f1 b4 5e ca a2 0d f7 c5 \r
+b3 52 2c 1b 1d b4 b0 84 b9 59 aa 4e 56 58 ac 54 \r
+68 f6 e8 fb 61 2f f9 9f 32 16 b5 d2 1c b4 ac c0 \r
+bb 42 ee fd b8 e8 2d 75 4b 85 d0 97 45 89 4a 52 \r
+3c 01 62 d0 8e cc e4 8b 99 dd 6c 38 e2 bd 3d 53 \r
+1c 85 62 de ec fc 61 52 36 9a ac f5 80 ea f9 db \r
+6c 68 b6 9d f2 fb f3 05 3f 60 1f 70 02 2c 9e 38 \r
+1d fb c5 90 99 c3 7b de 5a d8 9a 8c c1 ef e4 c7 \r
+b7 d7 8e 90 97 e0 81 21 ed a6 4a c4 5c 32 7e 5e \r
+da f9 22 d3 c3 5f 88 b5 2c 93 d3 99 f4 c2 38 36 \r
+2f e9 \r
+\r
+# Signature:\r
+0f c6 ac 1d 42 94 79 38 cd 25 86 d0 e7 fc 3a 05\r
+42 b9 af 12 d3 6e eb f9 2b 5d 04 9c 79 65 b1 1b\r
+a9 cc bf 47 00 f3 45 60 91 11 77 b9 d1 29 6f 1c\r
+68 e3 af 46 9f 4f 39 9d bc 18 9c 23 ea 74 65 98\r
+28 13 32 33 05 ed 6c 35 ff 9c c1 09 d0 a2 30 3f\r
+e7 d3 29 ca 31 7e c4 b1 8e dd 19 c6 2c 60 a3 c8\r
+c3 10 6f 86 db d0 72 e3 e1 eb 87 85 28 8c 21 ab\r
+ca c2 2e 0c 0d 41 f4 e2 3e 7f 39 4d 46 82 f6 ce\r
+87\r
+\r
+# PKCS#1 v1.5 Signature Example 11.13\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+b7 50 ae 6d 4d 2c eb 92 14 05 34 64 8d 36 ef 25 \r
+e4 51 55 f5 2b de 1b f2 6a b7 \r
+\r
+# Signature:\r
+16 aa de dc a0 9e 06 25 60 c6 61 d2 a4 9b 0e e4\r
+d9 ce 23 90 7c 69 d1 00 04 f1 49 d1 03 c5 9c 16\r
+fe 7d 43 73 59 7d b9 ff d8 92 3a 77 a6 b9 43 b1\r
+88 c4 74 25 e2 a9 e5 30 41 3e fd b6 84 8d d3 42\r
+0b a5 3e f8 1c 25 c5 78 f8 d9 51 4d 93 fc c9 cb\r
+1f b5 2f 58 d8 8a 57 d1 fd 3f e2 2d a3 10 ec ea\r
+9e ce 55 e9 60 8d 63 ae 21 db ae a6 57 1b 78 fc\r
+fd d2 71 bb 65 92 57 47 6b 59 95 68 7a 02 bb e7\r
+89\r
+\r
+# PKCS#1 v1.5 Signature Example 11.14\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+47 be 01 02 0e b7 e7 87 5b d4 fc c0 05 a8 2b 36 \r
+fd f2 14 5e f1 32 e2 ed 16 2f f6 94 bc 71 58 9c \r
+7d c6 d5 a3 f8 9d 59 7f 2d 2a a3 43 33 51 18 f6 \r
+fd bd ee f2 3e 61 3c ba cc de 41 95 e6 64 a0 09 \r
+4b 07 fc 0a 32 84 8d 61 39 03 1c f5 72 a1 e3 23 \r
+c5 a7 07 b6 fa 2a ee f2 dc 87 2d d5 a3 e7 6b 13 \r
+f8 ef 94 ad eb d4 e2 05 74 8e 48 5b 40 01 d5 d2 \r
+a0 90 b8 9b 2e 64 74 c4 79 e7 b0 0d 2d 57 f5 86 \r
+ab 76 b8 0f 79 5b a8 99 62 88 29 2c 3f 2c a5 1a \r
+44 e4 e8 41 c0 37 07 e4 80 25 af 4b fd 0a b6 ef \r
+eb 83 62 ed d5 d2 34 05 ba 0e 23 1b 33 24 e1 ca \r
+3c 5d 63 9d 2c 9d 82 \r
+\r
+# Signature:\r
+06 39 17 92 9b bb 20 92 17 ff 48 ed 4f 55 d0 7a\r
+03 f7 6d 6d 94 04 8b 6f 71 31 0b 2c 96 e2 14 ab\r
+22 0d 4e 45 ac 01 c9 3d cc 8a 5c 26 a0 2d f6 1f\r
+fd b3 17 54 96 65 61 0c 84 bd b8 94 5f c6 bb d3\r
+8b ae d7 fe e9 8e b0 56 d9 f0 39 a8 60 d4 52 b3\r
+ac ac 18 00 a9 32 a2 8c 88 28 6a bd a8 de 3c b6\r
+c0 d7 94 da ab 7a 8b a0 11 09 33 b4 d1 de d2 39\r
+cb dd 55 7d 3e 5a 16 29 17 85 33 15 de 68 09 00\r
+a8\r
+\r
+# PKCS#1 v1.5 Signature Example 11.15\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+4b 9c 09 64 48 10 d4 b3 06 55 ed 83 38 bb 27 6b \r
+62 4c 68 01 98 22 d1 fc 8f 78 86 1e 13 e2 2a c1 \r
+71 82 1c fd bd 3f 8f 5b 8d c9 c0 de 73 2b 74 6e \r
+1d 13 2e 5f 3f 14 9a 5a 86 7c 2e e4 78 e8 f1 4a \r
+d4 b9 dd eb d3 ae 78 17 e8 49 55 b3 40 4b 09 43 \r
+93 e6 1c a0 18 9d 05 53 69 b4 24 30 09 a0 f5 40 \r
+3f 41 c1 00 23 08 c0 0c e6 99 67 19 37 ba f1 3c \r
+78 93 d6 63 c9 47 fc 7f 84 07 1a 67 2e 5e 07 37 \r
+8a ac 08 b3 fa f0 fc cf 5b f2 83 09 25 85 eb e2 \r
+40 a3 00 46 20 b6 f3 ae b6 73 2b 7b 9d 8d 3b ea \r
+fc 84 67 d1 f1 f1 c7 da 66 b1 bf 5c cc 14 5b 32 \r
+24 24 5f ae 31 df b4 03 f4 93 c0 75 53 57 ad d7 \r
+cb 27 63 71 32 26 c5 4f 43 64 0f 7a 67 0e b7 b1 \r
+f6 e9 e7 72 f2 e5 14 17 a7 05 cf c5 87 3f fb 88 \r
+a5 db 07 ec c4 ee 89 f3 30 a6 69 0a 88 12 \r
+\r
+# Signature:\r
+1a 0b 69 8c f3 a0 58 b4 49 19 af 73 c3 de 32 8e\r
+86 ce 9a 5d 49 99 e0 12 2f 41 4b 94 f3 2b 2d 8a\r
+b1 e6 55 0c c0 d4 8d c0 4b ef ac 2c 67 a4 d0 69\r
+a7 20 8f 14 2d c2 67 b3 e3 8f 63 38 a0 b1 83 9a\r
+93 a8 36 80 7d 18 1e 3f 0c 7e 87 7f b2 42 16 02\r
+00 5b ca 25 a9 c3 72 26 6d 18 e6 d5 00 c5 c7 ab\r
+13 38 52 83 d2 af 91 9d 0b ba 0d cb 88 bf 7b b9\r
+97 2d 67 00 8f f4 98 54 7d 80 fc a6 58 ef e7 64\r
+a5\r
+\r
+# PKCS#1 v1.5 Signature Example 11.16\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+ec 9f f1 4b 9f 19 7a 2b 4f 24 94 8c 29 d2 f6 4a \r
+64 62 52 23 dd b8 53 46 37 8c 2c 25 34 3f cb ef \r
+58 5a 99 e1 ec 0b ef 0e f9 d0 9e ad 85 be e1 c4 \r
+bf b3 5e 48 fb 26 41 1b df 18 0d c5 cf 31 7b 3a \r
+34 83 71 c7 c5 f4 aa 6d 59 08 fc fc 1e a3 90 18 \r
+cf 04 49 e5 5f 4e f9 94 bf da 40 4f 1c 18 9f db \r
+8a 0a 5b 09 06 c3 d4 0d e1 e7 87 c2 db 4d 88 db \r
+c2 10 b9 f8 01 f4 cd 9c 97 22 7e 9b 2f bc 28 11 \r
+e3 8c ed d9 e9 f0 35 60 03 1d 4c 95 8a 76 81 ba \r
+9d 7e a5 e7 8e 9b d8 bd ed db 41 56 79 0e f2 1f \r
+b7 4f bc 41 58 c2 93 9e 4e fc b8 2e fd c8 81 88 \r
+6a 5b 67 13 a2 4b 9b 5f 2e e2 5c cf 72 1a 64 e0 \r
+f6 40 77 8e cb 3d 35 b4 b8 ee a8 ec e3 12 32 63 \r
+63 10 ae 3c c6 b8 2b 8a \r
+\r
+# Signature:\r
+01 3b 42 05 78 20 c7 3e 3a cf c1 df 4d e1 44 0c\r
+65 8e 01 80 43 6d a7 18 5a 9f ab d2 6e b3 26 74\r
+b5 54 de 35 4d 1f 4f 24 e8 77 73 26 7f ed 9d d0\r
+fd 82 93 ea ca 4a f3 d3 a9 dc 51 8c 8e 49 5a 14\r
+76 95 11 1d 3d c1 77 63 f1 f0 2e ec 1e e2 9f b1\r
+ab 74 9c f3 0c 78 86 da 8b 2f 64 69 69 59 8a a7\r
+0f 9a 92 fa 4f 93 5c 7c c7 7b fa b6 98 1f 0d f0\r
+d2 85 cf b1 0d 66 58 15 39 f7 8d 03 68 ed 4f 93\r
+01\r
+\r
+# PKCS#1 v1.5 Signature Example 11.17\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+41 4c ea 8e ec 6d a3 c6 6f fc 84 70 f7 e1 47 60 \r
+f7 4b f6 e7 5b 84 dc 98 fc 80 60 dd 3c 21 9e 76 \r
+77 7d fa ba a6 e6 b9 29 55 37 9f 3e ca af 5f cb \r
+8a a5 54 9e c9 cd d1 f5 d5 77 20 1b 8e 32 9f 72 \r
+fa a2 bc ad ea ee 38 8d af 7d 40 8a fd e6 55 3d \r
+24 17 86 0f 3c 8e 25 30 5d ff 76 db bd 95 16 b6 \r
+86 8e e4 56 fc 1f 7b 58 d9 ed 18 a4 6e 4f c1 e3 \r
+53 e8 d0 76 be a3 0b f2 47 c6 0e 6f 68 58 01 a6 \r
+d3 f6 30 ae a6 ab b4 12 a9 41 ff a6 f6 07 f6 bf \r
+b1 3d 90 01 27 bb ec ee 4f 98 a7 ac a6 92 08 11 \r
+57 50 53 ab 2d 42 70 13 80 1d 8c fb c3 88 0f 14 \r
+75 43 15 55 a0 86 fa 55 60 c6 e2 20 6d 9e e9 38 \r
+13 44 b8 24 1c 1d d1 d8 64 48 75 3a f4 4b 00 a0 \r
+c9 \r
+\r
+# Signature:\r
+16 97 bb 23 e2 91 52 5f 4a 0e 79 26 2f 34 06 63\r
+0d 0d 6d f3 32 49 69 26 c4 e5 ae f9 6e 41 d9 55\r
+14 86 47 ea f7 90 69 6a f6 8c 78 eb 2a b6 2f f7\r
+19 62 96 e1 ea 88 6d f0 91 73 66 09 0b 63 0a a3\r
+18 58 b5 16 15 87 3f a6 bc 8f f0 88 5c 57 b2 e7\r
+7a 04 90 88 93 cc ef b1 41 24 03 99 1d 0d 23 c5\r
+57 d2 22 29 1c b8 51 7b 43 28 6e e0 05 67 58 d9\r
+c1 0b cd 69 bd 68 b8 4a 2d 1f 53 79 05 b8 a4 65\r
+e9\r
+\r
+# PKCS#1 v1.5 Signature Example 11.18\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+17 89 b8 08 b1 0d e8 d1 77 8a a4 3f 94 10 1c b8 \r
+9f 56 34 30 61 a1 a9 43 bb 8d a5 5e e6 b9 79 e2 \r
+7a fe ab 0e d8 ee 37 14 fb e7 0b 3b e8 20 60 3e \r
+5c ea de c4 b2 2f 95 87 73 22 5d f3 aa d4 87 b2 \r
+80 57 eb fe be 2c 87 93 da 38 46 bd b1 59 03 ac \r
+71 e9 c9 3b 20 16 66 8b d9 06 30 1a 0a 7d 50 dc \r
+60 b2 fa d8 75 9d 18 db 14 7f 20 66 86 5f d9 09 \r
+50 a1 88 74 7d 9b 69 68 53 48 6d ea ab 8e 44 3f \r
+ad 29 92 fc 8a 56 5b dc ba da b0 b9 33 3a b7 fc \r
+db 9c 3d 0b cf de 50 a5 8d 2a ea f1 ce fb 0c 95 \r
+f9 07 73 b2 fa c1 37 cd bc \r
+\r
+# Signature:\r
+02 f9 97 51 c8 44 38 ea c7 f9 96 32 50 d9 ee 22\r
+fd a7 29 7b 6e 86 e2 a8 bc c7 a9 b5 ac 01 f7 90\r
+e0 99 11 70 46 60 85 8e a5 c1 62 72 c3 81 33 fa\r
+da de fa 23 c1 02 90 8e 41 9d e2 eb e9 ac 27 19\r
+45 72 87 8e 2a 97 1f 88 31 c8 f9 17 e8 52 e8 51\r
+df 99 d4 df 01 8f dd b2 ce a3 1a c3 a7 b6 89 75\r
+e8 0a 99 7c b7 dd 4d 4d f7 57 bb 8c 3e cd 91 0b\r
+cb 06 03 35 52 12 7a c3 08 11 77 39 a0 2c 20 17\r
+17\r
+\r
+# PKCS#1 v1.5 Signature Example 11.19\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+ff 87 5c ca 0e fc 3d 90 f5 6e 31 f4 bb 66 84 14 \r
+89 4d 09 de 90 12 7f 84 66 32 43 10 e1 13 69 a3 \r
+f2 f6 49 3c 1c 78 a3 62 b2 a1 4f b5 48 8c b5 6c \r
+e0 22 73 9e 43 aa 76 3d 9c 1c 97 b6 21 cc 53 68 \r
+c9 c0 0e 81 60 67 92 69 5f 9a f9 ab 63 3e f2 39 \r
+ea b3 44 9d da 9e 66 07 08 9c 37 51 90 35 4f 7a \r
+59 a4 b3 ef 75 22 9d 1c 47 ec da e3 3b 27 69 ff \r
+55 42 65 5e 78 10 22 d0 c4 3b 42 1a 99 84 3c 3d \r
+e1 04 22 ad 2f d8 9d fe 44 66 15 f5 19 2e 75 79 \r
+d4 37 43 79 bb ff b9 \r
+\r
+# Signature:\r
+02 68 91 7f 8b da ac 9e be 32 b0 dc 6c d9 d3 9e\r
+fd 3f 88 d8 17 d6 6c b6 39 0d 7b 55 c6 92 12 21\r
+84 4a b8 c0 89 86 d3 f2 ea 49 bc 6e 3a 10 02 08\r
+6c 0b 6d f1 63 f7 9d 16 11 6a 93 c4 a2 cc 04 22\r
+c9 48 41 e1 e3 b9 45 ab 1d 25 3a b8 d7 d1 39 c9\r
+18 8b a8 30 27 c5 93 f8 3a 6f 38 37 0e 7f 03 79\r
+ff dd f1 42 7d 6f cc cf 60 83 31 3f 18 15 b5 de\r
+d6 73 74 30 bb 4a 70 ba 81 48 48 34 d8 d1 d2 9a\r
+5e\r
+\r
+# PKCS#1 v1.5 Signature Example 11.20\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+e0 7e cf 00 e2 40 1a c9 8b 2d 5a e0 c9 b8 3f 21 \r
+9a b0 27 a6 51 99 fd b6 34 59 6e 23 44 62 41 38 \r
+72 95 32 49 53 28 f9 3f b3 a3 32 55 27 8f 3e c2 \r
+60 65 ce 54 99 5d 42 41 93 bc b7 58 1b fe 1a b8 \r
+95 7d 0b 96 1c 30 30 b8 20 d0 9c 9e 32 6c c3 0c \r
+0a f6 42 66 61 54 \r
+\r
+# Signature:\r
+00 c4 6d b4 1b 65 dd c7 1f bb fc 12 5a 4f 9b ab\r
+88 0a 2f 0c 1f 04 1c 41 1d f7 d4 5d 1e 19 99 7b\r
+34 8e ab ba 19 bf 79 b2 21 77 b2 a0 d7 3f ef a5\r
+00 83 62 ce 59 60 d7 ef 58 a5 89 93 e7 46 03 d4\r
+d9 d0 b3 da d4 b2 0c 82 9d 36 ef ca f5 7f 0c 4f\r
+0c ef 89 01 5a 48 45 02 42 bd 02 0d 5f 52 d8 b5\r
+0e a1 3e 56 a1 aa d6 01 91 5d 60 ec 9a bf c3 07\r
+f1 8a f2 06 72 38 4d cc 12 f9 82 27 31 36 99 71\r
+40 \r
+\r
+# =============================================\r
+\r
+# Example 12: A 1030-bit RSA key pair\r
+# -----------------------------------\r
+\r
+\r
+# Public key\r
+# ----------\r
+\r
+# Modulus: \r
+36 98 1a 95 ae 24 18 14 52 da 25 7c 03 8f 05 82 \r
+14 12 d8 4e b4 7a 43 fc c7 ef 12 17 95 9b a6 77 \r
+02 7f 70 86 d3 a8 5c dd 34 9f 92 0f 03 4c 02 78 \r
+79 2d c8 a8 cf 0c 00 80 e5 c6 1f 47 48 83 c6 87 \r
+9f 4d ee 0a e9 52 47 8a 5e e2 ce 4e 39 18 64 1e \r
+81 3c b3 74 f7 b2 83 2b cd 6a ea 80 9d 25 4f c2 \r
+ca 9a c5 a3 32 42 4a b6 5c 2a 26 12 75 d1 9a 41 \r
+4b 61 65 00 d5 e3 73 70 63 15 f0 63 dc 88 5d 7f \r
+b9 \r
+\r
+# Exponent: \r
+01 00 01 \r
+\r
+# Private key\r
+# -----------\r
+\r
+# Modulus: \r
+36 98 1a 95 ae 24 18 14 52 da 25 7c 03 8f 05 82 \r
+14 12 d8 4e b4 7a 43 fc c7 ef 12 17 95 9b a6 77 \r
+02 7f 70 86 d3 a8 5c dd 34 9f 92 0f 03 4c 02 78 \r
+79 2d c8 a8 cf 0c 00 80 e5 c6 1f 47 48 83 c6 87 \r
+9f 4d ee 0a e9 52 47 8a 5e e2 ce 4e 39 18 64 1e \r
+81 3c b3 74 f7 b2 83 2b cd 6a ea 80 9d 25 4f c2 \r
+ca 9a c5 a3 32 42 4a b6 5c 2a 26 12 75 d1 9a 41 \r
+4b 61 65 00 d5 e3 73 70 63 15 f0 63 dc 88 5d 7f \r
+b9 \r
+\r
+# Public exponent: \r
+01 00 01 \r
+\r
+# Exponent: \r
+09 ad 03 17 30 b6 32 73 55 ac d6 94 68 70 0e 7e \r
+9b ae ac 5a 24 a7 ff c9 3b 29 2e b8 71 da 54 92 \r
+46 a5 ce 0c 83 52 55 65 1a 28 c6 e2 f4 c7 61 af \r
+b6 f0 6b 9e 29 95 fb b7 dc a1 74 d5 36 2f ae bd \r
+c3 9a 72 c5 79 5d 1f 33 92 ec 08 8b 5d c2 a7 85 \r
+b2 c9 c4 c6 e6 69 e7 23 b5 dd 0c e4 43 25 55 12 \r
+67 dd 62 e0 f7 8d 24 24 ad ae 48 e2 49 44 3a ef \r
+4a 37 04 10 db 9e 70 93 99 ac 37 cc 48 1b 59 00 \r
+c5 \r
+\r
+# Prime 1: \r
+07 72 0f 21 cd db 92 27 45 b7 1c f8 11 6a 83 66 \r
+9a 0d db 89 e8 f3 f0 6c 34 7c a7 87 cf 10 ef 16 \r
+93 bd fe 3a 0c 36 4c 7a 7e 89 04 17 f2 af 49 47 \r
+5c 7d 07 6f 9c ee aa e7 6d bd 4e 92 15 af 45 69 \r
+4d \r
+\r
+# Prime 2: \r
+07 55 1c 27 e9 aa f1 1f 47 4f 1c 9a 14 bf 14 4c \r
+fa ef e2 7f ca 4f 20 79 5d ec 85 34 c9 37 bb 00 \r
+fe 16 23 5e cd 69 1f d2 3e 32 cd fb 8b 78 66 6b \r
+b7 82 84 ae 15 d5 9b e5 ca 74 73 e6 2d 46 a9 da \r
+1d \r
+\r
+# Prime exponent 1: \r
+02 e2 2c 74 16 0a 94 36 bb 6c 28 3e f6 57 be dd \r
+ec 89 b3 5d 5c a7 a4 93 f3 5b d7 71 e4 42 95 a5 \r
+b3 c0 20 06 11 16 b2 55 ba 4d 8c 15 4e 3a 8e 71 \r
+a1 a3 16 4f 26 82 d4 13 5e cf b2 ef 26 90 c3 9b \r
+fd \r
+\r
+# Prime exponent 2: \r
+01 d2 bf f5 8c bc dc c8 12 4b 31 a9 7e 8f 24 d5 \r
+1f 70 96 b9 7f ec bc fe 70 c4 67 3b 00 ed c2 aa \r
+34 83 fc b7 8e 0c 1d c5 81 81 d0 86 43 df e4 57 \r
+d4 81 b7 cc 31 d1 b3 ba 27 e5 5d 0c 57 25 c3 06 \r
+61 \r
+\r
+# Coefficient: \r
+06 d2 27 72 57 42 ef 03 46 2d 1c f6 12 67 4a 78 \r
+83 1d 61 9d a3 d6 40 eb 7c 71 c8 7b 53 28 69 72 \r
+73 c5 f7 51 e1 4d 7b 81 c1 2b 6d eb 44 75 1a 92 \r
+95 cb 67 1e 81 48 4d ea a8 3b 4d f1 fd 37 e2 ff \r
+3c \r
+\r
+# PKCS#1 v1.5 signing of 20 random messages\r
+# -------------------------------------------------------\r
+\r
+# PKCS#1 v1.5 Signature Example 12.1\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+e4 b2 d6 0e 3b dd 27 81 6f \r
+\r
+# Signature:\r
+13 fd 4a c1 ac 68 48 17 37 80 96 5a ff 5e 61 c5\r
+96 89 2b c1 47 76 0d 43 07 9b 5d 71 77 e4 23 d4\r
+86 f5 a7 3e 1a 16 b3 ce 9b 5e da c1 61 ea 6d 4f\r
+6c 23 fc fc 3e 62 19 ca c5 56 06 7f fa ed 4a da\r
+c0 a9 50 05 09 0b 89 84 4c 54 35 4d b2 2a af f9\r
+ee ff 9d a5 aa a5 49 04 25 e1 35 cc 0f 64 58 4c\r
+7f 05 fe 33 6e 44 40 bb 86 92 86 d4 4a f1 57 88\r
+0e 3a 40 fb 06 72 5d 09 de b3 7f 1e bb 18 1c 8f\r
+5c\r
+\r
+# PKCS#1 v1.5 Signature Example 12.2\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+78 86 85 fc 58 05 d6 27 b1 3f 2f e7 fe 6f 7c 9a \r
+b2 ca 49 44 ab f3 08 b8 6d 1a 0f 58 3d 17 b5 76 \r
+02 43 9e 1f 2c 6e 0c 5b f7 81 70 50 13 38 b4 c4 \r
+47 e9 19 7b 65 03 fb 73 eb ab f7 76 de fa e3 3b \r
+dc dc e7 7d e7 9b 82 be 14 85 a8 aa 9b 82 09 37 \r
+db f4 28 a2 05 50 96 6a 86 b6 2a 17 2e 6c fb dc \r
+fe 0d 6f c6 7a 4d b6 22 52 fd af 85 f1 e6 bc 14 \r
+f8 ab 1c 53 32 6a a6 a7 bc 5e ec 88 e0 b1 1d 48 \r
+d2 b5 61 f2 26 06 50 10 2f f2 7b 57 b7 00 72 bc \r
+c1 21 e3 5e 70 f3 78 0c 83 33 b5 bf 6b 08 fa 12 \r
+08 26 0f 33 \r
+\r
+# Signature:\r
+09 04 cc 11 ac 66 a9 83 7b 74 56 8b e2 50 e5 3a\r
+e4 be f7 8d c6 7f fe e5 09 e5 d9 b4 72 58 3e aa\r
+a5 6d 4c 9e e7 0f 6e 82 dc 99 8b 53 ef f1 27 2b\r
+f0 1f 09 e5 26 2b 15 5a 6e 56 d1 50 40 03 e4 c8\r
+a4 6e 65 02 55 32 78 23 0d 6e 81 b7 29 18 43 ab\r
+97 69 73 7f 3c 69 31 52 f1 7b f2 d8 bf c7 82 bd\r
+b3 fa 0a ea df 0d 44 1e 1e 52 de a5 4b 75 cf 16\r
+5e 35 c3 82 d3 11 74 f6 67 9d 2f 21 b9 81 f4 13\r
+58\r
+\r
+# PKCS#1 v1.5 Signature Example 12.3\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+4e c7 39 3f dc 4b 90 af 8f ff ca f3 4e 84 5a 09 \r
+65 6a ef 9d da 12 b0 34 2c 46 eb 04 91 74 aa 51 \r
+1b 43 c9 4d 75 c0 e2 90 70 af f5 b4 14 23 a1 70 \r
+d9 b3 e8 b2 12 24 aa bc 53 1d 88 88 6e 26 46 d6 \r
+78 8f 1b aa d4 ef 4b 0b 4b de 4b 12 ce 90 52 08 \r
+2e 2d dd 0e 3e 6c aa bb 0a 14 34 4b 0a 58 3f 40 \r
+4c 1b 6a 3c 7b ca 8a 58 85 d5 f2 24 af 1f ca c3 \r
+fa d9 37 0e 9b 29 74 e8 ca 62 e2 2a ce b9 \r
+\r
+# Signature:\r
+21 a6 6a f6 27 ee 0d d0 5f e7 56 3c c1 d2 9c cf\r
+6f 87 31 b4 1e 3d b3 95 97 89 3b a1 cf 37 5f 78\r
+17 88 fd f0 73 b0 b5 93 c7 6d f2 81 6e c6 de fc\r
+22 42 21 ac 19 f5 be e4 4f c0 e5 d4 09 3d 34 68\r
+27 8f b4 2d 40 5a 07 04 46 53 22 da 4d 3a 7c a9\r
+c3 da 73 c3 d0 82 ae e5 67 b7 70 83 32 3e 75 bb\r
+35 ed 77 e8 db 9c 01 b4 96 a0 4c c4 a8 99 df 35\r
+9d a4 a2 28 7c af ff e1 ed 63 cd de ad 87 6c 94\r
+07\r
+\r
+# PKCS#1 v1.5 Signature Example 12.4\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+90 77 60 db 32 96 9b 09 7d c1 24 ef 89 75 15 11 \r
+a5 d2 30 59 6d 2f d8 a8 91 ff 00 f0 5f ba d4 5f \r
+72 a4 5d 46 56 24 a3 ab 67 af db b9 e5 f9 e6 5b \r
+63 e3 0c 2e 57 fe 7f 32 f3 99 01 10 33 dc 05 29 \r
+c0 97 1f be 06 4f c5 ed b0 1f 84 cd 57 28 3f bb \r
+bd 2a a0 29 44 11 0b 6b 53 4f 74 08 2f 56 be 34 \r
+6c c3 43 bd 4d 0b 34 80 91 c0 05 c6 19 9a 7e 3d \r
+56 88 52 47 b0 c1 6a 36 b2 35 b8 f5 d4 f0 0a 6c \r
+6b b6 fe ed e8 8f cd 78 8d 75 ca cf f7 d9 56 87 \r
+99 65 71 55 9c 05 79 6a 55 71 1d 77 46 bb 92 d8 \r
+52 89 3b a9 06 75 f9 8b 0f 54 08 48 1b f1 54 3f \r
+39 de 3d 0c 0c 1f 53 49 5b d2 12 dd cd c6 d0 e5 \r
+7d 7a 3d be 24 20 8c b2 4e d4 1d e0 3a 5f 05 2a \r
+9b 58 12 70 0a 5c e0 5c 02 00 d4 71 9c 55 54 4e \r
+7f b2 94 d3 44 a4 f2 05 ef 9a 34 97 b5 67 54 7c \r
+bd 1a 63 3e 2b 79 d3 34 90 95 \r
+\r
+# Signature:\r
+0e c9 38 a0 d4 b2 a4 ed d2 78 d6 3d e7 61 c1 02\r
+e2 59 21 02 ee 05 db 1b 59 1e 0d 85 7b f6 66 84\r
+9e 74 cc 19 b7 e4 e9 cc 39 2d e5 39 f7 90 fc 68\r
+e3 b5 21 db 3a 1a 26 7e 5a 4e 12 19 75 2e 01 99\r
+e7 01 9a 24 85 54 c5 ba e3 11 2b ee a4 0c f3 e6\r
+4f 8a af 9b b1 e9 d1 c1 d8 83 3c 2b fa 31 b9 d5\r
+45 0f a2 49 29 7f e2 e4 6a b0 3e 99 b1 f9 c6 51\r
+d5 39 eb 53 ce 09 61 ce 60 23 c1 7d d7 38 3d d1\r
+2b\r
+\r
+# PKCS#1 v1.5 Signature Example 12.5\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+bd a5 54 95 47 32 d1 d5 f3 94 75 55 c6 1f fa b8 \r
+01 db cd c8 12 1d c6 81 91 27 c2 f2 2a 43 6d 20 \r
+62 2d 1f 4a 44 7c 3a 77 b6 58 57 31 af c0 3e 77 \r
+ba eb 70 9c 1b fb 90 6a 1a a1 94 9a b6 76 3a 15 \r
+c7 da 5a 12 a8 f3 95 10 1e 64 6a 83 71 73 14 1f \r
+2a 0c f5 36 02 4b 36 91 8c f9 db 95 b1 cc 40 5a \r
+ef e6 3a 3a 93 bc 4a da 60 a0 f4 e0 72 9f 4d b8 \r
+b7 6f d6 4e fc bc b6 6f 0e 4a af f3 \r
+\r
+# Signature:\r
+07 26 2f e1 f3 d7 b7 79 32 cd b7 cd 96 ac 19 8b\r
+93 03 eb 44 46 0f 52 98 e8 e5 2f e6 70 52 99 bb\r
+d6 18 ef d0 b3 63 31 56 2f 20 b2 0e 86 6d 99 c2\r
+d0 4a 01 49 f5 64 dd f6 6b a3 19 f3 b8 48 25 39\r
+6e a8 b8 93 ba 5b 3e e5 e5 24 5c fe 6b 61 6e 30\r
+a9 00 bf 83 bb 76 3d 20 b3 30 37 01 ca be 94 33\r
+41 48 88 2a e4 ef 14 e6 d9 e6 c7 52 bc e2 53 bd\r
+da 57 39 e3 3b dc 32 eb 08 28 28 c1 c3 99 c2 2f\r
+ea\r
+\r
+# PKCS#1 v1.5 Signature Example 12.6\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+51 76 ad 7c 99 be 4c db bb 5d 79 ba 5f 49 6c ad \r
+9f 42 dc 25 d5 27 a5 d5 e8 e3 35 91 79 22 5e 6b \r
+0e 43 66 6d 3d 82 ab 5b af 42 4c 85 c3 31 21 60 \r
+6e b7 9a da 6b af ca b5 c1 e2 54 6c ab f6 a3 60 \r
+03 84 05 ca 18 c0 08 36 67 \r
+\r
+# Signature:\r
+06 27 23 8b 0b 93 e4 cf 98 57 13 d2 91 29 6c ed\r
+e3 45 e8 8e 17 82 45 25 53 59 39 b3 f3 d5 ff 4e\r
+bc 40 74 00 11 49 00 25 df ea ae e9 06 38 c5 39\r
+1e b4 4e 9f f3 70 45 7b 60 d5 de 80 c1 65 38 cb\r
+38 60 55 95 85 ca f5 e3 33 2c 7b 1f dd 8f 45 fb\r
+6e 35 57 f2 c7 a6 0d 09 9e 94 f8 e9 6b aa 1e 03\r
+19 9a c8 3c ec 8f 9c 16 bb 49 15 1a 88 72 cb fe\r
+70 f0 02 cf 3b 53 b6 11 d6 cb b6 65 89 7c eb f5\r
+99\r
+\r
+# PKCS#1 v1.5 Signature Example 12.7\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+e1 74 71 93 64 f7 bd c8 6e 2f 0c 61 26 5b f8 05 \r
+7d 64 9c ca \r
+\r
+# Signature:\r
+09 77 19 54 fc 8a 1f ee e9 0f 60 c4 b8 a5 bb d4\r
+62 c6 34 37 9a b3 da 19 ff eb a6 e0 31 b4 24 3a\r
+83 50 9c ee ed 6e 01 2a 91 63 c6 14 5c f7 05 02\r
+a9 fb 0c 21 db 31 fa d5 ad 14 69 5d e0 02 62 e4\r
+e5 67 09 5e 16 11 0c 6e 65 d6 bc b9 cc 02 e9 19\r
+f9 0d 19 e7 30 7f 44 34 50 3f 9f e0 2c 12 c1 d3\r
+f5 0c c1 60 08 6f e4 60 29 8c 88 12 25 bf f2 e9\r
+e3 13 da 38 44 44 be c7 2a 67 ac 34 44 67 e8 2b\r
+66\r
+\r
+# PKCS#1 v1.5 Signature Example 12.8\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+98 cb c9 1f d4 9b 50 7c 88 7e 97 c3 cf a9 b5 9c \r
+26 00 1f ca c1 64 87 f6 00 4f 0b 68 74 54 63 20 \r
+02 d5 49 b5 46 1f f1 53 0c 0f 5f c0 9a ac c4 6a \r
+da da 7d c9 d7 b3 e2 0f ed fe ec d8 f2 f1 68 41 \r
+77 32 68 54 2e 86 43 1c 7f b4 d1 63 f3 1e 8e 31 \r
+72 20 34 26 bc 0d 88 a2 3b 13 76 34 bf c7 14 01 \r
+72 20 fb fb ec 88 8e 01 e3 ef f7 bb bd f9 3f 08 \r
+3b 88 fd d6 40 7d 98 9b cc 5e cb 15 3c 9c ee 34 \r
+10 fd 00 6b cd f0 7a f2 28 79 0f d5 e0 4f 5c 0a \r
+1b 63 64 8d 48 60 9b f1 63 c6 fd 65 60 20 75 7c \r
+3c 06 38 e1 b8 2d 75 e2 b4 b9 08 b7 e0 a3 c8 d7 \r
+26 6b 80 1f 60 fc 2b 4f 31 7e bb 8b f2 2a b9 e1 \r
+cb 7b 77 84 39 5b d7 b4 24 32 9e 86 1d 47 86 61 \r
+f6 dc 12 98 51 5f 48 56 4a 3f f9 97 35 bb 90 03 \r
+38 75 a2 5b e8 b7 24 f3 \r
+\r
+# Signature:\r
+0f 2d 7a 5e ab 83 58 45 03 d9 4e bf 7d de 9e ed\r
+49 41 10 be 94 ed 64 8a f0 cf 6e 89 1b 06 2d 2c\r
+9d ef 95 87 55 b1 a3 08 48 8d 16 70 74 29 51 ec\r
+00 60 54 5d 2e c4 3f e8 4a ec 89 01 ad f4 fe 8d\r
+67 aa e5 7a 31 9f 49 1c 85 c2 1c d7 f9 c5 99 81\r
+3c eb 9d f8 47 78 ad c8 2a 33 c4 e7 67 4d 7f be\r
+13 48 dc 20 75 51 10 4f 54 42 ac d6 84 86 9a c2\r
+2c ac 51 6c c9 88 7f d1 d0 21 ef cc 54 ab da f2\r
+b6\r
+\r
+# PKCS#1 v1.5 Signature Example 12.9\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+3e ed 6b f1 16 cb 31 e0 fd d4 c5 c9 33 58 ba b6 \r
+8f bf a8 b5 c5 15 bc ab f9 05 1c df 95 a2 43 e5 \r
+ee 68 15 15 4e eb 4a c1 0f 52 31 d0 49 38 13 e2 \r
+81 49 e9 68 2b b1 c8 b7 7a 6e 13 60 b2 b2 c0 f9 \r
+c3 16 1e 41 7e f6 cb 3d 9a bb dc 74 2c e0 25 fa \r
+fc d5 38 c7 7c 4d 07 16 49 1d a5 4b cd f1 67 b4 \r
+7a 61 a0 35 27 c9 6e 4b 42 bf dc 98 5b 17 87 81 \r
+b6 92 0f 60 f1 1c d5 fa 76 66 3f 56 f3 19 f4 50 \r
+cc 2a 7f 13 bc ce 59 e4 1c b6 66 \r
+\r
+# Signature:\r
+07 67 3f a6 83 e0 98 bf a2 b9 55 b6 c3 4e 9c e8\r
+ec cc 5a b0 ab 4c 2c f7 9b 9b e1 e6 64 42 5a 7c\r
+17 7a 47 d5 32 0c d5 70 86 f9 51 89 18 45 09 4b\r
+1f bb c9 de e5 f9 b5 56 df 3e 61 e7 e6 69 73 d6\r
+3e 69 c9 da 17 29 6f e6 15 d6 33 c8 62 18 dc a3\r
+99 25 8c 04 f8 05 bd 04 d9 dc 97 a2 9f 39 d6 06\r
+ff 8e 9c 0a 13 71 aa ee c0 03 ea 27 48 95 ff 7b\r
+a1 50 2b 28 f8 17 63 02 c2 4e ec e5 b5 28 d6 71\r
+00\r
+\r
+# PKCS#1 v1.5 Signature Example 12.10\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+08 4e c2 87 86 5e 8f e6 88 04 72 37 20 97 ad 5b \r
+96 4c 40 a9 35 ee d1 be a5 1a b1 b5 bc 75 c8 46 \r
+bb cb d9 54 88 e9 ec c3 63 cf 07 3a 90 b2 0b e8 \r
+b6 79 36 46 22 f3 45 e1 22 d0 56 6a cd 34 a4 ae \r
+11 24 45 25 a3 8f 47 dc 1f 92 b1 7f 89 ed e0 6d \r
+83 6b 44 26 ec bb ea 79 33 ac 0e 84 7e 55 10 33 \r
+b5 f7 ea 4e af 1f 63 f3 47 9d b7 ea f8 02 c9 96 \r
+de 92 33 86 cd 15 b1 22 de 5a 23 98 d3 f3 97 02 \r
+c3 e9 06 5c 32 73 95 b9 a9 95 fa 25 4d e9 c7 ad \r
+b4 51 \r
+\r
+# Signature:\r
+13 a7 f0 04 c0 a8 8d 51 3e 2f 1a ae ab 41 7f a0\r
+b2 70 2f b9 3b 82 87 20 cc d8 00 cb b0 af 5a 19\r
+65 72 5b 6e e0 58 71 17 cb cb 81 a4 63 18 52 1c\r
+95 0d d8 46 9b d8 55 73 f5 d2 9d 86 53 03 eb ac\r
+45 c7 f6 03 1c 6f 93 78 eb 12 b4 2f 05 09 44 31\r
+6f 0b 93 db 89 9b ec 93 7d 5d 0f 58 ed 40 70 04\r
+01 cd 32 65 a6 a4 4b 09 bb 11 a4 38 ee a0 77 15\r
+ef e4 2d e4 e8 80 8f 88 24 02 61 14 8e 8d e2 93\r
+ed\r
+\r
+# PKCS#1 v1.5 Signature Example 12.11\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+61 07 00 00 7c 3c 6c b0 96 c9 94 d6 5d 95 c9 b9 \r
+a1 47 c3 46 14 cd 72 2f 29 eb c5 e0 93 78 6f 79 \r
+09 48 02 14 1a 31 08 d2 ec 8a 87 4c 53 18 7e b0 \r
+d6 ee 2a 85 91 38 cf bc 29 22 15 06 d0 bd 89 b0 \r
+f3 db ef 50 6b d1 ba 40 36 b0 f1 ec 00 73 32 70 \r
+60 75 2b 42 8c fa 12 db 28 0c 53 aa e5 f3 e3 57 \r
+0e 91 8c b0 9b 90 e9 84 7f 1f 5c a4 48 7a 6b f3 \r
+ed ad 42 5f 78 40 7e cb e3 f9 bc 7c ab 00 75 66 \r
+58 79 43 1c 6c c3 9e 0c 7e 67 00 60 67 41 8b ee \r
+8d 0d b5 e7 db e1 2d a7 16 ca \r
+\r
+# Signature:\r
+1e be af 85 d1 8f 37 84 0e 8a 3e af 07 d6 9f 52\r
+4d 88 3f a4 2f 29 1e 20 07 db 59 5a d6 93 0e 8d\r
+5a 75 b4 0b b9 5b eb 72 d7 ce d0 38 17 97 47 e9\r
+66 1d 08 38 40 d5 87 dc df 21 c3 ad c7 d4 7a 01\r
+f6 ec a9 c7 bf 9e 2a 98 87 75 1b 36 d1 ab af 25\r
+a3 13 fc 29 d7 f8 34 d2 a2 48 29 85 57 5e 1b e2\r
+4b c4 ef 43 a5 7e f4 b0 a6 83 69 93 e1 1b 67 07\r
+85 04 e3 b7 9c 72 17 75 f5 b9 9b fa cc c4 8a 8c\r
+34\r
+\r
+# PKCS#1 v1.5 Signature Example 12.12\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+da 31 f9 be 26 09 \r
+\r
+# Signature:\r
+1d 2b ba fc a4 1c a0 6c 4b 81 1c b9 d8 36 96 87\r
+16 6d 14 d9 f9 2c 5b 98 fc 7c 77 2f 2d 75 d3 5a\r
+5f 9a cc e5 9b 99 ef b2 dc b9 7d cc bb c8 6d 7f\r
+d6 b4 ae 8b ea b1 e9 81 e6 c7 74 5a 1b fb 4c 1f\r
+44 a4 72 b2 ad 07 d4 1c c1 75 15 b7 b1 4a 49 99\r
+0b 24 34 42 ff 2c 8f e5 05 b1 84 9f a9 91 ca cf\r
+68 09 a2 0e 55 f2 af 77 98 87 0d 65 77 6f 1f 9e\r
+e4 87 97 e3 13 aa 66 a4 7e 69 5f 3e 73 1b 2c 7f\r
+30\r
+\r
+# PKCS#1 v1.5 Signature Example 12.13\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+f9 8b e5 2d 9a 5e 55 ad 92 \r
+\r
+# Signature:\r
+29 2e a3 4d 3e 61 18 bf 8c d0 54 e2 15 17 e8 63\r
+ce 7c b7 dd 72 73 30 8f 7e cf ea cf 9b 45 75 83\r
+d9 b9 b9 7c 54 ab f7 4e 5a 5c a3 6a 87 06 7e 47\r
+d6 7a a0 47 a1 c2 ed 7a 23 d0 55 ab 4f 09 4a 83\r
+c4 39 ef 8d d2 d0 20 35 ef 05 62 d9 67 31 3d 81\r
+10 2f c6 8b 74 52 5b b0 e1 d7 96 2e b2 75 8e c5\r
+e5 ae ab 65 a9 3d 2e c8 e6 55 40 5a f8 8c 00 fa\r
+35 f5 9d e9 d0 cd 80 45 ab d3 71 73 b9 fc 6c 51\r
+d8\r
+\r
+# PKCS#1 v1.5 Signature Example 12.14\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+f4 38 ef f8 4c 37 3f c1 27 44 a3 84 15 82 43 dd \r
+97 f4 36 5e 87 d7 1e 8b 56 b2 97 91 df 44 ad f3 \r
+49 e7 62 60 04 a2 c5 33 35 ec 63 52 cc e2 ed d9 \r
+63 94 7f d2 39 38 93 c2 48 ba 1b 84 08 42 ca 77 \r
+6c 31 72 9f 70 7a f5 04 11 00 1c 28 7f ba 8f e7 \r
+25 02 32 0c 44 5b b1 43 fb 7b f5 39 4e c1 fb 2c \r
+d5 01 59 24 32 15 40 91 de 5a 23 65 d6 78 f3 57 \r
+82 fe a8 b4 7f 64 d6 09 19 f0 f1 d5 af a7 62 6c \r
+40 d1 6c ec 19 bf e0 25 d1 16 f4 2d 22 e2 0a db \r
+56 37 5a d7 70 89 f9 a9 33 81 fd 78 b7 b1 51 1c \r
+b4 e4 98 4d 2d dc 7c 9d 75 b3 10 f2 95 42 25 60 \r
+d6 6e 36 02 a8 71 20 96 16 13 1a 84 71 43 dd 07 \r
+8f 23 58 7d b5 02 dd a0 3e 18 60 64 82 db be 01 \r
+4e a0 83 b7 ec 16 1b \r
+\r
+# Signature:\r
+0e af eb f1 5d 84 ee 4a 13 f1 a8 2b 84 05 11 86\r
+41 e2 2e 51 da 94 d8 58 87 fc 4a 3b 11 f0 32 49\r
+cc 39 a0 37 45 01 07 1c 7e ef 4a ba a1 14 08 d0\r
+2f ae 17 86 de a3 75 88 47 9c 90 d6 27 69 85 91\r
+c3 ba e1 fe fd 6e 8c 40 e3 ff 4b 9f 60 61 e0 6c\r
+12 fd d2 1c 7f 45 dd c5 b7 8d 1c bc 41 c1 57 06\r
+fa 20 ba 92 f9 9f 58 b2 2b e2 76 75 be e0 81 a0\r
+60 67 ee d1 58 f8 e2 0b f0 4a 6e 96 8f 71 9a 32\r
+34\r
+\r
+# PKCS#1 v1.5 Signature Example 12.15\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+fa 1c 0f 7b 10 15 a8 95 b1 a5 65 f3 29 96 b2 b8 \r
+cc fd 86 4b 95 54 4d bb 9c f4 f6 e1 a8 41 de 92 \r
+06 d5 57 26 fd f7 ee a2 bf 33 6a 82 9f d2 bc 12 \r
+09 bd 21 5a ab b9 77 d2 3a 08 3f 10 ae 69 db 43 \r
+7c a3 2d 7b fe 4c 88 25 b9 34 88 f0 1a fd f7 84 \r
+45 8c ef 5c dd 8d ff dd 17 \r
+\r
+# Signature:\r
+25 e2 2e 6d f7 fc 6b d4 e0 f6 1e bc 8d a0 63 fe\r
+47 8a 3e d7 4d 68 f7 76 34 35 e0 e3 74 f6 52 62\r
+a5 d7 61 2e 86 78 59 61 22 c0 e5 b8 fa 0c 0b 12\r
+81 2b a9 65 3a 0f 27 38 83 c6 26 4c 6d fb 74 bb\r
+34 40 5d 2a 04 30 43 fb b0 ab f2 af 7a 12 3d 2d\r
+db f1 69 92 e0 9b aa 37 d7 31 d7 2e f1 99 62 65\r
+8a 8f b0 10 a1 0f 7d 55 62 ad 54 33 47 90 01 af\r
+36 d3 d3 26 ea db 2e 9a be c7 b5 55 70 9d 5d 47\r
+e9\r
+\r
+# PKCS#1 v1.5 Signature Example 12.16\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+82 8e be 2f 51 e5 88 29 cf a6 15 26 dd ed 7e 1f \r
+1b a3 11 db f1 06 4c 08 ac 0b b5 d6 71 6e ab 29 \r
+8a 23 d6 3b 79 3f fd 9d 9c ea 60 22 95 98 82 3f \r
+28 2f 10 7b 6e e8 8a 53 fd 93 e7 dd d4 8a 73 1a \r
+21 09 ff ed c8 9a eb a2 c0 f1 6b cb 14 0a 0a 89 \r
+dc 57 ee 8b 5d 00 0a 21 42 17 5b c7 07 bb 40 9a \r
+ae 3a 03 9c 66 3d 01 9a 0b d9 13 c1 3f 7f f6 f6 \r
+b9 1e 90 5a 58 9d 38 b1 50 48 5d 89 09 2d 18 a3 \r
+a7 62 25 27 65 52 5d 98 45 66 42 5b 05 77 0d e9 \r
+a8 be f4 43 ff 5f c1 48 33 af a4 cc ec e5 42 d4 \r
+f2 ce f1 e7 96 f5 9f b3 a4 bf 37 cb 67 7a e4 22 \r
+36 66 c8 2b 31 a1 6a 6c d7 01 a0 49 3c d9 96 86 \r
+6c 84 bf cd df 85 2b 19 ff c8 9e 93 61 79 fc e8 \r
+b9 9e 72 fd 4a fc 28 b5 11 73 af bb 25 c4 c7 \r
+\r
+# Signature:\r
+16 17 55 9e 43 ba 18 2e 95 34 86 43 6f 15 b6 02\r
+83 1e 42 ee d2 03 c2 69 f6 53 bf 63 9c 2b 76 0b\r
+0d 49 fb 53 2c a8 ad 01 e7 b4 af 83 72 92 55 db\r
+55 9b cf 55 fa b3 65 9c eb ec d5 37 69 4f ef 2d\r
+ef 9c 9e 76 2d 05 d2 32 1e d6 88 c3 f7 e2 c0 57\r
+33 ab 4f a8 1b 08 cf 79 fa cb 75 c3 20 0b 7a 48\r
+3a f0 8c b1 83 c5 09 27 cc 61 69 e4 32 f7 fc 9b\r
+11 78 0d bf 4d 3b 72 d2 d0 b8 55 93 d8 b5 b0 18\r
+2a\r
+\r
+# PKCS#1 v1.5 Signature Example 12.17\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+bb 4a 6e cc bd d6 de 0a c5 c3 b7 f9 97 98 10 4a \r
+58 69 c1 cf 1a 1f ac 7f 85 9f e9 51 49 29 7e b7 \r
+79 11 00 59 e2 69 f1 27 56 f0 8a 54 8b 66 af \r
+\r
+# Signature:\r
+27 7b ae 63 e6 e3 25 3a 0e 20 4f 4e 6c 9f e8 4b\r
+04 0b 86 4f 21 ed d4 42 6d 82 be 8f 1b 91 1b 0b\r
+d2 81 cf 11 49 53 d4 02 09 da 2e 9a ae 13 3b cd\r
+18 55 ef 0a 99 69 3a 94 43 c9 3f 6d d2 75 f0 58\r
+fd 1b b6 95 32 b6 4a 1d d7 e1 d0 e7 80 d7 52 04\r
+fa 8c 61 c2 eb 5d e8 82 72 cb 93 ae f0 80 f7 02\r
+bb 78 88 94 25 a5 f1 66 f6 3b 5b 1a 31 ec 5c 1c\r
+26 a5 99 fa fe 58 77 42 98 b9 7d b3 14 fc 81 d0\r
+92\r
+\r
+# PKCS#1 v1.5 Signature Example 12.18\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+f1 d1 11 ad 08 e0 38 ca 3a b4 e5 2e 5e ab 71 01 \r
+87 6c a9 be 62 6a 13 59 17 f4 5b 1f 9d 1b 32 ef \r
+e4 ff 86 7a b8 a3 05 f9 49 c0 04 8b 25 f5 46 22 \r
+61 b1 a3 49 3b 81 90 21 0f 5c fa 6b f7 e5 c3 00 \r
+54 98 de ec c1 e1 c5 04 f3 a3 49 98 be 6a d6 ac \r
+00 40 51 c4 e0 a3 db 2c 22 eb 5e 14 16 55 28 df \r
+78 12 a2 0d 5c 7f 05 b9 40 ca 13 e9 38 3a e0 0d \r
+6c d4 d0 f4 ae 3d ad 04 7a b9 c4 17 8d b6 6d 3b \r
+80 96 0c af 0a 92 4d c9 4e b8 e0 77 09 bc db 34 \r
+9e 90 fa 2e 10 c5 d5 26 d2 21 9c a7 6f 88 01 fd \r
+c6 61 bd ca 6a 93 da 48 d0 45 ac 37 51 34 cc d6 \r
+ff 7c 52 fd 15 c7 cd 3d 1f 31 af e5 04 bc e7 c0 \r
+33 3a 89 79 e3 ce cc 53 c4 ea dd 7d 95 d4 6f a3 \r
+b2 a9 f0 06 10 0d 6b fc 0e d5 ee 77 69 4f f1 a2 \r
+4e 16 a5 44 de 71 46 52 90 dd dd 18 9f 01 67 03 \r
+59 f8 c6 b5 d4 c6 b6 b9 f5 c5 7a a5 a3 8f 07 99 \r
+\r
+# Signature:\r
+0d e9 42 31 c0 6a b1 87 b0 0d da 2b 34 e2 b4 cb\r
+ac 41 f6 08 c4 8c 72 27 a6 28 2a 17 9e 58 c3 2e\r
+f5 dd c9 76 4f a2 df c3 fb e0 21 dd b4 81 56 a6\r
+37 3c d6 9b 85 d3 64 d8 9b 5a 32 fa bb 2d 46 5d\r
+05 62 d4 a1 dd 6f ca 64 78 0b 06 2a 94 71 24 a7\r
+fc 0b 82 e4 fe d1 2b 8b 4f 72 6a 0c 85 39 c6 cd\r
+e2 1a f6 55 ac c8 de 1e 7b a9 d6 7b 87 b8 e7 77\r
+d4 8a cd 86 8a 80 db 15 31 4f 35 55 60 10 35 77\r
+eb\r
+\r
+# PKCS#1 v1.5 Signature Example 12.19\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+9c 4e cc 4b 24 44 a4 01 bf b6 f4 b7 24 49 23 a5 \r
+ad 33 86 c3 b8 41 67 8c f5 e6 44 7b 8a 3a 07 59 \r
+86 c3 3f d0 01 b8 43 72 4d dd c4 21 2f f4 5a b3 \r
+fe ca a9 0a 16 f6 b5 59 2c 51 5c c4 ee 54 ae a4 \r
+59 34 32 16 70 96 67 8f 93 41 59 85 6d 14 c4 32 \r
+e7 d6 d2 8d 71 b2 68 7f 54 ed 71 9e 5c 20 11 00 \r
+68 8e 85 f2 0e 79 a9 ee 8a a4 b6 14 31 34 3d 1e \r
+99 c2 14 35 c6 1e 8b c1 04 f2 ba d5 29 60 fc ee \r
+e6 7b 85 03 3d 3a ee fa e4 13 ce 29 70 1e ff cb \r
+02 b4 84 a0 31 e2 f3 19 ef 7e d0 d6 e6 9b 29 16 \r
+ee b3 8c 4f 19 42 ba 23 c2 a1 79 0c e3 fe 09 d0 \r
+1b 9b 9f e6 db a8 dc 21 0e aa 8f e7 3c a7 6f 1b \r
+5b \r
+\r
+# Signature:\r
+18 53 c2 1a 4a 18 54 7d 86 7b 3c ed 02 da f0 b2\r
+2c e8 d4 d5 af 2b 8e f5 f7 c8 fd 38 5b 81 53 64\r
+8d 81 83 1d 6a cb 5d a8 30 f6 77 40 25 9f fb 33\r
+9f 7b 90 af 48 83 81 9c 47 15 e0 8c 28 99 d4 c7\r
+24 6e 07 e5 bc 6e f3 cf d9 a0 4d a0 6c 43 e9 5c\r
+77 2b e2 21 cf aa f6 95 4e f9 33 31 e5 95 ff 48\r
+92 1f 05 fc e8 fa 0d 42 9e 0c 99 56 2a 9c 2f 68\r
+eb f3 2c f1 c6 c6 bb 8b 27 4a 2e 42 d6 71 59 12\r
+ff\r
+\r
+# PKCS#1 v1.5 Signature Example 12.20\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+c3 81 e6 03 99 86 51 66 d2 ba a0 31 45 26 83 34 \r
+18 40 39 e0 53 35 a3 00 c2 80 4e 2b fe f5 a7 d1 \r
+4c 44 3d 65 38 e1 6b df 9d a7 ad 1f ea 63 4e bf \r
+e1 13 bc 82 1e 79 a4 49 b2 eb 2f 57 c2 1f ba 35 \r
+ff cc 6a 7e 52 55 72 27 7e 8f 55 37 c7 b5 b9 79 \r
+4d ef b3 9a ab 06 07 85 d1 99 40 02 dc f8 07 01 \r
+2e 1d 17 91 da 94 3b 2b 75 9c 36 6b b4 24 e4 2c \r
+9c 20 43 ce 78 8a 25 fb fe bb 87 e7 4c b0 20 b1 \r
+1e 8e af 16 18 84 d6 67 2b be 9c 09 fb b3 b8 af \r
+a0 61 \r
+\r
+# Signature:\r
+19 90 69 57 37 53 01 8f 33 59 2a f1 5c 1d 31 31\r
+bf 5d 8a c4 f6 4c f6 14 d3 a0 1b f3 72 df 00 2e\r
+b5 b5 fc 8f 82 ba 13 7f 83 dc 14 2e de 38 c5 81\r
+80 e7 bd a6 9c 4f 1b c7 bf 96 ec d3 fa 79 bc cb\r
+dd b7 d9 2e 4f d8 64 c5 fa 93 3a 4d fc 60 0e 10\r
+83 00 8a 38 6f 4d 02 2c 20 24 ff 7e 0b 37 22 ea\r
+fe a0 5a 1e 02 c7 a6 3e eb 40 f4 f4 c4 f6 60 c3\r
+24 72 a0 a7 89 23 e3 86 3a 99 44 5e 7c fe 27 00\r
+60 \r
+\r
+# =============================================\r
+\r
+# Example 13: A 1031-bit RSA key pair\r
+# -----------------------------------\r
+\r
+\r
+# Public key\r
+# ----------\r
+\r
+# Modulus: \r
+70 e9 23 a5 a0 cd 8e cd f9 9b be 93 d7 d0 28 82 \r
+95 5d 91 b6 ef e3 ce c8 6c 93 d2 1c 0a c3 01 b8 \r
+29 3e 51 43 5b 87 8b c6 b3 4b ed 41 11 59 0e 76 \r
+46 76 58 8b 11 6c 2a 36 a4 c7 7e d9 c9 0a 13 c1 \r
+4d 23 e1 99 47 87 fc db 8f 5c 97 41 0f ca d4 04 \r
+5b 85 85 70 2c ce 29 da 11 f9 7e 79 a9 7c 2e 5f \r
+6a 5f c0 bb 8c e7 6d 15 54 a8 bc 47 96 17 20 d3 \r
+64 05 0b f2 74 19 bf f1 68 c0 a7 ec c8 73 4c b5 \r
+a5 \r
+\r
+# Exponent: \r
+01 00 01 \r
+\r
+# Private key\r
+# -----------\r
+\r
+# Modulus: \r
+70 e9 23 a5 a0 cd 8e cd f9 9b be 93 d7 d0 28 82 \r
+95 5d 91 b6 ef e3 ce c8 6c 93 d2 1c 0a c3 01 b8 \r
+29 3e 51 43 5b 87 8b c6 b3 4b ed 41 11 59 0e 76 \r
+46 76 58 8b 11 6c 2a 36 a4 c7 7e d9 c9 0a 13 c1 \r
+4d 23 e1 99 47 87 fc db 8f 5c 97 41 0f ca d4 04 \r
+5b 85 85 70 2c ce 29 da 11 f9 7e 79 a9 7c 2e 5f \r
+6a 5f c0 bb 8c e7 6d 15 54 a8 bc 47 96 17 20 d3 \r
+64 05 0b f2 74 19 bf f1 68 c0 a7 ec c8 73 4c b5 \r
+a5 \r
+\r
+# Public exponent: \r
+01 00 01 \r
+\r
+# Exponent: \r
+02 9e 10 f6 bb b7 d0 2d eb b1 a5 d5 19 0d 69 06 \r
+ff ed eb 9d 15 4a 0f 66 db 87 80 b9 28 31 b5 96 \r
+3e 94 84 7f 3e 7d b1 aa 91 48 fb 0e c5 57 6e 6b \r
+a4 fe 04 d6 f2 78 32 b1 52 18 12 d3 7b 22 d9 ea \r
+e2 80 08 e0 92 c6 7e 72 32 42 67 e1 b1 ee 45 43 \r
+55 74 1d 8d e1 d2 a6 a0 50 74 bb 1c e5 81 8b 41 \r
+bd 19 dc 6b 58 c8 93 7d 8a d6 40 d7 04 3f a1 1f \r
+46 8d 6c cb ec 4a de 52 0a 9e 15 9d 60 5d 09 28 \r
+29 \r
+\r
+# Prime 1: \r
+0a b4 64 fd 6f e3 3c 45 9a b2 dc ce 5f 78 a4 d7 \r
+4f 92 b9 97 d4 bf 54 2e 2d 85 4e 76 2c 85 86 fc \r
+43 57 cc 58 cb 33 36 33 b0 95 a5 ee 04 a0 32 48 \r
+53 64 d7 0f 67 a3 aa 04 85 4c 7a 87 a6 9c f4 c2 \r
+ad \r
+\r
+# Prime 2: \r
+0a 8c 3c c5 04 13 40 f4 32 fe 0a 78 73 13 57 79 \r
+16 fe 76 c0 39 f9 71 75 9e c5 0e d6 c5 b9 a7 36 \r
+9b 68 96 9e cb 52 59 fe 9c 50 d0 75 9b f8 b3 aa \r
+c1 a5 d5 b5 28 8d 67 89 e7 18 fa 37 ef 42 39 95 \r
+d9 \r
+\r
+# Prime exponent 1: \r
+bb 29 5a 95 d5 b3 3c 1d c0 b1 8b f6 c1 4a a0 d9 \r
+f2 6f 72 8b 39 36 0a a1 59 45 6e 94 c3 d9 e0 48 \r
+c9 2a 4f b6 31 1d 36 92 8c e5 f4 47 a4 99 4a 8f \r
+47 87 d8 a9 7f 68 11 3e f9 66 34 f5 90 2a b7 51 \r
+\r
+# Prime exponent 2: \r
+02 fa 11 2c 89 39 e5 db 05 89 2c eb 51 8e e3 e1 \r
+08 dc 48 27 78 35 2e 10 43 fe d9 71 43 dc 61 94 \r
+c7 c7 7c ba d4 27 29 be f1 de dc f6 54 4e 9c 66 \r
+54 c0 b8 cf a7 e2 40 96 6a e2 61 bb e7 8a 89 36 \r
+01 \r
+\r
+# Coefficient: \r
+a8 8b f3 ff e9 3f 40 4e 06 82 1c 97 71 ea e6 08 \r
+15 71 2d 6f 94 52 71 f6 f3 6f 03 69 d9 66 c9 20 \r
+c7 f8 cb c7 84 25 ac bb 9c e0 fa 1a 03 22 f5 0c \r
+97 b8 11 5b d1 51 91 f2 24 b5 68 d1 d6 ec a6 db \r
+\r
+# PKCS#1 v1.5 signing of 20 random messages\r
+# -------------------------------------------------------\r
+\r
+# PKCS#1 v1.5 Signature Example 13.1\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+b5 e8 6c 8b a3 98 5a a5 54 1d f9 5e 51 3c ff 67 \r
+61 2e af 2e 16 68 85 76 f7 d6 73 f6 f1 89 1f b7 \r
+5c 9d d2 cd \r
+\r
+# Signature:\r
+6b 42 fd 51 63 09 19 7f 8a f3 c7 3e 39 62 4d 8e\r
+ba be cd a3 ec 3c e6 57 b1 11 7f 43 e9 83 87 7a\r
+1b a1 aa f8 e9 5c c3 99 91 d9 2e 35 e2 db 1e 41\r
+30 90 14 3d 16 46 71 98 b9 b9 a9 90 d7 74 c2 7a\r
+d3 bb b4 35 2d 3f 07 5d 61 73 2c 6b 58 ec 0f 66\r
+e4 92 a3 f7 ac 4b bc f0 12 ed 6b 40 1f eb 4f f3\r
+95 cb 8b 21 8a 81 d6 17 31 ee ce 37 6f 68 8e 66\r
+ae a6 98 b4 a8 86 2f 58 c9 1d 87 60 85 49 6f d0\r
+14\r
+\r
+# PKCS#1 v1.5 Signature Example 13.2\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+95 46 34 6c f2 21 94 c7 87 88 81 70 a4 82 f7 f4 \r
+92 17 c3 94 0d c6 21 0c e3 9e 45 50 a3 9b 45 28 \r
+22 41 9a ea c2 4b ec 19 8b b3 59 d0 8b e8 19 6d \r
+f2 e7 57 76 61 96 c9 58 e2 b1 59 c7 4c 1c 30 23 \r
+c2 db cc e9 ed 5d 0e f3 fb 51 45 0b ff 64 45 db \r
+26 5e 60 6e 19 4b ee 06 4c a5 b3 21 d7 e1 55 14 \r
+23 0c 2b 3b 55 d5 da 4c d0 40 52 2f 7b b8 6a 96 \r
+2b 81 3f 9d a3 9e 51 38 9b c6 4f 56 e4 47 b2 a2 \r
+bf 81 9d 7a 80 09 4e 2b 8d e2 7f 10 4b b6 eb 2f \r
+2f b4 3a f1 d0 1e ad ca 23 a1 96 ba 12 5b 6a 78 \r
+57 99 74 c0 ee c8 a5 49 67 71 f6 7d bd 50 69 f3 \r
+36 e4 ef 1f 40 47 42 df c6 9c e3 25 aa 64 9f 8a \r
+63 31 cf 40 35 55 e1 3f 08 10 a7 63 50 a7 e1 8d \r
+29 92 fa b4 8f 39 7f 3b 93 c5 bd 5a 6f e1 d2 c4 \r
+61 8b a1 f5 9f 00 2d c2 57 ec 39 ee 2f 87 62 98 \r
+da 90 f7 44 0a d4 c6 c9 3f c1 14 df 05 \r
+\r
+# Signature:\r
+67 e4 14 99 3f 98 7a 22 64 3d d0 39 e7 f9 fe 1c\r
+ae 74 4a 7a e4 1d 4c 04 4f a4 ed 8d c9 e3 40 ce\r
+bb 1e 2a fb 19 8e 84 7a ef 4b c0 61 fd 80 0d 81\r
+d4 d3 67 b0 fc 2f 73 09 33 c1 9b 88 d4 dd f0 5e\r
+d9 8a 58 56 de 5e b4 5b 11 6b 7d 24 fe b4 56 77\r
+84 9d ab 76 e9 e0 cc b4 5b a6 b6 f6 14 1f 37 bb\r
+ad 7c 19 1c 37 77 11 3b c7 38 8e 4e 46 44 ec a9\r
+47 03 a7 2b dd cc 6f 50 cf 98 0e 3f 6d e3 9d 73\r
+12\r
+\r
+# PKCS#1 v1.5 Signature Example 13.3\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+56 52 b4 c5 75 20 b2 55 fb 96 f7 0a 30 ab 92 ee \r
+c1 93 99 56 b6 a9 43 c8 3e d0 98 6e 2e 6e e4 ef \r
+bf 8a 52 28 78 67 28 12 03 a7 a6 d1 d8 86 b7 00 \r
+59 52 b4 3b 77 85 44 ed a8 98 e0 df 2f a0 6f 68 \r
+38 03 18 f1 4a 53 fe 55 d7 2f 8c fa 6a f2 1d 93 \r
+bb fc 20 d3 58 c2 08 c5 62 d7 39 be 00 01 ce 07 \r
+fd 8c d2 f4 6c 3b 44 c8 36 51 88 09 b7 6f 3a 70 \r
+cf 69 26 be 06 9c 35 75 d5 \r
+\r
+# Signature:\r
+01 64 11 a2 31 a7 38 94 4b 3e 44 f7 88 5c f8 1a\r
+ca b7 32 d1 73 6d e3 4c 56 cf 40 f9 9a 6c e4 00\r
+70 a2 0a a9 4c 48 78 44 a9 3c ef 28 7a 58 bc 0e\r
+a1 81 b2 cf 27 d9 14 f2 93 b9 29 77 9d 39 03 6c\r
+4e 5a ae d3 5e ee 8a 7f d5 0e fd 09 6c 91 a8 f7\r
+2c 3c 14 1c 57 6c 8d 10 b6 36 fc 4d dc 1e 67 14\r
+f1 7f fc ce 10 6d 22 1b 4f d7 d6 fe 1e 7c bd 3f\r
+3b 08 f5 54 6b 44 d1 fe b7 18 fb c1 33 70 c7 fa\r
+2c\r
+\r
+# PKCS#1 v1.5 Signature Example 13.4\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+6d 57 f0 79 a3 e8 ad cb 47 cf 2e 3c a9 76 e0 3b \r
+09 c7 7d 1d 9d 9d 84 84 35 7e 91 23 09 e8 f4 a8 \r
+3c b5 0c b6 a7 38 8c 41 4a ec 84 46 71 ff 81 06 \r
+51 e8 28 10 3a 1f 6a 19 9b e2 60 f7 46 00 02 8c \r
+6a 7b 7b b9 41 6c e7 b6 35 0a 3a 68 05 62 0c f5 \r
+e6 b0 09 5d fa 22 b5 46 01 f6 19 af d1 0d a2 03 \r
+d2 81 90 cf 9b 0d b5 98 6d 29 30 33 69 1e c5 bb \r
+ba 6d 73 ea 32 47 2e fa 3f 16 0f d2 b1 b5 e4 3b \r
+0b fa d3 16 77 30 5f ef 46 72 44 11 4e e1 0f 5c \r
+b2 d6 7b 47 83 23 a7 11 04 1e 29 4c 46 b2 ed 39 \r
+cc de 07 9c 87 7f e7 5c b8 75 14 4a c3 1e b0 31 \r
+a7 38 a4 ce fe f9 1f 01 7b a7 15 23 f5 12 48 18 \r
+cf 48 b9 72 bc 47 c8 f2 ed 35 6f 5b f6 91 fd 94 \r
+67 0b b2 \r
+\r
+# Signature:\r
+31 5c e4 17 d0 bb d7 3e 7c 43 56 79 7e 73 ed 7a\r
+bf e9 fc ff f1 a5 34 28 99 a7 d1 1f b0 d0 54 2b\r
+fc ab 66 de 2e 4e c0 7c 7d c2 be 7d 79 72 90 a3\r
+0d b8 c4 07 dd 16 37 65 88 a6 dc c1 a2 07 bf 7f\r
+f3 11 54 0f aa 9d d6 f1 9a 73 ab 25 a7 49 6e 68\r
+2f a8 a7 05 40 81 07 6c 1a 02 15 7b e6 3e 7f 64\r
+5d e8 2d f7 c6 15 50 3f a8 3b 4e db a2 05 81 81\r
+2e 09 7f 65 05 6e d4 17 f6 f2 48 03 53 0c f8 18\r
+58\r
+\r
+# PKCS#1 v1.5 Signature Example 13.5\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+bb 75 44 6f 78 78 23 dd a2 42 2b 1a dc 7d 7f ef \r
+d0 6a 6e 9a f5 c0 49 01 ac 5b 99 91 3a d6 29 8c \r
+9d 1a 33 22 e8 b2 17 e4 e0 99 4c 42 20 42 80 d4 \r
+04 d0 1e ce b5 ec 53 fb 86 f7 61 a3 96 b2 3a e1 \r
+9d 46 79 05 a0 fe 80 50 b8 95 d8 ba 37 46 68 5c \r
+47 43 9f 90 c3 66 9c 70 ff b8 19 94 56 5c 4d f2 \r
+a3 1e b2 a4 52 bc 3c b3 12 b8 14 7c ec 19 10 32 \r
+f3 8f 3b 3d 89 d7 58 2b f1 8e 7b 72 75 fb 4f 16 \r
+ee 89 56 7e 2a 56 bc 73 b3 e2 e1 09 f9 94 0e bd \r
+10 b9 df 2b 88 ac cf 0b a1 8e 5b 34 95 20 d2 c7 \r
+f5 a3 1b d5 22 6d 12 ec 35 bf c9 e3 62 03 e1 35 \r
+06 ba 12 b7 56 c8 ba 00 af 91 b8 5b 0b 4c 07 c7 \r
+f4 84 ad c4 58 c9 26 aa eb 4f 08 2f ec 98 7d 9f \r
+27 6b 89 49 59 7e c0 40 1b b7 1a 2f ea 9c 7b 74 \r
+e0 df e6 aa 52 ac 8b 80 be ea d3 36 a4 9d b2 2f \r
+b3 \r
+\r
+# Signature:\r
+53 d0 d7 95 bb 08 2f 20 01 03 6f 47 2c 2e ce 6e\r
+7d 2d b6 9f 29 2d a7 21 36 75 c7 cb ba 0d 33 b2\r
+32 12 f8 f4 3a 4a 8e 09 a6 a5 0e 01 9b bd d5 9a\r
+58 89 8c c4 6c 58 a4 6e 42 ce 7b a0 93 fb 46 92\r
+f3 83 de 33 a9 a3 4f 47 c7 e6 19 38 bf 8a 6a da\r
+a8 8d f2 12 96 b4 c6 7b 52 68 35 f7 57 f2 c2 6c\r
+1d 30 9d 7c dd 5a d5 fd 8f 61 f8 51 ed 23 c4 be\r
+2a bb 62 7d fd 81 7f 84 77 dc 04 2b 6a 2e 40 69\r
+40\r
+\r
+# PKCS#1 v1.5 Signature Example 13.6\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+88 39 39 d1 49 a5 44 e6 2e f0 4c 61 03 51 a2 df \r
+a2 52 eb 9a 9d 1e 11 ae 54 c9 b0 7e bc f1 fd c4 \r
+7e c1 d9 47 03 41 1d a4 15 f5 9f b3 e5 04 1e d9 \r
+47 0e 7b cc 81 9b 5a fe af 86 0c 01 6e f1 25 bd \r
+08 a6 cb 8b cd f3 b9 3a 51 dc ad b2 f6 8c 8c c3 \r
+77 55 14 28 2a ff 75 67 ec 65 f2 70 d0 2b eb 95 \r
+fb 8f ac 24 09 5e 17 06 e4 8b 52 48 65 bc 14 46 \r
+1d 3e ce 8c 50 1c 3d 80 2a de 98 5a e9 5c fe 1a \r
+b9 d6 b9 ab 0d 15 fc c8 86 6f 7f 25 9c 5e 41 c0 \r
+2c d4 13 43 7e 7d 6b a7 f1 5b 0a 70 da fb d5 5c \r
+0e db 6b 80 75 c2 7c ff 3b 28 9e 6c 99 e9 a8 84 \r
+ff 7f 08 6d a9 f7 5d 6a 4c bb cc af 52 ba 25 c6 \r
+34 2c 38 a7 6b 44 e1 01 15 5d f7 55 e3 9c 14 86 \r
+2e 22 0c a3 6f fb cc 83 2a fe cb a8 7f 8a bd 96 \r
+0a 57 7f 56 ca 6c d8 e9 91 26 65 8f 27 ac 6e 53 \r
+c4 42 ed 47 66 \r
+\r
+# Signature:\r
+1e c0 2a e6 a0 a3 f6 11 99 29 61 ca 27 cc bf 29\r
+6e 11 36 18 32 e1 ee 75 20 56 9a 9a ee 06 34 5c\r
+da 22 b4 fa 48 fc 34 5e 47 78 bc 3c cd fe bd 2d\r
+c5 a6 c9 d4 84 51 aa 44 1b ea 4b 95 11 99 65 4a\r
+e8 d2 f7 52 2e 17 ed bc 2f 51 ce 15 cb cd 36 6f\r
+49 39 cb 53 c3 b7 70 81 f4 a7 37 50 05 4e 00 b3\r
+0b a2 fe 58 f6 f0 2e 36 a8 62 54 23 97 db a6 a3\r
+cd 22 77 70 88 19 e7 8a 2d 87 6a 23 a5 a2 69 d7\r
+75\r
+\r
+# PKCS#1 v1.5 Signature Example 13.7\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+40 31 e0 de f4 f3 d1 ad 9b c0 82 77 0a 88 a1 d9 \r
+b4 b7 10 75 48 cd f8 46 2b 0b ae 3d 99 4d 8e bc \r
+4d a0 44 b9 05 dd 8e d9 1a 1d a6 76 72 78 22 36 \r
+0e e2 b6 d5 e1 2b b7 03 16 d7 9e 8a bb 82 a6 43 \r
+44 af b3 b2 25 88 5c \r
+\r
+# Signature:\r
+0b e5 a6 d0 43 be 5d 27 d1 d5 1d 9e 3a a6 1d 92\r
+c9 d8 43 23 11 9b 48 c8 4a 80 38 97 18 d7 a1 aa\r
+f5 7a 9a 0d 21 4f 65 06 48 48 64 df ae 85 db 7b\r
+84 74 07 3a 8f 97 7b 42 b5 3b 40 7e 44 c7 c6 2b\r
+16 8d 1e 77 78 f4 f2 78 57 bf ba 85 dd dc 8b 0e\r
+9f 0e 9a 5b 6d e7 1a 04 43 72 0e 92 bb 88 b0 77\r
+cb a1 5d 3f 6e 2b e4 d2 7a 7c 50 9c 7d c0 3f 1f\r
+dd 4f e3 38 a4 e5 45 c4 6c 03 45 22 cc c0 d4 5d\r
+4c\r
+\r
+# PKCS#1 v1.5 Signature Example 13.8\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+7f dc 96 a4 56 57 74 02 9f ff a9 3b 39 f0 5d ee \r
+9f 84 fa 89 53 fd 0f 63 38 c8 1c 9d ec 6c dd 66 \r
+1f fa b9 6f 0e 08 eb 0b 9b a9 ca 5b e1 7b 57 c4 \r
+b4 86 8f d5 34 11 54 de 50 27 71 13 c7 18 53 41 \r
+\r
+# Signature:\r
+1d d2 1f a4 95 be 7c 49 0f 98 2f 69 ea b1 4e 24\r
+da a0 4b d1 38 b7 14 32 49 cd cc d7 8c cf c9 10\r
+6a ca a0 3e c8 76 69 42 32 56 6e c6 ca b9 12 28\r
+40 f6 69 c8 00 f2 ee 09 2b b9 b6 cb 2a 45 42 a9\r
+0d e6 04 c4 f1 05 00 0a 3a 0d ec cd 3d d9 7a 32\r
+61 fa 38 22 7e b3 81 a1 f8 f2 3b 66 65 d2 84 80\r
+df b7 21 17 88 2e d8 db 25 d7 6d e4 0d e2 fb e7\r
+2d c3 94 ec 6f bd aa 99 c6 4f ad e7 29 78 a5 1f\r
+c4\r
+\r
+# PKCS#1 v1.5 Signature Example 13.9\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+63 18 32 ab 19 18 cd 02 08 28 e4 7a e2 b4 47 6b \r
+14 69 f2 72 e3 0e 53 e5 96 fb a2 6b 40 29 37 dc \r
+44 c2 ea 57 45 c7 9d 2d c6 4a 10 e1 22 5c a0 b6 \r
+92 9d 49 54 bc 5d 37 40 96 fd 87 8d d1 01 f7 66 \r
+63 13 d9 a8 f8 26 bc 67 14 01 42 2c 1c fe 1a 6d \r
+01 a4 d7 86 4a 14 c6 0c eb c2 f0 70 91 4c ee de \r
+b1 78 2f e5 40 a0 a5 d2 57 84 44 f9 b3 60 34 ec \r
+77 d6 b8 03 a0 c9 76 1b 32 75 92 aa 48 46 63 5c \r
+56 3f 1c 6a 6d f6 8f aa bc e4 97 af 4d c9 a3 64 \r
+2b 75 a4 a2 94 d3 08 56 8e 6d 73 c1 1d b5 67 24 \r
+04 2b 55 c3 a2 4a 7b c7 a1 05 0e 4f 44 8b 6a \r
+\r
+# Signature:\r
+45 d3 a6 ae 8f 48 35 5c 01 2b 50 10 79 ee 92 af\r
+fe 3c 9e 60 2e 4a 08 0c fc 94 72 3a e9 6d ac 2a\r
+66 e4 55 a4 0e 72 8b 2a 1b 27 e6 22 40 55 4e c7\r
+c5 c0 ad 6a a0 0c 09 22 e5 3d 7b 12 ed 42 c0 87\r
+32 2d 15 36 e4 6b 7d eb da 80 95 f5 5d 1e 12 bc\r
+24 42 f4 3b 4d 12 8f ee 23 1d cd 6f 8c 37 aa 6b\r
+cf 4f e7 b5 e0 de a9 c6 70 9d 3d 91 f9 e4 2a 53\r
+16 8a 16 b6 fe 99 7b 5d fe ba fb 46 ed 9a ea 5c\r
+66\r
+\r
+# PKCS#1 v1.5 Signature Example 13.10\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+8b 04 3d 90 da e3 41 66 85 d5 3a 5b 4c 3c c2 54 \r
+cd a0 cb d2 3b 4e 40 8d e8 20 a4 da 7a de 6d d9 \r
+5d 4e 1a 97 e2 31 2c 3e 84 26 1e e0 b6 ce fe 60 \r
+e6 b0 82 fd 59 65 ef a1 64 8f 4f ae 61 60 5f e3 \r
+55 33 27 00 46 96 05 26 53 47 e6 54 7a ea 77 5b \r
+85 6e 5a 46 c3 41 d2 99 52 bb ea 92 70 49 96 3e \r
+37 40 20 8c fb 0b 65 28 57 b6 f5 2e 36 6a 17 0b \r
+e3 4f 13 d3 58 46 bd e6 97 20 46 20 01 b0 9d d2 \r
+68 b8 9b 09 00 31 8e 73 3d b2 00 9e fd 9b 51 77 \r
+41 e5 10 d3 f3 94 f7 ad b5 45 59 b1 57 \r
+\r
+# Signature:\r
+6b 27 8f 36 2c 29 2e ea 09 b9 0b f3 53 d1 43 f2\r
+ca 09 9f f8 79 57 34 79 df 2a ff 9b 25 0d 1c 91\r
+87 c6 a3 34 3e a1 4c 07 6f 2a 20 c1 a1 9d b2 6a\r
+ad 35 48 ec 6f b3 b2 fa fc 75 1b 59 08 2d 8b 23\r
+c8 2c 8a 51 f7 fa f7 a4 d4 a8 23 98 bf be d4 49\r
+bd e4 ee 9d c8 68 01 60 66 6f d9 c7 74 c6 aa 57\r
+7b 4e c5 4c f0 d5 bd 9e 3d 1a fa 9c 3b 4b 91 46\r
+76 78 c9 d4 c4 fe 40 0a a8 57 a3 b0 54 5b df 84\r
+a6\r
+\r
+# PKCS#1 v1.5 Signature Example 13.11\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+3b 28 a6 09 2e 47 08 98 af 07 0a 08 7c 45 53 18 \r
+8d e6 c3 44 bb 0b 5f dc 7f 66 fb c5 2d c9 3a 8b \r
+92 a3 74 11 20 37 d6 a4 32 86 12 8a ce f9 5a 35 \r
+05 c0 ab b1 af a6 2c 48 cb 21 36 07 7f 8a 0e 0e \r
+0b 5a 4e e9 b2 c7 7d 7a 0c 0b 53 f3 8a 51 cc 3d \r
+b9 b5 83 b3 ae c0 7f 1e 22 4f cb 3f 1d ad 19 5e \r
+05 86 59 a9 d1 1f 8e dc 74 44 99 46 86 ed 62 c9 \r
+75 66 e9 e0 0c bf 8f 0d bc 17 16 e6 b7 f0 f8 8f \r
+e8 9a 86 7a 41 d6 43 13 5a d8 b1 8a a1 43 e7 37 \r
+5d f1 95 29 \r
+\r
+# Signature:\r
+32 62 fe 17 e4 4e 5e cc 84 31 70 d3 ae 27 51 da\r
+1f 48 d6 e9 61 d8 1e 93 59 b0 98 2c 6d 61 30 8e\r
+ba cf e2 60 7c 53 8c 17 0c e0 e7 2a 07 bc 01 48\r
+7b 29 5c 36 b8 e2 2a fd f6 e7 fe 39 c0 3a 5c 0c\r
+36 61 06 1f 23 fb f5 89 0e ad 59 f8 72 c9 46 cc\r
+e0 f8 16 c9 ed 3a 2c 1e 11 f8 f7 4d a1 e9 7a 39\r
+0d 53 4d 78 55 78 a2 45 5f cd 87 47 83 f4 57 2a\r
+15 f4 93 7d ca 98 09 3f d0 e9 99 0a f0 00 52 56\r
+bf\r
+\r
+# PKCS#1 v1.5 Signature Example 13.12\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+4f dd 6a 36 31 dd d4 bc 3c 76 07 19 02 a2 27 fd \r
+5b 36 53 b1 f9 70 f2 b7 67 ef 55 4e 1c 75 ca de \r
+81 9d 8d 1f ca 76 bc 10 54 1c bf 8b 1d 8b 0e 72 \r
+55 f9 57 40 \r
+\r
+# Signature:\r
+29 cb a5 b4 3f a3 56 57 75 89 34 91 b1 18 57 8b\r
+14 b5 fa 1e eb e0 c8 07 59 a6 d1 91 e7 c2 13 1e\r
+e1 0a c5 b9 b8 ae 1a a7 d6 96 c9 84 88 a3 5c df\r
+a2 aa 00 6d 91 bf 7e 05 a5 c1 90 9e fb 20 da bc\r
+82 13 3b 62 64 c0 42 18 0c 2c ca 65 45 9f 66 cc\r
+7e b1 ba 75 d1 5d 4f 56 c7 52 8a ab 28 38 e6 79\r
+53 7a 4c 8d cd 37 d4 b4 ca 82 5c e1 65 fa 4a 97\r
+15 82 44 dc 87 c0 61 fb 12 00 1e 55 33 fb d4 cc\r
+62\r
+\r
+# PKCS#1 v1.5 Signature Example 13.13\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+59 0c d2 30 50 e5 7b 28 d5 c2 18 5e ad 60 b1 e9 \r
+52 9f 2b d5 26 13 eb 03 f6 ed 1a ef a4 a6 72 88 \r
+d5 a3 a3 4f d9 5c a6 38 94 af 3a 40 cd 68 87 3a \r
+1f 37 e3 54 d3 04 14 29 7b 19 25 4b c6 c1 a3 f7 \r
+a4 75 20 ee a5 6e ff 77 db fd a6 bd 77 79 d0 2f \r
+d8 16 fc 0e 99 91 9f e4 39 5e ae e5 b2 f5 f0 32 \r
+cf c4 33 6f 9c f9 ac ef 74 db bf 4c 9a 09 18 da \r
+65 58 b4 b4 e3 20 9b fc d7 1d dd 59 76 07 b6 e2 \r
+8c 39 85 db f5 2c a7 d1 d7 51 cb 81 69 c0 b1 b1 \r
+3f f8 b6 5b 73 1e 69 dd 2e ff e4 4c 63 6f 2b 69 \r
+95 35 83 1a eb 5e 62 90 2f \r
+\r
+# Signature:\r
+67 eb 89 57 ce 4c 06 f7 39 1d 00 c7 41 24 53 f4\r
+b6 8b 33 03 a1 29 25 54 e2 a5 fc 72 62 c5 2e 74\r
+be d7 0e c5 8c 89 50 cd c4 31 5a 8f b7 c6 80 15\r
+54 cd 35 78 1d 44 fb 5e 57 d6 8d 59 a0 0f 43 b8\r
+6d 53 b8 43 72 d5 56 e5 a4 15 3c be 6b 39 7c 4c\r
+9c 68 00 70 5d 2f c0 c5 48 64 5e 11 b9 d8 d5 12\r
+b2 dd 9b f5 9f 3d c5 d1 1c 3c 77 3d 59 cc be d9\r
+e6 bc 14 32 09 10 cd f8 3b 46 59 01 b7 46 b5 96\r
+74\r
+\r
+# PKCS#1 v1.5 Signature Example 13.14\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+80 8c b9 76 13 fd 87 85 35 80 1c 80 08 79 15 10 \r
+a5 fe 86 6a d5 b6 84 3a 6e 00 19 a0 fc c2 17 76 \r
+03 54 f6 0c c6 99 fb be 1a df e8 b0 0e cd 6a 36 \r
+a2 b5 a5 a1 fa a2 3d 34 38 20 02 4e 3a 31 97 ae \r
+67 3c \r
+\r
+# Signature:\r
+1c 53 96 59 f8 72 46 99 16 fb 00 07 ef 9e 48 57\r
+4e 96 4e 4c 0e 6a 2f a7 4b 13 73 fd 60 b6 64 a7\r
+98 ac 81 29 c0 8c 12 cd bf 37 49 75 0b e1 25 60\r
+2a 71 54 32 67 67 32 7e 92 ba 57 b5 e2 89 b5 ac\r
+9d 77 71 b4 52 0a 7a 2c e6 6c 5e af 70 4a fc 5a\r
+19 0f a6 0b e1 37 6f 94 3d 2b af 70 52 3e 47 c3\r
+de fc 0a 25 a6 00 18 31 a3 7a ab 0c f1 f6 48 7b\r
+e3 7f 0e 31 ca 7d b5 ac 41 b5 63 09 57 55 93 69\r
+ff\r
+\r
+# PKCS#1 v1.5 Signature Example 13.15\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+57 ed aa 05 66 25 16 86 f6 52 05 ef c6 26 60 e2 \r
+c2 e0 4f a5 ea a3 30 2d e8 7a 3f 6b 49 1f 7f a3 \r
+ac 72 70 cc 76 75 1a 43 69 42 ac 76 5e f5 f4 74 \r
+91 62 d7 e7 97 12 6b cb 8f da c1 9c f1 8d cc 6e \r
+ff 48 59 3c 05 c8 89 3b 59 1a 51 33 2f a2 6a b8 \r
+63 c5 ea a4 d7 51 e8 d1 b1 9c 58 26 90 b5 41 5e \r
+6a 89 e0 5f 23 1b 33 ac 38 c5 3f 95 a2 d5 f9 10 \r
+51 c2 ec 6d db 2b 6d ba 78 9d 55 3a db 9f 10 c5 \r
+83 59 70 36 d3 48 6f bb 32 17 2a 1c 11 07 9e 5f \r
+09 aa 29 eb 46 74 c8 d7 bf 5b bd 6d 05 7e 6b 87 \r
+a8 b3 aa f4 80 86 d7 21 cb bc 8e fa c6 24 4d 32 \r
+39 ae 18 f1 66 23 fa 52 8e 2e 70 fa 25 65 6a 6a \r
+4a 22 92 95 0f c9 28 ed b8 1c \r
+\r
+# Signature:\r
+33 73 2f cc 23 34 2c 58 51 38 b2 5b 17 c8 12 ee\r
+3e 9d 3d a4 1f 6f fb cc 16 17 a2 ee 75 cc 5b 25\r
+01 25 4f d1 97 6d 25 88 00 e9 05 d7 e4 4a 0a b6\r
+fb 4b 8a 88 bb 7b f9 31 73 95 30 3a b2 fc a4 31\r
+28 48 6a 2b ab 36 c7 5e f6 aa 5e b3 fc 5b d5 55\r
+b3 ea 79 12 4a ad 78 97 e3 a4 34 de e7 92 63 71\r
+de 2d 6d 23 7e 89 b0 3b 8d d7 09 60 58 e2 a4 b3\r
+2c b5 57 c7 ad a2 98 a7 e2 ed d3 a3 a3 b5 29 b4\r
+d2\r
+\r
+# PKCS#1 v1.5 Signature Example 13.16\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+08 33 76 bb 82 21 2b f8 80 be 12 85 65 3a f2 ca \r
+d6 25 c5 2e 94 e3 21 43 68 77 f7 25 a8 3b bd 43 \r
+f4 48 6d 89 6c f6 7e 31 39 1b 87 06 f8 c0 f8 f4 \r
+bb 1d db a9 5c 33 2f 03 4f 39 09 11 3f 65 56 92 \r
+60 a2 e4 f1 04 06 65 7c 99 fa ff 00 1f e1 6e bb \r
+89 6e 9e 18 11 5a f1 d4 98 6c 85 79 ab 56 52 cc \r
+ca 47 74 \r
+\r
+# Signature:\r
+2a f4 6c 00 d1 d9 15 94 1e 21 2a 7b 8d 81 05 ee\r
+0f 0e c4 80 ff fb b4 f1 3b f2 8d 73 e2 b3 19 b9\r
+84 a7 b7 c8 36 7a dc a7 ab 12 aa f5 3a cb 98 d0\r
+cb 54 ee 34 20 4c 90 8e 60 c7 c7 9e fb 42 c3 11\r
+4a 02 58 9e 1a e6 af b5 97 53 54 57 8c 14 35 ec\r
+c8 9c 11 6e 90 26 b6 bc 88 9e e2 88 ae 4d af 03\r
+47 cc ce fc 5d fd 1e f8 3c b8 68 52 ee ff d8 40\r
+98 59 9b 72 5b f6 02 ee 62 0b df 44 af bd 84 c0\r
+cd\r
+\r
+# PKCS#1 v1.5 Signature Example 13.17\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+8c 87 4c d0 ce 33 51 39 c0 8d 76 0b 82 5e b9 90 \r
+5d \r
+\r
+# Signature:\r
+66 9a 8a d7 cb 81 ef 21 87 f5 a8 56 47 68 4b 72\r
+48 4a ff 27 9f 0a f3 54 35 86 7c c2 b0 43 33 a1\r
+96 ec a6 cf 44 a9 7a 1b d3 9d 0f 6a 0f f9 59 57\r
+02 83 5b c8 0a 72 d7 14 04 ef 3f 46 fa 3b 0d 20\r
+e8 6d 7a 1d 5f 7e fc 3f 3b 8e 8a 7e 37 e8 7e 27\r
+a9 9f eb a9 6a d8 13 20 be 8f ff 78 55 7d 07 bf\r
+ba e2 16 03 a1 36 8c af a5 ae 1d 1b 63 0a a2 1f\r
+f2 0e 45 85 65 0a 77 3d 7e 2f 5e 7f 51 72 97 19\r
+3c\r
+\r
+# PKCS#1 v1.5 Signature Example 13.18\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+cb 3e 61 21 d3 8b 7d 97 e1 8b a1 5c 49 3d 1a c3 \r
+2e 9d 2e f4 e3 bd 16 df 9c 67 e4 a1 96 e9 24 7a \r
+8d 0c 24 b2 1c 4a b2 3e 77 d6 db 11 7d 59 11 95 \r
+bb af 44 66 82 5f 63 97 8f 11 40 85 28 1b 79 ae \r
+a3 7e 32 c6 b3 6c 1e 9d dd 4a d1 23 6e 97 fd 42 \r
+7b 4d 97 6e 07 64 9d ca 4f 33 a8 9c 46 fb 8c 00 \r
+b4 26 7b 14 47 04 \r
+\r
+# Signature:\r
+56 84 17 80 3a 40 0e 9d 05 0a 43 20 ae 7b 7d 8d\r
+24 8e 16 36 50 86 9d 9f dd 10 0c c1 a6 b9 bc 29\r
+1c 3f 23 f1 25 60 03 16 4f 61 9d bc 78 63 5e bd\r
+f0 89 49 0a fa 5a a0 0b 6f 97 eb 06 36 c3 bb a8\r
+9d 86 36 0a fe 26 00 43 d8 61 a7 4f 64 c7 1d 9c\r
+bd 31 ea e2 39 3a 1a f1 56 1f 1a b9 2c aa 76 dd\r
+1e 76 ab 23 33 09 8c 83 c2 d9 9f ae 82 73 98 75\r
+80 05 c1 76 cb c4 a2 e2 2e fa 0e 6c 12 f4 e3 42\r
+81\r
+\r
+# PKCS#1 v1.5 Signature Example 13.19\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+21 9a 2f 8d 0b 00 0a ed b5 f1 85 45 5e d3 ea 09 \r
+4c 45 42 6b 28 5b ab 4a 07 cf 3d 0a 29 06 f3 e2 \r
+03 18 4c 2d 3d 81 a8 09 b8 9c 9f c4 8b c9 af 9a \r
+b3 2f 84 f1 5d 81 38 9c 4e db 0a c6 8a d0 95 02 \r
+e3 f3 0c 7c f6 45 10 29 54 b2 97 c8 66 14 66 fc \r
+10 \r
+\r
+# Signature:\r
+03 83 5d 90 57 e2 b8 21 dc 4c 6e ac a3 f4 15 6a\r
+56 55 0b 6f 9d 74 00 fc 5c 51 95 a4 ae e4 71 7d\r
+f3 29 29 12 2b 43 27 3a 07 9a 24 f9 9d d9 e7 c3\r
+40 56 ae a4 fc 4e 45 7d 83 14 ef 34 42 7f 8e 20\r
+4b 81 bb 49 03 fb 3e 77 9e 38 9e 41 33 90 68 c1\r
+57 d9 b0 9f 2c 5e 99 cc 54 e6 ef 86 ee ac 0e 19\r
+f4 4e 33 e7 07 c4 26 1a 0a 83 ce b4 22 f2 e0 6b\r
+cc ae 3b 8b ba 42 8d 75 57 15 2f 40 84 6e c0 11\r
+34\r
+\r
+# PKCS#1 v1.5 Signature Example 13.20\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+e3 9c a4 0d 2e 9d 03 ae 05 96 f6 0e b8 f6 09 99 \r
+30 85 a5 db 15 6b 0d 50 98 fe 5f aa c5 5f 70 99 \r
+3f e1 76 d2 d0 c0 38 b8 60 bb f9 a6 62 43 f5 e7 \r
+8e 6c be 52 6e cf 25 12 8d ae 31 96 56 cc 32 1e \r
+e8 0a 50 53 14 90 c9 a6 24 3f bd b0 c5 eb 4c d6 \r
+42 d2 61 15 05 ae 10 84 97 57 38 ad 84 62 1d 67 \r
+f5 \r
+\r
+# Signature:\r
+4f cf a5 73 97 f2 7e e0 f8 ae 75 a0 a5 4d 54 b0\r
+c5 1b 95 7e e6 3b f7 90 1b 60 55 cc 39 87 c3 2d\r
+f7 22 0e 16 6a 71 60 6a bc 78 f9 11 07 f9 74 df\r
+f7 d6 25 7c 25 6d c6 ed 7a 69 c3 c9 9f 9f 89 ab\r
+b5 8f e5 89 b7 ee 7c ad 0f 48 c1 60 10 d0 46 a9\r
+c4 e0 04 bb e1 a8 29 79 68 d4 0b c7 06 82 eb ae\r
+a4 48 52 5d be e1 6b 03 bd 0b 65 26 d0 98 d0 9b\r
+6b ad 9a ba 03 93 05 e2 ab 79 69 02 08 65 80 cc\r
+f0 \r
+\r
+# =============================================\r
+\r
+# Example 14: A 1536-bit RSA key pair\r
+# -----------------------------------\r
+\r
+\r
+# Public key\r
+# ----------\r
+\r
+# Modulus: \r
+d8 70 a7 76 cd 13 ed 44 3d f3 99 08 be e2 ca d7 \r
+3c 48 5f d9 bf 06 32 13 22 88 7f be 65 5c 08 cb \r
+e4 c8 f6 3e 25 4f c9 1c 75 f0 55 7d 90 1d 43 5b \r
+0e 8d ed 82 d4 91 73 41 4d 29 86 03 24 e4 6c 1b \r
+03 0d fe aa 29 d8 0f 98 98 c2 c5 e1 01 cb f6 da \r
+a0 62 89 78 d4 15 b5 02 de a2 6d e6 56 1c 79 ab \r
+06 5c 6d ca 6a bc 4d 4d 4d 5e 9f 5c 74 cb 3e 6a \r
+5a f7 1d 1f 90 fa 5e aa 1b e0 ca 94 7a 70 a3 9e \r
+fd 31 5c 4d f2 1a 1a 82 1c aa ff 8d cb ad 13 b2 \r
+9c 7e 82 aa d5 3c 64 f5 82 ec 9e c3 1e 6b de 82 \r
+ea 5a 5f 4c cc f0 c4 57 b8 88 f1 55 0c 4f f8 e1 \r
+c1 78 a7 6a 46 c1 96 f4 be f5 9e 61 dd 94 4e 47 \r
+\r
+# Exponent: \r
+01 00 01 \r
+\r
+# Private key\r
+# -----------\r
+\r
+# Modulus: \r
+d8 70 a7 76 cd 13 ed 44 3d f3 99 08 be e2 ca d7 \r
+3c 48 5f d9 bf 06 32 13 22 88 7f be 65 5c 08 cb \r
+e4 c8 f6 3e 25 4f c9 1c 75 f0 55 7d 90 1d 43 5b \r
+0e 8d ed 82 d4 91 73 41 4d 29 86 03 24 e4 6c 1b \r
+03 0d fe aa 29 d8 0f 98 98 c2 c5 e1 01 cb f6 da \r
+a0 62 89 78 d4 15 b5 02 de a2 6d e6 56 1c 79 ab \r
+06 5c 6d ca 6a bc 4d 4d 4d 5e 9f 5c 74 cb 3e 6a \r
+5a f7 1d 1f 90 fa 5e aa 1b e0 ca 94 7a 70 a3 9e \r
+fd 31 5c 4d f2 1a 1a 82 1c aa ff 8d cb ad 13 b2 \r
+9c 7e 82 aa d5 3c 64 f5 82 ec 9e c3 1e 6b de 82 \r
+ea 5a 5f 4c cc f0 c4 57 b8 88 f1 55 0c 4f f8 e1 \r
+c1 78 a7 6a 46 c1 96 f4 be f5 9e 61 dd 94 4e 47 \r
+\r
+# Public exponent: \r
+01 00 01 \r
+\r
+# Exponent: \r
+05 88 8f c7 7a 43 bd a7 a6 7b d1 58 47 65 0d f1 \r
+85 c1 85 ed cf b3 ed 58 ce e3 b5 7c 5d 24 06 b7 \r
+8b c0 55 87 4e 35 e5 7a dc 4b 0a 2c 7d 20 3a 66 \r
+1c 0f a5 d8 57 ed e6 07 ef dc 95 68 04 2b f0 d5 \r
+99 f4 e4 23 5e 91 7f 08 94 33 3a 92 df 94 62 d9 \r
+c1 0a f3 df ca 70 49 a1 ea a6 35 70 13 98 83 c5 \r
+be fe be e4 e2 21 89 43 d3 0f c6 45 ff e8 b9 14 \r
+d2 18 dd 58 96 0a ad c1 21 71 5b ce 5c cd de 4a \r
+2c 73 a8 d9 d8 6a 4e b6 e4 55 dc 92 4f d7 4a 0b \r
+1f 75 69 1c 28 1b ae 91 4d 69 9e e2 59 d8 5c 5f \r
+b5 dd 99 9e be f9 b7 0a 4b d9 4a a4 fa fa e2 6c \r
+a7 84 d3 2f d4 e0 77 db b6 ea 69 3b cd 6d 27 d5 \r
+\r
+# Prime 1: \r
+ff 8e f1 e7 4c 44 5a 5c c8 97 3a 81 9c 75 45 49 \r
+12 35 72 0c f9 eb 83 f1 81 13 3c 78 a1 4d cc 4c \r
+e5 e7 75 be 3e 0c 46 ed 2f 21 9a b8 8d 87 77 ad \r
+6e cb e4 0c f9 18 76 4d 7e 37 c6 68 35 91 e7 aa \r
+a1 3b 24 4b 7f cc 0e b6 df d7 6a 11 5f 30 ed 2d \r
+63 68 c8 ea 78 0a 21 1c 0a c9 c0 72 5d fa b0 8d \r
+\r
+# Prime 2: \r
+d8 d0 67 64 c1 f7 64 54 c6 8a 3a 08 1e 95 d7 47 \r
+c2 94 11 ad c4 03 a7 cb 71 b4 3a f5 05 ca be 41 \r
+b4 9c 97 1c 13 ad 65 63 b8 c9 0b 93 b5 89 79 bb \r
+74 f8 20 ef b8 de d8 1f 46 30 54 a7 7f b3 0b b0 \r
+99 98 51 a4 3c cd 01 69 18 51 31 f7 43 1b 02 e9 \r
+c6 b9 f8 38 71 d9 cd 5e 0c 3c 58 70 cf 97 97 23 \r
+\r
+# Prime exponent 1: \r
+e8 d6 15 f4 04 7a aa 51 aa b8 8e 27 94 a3 0b d3 \r
+3d 71 d0 4d 9e 4e 43 d2 7f 25 45 8d 2a 79 b5 4f \r
+c2 8f 95 a9 14 e3 1e a3 ee b3 11 42 60 40 32 7b \r
+a3 5c c4 94 45 47 52 51 dc 53 78 c3 6d 3b 57 f5 \r
+10 1c d0 3e b1 5a fb 75 06 90 3f 25 40 b3 55 04 \r
+6b 74 06 ca 09 40 41 56 49 45 f3 be bf 7d 2d e9 \r
+\r
+# Prime exponent 2: \r
+73 5d b1 26 73 ef 67 7b 94 89 48 87 b9 7e 91 a6 \r
+a5 6a 94 5d 99 c7 38 29 90 bf 0e 00 02 ac f6 bf \r
+8f 93 22 f4 d5 a3 96 27 91 d3 a8 4d 58 73 66 4a \r
+d0 da 96 eb f7 ba db d5 08 4b ff 3f 81 3b 8c 24 \r
+d4 15 b0 9b 6b 9e c9 f9 59 ef 1a 5f 2f 5d d8 16 \r
+fc 9f 47 ed 00 e7 9b d7 47 3b 74 f3 d2 02 1f 71 \r
+\r
+# Coefficient: \r
+10 62 18 af 97 1d 92 95 91 59 90 a4 ed 3e 09 d3 \r
+63 db 33 06 b0 90 a1 33 eb d7 54 e2 bd 77 6b 25 \r
+85 99 9d 4f 88 43 03 0a c7 0c 0f f5 de 52 12 67 \r
+22 34 c0 07 ce 74 56 4c 79 1e dc d5 76 f9 68 44 \r
+04 8c fa 66 36 46 b8 fd 80 c7 51 26 b2 26 6e 48 \r
+f1 fa a7 05 44 ad 42 04 fd 61 56 29 2e 51 6e 13 \r
+\r
+# PKCS#1 v1.5 signing of 20 random messages\r
+# -------------------------------------------------------\r
+\r
+# PKCS#1 v1.5 Signature Example 14.1\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+f7 a3 c6 7e 92 a7 87 f3 5d cc 47 ae d7 d6 b6 19 \r
+29 67 bd fd 00 a6 ac bf 6f 7e fe 46 d3 ac ae d9 \r
+78 8a a4 f1 db 18 44 02 24 9f 9a ce fc 1c 7d fb \r
+1e 69 0d 24 73 8d e8 6f a5 b5 25 0f 97 9e bd 8f \r
+77 8e ec 0d 7f cf 73 1f a2 25 08 6c 86 65 64 ed \r
+3e b1 54 dd 45 8d 05 00 28 2f 86 80 48 87 d4 43 \r
+5e da 9a 44 36 a8 e9 23 a2 0c b4 b4 d0 e8 1c 91 \r
+11 4b dc 06 82 27 8e c2 58 86 07 99 b5 9c 94 36 \r
+f4 3a 53 ca b4 c4 cd \r
+\r
+# Signature:\r
+09 d1 43 5b f5 a9 c1 72 03 d5 37 fe 57 df 98 7b\r
+7a 51 f3 4b 2a 14 09 7e 06 a0 de 56 3b e7 d6 4b\r
+4e a3 79 73 b4 fe 99 73 a6 6a 3f 31 ba 8e 07 e9\r
+11 7b 6a 1e e7 09 61 33 7b 4d 2b 0d f5 98 10 b6\r
+24 08 51 18 bd a7 0a c7 4a e4 3e 2f bc f8 92 27\r
+63 03 23 da 68 30 f5 b1 a2 b9 54 f1 b1 5a ea 07\r
+54 df 2c 51 18 57 95 16 e8 77 cc b0 b1 28 6c 57\r
+24 65 5e f8 d2 91 85 66 6f 6e 9b d3 2a 6b d9 ce\r
+9e 1e f9 47 29 fc 67 d6 a3 0e 64 56 0e cf 78 bf\r
+8e 1b 2b 40 e5 06 05 e2 5a e8 0c 38 67 64 ae d1\r
+1a 0e 71 44 90 49 c9 39 b2 96 2f 6c 24 17 a3 58\r
+cd c8 10 6b 12 b1 a5 58 76 39 43 8a f1 a6 8d 32\r
+\r
+# PKCS#1 v1.5 Signature Example 14.2\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+2a 13 30 03 ab 67 cd d2 e8 3b 44 e9 e9 dc 77 7d \r
+e0 1f 4d 23 3d 22 e7 d2 b4 46 7f 04 81 2a 3a eb \r
+ff b1 0a 09 24 54 e3 3b 9e 70 28 24 93 28 74 7e \r
+a1 4a 11 c7 98 ac 2e 14 6e 4e 49 65 9b a8 60 67 \r
+db 64 e9 bd 80 a7 02 1a ab cc 22 85 6e 81 01 40 \r
+c2 0f d8 c6 52 7b ad bb d9 fa 59 53 fa 77 e6 85 \r
+87 00 be b6 c7 4d 5a 46 3c 9d a8 61 13 3b aa 5b \r
+d6 a5 99 80 7a e9 16 2e 3a f3 a3 48 d0 4a 4e dd \r
+2f fb ab \r
+\r
+# Signature:\r
+35 e6 66 cf b8 7c 04 88 a8 6f df ed 5f 9d ea ed\r
+bc 46 74 17 1c 31 84 59 ac aa aa 20 e1 ca d7 c5\r
+86 04 14 0a 80 ff 7f 56 5b fb c8 6e 90 32 8d 4c\r
+72 9b 91 bf 72 a9 8d b7 01 c1 be 63 8a 6e 8f 2e\r
+46 8f 20 39 24 70 c7 c5 c3 44 42 d5 1b 1b 15 5f\r
+b4 64 b8 a5 56 f4 a1 70 c0 23 01 fe d0 d1 aa 92\r
+aa fd eb c3 f1 8e a8 b4 d7 1e 24 5c 25 26 f6 fe\r
+66 5d e4 83 85 f4 6c e1 bf 33 12 fa 89 28 09 8e\r
+d3 31 2b 61 11 6c a7 e4 23 20 4e f0 8b d2 df 3a\r
+d7 bb c8 50 09 8c b0 26 83 26 66 25 bb d9 59 82\r
+51 35 a4 5f 03 82 9d 09 6f ed 18 b2 0b aa 3f 9d\r
+44 b0 07 aa 24 1f 92 f8 88 60 55 d9 8e 0e 07 04\r
+\r
+# PKCS#1 v1.5 Signature Example 14.3\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+58 62 7f fa aa 8e 80 0a 8b e9 8e 42 f5 1a 83 61 \r
+1c fa b7 ee 37 6b 34 73 7b 3e 48 e1 bc 17 42 da \r
+a7 7d e4 7e 1a 9b 29 33 77 aa \r
+\r
+# Signature:\r
+3d 17 cb 38 6c 88 78 4d 35 9a d3 c3 8d be 88 8b\r
+fa e8 31 bf b8 ed c9 d0 e8 01 e7 d6 9e 1d d4 c2\r
+44 1d 68 fd bb 35 12 6c 73 a4 ed ab bf f5 4e 74\r
+fa 51 09 da d8 b5 c3 13 d8 6a 79 e4 d4 12 76 60\r
+fc 2a 8e 1c 93 fa 8d 09 2a cc f0 1c c1 8a 60 6c\r
+f0 7d e2 dc 3e 7b 55 33 11 52 db 01 b6 ca ea 1e\r
+ce c9 09 31 99 be 62 c3 e1 23 e2 87 31 13 50 3b\r
+22 03 0f 16 8d af c4 e6 bd 06 5a d2 f6 b1 de d0\r
+5b e0 c2 f9 b6 7b dc 1a 3b b1 8d a9 59 4c 95 7d\r
+a4 e4 9f ac 3f e7 6e 07 66 f7 4e b0 d5 23 e4 dd\r
+1a e7 59 da d6 b9 b9 08 b7 fc 8b 97 ef 5f 4c 82\r
+92 32 0a c3 87 c3 50 8b 54 cf b8 5d 34 f6 ad 39\r
+\r
+# PKCS#1 v1.5 Signature Example 14.4\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+0f 0f 8d 3c 0e 4d 26 08 af ad 5a 88 8e a1 4b 3f \r
+6b 2b 27 89 dd 22 12 b8 59 09 e6 4b fb 10 4d 0f \r
+7d e4 27 d1 4a 9f fa 85 5e 2d 4c a2 44 23 36 e5 \r
+59 56 8b 28 41 5d 60 cf 80 63 de 55 92 17 1b 26 \r
+9b 3d 76 33 51 c7 f7 d9 d2 58 09 e7 02 20 ee 30 \r
+fe 8a 00 b9 5d 4c 20 20 26 89 7e d2 c6 1d 7a d4 \r
+3a ed df 36 b5 c2 cb e2 1e 00 86 db d0 fd fd 19 \r
+e4 3f 02 77 f3 bc 95 ed 55 a3 4a f9 30 91 66 02 \r
+19 3c fe 04 51 4b d2 6a 05 7e 56 2a 11 90 c2 7e \r
+aa b6 c3 22 fc fa f4 bb cc 7f 20 c3 77 9c 63 8d \r
+7b bc 07 08 6c f7 5b f8 39 96 db 44 63 \r
+\r
+# Signature:\r
+50 90 45 12 36 10 50 87 2e ae 80 10 26 28 b6 3d\r
+02 16 8d ca 52 f0 ab d8 77 20 ea 48 05 0d 2c 62\r
+06 1a a2 15 32 68 be f8 ef b3 4e ed 46 17 1a 62\r
+88 e5 04 d4 20 f6 fc 14 51 38 61 1e 75 ed 3c f7\r
+9b 4d 10 26 64 d8 64 4f f3 e9 e5 db fd 71 cd c2\r
+7a 21 0e fb 10 be 90 27 56 04 f8 d4 49 14 8b 3f\r
+86 09 90 39 c3 3a ef 90 bf 19 1b 35 18 eb 45 9d\r
+a3 ba 14 fd 0c 72 22 9d ea 5f ac 2f 7d ad e1 08\r
+5c 8a 23 70 bb fc fa 2e 3a 9e 63 ca 22 4f 6d e8\r
+c8 d2 97 a3 b1 f0 6f 1f c9 49 78 90 fd 0e 0e 13\r
+88 7f ac b1 52 d1 2d 96 39 25 28 ef 28 d0 72 43\r
+31 ff 41 40 30 c7 a6 38 55 81 3c cd 89 fb db 1b\r
+\r
+# PKCS#1 v1.5 Signature Example 14.5\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+26 65 cb 5e e3 6a a9 bb 1a 5c de 7c e8 \r
+\r
+# Signature:\r
+4f 38 c2 ba 84 c5 0d 46 df 53 10 91 b6 27 12 14\r
+9c 1f 42 db d7 7e 03 d1 85 ea 96 ed a8 02 33 7c\r
+22 c1 13 0b c3 be ce bf 15 39 fd 11 89 38 51 da\r
+e3 cc 15 67 cb 6c 73 a7 2f a1 c9 69 48 68 21 12\r
+7e 7c fe a1 36 3e ee 95 2b 7c 6e b5 9e 10 2c 66\r
+57 c0 80 35 27 2c df 4a b5 e5 83 ed 73 7a d0 28\r
+ac 1c fa fe dd c9 07 3d fb d7 d3 ba 3d a9 e8 dc\r
+d8 46 fa 36 5c 9c cd 8e 9b 39 48 3d 37 07 3c 1a\r
+7b 78 2e e7 12 1b b1 a2 ad 8b f5 f8 ed 6e 65 3e\r
+92 4d eb ad 87 1b 74 43 39 e5 ae 7e 96 f6 0d cc\r
+45 ea 5d 69 7d 3b 1c c7 c5 e8 da 04 e9 2b e0 6c\r
+ad 2e 61 4e ac 31 8a ec af 12 d5 a7 62 34 c2 c0\r
+\r
+# PKCS#1 v1.5 Signature Example 14.6\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+7b 7b 61 61 02 0f af b4 88 71 63 21 34 0d af 2c \r
+06 ac 43 ce 21 32 86 86 84 aa af ab 13 99 65 3d \r
+35 3b 26 93 ad 73 cb 55 b7 1d 66 ac d0 1a 16 0c \r
+bf 74 37 67 bd 96 e7 fd 1c 7a 13 32 06 65 bb ad \r
+1c 4a 0c ed 26 59 3c e8 9c d8 2f 54 6b d4 d1 b1 \r
+bc d8 2c 65 a4 66 f9 9d a0 12 a4 1e 8c 41 20 69 \r
+81 09 58 47 5b 4d 9c 2f 80 d8 2d 06 41 4c 83 25 \r
+eb 4f 2c 5a 11 66 f1 f1 d2 d1 07 d4 8c \r
+\r
+# Signature:\r
+d5 cb b6 c7 ef f4 a6 3a d8 25 0d e9 4c c2 9f 7f\r
+31 a0 d7 10 6d 5d 77 1b 71 5d f8 a6 75 fd 16 34\r
+d6 e8 ab 58 87 5c c4 c1 51 7b 2f ad f4 e8 5c 1c\r
+b8 b8 53 60 e0 68 75 87 d1 48 08 9f 3f 48 b7 9d\r
+98 d2 02 7c 50 77 0b 33 4f 12 52 ac 0c 3b 2f 03\r
+65 34 c3 c2 97 22 f6 08 7d 06 d7 06 ce c7 c4 bd\r
+ce 1c d6 4f 7b 4e 07 99 a8 7a a0 73 ea 83 20 29\r
+2b 8e c8 27 17 40 6d 36 ef 91 25 e4 1f b5 d5 3b\r
+cc dd 62 2d 38 8f cc ee 60 a3 85 ec 20 6a 71 5d\r
+c5 4d 78 77 bd 72 85 d0 84 4c 25 d5 93 77 97 91\r
+27 83 96 ff 9a 8a 91 30 6a 54 ea 76 60 7c 81 3f\r
+80 1f 38 76 0c 3a 81 4b 93 96 95 9c 29 db ff 9d\r
+\r
+# PKCS#1 v1.5 Signature Example 14.7\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+2b 0a d6 13 82 28 78 a5 72 e1 42 80 \r
+\r
+# Signature:\r
+89 c8 10 84 da a8 f9 14 b7 e2 44 55 10 74 17 ca\r
+62 1c 91 02 d5 01 ee b4 3d 17 4c 7b ad 38 1d b1\r
+8d 95 33 c3 41 1a ec 60 57 ca 5a 4d fd c3 f1 31\r
+c8 88 b8 8f 01 30 03 d6 17 e0 6d 64 47 95 02 ae\r
+7e 42 4a 5d d6 37 b0 33 56 40 4d 26 0f 5e d6 b8\r
+cb 16 d2 57 85 28 cc 3e 85 00 34 6e b7 90 bd ad\r
+41 b2 e3 6c a6 f1 98 85 e3 f6 f5 10 86 bf fb 6a\r
+bb 9c 66 33 6b 49 47 34 64 c5 d7 ed 8e 9f f8 5e\r
+11 ae ff 40 90 67 ba b0 a0 5c 41 e8 15 1b 8b e9\r
+87 f3 f5 95 8e 3e 6f 26 51 5d 96 bf 23 4b 22 ab\r
+91 c0 85 7b 6c 08 a4 6b 03 05 fe 04 4c a9 aa a0\r
+d7 0a 27 58 a1 ce 43 16 64 a8 dd 79 40 8c 16 ba\r
+\r
+# PKCS#1 v1.5 Signature Example 14.8\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+36 93 8c 8c 7c 6f 7e 35 52 34 db 5a 32 a6 48 10 \r
+db 50 2b 67 c6 f5 92 54 4f fb 27 eb 1f 22 e0 6f \r
+2d 63 8b 56 d5 d2 f7 d1 9e 9e 27 1f 2c c9 0c c0 \r
+dd 36 d6 cc 2c 06 17 8b cc 70 6a ef 20 e5 6a 35 \r
+8e 52 4f 63 16 76 9c 54 b6 de 2d d5 \r
+\r
+# Signature:\r
+a0 37 53 a5 fb 54 aa 51 f6 dd 8d ab 91 f1 9c b8\r
+65 56 84 85 f8 55 8f 0d 10 3f 0d 2b 6d 78 53 6e\r
+79 c8 15 c4 a0 37 bc af 11 b6 9d 4c db ab 03 5a\r
+be 21 6f 71 52 f6 30 ff c7 9f 84 9d 8d cd 46 3a\r
+ae 6a e9 7d 3d f1 5a 9e 73 d2 3f 18 78 fa c7 54\r
+cb dd 57 1a fe a5 d2 53 57 d4 b8 83 45 f4 89 be\r
+0d 67 b9 bf ad f0 23 f2 6e 67 31 5e d5 fb f3 91\r
+91 0a f4 96 9b 72 4b f0 ca 31 c1 05 9f 8a 39 13\r
+b4 8a 13 81 9c 23 6c 9b e8 e8 24 ca 4c b6 19 fb\r
+7d 78 4c d5 f9 52 6b 39 7c 76 c5 d0 c6 0c f7 f4\r
+8d 11 19 6e 54 f7 2a 08 bb 42 f7 5a ef e3 8f 0b\r
+91 b4 2b b8 06 de 4b 87 c9 08 2f 72 1a 68 80 ca\r
+\r
+# PKCS#1 v1.5 Signature Example 14.9\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+60 83 0c 01 cf a8 6f f2 dc ac 7a f9 32 1e e5 fe \r
+50 2e 0e 7a 6f ac b7 3e 3f 6b c9 02 64 0a 61 09 \r
+5f 64 6f d0 3e 80 d5 81 82 46 53 31 e7 5d 66 11 \r
+a0 97 76 81 62 70 86 24 17 29 de 9f 44 ab 43 94 \r
+9d ac 19 36 73 bd 6c f8 7f 5d 65 77 1e f8 72 81 \r
+63 3f dd 07 ba c4 09 a6 e2 32 b6 01 ae ce 2d \r
+\r
+# Signature:\r
+40 58 f6 e0 24 0d 85 1d 61 93 95 a7 52 87 a8 8f\r
+af d8 dc 56 00 b0 69 bf 19 dc 3e 19 21 e1 17 b4\r
+97 b8 2b 3c 52 02 69 b1 d1 12 81 64 fc d8 8d d2\r
+b4 6d c8 5c 42 ec f6 7d eb ad 21 a3 b9 a1 55 42\r
+fe a2 26 06 ea b5 82 fc 32 97 11 ff c0 7f 4e ef\r
+1f 3b bf e0 88 8c bc a4 85 ba fc 11 88 b0 af e8\r
+09 c9 aa f8 fa 36 66 b9 c9 05 85 39 db 1e c6 a1\r
+8e 5b e0 b8 01 44 d2 c3 7c a6 14 c0 90 b4 a7 f1\r
+34 58 e0 d3 a4 cb 0c b7 3d cc 4d 90 80 6f 61 08\r
+58 89 eb 5c 9b 14 09 de f3 60 fd 1c 2e 49 43 8d\r
+7c 67 d7 9d bd 9a 59 2a b5 04 c4 71 5f 65 b2 9d\r
+84 65 09 95 15 69 a8 c3 79 09 f5 d5 50 ee ff fa\r
+\r
+# PKCS#1 v1.5 Signature Example 14.10\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+63 5d 22 03 ed 9d 5b 91 20 e3 1b f6 9d 30 5b e6 \r
+06 86 97 e3 5c e5 9c 55 3e 50 8d c7 7b 07 3f fa \r
+3a aa 59 f9 96 c3 0b 2e 68 63 23 81 9f de 22 be \r
+6c 8d 53 86 84 14 b3 54 5a bf 43 57 68 a6 11 f0 \r
+c1 a4 79 a0 c7 66 0d 53 5e 80 5b 5f ed c3 77 9c \r
+f0 c5 2c 3c d0 40 ab 65 14 c7 f8 13 3d 47 b0 ac \r
+c6 91 4e 6d 4a d3 c4 73 7c f5 12 91 09 4e 85 94 \r
+33 ba 30 66 e1 9d 6a a2 da 89 6d c9 d9 5e f9 e5 \r
+63 6d ab 35 f7 29 87 05 c6 d8 76 17 54 12 f8 84 \r
+25 19 ff e1 6c f7 43 62 ab \r
+\r
+# Signature:\r
+94 61 a1 a8 41 42 3e d5 cf c6 08 9a 74 db fc 53\r
+73 11 03 bf 49 85 dd b1 50 b0 e9 38 0d 3f e0 cf\r
+6d 45 7c 5c 68 a7 f2 55 04 02 2d 69 5f f8 42 11\r
+8e bf 61 02 2f ea 47 fa 45 f7 c1 cc 72 6e 1d e5\r
+0b d0 64 b3 bb 70 16 57 16 2b 88 c0 b9 10 fe b7\r
+2f 48 7a 5c 7f 4b 9e cf ee 24 e0 7a a2 d1 98 d1\r
+13 cb 84 5d 81 7b b5 9b b1 da 24 a8 2b 91 c2 fe\r
+3f ba 89 51 83 cb d9 c0 fe 0a c0 be 64 fe f2 e0\r
+13 92 05 b1 0b ca bf e5 a3 a7 a8 90 fc 0f e7 8d\r
+ab e1 ad b5 bd 11 44 85 03 cb 0d cd 0b 68 f1 60\r
+19 6e 96 13 e2 9f be 9a 3f 94 06 ec 20 c0 30 e8\r
+1e c3 09 65 ea 01 9c 17 aa 97 11 01 c2 e5 30 59\r
+\r
+# PKCS#1 v1.5 Signature Example 14.11\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+87 fb a9 89 f3 cc 15 af 7e e7 61 c0 88 26 4a b7 \r
+71 52 39 e0 b8 c8 a9 e4 8e 11 db 68 03 31 39 c2 \r
+a2 89 ea 42 6e be 26 9f 5f b7 07 09 0a fb 89 1a \r
+49 ca 05 c0 55 0d 72 9b f4 d3 7c 8f 1d a7 a3 ca \r
+2f 43 87 a4 0b 5f 79 13 a3 85 f5 5b 81 41 af 36 \r
+be 8f 57 16 65 f8 57 e7 7a 5c 9c cc e6 ba 8f 2b \r
+e4 63 23 cc 56 91 56 6f f4 b6 d7 85 43 04 b9 3b \r
+ba 1a 17 59 df b1 44 c9 54 7c f2 bc 8e aa ed aa \r
+4f 1d d2 52 82 3b 72 87 ca 55 5d 21 06 08 9a 24 \r
+3e 5d fe 8f c3 1d 3f 46 22 2a 68 ab af 31 81 5a \r
+94 7e 58 57 cf 6a 33 17 0e cc b6 a5 e0 6d 23 cc \r
+9d 48 ea f6 cd bc \r
+\r
+# Signature:\r
+0b 5f 1c fc 25 3b aa d4 b9 83 f8 fe 05 0d 4a 01\r
+7c c4 66 98 0e bd 23 c9 d5 53 43 f5 10 7e 04 1e\r
+b6 54 78 10 fd ba 46 86 e6 10 83 2f 92 82 ed f0\r
+66 04 b0 ab fe ea 38 01 32 79 17 79 40 99 7b 28\r
+90 2b 14 db 37 9e eb 4f 44 00 5d fc b0 03 68 03\r
+c9 f1 25 bc e1 f2 a8 2c 4d 30 07 ae 96 b8 48 b8\r
+13 ec 8c 97 ca 3f 71 0a 9a e0 db c2 8a 55 e0 58\r
+81 b8 58 db 55 71 20 f3 3c 59 cd 43 60 f9 20 8c\r
+74 b2 7e c6 5d 11 ea 41 fa 6a 9e ac f2 a6 11 68\r
+ad 07 c2 09 94 8f 35 a1 61 f4 1f 87 54 0e a1 82\r
+84 aa b8 d8 f9 78 61 31 f0 43 90 2b 89 c1 7a 56\r
+0d 90 94 64 47 5a 0d fc e5 89 09 18 7c d6 e4 46\r
+\r
+# PKCS#1 v1.5 Signature Example 14.12\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+4b 5e 80 30 5c be a9 0d 63 7f db 23 47 c6 fe b6 \r
+78 42 eb ac 6f 90 3d b5 a7 1e ba ab 8a 1c 2d f1 \r
+12 60 a1 ec 90 7b 8b 63 4d 37 d3 6e d8 de 7d 0d \r
+a1 03 bc 4a 9e 93 3f b7 bf ee 59 1c c9 33 29 9f \r
+ee 46 0f 35 42 c9 78 f3 07 ae 05 24 64 f3 06 20 \r
+ce bf 3c 9a 9c b6 a9 01 53 0c 1d 56 13 df 07 74 \r
+31 2d 4b 5f \r
+\r
+# Signature:\r
+b6 f0 3d 35 33 50 07 a7 47 ae 68 67 60 f9 ed ad\r
+08 89 d2 d4 ca 0c b8 8b 67 43 12 d3 2c 55 2b 7a\r
+66 c5 a9 52 8c 01 4b 58 c8 49 f2 31 a2 e0 45 68\r
+2e 3b bb 14 c7 f9 5f f8 bd b6 58 7f 25 11 cc 6b\r
+f9 24 39 60 08 11 03 d4 7e 77 69 a1 77 eb db 91\r
+f1 28 73 de cd 5d c0 67 e4 5c 2b 2a 04 4f fa 3f\r
+bb 04 c2 0a 3d c2 01 38 40 3f f2 5c a0 eb ad 96\r
+e4 85 9f a4 a0 d7 32 85 2a f3 50 a2 75 69 9a 94\r
+aa 6e 47 f2 17 e3 83 ef 8f ce 8e b6 ee d7 82 6d\r
+7c 61 58 fc 58 82 e4 61 35 45 fa 26 ee e0 c9 f9\r
+3d e7 a1 65 08 ea 16 19 70 46 0d 6a 7c a7 70 f8\r
+de 8b a9 3c ea f3 97 dd f1 fb ce e2 82 a1 53 7d\r
+\r
+# PKCS#1 v1.5 Signature Example 14.13\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+e5 ad 62 7f 24 f4 11 7a 0a 6b e4 a5 5f db 88 3d \r
+75 a6 73 12 15 4a 71 89 23 d0 e8 f5 73 0a 54 d8 \r
+ca 7c 97 4e 4d 59 33 8b b5 71 30 5c ce 99 0c bb \r
+cf a9 1e a9 b7 73 b8 3d 7a 1f 0f fe c4 c6 b1 43 \r
+fe 05 05 8b c9 0c e1 46 f3 69 cb ae 3b 3d 99 70 \r
+5e f4 3d 07 21 b8 \r
+\r
+# Signature:\r
+73 29 86 d4 ed db 8a 7e 9b 65 dc 01 6d d5 71 ef\r
+ab eb 84 49 0e 88 e3 e7 3b 63 e8 0d 1c c8 6a 45\r
+2d ec 29 fc 81 7e 8a d4 ee bd dc d9 7c 74 5b c4\r
+79 7e 54 fe c6 ac e2 91 b1 96 dc 24 65 f0 8c f1\r
+dd d2 17 e7 7a af 7d 50 98 77 91 de 81 b0 41 10\r
+d1 1a b8 55 89 06 60 4e b9 d9 2b 35 f9 00 75 af\r
+42 28 01 45 b0 88 e8 75 3d 0d b7 3c d3 a3 2b d1\r
+9c ea 35 38 ee 4f 09 27 3e f6 6d 07 05 d4 5e e7\r
+10 9f e5 95 df 55 76 7b 3d 10 81 72 27 bb 6b a3\r
+95 75 b8 5d 6a 35 a2 ff b8 8c b2 67 db fc 28 2b\r
+b8 a3 de e0 2e c7 7b 0c b8 13 55 70 f8 a7 d7 ad\r
+04 34 1a 08 64 e6 7f f6 fa 02 59 a1 69 74 c8 6a\r
+\r
+# PKCS#1 v1.5 Signature Example 14.14\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+03 e3 9b a7 a8 0c 77 14 16 d8 52 63 e4 d4 3c 63 \r
+93 df e7 96 52 3b 89 e0 a4 61 62 88 80 80 0d 8f \r
+c2 43 1b 66 30 54 09 e0 6c 95 ae 7a 17 d5 34 b1 \r
+e8 4c 19 9d fe 73 1d a9 49 f1 64 57 1d ec c8 b1 \r
+66 be b8 dc 08 7c b4 86 99 98 c2 \r
+\r
+# Signature:\r
+60 76 3b ea f7 c3 e2 2b 3b 22 dc 44 d9 47 82 6e\r
+23 fc f9 6b 01 b7 74 1b 24 b1 b9 d9 3c 07 f0 c6\r
+4d 39 67 98 bb 58 9b d4 25 29 53 69 bf b8 79 ad\r
+d3 42 cd 76 28 0b 57 e6 35 4f 61 95 e8 42 fa 2a\r
+95 f1 c4 6f 0b 70 78 6c 31 8d e9 a5 5a 8a c4 54\r
+5e e7 cf f3 99 c6 78 e5 78 f8 93 9e d4 9e 84 bb\r
+a9 aa e5 7c 1a 36 fc c3 94 86 46 6e 40 12 f9 58\r
+87 a6 81 10 f1 a4 84 67 e4 c2 34 f5 81 c5 ec 47\r
+71 06 cc b3 ec 86 17 b4 be 21 93 37 44 8f e7 2e\r
+25 de ab 53 ea cb 92 e5 96 62 95 b3 a5 57 12 19\r
+58 df e7 9c a4 72 f7 9e fb da 1d cf ba 9d bd 0f\r
+97 67 32 c0 93 b9 8f f1 93 c9 02 98 7a 42 6c 0f\r
+\r
+# PKCS#1 v1.5 Signature Example 14.15\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+d4 c2 35 96 7d 4e 87 b6 71 1e 32 ac 70 37 a3 97 \r
+f9 9b 1c ad 95 a1 88 94 6a 48 64 0e b6 b7 b0 03 \r
+c3 2f 85 a1 21 b0 9c a4 c8 be c0 b8 27 44 aa f2 \r
+7d 16 6c ef c7 a9 70 2a d3 1d bd 15 ea 2a 18 5f \r
+5b 9b a6 42 f9 49 07 8b c6 09 b9 a8 a3 36 92 d7 \r
+18 49 39 d1 f9 eb 42 6a 6d b7 40 ea d9 4c fe a1 \r
+7f eb 06 18 d7 4d 9a 65 16 88 e9 0b 9b b7 05 24 \r
+30 5d 61 8c 88 a5 5f 45 44 50 e0 c5 85 d3 a8 d9 \r
+81 65 81 8f 36 3b 20 a2 52 49 2e 15 12 58 58 90 \r
+a8 c3 20 a7 18 71 58 ce 0d 4e 4b e1 c7 01 f8 af \r
+dc 54 5c 4d ab 86 8d 41 d4 1c 21 c2 cb 1f 67 df \r
+79 53 d5 f7 26 1c 50 92 bb c4 33 2a c5 57 5b 6e \r
+0e 03 14 9c 04 0c 3e 20 1c 79 15 ac 20 22 88 4e \r
+a0 e6 c2 14 03 f0 b4 4e 0f 71 34 3f c9 11 1a 7d \r
+b2 f5 e9 e5 09 c2 d8 97 84 ef b2 2c 31 e8 16 5e \r
+0e 93 6c \r
+\r
+# Signature:\r
+46 9f 08 bd d0 3b 75 64 0e 8a 44 a0 7c a8 de 4b\r
+ac f8 33 1f e3 9c 44 d2 3a a7 b5 81 dc 3f 00 f5\r
+42 1b 5c 17 2d 0f fc e9 14 97 d3 d4 b1 04 f5 6a\r
+98 ec 94 f7 19 27 1e 58 b4 3e fb d8 76 e1 c1 31\r
+fa 97 82 07 28 a5 56 75 55 21 4c d9 4a 18 fc ce\r
+5c 2f 53 b1 9d 1f 3c 73 d0 9f 7b e1 80 97 38 b0\r
+3c e7 69 e4 54 ed 4c be dc af 43 c4 8b d3 9d f2\r
+f8 bb 63 b8 fc 4d 0d 4d 5b 20 4f c2 20 01 3a 66\r
+8c 19 f9 75 02 93 a4 71 15 83 88 26 45 db f3 ac\r
+4f 83 9b 6f d1 cf 3b 5e e8 d7 34 e1 da 37 4d 91\r
+d8 9e a3 18 e9 18 34 83 f4 a0 9a 93 51 4a f5 4f\r
+75 d0 a3 56 51 b2 40 f7 9f 20 a2 97 7d 14 57 8c\r
+\r
+# PKCS#1 v1.5 Signature Example 14.16\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+d0 6a dc a4 c2 0f 0d 9f 7b e6 5a 20 32 7c 29 47 \r
+56 e3 ed d9 e1 d3 9d 0f 95 c7 9d f1 ba c3 34 35 \r
+9f ab 94 3d 85 45 a3 ba a3 7a 59 29 5c 58 b2 37 \r
+75 2b 8d e7 d4 32 3c 56 e9 d7 cb 0c 7f 83 1d 54 \r
+9c b3 87 19 a0 81 d5 8b 60 57 ec b7 42 9e 2c a6 \r
+07 cd 13 06 35 59 43 15 9d c9 24 ad 3e 9c b1 3d \r
+0e 71 ea dc b0 05 e1 84 c0 c2 ce aa f9 d7 4a 1c \r
+1d f6 fe c1 8c 97 a0 \r
+\r
+# Signature:\r
+9f d9 52 5c 15 c8 43 b8 06 9c 15 f2 6d 3f 95 24\r
+6a f3 7a 8b 8e 6b 93 9d df 5b 38 28 cd b6 2c fa\r
+37 3a 92 ec c4 13 84 a8 77 ca a0 90 aa 13 c8 47\r
+ef 28 29 dd ca 14 14 20 14 02 14 81 55 05 50 da\r
+a2 9d e2 ab 70 01 b8 55 c9 34 2f 0c 90 bf a6 c3\r
+34 9b 2c 39 62 13 ef 70 cb d8 4b b4 ce 6e f5 8b\r
+17 6e 9f 6f cc db 6e 46 ca c3 41 14 a1 b9 f9 8a\r
+8a 32 75 7b f7 5d 6b fc 45 5a de 6a 01 f9 60 50\r
+1b 79 f5 fb e3 b3 8f ca 03 46 4e 43 d4 96 63 c7\r
+9f f6 4d 32 98 1e 44 80 cd f4 2d 8a f8 da a7 f1\r
+2b 81 a5 aa 96 5f ad aa 3c 03 b7 ff 22 d3 cf df\r
+fe 3c ad f4 d5 98 9e d1 4c 96 9a 6e 8c 9a 1e 04\r
+\r
+# PKCS#1 v1.5 Signature Example 14.17\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+3a 63 02 d7 9e 26 b5 55 c7 7d e9 2a 91 e0 78 57 \r
+1e d1 57 2f fc 3e 4f c9 05 ce 53 f1 04 b3 22 00 \r
+95 7e b2 b5 e5 f3 e3 fc bb c1 62 f9 e5 25 c7 06 \r
+f1 dd 04 fc ab 51 6b c1 8a 8e 4f 88 a9 38 a5 b2 \r
+56 85 d7 8d dc 9f 10 4e 49 bf 5c a0 b6 5a 4b 96 \r
+57 e0 4a 71 fb 50 eb 4a ac 22 c0 bb 93 f6 0c ac \r
+94 83 f1 77 13 55 3d ca 4b 31 e2 72 7b 32 e3 50 \r
+fe 20 4c ec d9 a7 cd a4 da da 2e 87 ff 6f 2b 73 \r
+e7 b0 78 1e 21 2f 34 fe 36 36 10 f0 18 a7 99 37 \r
+37 55 ab 46 66 7b b6 52 5d 7d c7 a0 e8 28 90 17 \r
+f5 48 7f a6 92 ef 2f dd ce 38 ad 3f 45 30 de 7e \r
+e5 05 66 70 a7 35 d3 78 d1 ef c9 94 81 f8 c9 fb \r
+ee a9 9f 56 6a 0b 6e 28 46 26 44 a6 d9 c6 cc 88 \r
+fb \r
+\r
+# Signature:\r
+b7 57 fa 74 7c 5c 87 67 66 f3 58 ac bf c7 e7 b8\r
+05 96 36 8d 0d 86 29 50 e5 55 f4 71 64 6f 64 0e\r
+85 1d 61 2a 55 6f 55 a7 4a 32 92 42 9e 4c 14 f7\r
+8b a3 eb bd 96 87 f3 08 de db 3c fe d7 1f 4a 9d\r
+d2 6f a5 12 2f 7f 71 94 ae b6 3b c8 b7 5c 34 31\r
+87 11 5a 1d bd 35 95 90 f7 ff 38 62 b7 08 85 af\r
+1c a9 34 b8 ce bc 2c c9 e6 47 25 3f d1 32 7a 2e\r
+d4 24 4d c8 f5 85 55 a6 89 7c a3 22 9c 80 1e 7b\r
+f6 28 f5 25 e6 c9 48 80 4d 0b 1b 6d bc d7 90 2a\r
+cd e7 a2 5b a5 91 d8 86 e2 8d aa 8d ed 5e e4 01\r
+e3 4e 64 12 f1 e6 44 ee c1 2a e9 42 61 90 6a 17\r
+26 11 dd 5a 98 67 78 9c 41 90 34 68 84 29 e9 06\r
+\r
+# PKCS#1 v1.5 Signature Example 14.18\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+9d c7 ce 1d 02 ca dc f1 0d f1 11 04 56 b8 a7 a5 \r
+ea 43 76 b2 7e 8b f8 cc 8d b8 10 49 fd a3 fb d0 \r
+db 8a 3d 0f 6b d7 48 6b 8d 84 bf 9f fd 4b 64 17 \r
+52 df 7e df 50 86 5e 8e 58 ad 49 f7 24 0e 47 d3 \r
+fc 98 5e db 59 6d ab fe 01 72 2a 22 77 60 38 3c \r
+e2 4d 4a 05 d8 b0 6e f5 b9 6f 11 7d 81 \r
+\r
+# Signature:\r
+05 a9 5e 11 b5 bf b0 1d cf de 3e fa 9f 31 3d 81\r
+bb 0d fd 46 de 63 b0 65 80 56 c5 3a f7 ad 9e 89\r
+43 8b 7d e7 8f f8 ea 88 d0 72 b1 74 9a 52 9f 1c\r
+c9 cf 2c f3 2e 5a b7 20 e0 69 b4 90 6d 28 2a 03\r
+dd 78 d1 b3 ca 2a 3f 92 5b f5 1c 74 91 b7 3b a0\r
+bf 54 d5 0d 97 1d e5 b2 77 26 d8 fb 3e e2 77 34\r
+97 df 35 49 51 7e ed cd 9d e6 8d 90 df 35 d3 f0\r
+50 81 15 1a da b5 39 73 85 ab ee a7 2b 69 bd 0d\r
+e1 8d ce e9 a2 be 00 e9 1a 03 24 03 b1 f8 1b bc\r
+0a e7 31 c6 c0 d9 cf dd 06 c3 31 ed 89 d7 de 1d\r
+e1 df 46 cf 09 ce 53 df 15 97 fb 69 94 68 1c 7f\r
+be 94 c9 b0 8e 50 aa 1b 12 41 96 02 98 7f 37 dd\r
+\r
+# PKCS#1 v1.5 Signature Example 14.19\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+87 a6 45 61 1b b1 91 85 3f 4f d9 b7 40 b2 de 4c \r
+16 3e 75 62 b1 17 62 63 3e 72 df b6 f6 be 7e fb \r
+90 41 a9 65 82 94 3a b2 01 83 91 c0 5a df ab 46 \r
+4d d6 e3 3f 96 0d db f3 b1 7a c6 2b b7 8a fc 1c \r
+6a 45 39 6c 09 08 70 7c 62 36 12 55 cb f0 9b ad \r
+95 9b 31 33 da 48 d5 32 ba 7e f1 d2 0f b6 57 2a \r
+1f 0e d6 f2 c6 e1 be c1 b1 7c c3 19 ba f7 2a 19 \r
+8a a0 01 b8 3d 4e 98 69 c3 40 90 f2 29 a9 c7 f1 \r
+42 a7 4e 85 ab 3e d5 1c 69 ac 15 fa b4 ab e4 67 \r
+15 73 cf 5a d2 b5 8e 78 a9 44 ed cc ea c5 ee 58 \r
+bf ce 66 f4 0a ac 2a be 4e 5f a0 72 dd 0f 66 4f \r
+ac 81 1a ef 08 42 10 e5 64 1b 9c d0 8c 87 24 f4 \r
+b4 1e ed 1d 9d 4a 18 77 80 46 59 7b d1 a2 7b bb \r
+c0 56 c1 5e 43 c0 38 ef 37 5b 43 5e 73 a7 d3 2f \r
+01 50 16 b7 82 35 ce 75 a7 b7 62 04 99 68 e9 93 \r
+22 53 e4 2c a9 76 c8 d8 dc a1 bb 2d bf \r
+\r
+# Signature:\r
+b8 80 62 26 fb d3 d9 7b 79 f0 dd 1d 8c f9 a2 35\r
+e5 1b 94 b7 e2 23 ec 68 33 2d 68 6e d3 31 3e d1\r
+be f6 88 70 23 af 7a 5c 99 df 03 68 a3 49 c6 a5\r
+94 79 5b 62 35 36 10 13 42 69 0d eb 5f ad 90 23\r
+78 2f 6d be 16 43 a4 56 18 57 4f 16 72 81 12 a7\r
+e0 ef 9f 58 65 6f 6a db f4 00 40 9f 4a a5 01 3c\r
+15 9a 36 8c a5 9b de 6b 39 18 df e1 d8 02 fa 6c\r
+fa 06 c9 ca 31 ac a7 8c b2 63 c8 ed 91 7a f9 a9\r
+a7 95 d5 e2 c4 01 e7 29 96 4c f7 ac 28 cc db 36\r
+d9 59 ed 7f d9 af 1c 47 09 7b 62 55 c6 4e 1b 16\r
+f2 1d 86 87 04 55 d5 f0 bf 90 1f cc 68 c3 4b 72\r
+c1 be e7 2e 6b 8c 4e 36 ae 33 99 6c 7a 59 d0 9a\r
+\r
+# PKCS#1 v1.5 Signature Example 14.20\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+03 2e 28 3e 59 6e 87 fa a6 cf cf b8 fa 04 df 6a \r
+61 e6 11 df e7 3b bf 66 8e e6 7b 49 6b fb 0f fb \r
+7f 9d c9 31 a9 8b ce db 25 \r
+\r
+# Signature:\r
+b9 fd c0 3d c1 99 70 71 3c 4a 17 e8 7e 7e bb 5f\r
+13 50 5d 59 cb b2 2b a7 2e 9f f1 6b df 8b 65 9c\r
+33 30 a9 3d cc 09 2a 5d 38 5b 2d 5e 15 34 00 31\r
+46 c0 50 b7 dd c4 f7 56 56 9d a2 11 80 15 82 26\r
+61 19 f5 59 9b 1e 65 e8 eb ea 6b c9 64 42 ee 12\r
+ac b9 6c 6d ba 08 3e 92 10 94 da 9c 9e cf 5a fa\r
+a5 4b 7f de 7a 0c ae 3f df e4 d2 51 93 3a 52 f0\r
+2d c2 3e 1b 32 14 c6 83 e1 9a f4 6e 18 c7 49 56\r
+dc 6a b3 50 2d 46 ca ac 3c b2 6b 70 7c dc 30 25\r
+b6 de 4e 83 54 3b 95 84 5b 4a 15 97 60 77 0a 4b\r
+d0 9e 46 35 a0 4e 21 7d 66 5c 95 94 87 9f 38 1d\r
+71 10 09 34 fa da 61 c7 cc 22 b8 d2 ff 8e b3 5a\r
+\r
+# =============================================\r
+\r
+# Example 15: A 2048-bit RSA key pair\r
+# -----------------------------------\r
+\r
+\r
+# Public key\r
+# ----------\r
+\r
+# Modulus: \r
+df 27 1f d2 5f 86 44 49 6b 0c 81 be 4b d5 02 97 \r
+ef 09 9b 00 2a 6f d6 77 27 eb 44 9c ea 56 6e d6 \r
+a3 98 1a 71 31 2a 14 1c ab c9 81 5c 12 09 e3 20 \r
+a2 5b 32 46 4e 99 99 f1 8c a1 3a 9f d3 89 25 58 \r
+f9 e0 ad ef dd 36 50 dd 23 a3 f0 36 d6 0f e3 98 \r
+84 37 06 a4 0b 0b 84 62 c8 be e3 bc e1 2f 1f 28 \r
+60 c2 44 4c dc 6a 44 47 6a 75 ff 4a a2 42 73 cc \r
+be 3b f8 02 48 46 5f 8f f8 c3 a7 f3 36 7d fc 0d \r
+f5 b6 50 9a 4f 82 81 1c ed d8 1c da aa 73 c4 91 \r
+da 41 21 70 d5 44 d4 ba 96 b9 7f 0a fc 80 65 49 \r
+8d 3a 49 fd 91 09 92 a1 f0 72 5b e2 4f 46 5c fe \r
+7e 0e ab f6 78 99 6c 50 bc 5e 75 24 ab f7 3f 15 \r
+e5 be f7 d5 18 39 4e 31 38 ce 49 44 50 6a aa af \r
+3f 9b 23 6d ca b8 fc 00 f8 7a f5 96 fd c3 d9 d6 \r
+c7 5c d5 08 36 2f ae 2c be dd cc 4c 74 50 b1 7b \r
+77 6c 07 9e cc a1 f2 56 35 1a 43 b9 7d be 21 53 \r
+\r
+# Exponent: \r
+01 00 01 \r
+\r
+# Private key\r
+# -----------\r
+\r
+# Modulus: \r
+df 27 1f d2 5f 86 44 49 6b 0c 81 be 4b d5 02 97 \r
+ef 09 9b 00 2a 6f d6 77 27 eb 44 9c ea 56 6e d6 \r
+a3 98 1a 71 31 2a 14 1c ab c9 81 5c 12 09 e3 20 \r
+a2 5b 32 46 4e 99 99 f1 8c a1 3a 9f d3 89 25 58 \r
+f9 e0 ad ef dd 36 50 dd 23 a3 f0 36 d6 0f e3 98 \r
+84 37 06 a4 0b 0b 84 62 c8 be e3 bc e1 2f 1f 28 \r
+60 c2 44 4c dc 6a 44 47 6a 75 ff 4a a2 42 73 cc \r
+be 3b f8 02 48 46 5f 8f f8 c3 a7 f3 36 7d fc 0d \r
+f5 b6 50 9a 4f 82 81 1c ed d8 1c da aa 73 c4 91 \r
+da 41 21 70 d5 44 d4 ba 96 b9 7f 0a fc 80 65 49 \r
+8d 3a 49 fd 91 09 92 a1 f0 72 5b e2 4f 46 5c fe \r
+7e 0e ab f6 78 99 6c 50 bc 5e 75 24 ab f7 3f 15 \r
+e5 be f7 d5 18 39 4e 31 38 ce 49 44 50 6a aa af \r
+3f 9b 23 6d ca b8 fc 00 f8 7a f5 96 fd c3 d9 d6 \r
+c7 5c d5 08 36 2f ae 2c be dd cc 4c 74 50 b1 7b \r
+77 6c 07 9e cc a1 f2 56 35 1a 43 b9 7d be 21 53 \r
+\r
+# Public exponent: \r
+01 00 01 \r
+\r
+# Exponent: \r
+5b d9 10 25 78 30 dc e1 75 20 b0 34 41 a5 1a 8c \r
+ab 94 02 0a c6 ec c2 52 c8 08 f3 74 3c 95 b7 c8 \r
+3b 8c 8a f1 a5 01 43 46 eb c4 24 2c df b5 d7 18 \r
+e3 0a 73 3e 71 f2 91 e4 d4 73 b6 1b fb a6 da ca \r
+ed 0a 77 bd 1f 09 50 ae 3c 91 a8 f9 01 11 88 25 \r
+89 e1 d6 27 65 ee 67 1e 7b ae ea 30 9f 64 d4 47 \r
+bb cf a9 ea 12 dc e0 5e 9e a8 93 9b c5 fe 61 08 \r
+58 12 79 c9 82 b3 08 79 4b 34 48 e7 f7 b9 52 29 \r
+2d f8 8c 80 cb 40 14 2c 4b 5c f5 f8 dd aa 08 91 \r
+67 8d 61 0e 58 2f cb 88 0f 0d 70 7c af 47 d0 9a \r
+84 e1 4c a6 58 41 e5 a3 ab c5 e9 db a9 40 75 a9 \r
+08 43 41 f0 ed ad 9b 68 e3 b8 e0 82 b8 0b 6e 6e \r
+8a 05 47 b4 4f b5 06 1b 6a 91 31 60 3a 55 37 dd \r
+ab d0 1d 8e 86 3d 89 22 e9 aa 3e 4b fa ea 0b 39 \r
+d7 92 83 ad 2c bc 8a 59 cc e7 a6 ec f4 e4 c8 1e \r
+d4 c6 59 1c 80 7d ef d7 1a b0 68 66 bb 5e 77 45 \r
+\r
+# Prime 1: \r
+f4 4f 5e 42 46 39 1f 48 2b 2f 52 96 e3 60 2e b3 \r
+4a a1 36 42 77 10 f7 c0 41 6d 40 3f d6 9d 4b 29 \r
+13 0c fe be f3 4e 88 5a bd b1 a8 a0 a5 f0 e9 b5 \r
+c3 3e 1f c3 bf c2 85 b1 ae 17 e4 0c c6 7a 19 13 \r
+dd 56 37 19 81 5e ba f8 51 4c 2a 7a a0 01 8e 63 \r
+b6 c6 31 dc 31 5a 46 23 57 16 42 3d 11 ff 58 03 \r
+4e 61 06 45 70 36 06 91 9f 5c 7c e2 66 0c d1 48 \r
+bd 9e fc 12 3d 9c 54 b6 70 55 90 d0 06 cf cf 3f \r
+\r
+# Prime 2: \r
+e9 d4 98 41 e0 e0 a6 ad 0d 51 78 57 13 3e 36 dc \r
+72 c1 bd d9 0f 91 74 b5 2e 26 57 0f 37 36 40 f1 \r
+c1 85 e7 ea 8e 2e d7 f1 e4 eb b9 51 f7 0a 58 02 \r
+36 33 b0 09 7a ec 67 c6 dc b8 00 fc 1a 67 f9 bb \r
+05 63 61 0f 08 eb c8 74 6a d1 29 77 21 36 eb 1d \r
+da f4 64 36 45 0d 31 83 32 a8 49 82 fe 5d 28 db \r
+e5 b3 e9 12 40 7c 3e 0e 03 10 0d 87 d4 36 ee 40 \r
+9e ec 1c f8 5e 80 ab a0 79 b2 e6 10 6b 97 bc ed \r
+\r
+# Prime exponent 1: \r
+ed 10 2a cd b2 68 71 53 4d 1c 41 4e ca d9 a4 d7 \r
+32 fe 95 b1 0e ea 37 0d a6 2f 05 de 2c 39 3b 1a \r
+63 33 03 ea 74 1b 6b 32 69 c9 7f 70 4b 35 27 02 \r
+c9 ae 79 92 2f 7b e8 d1 0d b6 7f 02 6a 81 45 de \r
+41 b3 0c 0a 42 bf 92 3b ac 5f 75 04 c2 48 60 4b \r
+9f aa 57 ed 6b 32 46 c6 ba 15 8e 36 c6 44 f8 b9 \r
+54 8f cf 4f 07 e0 54 a5 6f 76 86 74 05 44 40 bc \r
+0d cb bc 9b 52 8f 64 a0 17 06 e0 5b 0b 91 10 6f \r
+\r
+# Prime exponent 2: \r
+68 27 92 4a 85 e8 8b 55 ba 00 f8 21 91 28 bd 37 \r
+24 c6 b7 d1 df e5 62 9e f1 97 92 5f ec af f5 ed \r
+b9 cd f3 a7 be fd 8e a2 e8 dd 37 07 13 8b 3f f8 \r
+7c 3c 39 c5 7f 43 9e 56 2e 2a a8 05 a3 9d 7c d7 \r
+99 66 d2 ec e7 84 5f 1d bc 16 be e9 99 99 e4 d0 \r
+bf 9e ec a4 5f cd a8 a8 50 00 35 fe 6b 5f 03 bc \r
+2f 6d 1b fc 4d 4d 0a 37 23 96 1a f0 cd ce 4a 01 \r
+ee c8 2d 7f 54 58 ec 19 e7 1b 90 ee ef 7d ff 61 \r
+\r
+# Coefficient: \r
+57 b7 38 88 d1 83 a9 9a 63 07 42 22 77 55 1a 3d \r
+9e 18 ad f0 6a 91 e8 b5 5c ef fe f9 07 7c 84 96 \r
+94 8e cb 3b 16 b7 81 55 cb 2a 3a 57 c1 19 d3 79 \r
+95 1c 01 0a a6 35 ed cf 62 d8 4c 5a 12 2a 8d 67 \r
+ab 5f a9 e5 a4 a8 77 2a 1e 94 3b af c7 0a e3 a4 \r
+c1 f0 f3 a4 dd ff ae fd 18 92 c8 cb 33 bb 0d 0b \r
+95 90 e9 63 a6 91 10 fb 34 db 7b 90 6f c4 ba 28 \r
+36 99 5a ac 7e 52 74 90 ac 95 2a 02 26 8a 4f 18 \r
+\r
+# PKCS#1 v1.5 signing of 20 random messages\r
+# -------------------------------------------------------\r
+\r
+# PKCS#1 v1.5 Signature Example 15.1\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+f4 5d 55 f3 55 51 e9 75 d6 a8 dc 7e a9 f4 88 59 \r
+39 40 cc 75 69 4a 27 8f 27 e5 78 a1 63 d8 39 b3 \r
+40 40 84 18 08 cf 9c 58 c9 b8 72 8b f5 f9 ce 8e \r
+e8 11 ea 91 71 4f 47 ba b9 2d 0f 6d 5a 26 fc fe \r
+ea 6c d9 3b 91 0c 0a 2c 96 3e 64 eb 18 23 f1 02 \r
+75 3d 41 f0 33 59 10 ad 3a 97 71 04 f1 aa f6 c3 \r
+74 27 16 a9 75 5d 11 b8 ee d6 90 47 7f 44 5c 5d \r
+27 20 8b 2e 28 43 30 fa 3d 30 14 23 fa 7f 2d 08 \r
+6e 0a d0 b8 92 b9 db 54 4e 45 6d 3f 0d ab 85 d9 \r
+53 c1 2d 34 0a a8 73 ed a7 27 c8 a6 49 db 7f a6 \r
+37 40 e2 5e 9a f1 53 3b 30 7e 61 32 99 93 11 0e \r
+95 19 4e 03 93 99 c3 82 4d 24 c5 1f 22 b2 6b de \r
+10 24 cd 39 59 58 a2 df eb 48 16 a6 e8 ad ed b5 \r
+0b 1f 6b 56 d0 b3 06 0f f0 f1 c4 cb 0d 0e 00 1d \r
+d5 9d 73 be 12 \r
+\r
+# Signature:\r
+b7 5a 54 66 b6 5d 0f 30 0e f5 38 33 f2 17 5c 8a\r
+34 7a 38 04 fc 63 45 1d c9 02 f0 b7 1f 90 83 45\r
+9e d3 7a 51 79 a3 b7 23 a5 3f 10 51 64 2d 77 37\r
+4c 4c 6c 8d bb 1c a2 05 25 f5 c9 f3 2d b7 76 95\r
+35 56 da 31 29 0e 22 19 74 82 ce b6 99 06 c4 6a\r
+75 8f b0 e7 40 9b a8 01 07 7d 2a 0a 20 ea e7 d1\r
+d6 d3 92 ab 49 57 e8 6b 76 f0 65 2d 68 b8 39 88\r
+a7 8f 26 e1 11 72 ea 60 9b f8 49 fb bd 78 ad 7e\r
+dc e2 1d e6 62 a0 81 36 8c 04 06 07 ce e2 9d b0\r
+62 72 27 f4 49 63 ad 17 1d 22 93 b6 33 a3 92 e3\r
+31 dc a5 4f e3 08 27 52 f4 3f 63 c1 61 b4 47 a4\r
+c6 5a 68 75 67 0d 5f 66 00 fc c8 60 a1 ca eb 0a\r
+88 f8 fd ec 4e 56 43 98 a5 c4 6c 87 f6 8c e0 70\r
+01 f6 21 3a be 0a b5 62 5f 87 d1 90 25 f0 8d 81\r
+da c7 bd 45 86 bc 93 82 19 1f 6d 28 80 f6 22 7e\r
+5d f3 ee d2 1e 77 92 d2 49 48 04 87 f3 65 52 61\r
+\r
+# PKCS#1 v1.5 Signature Example 15.2\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+c1 4b 4c 60 75 b2 f9 aa d6 61 de f4 ec fd 3c b9 \r
+33 c6 23 f4 e6 3b f5 34 10 d2 f0 16 d1 ab 98 e2 \r
+72 9e cc f8 00 6c d8 e0 80 50 73 7d 95 fd bf 29 \r
+6b 66 f5 b9 79 2a 90 29 36 c4 f7 ac 69 f5 14 53 \r
+ce 43 69 45 2d c2 2d 96 f0 37 74 81 14 66 20 00 \r
+dd 9c d3 a5 e1 79 f4 e0 f8 1f a6 a0 31 1c a1 ae \r
+e6 51 9a 0f 63 ce c7 8d 27 bb 72 63 93 fb 7f 1f \r
+88 cd e7 c9 7f 8a 66 cd 66 30 12 81 da c3 f3 a4 \r
+33 24 8c 75 d6 c2 dc d7 08 b6 a9 7b 0a 3f 32 5e \r
+0b 29 64 f8 a5 81 9e 47 9b \r
+\r
+# Signature:\r
+af a7 34 34 62 be a1 22 cc 14 9f ca 70 ab da e7\r
+94 46 67 7d b5 37 36 66 af 7d c3 13 01 5f 4d e7\r
+86 e6 e3 94 94 6f ad 3c c0 e2 b0 2b ed ba 50 47\r
+fe 9e 2d 7d 09 97 05 e4 a3 9f 28 68 32 79 cf 0a\r
+c8 5c 15 30 41 22 42 c0 e9 18 95 3b e0 00 e9 39\r
+cf 3b f1 82 52 5e 19 93 70 fa 79 07 eb a6 9d 5d\r
+b4 63 10 17 c0 e3 6d f7 03 79 b5 db 8d 4c 69 5a\r
+97 9a 8e 61 73 22 40 65 d7 dc 15 13 2e f2 8c d8\r
+22 79 51 63 06 3b 54 c6 51 14 1b e8 6d 36 e3 67\r
+35 bc 61 f3 1f ca 57 4e 53 09 f3 a3 bb df 91 ef\r
+f1 2b 99 e9 cc 17 44 f1 ee 9a 1b d2 2c 5b ad 96\r
+ad 48 19 29 25 1f 03 43 fd 36 bc f0 ac de 7f 11\r
+e5 ad 60 97 77 21 20 27 96 fe 06 1f 9a da 1f c4\r
+c8 e0 0d 60 22 a8 35 75 85 ff e9 fd d5 93 31 a2\r
+8c 4a a3 12 15 88 fb 6c f6 83 96 d8 ac 05 46 59\r
+95 00 c9 70 85 00 a5 97 2b d5 4f 72 cf 8d b0 c8\r
+\r
+# PKCS#1 v1.5 Signature Example 15.3\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+d0 23 71 ad 7e e4 8b bf db 27 63 de 7a 84 3b 94 \r
+08 ce 5e b5 ab f8 47 ca 3d 73 59 86 df 84 e9 06 \r
+0b db cd d3 a5 5b a5 5d de 20 d4 76 1e 1a 21 d2 \r
+25 c1 a1 86 f4 ac 4b 30 19 d3 ad f7 8f e6 33 46 \r
+67 f5 6f 70 c9 01 a0 a2 70 0c 6f 0d 56 ad d7 19 \r
+59 2d c8 8f 6d 23 06 c7 00 9f 6e 7a 63 5b 4c b3 \r
+a5 02 df e6 8d dc 58 d0 3b e1 0a 11 70 00 4f e7 \r
+4d d3 e4 6b 82 59 1f f7 54 14 f0 c4 a0 3e 60 5e \r
+20 52 4f 24 16 f1 2e ca 58 9f 11 1b 75 d6 39 c6 \r
+1b aa 80 ca fd 05 cf 35 00 24 4a 21 9e d9 ce d9 \r
+f0 b1 02 97 18 2b 65 3b 52 6f 40 0f 29 53 ba 21 \r
+4d 5b cd 47 88 41 32 87 2a e9 0d 4d 6b 1f 42 15 \r
+39 f9 f3 46 62 a5 6d c0 e7 b4 b9 23 b6 23 1e 30 \r
+d2 67 67 97 81 7f 7c 33 7b 5a c8 24 ba 93 14 3b \r
+33 81 fa 3d ce 0e 6a eb d3 8e 67 73 51 87 b1 eb \r
+d9 5c 02 \r
+\r
+# Signature:\r
+3b ac 63 f8 6e 3b 70 27 12 03 10 6b 9c 79 aa bd\r
+9f 47 7c 56 e4 ee 58 a4 fc e5 ba f2 ca b4 96 0f\r
+88 39 1c 9c 23 69 8b e7 5c 99 ae df 9e 1a bf 17\r
+05 be 1d ac 33 14 0a db 48 eb 31 f4 50 bb 9e fe\r
+83 b7 b9 0d b7 f1 57 6d 33 f4 0c 1c ba 4b 8d 6b\r
+1d 33 23 56 4b 0f 17 74 11 4f a7 c0 8e 6d 1e 20\r
+dd 8f bb a9 b6 ac 7a d4 1e 26 b4 56 8f 4a 8a ac\r
+bf d1 78 a8 f8 d2 c9 d5 f5 b8 81 12 93 5a 8b c9\r
+ae 32 cd a4 0b 8d 20 37 55 10 73 50 96 53 68 18\r
+ce 2b 2d b7 1a 97 72 c9 b0 dd a0 9a e1 01 52 fa\r
+11 46 62 18 d0 91 b5 3d 92 54 30 61 b7 29 4a 55\r
+be 82 ff 35 d5 c3 2f a2 33 f0 5a aa c7 58 50 30\r
+7e cf 81 38 3c 11 16 74 39 7b 1a 1b 9d 3b f7 61\r
+2c cb e5 ba cd 2b 38 f0 a9 83 97 b2 4c 83 65 8f\r
+b6 c0 b4 14 0e f1 19 70 c4 63 0d 44 34 4e 76 ea\r
+ed 74 dc be e8 11 db f6 57 59 41 f0 8a 65 23 b8\r
+\r
+# PKCS#1 v1.5 Signature Example 15.4\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+29 03 55 84 ab 7e 02 26 a9 ec 4b 02 e8 dc f1 27 \r
+2d c9 a4 1d 73 e2 82 00 07 b0 f6 e2 1f ec cd 5b \r
+d9 db b9 ef 88 cd 67 58 76 9e e1 f9 56 da 7a d1 \r
+84 41 de 6f ab 83 86 db c6 93 \r
+\r
+# Signature:\r
+28 d8 e3 fc d5 dd db 21 ff bd 8d f1 63 0d 73 77\r
+aa 26 51 e1 4c ad 1c 0e 43 cc c5 2f 90 7f 94 6d\r
+66 de 72 54 e2 7a 6c 19 0e b0 22 ee 89 ec f6 22\r
+4b 09 7b 71 06 8c d6 07 28 a1 ae d6 4b 80 e5 45\r
+7b d3 10 6d d9 17 06 c9 37 c9 79 5f 2b 36 36 7f\r
+f1 53 dc 25 19 a8 db 9b df 2c 80 74 30 c4 51 de\r
+17 bb cd 0c e7 82 b3 e8 f1 02 4d 90 62 4d ea 7f\r
+1e ed c7 42 0b 7e 7c aa 65 77 ce f4 31 41 a7 26\r
+42 06 58 0e 44 a1 67 df 5e 41 ee a0 e6 9a 80 54\r
+54 c4 0e ef c1 3f 48 e4 23 d7 a3 2d 02 ed 42 c0\r
+ab 03 d0 a7 cf 70 c5 86 0a c9 2e 03 ee 00 5b 60\r
+ff 35 03 42 4b 98 cc 89 45 68 c7 c5 6a 02 33 55\r
+1c eb e5 88 cf 8b 01 67 b7 df 13 ad ca d8 28 67\r
+68 10 49 9c 70 4d a7 ae 23 41 4d 69 e3 c0 d2 db\r
+5d cb c2 61 3b c1 20 42 1f 9e 36 53 c5 a8 76 72\r
+97 64 3c 7e 07 40 de 01 63 55 45 3d 6c 95 ae 72\r
+\r
+# PKCS#1 v1.5 Signature Example 15.5\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+bd a3 a1 c7 90 59 ea e5 98 30 8d 3d f6 09 \r
+\r
+# Signature:\r
+a1 56 17 6c b9 67 77 c7 fb 96 10 5d bd 91 3b c4\r
+f7 40 54 f6 80 7c 60 08 a1 a9 56 ea 92 c1 f8 1c\r
+b8 97 dc 4b 92 ef 9f 4e 40 66 8d c7 c5 56 90 1a\r
+cb 6c f2 69 fe 61 5b 0f b7 2b 30 a5 13 38 69 23\r
+14 b0 e5 87 8a 88 c2 c7 77 4b d1 69 39 b5 ab d8\r
+2b 44 29 d6 7b d7 ac 8e 5e a7 fe 92 4e 20 a6 ec\r
+66 22 91 f2 54 8d 73 4f 66 34 86 8b 03 9a a5 f9\r
+d4 d9 06 b2 d0 cb 85 85 bf 42 85 47 af c9 1c 6e\r
+20 52 dd cd 00 1c 3e f8 c8 ee fc 3b 6b 2a 82 b6\r
+f9 c8 8c 56 f2 e2 c3 cb 0b e4 b8 0d a9 5e ba 37\r
+1d 8b 5f 60 f9 25 38 74 3d db b5 da 29 72 c7 1f\r
+e7 b9 f1 b7 90 26 8a 0e 77 0f c5 eb 4d 5d d8 52\r
+47 d4 8a e2 ec 3f 26 25 5a 39 85 52 02 06 a1 f2\r
+68 e4 83 e9 db b1 d5 ca b1 90 91 76 06 de 31 e7\r
+c5 18 2d 8f 15 1b f4 1d fe cc ae d7 cd e6 90 b2\r
+16 47 10 6b 49 0c 72 9d 54 a8 fe 28 02 a6 d1 26\r
+\r
+# PKCS#1 v1.5 Signature Example 15.6\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+c1 87 91 5e 4e 87 da 81 c0 8e d4 35 6a 0c ce ac \r
+1c 4f b5 c0 46 b4 52 81 b3 87 ec 28 f1 ab fd 56 \r
+7e 54 6b 23 6b 37 d0 1a e7 1d 3b 28 34 36 5d 3d \r
+f3 80 b7 50 61 b7 36 b0 13 0b 07 0b e5 8a e8 a4 \r
+6d 12 16 63 61 b6 13 db c4 7d fa eb 4c a7 46 45 \r
+6c 2e 88 83 85 52 5c ca 9d d1 c3 c7 a9 ad a7 6d \r
+6c \r
+\r
+# Signature:\r
+9c ab 74 16 36 08 66 9f 75 55 a3 33 cf 19 6f e3\r
+a0 e9 e5 eb 1a 32 d3 4b b5 c8 5f f6 89 aa ab 0e\r
+3e 65 66 8e d3 b1 15 3f 94 eb 3d 8b e3 79 b8 ee\r
+f0 07 c4 a0 2c 70 71 ce 30 d8 bb 34 1e 58 c6 20\r
+f7 3d 37 b4 ec bf 48 be 29 4f 6c 9e 0e cb 5e 63\r
+fe c4 1f 12 0e 55 53 df a0 eb eb bb 72 64 0a 95\r
+37 ba dc b4 51 33 02 29 d9 f7 10 f6 2e 3e d8 ec\r
+78 4e 50 ee 1d 92 62 b4 26 71 34 00 11 d7 d0 98\r
+c6 f2 55 7b 21 31 fa 9b d0 25 46 36 59 7e 88 ec\r
+b3 5a 24 0e f0 fd 85 95 71 24 df 80 80 fe e1 e1\r
+49 af 93 99 89 e8 6b 26 c8 5a 58 81 fa e8 67 3d\r
+9f d4 08 00 dd 13 4e b9 bd b6 41 0f 42 0b 0a a9\r
+7b 20 ef cf 2e b0 c8 07 fa eb 83 a3 cc d9 b5 1d\r
+45 53 e4 1d fc 0d f6 ca 80 a1 e8 1d c2 34 bb 83\r
+89 dd 19 5a 38 b4 2d e4 ed c4 9d 34 64 78 b9 f1\r
+1f 05 57 20 5f 5b 0b d7 ff e9 c8 50 f3 96 d7 c4\r
+\r
+# PKCS#1 v1.5 Signature Example 15.7\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+ab fa 2e cb 7d 29 bd 5b cb 99 31 ce 2b ad 2f 74 \r
+38 3e 95 68 3c ee 11 02 2f 08 e8 e7 d0 b8 fa 05 \r
+8b f9 eb 7e b5 f9 88 68 b5 bb 1f b5 c3 1c ed a3 \r
+a6 4f 1a 12 cd f2 0f cd 0e 5a 24 6d 7a 17 73 d8 \r
+db a0 e3 b2 77 54 5b ab e5 8f 2b 96 e3 f4 ed c1 \r
+8e ab f5 cd 2a 56 0f ca 75 fe 96 e0 7d 85 9d ef \r
+b2 56 4f 3a 34 f1 6f 11 e9 1b 3a 71 7b 41 af 53 \r
+f6 60 53 23 00 1a a4 06 c6 \r
+\r
+# Signature:\r
+c4 b4 37 bc f7 03 f3 52 e1 fa f7 4e b9 62 20 39\r
+42 6b 56 72 ca f2 a7 b3 81 c6 c4 f0 19 1e 7e 4a\r
+98 f0 ee bc d6 f4 17 84 c2 53 7f f0 f9 9e 74 98\r
+2c 87 20 1b fb c6 5e ae 83 2d b7 1d 16 da ca db\r
+09 77 e5 c5 04 67 9e 40 be 0f 9d b0 6f fd 84 8d\r
+d2 e5 c3 8a 7e c0 21 e7 f6 8c 47 df d3 8c c3 54\r
+49 3d 53 39 b4 59 5a 5b f3 1e 3f 8f 13 81 68 07\r
+37 3d f6 ad 0d c7 e7 31 e5 1a d1 9e b4 75 4b 13\r
+44 85 84 2f e7 09 d3 78 44 4d 8e 36 b1 72 4a 4f\r
+da 21 ca fe e6 53 ab 80 74 7f 79 52 ee 80 4d ea\r
+b1 03 9d 84 13 99 45 bb f4 be 82 00 87 53 f3 c5\r
+4c 78 21 a1 d2 41 f4 21 79 c7 94 ef 70 42 bb f9\r
+95 56 56 22 2e 45 c3 43 69 a3 84 69 7b 6a e7 42\r
+e1 8f a5 ca 7a ba d2 7d 9f e7 10 52 e3 31 0d 0f\r
+52 c8 d1 2e a3 3b f0 53 a3 00 f4 af c4 f0 98 df\r
+4e 6d 88 67 79 d6 45 94 d3 69 15 8f db c1 f6 94\r
+\r
+# PKCS#1 v1.5 Signature Example 15.8\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+df 40 44 a8 9a 83 e9 fc bf 12 62 54 0a e3 03 8b \r
+bc 90 f2 b2 62 8b f2 a4 46 7a c6 77 22 d8 54 6b \r
+3a 71 cb 0e a4 16 69 d5 b4 d6 18 59 c1 b4 e4 7c \r
+ec c5 93 3f 75 7e c8 6d b0 64 4e 31 18 12 d0 0f \r
+b8 02 f0 34 00 63 9c 0e 36 4d ae 5a eb c5 79 1b \r
+c6 55 76 23 61 bc 43 c5 3d 3c 78 86 76 8f 79 68 \r
+c1 c5 44 c6 f7 9f 7b e8 20 c7 e2 bd 2f 9d 73 e6 \r
+2d ed 6d 2e 93 7e 6a 6d ae f9 0e e3 7a 1a 52 a5 \r
+4f 00 e3 1a dd d6 48 94 cf 4c 02 e1 60 99 e2 9f \r
+9e b7 f1 a7 bb 7f 84 c4 7a 2b 59 48 13 be 02 a1 \r
+7b 7f c4 3b 34 c2 2c 91 92 52 64 12 6c 89 f8 6b \r
+b4 d8 7f 3e f1 31 29 6c 53 a3 08 e0 33 1d ac 8b \r
+af 3b 63 42 22 66 ec ef 2b 90 78 15 35 db da 41 \r
+cb d0 cf 22 a8 cb fb 53 2e c6 8f c6 af b2 ac 06 \r
+\r
+# Signature:\r
+14 14 b3 85 67 ae 6d 97 3e de 4a 06 84 2d cc 0e\r
+05 59 b1 9e 65 a4 88 9b db ab d0 fd 02 80 68 29\r
+13 ba cd 5d c2 f0 1b 30 bb 19 eb 81 0b 7d 9d ed\r
+32 b2 84 f1 47 bb e7 71 c9 30 c6 05 2a a7 34 13\r
+90 a8 49 f8 1d a9 cd 11 e5 ec cf 24 6d ba e9 5f\r
+a9 58 28 e9 ae 0c a3 55 03 25 32 6d ee f9 f4 95\r
+30 ba 44 1b ed 4a c2 9c 02 9c 9a 27 36 b1 a4 19\r
+0b 85 08 4a d1 50 42 6b 46 d7 f8 5b d7 02 f4 8d\r
+ac 5f 71 33 0b c4 23 a7 66 c6 5c c1 dc ab 20 d3\r
+d3 bb a7 2b 63 b3 ef 82 44 d4 2f 15 7c b7 e3 a8\r
+ba 5c 05 27 2c 64 cc 1a d2 1a 13 49 3c 39 11 f6\r
+0b 4e 9f 4e cc 99 00 eb 05 6e e5 9d 6f e4 b8 ff\r
+6e 80 48 cc c0 f3 8f 28 36 fd 3d fe 91 bf 4a 38\r
+6e 1e cc 2c 32 83 9f 0c a4 d1 b2 7a 56 8f a9 40\r
+dd 64 ad 16 bd 01 25 d0 34 8e 38 30 85 f0 88 94\r
+86 1c a1 89 87 22 7d 37 b4 2b 58 4a 83 57 cb 04\r
+\r
+# PKCS#1 v1.5 Signature Example 15.9\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+ea 94 1f f0 6f 86 c2 26 92 7f cf 0e 3b 11 b0 87 \r
+26 76 17 0c 1b fc 33 bd a8 e2 65 c7 77 71 f9 d0 \r
+85 01 64 a5 ee cb cc 5c e8 27 fb fa 07 c8 52 14 \r
+79 6d 81 27 e8 ca a8 18 94 ea 61 ce b1 44 9e 72 \r
+fe a0 a4 c9 43 b2 da 6d 9b 10 5f e0 53 b9 03 9a \r
+9c c5 3d 42 0b 75 39 fa b2 23 9c 6b 51 d1 7e 69 \r
+4c 95 7d 4b 0f 09 84 46 18 79 a0 75 9c 44 01 be \r
+ec d4 c6 06 a0 af bd 7a 07 6f 50 a2 df c2 80 7f \r
+24 f1 91 9b aa 77 46 d3 a6 4e 26 8e d3 f5 f8 e6 \r
+da 83 a2 a5 c9 15 2f 83 7c b0 78 12 bd 5b a7 d3 \r
+a0 79 85 de 88 11 3c 17 96 e9 b4 66 ec 29 9c 5a \r
+c1 05 9e 27 f0 94 15 \r
+\r
+# Signature:\r
+ce eb 84 cc b4 e9 09 92 65 65 07 21 ee a0 e8 ec\r
+89 ca 25 bd 35 4d 4f 64 56 49 67 be 9d 4b 08 b3\r
+f1 c0 18 53 9c 9d 37 1c f8 96 1f 22 91 fb e0 dc\r
+2f 2f 95 fe a4 7b 63 9f 1e 12 f4 bc 38 1c ef 0c\r
+2b 7a 7b 95 c3 ad f2 76 05 b7 f6 39 98 c3 cb ad\r
+54 28 08 c3 82 2e 06 4d 4a d1 40 93 67 9e 6e 01\r
+41 8a 6d 5c 05 96 84 cd 56 e3 4e d6 5a b6 05 b8\r
+de 4f cf a6 40 47 4a 54 a8 25 1b bb 73 26 a4 2d\r
+08 58 5c fc fc 95 67 69 b1 5b 6d 7f df 7d a8 4f\r
+81 97 6e aa 41 d6 92 38 0f f1 0e ae cf e0 a5 79\r
+68 29 09 b5 52 1f ad e8 54 d7 97 b8 a0 34 5b 9a\r
+86 4e 05 88 f6 ca dd bf 65 f1 77 99 8e 18 0d 1f\r
+10 24 43 e6 dc a5 3a 94 82 3c aa 9c 3b 35 f3 22\r
+58 3c 70 3a f6 74 76 15 9e c7 ec 93 d1 76 9b 30\r
+0a f0 e7 15 7d c2 98 c6 cd 2d ee 22 62 f8 cd dc\r
+10 f1 1e 01 74 14 71 bb fd 65 18 a1 75 73 45 75\r
+\r
+# PKCS#1 v1.5 Signature Example 15.10\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+d8 b8 16 45 c1 3c d7 ec f5 d0 0e d2 c9 1b 9a cd \r
+46 c1 55 68 e5 30 3c 4a 97 75 ed e7 6b 48 40 3d \r
+6b e5 6c 05 b6 b1 cf 77 c6 e7 5d e0 96 c5 cb 35 \r
+51 cb 6f a9 64 f3 c8 79 cf 58 9d 28 e1 da 2f 9d \r
+ec \r
+\r
+# Signature:\r
+27 45 07 4c a9 71 75 d9 92 e2 b4 47 91 c3 23 c5\r
+71 67 16 5c dd 8d a5 79 cd ef 46 86 b9 bb 40 4b\r
+d3 6a 56 50 4e b1 fd 77 0f 60 bf a1 88 a7 b2 4b\r
+0c 91 e8 81 c2 4e 35 b0 4d c4 dd 4c e3 85 66 bc\r
+c9 ce 54 f4 9a 17 5f c9 d0 b2 25 22 d9 57 90 47\r
+f9 ed 42 ec a8 3f 76 4a 10 16 39 97 94 7e 7d 2b\r
+52 ff 08 98 0e 7e 7c 22 57 93 7b 23 f3 d2 79 d4\r
+cd 17 d6 f4 95 54 63 73 d9 83 d5 36 ef d7 d1 b6\r
+71 81 ca 2c b5 0a c6 16 c5 c7 ab fb b9 26 0b 91\r
+b1 a3 8e 47 24 20 01 ff 45 2f 8d e1 0c a6 ea ea\r
+dc af 9e dc 28 95 6f 28 a7 11 29 1f c9 a8 08 78\r
+b8 ba 4c fe 25 b8 28 1c b8 0b c9 cd 6d 2b d1 82\r
+52 46 ee be 25 2d 99 57 ef 93 70 73 52 08 4e 6d\r
+36 d4 23 55 1b f2 66 a8 53 40 fb 4a 6a f3 70 88\r
+0a ab 07 15 3d 01 f4 8d 08 6d f0 bf be c0 5e 7b\r
+44 3b 97 e7 17 18 97 0e 2f 4b f6 20 23 e9 5b 67\r
+\r
+# PKCS#1 v1.5 Signature Example 15.11\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+e5 73 9b 6c 14 c9 2d 51 0d 95 b8 26 93 33 37 ff \r
+0d 24 ef 72 1a c4 ef 64 c2 ba d2 64 be 8b 44 ef \r
+a1 51 6e 08 a2 7e b6 b6 11 d3 30 1d f0 06 2d ae \r
+fc 73 a8 c0 d9 2e 2c 52 1f ac bc 7b 26 47 38 76 \r
+7e a6 fc 97 d5 88 a0 ba f6 ce 50 ad f7 9e 60 0b \r
+d2 9e 34 5f cb 1d ba 71 ac 5c 02 89 02 3f e4 a8 \r
+2b 46 a5 40 77 19 19 7d 2e 95 8e 35 31 fd 54 ae \r
+f9 03 aa bb 43 55 f8 83 18 99 4e d3 c3 dd 62 f4 \r
+20 a7 \r
+\r
+# Signature:\r
+be 40 a5 fb 94 f1 13 e1 b3 ef f6 b6 a3 39 86 f2\r
+02 e3 63 f0 74 83 b7 92 e6 8d fa 55 54 df 04 66\r
+cc 32 15 09 50 78 3b 4d 96 8b 63 9a 04 fd 2f b9\r
+7f 6e b9 67 02 1f 5a dc cb 9f ca 95 ac c8 f2 cd\r
+88 5a 38 0b 0a 4e 82 bc 76 07 64 db ab 88 c1 e6\r
+c0 25 5c aa 94 f2 32 19 9d 6f 59 7c c9 14 5b 00\r
+e3 d4 ba 34 6b 55 9a 88 33 ad 15 16 ad 51 63 f0\r
+16 af 6a 59 83 1c 82 ea 13 c8 22 4d 84 d0 76 5a\r
+9d 12 38 4d a4 60 a8 53 1b 4c 40 7e 04 f4 f3 50\r
+70 9e b9 f0 8f 5b 22 0f fb 45 ab f6 b7 5d 15 79\r
+fd 3f 1e b5 5f c7 5b 00 af 8b a3 b0 87 82 7f e9\r
+ae 9f b4 f6 c5 fa 63 03 1f e5 82 85 2f e2 83 4f\r
+9c 89 bf f5 3e 25 52 21 6b c7 c1 d4 a3 d5 dc 2b\r
+a6 95 5c d9 b1 7d 13 63 e7 fe e8 ed 76 29 75 3f\r
+f3 12 5e dd 48 52 1a e3 b9 b0 32 17 f4 49 6d 0d\r
+8e de 57 ac bc 5b d4 de ae 74 a5 6f 86 67 1d e2\r
+\r
+# PKCS#1 v1.5 Signature Example 15.12\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+7a f4 28 35 91 7a 88 d6 b3 c6 71 6b a2 f5 b0 d5 \r
+b2 0b d4 e2 e6 e5 74 e0 6a f1 ee f7 c8 11 31 be \r
+22 bf 81 28 b9 cb c6 ec 00 27 5b a8 02 94 a5 d1 \r
+17 2d 08 24 a7 9e 8f dd 83 01 83 e4 c0 0b 96 78 \r
+28 67 b1 22 7f ea 24 9a ad 32 ff c5 fe 00 7b c5 \r
+1f 21 79 2f 72 8d ed a8 b5 70 8a a9 9c ab ab 20 \r
+a4 aa 78 3e d8 6f 0f 27 b5 d5 63 f4 2e 07 15 8c \r
+ea 72 d0 97 aa 68 87 ec 41 1d d0 12 91 2a 5e 03 \r
+2b bf a6 78 50 71 44 bc c9 5f 39 b5 8b e7 bf d1 \r
+75 9a db 9a 91 fa 1d 6d 82 26 a8 34 3a 8b 84 9d \r
+ae 76 f7 b9 82 24 d5 9e 28 f7 81 f1 3e ce 60 5f \r
+84 f6 c9 0b ae 5f 8c f3 78 81 6f 40 20 a7 dd a1 \r
+be d9 0c 92 a2 36 34 d2 03 fa c3 fc d8 6d 68 d3 \r
+18 2a 7d 9c ca be 7b 07 95 f5 c6 55 e9 ac c4 e3 \r
+ec 18 51 40 d1 0c ef 05 34 64 ab 17 5c 83 bd 83 \r
+93 5e 3d ab af 34 62 ee be 63 d1 5f 57 3d 26 9a \r
+\r
+# Signature:\r
+4e 78 c5 90 2b 80 79 14 d1 2f a5 37 ae 68 71 c8\r
+6d b8 02 1e 55 d1 ad b8 eb 0c cf 1b 8f 36 ab 7d\r
+ad 1f 68 2e 94 7a 62 70 72 f0 3e 62 73 71 78 1d\r
+33 22 1d 17 4a be 46 0d bd 88 56 0c 22 f6 90 11\r
+6e 2f bb e6 e9 64 36 3a 3e 52 83 bb 5d 94 6e f1\r
+c0 04 7e ba 03 8c 75 6c 40 be 79 23 05 58 09 b0\r
+e9 f3 4a 03 a5 88 15 eb dd e7 67 93 1f 01 8f 6f\r
+18 78 f2 ef 4f 47 dd 37 40 51 dd 48 68 5d ed 6e\r
+fb 3e a8 02 1f 44 be 1d 7d 14 93 98 f9 8e a9 c0\r
+8d 62 88 8e bb 56 19 2d 17 74 7b 6b 8e 17 09 54\r
+31 f1 25 a8 a8 e9 96 2a a3 1c 28 52 64 e0 8f b2\r
+1a ac 33 6c e6 c3 8a a3 75 e4 2b c9 2a b0 ab 91\r
+03 84 31 e1 f9 2c 39 d2 af 5d ed 7e 43 bc 15 1e\r
+6e be a4 c3 e2 58 3a f3 43 7e 82 c4 3c 5e 3b 5b\r
+07 cf 03 59 68 3d 22 98 e3 59 48 ed 80 6c 06 3c\r
+60 6e a1 78 15 0b 1e fc 15 85 69 34 c7 25 5c fe\r
+\r
+# PKCS#1 v1.5 Signature Example 15.13\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+eb ae f3 f9 f2 3b df e5 fa 6b 8a f4 c2 08 c1 89 \r
+f2 25 1b f3 2f 5f 13 7b 9d e4 40 63 78 68 6b 3f \r
+07 21 f6 2d 24 cb 86 88 d6 fc 41 a2 7c ba e2 1d \r
+30 e4 29 fe ac c7 11 19 41 c2 77 \r
+\r
+# Signature:\r
+c4 8d be f5 07 11 4f 03 c9 5f af be b4 df 1b fa\r
+88 e0 18 4a 33 cc 4f 8a 9a 10 35 ff 7f 82 2a 5e\r
+38 cd a1 87 23 91 5f f0 78 24 44 29 e0 f6 08 1c\r
+14 fd 83 33 1f a6 5c 6b a7 bb 9a 12 db f6 62 23\r
+74 cd 0c a5 7d e3 77 4e 2b d7 ae 82 36 77 d0 61\r
+d5 3a e9 c4 04 0d 2d a7 ef 70 14 f3 bb dc 95 a3\r
+61 a4 38 55 c8 ce 9b 97 ec ab ce 17 4d 92 62 85\r
+14 2b 53 4a 30 87 f9 f4 ef 74 51 1e c7 42 b0 d5\r
+68 56 03 fa f4 03 b5 07 2b 98 5d f4 6a df 2d 25\r
+29 a0 2d 40 71 1e 21 90 91 70 52 37 1b 79 b7 49\r
+b8 3a bf 0a e2 94 86 c3 f2 f6 24 77 b2 bd 36 2b\r
+03 9c 01 3c 0c 50 76 ef 52 0d bb 40 5f 42 ce e9\r
+54 25 c3 73 a9 75 e1 cd d0 32 c4 96 22 c8 50 79\r
+b0 9e 88 da b2 b1 39 69 ef 7a 72 39 73 78 10 40\r
+45 9f 57 d5 01 36 38 48 3d e2 d9 1c b3 c4 90 da\r
+81 c4 6d e6 cd 76 ea 8a 0c 8f 6f e3 31 71 2d 24\r
+\r
+# PKCS#1 v1.5 Signature Example 15.14\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+c5 a2 71 12 78 76 1d fc dd 4f 0c 99 e6 f5 61 9d \r
+6c 48 b5 d4 c1 a8 09 82 fa a6 b4 cf 1c f7 a6 0f \r
+f3 27 ab ef 93 c8 01 42 9e fd e0 86 40 85 81 46 \r
+10 56 ac c3 3f 3d 04 f5 ad a2 12 16 ca cd 5f d1 \r
+f9 ed 83 20 3e 0e 2f e6 13 8e 3e ae 84 24 e5 91 \r
+5a 08 3f 3f 7a b7 60 52 c8 be 55 ae 88 2d 6e c1 \r
+48 2b 1e 45 c5 da e9 f4 10 15 40 53 27 02 2e c3 \r
+2f 0e a2 42 97 63 b2 55 04 3b 19 58 ee 3c f6 d6 \r
+39 83 59 6e b3 85 84 4f 85 28 cc 9a 98 65 83 5d \r
+c5 11 3c 02 b8 0d 0f ca 68 aa 25 e7 2b ca ae b3 \r
+cf 9d 79 d8 4f 98 4f d4 17 \r
+\r
+# Signature:\r
+6b d5 25 7a a0 66 11 fb 46 60 08 7c b4 bc 4a 9e\r
+44 91 59 d3 16 52 bd 98 08 44 da f3 b1 c7 b3 53\r
+f8 e5 61 42 f7 ea 98 57 43 3b 18 57 3b 4d ee de\r
+81 8a 93 b0 29 02 97 78 3f 1a 2f 23 cb c7 27 97\r
+a6 72 53 7f 01 f6 24 84 cd 41 62 c3 21 4b 9a c6\r
+28 22 4c 5d e0 1f 32 bb 9b 76 b2 73 54 f2 b1 51\r
+d0 e8 c4 21 3e 46 15 ad 0b c7 1f 51 5e 30 0d 6a\r
+64 c6 74 34 11 ff fd e8 e5 ff 19 0e 54 92 30 43\r
+12 6e cf c4 c4 53 90 22 66 8f b6 75 f2 5c 07 e2\r
+00 99 ee 31 5b 98 d6 af ec 4b 1a 9a 93 dc 33 49\r
+6a 15 bd 6f de 16 63 a7 d4 9b 9f 1e 63 9d 38 66\r
+4b 37 a0 10 b1 f3 5e 65 86 82 d9 cd 63 e5 7d e0\r
+f1 5e 8b dd 09 65 58 f0 7e c0 ca a2 18 a8 c0 6f\r
+47 88 45 39 40 28 7c 9d 34 b6 d4 0a 3f 09 bf 77\r
+99 fe 98 ae 4e b4 9f 3f f4 1c 50 40 a5 0c ef c9\r
+bd f2 39 4b 74 9c f1 64 48 0d f1 ab 68 80 27 3b\r
+\r
+# PKCS#1 v1.5 Signature Example 15.15\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+9b f8 aa 25 3b 87 2e a7 7a 7e 23 47 6b e2 6b 23 \r
+29 57 8c f6 ac 9e a2 80 5b 35 7f 6f c3 ad 13 0d \r
+ba eb 3d 86 9a 13 cc e7 a8 08 bb bb c9 69 85 7e \r
+03 94 5c 7b b6 1d f1 b5 c2 58 9b 8e 04 6c 2a 5d \r
+7e 40 57 b1 a7 4f 24 c7 11 21 63 64 28 85 29 ec \r
+95 70 f2 51 97 21 3b e1 f5 c2 e5 96 f8 bf 8b 2c \r
+f3 cb 38 aa 56 ff e5 e3 1d f7 39 58 20 e9 4e cf \r
+3b 11 89 a9 65 dc f9 a9 cb 42 98 d3 c8 8b 29 23 \r
+c1 9f c6 bc 34 aa ce ca d4 e0 93 1a 7c 4e 5d 73 \r
+dc 86 df a7 98 a8 47 6d 82 46 3e ef aa 90 a8 a9 \r
+19 2a b0 8b 23 08 8d d5 8e 12 80 f7 d7 2e 45 48 \r
+39 6b aa c1 12 25 2d d5 c5 34 6a db 20 04 a2 f7 \r
+10 1c cc 89 9c c7 fa fa e8 bb e2 95 73 88 96 a5 \r
+b2 01 22 85 01 4e f6 \r
+\r
+# Signature:\r
+27 f7 f4 da 9b d6 10 10 6e f5 7d 32 38 3a 44 8a\r
+8a 62 45 c8 3d c1 30 9c 6d 77 0d 35 7b a8 9e 73\r
+f2 ad 08 32 06 2e b0 fe 0a c9 15 57 5b cd 6b 8b\r
+ca db 4e 2b a6 fa 9d a7 3a 59 17 51 52 b2 d4 fe\r
+72 b0 70 c9 b7 37 9e 50 00 0e 55 e6 c2 69 f6 65\r
+8c 93 79 72 79 7d 3a dd 69 f1 30 e3 4b 85 bd ec\r
+9f 3a 9b 39 22 02 d6 f3 e4 30 d0 9c ac a8 22 77\r
+59 ab 82 5f 70 12 d2 ff 4b 5b 62 c8 50 4d ba d8\r
+55 c0 5e dd 5c ab 5a 4c cc dc 67 f0 1d d6 51 7c\r
+7d 41 c4 3e 2a 49 57 af f1 9d b6 f1 8b 17 85 9a\r
+f0 bc 84 ab 67 14 6e c1 a4 a6 0a 17 d7 e0 5f 8b\r
+4f 9c ed 6a d1 09 08 d8 d7 8f 7f c8 8b 76 ad c8\r
+29 0f 87 da f2 a7 be 10 ae 40 85 21 39 5d 54 ed\r
+25 56 fb 76 61 85 4a 73 0c e3 d8 2c 71 a8 d4 93\r
+ec 49 a3 78 ac 8a 3c 74 43 9f 7c c5 55 ba 13 f8\r
+59 07 08 90 ee 18 ff 65 8f a4 d7 41 96 9d 70 a5\r
+\r
+# PKCS#1 v1.5 Signature Example 15.16\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+32 47 48 30 e2 20 37 54 c8 bf 06 81 dc 4f 84 2a \r
+fe 36 09 30 37 86 16 c1 08 e8 33 65 6e 56 40 c8 \r
+68 56 88 5b b0 5d 1e b9 43 8e fe de 67 92 63 de \r
+07 cb 39 55 3f 6a 25 e0 06 b0 a5 23 11 a0 63 ca \r
+08 82 66 d2 56 4f f6 49 0c 46 b5 60 98 18 54 8f \r
+88 76 4d ad 34 a2 5e 3a 85 d5 75 02 3f 0b 9e 66 \r
+50 48 a0 3c 35 05 79 a9 d3 24 46 c7 bb 96 cc 92 \r
+e0 65 ab 94 d3 c8 95 2e 8d f6 8e f0 d9 fa 45 6b \r
+3a 06 bb 80 e3 bb c4 b2 8e 6a 94 b6 d0 ff 76 96 \r
+a6 4e fe 05 e7 35 fe a0 25 d7 bd bc 41 39 f3 a3 \r
+b5 46 07 5c ba 7e fa 94 73 74 d3 f0 ac 80 a6 8d \r
+76 5f 5d f6 21 0b ca 06 9a 2d 88 64 7a f7 ea 04 \r
+2d ac 69 0c b5 73 78 ec 07 77 61 4f b8 b6 5f f4 \r
+53 ca 6b 7d ce 60 98 45 1a 2f 8c 0d a9 bf ec f1 \r
+fd f3 91 bb aa 4e 2a 91 ca 18 a1 12 1a 75 23 a2 \r
+ab d4 25 14 f4 89 e8 \r
+\r
+# Signature:\r
+69 17 43 72 57 c2 2c cb 54 03 29 0c 3d ee 82 d9\r
+cf 75 50 b3 1b d3 1c 51 bd 57 bf d3 5d 45 2a b4\r
+db 7c 4b e6 b2 e2 5a c9 a5 9a 1d 2a 7f eb 62 7f\r
+0a fd 49 76 b3 00 3c c9 cf fd 88 96 50 5e c3 82\r
+f2 65 10 4d 4c f8 c9 32 fa 9f e8 6e 00 87 07 95\r
+99 12 38 9d a4 b2 d6 b3 69 b3 6a 5e 72 e2 9d 24\r
+c9 a9 8c 9d 31 a3 ab 44 e6 43 e6 94 12 66 a4 7a\r
+45 e3 44 6c e8 77 6a be 24 1a 8f 5f c6 42 3b 24\r
+b1 ff 25 0d c2 c3 a8 17 23 53 56 10 77 e8 50 a7\r
+69 b2 5f 03 25 da c8 89 65 a3 b9 b4 72 c4 94 e9\r
+5f 71 9b 4e ac 33 2c aa 7a 65 c7 df e4 6d 9a a7\r
+e6 e0 0f 52 5f 30 3d d6 3a b7 91 92 18 90 18 68\r
+f9 33 7f 8c d2 6a af e6 f3 3b 7f b2 c9 88 10 af\r
+19 f7 fc b2 82 ba 15 77 91 2c 1d 36 89 75 fd 5d\r
+44 0b 86 e1 0c 19 97 15 fa 0b 6f 42 50 b5 33 73\r
+2d 0b ef e1 54 51 50 fc 47 b8 76 de 09 b0 0a 94\r
+\r
+# PKCS#1 v1.5 Signature Example 15.17\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+00 8e 59 50 5e af b5 50 aa e5 e8 45 58 4c eb b0 \r
+0b 6d e1 73 3e 9f 95 d4 2c 88 2a 5b be b5 ce 1c \r
+57 e1 19 e7 c0 d4 da ca 9f 1f f7 87 02 17 f7 cf \r
+d8 a6 b3 73 97 7c ac 9c ab 8e 71 e4 20 \r
+\r
+# Signature:\r
+92 25 03 b6 73 ee 5f 3e 69 1e 1c a8 5e 9f f4 17\r
+3c f7 2b 05 ac 2c 13 1d a5 60 35 93 e3 bc 25 9c\r
+94 c1 f7 d3 a0 6a 5b 98 91 bf 11 3f a3 9e 59 ff\r
+7c 1e d6 46 5e 90 80 49 cb 89 e4 e1 25 cd 37 d2\r
+ff d9 22 7a 41 b4 a0 a1 9c 0a 44 fb bf 3d e5 5b\r
+ab 80 20 87 a3 bb 8d 4f f6 68 ee 6b bb 8a d8 9e\r
+68 57 a7 9a 9c 72 78 19 90 df cf 92 cd 51 94 04\r
+c9 50 f1 3d 11 43 c3 18 4f 1d 25 0c 90 e1 7a c6\r
+ce 36 16 3b 98 95 62 7a d6 ff ec 14 22 44 1f 55\r
+e4 49 9d ba 9b e8 95 46 ae 8b c6 3c ca 01 dd 08\r
+46 3a e7 f1 fc e3 d8 93 99 69 38 77 8c 18 12 e6\r
+74 ad 9c 30 9c 5a cc a3 fd e4 4e 7d d8 69 59 93\r
+e9 c1 fa 87 ac da 99 ec e5 c8 49 9e 46 89 57 ad\r
+66 35 9b f1 2a 51 ad be 78 d3 a2 13 b4 49 bf 0b\r
+5f 8d 4d 49 6a cf 03 d3 03 3b 7c cd 19 6b c2 2f\r
+68 fb 7b ef 4f 69 7c 5e a2 b3 50 62 f4 8a 36 dd\r
+\r
+# PKCS#1 v1.5 Signature Example 15.18\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+6a bc 54 cf 8d 1d ff 1f 53 b1 7d 81 60 36 88 78 \r
+a8 78 8c c6 d2 2f a5 c2 25 8c 88 e6 60 b0 9a 89 \r
+33 f9 f2 c0 50 4d da dc 21 f6 e7 5e 0b 83 3b eb \r
+55 52 29 de e6 56 b9 04 7b 92 f6 2e 76 b8 ff cc \r
+60 da b0 6b 80 \r
+\r
+# Signature:\r
+0b 6d af 42 f7 a8 62 14 7e 41 74 93 c2 c4 01 ef\r
+ae 32 63 6a b4 cb d4 41 92 bb f5 f1 95 b5 0a e0\r
+96 a4 75 a1 61 4f 0a 9f a8 f7 a0 26 cb 46 c6 50\r
+6e 51 8e 33 d8 3e 56 47 7a 87 5a ca 8c 7e 71 4c\r
+e1 bd bd 61 ef 5d 53 52 39 b3 3f 2b fd d6 17 71\r
+ba b6 27 76 d7 81 71 a1 42 3c ea 87 31 f8 2e 60\r
+76 6d 64 54 26 56 20 b1 5f 5c 5a 58 4f 55 f9 5b\r
+80 2f e7 8c 57 4e d5 da cf c8 31 f3 cf 2b 05 02\r
+c0 b2 98 f2 5c cf 11 f9 73 b3 1f 85 e4 74 42 19\r
+85 f3 cf f7 02 df 39 46 ef 0a 66 05 68 21 11 b2\r
+f5 5b 1f 8a b0 d2 ea 3a 68 3c 69 98 5e ad 93 ed\r
+44 9e a4 8f 03 58 dd f7 08 02 cb 41 de 2f d8 3f\r
+3c 80 80 82 d8 49 36 94 8e 0c 84 a1 31 b4 92 78\r
+27 46 05 27 bb 5c d2 4b fa b7 b4 8e 07 1b 24 17\r
+19 30 f9 97 63 27 2f 97 97 bc b7 6f 1d 24 81 57\r
+55 58 fc f2 60 b1 f0 e5 54 eb b3 df 3c fc b9 58\r
+\r
+# PKCS#1 v1.5 Signature Example 15.19\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+af 2d 78 15 2c f1 0e fe 01 d2 74 f2 17 b1 77 f6 \r
+b0 1b 5e 74 9f 15 67 71 5d a3 24 85 9c d3 dd 88 \r
+db 84 8e c7 9f 48 db ba 7b 6f 1d 33 11 1e f3 1b \r
+64 89 9e 73 91 c2 bf fd 69 f4 90 25 cf 20 1f c5 \r
+85 db d1 54 2c 1c 77 8a 2c e7 a7 ee 10 8a 30 9f \r
+ec a2 6d 13 3a 5f fe dc 4e 86 9d cd 76 56 59 6a \r
+c8 42 7e a3 ef 6e 3f d7 8f e9 9d 8d dc 71 d8 39 \r
+f6 78 6e 0d a6 e7 86 bd 62 b3 a4 f1 9b 89 1a 56 \r
+15 7a 55 4e c2 a2 b3 9e 25 a1 d7 c7 d3 73 21 c7 \r
+a1 d9 46 cf 4f be 75 8d 92 76 f0 85 63 44 9d 67 \r
+41 4a 2c 03 0f 42 51 cf e2 21 3d 04 a5 41 06 37 \r
+87 \r
+\r
+# Signature:\r
+20 9c 61 15 78 57 38 7b 71 e2 4b f3 dd 56 41 45\r
+50 50 3b ec 18 0f f5 3b dd 9b ac 06 2a 2d 49 95\r
+09 bf 99 12 81 b7 95 27 df 91 36 61 5b 7a 6d 9d\r
+b3 a1 03 b5 35 e0 20 2a 2c ac a1 97 a7 b7 4e 53\r
+56 f3 dd 59 5b 49 ac fd 9d 30 04 9a 98 ca 88 f6\r
+25 bc a1 d5 f2 2a 39 2d 8a 74 9e fb 6e ed 9b 78\r
+21 d3 11 0a c0 d2 44 19 9e cb 4a a3 d7 35 a8 3a\r
+2e 88 93 c6 bf 85 81 38 3c ca ee 83 46 35 b7 fa\r
+1f af fa 45 b1 3d 15 c1 da 33 af 71 e8 93 03 d6\r
+80 90 ff 62 ee 61 5f df 5a 84 d1 20 71 1d a5 3c\r
+28 89 19 8a b3 83 17 a9 73 4a b2 7d 67 92 4c ea\r
+74 15 6f f9 9b ef 98 76 bb 5c 33 9e 93 74 52 83\r
+e1 b3 4e 07 22 26 b8 80 45 e0 17 e9 f0 5b 2a 8c\r
+41 67 40 25 8e 22 3b 26 90 02 74 91 73 22 73 f3\r
+22 9d 9e f2 b1 b3 80 7e 32 10 18 92 0a d3 e5 3d\r
+ae 47 e6 d9 39 5c 18 4b 93 a3 74 c6 71 fa a2 ce\r
+\r
+# PKCS#1 v1.5 Signature Example 15.20\r
+\r
+# -----------------\r
+\r
+# Message to be signed:\r
+40 ee 99 24 58 d6 f6 14 86 d2 56 76 a9 6d d2 cb \r
+93 a3 7f 04 b1 78 48 2f 2b 18 6c f8 82 15 27 0d \r
+ba 29 d7 86 d7 74 b0 c5 e7 8c 7f 6e 56 a9 56 e7 \r
+f7 39 50 a2 b0 c0 c1 0a 08 db cd 67 e5 b2 10 bb \r
+21 c5 8e 27 67 d4 4f 7d d4 01 4e 39 66 14 3b f7 \r
+e3 d6 6f f0 c0 9b e4 c5 5f 93 b3 99 94 b8 51 8d \r
+9c 1d 76 d5 b4 73 74 de a0 8f 15 7d 57 d7 06 34 \r
+97 8f 38 56 e0 e5 b4 81 af bb db 5a 3a c4 8d 48 \r
+4b e9 2c 93 de 22 91 78 35 4c 2d e5 26 e9 c6 5a \r
+31 ed e1 ef 68 cb 63 98 d7 91 16 84 fe c0 ba bc \r
+3a 78 1a 66 66 07 83 50 69 74 d0 e1 48 25 10 1c \r
+3b fa ea \r
+\r
+# Signature:\r
+92 75 02 b8 24 af c4 25 13 ca 65 70 de 33 8b 8a\r
+64 c3 a8 5e b8 28 d3 19 36 24 f2 7e 8b 10 29 c5\r
+5c 11 9c 97 33 b1 8f 58 49 b3 50 09 18 bc c0 05\r
+51 d9 a8 fd f5 3a 97 74 9f a8 dc 48 0d 6f e9 74\r
+2a 58 71 f9 73 92 65 28 97 2a 1a f4 9e 39 25 b0\r
+ad f1 4a 84 27 19 b4 a5 a2 d8 9f a9 c0 b6 60 5d\r
+21 2b ed 1e 67 23 b9 34 06 ad 30 e8 68 29 a5 c7\r
+19 b8 90 b3 89 30 6d c5 50 64 86 ee 2f 36 a8 df\r
+e0 a9 6a f6 78 c9 cb d6 af f3 97 ca 20 0e 3e dc\r
+1e 36 bd 2f 08 b3 1d 54 0c 0c b2 82 a9 55 9e 4a\r
+dd 4f c9 e6 49 2e ed 0c cb d3 a6 98 2e 5f aa 2d\r
+dd 17 be 47 41 7c 80 b4 e5 45 2d 31 f7 24 01 a0\r
+42 32 51 09 54 4d 95 4c 01 93 90 79 d4 09 a5 c3\r
+78 d7 51 2d fc 2d 2a 71 ef cc 34 32 a7 65 d1 c6\r
+a5 2c fc e8 99 cd 79 b1 5b 4f c3 72 36 41 ef 6b\r
+d0 0a cc 10 40 7e 5d f5 8d d1 c3 c5 c5 59 a5 06\r
+\r
+# =============================================\r