Blame misc/rsa_parser.pl

Packit 8681c6
#!/usr/bin/perl
Packit 8681c6
#
Packit 8681c6
# COPYRIGHT (c) International Business Machines Corp. 2011-2017
Packit 8681c6
#
Packit 8681c6
# This program is provided under the terms of the Common Public License,
Packit 8681c6
# version 1.0 (CPL-1.0). Any use, reproduction or distribution for this software
Packit 8681c6
# constitutes recipient's acceptance of CPL-1.0 terms which can be found
Packit 8681c6
# in the file LICENSE file or at https://opensource.org/licenses/cpl1.0.php
Packit 8681c6
#
Packit 8681c6
# This script parses the RSA test vectors found in $in_file
Packit 8681c6
# and formats them for openCryptoki tests
Packit 8681c6
#
Packit 8681c6
# Fionnuala Gunter <fin@linux.vnet.ibm.com>
Packit 8681c6
# August 18, 2011
Packit 8681c6
#
Packit 8681c6
#
Packit 8681c6
# To run:
Packit 8681c6
# download ftp://ftp.rsa.com/pub/rsalabs/tmp/pkcs1v15sign-vectors.tx
Packit 8681c6
# ./rsa_parser.pl > rsa.h
Packit 8681c6
#
Packit 8681c6
#
Packit 8681c6
#TODO: For some reason, there are extra blank lines printed...
Packit 8681c6
#
Packit 8681c6
Packit 8681c6
# constants
Packit 8681c6
$max_tv = 300; # maximum number of test vectors to add to file
Packit 8681c6
$sub_max = 3;  # maximum number of messages/signatures per key pair
Packit 8681c6
$count = 0;    # current number of test vectors added to file
Packit 8681c6
$in_file = "pkcs1v15sign-vectors.txt"; # test vector source
Packit 8681c6
Packit 8681c6
# tmp
Packit 8681c6
$string;
Packit 8681c6
Packit 8681c6
# input
Packit 8681c6
$example = "# Example \d+: A \d+-bit RSA key pair";
Packit 8681c6
$key = '# Private key';
Packit 8681c6
$modulus = '# Modulus: ';
Packit 8681c6
$publicexponent = '# Public exponent: ';
Packit 8681c6
$privateexponent = '# Exponent: ';
Packit 8681c6
$prime1_ = '# Prime 1: ';
Packit 8681c6
$prime2_ = '# Prime 2: ';
Packit 8681c6
$exponent1 = '# Prime exponent 1: ';
Packit 8681c6
$exponent2 = '# Prime exponent 2: ';
Packit 8681c6
$coefficient = '# Coefficient: ';
Packit 8681c6
$msgblock = "# PKCS#1 v1.5 signing of 20 random messages ";
Packit 8681c6
$msgsighead = "# PKCS#1 v1.5 Signature Example $num_msg ";
Packit 8681c6
$msghead = '# Message to be signed:';
Packit 8681c6
$sighead = '# Signature:';
Packit 8681c6
Packit 8681c6
# output
Packit 8681c6
$begin_struct = "//ftp://ftp.rsa.com/pub/rsalabs/tmp/pkcs1v15sign-vectors.txt\n".
Packit 8681c6
		"struct RSA_PUBLISHED_TEST_VECTOR ".
Packit 8681c6
		"rsa_sha1_pkcs_sigver_published_tv[] = {\n";
Packit 8681c6
$end_struct = "};\n";
Packit 8681c6
$begin_ele = "\t{";
Packit 8681c6
$end_ele = "\t},\n";
Packit 8681c6
$begin_mod = "\t\t.mod = ";
Packit 8681c6
$begin_pubexp = "\t\t.pub_exp = ";
Packit 8681c6
$begin_privexp = "\t\t.priv_exp = ";
Packit 8681c6
$begin_prime1 = "\t\t.prime1 = ";
Packit 8681c6
$begin_prime2 = "\t\t.prime2 = ";
Packit 8681c6
$begin_exp1 = "\t\t.exp1 = ";
Packit 8681c6
$begin_exp2 = "\t\t.exp2 = ";
Packit 8681c6
$begin_coef = "\t\t.coef = ";
Packit 8681c6
$begin_msg = "\t\t.msg = ";
Packit 8681c6
$begin_sig = "\t\t.sig = ";
Packit 8681c6
$begin_modlen = "\t\t.mod_len = ";
Packit 8681c6
$begin_pubexplen = "\t\t.pubexp_len = ";
Packit 8681c6
$begin_privexplen = "\t\t.privexp_len = ";
Packit 8681c6
$begin_prime1len = "\t\t.prime1_len = ";
Packit 8681c6
$begin_prime2len = "\t\t.prime2_len = ";
Packit 8681c6
$begin_exp1len = "\t\t.exp1_len = ";
Packit 8681c6
$begin_exp2len = "\t\t.exp2_len = ";
Packit 8681c6
$begin_coeflen = "\t\t.coef_len = ";
Packit 8681c6
$begin_msglen = "\t\t.msg_len = ";
Packit 8681c6
$begin_siglen = "\t\t.sig_len = ";
Packit 8681c6
Packit 8681c6
Packit 8681c6
# giant block of generated tests that I copy-pasted here.
Packit 8681c6
# this could be replaced with some functions that generate the data below
Packit Service 8aa27d
# TODO: CKM_CDMF_KEY_GEN doesn't seem to be supported by ICA, CCA or Soft,
Packit 8681c6
# so those tests can be removed
Packit 8681c6
$defheader = "#include \"pkcs11types.h\"
Packit 8681c6
#define MAX_MODULUS_SIZE 256
Packit 8681c6
#define MAX_EXPONENT_SIZE 256
Packit 8681c6
#define MAX_MESSAGE_SIZE 512
Packit 8681c6
#define MAX_SIGNATURE_SIZE 512
Packit 8681c6
#define MAX_PRIME_SIZE  128
Packit 8681c6
#define MAX_COEFFICIENT_SIZE 128
Packit 8681c6
#define PKCS11_MAX_KEY_LEN 512
Packit 8681c6
Packit 8681c6
Packit 8681c6
struct RSA_GENERATED_TEST_VECTOR {
Packit 8681c6
	CK_ULONG modbits;
Packit 8681c6
	CK_ULONG publ_exp_len;
Packit 8681c6
	CK_BYTE  publ_exp[4];
Packit 8681c6
	CK_ULONG inputlen;
Packit 8681c6
	CK_MECHANISM keytype;
Packit 8681c6
	CK_ULONG keylen;
Packit 8681c6
};
Packit 8681c6
Packit 8681c6
static struct RSA_GENERATED_TEST_VECTOR rsa_keywrap_generated_tv[] = {
Packit 8681c6
	{	// 0
Packit 8681c6
		.modbits = 512,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 1,
Packit 8681c6
		.keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 1
Packit 8681c6
		.modbits = 512,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 8,
Packit 8681c6
		.keytype = {CKM_CDMF_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 2
Packit 8681c6
		.modbits = 512,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 8,
Packit 8681c6
		.keytype = {CKM_DES_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 3
Packit 8681c6
		.modbits = 512,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 24,
Packit 8681c6
		.keytype = {CKM_DES3_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 4
Packit 8681c6
		.modbits = 512,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 16,
Packit 8681c6
		.keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 5
Packit 8681c6
		.modbits = 512,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 32,
Packit 8681c6
		.keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
	},{	// 6
Packit 8681c6
                .modbits = 512,
Packit 8681c6
                .publ_exp_len = 1,
Packit 8681c6
                .publ_exp = { 0x03 },
Packit 8681c6
                .keylen = 64,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 7
Packit 8681c6
                .modbits = 512,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 1,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 8
Packit 8681c6
                .modbits = 512,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_CDMF_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 9
Packit 8681c6
                .modbits = 512,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_DES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 10
Packit 8681c6
                .modbits = 512,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 24,
Packit 8681c6
                .keytype = {CKM_DES3_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 11
Packit 8681c6
                .modbits = 512,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 16,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 12
Packit 8681c6
                .modbits = 512,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 32,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 13
Packit 8681c6
                .modbits = 512,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 64,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 14
Packit 8681c6
                .modbits = 512,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 1,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 15
Packit 8681c6
                .modbits = 512,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_CDMF_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 16
Packit 8681c6
                .modbits = 512,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_DES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 17
Packit 8681c6
                .modbits = 512,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 24,
Packit 8681c6
                .keytype = {CKM_DES3_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 18
Packit 8681c6
                .modbits = 512,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 16,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 19
Packit 8681c6
                .modbits = 512,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 32,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        },{	// 20
Packit 8681c6
                .modbits = 512,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 64,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 21
Packit 8681c6
		.modbits = 768,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 1,
Packit 8681c6
		.keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0}
Packit 8681c6
	}, {	// 22
Packit 8681c6
		.modbits = 768,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 8,
Packit 8681c6
		.keytype = {CKM_CDMF_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 23
Packit 8681c6
		.modbits = 768,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 8,
Packit 8681c6
		.keytype = {CKM_DES_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 24
Packit 8681c6
		.modbits = 768,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 24,
Packit 8681c6
		.keytype = {CKM_DES3_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 25
Packit 8681c6
		.modbits = 768,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 16,
Packit 8681c6
		.keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 26
Packit 8681c6
		.modbits = 768,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 32,
Packit 8681c6
		.keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
	},{	// 27
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 1,
Packit 8681c6
                .publ_exp = { 0x03 },
Packit 8681c6
                .keylen = 64,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 28
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 1,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 29
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_CDMF_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 30
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_DES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 31
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 24,
Packit 8681c6
                .keytype = {CKM_DES3_KEY_GEN, 0, 0}
Packit 8681c6
        }, {	// 32
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 16,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 33
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 32,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        },{	// 34
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 64,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 35
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 1,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 36
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_CDMF_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 37
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_DES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 38
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 24,
Packit 8681c6
                .keytype = {CKM_DES3_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 39
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 16,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 40
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 32,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 41
Packit 8681c6
		.modbits = 768,
Packit 8681c6
		.publ_exp_len = 3,
Packit 8681c6
		.publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
		.keylen = 96,
Packit 8681c6
		.keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 42
Packit 8681c6
                .modbits = 1024,
Packit 8681c6
                .publ_exp_len = 1,
Packit 8681c6
                .publ_exp = { 0x03 },
Packit 8681c6
                .keylen = 1,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 43
Packit 8681c6
		.modbits = 1024,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 8,
Packit 8681c6
		.keytype = {CKM_CDMF_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 44
Packit 8681c6
		.modbits = 1024,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 8,
Packit 8681c6
		.keytype = {CKM_DES_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 45
Packit 8681c6
		.modbits = 1024,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 24,
Packit 8681c6
		.keytype = {CKM_DES3_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 46
Packit 8681c6
		.modbits = 1024,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 16,
Packit 8681c6
		.keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 47
Packit 8681c6
		.modbits = 1024,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 32,
Packit 8681c6
		.keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
	},{	// 48
Packit 8681c6
                .modbits = 1024,
Packit 8681c6
                .publ_exp_len = 1,
Packit 8681c6
                .publ_exp = { 0x03 },
Packit 8681c6
                .keylen = 96,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 49
Packit 8681c6
                .modbits = 1024,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 1,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 50
Packit 8681c6
                .modbits = 1024,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_CDMF_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 51
Packit 8681c6
                .modbits = 1024,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_DES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 52
Packit 8681c6
                .modbits = 1024,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 24,
Packit 8681c6
                .keytype = {CKM_DES3_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 53
Packit 8681c6
                .modbits = 1024,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 16,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 54
Packit 8681c6
                .modbits = 1024,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 32,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        },{	// 55
Packit 8681c6
                .modbits = 1024,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 128,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 56
Packit 8681c6
                .modbits = 1024,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 1,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 57
Packit 8681c6
                .modbits = 1024,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_CDMF_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 58
Packit 8681c6
                .modbits = 1024,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_DES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 59
Packit 8681c6
                .modbits = 1024,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 24,
Packit 8681c6
                .keytype = {CKM_DES3_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 60
Packit 8681c6
                .modbits = 1024,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 16,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 61
Packit 8681c6
                .modbits = 1024,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 32,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 62
Packit 8681c6
                .modbits = 1024,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 128,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 63
Packit 8681c6
		.modbits = 2048,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 1,
Packit 8681c6
		.keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 64
Packit 8681c6
		.modbits = 2048,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 8,
Packit 8681c6
		.keytype = {CKM_CDMF_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 65
Packit 8681c6
		.modbits = 2048,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 8,
Packit 8681c6
		.keytype = {CKM_DES_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 66
Packit 8681c6
		.modbits = 2048,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 24,
Packit 8681c6
		.keytype = {CKM_DES3_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 67
Packit 8681c6
		.modbits = 2048,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 16,
Packit 8681c6
		.keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 68
Packit 8681c6
		.modbits = 2048,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 32,
Packit 8681c6
		.keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
	},{	// 69
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 1,
Packit 8681c6
                .publ_exp = { 0x03 },
Packit 8681c6
                .keylen = 256,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 70
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 1,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 71
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_CDMF_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 72
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_DES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 73
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 24,
Packit 8681c6
                .keytype = {CKM_DES3_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 74
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 16,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 75
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 32,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        },{	// 76
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 256,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 77
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 1,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        },{	// 78
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_CDMF_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 79
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_DES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 80
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 24,
Packit 8681c6
                .keytype = {CKM_DES3_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 81
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 16,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 82
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 32,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 83
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 256,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 84
Packit 8681c6
		.modbits = 4096,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 1,
Packit 8681c6
		.keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 85
Packit 8681c6
		.modbits = 4096,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 8,
Packit 8681c6
		.keytype = {CKM_CDMF_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 86
Packit 8681c6
		.modbits = 4096,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 8,
Packit 8681c6
		.keytype = {CKM_DES_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 87
Packit 8681c6
		.modbits = 4096,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 24,
Packit 8681c6
		.keytype = {CKM_DES3_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 88
Packit 8681c6
		.modbits = 4096,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 16,
Packit 8681c6
		.keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
	}, {	// 89
Packit 8681c6
		.modbits = 4096,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.keylen = 32,
Packit 8681c6
		.keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
	},{	// 90
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 1,
Packit 8681c6
                .publ_exp = { 0x03 },
Packit 8681c6
                .keylen = 512,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 91
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 1,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 92
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_CDMF_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 93
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_DES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 94
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 24,
Packit 8681c6
                .keytype = {CKM_DES3_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 95
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 16,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 96
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 32,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        },{	// 97
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .keylen = 512,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 98
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 1,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        },{	// 99
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_CDMF_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 100
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 8,
Packit 8681c6
                .keytype = {CKM_DES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 101
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 24,
Packit 8681c6
                .keytype = {CKM_DES3_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 102
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 16,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 103
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 32,
Packit 8681c6
                .keytype = {CKM_AES_KEY_GEN, 0, 0},
Packit 8681c6
        }, {	// 104
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .keylen = 512,
Packit 8681c6
                .keytype = {CKM_GENERIC_SECRET_KEY_GEN, 0, 0},
Packit 8681c6
        }
Packit 8681c6
Packit 8681c6
};
Packit 8681c6
Packit 8681c6
static struct RSA_GENERATED_TEST_VECTOR rsa_generated_tv[] = {
Packit 8681c6
	{	// tv[0]
Packit 8681c6
		.modbits = 512,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.inputlen = 1,
Packit 8681c6
	}, {	//tv[1]
Packit 8681c6
		.modbits = 512,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.inputlen = 53,
Packit 8681c6
	}, {	//tv[2]
Packit 8681c6
		.modbits = 512,
Packit 8681c6
		.publ_exp_len = 2,
Packit 8681c6
		.publ_exp = { 0x00, 0x11 },
Packit 8681c6
		.inputlen = 1,
Packit 8681c6
	}, {	//tv[3]
Packit 8681c6
		.modbits = 512,
Packit 8681c6
		.publ_exp_len = 2,
Packit 8681c6
		.publ_exp = { 0x00, 0x11 },
Packit 8681c6
		.inputlen = 53,
Packit 8681c6
	}, {	//tv[4]
Packit 8681c6
		.modbits = 512,
Packit 8681c6
		.publ_exp_len = 3,
Packit 8681c6
		.publ_exp = { 0x03, 0x00, 0x01 },
Packit 8681c6
		.inputlen = 1,
Packit 8681c6
	}, {	//tv[5]
Packit 8681c6
		.modbits = 512,
Packit 8681c6
		.publ_exp_len = 3,
Packit 8681c6
		.publ_exp = { 0x03, 0x00, 0x01 },
Packit 8681c6
		.inputlen = 53,
Packit 8681c6
	}, {	//tv[6]
Packit 8681c6
		.modbits = 768,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.inputlen = 1,
Packit 8681c6
	}, {	//tv[7]
Packit 8681c6
		.modbits = 768,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.inputlen = 85,
Packit 8681c6
	}, {	//tv[8]
Packit 8681c6
		.modbits = 768,
Packit 8681c6
		.publ_exp_len = 2,
Packit 8681c6
		.publ_exp = { 0x00, 0x11 },
Packit 8681c6
		.inputlen = 1,
Packit 8681c6
	}, {	//tv[9]
Packit 8681c6
		.modbits = 768,
Packit 8681c6
		.publ_exp_len = 2,
Packit 8681c6
		.publ_exp = { 0x00, 0x11 },
Packit 8681c6
		.inputlen = 85,
Packit 8681c6
	}, {	//tv[10]
Packit 8681c6
		.modbits = 768,
Packit 8681c6
		.publ_exp_len = 3,
Packit 8681c6
		.publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
		.inputlen = 1,
Packit 8681c6
	}, {	//tv[11]
Packit 8681c6
		.modbits = 768,
Packit 8681c6
		.publ_exp_len = 3,
Packit 8681c6
		.publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
		.inputlen = 85,
Packit 8681c6
	}, {	//tv[12]
Packit 8681c6
		.modbits = 1024,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.inputlen = 1,
Packit 8681c6
	}, {	//tv[13]
Packit 8681c6
		.modbits = 1024,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.inputlen = 117,
Packit 8681c6
	}, {	//tv[14]
Packit 8681c6
		.modbits = 1024,
Packit 8681c6
		.publ_exp_len = 2,
Packit 8681c6
		.publ_exp = { 0x00, 0x11 },
Packit 8681c6
		.inputlen = 1,
Packit 8681c6
	}, {	//tv[15]
Packit 8681c6
		.modbits = 1024,
Packit 8681c6
		.publ_exp_len = 2,
Packit 8681c6
		.publ_exp = { 0x00, 0x11 },
Packit 8681c6
		.inputlen = 117,
Packit 8681c6
	}, {	//tv[16]
Packit 8681c6
		.modbits = 1024,
Packit 8681c6
		.publ_exp_len = 3,
Packit 8681c6
		.publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
		.inputlen = 1,
Packit 8681c6
	}, {	//tv[17]
Packit 8681c6
		.modbits = 1024,
Packit 8681c6
		.publ_exp_len = 3,
Packit 8681c6
		.publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
		.inputlen = 117,
Packit 8681c6
	}, {	//tv[18]
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 1,
Packit 8681c6
                .publ_exp = { 0x03 },
Packit 8681c6
                .inputlen = 1,
Packit 8681c6
        }, {	//tv[19]
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 1,
Packit 8681c6
                .publ_exp = { 0x03 },
Packit 8681c6
                .inputlen = 245,
Packit 8681c6
        }, {	//tv[20]
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .inputlen = 1,
Packit 8681c6
        }, {	//tv[21]
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .inputlen = 245,
Packit 8681c6
        }, {	//tv[22]
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .inputlen = 1,
Packit 8681c6
        }, {	//tv[23]
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .inputlen = 245,
Packit 8681c6
        }, {	//tv[24]
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 1,
Packit 8681c6
                .publ_exp = { 0x03 },
Packit 8681c6
                .inputlen = 1,
Packit 8681c6
        }, {	//tv[25]
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 1,
Packit 8681c6
                .publ_exp = { 0x03 },
Packit 8681c6
                .inputlen = 501,
Packit 8681c6
        }, {	//tv[26]
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .inputlen = 1,
Packit 8681c6
        }, {	//tv[27]
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .inputlen = 501,
Packit 8681c6
        }, {	//tv[28]
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .inputlen = 1,
Packit 8681c6
        }, {	//tv[29]
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .inputlen = 501,
Packit 8681c6
        },
Packit 8681c6
Packit 8681c6
Packit 8681c6
};
Packit 8681c6
Packit 8681c6
static struct RSA_GENERATED_TEST_VECTOR rsa_x509_generated_tv[] = {
Packit 8681c6
	{	// tv[0]
Packit 8681c6
		.modbits = 512,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.inputlen = 1,
Packit 8681c6
	}, {	// tv[1]
Packit 8681c6
		.modbits = 512,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.inputlen = 64,
Packit 8681c6
	}, {	// tv[2]
Packit 8681c6
		.modbits = 512,
Packit 8681c6
		.publ_exp_len = 2,
Packit 8681c6
		.publ_exp = { 0x00, 0x11 },
Packit 8681c6
		.inputlen = 1,
Packit 8681c6
	}, {	// tv[3]
Packit 8681c6
		.modbits = 512,
Packit 8681c6
		.publ_exp_len = 2,
Packit 8681c6
		.publ_exp = { 0x00, 0x11 },
Packit 8681c6
		.inputlen = 64,
Packit 8681c6
	}, {	// tv[4]
Packit 8681c6
		.modbits = 512,
Packit 8681c6
		.publ_exp_len = 3,
Packit 8681c6
		.publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
		.inputlen = 1,
Packit 8681c6
	}, {	// tv[5]
Packit 8681c6
		.modbits = 512,
Packit 8681c6
		.publ_exp_len = 3,
Packit 8681c6
		.publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
		.inputlen = 64,
Packit 8681c6
	}, {    // tv[6]
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 1,
Packit 8681c6
                .publ_exp = { 0x03 },
Packit 8681c6
                .inputlen = 1,
Packit 8681c6
        }, {    // tv[7]
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 1,
Packit 8681c6
                .publ_exp = { 0x03 },
Packit 8681c6
                .inputlen = 96,
Packit 8681c6
        }, {    // tv[8]
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .inputlen = 1,
Packit 8681c6
        }, {    // tv[9]
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .inputlen = 96,
Packit 8681c6
        }, {    // tv[10]
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .inputlen = 1,
Packit 8681c6
        }, {    // tv[11]
Packit 8681c6
                .modbits = 768,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .inputlen = 96,
Packit 8681c6
        }, {	// tv[12]
Packit 8681c6
		.modbits = 1024,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.inputlen = 1
Packit 8681c6
	}, {	// tv[13]
Packit 8681c6
		.modbits = 1024,
Packit 8681c6
		.publ_exp_len = 1,
Packit 8681c6
		.publ_exp = { 0x03 },
Packit 8681c6
		.inputlen = 128,
Packit 8681c6
	}, {	// tv[14]
Packit 8681c6
		.modbits = 1024,
Packit 8681c6
		.publ_exp_len = 2,
Packit 8681c6
		.publ_exp = { 0x00, 0x11 },
Packit 8681c6
		.inputlen = 1,
Packit 8681c6
	}, {	// tv[15]
Packit 8681c6
		.modbits = 1024,
Packit 8681c6
		.publ_exp_len = 2,
Packit 8681c6
		.publ_exp = { 0x00, 0x11 },
Packit 8681c6
		.inputlen = 128,
Packit 8681c6
	}, {	// tv[16]
Packit 8681c6
		.modbits = 1024,
Packit 8681c6
		.publ_exp_len = 3,
Packit 8681c6
		.publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
		.inputlen = 1
Packit 8681c6
	}, {	// tv[17]
Packit 8681c6
		.modbits = 1024,
Packit 8681c6
		.publ_exp_len = 3,
Packit 8681c6
		.publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
		.inputlen = 128,
Packit 8681c6
	}, {     // tv[18]
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 1,
Packit 8681c6
                .publ_exp = { 0x03 },
Packit 8681c6
                .inputlen = 1
Packit 8681c6
        }, {    // tv[19]
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 1,
Packit 8681c6
                .publ_exp = { 0x03 },
Packit 8681c6
                .inputlen = 256,
Packit 8681c6
        }, {    // tv[20]
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .inputlen = 1,
Packit 8681c6
        }, {    // tv[21]
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .inputlen = 256,
Packit 8681c6
        }, {    // tv[22]
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .inputlen = 1
Packit 8681c6
        }, {    // tv[23]
Packit 8681c6
                .modbits = 2048,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .inputlen = 256,
Packit 8681c6
        }, {     // tv[24]
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 1,
Packit 8681c6
                .publ_exp = { 0x03 },
Packit 8681c6
                .inputlen = 1
Packit 8681c6
        }, {    // tv[25]
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 1,
Packit 8681c6
                .publ_exp = { 0x03 },
Packit 8681c6
                .inputlen = 512,
Packit 8681c6
        }, {    // tv[26]
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .inputlen = 1,
Packit 8681c6
        }, {    // tv[27]
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 2,
Packit 8681c6
                .publ_exp = { 0x00, 0x11 },
Packit 8681c6
                .inputlen = 512,
Packit 8681c6
        }, {    // tv[28]
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .inputlen = 1
Packit 8681c6
        }, {    // tv[29]
Packit 8681c6
                .modbits = 4096,
Packit 8681c6
                .publ_exp_len = 3,
Packit 8681c6
                .publ_exp = { 0x01, 0x00, 0x01 },
Packit 8681c6
                .inputlen = 512,
Packit 8681c6
        }
Packit 8681c6
};
Packit 8681c6
Packit 8681c6
struct GENERATED_TEST_SUITE_INFO {
Packit 8681c6
	const char *name;
Packit 8681c6
	unsigned int tvcount;
Packit 8681c6
	struct RSA_GENERATED_TEST_VECTOR *tv;
Packit 8681c6
	CK_MECHANISM mech;
Packit 8681c6
};
Packit 8681c6
Packit 8681c6
#define NUM_OF_GENERATED_KEYWRAP_TESTSUITES 2
Packit 8681c6
struct GENERATED_TEST_SUITE_INFO generated_keywrap_test_suites[] = {
Packit 8681c6
	{
Packit 8681c6
		.name = \"RSA PKCS\",
Packit 8681c6
		.tvcount = 105,
Packit 8681c6
		.tv = rsa_keywrap_generated_tv,
Packit 8681c6
		.mech = {CKM_RSA_PKCS, 0, 0},
Packit 8681c6
	}, {
Packit 8681c6
		.name = \"RSA X.509\",
Packit 8681c6
		.tvcount = 105,
Packit 8681c6
		.tv = rsa_keywrap_generated_tv,
Packit 8681c6
		.mech = {CKM_RSA_X_509, 0, 0},
Packit 8681c6
	}
Packit 8681c6
};
Packit 8681c6
Packit 8681c6
Packit 8681c6
#define NUM_OF_GENERATED_SIGVER_TESTSUITES 5
Packit 8681c6
struct GENERATED_TEST_SUITE_INFO generated_sigver_test_suites[] = {
Packit 8681c6
	{
Packit 8681c6
		.name = \"RSA PKCS\",
Packit 8681c6
		.tvcount = 30,
Packit 8681c6
		.tv = rsa_generated_tv,
Packit 8681c6
		.mech = {CKM_RSA_PKCS, 0, 0},
Packit 8681c6
	}, {
Packit 8681c6
		.name = \"RSA SHA1 PKCS\",
Packit 8681c6
		.tvcount = 30,
Packit 8681c6
		.tv = rsa_generated_tv,
Packit 8681c6
		.mech = {CKM_SHA1_RSA_PKCS, 0, 0},
Packit 8681c6
	}, {
Packit 8681c6
		.name = \"RSA MD2 PKCS\",
Packit 8681c6
		.tvcount = 30,
Packit 8681c6
		.tv = rsa_generated_tv,
Packit 8681c6
		.mech = {CKM_MD2_RSA_PKCS, 0, 0},
Packit 8681c6
	}, {
Packit 8681c6
		.name = \"RSA MD5 PKCS\",
Packit 8681c6
		.tvcount = 30,
Packit 8681c6
		.tv = rsa_generated_tv,
Packit 8681c6
		.mech = {CKM_MD5_RSA_PKCS, 0 , 0},
Packit 8681c6
	}, {
Packit 8681c6
		.name = \"RSA X.509\",
Packit 8681c6
		.tvcount = 30,
Packit 8681c6
		.tv = rsa_x509_generated_tv,
Packit 8681c6
		.mech = {CKM_RSA_X_509, 0 , 0},
Packit 8681c6
	}
Packit 8681c6
};
Packit 8681c6
Packit 8681c6
#define NUM_OF_GENERATED_CRYPTO_TESTSUITES 2
Packit 8681c6
struct GENERATED_TEST_SUITE_INFO generated_crypto_test_suites[] = {
Packit 8681c6
	{
Packit 8681c6
		.name = \"RSA PKCS\",
Packit 8681c6
		.tvcount = 30,
Packit 8681c6
		.tv = rsa_generated_tv,
Packit 8681c6
		.mech = {CKM_RSA_PKCS, 0, 0},
Packit 8681c6
	}, {
Packit 8681c6
		.name = \"RSA X.509\",
Packit 8681c6
		.tvcount = 30,
Packit 8681c6
		.tv = rsa_x509_generated_tv,
Packit 8681c6
		.mech = {CKM_RSA_X_509, 0, 0},
Packit 8681c6
	}
Packit 8681c6
};
Packit 8681c6
Packit 8681c6
struct RSA_PUBLISHED_TEST_VECTOR {
Packit 8681c6
        CK_BYTE mod[MAX_MODULUS_SIZE];          // n
Packit 8681c6
        CK_ULONG mod_len;
Packit 8681c6
        CK_BYTE prime1[MAX_PRIME_SIZE];         // p
Packit 8681c6
        CK_ULONG prime1_len;
Packit 8681c6
        CK_BYTE prime2[MAX_PRIME_SIZE];         // q
Packit 8681c6
        CK_ULONG prime2_len;
Packit 8681c6
        CK_BYTE exp1[MAX_EXPONENT_SIZE];        // d % (p-1)
Packit 8681c6
        CK_ULONG exp1_len;
Packit 8681c6
        CK_BYTE exp2[MAX_EXPONENT_SIZE];        // d % (q-1)
Packit 8681c6
        CK_ULONG exp2_len;
Packit 8681c6
        CK_BYTE coef[MAX_COEFFICIENT_SIZE]; 	// (q^-1) % p
Packit 8681c6
        CK_ULONG coef_len;
Packit 8681c6
        CK_BYTE pub_exp[MAX_EXPONENT_SIZE];     // e
Packit 8681c6
        CK_ULONG pubexp_len;
Packit 8681c6
        CK_BYTE priv_exp[MAX_EXPONENT_SIZE];    // d
Packit 8681c6
        CK_ULONG privexp_len;
Packit 8681c6
        CK_BYTE msg[MAX_MESSAGE_SIZE];
Packit 8681c6
        CK_ULONG msg_len;
Packit 8681c6
        CK_BYTE sig[MAX_SIGNATURE_SIZE];
Packit 8681c6
        CK_ULONG sig_len;
Packit 8681c6
};\n";
Packit 8681c6
Packit 8681c6
# vars
Packit 8681c6
Packit 8681c6
@mod;
Packit 8681c6
@pubexp;
Packit 8681c6
@privexp;
Packit 8681c6
@prime1;
Packit 8681c6
@prime2;
Packit 8681c6
@exp1;
Packit 8681c6
@exp2;
Packit 8681c6
@coef;
Packit 8681c6
@msg;
Packit 8681c6
@sig;
Packit 8681c6
Packit 8681c6
$modlen = 0;
Packit 8681c6
$pubexplen = 0;
Packit 8681c6
$privexplen = 0;
Packit 8681c6
$prime1len = 0;
Packit 8681c6
$prime2len = 0;
Packit 8681c6
$exp1len = 0;
Packit 8681c6
$exp2len = 0;
Packit 8681c6
$coeflen = 0;
Packit 8681c6
$msglen = 0;
Packit 8681c6
$siglen = 0;
Packit 8681c6
Packit 8681c6
# open test vector file
Packit 8681c6
# parse contents
Packit 8681c6
# print results
Packit 8681c6
open ($file, $in_file);
Packit 8681c6
print $defheader;
Packit 8681c6
print $begin_struct;
Packit 8681c6
my $subcount;
Packit 8681c6
while (<$file>) {
Packit 8681c6
	# parse key pair
Packit 8681c6
	if ($_ =~ $key){
Packit 8681c6
		parse_keys();
Packit 8681c6
		$subcount = 0;
Packit 8681c6
	}
Packit 8681c6
	# parse message
Packit 8681c6
	if ($_ =~ $msghead){
Packit 8681c6
		#print "\n";
Packit 8681c6
		parse_msg();
Packit 8681c6
	}
Packit 8681c6
	# parse signature and print struct element
Packit 8681c6
	if ($_ =~ $sighead){
Packit 8681c6
		#print "\n";
Packit 8681c6
		parse_sig();
Packit 8681c6
		if ($subcount < $sub_max){
Packit 8681c6
			print_ele();
Packit 8681c6
			$count++;
Packit 8681c6
		}
Packit 8681c6
		if ($count > $max_tv){
Packit 8681c6
			last;
Packit 8681c6
		}
Packit 8681c6
		#$count++;
Packit 8681c6
		$subcount++;
Packit 8681c6
	}
Packit 8681c6
}
Packit 8681c6
print $end_struct;
Packit 8681c6
print "\n";
Packit 8681c6
Packit 8681c6
$footer = "struct PUBLISHED_TEST_SUITE_INFO {
Packit 8681c6
        const char *name;
Packit 8681c6
        unsigned int tvcount;
Packit 8681c6
        struct RSA_PUBLISHED_TEST_VECTOR *tv;
Packit 8681c6
        CK_MECHANISM mech;
Packit 8681c6
        unsigned int result;
Packit 8681c6
};
Packit 8681c6
Packit 8681c6
#define NUM_OF_PUBLISHED_TESTSUITES 1
Packit 8681c6
struct PUBLISHED_TEST_SUITE_INFO published_test_suites[] = {
Packit 8681c6
        {
Packit 8681c6
                .name = \"RSA SHA-1 PKCS v1.5\",
Packit 8681c6
                .tvcount = $count,
Packit 8681c6
                .tv = rsa_sha1_pkcs_sigver_published_tv,
Packit 8681c6
                .mech = {CKM_SHA1_RSA_PKCS, 0, 0},
Packit 8681c6
        }
Packit 8681c6
Packit 8681c6
Packit 8681c6
};";
Packit 8681c6
Packit 8681c6
print $footer;
Packit 8681c6
close ($file);
Packit 8681c6
Packit 8681c6
sub parse_keys(){
Packit 8681c6
	while (<$file>){
Packit 8681c6
		print "\n";
Packit 8681c6
                # skip # -----
Packit 8681c6
                if ($_ =~ m/^# -/){
Packit 8681c6
			next;
Packit 8681c6
                }
Packit 8681c6
Packit 8681c6
                # skip " "
Packit 8681c6
                elsif (length($_) == 1 || length($_) == 2 || (!$_)){
Packit 8681c6
			next;
Packit 8681c6
                }
Packit 8681c6
Packit 8681c6
                # parse modulus
Packit 8681c6
                elsif ($_ =~ $modulus){
Packit 8681c6
                        parse_mod();
Packit 8681c6
                        next;
Packit 8681c6
                }
Packit 8681c6
Packit 8681c6
                # parse public exponent
Packit 8681c6
                elsif ($_ =~ $publicexponent){
Packit 8681c6
                        parse_pubexp();
Packit 8681c6
                        next;
Packit 8681c6
                }
Packit 8681c6
Packit 8681c6
		# parse private exponent
Packit 8681c6
                elsif ($_ =~ $privateexponent){
Packit 8681c6
                        parse_privexp();
Packit 8681c6
                        next;
Packit 8681c6
                }
Packit 8681c6
Packit 8681c6
                # parse prime1
Packit 8681c6
                elsif ($_ =~ $prime1_){
Packit 8681c6
                        parse_prime1();
Packit 8681c6
                        next;
Packit 8681c6
                }
Packit 8681c6
Packit 8681c6
                # parse prime2
Packit 8681c6
                elsif ($_ =~ $prime2_){
Packit 8681c6
                        parse_prime2();
Packit 8681c6
                        next;
Packit 8681c6
                }
Packit 8681c6
Packit 8681c6
                # parse exponent1
Packit 8681c6
                elsif ($_ =~ $exponent1){
Packit 8681c6
                        parse_exp1();
Packit 8681c6
                        next;
Packit 8681c6
                }
Packit 8681c6
Packit 8681c6
		# parse exponent2
Packit 8681c6
                elsif ($_ =~ $exponent2){
Packit 8681c6
                        parse_exp2();
Packit 8681c6
                        next;
Packit 8681c6
                }
Packit 8681c6
Packit 8681c6
                # parse coefficient
Packit 8681c6
                elsif ($_ =~ $coefficient){
Packit 8681c6
                        parse_coef();
Packit 8681c6
			last;
Packit 8681c6
                }
Packit 8681c6
	}
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# parse modulus
Packit 8681c6
sub parse_mod(){
Packit 8681c6
	@mod = ();
Packit 8681c6
	while (<$file>){
Packit 8681c6
                if ($_ =~ m{\S+}){
Packit 8681c6
                        for (my $n = 0; ($n + 2) < length($_); $n+=3) {
Packit 8681c6
				$string = "0x".substr($_, $n, 2);
Packit 8681c6
				push(@mod, $string);
Packit 8681c6
                        }
Packit 8681c6
                }
Packit 8681c6
                else {
Packit 8681c6
			$modlen = @mod;
Packit 8681c6
                        last;
Packit 8681c6
                }
Packit 8681c6
        }
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# parse public exponent
Packit 8681c6
sub parse_pubexp(){
Packit 8681c6
	@pubexp = ();
Packit 8681c6
        while (<$file>){
Packit 8681c6
                if ($_ =~ m{\S+}){
Packit 8681c6
                        for (my $n = 0; ($n + 2) < length($_); $n+=3) {
Packit 8681c6
                                $string = "0x".substr($_, $n, 2);
Packit 8681c6
                                push(@pubexp, $string);
Packit 8681c6
                        }
Packit 8681c6
                }
Packit 8681c6
                else {
Packit 8681c6
			$pubexplen = @pubexp;
Packit 8681c6
                        last;
Packit 8681c6
                }
Packit 8681c6
        }
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# parse private exponent
Packit 8681c6
sub parse_privexp(){
Packit 8681c6
        @privexp = ();
Packit 8681c6
        while (<$file>){
Packit 8681c6
                if ($_ =~ m{\S+}){
Packit 8681c6
                        for (my $n = 0; ($n + 2) < length($_); $n+=3) {
Packit 8681c6
                                $string = "0x".substr($_, $n, 2);
Packit 8681c6
                                push(@privexp, $string);
Packit 8681c6
                        }
Packit 8681c6
                }
Packit 8681c6
                else {
Packit 8681c6
			$privexplen = @privexp;
Packit 8681c6
                        last;
Packit 8681c6
                }
Packit 8681c6
        }
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# parse prime 1
Packit 8681c6
sub parse_prime1(){
Packit 8681c6
        @prime1 = ();
Packit 8681c6
        while (<$file>){
Packit 8681c6
                if ($_ =~ m{\S+}){
Packit 8681c6
                        for (my $n = 0; ($n + 2) < length($_); $n+=3) {
Packit 8681c6
                                $string = "0x".substr($_, $n, 2);
Packit 8681c6
                                push(@prime1, $string);
Packit 8681c6
                        }
Packit 8681c6
                }
Packit 8681c6
                else {
Packit 8681c6
			$prime1len = @prime1;
Packit 8681c6
                        last;
Packit 8681c6
                }
Packit 8681c6
        }
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# parse prime 2
Packit 8681c6
sub parse_prime2(){
Packit 8681c6
        @prime2 = ();
Packit 8681c6
        while (<$file>){
Packit 8681c6
                if ($_ =~ m{\S+}){
Packit 8681c6
                        for (my $n = 0; ($n + 2) < length($_); $n+=3) {
Packit 8681c6
                                $string = "0x".substr($_, $n, 2);
Packit 8681c6
                                push(@prime2, $string);
Packit 8681c6
                        }
Packit 8681c6
                }
Packit 8681c6
                else {
Packit 8681c6
			$prime2len = @prime2;
Packit 8681c6
                        last;
Packit 8681c6
                }
Packit 8681c6
        }
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# parse exponent 1
Packit 8681c6
sub parse_exp1(){
Packit 8681c6
        @exp1 = ();
Packit 8681c6
        while (<$file>){
Packit 8681c6
                if ($_ =~ m{\S+}){
Packit 8681c6
                        for (my $n = 0; ($n + 2) < length($_); $n+=3) {
Packit 8681c6
                                $string = "0x".substr($_, $n, 2);
Packit 8681c6
                                push(@exp1, $string);
Packit 8681c6
                        }
Packit 8681c6
                }
Packit 8681c6
                else {
Packit 8681c6
			$exp1len = @exp1;
Packit 8681c6
                        last;
Packit 8681c6
                }
Packit 8681c6
        }
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# parse exponent 2
Packit 8681c6
sub parse_exp2(){
Packit 8681c6
        @exp2 = ();
Packit 8681c6
        while (<$file>){
Packit 8681c6
                if ($_ =~ m{\S+}){
Packit 8681c6
                        for (my $n = 0; ($n + 2) < length($_); $n+=3) {
Packit 8681c6
                                $string = "0x".substr($_, $n, 2);
Packit 8681c6
                                push(@exp2, $string);
Packit 8681c6
                        }
Packit 8681c6
                }
Packit 8681c6
                else {
Packit 8681c6
			$exp2len = @exp2;
Packit 8681c6
                        last;
Packit 8681c6
                }
Packit 8681c6
        }
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# parse coefficient
Packit 8681c6
sub parse_coef(){
Packit 8681c6
        @coef = ();
Packit 8681c6
        while (<$file>){
Packit 8681c6
                if ($_ =~ m{\S+}){
Packit 8681c6
                        for (my $n = 0; ($n + 2) < length($_); $n+=3) {
Packit 8681c6
                                $string = "0x".substr($_, $n, 2);
Packit 8681c6
                                push(@coef, $string);
Packit 8681c6
                        }
Packit 8681c6
                }
Packit 8681c6
                else {
Packit 8681c6
			$coeflen = @coef;
Packit 8681c6
                        last;
Packit 8681c6
                }
Packit 8681c6
        }
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# parse message
Packit 8681c6
sub parse_msg(){
Packit 8681c6
        @msg = ();
Packit 8681c6
        while (<$file>){
Packit 8681c6
                if ($_ =~ m{\S+}){
Packit 8681c6
                        for (my $n = 0; ($n + 2) < length($_); $n+=3) {
Packit 8681c6
                                $string = "0x".substr($_, $n, 2);
Packit 8681c6
                                push(@msg, $string);
Packit 8681c6
                        }
Packit 8681c6
                }
Packit 8681c6
                else {
Packit 8681c6
			$msglen = @msg;
Packit 8681c6
                        last;
Packit 8681c6
                }
Packit 8681c6
        }
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# parse signature
Packit 8681c6
sub parse_sig(){
Packit 8681c6
        @sig = ();
Packit 8681c6
        while (<$file>){
Packit 8681c6
                if ($_ =~ m{\S+}){
Packit 8681c6
                        for (my $n = 0; ($n + 2) < length($_); $n+=3) {
Packit 8681c6
                                $string = "0x".substr($_, $n, 2);
Packit 8681c6
                                push(@sig, $string);
Packit 8681c6
                        }
Packit 8681c6
                }
Packit 8681c6
                else {
Packit 8681c6
			$siglen = @sig;
Packit 8681c6
                        last;
Packit 8681c6
                }
Packit 8681c6
        }
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# prints test vector
Packit 8681c6
sub print_ele(){
Packit 8681c6
	print $begin_ele;
Packit 8681c6
	print "\t/\/\ $count\n"; # new
Packit 8681c6
        print_mod();
Packit 8681c6
        print_pubexp();
Packit 8681c6
        print_privexp();
Packit 8681c6
        print_prime1();
Packit 8681c6
        print_prime2();
Packit 8681c6
        print_exp1();
Packit 8681c6
        print_exp2();
Packit 8681c6
        print_coef();
Packit 8681c6
        print_msg();
Packit 8681c6
	print_sig();
Packit 8681c6
	print $end_ele;
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# prints modulus
Packit 8681c6
sub print_mod(){
Packit 8681c6
	print $begin_mod;
Packit 8681c6
	print "\t      { ";
Packit 8681c6
	for (my $n = 0; $n < $modlen; $n++){
Packit 8681c6
		print $mod[$n];
Packit 8681c6
		if ($n + 1 < $modlen){
Packit 8681c6
			print ",";
Packit 8681c6
		}
Packit 8681c6
		if (($n + 1 < $modlen) && !(($n + 1) % 8)){
Packit 8681c6
			print "\n\t\t\t\t";
Packit 8681c6
		}
Packit 8681c6
	}
Packit 8681c6
	print " },\n";
Packit 8681c6
	print $begin_modlen;
Packit 8681c6
	print $modlen;
Packit 8681c6
	print ",\n";
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# prints public exponent
Packit 8681c6
sub print_pubexp(){
Packit 8681c6
	print $begin_pubexp;
Packit 8681c6
	print "   { ";
Packit 8681c6
	for (my $n = 0; $n < $pubexplen; $n++){
Packit 8681c6
		print $pubexp[$n];
Packit 8681c6
		if ($n + 1 < $pubexplen){
Packit 8681c6
			print ",";
Packit 8681c6
		}
Packit 8681c6
	}
Packit 8681c6
	print " },\n";
Packit 8681c6
	print $begin_pubexplen;
Packit 8681c6
	print $pubexplen;
Packit 8681c6
	print ",\n";
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# prints private exponent
Packit 8681c6
sub print_privexp(){
Packit 8681c6
        print $begin_privexp;
Packit 8681c6
        print "  { ";
Packit 8681c6
        for (my $n = 0; $n < $privexplen; $n++){
Packit 8681c6
                print $privexp[$n];
Packit 8681c6
		if ($n + 1 < $privexplen){
Packit 8681c6
			print ",";
Packit 8681c6
		}
Packit 8681c6
		if (($n + 1 < $privexplen) && !(($n + 1) % 8)){
Packit 8681c6
                        print "\n\t\t\t\t";
Packit 8681c6
                }
Packit 8681c6
Packit 8681c6
        }
Packit 8681c6
        print " },\n";
Packit 8681c6
	print $begin_privexplen;
Packit 8681c6
	print $privexplen;
Packit 8681c6
	print ",\n";
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# prints prime 1
Packit 8681c6
sub print_prime1(){
Packit 8681c6
        print $begin_prime1;
Packit 8681c6
        print "    { ";
Packit 8681c6
        for (my $n = 0; $n < $prime1len; $n++){
Packit 8681c6
                print $prime1[$n];
Packit 8681c6
                if ($n + 1 < $prime1len){
Packit 8681c6
			print ",";
Packit 8681c6
		}
Packit 8681c6
		if (($n + 1 < $prime1len) && !(($n + 1) % 8)){
Packit 8681c6
                        print "\n\t\t\t\t";
Packit 8681c6
                }
Packit 8681c6
Packit 8681c6
        }
Packit 8681c6
        print " },\n";
Packit 8681c6
	print $begin_prime1len;
Packit 8681c6
	print $prime1len;
Packit 8681c6
	print ",\n";
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# prints prime 2
Packit 8681c6
sub print_prime2(){
Packit 8681c6
        print $begin_prime2;
Packit 8681c6
        print "    { ";
Packit 8681c6
        for (my $n = 0; $n < $prime2len; $n++){
Packit 8681c6
                print $prime2[$n];
Packit 8681c6
		if ($n + 1 < $prime2len){
Packit 8681c6
			print ",";
Packit 8681c6
		}
Packit 8681c6
		if (($n + 1 < $prime2len) && !(($n + 1) % 8)){
Packit 8681c6
                        print "\n\t\t\t\t";
Packit 8681c6
                }
Packit 8681c6
Packit 8681c6
        }
Packit 8681c6
        print " },\n";
Packit 8681c6
	print $begin_prime2len;
Packit 8681c6
	print $prime2len;
Packit 8681c6
	print ",\n";
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# prints exponent 1
Packit 8681c6
sub print_exp1(){
Packit 8681c6
        print $begin_exp1;
Packit 8681c6
        print "      { ";
Packit 8681c6
        for (my $n = 0; $n < $exp1len; $n++){
Packit 8681c6
                print $exp1[$n];
Packit 8681c6
                if ($n + 1 < $exp1len){
Packit 8681c6
			print ",";
Packit 8681c6
		}
Packit 8681c6
		if (($n + 1 < $exp1len) && !(($n + 1) % 8)){
Packit 8681c6
                        print "\n\t\t\t\t";
Packit 8681c6
                }
Packit 8681c6
Packit 8681c6
        }
Packit 8681c6
        print " },\n";
Packit 8681c6
	print $begin_exp1len;
Packit 8681c6
	print $exp1len;
Packit 8681c6
	print ",\n";
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# prints exponent 2
Packit 8681c6
sub print_exp2(){
Packit 8681c6
        print $begin_exp2;
Packit 8681c6
        print "      { ";
Packit 8681c6
        for (my $n = 0; $n < $exp2len; $n++){
Packit 8681c6
                print $exp2[$n];
Packit 8681c6
                if ($n + 1 < $exp2len){
Packit 8681c6
			print ",";
Packit 8681c6
		}
Packit 8681c6
		if (($n + 1 < $exp2len) && !(($n + 1) % 8)){
Packit 8681c6
                        print "\n\t\t\t\t";
Packit 8681c6
                }
Packit 8681c6
Packit 8681c6
        }
Packit 8681c6
        print " },\n";
Packit 8681c6
	print $begin_exp2len;
Packit 8681c6
	print $exp2len;
Packit 8681c6
	print ",\n";
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# prints coefficient
Packit 8681c6
sub print_coef(){
Packit 8681c6
        print $begin_coef;
Packit 8681c6
        print "      { ";
Packit 8681c6
        for (my $n = 0; $n < $coeflen; $n++){
Packit 8681c6
                print $coef[$n];
Packit 8681c6
                if ($n + 1 < $coeflen){
Packit 8681c6
			print ",";
Packit 8681c6
		}
Packit 8681c6
		if (($n + 1 < $coeflen) && !(($n + 1) % 8)){
Packit 8681c6
                        print "\n\t\t\t\t";
Packit 8681c6
                }
Packit 8681c6
Packit 8681c6
        }
Packit 8681c6
        print " },\n";
Packit 8681c6
	print $begin_coeflen;
Packit 8681c6
	print $coeflen;
Packit 8681c6
	print ",\n";
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# prints message
Packit 8681c6
sub print_msg(){
Packit 8681c6
        print $begin_msg;
Packit 8681c6
        print "       { ";
Packit 8681c6
        for (my $n = 0; $n < $msglen; $n++){
Packit 8681c6
                print $msg[$n];
Packit 8681c6
                if ($n + 1 < $msglen){
Packit 8681c6
			print ",";
Packit 8681c6
		}
Packit 8681c6
		if (($n + 1 < $msglen) && !(($n + 1) % 8)){
Packit 8681c6
                        print "\n\t\t\t\t";
Packit 8681c6
                }
Packit 8681c6
Packit 8681c6
        }
Packit 8681c6
        print " },\n";
Packit 8681c6
	print $begin_msglen;
Packit 8681c6
	print $msglen;
Packit 8681c6
	print ",\n";
Packit 8681c6
}
Packit 8681c6
Packit 8681c6
# prints signature
Packit 8681c6
sub print_sig(){
Packit 8681c6
        print $begin_sig;
Packit 8681c6
        print "       { ";
Packit 8681c6
        for (my $n = 0; $n < $siglen; $n++){
Packit 8681c6
                print $sig[$n];
Packit 8681c6
                if ($n + 1 < $siglen){
Packit 8681c6
			print ",";
Packit 8681c6
		}
Packit 8681c6
		if (($n + 1 < $siglen) && !(($n + 1) % 8)){
Packit 8681c6
                        print "\n\t\t\t\t";
Packit 8681c6
                }
Packit 8681c6
Packit 8681c6
        }
Packit 8681c6
        print " },\n";
Packit 8681c6
	print $begin_siglen;
Packit 8681c6
	print $siglen;
Packit 8681c6
	print ",\n";
Packit 8681c6
}