summaryrefslogtreecommitdiff
path: root/nss/cmd/fipstest/fipstest.c
diff options
context:
space:
mode:
Diffstat (limited to 'nss/cmd/fipstest/fipstest.c')
-rw-r--r--nss/cmd/fipstest/fipstest.c2805
1 files changed, 1421 insertions, 1384 deletions
diff --git a/nss/cmd/fipstest/fipstest.c b/nss/cmd/fipstest/fipstest.c
index 6a2cf2c..c4c700c 100644
--- a/nss/cmd/fipstest/fipstest.c
+++ b/nss/cmd/fipstest/fipstest.c
@@ -18,20 +18,18 @@
#include "lowkeyi.h"
#include "softoken.h"
#include "pkcs11t.h"
-#define __PASTE(x,y) x##y
+#define __PASTE(x, y) x##y
#undef CK_PKCS11_FUNCTION_INFO
#undef CK_NEED_ARG_LIST
#define CK_EXTERN extern
#define CK_PKCS11_FUNCTION_INFO(func) \
- CK_RV __PASTE(NS,func)
-#define CK_NEED_ARG_LIST 1
+ CK_RV __PASTE(NS, func)
+#define CK_NEED_ARG_LIST 1
#include "pkcs11f.h"
#undef CK_PKCS11_FUNCTION_INFO
#undef CK_NEED_ARG_LIST
#undef __PASTE
-#define SSL3_RANDOM_LENGTH 32
-
-
+#define SSL3_RANDOM_LENGTH 32
#if 0
#include "../../lib/freebl/mpi/mpi.h"
@@ -48,11 +46,11 @@ EC_CopyParams(PLArenaPool *arena, ECParams *dstParams,
#define ENCRYPT 1
#define DECRYPT 0
#define BYTE unsigned char
-#define DEFAULT_RSA_PUBLIC_EXPONENT 0x10001
-#define RSA_MAX_TEST_MODULUS_BITS 4096
-#define RSA_MAX_TEST_MODULUS_BYTES RSA_MAX_TEST_MODULUS_BITS/8
-#define RSA_MAX_TEST_EXPONENT_BYTES 8
-#define PQG_TEST_SEED_BYTES 20
+#define DEFAULT_RSA_PUBLIC_EXPONENT 0x10001
+#define RSA_MAX_TEST_MODULUS_BITS 4096
+#define RSA_MAX_TEST_MODULUS_BYTES RSA_MAX_TEST_MODULUS_BITS / 8
+#define RSA_MAX_TEST_EXPONENT_BYTES 8
+#define PQG_TEST_SEED_BYTES 20
SECStatus
hex_to_byteval(const char *c2, unsigned char *byteval)
@@ -60,16 +58,16 @@ hex_to_byteval(const char *c2, unsigned char *byteval)
int i;
unsigned char offset;
*byteval = 0;
- for (i=0; i<2; i++) {
+ for (i = 0; i < 2; i++) {
if (c2[i] >= '0' && c2[i] <= '9') {
offset = c2[i] - '0';
- *byteval |= offset << 4*(1-i);
+ *byteval |= offset << 4 * (1 - i);
} else if (c2[i] >= 'a' && c2[i] <= 'f') {
offset = c2[i] - 'a';
- *byteval |= (offset + 10) << 4*(1-i);
+ *byteval |= (offset + 10) << 4 * (1 - i);
} else if (c2[i] >= 'A' && c2[i] <= 'F') {
offset = c2[i] - 'A';
- *byteval |= (offset + 10) << 4*(1-i);
+ *byteval |= (offset + 10) << 4 * (1 - i);
} else {
return SECFailure;
}
@@ -82,8 +80,8 @@ byteval_to_hex(unsigned char byteval, char *c2, char a)
{
int i;
unsigned char offset;
- for (i=0; i<2; i++) {
- offset = (byteval >> 4*(1-i)) & 0x0f;
+ for (i = 0; i < 2; i++) {
+ offset = (byteval >> 4 * (1 - i)) & 0x0f;
if (offset < 10) {
c2[i] = '0' + offset;
} else {
@@ -97,20 +95,20 @@ void
to_hex_str(char *str, const unsigned char *buf, unsigned int len)
{
unsigned int i;
- for (i=0; i<len; i++) {
- byteval_to_hex(buf[i], &str[2*i], 'a');
+ for (i = 0; i < len; i++) {
+ byteval_to_hex(buf[i], &str[2 * i], 'a');
}
- str[2*len] = '\0';
+ str[2 * len] = '\0';
}
void
to_hex_str_cap(char *str, const unsigned char *buf, unsigned int len)
{
unsigned int i;
- for (i=0; i<len; i++) {
- byteval_to_hex(buf[i], &str[2*i], 'A');
+ for (i = 0; i < len; i++) {
+ byteval_to_hex(buf[i], &str[2 * i], 'A');
}
- str[2*len] = '\0';
+ str[2 * len] = '\0';
}
/*
@@ -121,9 +119,9 @@ to_hex_str_cap(char *str, const unsigned char *buf, unsigned int len)
PRBool
from_hex_str(unsigned char *buf, unsigned int len, const char *str)
{
- unsigned int nxdigit; /* number of hex digits in str */
- unsigned int i; /* index into buf */
- unsigned int j; /* index into str */
+ unsigned int nxdigit; /* number of hex digits in str */
+ unsigned int i; /* index into buf */
+ unsigned int j; /* index into str */
/* count the hex digits */
nxdigit = 0;
@@ -133,24 +131,24 @@ from_hex_str(unsigned char *buf, unsigned int len, const char *str)
if (nxdigit == 0) {
return PR_FALSE;
}
- if (nxdigit > 2*len) {
+ if (nxdigit > 2 * len) {
/*
* The input hex string is too long, but we allow it if the
* extra digits are leading 0's.
*/
- for (j = 0; j < nxdigit-2*len; j++) {
+ for (j = 0; j < nxdigit - 2 * len; j++) {
if (str[j] != '0') {
return PR_FALSE;
}
}
/* skip leading 0's */
- str += nxdigit-2*len;
- nxdigit = 2*len;
+ str += nxdigit - 2 * len;
+ nxdigit = 2 * len;
}
- for (i=0, j=0; i< len; i++) {
- if (2*i < 2*len-nxdigit) {
+ for (i = 0, j = 0; i < len; i++) {
+ if (2 * i < 2 * len - nxdigit) {
/* Handle a short input as if we padded it with leading 0's. */
- if (2*i+1 < 2*len-nxdigit) {
+ if (2 * i + 1 < 2 * len - nxdigit) {
buf[i] = 0;
} else {
char tmp[2];
@@ -170,14 +168,14 @@ from_hex_str(unsigned char *buf, unsigned int len, const char *str)
SECStatus
tdea_encrypt_buf(
int mode,
- const unsigned char *key,
+ const unsigned char *key,
const unsigned char *iv,
unsigned char *output, unsigned int *outputlen, unsigned int maxoutputlen,
const unsigned char *input, unsigned int inputlen)
{
SECStatus rv = SECFailure;
DESContext *cx;
- unsigned char doublecheck[8*20]; /* 1 to 20 blocks */
+ unsigned char doublecheck[8 * 20]; /* 1 to 20 blocks */
unsigned int doublechecklen = 0;
cx = DES_CreateContext(key, iv, mode, PR_TRUE);
@@ -203,7 +201,7 @@ tdea_encrypt_buf(
goto loser;
}
rv = DES_Decrypt(cx, doublecheck, &doublechecklen, sizeof doublecheck,
- output, *outputlen);
+ output, *outputlen);
if (rv != SECSuccess) {
goto loser;
}
@@ -227,14 +225,14 @@ loser:
SECStatus
tdea_decrypt_buf(
int mode,
- const unsigned char *key,
+ const unsigned char *key,
const unsigned char *iv,
unsigned char *output, unsigned int *outputlen, unsigned int maxoutputlen,
const unsigned char *input, unsigned int inputlen)
{
SECStatus rv = SECFailure;
DESContext *cx;
- unsigned char doublecheck[8*20]; /* 1 to 20 blocks */
+ unsigned char doublecheck[8 * 20]; /* 1 to 20 blocks */
unsigned int doublechecklen = 0;
cx = DES_CreateContext(key, iv, mode, PR_FALSE);
@@ -242,7 +240,7 @@ tdea_decrypt_buf(
goto loser;
}
rv = DES_Decrypt(cx, output, outputlen, maxoutputlen,
- input, inputlen);
+ input, inputlen);
if (rv != SECSuccess) {
goto loser;
}
@@ -261,7 +259,7 @@ tdea_decrypt_buf(
goto loser;
}
rv = DES_Encrypt(cx, doublecheck, &doublechecklen, sizeof doublecheck,
- output, *outputlen);
+ output, *outputlen);
if (rv != SECSuccess) {
goto loser;
}
@@ -296,21 +294,21 @@ loser:
void
tdea_kat_mmt(char *reqfn)
{
- char buf[180]; /* holds one line from the input REQUEST file.
+ char buf[180]; /* holds one line from the input REQUEST file.
* needs to be large enough to hold the longest
* line "CIPHERTEXT = <180 hex digits>\n".
*/
- FILE *req; /* input stream from the REQUEST file */
- FILE *resp; /* output stream to the RESPONSE file */
+ FILE *req; /* input stream from the REQUEST file */
+ FILE *resp; /* output stream to the RESPONSE file */
int i, j;
- int mode = NSS_DES_EDE3; /* NSS_DES_EDE3 (ECB) or NSS_DES_EDE3_CBC */
- int crypt = DECRYPT; /* 1 means encrypt, 0 means decrypt */
- unsigned char key[24]; /* TDEA 3 key bundle */
+ int mode = NSS_DES_EDE3; /* NSS_DES_EDE3 (ECB) or NSS_DES_EDE3_CBC */
+ int crypt = DECRYPT; /* 1 means encrypt, 0 means decrypt */
+ unsigned char key[24]; /* TDEA 3 key bundle */
unsigned int numKeys = 0;
- unsigned char iv[8]; /* for all modes except ECB */
- unsigned char plaintext[8*20]; /* 1 to 20 blocks */
+ unsigned char iv[8]; /* for all modes except ECB */
+ unsigned char plaintext[8 * 20]; /* 1 to 20 blocks */
unsigned int plaintextlen;
- unsigned char ciphertext[8*20]; /* 1 to 20 blocks */
+ unsigned char ciphertext[8 * 20]; /* 1 to 20 blocks */
unsigned int ciphertextlen;
SECStatus rv;
@@ -362,10 +360,10 @@ tdea_kat_mmt(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &key[j]);
- key[j+8] = key[j];
- key[j+16] = key[j];
+ key[j + 8] = key[j];
+ key[j + 16] = key[j];
}
fputs(buf, resp);
continue;
@@ -377,7 +375,7 @@ tdea_kat_mmt(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &key[j]);
}
fputs(buf, resp);
@@ -389,7 +387,7 @@ tdea_kat_mmt(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=8; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 8; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &key[j]);
}
fputs(buf, resp);
@@ -401,7 +399,7 @@ tdea_kat_mmt(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=16; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 16; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &key[j]);
}
fputs(buf, resp);
@@ -416,7 +414,7 @@ tdea_kat_mmt(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j<sizeof iv; i+=2,j++) {
+ for (j = 0; j < sizeof iv; i += 2, j++) {
hex_to_byteval(&buf[i], &iv[j]);
}
fputs(buf, resp);
@@ -433,18 +431,18 @@ tdea_kat_mmt(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &plaintext[j]);
}
plaintextlen = j;
rv = tdea_encrypt_buf(mode, key,
- (mode == NSS_DES_EDE3) ? NULL : iv,
- ciphertext, &ciphertextlen, sizeof ciphertext,
- plaintext, plaintextlen);
+ (mode == NSS_DES_EDE3) ? NULL : iv,
+ ciphertext, &ciphertextlen, sizeof ciphertext,
+ plaintext, plaintextlen);
if (rv != SECSuccess) {
goto loser;
}
-
+
fputs(buf, resp);
fputs("CIPHERTEXT = ", resp);
to_hex_str(buf, ciphertext, ciphertextlen);
@@ -458,24 +456,24 @@ tdea_kat_mmt(char *reqfn)
if (crypt != DECRYPT) {
goto loser;
}
-
+
i = 10;
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &ciphertext[j]);
}
ciphertextlen = j;
-
+
rv = tdea_decrypt_buf(mode, key,
- (mode == NSS_DES_EDE3) ? NULL : iv,
- plaintext, &plaintextlen, sizeof plaintext,
- ciphertext, ciphertextlen);
+ (mode == NSS_DES_EDE3) ? NULL : iv,
+ plaintext, &plaintextlen, sizeof plaintext,
+ ciphertext, ciphertextlen);
if (rv != SECSuccess) {
goto loser;
}
-
+
fputs(buf, resp);
fputs("PLAINTEXT = ", resp);
to_hex_str(buf, plaintext, plaintextlen);
@@ -492,7 +490,8 @@ loser:
/*
* Set the parity bit for the given byte
*/
-BYTE odd_parity( BYTE in)
+BYTE
+odd_parity(BYTE in)
{
BYTE out = in;
in ^= in >> 4;
@@ -502,50 +501,50 @@ BYTE odd_parity( BYTE in)
}
/*
- * Generate Keys [i+1] from Key[i], PT/CT[j-2], PT/CT[j-1], and PT/CT[j]
+ * Generate Keys [i+1] from Key[i], PT/CT[j-2], PT/CT[j-1], and PT/CT[j]
* for TDEA Monte Carlo Test (MCT) in ECB and CBC modes.
*/
void
tdea_mct_next_keys(unsigned char *key,
- const unsigned char *text_2, const unsigned char *text_1,
- const unsigned char *text, unsigned int numKeys)
+ const unsigned char *text_2, const unsigned char *text_1,
+ const unsigned char *text, unsigned int numKeys)
{
int k;
/* key1[i+1] = key1[i] xor PT/CT[j] */
- for (k=0; k<8; k++) {
+ for (k = 0; k < 8; k++) {
key[k] ^= text[k];
}
/* key2 */
- if (numKeys == 2 || numKeys == 3) {
+ if (numKeys == 2 || numKeys == 3) {
/* key2 independent */
- for (k=8; k<16; k++) {
+ for (k = 8; k < 16; k++) {
/* key2[i+1] = KEY2[i] xor PT/CT[j-1] */
- key[k] ^= text_1[k-8];
+ key[k] ^= text_1[k - 8];
}
} else {
/* key2 == key 1 */
- for (k=8; k<16; k++) {
+ for (k = 8; k < 16; k++) {
/* key2[i+1] = KEY2[i] xor PT/CT[j] */
- key[k] = key[k-8];
+ key[k] = key[k - 8];
}
}
/* key3 */
if (numKeys == 1 || numKeys == 2) {
/* key3 == key 1 */
- for (k=16; k<24; k++) {
+ for (k = 16; k < 24; k++) {
/* key3[i+1] = KEY3[i] xor PT/CT[j] */
- key[k] = key[k-16];
+ key[k] = key[k - 16];
}
} else {
- /* key3 independent */
- for (k=16; k<24; k++) {
+ /* key3 independent */
+ for (k = 16; k < 24; k++) {
/* key3[i+1] = KEY3[i] xor PT/CT[j-2] */
- key[k] ^= text_2[k-16];
+ key[k] ^= text_2[k - 16];
}
}
- /* set the parity bits */
- for (k=0; k<24; k++) {
+ /* set the parity bits */
+ for (k = 0; k < 24; k++) {
key[k] = odd_parity(key[k]);
}
}
@@ -556,23 +555,23 @@ tdea_mct_next_keys(unsigned char *key,
* mode = NSS_DES_EDE3 or NSS_DES_EDE3_CBC
* crypt = ENCRYPT || DECRYPT
* inputtext = plaintext or Cyphertext depending on the value of crypt
- * inputlength is expected to be size 8 bytes
+ * inputlength is expected to be size 8 bytes
* iv = needs to be set for NSS_DES_EDE3_CBC mode
- * resp = is the output response file.
+ * resp = is the output response file.
*/
- void
-tdea_mct_test(int mode, unsigned char* key, unsigned int numKeys,
- unsigned int crypt, unsigned char* inputtext,
- unsigned int inputlength, unsigned char* iv, FILE *resp) {
+void
+tdea_mct_test(int mode, unsigned char *key, unsigned int numKeys,
+ unsigned int crypt, unsigned char *inputtext,
+ unsigned int inputlength, unsigned char *iv, FILE *resp)
+{
int i, j;
- unsigned char outputtext_1[8]; /* PT/CT[j-1] */
- unsigned char outputtext_2[8]; /* PT/CT[j-2] */
- char buf[80]; /* holds one line from the input REQUEST file. */
+ unsigned char outputtext_1[8]; /* PT/CT[j-1] */
+ unsigned char outputtext_2[8]; /* PT/CT[j-2] */
+ char buf[80]; /* holds one line from the input REQUEST file. */
unsigned int outputlen;
unsigned char outputtext[8];
-
-
+
SECStatus rv;
if (mode == NSS_DES_EDE3 && iv != NULL) {
@@ -584,8 +583,8 @@ tdea_mct_test(int mode, unsigned char* key, unsigned int numKeys,
}
/* loop 400 times */
- for (i=0; i<400; i++) {
- /* if i == 0 CV[0] = IV not necessary */
+ for (i = 0; i < 400; i++) {
+ /* if i == 0 CV[0] = IV not necessary */
/* record the count and key values and plainText */
sprintf(buf, "COUNT = %d\n", i);
fputs(buf, resp);
@@ -624,21 +623,27 @@ tdea_mct_test(int mode, unsigned char* key, unsigned int numKeys,
fputc('\n', resp);
/* loop 10,000 times */
- for (j=0; j<10000; j++) {
+ for (j = 0; j < 10000; j++) {
outputlen = 0;
if (crypt == ENCRYPT) {
/* inputtext == ciphertext outputtext == plaintext*/
rv = tdea_encrypt_buf(mode, key,
- (mode == NSS_DES_EDE3) ? NULL : iv,
- outputtext, &outputlen, 8,
- inputtext, 8);
+ (mode ==
+ NSS_DES_EDE3)
+ ? NULL
+ : iv,
+ outputtext, &outputlen, 8,
+ inputtext, 8);
} else {
/* inputtext == plaintext outputtext == ciphertext */
rv = tdea_decrypt_buf(mode, key,
- (mode == NSS_DES_EDE3) ? NULL : iv,
- outputtext, &outputlen, 8,
- inputtext, 8);
+ (mode ==
+ NSS_DES_EDE3)
+ ? NULL
+ : iv,
+ outputtext, &outputlen, 8,
+ inputtext, 8);
}
if (rv != SECSuccess) {
@@ -675,12 +680,13 @@ tdea_mct_test(int mode, unsigned char* key, unsigned int numKeys,
}
/* Save PT/CT[j-2] and PT/CT[j-1] */
- if (j==9997) memcpy(outputtext_2, outputtext, 8);
- if (j==9998) memcpy(outputtext_1, outputtext, 8);
+ if (j == 9997)
+ memcpy(outputtext_2, outputtext, 8);
+ if (j == 9998)
+ memcpy(outputtext_1, outputtext, 8);
/* done at the end of the for(j) loop */
}
-
if (crypt == ENCRYPT) {
/* Output CT[j] */
fputs("CIPHERTEXT = ", resp);
@@ -692,10 +698,10 @@ tdea_mct_test(int mode, unsigned char* key, unsigned int numKeys,
fputs(buf, resp);
fputc('\n', resp);
- /* Key[i+1] = Key[i] xor ... outputtext_2 == PT/CT[j-2]
- * outputtext_1 == PT/CT[j-1] outputtext == PT/CT[j]
+ /* Key[i+1] = Key[i] xor ... outputtext_2 == PT/CT[j-2]
+ * outputtext_1 == PT/CT[j-1] outputtext == PT/CT[j]
*/
- tdea_mct_next_keys(key, outputtext_2,
+ tdea_mct_next_keys(key, outputtext_2,
outputtext_1, outputtext, numKeys);
if (mode == NSS_DES_EDE3_CBC) {
@@ -722,7 +728,7 @@ loser:
/*
* Perform the TDEA Monte Carlo Test (MCT) in ECB/CBC modes.
- * by gathering the input from the request file, and then
+ * by gathering the input from the request file, and then
* calling tdea_mct_test.
*
* reqfn is the pathname of the input REQUEST file.
@@ -733,14 +739,14 @@ void
tdea_mct(int mode, char *reqfn)
{
int i, j;
- char buf[80]; /* holds one line from the input REQUEST file. */
- FILE *req; /* input stream from the REQUEST file */
- FILE *resp; /* output stream to the RESPONSE file */
- unsigned int crypt = 0; /* 1 means encrypt, 0 means decrypt */
- unsigned char key[24]; /* TDEA 3 key bundle */
+ char buf[80]; /* holds one line from the input REQUEST file. */
+ FILE *req; /* input stream from the REQUEST file */
+ FILE *resp; /* output stream to the RESPONSE file */
+ unsigned int crypt = 0; /* 1 means encrypt, 0 means decrypt */
+ unsigned char key[24]; /* TDEA 3 key bundle */
unsigned int numKeys = 0;
- unsigned char plaintext[8]; /* PT[j] */
- unsigned char ciphertext[8]; /* CT[j] */
+ unsigned char plaintext[8]; /* PT[j] */
+ unsigned char ciphertext[8]; /* CT[j] */
unsigned char iv[8];
/* zeroize the variables for the test with this data set */
@@ -763,9 +769,9 @@ tdea_mct(int mode, char *reqfn)
crypt = ENCRYPT;
} else {
crypt = DECRYPT;
- }
- fputs(buf, resp);
- continue;
+ }
+ fputs(buf, resp);
+ continue;
}
/* NumKeys */
if (strncmp(&buf[0], "NumKeys", 7) == 0) {
@@ -782,7 +788,7 @@ tdea_mct(int mode, char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &key[j]);
}
continue;
@@ -793,7 +799,7 @@ tdea_mct(int mode, char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=8; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 8; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &key[j]);
}
continue;
@@ -804,7 +810,7 @@ tdea_mct(int mode, char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=16; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 16; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &key[j]);
}
continue;
@@ -816,14 +822,14 @@ tdea_mct(int mode, char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j<sizeof iv; i+=2,j++) {
+ for (j = 0; j < sizeof iv; i += 2, j++) {
hex_to_byteval(&buf[i], &iv[j]);
}
continue;
}
- /* PLAINTEXT = ... */
- if (strncmp(buf, "PLAINTEXT", 9) == 0) {
+ /* PLAINTEXT = ... */
+ if (strncmp(buf, "PLAINTEXT", 9) == 0) {
/* sanity check */
if (crypt != ENCRYPT) {
@@ -834,12 +840,12 @@ tdea_mct(int mode, char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j<sizeof plaintext; i+=2,j++) {
+ for (j = 0; j < sizeof plaintext; i += 2, j++) {
hex_to_byteval(&buf[i], &plaintext[j]);
- }
+ }
/* do the Monte Carlo test */
- if (mode==NSS_DES_EDE3) {
+ if (mode == NSS_DES_EDE3) {
tdea_mct_test(NSS_DES_EDE3, key, numKeys, crypt, plaintext, sizeof plaintext, NULL, resp);
} else {
tdea_mct_test(NSS_DES_EDE3_CBC, key, numKeys, crypt, plaintext, sizeof plaintext, iv, resp);
@@ -857,15 +863,15 @@ tdea_mct(int mode, char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &ciphertext[j]);
}
-
+
/* do the Monte Carlo test */
- if (mode==NSS_DES_EDE3) {
- tdea_mct_test(NSS_DES_EDE3, key, numKeys, crypt, ciphertext, sizeof ciphertext, NULL, resp);
+ if (mode == NSS_DES_EDE3) {
+ tdea_mct_test(NSS_DES_EDE3, key, numKeys, crypt, ciphertext, sizeof ciphertext, NULL, resp);
} else {
- tdea_mct_test(NSS_DES_EDE3_CBC, key, numKeys, crypt, ciphertext, sizeof ciphertext, iv, resp);
+ tdea_mct_test(NSS_DES_EDE3_CBC, key, numKeys, crypt, ciphertext, sizeof ciphertext, iv, resp);
}
continue;
}
@@ -875,7 +881,6 @@ loser:
fclose(req);
}
-
SECStatus
aes_encrypt_buf(
int mode,
@@ -886,7 +891,7 @@ aes_encrypt_buf(
{
SECStatus rv = SECFailure;
AESContext *cx;
- unsigned char doublecheck[10*16]; /* 1 to 10 blocks */
+ unsigned char doublecheck[10 * 16]; /* 1 to 10 blocks */
unsigned int doublechecklen = 0;
cx = AES_CreateContext(key, iv, mode, PR_TRUE, keysize, 16);
@@ -912,7 +917,7 @@ aes_encrypt_buf(
goto loser;
}
rv = AES_Decrypt(cx, doublecheck, &doublechecklen, sizeof doublecheck,
- output, *outputlen);
+ output, *outputlen);
if (rv != SECSuccess) {
goto loser;
}
@@ -943,7 +948,7 @@ aes_decrypt_buf(
{
SECStatus rv = SECFailure;
AESContext *cx;
- unsigned char doublecheck[10*16]; /* 1 to 10 blocks */
+ unsigned char doublecheck[10 * 16]; /* 1 to 10 blocks */
unsigned int doublechecklen = 0;
cx = AES_CreateContext(key, iv, mode, PR_FALSE, keysize, 16);
@@ -951,7 +956,7 @@ aes_decrypt_buf(
goto loser;
}
rv = AES_Decrypt(cx, output, outputlen, maxoutputlen,
- input, inputlen);
+ input, inputlen);
if (rv != SECSuccess) {
goto loser;
}
@@ -970,7 +975,7 @@ aes_decrypt_buf(
goto loser;
}
rv = AES_Encrypt(cx, doublecheck, &doublechecklen, sizeof doublecheck,
- output, *outputlen);
+ output, *outputlen);
if (rv != SECSuccess) {
goto loser;
}
@@ -1000,21 +1005,21 @@ loser:
void
aes_gcm(char *reqfn, int encrypt)
{
- char buf[512]; /* holds one line from the input REQUEST file.
+ char buf[512]; /* holds one line from the input REQUEST file.
* needs to be large enough to hold the longest
* line "CIPHERTEXT = <320 hex digits>\n".
*/
- FILE *aesreq; /* input stream from the REQUEST file */
- FILE *aesresp; /* output stream to the RESPONSE file */
+ FILE *aesreq; /* input stream from the REQUEST file */
+ FILE *aesresp; /* output stream to the RESPONSE file */
int i, j;
- unsigned char key[32]; /* 128, 192, or 256 bits */
+ unsigned char key[32]; /* 128, 192, or 256 bits */
unsigned int keysize = 0;
- unsigned char iv[128]; /* handle large gcm IV's */
- unsigned char plaintext[10*16]; /* 1 to 10 blocks */
+ unsigned char iv[128]; /* handle large gcm IV's */
+ unsigned char plaintext[10 * 16]; /* 1 to 10 blocks */
unsigned int plaintextlen;
- unsigned char ciphertext[11*16]; /* 1 to 10 blocks + tag */
+ unsigned char ciphertext[11 * 16]; /* 1 to 10 blocks + tag */
unsigned int ciphertextlen;
- unsigned char aad[11*16]; /* 1 to 10 blocks + tag */
+ unsigned char aad[11 * 16]; /* 1 to 10 blocks + tag */
unsigned int aadlen = 0;
unsigned int tagbits;
unsigned int taglen = 0;
@@ -1032,18 +1037,18 @@ aes_gcm(char *reqfn, int encrypt)
}
/* [ENCRYPT] or [DECRYPT] */
if (buf[0] == '[') {
- if (strncmp(buf, "[Taglen", 7) == 0) {
+ if (strncmp(buf, "[Taglen", 7) == 0) {
if (sscanf(buf, "[Taglen = %d]", &tagbits) != 1) {
goto loser;
}
- taglen = tagbits/8;
- }
- if (strncmp(buf, "[IVlen", 6) == 0) {
+ taglen = tagbits / 8;
+ }
+ if (strncmp(buf, "[IVlen", 6) == 0) {
if (sscanf(buf, "[IVlen = %d]", &ivlen) != 1) {
goto loser;
}
- ivlen=ivlen/8;
- }
+ ivlen = ivlen / 8;
+ }
fputs(buf, aesresp);
continue;
}
@@ -1066,7 +1071,7 @@ aes_gcm(char *reqfn, int encrypt)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &key[j]);
}
keysize = j;
@@ -1079,7 +1084,7 @@ aes_gcm(char *reqfn, int encrypt)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j<sizeof iv; i+=2,j++) {
+ for (j = 0; j < sizeof iv; i += 2, j++) {
hex_to_byteval(&buf[i], &iv[j]);
}
fputs(buf, aesresp);
@@ -1096,7 +1101,7 @@ aes_gcm(char *reqfn, int encrypt)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &plaintext[j]);
}
plaintextlen = j;
@@ -1114,7 +1119,7 @@ aes_gcm(char *reqfn, int encrypt)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &ciphertext[j]);
}
ciphertextlen = j;
@@ -1126,7 +1131,7 @@ aes_gcm(char *reqfn, int encrypt)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &aad[j]);
}
aadlen = j;
@@ -1144,25 +1149,25 @@ aes_gcm(char *reqfn, int encrypt)
params.ulAADLen = aadlen;
params.ulTagBits = tagbits;
rv = aes_encrypt_buf(NSS_AES_GCM, key, keysize,
- (unsigned char *)&params,
- ciphertext, &ciphertextlen, sizeof ciphertext,
- plaintext, plaintextlen);
+ (unsigned char *)&params,
+ ciphertext, &ciphertextlen, sizeof ciphertext,
+ plaintext, plaintextlen);
if (rv != SECSuccess) {
goto loser;
}
- if (encrypt == 2) {
+ if (encrypt == 2) {
fputs("IV = ", aesresp);
to_hex_str(buf, iv, ivlen);
fputs(buf, aesresp);
fputc('\n', aesresp);
- }
+ }
fputs("CT = ", aesresp);
- j = ciphertextlen-taglen;
+ j = ciphertextlen - taglen;
to_hex_str(buf, ciphertext, j);
fputs(buf, aesresp);
fputs("\nTag = ", aesresp);
- to_hex_str(buf, ciphertext+j, taglen);
+ to_hex_str(buf, ciphertext + j, taglen);
fputs(buf, aesresp);
fputc('\n', aesresp);
}
@@ -1178,8 +1183,8 @@ aes_gcm(char *reqfn, int encrypt)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
- hex_to_byteval(&buf[i], &ciphertext[j+ciphertextlen]);
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
+ hex_to_byteval(&buf[i], &ciphertext[j + ciphertextlen]);
}
ciphertextlen += j;
params.pIv = iv;
@@ -1188,12 +1193,12 @@ aes_gcm(char *reqfn, int encrypt)
params.ulAADLen = aadlen;
params.ulTagBits = tagbits;
rv = aes_decrypt_buf(NSS_AES_GCM, key, keysize,
- (unsigned char *)&params,
- plaintext, &plaintextlen, sizeof plaintext,
- ciphertext, ciphertextlen);
+ (unsigned char *)&params,
+ plaintext, &plaintextlen, sizeof plaintext,
+ ciphertext, ciphertextlen);
fputs(buf, aesresp);
if (rv != SECSuccess) {
- fprintf(aesresp,"FAIL\n");
+ fprintf(aesresp, "FAIL\n");
} else {
fputs("PT = ", aesresp);
to_hex_str(buf, plaintext, plaintextlen);
@@ -1221,21 +1226,21 @@ loser:
void
aes_kat_mmt(char *reqfn)
{
- char buf[512]; /* holds one line from the input REQUEST file.
+ char buf[512]; /* holds one line from the input REQUEST file.
* needs to be large enough to hold the longest
* line "CIPHERTEXT = <320 hex digits>\n".
*/
- FILE *aesreq; /* input stream from the REQUEST file */
- FILE *aesresp; /* output stream to the RESPONSE file */
+ FILE *aesreq; /* input stream from the REQUEST file */
+ FILE *aesresp; /* output stream to the RESPONSE file */
int i, j;
- int mode = NSS_AES; /* NSS_AES (ECB) or NSS_AES_CBC */
- int encrypt = 0; /* 1 means encrypt, 0 means decrypt */
- unsigned char key[32]; /* 128, 192, or 256 bits */
+ int mode = NSS_AES; /* NSS_AES (ECB) or NSS_AES_CBC */
+ int encrypt = 0; /* 1 means encrypt, 0 means decrypt */
+ unsigned char key[32]; /* 128, 192, or 256 bits */
unsigned int keysize = 0;
- unsigned char iv[16]; /* for all modes except ECB */
- unsigned char plaintext[10*16]; /* 1 to 10 blocks */
+ unsigned char iv[16]; /* for all modes except ECB */
+ unsigned char plaintext[10 * 16]; /* 1 to 10 blocks */
unsigned int plaintextlen;
- unsigned char ciphertext[10*16]; /* 1 to 10 blocks */
+ unsigned char ciphertext[10 * 16]; /* 1 to 10 blocks */
unsigned int ciphertextlen;
SECStatus rv;
@@ -1277,7 +1282,7 @@ aes_kat_mmt(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &key[j]);
}
keysize = j;
@@ -1291,7 +1296,7 @@ aes_kat_mmt(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j<sizeof iv; i+=2,j++) {
+ for (j = 0; j < sizeof iv; i += 2, j++) {
hex_to_byteval(&buf[i], &iv[j]);
}
fputs(buf, aesresp);
@@ -1308,15 +1313,18 @@ aes_kat_mmt(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &plaintext[j]);
}
plaintextlen = j;
rv = aes_encrypt_buf(mode, key, keysize,
- (mode == NSS_AES) ? NULL : iv,
- ciphertext, &ciphertextlen, sizeof ciphertext,
- plaintext, plaintextlen);
+ (mode ==
+ NSS_AES)
+ ? NULL
+ : iv,
+ ciphertext, &ciphertextlen, sizeof ciphertext,
+ plaintext, plaintextlen);
if (rv != SECSuccess) {
goto loser;
}
@@ -1339,15 +1347,18 @@ aes_kat_mmt(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &ciphertext[j]);
}
ciphertextlen = j;
rv = aes_decrypt_buf(mode, key, keysize,
- (mode == NSS_AES) ? NULL : iv,
- plaintext, &plaintextlen, sizeof plaintext,
- ciphertext, ciphertextlen);
+ (mode ==
+ NSS_AES)
+ ? NULL
+ : iv,
+ plaintext, &plaintextlen, sizeof plaintext,
+ ciphertext, ciphertextlen);
if (rv != SECSuccess) {
goto loser;
}
@@ -1370,38 +1381,38 @@ loser:
*/
void
aes_mct_next_key(unsigned char *key, unsigned int keysize,
- const unsigned char *ciphertext_1, const unsigned char *ciphertext)
+ const unsigned char *ciphertext_1, const unsigned char *ciphertext)
{
int k;
switch (keysize) {
- case 16: /* 128-bit key */
- /* Key[i+1] = Key[i] xor CT[j] */
- for (k=0; k<16; k++) {
- key[k] ^= ciphertext[k];
- }
- break;
- case 24: /* 192-bit key */
- /*
+ case 16: /* 128-bit key */
+ /* Key[i+1] = Key[i] xor CT[j] */
+ for (k = 0; k < 16; k++) {
+ key[k] ^= ciphertext[k];
+ }
+ break;
+ case 24: /* 192-bit key */
+ /*
* Key[i+1] = Key[i] xor (last 64-bits of
* CT[j-1] || CT[j])
*/
- for (k=0; k<8; k++) {
- key[k] ^= ciphertext_1[k+8];
- }
- for (k=8; k<24; k++) {
- key[k] ^= ciphertext[k-8];
- }
- break;
- case 32: /* 256-bit key */
- /* Key[i+1] = Key[i] xor (CT[j-1] || CT[j]) */
- for (k=0; k<16; k++) {
- key[k] ^= ciphertext_1[k];
- }
- for (k=16; k<32; k++) {
- key[k] ^= ciphertext[k-16];
- }
- break;
+ for (k = 0; k < 8; k++) {
+ key[k] ^= ciphertext_1[k + 8];
+ }
+ for (k = 8; k < 24; k++) {
+ key[k] ^= ciphertext[k - 8];
+ }
+ break;
+ case 32: /* 256-bit key */
+ /* Key[i+1] = Key[i] xor (CT[j-1] || CT[j]) */
+ for (k = 0; k < 16; k++) {
+ key[k] ^= ciphertext_1[k];
+ }
+ for (k = 16; k < 32; k++) {
+ key[k] ^= ciphertext[k - 16];
+ }
+ break;
}
}
@@ -1419,24 +1430,24 @@ aes_mct_next_key(unsigned char *key, unsigned int keysize,
void
aes_ecb_mct(char *reqfn)
{
- char buf[80]; /* holds one line from the input REQUEST file.
+ char buf[80]; /* holds one line from the input REQUEST file.
* needs to be large enough to hold the longest
* line "KEY = <64 hex digits>\n".
*/
- FILE *aesreq; /* input stream from the REQUEST file */
- FILE *aesresp; /* output stream to the RESPONSE file */
+ FILE *aesreq; /* input stream from the REQUEST file */
+ FILE *aesresp; /* output stream to the RESPONSE file */
int i, j;
- int encrypt = 0; /* 1 means encrypt, 0 means decrypt */
- unsigned char key[32]; /* 128, 192, or 256 bits */
+ int encrypt = 0; /* 1 means encrypt, 0 means decrypt */
+ unsigned char key[32]; /* 128, 192, or 256 bits */
unsigned int keysize = 0;
- unsigned char plaintext[16]; /* PT[j] */
- unsigned char plaintext_1[16]; /* PT[j-1] */
- unsigned char ciphertext[16]; /* CT[j] */
- unsigned char ciphertext_1[16]; /* CT[j-1] */
+ unsigned char plaintext[16]; /* PT[j] */
+ unsigned char plaintext_1[16]; /* PT[j-1] */
+ unsigned char ciphertext[16]; /* CT[j] */
+ unsigned char ciphertext_1[16]; /* CT[j-1] */
unsigned char doublecheck[16];
unsigned int outputlen;
- AESContext *cx = NULL; /* the operation being tested */
- AESContext *cx2 = NULL; /* the inverse operation done in parallel
+ AESContext *cx = NULL; /* the operation being tested */
+ AESContext *cx2 = NULL; /* the inverse operation done in parallel
* to doublecheck our result.
*/
SECStatus rv;
@@ -1475,7 +1486,7 @@ aes_ecb_mct(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &key[j]);
}
keysize = j;
@@ -1492,11 +1503,11 @@ aes_ecb_mct(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j<sizeof plaintext; i+=2,j++) {
+ for (j = 0; j < sizeof plaintext; i += 2, j++) {
hex_to_byteval(&buf[i], &plaintext[j]);
}
- for (i=0; i<100; i++) {
+ for (i = 0; i < 100; i++) {
sprintf(buf, "COUNT = %d\n", i);
fputs(buf, aesresp);
/* Output Key[i] */
@@ -1511,7 +1522,7 @@ aes_ecb_mct(char *reqfn)
fputc('\n', aesresp);
cx = AES_CreateContext(key, NULL, NSS_AES,
- PR_TRUE, keysize, 16);
+ PR_TRUE, keysize, 16);
if (cx == NULL) {
goto loser;
}
@@ -1520,19 +1531,19 @@ aes_ecb_mct(char *reqfn)
* and comparing the output with the plaintext.
*/
cx2 = AES_CreateContext(key, NULL, NSS_AES,
- PR_FALSE, keysize, 16);
+ PR_FALSE, keysize, 16);
if (cx2 == NULL) {
goto loser;
}
- for (j=0; j<1000; j++) {
+ for (j = 0; j < 1000; j++) {
/* Save CT[j-1] */
memcpy(ciphertext_1, ciphertext, sizeof ciphertext);
/* CT[j] = AES(Key[i], PT[j]) */
outputlen = 0;
rv = AES_Encrypt(cx,
- ciphertext, &outputlen, sizeof ciphertext,
- plaintext, sizeof plaintext);
+ ciphertext, &outputlen, sizeof ciphertext,
+ plaintext, sizeof plaintext);
if (rv != SECSuccess) {
goto loser;
}
@@ -1543,8 +1554,8 @@ aes_ecb_mct(char *reqfn)
/* doublecheck our result */
outputlen = 0;
rv = AES_Decrypt(cx2,
- doublecheck, &outputlen, sizeof doublecheck,
- ciphertext, sizeof ciphertext);
+ doublecheck, &outputlen, sizeof doublecheck,
+ ciphertext, sizeof ciphertext);
if (rv != SECSuccess) {
goto loser;
}
@@ -1590,11 +1601,11 @@ aes_ecb_mct(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &ciphertext[j]);
}
- for (i=0; i<100; i++) {
+ for (i = 0; i < 100; i++) {
sprintf(buf, "COUNT = %d\n", i);
fputs(buf, aesresp);
/* Output Key[i] */
@@ -1609,7 +1620,7 @@ aes_ecb_mct(char *reqfn)
fputc('\n', aesresp);
cx = AES_CreateContext(key, NULL, NSS_AES,
- PR_FALSE, keysize, 16);
+ PR_FALSE, keysize, 16);
if (cx == NULL) {
goto loser;
}
@@ -1618,19 +1629,19 @@ aes_ecb_mct(char *reqfn)
* and comparing the output with the ciphertext.
*/
cx2 = AES_CreateContext(key, NULL, NSS_AES,
- PR_TRUE, keysize, 16);
+ PR_TRUE, keysize, 16);
if (cx2 == NULL) {
goto loser;
}
- for (j=0; j<1000; j++) {
+ for (j = 0; j < 1000; j++) {
/* Save PT[j-1] */
memcpy(plaintext_1, plaintext, sizeof plaintext);
/* PT[j] = AES(Key[i], CT[j]) */
outputlen = 0;
rv = AES_Decrypt(cx,
- plaintext, &outputlen, sizeof plaintext,
- ciphertext, sizeof ciphertext);
+ plaintext, &outputlen, sizeof plaintext,
+ ciphertext, sizeof ciphertext);
if (rv != SECSuccess) {
goto loser;
}
@@ -1641,8 +1652,8 @@ aes_ecb_mct(char *reqfn)
/* doublecheck our result */
outputlen = 0;
rv = AES_Encrypt(cx2,
- doublecheck, &outputlen, sizeof doublecheck,
- plaintext, sizeof plaintext);
+ doublecheck, &outputlen, sizeof doublecheck,
+ plaintext, sizeof plaintext);
if (rv != SECSuccess) {
goto loser;
}
@@ -1702,25 +1713,25 @@ loser:
void
aes_cbc_mct(char *reqfn)
{
- char buf[80]; /* holds one line from the input REQUEST file.
+ char buf[80]; /* holds one line from the input REQUEST file.
* needs to be large enough to hold the longest
* line "KEY = <64 hex digits>\n".
*/
- FILE *aesreq; /* input stream from the REQUEST file */
- FILE *aesresp; /* output stream to the RESPONSE file */
+ FILE *aesreq; /* input stream from the REQUEST file */
+ FILE *aesresp; /* output stream to the RESPONSE file */
int i, j;
- int encrypt = 0; /* 1 means encrypt, 0 means decrypt */
- unsigned char key[32]; /* 128, 192, or 256 bits */
+ int encrypt = 0; /* 1 means encrypt, 0 means decrypt */
+ unsigned char key[32]; /* 128, 192, or 256 bits */
unsigned int keysize = 0;
unsigned char iv[16];
- unsigned char plaintext[16]; /* PT[j] */
- unsigned char plaintext_1[16]; /* PT[j-1] */
- unsigned char ciphertext[16]; /* CT[j] */
- unsigned char ciphertext_1[16]; /* CT[j-1] */
+ unsigned char plaintext[16]; /* PT[j] */
+ unsigned char plaintext_1[16]; /* PT[j-1] */
+ unsigned char ciphertext[16]; /* CT[j] */
+ unsigned char ciphertext_1[16]; /* CT[j-1] */
unsigned char doublecheck[16];
unsigned int outputlen;
- AESContext *cx = NULL; /* the operation being tested */
- AESContext *cx2 = NULL; /* the inverse operation done in parallel
+ AESContext *cx = NULL; /* the operation being tested */
+ AESContext *cx2 = NULL; /* the inverse operation done in parallel
* to doublecheck our result.
*/
SECStatus rv;
@@ -1760,7 +1771,7 @@ aes_cbc_mct(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &key[j]);
}
keysize = j;
@@ -1773,7 +1784,7 @@ aes_cbc_mct(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j<sizeof iv; i+=2,j++) {
+ for (j = 0; j < sizeof iv; i += 2, j++) {
hex_to_byteval(&buf[i], &iv[j]);
}
continue;
@@ -1789,11 +1800,11 @@ aes_cbc_mct(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j<sizeof plaintext; i+=2,j++) {
+ for (j = 0; j < sizeof plaintext; i += 2, j++) {
hex_to_byteval(&buf[i], &plaintext[j]);
}
- for (i=0; i<100; i++) {
+ for (i = 0; i < 100; i++) {
sprintf(buf, "COUNT = %d\n", i);
fputs(buf, aesresp);
/* Output Key[i] */
@@ -1813,7 +1824,7 @@ aes_cbc_mct(char *reqfn)
fputc('\n', aesresp);
cx = AES_CreateContext(key, iv, NSS_AES_CBC,
- PR_TRUE, keysize, 16);
+ PR_TRUE, keysize, 16);
if (cx == NULL) {
goto loser;
}
@@ -1822,13 +1833,13 @@ aes_cbc_mct(char *reqfn)
* and comparing the output with the plaintext.
*/
cx2 = AES_CreateContext(key, iv, NSS_AES_CBC,
- PR_FALSE, keysize, 16);
+ PR_FALSE, keysize, 16);
if (cx2 == NULL) {
goto loser;
}
/* CT[-1] = IV[i] */
memcpy(ciphertext, iv, sizeof ciphertext);
- for (j=0; j<1000; j++) {
+ for (j = 0; j < 1000; j++) {
/* Save CT[j-1] */
memcpy(ciphertext_1, ciphertext, sizeof ciphertext);
/*
@@ -1841,8 +1852,8 @@ aes_cbc_mct(char *reqfn)
*/
outputlen = 0;
rv = AES_Encrypt(cx,
- ciphertext, &outputlen, sizeof ciphertext,
- plaintext, sizeof plaintext);
+ ciphertext, &outputlen, sizeof ciphertext,
+ plaintext, sizeof plaintext);
if (rv != SECSuccess) {
goto loser;
}
@@ -1853,8 +1864,8 @@ aes_cbc_mct(char *reqfn)
/* doublecheck our result */
outputlen = 0;
rv = AES_Decrypt(cx2,
- doublecheck, &outputlen, sizeof doublecheck,
- ciphertext, sizeof ciphertext);
+ doublecheck, &outputlen, sizeof doublecheck,
+ ciphertext, sizeof ciphertext);
if (rv != SECSuccess) {
goto loser;
}
@@ -1901,11 +1912,11 @@ aes_cbc_mct(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &ciphertext[j]);
}
- for (i=0; i<100; i++) {
+ for (i = 0; i < 100; i++) {
sprintf(buf, "COUNT = %d\n", i);
fputs(buf, aesresp);
/* Output Key[i] */
@@ -1925,7 +1936,7 @@ aes_cbc_mct(char *reqfn)
fputc('\n', aesresp);
cx = AES_CreateContext(key, iv, NSS_AES_CBC,
- PR_FALSE, keysize, 16);
+ PR_FALSE, keysize, 16);
if (cx == NULL) {
goto loser;
}
@@ -1934,13 +1945,13 @@ aes_cbc_mct(char *reqfn)
* and comparing the output with the ciphertext.
*/
cx2 = AES_CreateContext(key, iv, NSS_AES_CBC,
- PR_TRUE, keysize, 16);
+ PR_TRUE, keysize, 16);
if (cx2 == NULL) {
goto loser;
}
/* PT[-1] = IV[i] */
memcpy(plaintext, iv, sizeof plaintext);
- for (j=0; j<1000; j++) {
+ for (j = 0; j < 1000; j++) {
/* Save PT[j-1] */
memcpy(plaintext_1, plaintext, sizeof plaintext);
/*
@@ -1953,8 +1964,8 @@ aes_cbc_mct(char *reqfn)
*/
outputlen = 0;
rv = AES_Decrypt(cx,
- plaintext, &outputlen, sizeof plaintext,
- ciphertext, sizeof ciphertext);
+ plaintext, &outputlen, sizeof plaintext,
+ ciphertext, sizeof ciphertext);
if (rv != SECSuccess) {
goto loser;
}
@@ -1965,8 +1976,8 @@ aes_cbc_mct(char *reqfn)
/* doublecheck our result */
outputlen = 0;
rv = AES_Encrypt(cx2,
- doublecheck, &outputlen, sizeof doublecheck,
- plaintext, sizeof plaintext);
+ doublecheck, &outputlen, sizeof doublecheck,
+ plaintext, sizeof plaintext);
if (rv != SECSuccess) {
goto loser;
}
@@ -2013,21 +2024,22 @@ loser:
fclose(aesreq);
}
-void write_compact_string(FILE *out, unsigned char *hash, unsigned int len)
+void
+write_compact_string(FILE *out, unsigned char *hash, unsigned int len)
{
unsigned int i;
int j, count = 0, last = -1, z = 0;
long start = ftell(out);
- for (i=0; i<len; i++) {
- for (j=7; j>=0; j--) {
+ for (i = 0; i < len; i++) {
+ for (j = 7; j >= 0; j--) {
if (last < 0) {
last = (hash[i] & (1 << j)) ? 1 : 0;
fprintf(out, "%d ", last);
count = 1;
} else if (hash[i] & (1 << j)) {
if (last) {
- count++;
- } else {
+ count++;
+ } else {
last = 0;
fprintf(out, "%d ", count);
count = 1;
@@ -2035,8 +2047,8 @@ void write_compact_string(FILE *out, unsigned char *hash, unsigned int len)
}
} else {
if (!last) {
- count++;
- } else {
+ count++;
+ } else {
last = 1;
fprintf(out, "%d ", count);
count = 1;
@@ -2051,7 +2063,8 @@ void write_compact_string(FILE *out, unsigned char *hash, unsigned int len)
fseek(out, 0, SEEK_END);
}
-int get_next_line(FILE *req, char *key, char *val, FILE *rsp)
+int
+get_next_line(FILE *req, char *key, char *val, FILE *rsp)
{
int ignore = 0;
char *writeto = key;
@@ -2060,7 +2073,8 @@ int get_next_line(FILE *req, char *key, char *val, FILE *rsp)
while ((c = fgetc(req)) != EOF) {
if (ignore) {
fprintf(rsp, "%c", c);
- if (c == '\n') return ignore;
+ if (c == '\n')
+ return ignore;
} else if (c == '\n') {
break;
} else if (c == '#') {
@@ -2086,92 +2100,92 @@ typedef struct curveNameTagPairStr {
SECOidTag curveOidTag;
} CurveNameTagPair;
-#define DEFAULT_CURVE_OID_TAG SEC_OID_SECG_EC_SECP192R1
+#define DEFAULT_CURVE_OID_TAG SEC_OID_SECG_EC_SECP192R1
/* #define DEFAULT_CURVE_OID_TAG SEC_OID_SECG_EC_SECP160R1 */
static CurveNameTagPair nameTagPair[] =
-{
- { "sect163k1", SEC_OID_SECG_EC_SECT163K1},
- { "nistk163", SEC_OID_SECG_EC_SECT163K1},
- { "sect163r1", SEC_OID_SECG_EC_SECT163R1},
- { "sect163r2", SEC_OID_SECG_EC_SECT163R2},
- { "nistb163", SEC_OID_SECG_EC_SECT163R2},
- { "sect193r1", SEC_OID_SECG_EC_SECT193R1},
- { "sect193r2", SEC_OID_SECG_EC_SECT193R2},
- { "sect233k1", SEC_OID_SECG_EC_SECT233K1},
- { "nistk233", SEC_OID_SECG_EC_SECT233K1},
- { "sect233r1", SEC_OID_SECG_EC_SECT233R1},
- { "nistb233", SEC_OID_SECG_EC_SECT233R1},
- { "sect239k1", SEC_OID_SECG_EC_SECT239K1},
- { "sect283k1", SEC_OID_SECG_EC_SECT283K1},
- { "nistk283", SEC_OID_SECG_EC_SECT283K1},
- { "sect283r1", SEC_OID_SECG_EC_SECT283R1},
- { "nistb283", SEC_OID_SECG_EC_SECT283R1},
- { "sect409k1", SEC_OID_SECG_EC_SECT409K1},
- { "nistk409", SEC_OID_SECG_EC_SECT409K1},
- { "sect409r1", SEC_OID_SECG_EC_SECT409R1},
- { "nistb409", SEC_OID_SECG_EC_SECT409R1},
- { "sect571k1", SEC_OID_SECG_EC_SECT571K1},
- { "nistk571", SEC_OID_SECG_EC_SECT571K1},
- { "sect571r1", SEC_OID_SECG_EC_SECT571R1},
- { "nistb571", SEC_OID_SECG_EC_SECT571R1},
- { "secp160k1", SEC_OID_SECG_EC_SECP160K1},
- { "secp160r1", SEC_OID_SECG_EC_SECP160R1},
- { "secp160r2", SEC_OID_SECG_EC_SECP160R2},
- { "secp192k1", SEC_OID_SECG_EC_SECP192K1},
- { "secp192r1", SEC_OID_SECG_EC_SECP192R1},
- { "nistp192", SEC_OID_SECG_EC_SECP192R1},
- { "secp224k1", SEC_OID_SECG_EC_SECP224K1},
- { "secp224r1", SEC_OID_SECG_EC_SECP224R1},
- { "nistp224", SEC_OID_SECG_EC_SECP224R1},
- { "secp256k1", SEC_OID_SECG_EC_SECP256K1},
- { "secp256r1", SEC_OID_SECG_EC_SECP256R1},
- { "nistp256", SEC_OID_SECG_EC_SECP256R1},
- { "secp384r1", SEC_OID_SECG_EC_SECP384R1},
- { "nistp384", SEC_OID_SECG_EC_SECP384R1},
- { "secp521r1", SEC_OID_SECG_EC_SECP521R1},
- { "nistp521", SEC_OID_SECG_EC_SECP521R1},
-
- { "prime192v1", SEC_OID_ANSIX962_EC_PRIME192V1 },
- { "prime192v2", SEC_OID_ANSIX962_EC_PRIME192V2 },
- { "prime192v3", SEC_OID_ANSIX962_EC_PRIME192V3 },
- { "prime239v1", SEC_OID_ANSIX962_EC_PRIME239V1 },
- { "prime239v2", SEC_OID_ANSIX962_EC_PRIME239V2 },
- { "prime239v3", SEC_OID_ANSIX962_EC_PRIME239V3 },
-
- { "c2pnb163v1", SEC_OID_ANSIX962_EC_C2PNB163V1 },
- { "c2pnb163v2", SEC_OID_ANSIX962_EC_C2PNB163V2 },
- { "c2pnb163v3", SEC_OID_ANSIX962_EC_C2PNB163V3 },
- { "c2pnb176v1", SEC_OID_ANSIX962_EC_C2PNB176V1 },
- { "c2tnb191v1", SEC_OID_ANSIX962_EC_C2TNB191V1 },
- { "c2tnb191v2", SEC_OID_ANSIX962_EC_C2TNB191V2 },
- { "c2tnb191v3", SEC_OID_ANSIX962_EC_C2TNB191V3 },
- { "c2onb191v4", SEC_OID_ANSIX962_EC_C2ONB191V4 },
- { "c2onb191v5", SEC_OID_ANSIX962_EC_C2ONB191V5 },
- { "c2pnb208w1", SEC_OID_ANSIX962_EC_C2PNB208W1 },
- { "c2tnb239v1", SEC_OID_ANSIX962_EC_C2TNB239V1 },
- { "c2tnb239v2", SEC_OID_ANSIX962_EC_C2TNB239V2 },
- { "c2tnb239v3", SEC_OID_ANSIX962_EC_C2TNB239V3 },
- { "c2onb239v4", SEC_OID_ANSIX962_EC_C2ONB239V4 },
- { "c2onb239v5", SEC_OID_ANSIX962_EC_C2ONB239V5 },
- { "c2pnb272w1", SEC_OID_ANSIX962_EC_C2PNB272W1 },
- { "c2pnb304w1", SEC_OID_ANSIX962_EC_C2PNB304W1 },
- { "c2tnb359v1", SEC_OID_ANSIX962_EC_C2TNB359V1 },
- { "c2pnb368w1", SEC_OID_ANSIX962_EC_C2PNB368W1 },
- { "c2tnb431r1", SEC_OID_ANSIX962_EC_C2TNB431R1 },
-
- { "secp112r1", SEC_OID_SECG_EC_SECP112R1},
- { "secp112r2", SEC_OID_SECG_EC_SECP112R2},
- { "secp128r1", SEC_OID_SECG_EC_SECP128R1},
- { "secp128r2", SEC_OID_SECG_EC_SECP128R2},
-
- { "sect113r1", SEC_OID_SECG_EC_SECT113R1},
- { "sect113r2", SEC_OID_SECG_EC_SECT113R2},
- { "sect131r1", SEC_OID_SECG_EC_SECT131R1},
- { "sect131r2", SEC_OID_SECG_EC_SECT131R2},
-};
-
-static SECItem *
+ {
+ { "sect163k1", SEC_OID_SECG_EC_SECT163K1 },
+ { "nistk163", SEC_OID_SECG_EC_SECT163K1 },
+ { "sect163r1", SEC_OID_SECG_EC_SECT163R1 },
+ { "sect163r2", SEC_OID_SECG_EC_SECT163R2 },
+ { "nistb163", SEC_OID_SECG_EC_SECT163R2 },
+ { "sect193r1", SEC_OID_SECG_EC_SECT193R1 },
+ { "sect193r2", SEC_OID_SECG_EC_SECT193R2 },
+ { "sect233k1", SEC_OID_SECG_EC_SECT233K1 },
+ { "nistk233", SEC_OID_SECG_EC_SECT233K1 },
+ { "sect233r1", SEC_OID_SECG_EC_SECT233R1 },
+ { "nistb233", SEC_OID_SECG_EC_SECT233R1 },
+ { "sect239k1", SEC_OID_SECG_EC_SECT239K1 },
+ { "sect283k1", SEC_OID_SECG_EC_SECT283K1 },
+ { "nistk283", SEC_OID_SECG_EC_SECT283K1 },
+ { "sect283r1", SEC_OID_SECG_EC_SECT283R1 },
+ { "nistb283", SEC_OID_SECG_EC_SECT283R1 },
+ { "sect409k1", SEC_OID_SECG_EC_SECT409K1 },
+ { "nistk409", SEC_OID_SECG_EC_SECT409K1 },
+ { "sect409r1", SEC_OID_SECG_EC_SECT409R1 },
+ { "nistb409", SEC_OID_SECG_EC_SECT409R1 },
+ { "sect571k1", SEC_OID_SECG_EC_SECT571K1 },
+ { "nistk571", SEC_OID_SECG_EC_SECT571K1 },
+ { "sect571r1", SEC_OID_SECG_EC_SECT571R1 },
+ { "nistb571", SEC_OID_SECG_EC_SECT571R1 },
+ { "secp160k1", SEC_OID_SECG_EC_SECP160K1 },
+ { "secp160r1", SEC_OID_SECG_EC_SECP160R1 },
+ { "secp160r2", SEC_OID_SECG_EC_SECP160R2 },
+ { "secp192k1", SEC_OID_SECG_EC_SECP192K1 },
+ { "secp192r1", SEC_OID_SECG_EC_SECP192R1 },
+ { "nistp192", SEC_OID_SECG_EC_SECP192R1 },
+ { "secp224k1", SEC_OID_SECG_EC_SECP224K1 },
+ { "secp224r1", SEC_OID_SECG_EC_SECP224R1 },
+ { "nistp224", SEC_OID_SECG_EC_SECP224R1 },
+ { "secp256k1", SEC_OID_SECG_EC_SECP256K1 },
+ { "secp256r1", SEC_OID_SECG_EC_SECP256R1 },
+ { "nistp256", SEC_OID_SECG_EC_SECP256R1 },
+ { "secp384r1", SEC_OID_SECG_EC_SECP384R1 },
+ { "nistp384", SEC_OID_SECG_EC_SECP384R1 },
+ { "secp521r1", SEC_OID_SECG_EC_SECP521R1 },
+ { "nistp521", SEC_OID_SECG_EC_SECP521R1 },
+
+ { "prime192v1", SEC_OID_ANSIX962_EC_PRIME192V1 },
+ { "prime192v2", SEC_OID_ANSIX962_EC_PRIME192V2 },
+ { "prime192v3", SEC_OID_ANSIX962_EC_PRIME192V3 },
+ { "prime239v1", SEC_OID_ANSIX962_EC_PRIME239V1 },
+ { "prime239v2", SEC_OID_ANSIX962_EC_PRIME239V2 },
+ { "prime239v3", SEC_OID_ANSIX962_EC_PRIME239V3 },
+
+ { "c2pnb163v1", SEC_OID_ANSIX962_EC_C2PNB163V1 },
+ { "c2pnb163v2", SEC_OID_ANSIX962_EC_C2PNB163V2 },
+ { "c2pnb163v3", SEC_OID_ANSIX962_EC_C2PNB163V3 },
+ { "c2pnb176v1", SEC_OID_ANSIX962_EC_C2PNB176V1 },
+ { "c2tnb191v1", SEC_OID_ANSIX962_EC_C2TNB191V1 },
+ { "c2tnb191v2", SEC_OID_ANSIX962_EC_C2TNB191V2 },
+ { "c2tnb191v3", SEC_OID_ANSIX962_EC_C2TNB191V3 },
+ { "c2onb191v4", SEC_OID_ANSIX962_EC_C2ONB191V4 },
+ { "c2onb191v5", SEC_OID_ANSIX962_EC_C2ONB191V5 },
+ { "c2pnb208w1", SEC_OID_ANSIX962_EC_C2PNB208W1 },
+ { "c2tnb239v1", SEC_OID_ANSIX962_EC_C2TNB239V1 },
+ { "c2tnb239v2", SEC_OID_ANSIX962_EC_C2TNB239V2 },
+ { "c2tnb239v3", SEC_OID_ANSIX962_EC_C2TNB239V3 },
+ { "c2onb239v4", SEC_OID_ANSIX962_EC_C2ONB239V4 },
+ { "c2onb239v5", SEC_OID_ANSIX962_EC_C2ONB239V5 },
+ { "c2pnb272w1", SEC_OID_ANSIX962_EC_C2PNB272W1 },
+ { "c2pnb304w1", SEC_OID_ANSIX962_EC_C2PNB304W1 },
+ { "c2tnb359v1", SEC_OID_ANSIX962_EC_C2TNB359V1 },
+ { "c2pnb368w1", SEC_OID_ANSIX962_EC_C2PNB368W1 },
+ { "c2tnb431r1", SEC_OID_ANSIX962_EC_C2TNB431R1 },
+
+ { "secp112r1", SEC_OID_SECG_EC_SECP112R1 },
+ { "secp112r2", SEC_OID_SECG_EC_SECP112R2 },
+ { "secp128r1", SEC_OID_SECG_EC_SECP128R1 },
+ { "secp128r2", SEC_OID_SECG_EC_SECP128R2 },
+
+ { "sect113r1", SEC_OID_SECG_EC_SECT113R1 },
+ { "sect113r2", SEC_OID_SECG_EC_SECT113R2 },
+ { "sect131r1", SEC_OID_SECG_EC_SECT131R1 },
+ { "sect131r2", SEC_OID_SECG_EC_SECT131R2 },
+ };
+
+static SECItem *
getECParams(const char *curve)
{
SECItem *ecparams;
@@ -2180,8 +2194,8 @@ getECParams(const char *curve)
int i, numCurves;
if (curve != NULL) {
- numCurves = sizeof(nameTagPair)/sizeof(CurveNameTagPair);
- for (i = 0; ((i < numCurves) && (curveOidTag == SEC_OID_UNKNOWN));
+ numCurves = sizeof(nameTagPair) / sizeof(CurveNameTagPair);
+ for (i = 0; ((i < numCurves) && (curveOidTag == SEC_OID_UNKNOWN));
i++) {
if (PL_strcmp(curve, nameTagPair[i].curveName) == 0)
curveOidTag = nameTagPair[i].curveOidTag;
@@ -2189,7 +2203,7 @@ getECParams(const char *curve)
}
/* Return NULL if curve name is not recognized */
- if ((curveOidTag == SEC_OID_UNKNOWN) ||
+ if ((curveOidTag == SEC_OID_UNKNOWN) ||
(oidData = SECOID_FindOIDByTag(curveOidTag)) == NULL) {
fprintf(stderr, "Unrecognized elliptic curve %s\n", curve);
return NULL;
@@ -2197,9 +2211,9 @@ getECParams(const char *curve)
ecparams = SECITEM_AllocItem(NULL, NULL, (2 + oidData->oid.len));
- /*
+ /*
* ecparams->data needs to contain the ASN encoding of an object ID (OID)
- * representing the named curve. The actual OID is in
+ * representing the named curve. The actual OID is in
* oidData->oid.data so we simply prepend 0x06 and OID length
*/
ecparams->data[0] = SEC_ASN1_OBJECT_ID;
@@ -2215,29 +2229,29 @@ getECParams(const char *curve)
* replace the functionality for fipstest.
*/
SECStatus
-fips_hashBuf(HASH_HashType type, unsigned char *hashBuf,
- unsigned char *msg, int len)
+fips_hashBuf(HASH_HashType type, unsigned char *hashBuf,
+ unsigned char *msg, int len)
{
SECStatus rv = SECFailure;
switch (type) {
- case HASH_AlgSHA1:
- rv = SHA1_HashBuf(hashBuf, msg, len);
- break;
- case HASH_AlgSHA224:
- rv = SHA224_HashBuf(hashBuf, msg, len);
- break;
- case HASH_AlgSHA256:
- rv = SHA256_HashBuf(hashBuf, msg, len);
- break;
- case HASH_AlgSHA384:
- rv = SHA384_HashBuf(hashBuf, msg, len);
- break;
- case HASH_AlgSHA512:
- rv = SHA512_HashBuf(hashBuf, msg, len);
- break;
- default:
- break;
+ case HASH_AlgSHA1:
+ rv = SHA1_HashBuf(hashBuf, msg, len);
+ break;
+ case HASH_AlgSHA224:
+ rv = SHA224_HashBuf(hashBuf, msg, len);
+ break;
+ case HASH_AlgSHA256:
+ rv = SHA256_HashBuf(hashBuf, msg, len);
+ break;
+ case HASH_AlgSHA384:
+ rv = SHA384_HashBuf(hashBuf, msg, len);
+ break;
+ case HASH_AlgSHA512:
+ rv = SHA512_HashBuf(hashBuf, msg, len);
+ break;
+ default:
+ break;
}
return rv;
}
@@ -2248,23 +2262,23 @@ fips_hashLen(HASH_HashType type)
int len = 0;
switch (type) {
- case HASH_AlgSHA1:
- len = SHA1_LENGTH;
- break;
- case HASH_AlgSHA224:
- len = SHA224_LENGTH;
- break;
- case HASH_AlgSHA256:
- len = SHA256_LENGTH;
- break;
- case HASH_AlgSHA384:
- len = SHA384_LENGTH;
- break;
- case HASH_AlgSHA512:
- len = SHA512_LENGTH;
- break;
- default:
- break;
+ case HASH_AlgSHA1:
+ len = SHA1_LENGTH;
+ break;
+ case HASH_AlgSHA224:
+ len = SHA224_LENGTH;
+ break;
+ case HASH_AlgSHA256:
+ len = SHA256_LENGTH;
+ break;
+ case HASH_AlgSHA384:
+ len = SHA384_LENGTH;
+ break;
+ case HASH_AlgSHA512:
+ len = SHA512_LENGTH;
+ break;
+ default:
+ break;
}
return len;
}
@@ -2275,23 +2289,23 @@ fips_hashOid(HASH_HashType type)
SECOidTag oid = SEC_OID_UNKNOWN;
switch (type) {
- case HASH_AlgSHA1:
- oid = SEC_OID_SHA1;
- break;
- case HASH_AlgSHA224:
- oid = SEC_OID_SHA224;
- break;
- case HASH_AlgSHA256:
- oid = SEC_OID_SHA256;
- break;
- case HASH_AlgSHA384:
- oid = SEC_OID_SHA384;
- break;
- case HASH_AlgSHA512:
- oid = SEC_OID_SHA512;
- break;
- default:
- break;
+ case HASH_AlgSHA1:
+ oid = SEC_OID_SHA1;
+ break;
+ case HASH_AlgSHA224:
+ oid = SEC_OID_SHA224;
+ break;
+ case HASH_AlgSHA256:
+ oid = SEC_OID_SHA256;
+ break;
+ case HASH_AlgSHA384:
+ oid = SEC_OID_SHA384;
+ break;
+ case HASH_AlgSHA512:
+ oid = SEC_OID_SHA512;
+ break;
+ default:
+ break;
}
return oid;
}
@@ -2302,24 +2316,24 @@ sha_get_hashType(int hashbits)
HASH_HashType hashType = HASH_AlgNULL;
switch (hashbits) {
- case 1:
- case (SHA1_LENGTH*PR_BITS_PER_BYTE):
- hashType = HASH_AlgSHA1;
- break;
- case (SHA224_LENGTH*PR_BITS_PER_BYTE):
- hashType = HASH_AlgSHA224;
- break;
- case (SHA256_LENGTH*PR_BITS_PER_BYTE):
- hashType = HASH_AlgSHA256;
- break;
- case (SHA384_LENGTH*PR_BITS_PER_BYTE):
- hashType = HASH_AlgSHA384;
- break;
- case (SHA512_LENGTH*PR_BITS_PER_BYTE):
- hashType = HASH_AlgSHA512;
- break;
- default:
- break;
+ case 1:
+ case (SHA1_LENGTH * PR_BITS_PER_BYTE):
+ hashType = HASH_AlgSHA1;
+ break;
+ case (SHA224_LENGTH * PR_BITS_PER_BYTE):
+ hashType = HASH_AlgSHA224;
+ break;
+ case (SHA256_LENGTH * PR_BITS_PER_BYTE):
+ hashType = HASH_AlgSHA256;
+ break;
+ case (SHA384_LENGTH * PR_BITS_PER_BYTE):
+ hashType = HASH_AlgSHA384;
+ break;
+ case (SHA512_LENGTH * PR_BITS_PER_BYTE):
+ hashType = HASH_AlgSHA512;
+ break;
+ default:
+ break;
}
return hashType;
}
@@ -2334,14 +2348,14 @@ sha_get_hashType(int hashbits)
void
ecdsa_keypair_test(char *reqfn)
{
- char buf[256]; /* holds one line from the input REQUEST file
+ char buf[256]; /* holds one line from the input REQUEST file
* or to the output RESPONSE file.
* needs to be large enough to hold the longest
* line "Qx = <144 hex digits>\n".
*/
- FILE *ecdsareq; /* input stream from the REQUEST file */
- FILE *ecdsaresp; /* output stream to the RESPONSE file */
- char curve[16]; /* "nistxddd" */
+ FILE *ecdsareq; /* input stream from the REQUEST file */
+ FILE *ecdsaresp; /* output stream to the RESPONSE file */
+ char curve[16]; /* "nistxddd" */
ECParams *ecparams = NULL;
int N;
int i;
@@ -2374,7 +2388,7 @@ ecdsa_keypair_test(char *reqfn)
src = &buf[1];
dst = &curve[4];
*dst++ = tolower(*src);
- src += 2; /* skip the hyphen */
+ src += 2; /* skip the hyphen */
*dst++ = *src++;
*dst++ = *src++;
*dst++ = *src++;
@@ -2408,17 +2422,17 @@ ecdsa_keypair_test(char *reqfn)
ecpriv->privateValue.len);
fputs(buf, ecdsaresp);
fputc('\n', ecdsaresp);
- if (EC_ValidatePublicKey(ecparams, &ecpriv->publicValue)
- != SECSuccess) {
+ if (EC_ValidatePublicKey(ecparams, &ecpriv->publicValue) !=
+ SECSuccess) {
goto loser;
}
len = ecpriv->publicValue.len;
- if (len%2 == 0) {
+ if (len % 2 == 0) {
goto loser;
}
- len = (len-1)/2;
- if (ecpriv->publicValue.data[0]
- != EC_POINT_FORM_UNCOMPRESSED) {
+ len = (len - 1) / 2;
+ if (ecpriv->publicValue.data[0] !=
+ EC_POINT_FORM_UNCOMPRESSED) {
goto loser;
}
fputs("Qx = ", ecdsaresp);
@@ -2426,7 +2440,7 @@ ecdsa_keypair_test(char *reqfn)
fputs(buf, ecdsaresp);
fputc('\n', ecdsaresp);
fputs("Qy = ", ecdsaresp);
- to_hex_str(buf, &ecpriv->publicValue.data[1+len], len);
+ to_hex_str(buf, &ecpriv->publicValue.data[1 + len], len);
fputs(buf, ecdsaresp);
fputc('\n', ecdsaresp);
fputc('\n', ecdsaresp);
@@ -2453,13 +2467,13 @@ loser:
void
ecdsa_pkv_test(char *reqfn)
{
- char buf[256]; /* holds one line from the input REQUEST file.
+ char buf[256]; /* holds one line from the input REQUEST file.
* needs to be large enough to hold the longest
* line "Qx = <144 hex digits>\n".
*/
- FILE *ecdsareq; /* input stream from the REQUEST file */
- FILE *ecdsaresp; /* output stream to the RESPONSE file */
- char curve[16]; /* "nistxddd" */
+ FILE *ecdsareq; /* input stream from the REQUEST file */
+ FILE *ecdsaresp; /* output stream to the RESPONSE file */
+ char curve[16]; /* "nistxddd" */
ECParams *ecparams = NULL;
SECItem pubkey;
unsigned int i;
@@ -2485,7 +2499,7 @@ ecdsa_pkv_test(char *reqfn)
src = &buf[1];
dst = &curve[4];
*dst++ = tolower(*src);
- src += 2; /* skip the hyphen */
+ src += 2; /* skip the hyphen */
*dst++ = *src++;
*dst++ = *src++;
*dst++ = *src++;
@@ -2509,7 +2523,7 @@ ecdsa_pkv_test(char *reqfn)
PORT_Free(pubkey.data);
pubkey.data = NULL;
}
- SECITEM_AllocItem(NULL, &pubkey, 2*len+1);
+ SECITEM_AllocItem(NULL, &pubkey, ecparams->pointSize);
if (pubkey.data == NULL) {
goto loser;
}
@@ -2538,7 +2552,7 @@ ecdsa_pkv_test(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- keyvalid = from_hex_str(&pubkey.data[1+len], len, &buf[i]);
+ keyvalid = from_hex_str(&pubkey.data[1 + len], len, &buf[i]);
if (!keyvalid) {
fputs("Result = F\n", ecdsaresp);
continue;
@@ -2573,23 +2587,23 @@ loser:
void
ecdsa_siggen_test(char *reqfn)
{
- char buf[1024]; /* holds one line from the input REQUEST file
+ char buf[1024]; /* holds one line from the input REQUEST file
* or to the output RESPONSE file.
* needs to be large enough to hold the longest
* line "Msg = <256 hex digits>\n".
*/
- FILE *ecdsareq; /* input stream from the REQUEST file */
- FILE *ecdsaresp; /* output stream to the RESPONSE file */
- char curve[16]; /* "nistxddd" */
+ FILE *ecdsareq; /* input stream from the REQUEST file */
+ FILE *ecdsaresp; /* output stream to the RESPONSE file */
+ char curve[16]; /* "nistxddd" */
ECParams *ecparams = NULL;
int i, j;
unsigned int len;
- unsigned char msg[512]; /* message to be signed (<= 128 bytes) */
+ unsigned char msg[512]; /* message to be signed (<= 128 bytes) */
unsigned int msglen;
- unsigned char sha[HASH_LENGTH_MAX]; /* SHA digest */
- unsigned int shaLength = 0; /* length of SHA */
- HASH_HashType shaAlg = HASH_AlgNULL; /* type of SHA Alg */
- unsigned char sig[2*MAX_ECKEY_LEN];
+ unsigned char sha[HASH_LENGTH_MAX]; /* SHA digest */
+ unsigned int shaLength = 0; /* length of SHA */
+ HASH_HashType shaAlg = HASH_AlgNULL; /* type of SHA Alg */
+ unsigned char sig[2 * MAX_ECKEY_LEN];
SECItem signature, digest;
ecdsareq = fopen(reqfn, "r");
@@ -2610,7 +2624,7 @@ ecdsa_siggen_test(char *reqfn)
src = &buf[1];
dst = &curve[4];
*dst++ = tolower(*src);
- src += 2; /* skip the hyphen */
+ src += 2; /* skip the hyphen */
*dst++ = *src++;
*dst++ = *src++;
*dst++ = *src++;
@@ -2623,13 +2637,13 @@ ecdsa_siggen_test(char *reqfn)
shaAlg = HASH_AlgSHA224;
} else if (strncmp(src, "SHA-256", 7) == 0) {
shaAlg = HASH_AlgSHA256;
- } else if (strncmp(src, "SHA-384", 7)== 0) {
- shaAlg = HASH_AlgSHA384;
+ } else if (strncmp(src, "SHA-384", 7) == 0) {
+ shaAlg = HASH_AlgSHA384;
} else if (strncmp(src, "SHA-512", 7) == 0) {
- shaAlg = HASH_AlgSHA512;
+ shaAlg = HASH_AlgSHA512;
} else {
- fprintf(ecdsaresp, "ERROR: Unable to find SHAAlg type");
- goto loser;
+ fprintf(ecdsaresp, "ERROR: Unable to find SHAAlg type");
+ goto loser;
}
if (ecparams != NULL) {
PORT_FreeArena(ecparams->arena, PR_FALSE);
@@ -2656,14 +2670,14 @@ ecdsa_siggen_test(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &msg[j]);
}
msglen = j;
shaLength = fips_hashLen(shaAlg);
- if (fips_hashBuf(shaAlg,sha,msg,msglen) != SECSuccess) {
+ if (fips_hashBuf(shaAlg, sha, msg, msglen) != SECSuccess) {
if (shaLength == 0) {
- fprintf(ecdsaresp, "ERROR: SHAAlg not defined.");
+ fprintf(ecdsaresp, "ERROR: SHAAlg not defined.");
}
fprintf(ecdsaresp, "ERROR: Unable to generate SHA%x",
shaLength == 160 ? 1 : shaLength);
@@ -2674,15 +2688,15 @@ ecdsa_siggen_test(char *reqfn)
if (EC_NewKey(ecparams, &ecpriv) != SECSuccess) {
goto loser;
}
- if (EC_ValidatePublicKey(ecparams, &ecpriv->publicValue)
- != SECSuccess) {
+ if (EC_ValidatePublicKey(ecparams, &ecpriv->publicValue) !=
+ SECSuccess) {
goto loser;
}
len = ecpriv->publicValue.len;
- if (len%2 == 0) {
+ if (len % 2 == 0) {
goto loser;
}
- len = (len-1)/2;
+ len = (len - 1) / 2;
if (ecpriv->publicValue.data[0] != EC_POINT_FORM_UNCOMPRESSED) {
goto loser;
}
@@ -2691,7 +2705,7 @@ ecdsa_siggen_test(char *reqfn)
fputs(buf, ecdsaresp);
fputc('\n', ecdsaresp);
fputs("Qy = ", ecdsaresp);
- to_hex_str(buf, &ecpriv->publicValue.data[1+len], len);
+ to_hex_str(buf, &ecpriv->publicValue.data[1 + len], len);
fputs(buf, ecdsaresp);
fputc('\n', ecdsaresp);
@@ -2705,10 +2719,10 @@ ecdsa_siggen_test(char *reqfn)
goto loser;
}
len = signature.len;
- if (len%2 != 0) {
+ if (len % 2 != 0) {
goto loser;
}
- len = len/2;
+ len = len / 2;
fputs("R = ", ecdsaresp);
to_hex_str(buf, &signature.data[0], len);
fputs(buf, ecdsaresp);
@@ -2739,23 +2753,23 @@ loser:
void
ecdsa_sigver_test(char *reqfn)
{
- char buf[1024]; /* holds one line from the input REQUEST file.
+ char buf[1024]; /* holds one line from the input REQUEST file.
* needs to be large enough to hold the longest
* line "Msg = <256 hex digits>\n".
*/
- FILE *ecdsareq; /* input stream from the REQUEST file */
- FILE *ecdsaresp; /* output stream to the RESPONSE file */
- char curve[16]; /* "nistxddd" */
+ FILE *ecdsareq; /* input stream from the REQUEST file */
+ FILE *ecdsaresp; /* output stream to the RESPONSE file */
+ char curve[16]; /* "nistxddd" */
ECPublicKey ecpub;
unsigned int i, j;
unsigned int flen = 0; /* length in bytes of the field size */
unsigned int olen = 0; /* length in bytes of the base point order */
- unsigned char msg[512]; /* message that was signed (<= 128 bytes) */
+ unsigned char msg[512]; /* message that was signed (<= 128 bytes) */
unsigned int msglen = 0;
- unsigned char sha[HASH_LENGTH_MAX]; /* SHA digest */
- unsigned int shaLength = 0; /* length of SHA */
- HASH_HashType shaAlg = HASH_AlgNULL; /* type of SHA Alg */
- unsigned char sig[2*MAX_ECKEY_LEN];
+ unsigned char sha[HASH_LENGTH_MAX]; /* SHA digest */
+ unsigned int shaLength = 0; /* length of SHA */
+ HASH_HashType shaAlg = HASH_AlgNULL; /* type of SHA Alg */
+ unsigned char sig[2 * MAX_ECKEY_LEN];
SECItem signature, digest;
PRBool keyvalid = PR_TRUE;
PRBool sigvalid = PR_TRUE;
@@ -2780,7 +2794,7 @@ ecdsa_sigver_test(char *reqfn)
src = &buf[1];
dst = &curve[4];
*dst++ = tolower(*src);
- src += 2; /* skip the hyphen */
+ src += 2; /* skip the hyphen */
*dst++ = *src++;
*dst++ = *src++;
*dst++ = *src++;
@@ -2793,13 +2807,13 @@ ecdsa_sigver_test(char *reqfn)
shaAlg = HASH_AlgSHA224;
} else if (strncmp(src, "SHA-256", 7) == 0) {
shaAlg = HASH_AlgSHA256;
- } else if (strncmp(src, "SHA-384", 7)== 0) {
- shaAlg = HASH_AlgSHA384;
+ } else if (strncmp(src, "SHA-384", 7) == 0) {
+ shaAlg = HASH_AlgSHA384;
} else if (strncmp(src, "SHA-512", 7) == 0) {
- shaAlg = HASH_AlgSHA512;
+ shaAlg = HASH_AlgSHA512;
} else {
- fprintf(ecdsaresp, "ERROR: Unable to find SHAAlg type");
- goto loser;
+ fprintf(ecdsaresp, "ERROR: Unable to find SHAAlg type");
+ goto loser;
}
encodedparams = getECParams(curve);
if (encodedparams == NULL) {
@@ -2818,21 +2832,21 @@ ecdsa_sigver_test(char *reqfn)
if (ecpub.ecParams.arena == NULL) {
goto loser;
}
- if (EC_CopyParams(ecpub.ecParams.arena, &ecpub.ecParams, ecparams)
- != SECSuccess) {
+ if (EC_CopyParams(ecpub.ecParams.arena, &ecpub.ecParams, ecparams) !=
+ SECSuccess) {
goto loser;
}
PORT_FreeArena(ecparams->arena, PR_FALSE);
flen = (ecpub.ecParams.fieldID.size + 7) >> 3;
olen = ecpub.ecParams.order.len;
- if (2*olen > sizeof sig) {
+ if (2 * olen > sizeof sig) {
goto loser;
}
ecpub.publicValue.type = siBuffer;
ecpub.publicValue.data = NULL;
ecpub.publicValue.len = 0;
SECITEM_AllocItem(ecpub.ecParams.arena,
- &ecpub.publicValue, 2*flen+1);
+ &ecpub.publicValue, 2 * flen + 1);
if (ecpub.publicValue.data == NULL) {
goto loser;
}
@@ -2846,14 +2860,14 @@ ecdsa_sigver_test(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &msg[j]);
}
msglen = j;
shaLength = fips_hashLen(shaAlg);
- if (fips_hashBuf(shaAlg,sha,msg,msglen) != SECSuccess) {
+ if (fips_hashBuf(shaAlg, sha, msg, msglen) != SECSuccess) {
if (shaLength == 0) {
- fprintf(ecdsaresp, "ERROR: SHAAlg not defined.");
+ fprintf(ecdsaresp, "ERROR: SHAAlg not defined.");
}
fprintf(ecdsaresp, "ERROR: Unable to generate SHA%x",
shaLength == 160 ? 1 : shaLength);
@@ -2888,13 +2902,13 @@ ecdsa_sigver_test(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- keyvalid = from_hex_str(&ecpub.publicValue.data[1+flen], flen,
+ keyvalid = from_hex_str(&ecpub.publicValue.data[1 + flen], flen,
&buf[i]);
if (!keyvalid) {
continue;
}
- if (EC_ValidatePublicKey(&ecpub.ecParams, &ecpub.publicValue)
- != SECSuccess) {
+ if (EC_ValidatePublicKey(&ecpub.ecParams, &ecpub.publicValue) !=
+ SECSuccess) {
if (PORT_GetError() == SEC_ERROR_BAD_KEY) {
keyvalid = PR_FALSE;
} else {
@@ -2925,12 +2939,12 @@ ecdsa_sigver_test(char *reqfn)
}
signature.type = siBuffer;
signature.data = sig;
- signature.len = 2*olen;
+ signature.len = 2 * olen;
if (!keyvalid || !sigvalid) {
fputs("Result = F\n", ecdsaresp);
- } else if (ECDSA_VerifyDigest(&ecpub, &signature, &digest)
- == SECSuccess) {
+ } else if (ECDSA_VerifyDigest(&ecpub, &signature, &digest) ==
+ SECSuccess) {
fputs("Result = P\n", ecdsaresp);
} else {
fputs("Result = F\n", ecdsaresp);
@@ -2949,11 +2963,12 @@ loser:
PRBool
isblankline(char *b)
{
- while (isspace(*b)) b++;
- if ((*b == '\n') || (*b == 0)) {
+ while (isspace(*b))
+ b++;
+ if ((*b == '\n') || (*b == 0)) {
return PR_TRUE;
- }
- return PR_FALSE;
+ }
+ return PR_FALSE;
}
static int debug = 0;
@@ -2968,85 +2983,89 @@ static int debug = 0;
void
drbg(char *reqfn)
{
- char buf[2000]; /* test case has some very long lines, returned bits
+ char buf[2000]; /* test case has some very long lines, returned bits
* as high as 800 bytes (6400 bits). That 1600 byte
* plus a tag */
- char buf2[2000];
- FILE *rngreq; /* input stream from the REQUEST file */
- FILE *rngresp; /* output stream to the RESPONSE file */
-
+ char buf2[2000];
+ FILE *rngreq; /* input stream from the REQUEST file */
+ FILE *rngresp; /* output stream to the RESPONSE file */
+
unsigned int i, j;
#ifdef HANDLE_PREDICTION_RESISTANCE
PRBool predictionResistance = PR_FALSE;
#endif
- unsigned char *nonce = NULL;
+ unsigned char *nonce = NULL;
int nonceLen = 0;
- unsigned char *personalizationString = NULL;
+ unsigned char *personalizationString = NULL;
int personalizationStringLen = 0;
- unsigned char *additionalInput = NULL;
+ unsigned char *additionalInput = NULL;
int additionalInputLen = 0;
unsigned char *entropyInput = NULL;
int entropyInputLen = 0;
unsigned char *predictedreturn_bytes = NULL;
unsigned char *return_bytes = NULL;
int return_bytes_len = 0;
- enum { NONE, INSTANTIATE, GENERATE, RESEED, RESULT } command =
- NONE;
+ enum { NONE,
+ INSTANTIATE,
+ GENERATE,
+ RESEED,
+ RESULT } command =
+ NONE;
PRBool genResult = PR_FALSE;
SECStatus rv;
-
+
rngreq = fopen(reqfn, "r");
rngresp = stdout;
while (fgets(buf, sizeof buf, rngreq) != NULL) {
- switch (command) {
+ switch (command) {
case INSTANTIATE:
if (debug) {
- fputs("# PRNGTEST_Instantiate(",rngresp);
- to_hex_str(buf2,entropyInput, entropyInputLen);
- fputs(buf2,rngresp);
- fprintf(rngresp,",%d,",entropyInputLen);
- to_hex_str(buf2,nonce, nonceLen);
- fputs(buf2,rngresp);
- fprintf(rngresp,",%d,",nonceLen);
- to_hex_str(buf2,personalizationString,
- personalizationStringLen);
- fputs(buf2,rngresp);
- fprintf(rngresp,",%d)\n", personalizationStringLen);
+ fputs("# PRNGTEST_Instantiate(", rngresp);
+ to_hex_str(buf2, entropyInput, entropyInputLen);
+ fputs(buf2, rngresp);
+ fprintf(rngresp, ",%d,", entropyInputLen);
+ to_hex_str(buf2, nonce, nonceLen);
+ fputs(buf2, rngresp);
+ fprintf(rngresp, ",%d,", nonceLen);
+ to_hex_str(buf2, personalizationString,
+ personalizationStringLen);
+ fputs(buf2, rngresp);
+ fprintf(rngresp, ",%d)\n", personalizationStringLen);
}
rv = PRNGTEST_Instantiate(entropyInput, entropyInputLen,
nonce, nonceLen,
- personalizationString,
+ personalizationString,
personalizationStringLen);
if (rv != SECSuccess) {
goto loser;
}
break;
-
+
case GENERATE:
case RESULT:
memset(return_bytes, 0, return_bytes_len);
if (debug) {
- fputs("# PRNGTEST_Generate(returnbytes",rngresp);
- fprintf(rngresp,",%d,", return_bytes_len);
- to_hex_str(buf2,additionalInput, additionalInputLen);
- fputs(buf2,rngresp);
- fprintf(rngresp,",%d)\n",additionalInputLen);
+ fputs("# PRNGTEST_Generate(returnbytes", rngresp);
+ fprintf(rngresp, ",%d,", return_bytes_len);
+ to_hex_str(buf2, additionalInput, additionalInputLen);
+ fputs(buf2, rngresp);
+ fprintf(rngresp, ",%d)\n", additionalInputLen);
}
- rv = PRNGTEST_Generate((PRUint8 *) return_bytes,
- return_bytes_len,
- (PRUint8 *) additionalInput,
- additionalInputLen);
+ rv = PRNGTEST_Generate((PRUint8 *)return_bytes,
+ return_bytes_len,
+ (PRUint8 *)additionalInput,
+ additionalInputLen);
if (rv != SECSuccess) {
goto loser;
}
-
+
if (command == RESULT) {
fputs("ReturnedBits = ", rngresp);
to_hex_str(buf2, return_bytes, return_bytes_len);
fputs(buf2, rngresp);
fputc('\n', rngresp);
if (debug) {
- fputs("# PRNGTEST_Uninstantiate()\n",rngresp);
+ fputs("# PRNGTEST_Uninstantiate()\n", rngresp);
}
rv = PRNGTEST_Uninstantiate();
if (rv != SECSuccess) {
@@ -3058,24 +3077,24 @@ drbg(char *reqfn)
fputs(buf2, rngresp);
fputc('\n', rngresp);
}
-
+
memset(additionalInput, 0, additionalInputLen);
break;
-
+
case RESEED:
if (entropyInput || additionalInput) {
if (debug) {
- fputs("# PRNGTEST_Reseed(",rngresp);
- fprintf(rngresp,",%d,", return_bytes_len);
- to_hex_str(buf2,entropyInput, entropyInputLen);
- fputs(buf2,rngresp);
- fprintf(rngresp,",%d,", entropyInputLen);
- to_hex_str(buf2,additionalInput, additionalInputLen);
- fputs(buf2,rngresp);
- fprintf(rngresp,",%d)\n",additionalInputLen);
- }
+ fputs("# PRNGTEST_Reseed(", rngresp);
+ fprintf(rngresp, ",%d,", return_bytes_len);
+ to_hex_str(buf2, entropyInput, entropyInputLen);
+ fputs(buf2, rngresp);
+ fprintf(rngresp, ",%d,", entropyInputLen);
+ to_hex_str(buf2, additionalInput, additionalInputLen);
+ fputs(buf2, rngresp);
+ fprintf(rngresp, ",%d)\n", additionalInputLen);
+ }
rv = PRNGTEST_Reseed(entropyInput, entropyInputLen,
- additionalInput, additionalInputLen);
+ additionalInput, additionalInputLen);
if (rv != SECSuccess) {
goto loser;
}
@@ -3085,45 +3104,44 @@ drbg(char *reqfn)
break;
case NONE:
break;
-
- }
+ }
command = NONE;
-
+
/* a comment or blank line */
- if (buf[0] == '#' || buf[0] == '\n' || buf[0] == '\r' ) {
+ if (buf[0] == '#' || buf[0] == '\n' || buf[0] == '\r') {
fputs(buf, rngresp);
continue;
}
-
+
/* [Hash - SHA256] */
if (strncmp(buf, "[SHA-256]", 9) == 0) {
fputs(buf, rngresp);
continue;
}
-
- if (strncmp(buf, "[PredictionResistance", 21) == 0) {
+
+ if (strncmp(buf, "[PredictionResistance", 21) == 0) {
#ifdef HANDLE_PREDICTION_RESISTANCE
i = 21;
while (isspace(buf[i]) || buf[i] == '=') {
i++;
- }
+ }
if (strncmp(buf, "False", 5) == 0) {
predictionResistance = PR_FALSE;
} else {
predictionResistance = PR_TRUE;
}
#endif
-
+
fputs(buf, rngresp);
continue;
}
- if (strncmp(buf, "[ReturnedBitsLen", 16) == 0) {
+ if (strncmp(buf, "[ReturnedBitsLen", 16) == 0) {
if (return_bytes) {
PORT_ZFree(return_bytes, return_bytes_len);
return_bytes = NULL;
}
- if (predictedreturn_bytes) {
+ if (predictedreturn_bytes) {
PORT_ZFree(predictedreturn_bytes, return_bytes_len);
predictedreturn_bytes = NULL;
}
@@ -3131,7 +3149,7 @@ drbg(char *reqfn)
if (sscanf(buf, "[ReturnedBitsLen = %d]", &return_bytes_len) != 1) {
goto loser;
}
- return_bytes_len = return_bytes_len/8;
+ return_bytes_len = return_bytes_len / 8;
if (return_bytes_len > 0) {
return_bytes = PORT_Alloc(return_bytes_len);
predictedreturn_bytes = PORT_Alloc(return_bytes_len);
@@ -3139,8 +3157,8 @@ drbg(char *reqfn)
fputs(buf, rngresp);
continue;
}
-
- if (strncmp(buf, "[EntropyInputLen", 16) == 0) {
+
+ if (strncmp(buf, "[EntropyInputLen", 16) == 0) {
if (entropyInput) {
PORT_ZFree(entropyInput, entropyInputLen);
entropyInput = NULL;
@@ -3149,39 +3167,39 @@ drbg(char *reqfn)
if (sscanf(buf, "[EntropyInputLen = %d]", &entropyInputLen) != 1) {
goto loser;
}
- entropyInputLen = entropyInputLen/8;
+ entropyInputLen = entropyInputLen / 8;
if (entropyInputLen > 0) {
entropyInput = PORT_Alloc(entropyInputLen);
}
fputs(buf, rngresp);
continue;
}
-
- if (strncmp(buf, "[NonceLen", 9) == 0) {
+
+ if (strncmp(buf, "[NonceLen", 9) == 0) {
if (nonce) {
PORT_ZFree(nonce, nonceLen);
nonce = NULL;
nonceLen = 0;
}
-
+
if (sscanf(buf, "[NonceLen = %d]", &nonceLen) != 1) {
goto loser;
}
- nonceLen = nonceLen/8;
+ nonceLen = nonceLen / 8;
if (nonceLen > 0) {
nonce = PORT_Alloc(nonceLen);
- }
+ }
fputs(buf, rngresp);
continue;
}
-
- if (strncmp(buf, "[PersonalizationStringLen", 16) == 0) {
+
+ if (strncmp(buf, "[PersonalizationStringLen", 16) == 0) {
if (personalizationString) {
PORT_ZFree(personalizationString, personalizationStringLen);
personalizationString = NULL;
personalizationStringLen = 0;
}
-
+
if (sscanf(buf, "[PersonalizationStringLen = %d]", &personalizationStringLen) != 1) {
goto loser;
}
@@ -3190,35 +3208,35 @@ drbg(char *reqfn)
personalizationString = PORT_Alloc(personalizationStringLen);
}
fputs(buf, rngresp);
-
+
continue;
}
-
- if (strncmp(buf, "[AdditionalInputLen", 16) == 0) {
+
+ if (strncmp(buf, "[AdditionalInputLen", 16) == 0) {
if (additionalInput) {
PORT_ZFree(additionalInput, additionalInputLen);
additionalInput = NULL;
additionalInputLen = 0;
}
-
+
if (sscanf(buf, "[AdditionalInputLen = %d]", &additionalInputLen) != 1) {
goto loser;
}
- additionalInputLen = additionalInputLen/8;
+ additionalInputLen = additionalInputLen / 8;
if (additionalInputLen > 0) {
additionalInput = PORT_Alloc(additionalInputLen);
}
fputs(buf, rngresp);
continue;
}
-
+
if (strncmp(buf, "COUNT", 5) == 0) {
/* zeroize the variables for the test with this data set */
if (entropyInput) {
memset(entropyInput, 0, entropyInputLen);
}
if (nonce) {
- memset(nonce, 0, nonceLen);
+ memset(nonce, 0, nonceLen);
}
if (personalizationString) {
memset(personalizationString, 0, personalizationStringLen);
@@ -3227,11 +3245,11 @@ drbg(char *reqfn)
memset(additionalInput, 0, additionalInputLen);
}
genResult = PR_FALSE;
-
+
fputs(buf, rngresp);
continue;
}
-
+
/* EntropyInputReseed = ... */
if (strncmp(buf, "EntropyInputReseed", 18) == 0) {
if (entropyInput) {
@@ -3239,16 +3257,16 @@ drbg(char *reqfn)
i = 18;
while (isspace(buf[i]) || buf[i] == '=') {
i++;
- }
-
- for (j=0; isxdigit(buf[i]); i+=2,j++) { /*j<entropyInputLen*/
+ }
+
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) { /*j<entropyInputLen*/
hex_to_byteval(&buf[i], &entropyInput[j]);
- }
+ }
}
fputs(buf, rngresp);
continue;
}
-
+
/* AttionalInputReseed = ... */
if (strncmp(buf, "AdditionalInputReseed", 21) == 0) {
if (additionalInput) {
@@ -3257,41 +3275,41 @@ drbg(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) { /*j<additionalInputLen*/
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) { /*j<additionalInputLen*/
hex_to_byteval(&buf[i], &additionalInput[j]);
- }
+ }
}
command = RESEED;
fputs(buf, rngresp);
continue;
}
-
+
/* Entropy input = ... */
if (strncmp(buf, "EntropyInput", 12) == 0) {
i = 12;
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) { /*j<entropyInputLen*/
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) { /*j<entropyInputLen*/
hex_to_byteval(&buf[i], &entropyInput[j]);
- }
+ }
fputs(buf, rngresp);
continue;
}
-
+
/* nouce = ... */
if (strncmp(buf, "Nonce", 5) == 0) {
i = 5;
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) { /*j<nonceLen*/
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) { /*j<nonceLen*/
hex_to_byteval(&buf[i], &nonce[j]);
- }
+ }
fputs(buf, rngresp);
continue;
}
-
+
/* Personalization string = ... */
if (strncmp(buf, "PersonalizationString", 21) == 0) {
if (personalizationString) {
@@ -3299,7 +3317,7 @@ drbg(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) { /*j<personalizationStringLen*/
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) { /*j<personalizationStringLen*/
hex_to_byteval(&buf[i], &personalizationString[j]);
}
}
@@ -3307,7 +3325,7 @@ drbg(char *reqfn)
command = INSTANTIATE;
continue;
}
-
+
/* Additional input = ... */
if (strncmp(buf, "AdditionalInput", 15) == 0) {
if (additionalInput) {
@@ -3315,9 +3333,9 @@ drbg(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) { /*j<additionalInputLen*/
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) { /*j<additionalInputLen*/
hex_to_byteval(&buf[i], &additionalInput[j]);
- }
+ }
}
if (genResult) {
command = RESULT;
@@ -3328,46 +3346,64 @@ drbg(char *reqfn)
fputs(buf, rngresp);
continue;
}
-
+
/* Returned bits = ... */
if (strncmp(buf, "ReturnedBits", 12) == 0) {
i = 12;
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) { /*j<additionalInputLen*/
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) { /*j<additionalInputLen*/
hex_to_byteval(&buf[i], &predictedreturn_bytes[j]);
- }
+ }
- if (memcmp(return_bytes,
+ if (memcmp(return_bytes,
predictedreturn_bytes, return_bytes_len) != 0) {
if (debug) {
- fprintf(rngresp, "# Generate failed:\n");
- fputs( "# predicted=", rngresp);
- to_hex_str(buf, predictedreturn_bytes,
- return_bytes_len);
- fputs(buf, rngresp);
- fputs("\n# actual = ", rngresp);
- fputs(buf2, rngresp);
- fputc('\n', rngresp);
+ fprintf(rngresp, "# Generate failed:\n");
+ fputs("# predicted=", rngresp);
+ to_hex_str(buf, predictedreturn_bytes,
+ return_bytes_len);
+ fputs(buf, rngresp);
+ fputs("\n# actual = ", rngresp);
+ fputs(buf2, rngresp);
+ fputc('\n', rngresp);
} else {
- fprintf(stderr, "Generate failed:\n");
- fputs( " predicted=", stderr);
- to_hex_str(buf, predictedreturn_bytes,
- return_bytes_len);
- fputs(buf, stderr);
- fputs("\n actual = ", stderr);
- fputs(buf2, stderr);
- fputc('\n', stderr);
+ fprintf(stderr, "Generate failed:\n");
+ fputs(" predicted=", stderr);
+ to_hex_str(buf, predictedreturn_bytes,
+ return_bytes_len);
+ fputs(buf, stderr);
+ fputs("\n actual = ", stderr);
+ fputs(buf2, stderr);
+ fputc('\n', stderr);
}
}
- memset(predictedreturn_bytes, 0 , return_bytes_len);
+ memset(predictedreturn_bytes, 0, return_bytes_len);
continue;
}
}
loser:
+ if (predictedreturn_bytes) {
+ PORT_Free(predictedreturn_bytes);
+ }
+ if (return_bytes) {
+ PORT_Free(return_bytes);
+ }
+ if (additionalInput) {
+ PORT_Free(additionalInput);
+ }
+ if (personalizationString) {
+ PORT_Free(personalizationString);
+ }
+ if (nonce) {
+ PORT_Free(nonce);
+ }
+ if (entropyInput) {
+ PORT_Free(entropyInput);
+ }
fclose(rngreq);
}
@@ -3384,18 +3420,18 @@ loser:
void
rng_vst(char *reqfn)
{
- char buf[256]; /* holds one line from the input REQUEST file.
+ char buf[256]; /* holds one line from the input REQUEST file.
* needs to be large enough to hold the longest
* line "XSeed = <128 hex digits>\n".
*/
- FILE *rngreq; /* input stream from the REQUEST file */
- FILE *rngresp; /* output stream to the RESPONSE file */
+ FILE *rngreq; /* input stream from the REQUEST file */
+ FILE *rngresp; /* output stream to the RESPONSE file */
unsigned int i, j;
unsigned char Q[DSA1_SUBPRIME_LEN];
PRBool hasQ = PR_FALSE;
- unsigned int b = 0; /* 160 <= b <= 512, b is a multiple of 8 */
- unsigned char XKey[512/8];
- unsigned char XSeed[512/8];
+ unsigned int b = 0; /* 160 <= b <= 512, b is a multiple of 8 */
+ unsigned char XKey[512 / 8];
+ unsigned char XSeed[512 / 8];
unsigned char GENX[DSA1_SIGNATURE_LEN];
unsigned char DSAX[DSA1_SUBPRIME_LEN];
SECStatus rv;
@@ -3419,7 +3455,7 @@ rng_vst(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j<sizeof Q; i+=2,j++) {
+ for (j = 0; j < sizeof Q; i += 2, j++) {
hex_to_byteval(&buf[i], &Q[j]);
}
fputs(buf, rngresp);
@@ -3442,7 +3478,7 @@ rng_vst(char *reqfn)
i++;
}
b = atoi(&buf[i]);
- if (b < 160 || b > 512 || b%8 != 0) {
+ if (b < 160 || b > 512 || b % 8 != 0) {
goto loser;
}
fputs(buf, rngresp);
@@ -3454,7 +3490,7 @@ rng_vst(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j<b/8; i+=2,j++) {
+ for (j = 0; j < b / 8; i += 2, j++) {
hex_to_byteval(&buf[i], &XKey[j]);
}
fputs(buf, rngresp);
@@ -3466,7 +3502,7 @@ rng_vst(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j<b/8; i+=2,j++) {
+ for (j = 0; j < b / 8; i += 2, j++) {
hex_to_byteval(&buf[i], &XSeed[j]);
}
fputs(buf, rngresp);
@@ -3507,130 +3543,131 @@ loser:
void
rng_mct(char *reqfn)
{
- char buf[256]; /* holds one line from the input REQUEST file.
+ char buf[256]; /* holds one line from the input REQUEST file.
* needs to be large enough to hold the longest
* line "XSeed = <128 hex digits>\n".
*/
- FILE *rngreq; /* input stream from the REQUEST file */
- FILE *rngresp; /* output stream to the RESPONSE file */
+ FILE *rngreq; /* input stream from the REQUEST file */
+ FILE *rngresp; /* output stream to the RESPONSE file */
unsigned int i, j;
unsigned char Q[DSA1_SUBPRIME_LEN];
PRBool hasQ = PR_FALSE;
- unsigned int b = 0; /* 160 <= b <= 512, b is a multiple of 8 */
- unsigned char XKey[512/8];
- unsigned char XSeed[512/8];
- unsigned char GENX[2*SHA1_LENGTH];
+ unsigned int b = 0; /* 160 <= b <= 512, b is a multiple of 8 */
+ unsigned char XKey[512 / 8];
+ unsigned char XSeed[512 / 8];
+ unsigned char GENX[2 * SHA1_LENGTH];
unsigned char DSAX[DSA1_SUBPRIME_LEN];
SECStatus rv;
rngreq = fopen(reqfn, "r");
rngresp = stdout;
while (fgets(buf, sizeof buf, rngreq) != NULL) {
- /* a comment or blank line */
- if (buf[0] == '#' || buf[0] == '\n') {
- fputs(buf, rngresp);
- continue;
- }
- /* [Xchange - SHA1] */
- if (buf[0] == '[') {
- fputs(buf, rngresp);
- continue;
- }
- /* Q = ... */
- if (buf[0] == 'Q') {
- i = 1;
- while (isspace(buf[i]) || buf[i] == '=') {
- i++;
- }
- for (j=0; j<sizeof Q; i+=2,j++) {
- hex_to_byteval(&buf[i], &Q[j]);
- }
- fputs(buf, rngresp);
- hasQ = PR_TRUE;
- continue;
- }
- /* "COUNT = x" begins a new data set */
- if (strncmp(buf, "COUNT", 5) == 0) {
- /* zeroize the variables for the test with this data set */
- b = 0;
- memset(XKey, 0, sizeof XKey);
- memset(XSeed, 0, sizeof XSeed);
- fputs(buf, rngresp);
- continue;
- }
- /* b = ... */
- if (buf[0] == 'b') {
- i = 1;
- while (isspace(buf[i]) || buf[i] == '=') {
- i++;
- }
- b = atoi(&buf[i]);
- if (b < 160 || b > 512 || b%8 != 0) {
- goto loser;
- }
- fputs(buf, rngresp);
- continue;
- }
- /* XKey = ... */
- if (strncmp(buf, "XKey", 4) == 0) {
- i = 4;
- while (isspace(buf[i]) || buf[i] == '=') {
- i++;
- }
- for (j=0; j<b/8; i+=2,j++) {
- hex_to_byteval(&buf[i], &XKey[j]);
- }
- fputs(buf, rngresp);
- continue;
- }
- /* XSeed = ... */
- if (strncmp(buf, "XSeed", 5) == 0) {
- unsigned int k;
- i = 5;
- while (isspace(buf[i]) || buf[i] == '=') {
- i++;
- }
- for (j=0; j<b/8; i+=2,j++) {
- hex_to_byteval(&buf[i], &XSeed[j]);
- }
- fputs(buf, rngresp);
-
- for (k = 0; k < 10000; k++) {
- rv = FIPS186Change_GenerateX(XKey, XSeed, GENX);
- if (rv != SECSuccess) {
- goto loser;
- }
- }
- fputs("X = ", rngresp);
- if (hasQ) {
- rv = FIPS186Change_ReduceModQForDSA(GENX, Q, DSAX);
- if (rv != SECSuccess) {
- goto loser;
- }
- to_hex_str(buf, DSAX, sizeof DSAX);
- } else {
- to_hex_str(buf, GENX, sizeof GENX);
- }
- fputs(buf, rngresp);
- fputc('\n', rngresp);
- continue;
- }
+ /* a comment or blank line */
+ if (buf[0] == '#' || buf[0] == '\n') {
+ fputs(buf, rngresp);
+ continue;
+ }
+ /* [Xchange - SHA1] */
+ if (buf[0] == '[') {
+ fputs(buf, rngresp);
+ continue;
+ }
+ /* Q = ... */
+ if (buf[0] == 'Q') {
+ i = 1;
+ while (isspace(buf[i]) || buf[i] == '=') {
+ i++;
+ }
+ for (j = 0; j < sizeof Q; i += 2, j++) {
+ hex_to_byteval(&buf[i], &Q[j]);
+ }
+ fputs(buf, rngresp);
+ hasQ = PR_TRUE;
+ continue;
+ }
+ /* "COUNT = x" begins a new data set */
+ if (strncmp(buf, "COUNT", 5) == 0) {
+ /* zeroize the variables for the test with this data set */
+ b = 0;
+ memset(XKey, 0, sizeof XKey);
+ memset(XSeed, 0, sizeof XSeed);
+ fputs(buf, rngresp);
+ continue;
+ }
+ /* b = ... */
+ if (buf[0] == 'b') {
+ i = 1;
+ while (isspace(buf[i]) || buf[i] == '=') {
+ i++;
+ }
+ b = atoi(&buf[i]);
+ if (b < 160 || b > 512 || b % 8 != 0) {
+ goto loser;
+ }
+ fputs(buf, rngresp);
+ continue;
+ }
+ /* XKey = ... */
+ if (strncmp(buf, "XKey", 4) == 0) {
+ i = 4;
+ while (isspace(buf[i]) || buf[i] == '=') {
+ i++;
+ }
+ for (j = 0; j < b / 8; i += 2, j++) {
+ hex_to_byteval(&buf[i], &XKey[j]);
+ }
+ fputs(buf, rngresp);
+ continue;
+ }
+ /* XSeed = ... */
+ if (strncmp(buf, "XSeed", 5) == 0) {
+ unsigned int k;
+ i = 5;
+ while (isspace(buf[i]) || buf[i] == '=') {
+ i++;
+ }
+ for (j = 0; j < b / 8; i += 2, j++) {
+ hex_to_byteval(&buf[i], &XSeed[j]);
+ }
+ fputs(buf, rngresp);
+
+ for (k = 0; k < 10000; k++) {
+ rv = FIPS186Change_GenerateX(XKey, XSeed, GENX);
+ if (rv != SECSuccess) {
+ goto loser;
+ }
+ }
+ fputs("X = ", rngresp);
+ if (hasQ) {
+ rv = FIPS186Change_ReduceModQForDSA(GENX, Q, DSAX);
+ if (rv != SECSuccess) {
+ goto loser;
+ }
+ to_hex_str(buf, DSAX, sizeof DSAX);
+ } else {
+ to_hex_str(buf, GENX, sizeof GENX);
+ }
+ fputs(buf, rngresp);
+ fputc('\n', rngresp);
+ continue;
+ }
}
loser:
fclose(rngreq);
}
/*
- * Calculate the SHA Message Digest
+ * Calculate the SHA Message Digest
*
- * MD = Message digest
+ * MD = Message digest
* MDLen = length of Message Digest and SHA_Type
- * msg = message to digest
+ * msg = message to digest
* msgLen = length of message to digest
*/
-SECStatus sha_calcMD(unsigned char *MD, unsigned int MDLen, unsigned char *msg, unsigned int msgLen)
-{
- HASH_HashType hashType = sha_get_hashType(MDLen*PR_BITS_PER_BYTE);
+SECStatus
+sha_calcMD(unsigned char *MD, unsigned int MDLen, unsigned char *msg, unsigned int msgLen)
+{
+ HASH_HashType hashType = sha_get_hashType(MDLen * PR_BITS_PER_BYTE);
return fips_hashBuf(hashType, MD, msg, msgLen);
}
@@ -3640,33 +3677,34 @@ SECStatus sha_calcMD(unsigned char *MD, unsigned int MDLen, unsigned char *msg,
*
* MDLen = length of Message Digest and SHA_Type
* seed = input seed value
- * resp = is the output response file.
+ * resp = is the output response file.
*/
-SECStatus sha_mct_test(unsigned int MDLen, unsigned char *seed, FILE *resp)
+SECStatus
+sha_mct_test(unsigned int MDLen, unsigned char *seed, FILE *resp)
{
int i, j;
- unsigned int msgLen = MDLen*3;
- unsigned char MD_i3[HASH_LENGTH_MAX]; /* MD[i-3] */
- unsigned char MD_i2[HASH_LENGTH_MAX]; /* MD[i-2] */
- unsigned char MD_i1[HASH_LENGTH_MAX]; /* MD[i-1] */
- unsigned char MD_i[HASH_LENGTH_MAX]; /* MD[i] */
- unsigned char msg[HASH_LENGTH_MAX*3];
- char buf[HASH_LENGTH_MAX*2 + 1]; /* MAX buf MD_i as a hex string */
-
- for (j=0; j<100; j++) {
+ unsigned int msgLen = MDLen * 3;
+ unsigned char MD_i3[HASH_LENGTH_MAX]; /* MD[i-3] */
+ unsigned char MD_i2[HASH_LENGTH_MAX]; /* MD[i-2] */
+ unsigned char MD_i1[HASH_LENGTH_MAX]; /* MD[i-1] */
+ unsigned char MD_i[HASH_LENGTH_MAX]; /* MD[i] */
+ unsigned char msg[HASH_LENGTH_MAX * 3];
+ char buf[HASH_LENGTH_MAX * 2 + 1]; /* MAX buf MD_i as a hex string */
+
+ for (j = 0; j < 100; j++) {
/* MD_0 = MD_1 = MD_2 = seed */
memcpy(MD_i3, seed, MDLen);
memcpy(MD_i2, seed, MDLen);
memcpy(MD_i1, seed, MDLen);
- for (i=3; i < 1003; i++) {
+ for (i = 3; i < 1003; i++) {
/* Mi = MD[i-3] || MD [i-2] || MD [i-1] */
memcpy(msg, MD_i3, MDLen);
memcpy(&msg[MDLen], MD_i2, MDLen);
- memcpy(&msg[MDLen*2], MD_i1,MDLen);
+ memcpy(&msg[MDLen * 2], MD_i1, MDLen);
/* MDi = SHA(Msg) */
- if (sha_calcMD(MD_i, MDLen,
+ if (sha_calcMD(MD_i, MDLen,
msg, msgLen) != SECSuccess) {
return SECFailure;
}
@@ -3675,7 +3713,6 @@ SECStatus sha_mct_test(unsigned int MDLen, unsigned char *seed, FILE *resp)
memcpy(MD_i3, MD_i2, MDLen);
memcpy(MD_i2, MD_i1, MDLen);
memcpy(MD_i1, MD_i, MDLen);
-
}
/* seed = MD_i */
@@ -3701,24 +3738,25 @@ SECStatus sha_mct_test(unsigned int MDLen, unsigned char *seed, FILE *resp)
*
* The output RESPONSE file is written to stdout.
*/
-void sha_test(char *reqfn)
+void
+sha_test(char *reqfn)
{
unsigned int i, j;
- unsigned int MDlen = 0; /* the length of the Message Digest in Bytes */
- unsigned int msgLen = 0; /* the length of the input Message in Bytes */
- unsigned char *msg = NULL; /* holds the message to digest.*/
- size_t bufSize = 256*128; /*MAX buffer size */
- char *buf = NULL; /* holds one line from the input REQUEST file.*/
- unsigned char seed[HASH_LENGTH_MAX]; /* max size of seed 64 bytes */
- unsigned char MD[HASH_LENGTH_MAX]; /* message digest */
+ unsigned int MDlen = 0; /* the length of the Message Digest in Bytes */
+ unsigned int msgLen = 0; /* the length of the input Message in Bytes */
+ unsigned char *msg = NULL; /* holds the message to digest.*/
+ size_t bufSize = 256 * 128; /*MAX buffer size */
+ char *buf = NULL; /* holds one line from the input REQUEST file.*/
+ unsigned char seed[HASH_LENGTH_MAX]; /* max size of seed 64 bytes */
+ unsigned char MD[HASH_LENGTH_MAX]; /* message digest */
- FILE *req = NULL; /* input stream from the REQUEST file */
- FILE *resp; /* output stream to the RESPONSE file */
+ FILE *req = NULL; /* input stream from the REQUEST file */
+ FILE *resp; /* output stream to the RESPONSE file */
buf = PORT_ZAlloc(bufSize);
if (buf == NULL) {
goto loser;
- }
+ }
/* zeroize the variables for the test with this data set */
memset(seed, 0, sizeof seed);
@@ -3751,21 +3789,21 @@ void sha_test(char *reqfn)
i++;
}
if (msg) {
- PORT_ZFree(msg,msgLen);
+ PORT_ZFree(msg, msgLen);
msg = NULL;
}
msgLen = atoi(&buf[i]); /* in bits */
- if (msgLen%8 != 0) {
+ if (msgLen % 8 != 0) {
fprintf(stderr, "SHA tests are incorrectly configured for "
- "BIT oriented implementations\n");
+ "BIT oriented implementations\n");
goto loser;
}
- msgLen = msgLen/8; /* convert to bytes */
+ msgLen = msgLen / 8; /* convert to bytes */
fputs(buf, resp);
msg = PORT_ZAlloc(msgLen);
if (msg == NULL && msgLen != 0) {
goto loser;
- }
+ }
continue;
}
/* MSG = ... */
@@ -3774,23 +3812,23 @@ void sha_test(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j< msgLen; i+=2,j++) {
+ for (j = 0; j < msgLen; i += 2, j++) {
hex_to_byteval(&buf[i], &msg[j]);
}
- fputs(buf, resp);
- /* calculate the Message Digest */
- memset(MD, 0, sizeof MD);
- if (sha_calcMD(MD, MDlen,
- msg, msgLen) != SECSuccess) {
- goto loser;
- }
+ fputs(buf, resp);
+ /* calculate the Message Digest */
+ memset(MD, 0, sizeof MD);
+ if (sha_calcMD(MD, MDlen,
+ msg, msgLen) != SECSuccess) {
+ goto loser;
+ }
- fputs("MD = ", resp);
- to_hex_str(buf, MD, MDlen);
- fputs(buf, resp);
- fputc('\n', resp);
+ fputs("MD = ", resp);
+ to_hex_str(buf, MD, MDlen);
+ fputs(buf, resp);
+ fputc('\n', resp);
- continue;
+ continue;
}
/* Seed = ... */
if (strncmp(buf, "Seed", 4) == 0) {
@@ -3798,16 +3836,16 @@ void sha_test(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j<sizeof seed; i+=2,j++) {
+ for (j = 0; j < sizeof seed; i += 2, j++) {
hex_to_byteval(&buf[i], &seed[j]);
- }
+ }
fputs(buf, resp);
fputc('\n', resp);
/* do the Monte Carlo test */
if (sha_mct_test(MDlen, seed, resp) != SECSuccess) {
- goto loser;
+ goto loser;
}
continue;
@@ -3816,7 +3854,7 @@ void sha_test(char *reqfn)
loser:
if (req) {
fclose(req);
- }
+ }
if (buf) {
PORT_ZFree(buf, bufSize);
}
@@ -3841,33 +3879,33 @@ hmac_calc(unsigned char *hmac_computed,
const unsigned int secret_key_length,
const unsigned char *message,
const unsigned int message_length,
- const HASH_HashType hashAlg )
+ const HASH_HashType hashAlg)
{
SECStatus hmac_status = SECFailure;
HMACContext *cx = NULL;
SECHashObject *hashObj = NULL;
unsigned int bytes_hashed = 0;
- hashObj = (SECHashObject *) HASH_GetRawHashObject(hashAlg);
-
- if (!hashObj)
- return( SECFailure );
+ hashObj = (SECHashObject *)HASH_GetRawHashObject(hashAlg);
- cx = HMAC_Create(hashObj, secret_key,
- secret_key_length,
- PR_TRUE); /* PR_TRUE for in FIPS mode */
+ if (!hashObj)
+ return (SECFailure);
- if (cx == NULL)
- return( SECFailure );
+ cx = HMAC_Create(hashObj, secret_key,
+ secret_key_length,
+ PR_TRUE); /* PR_TRUE for in FIPS mode */
+
+ if (cx == NULL)
+ return (SECFailure);
HMAC_Begin(cx);
HMAC_Update(cx, message, message_length);
- hmac_status = HMAC_Finish(cx, hmac_computed, &bytes_hashed,
+ hmac_status = HMAC_Finish(cx, hmac_computed, &bytes_hashed,
hmac_length);
HMAC_Destroy(cx, PR_TRUE);
- return( hmac_status );
+ return (hmac_status);
}
/*
@@ -3877,36 +3915,36 @@ hmac_calc(unsigned char *hmac_computed,
*
* The output RESPONSE file is written to stdout.
*/
-void hmac_test(char *reqfn)
+void
+hmac_test(char *reqfn)
{
unsigned int i, j;
- size_t bufSize = 400; /* MAX buffer size */
- char *buf = NULL; /* holds one line from the input REQUEST file.*/
- unsigned int keyLen = 0; /* Key Length */
- unsigned char key[200]; /* key MAX size = 184 */
- unsigned int msgLen = 128; /* the length of the input */
- /* Message is always 128 Bytes */
- unsigned char *msg = NULL; /* holds the message to digest.*/
- unsigned int HMACLen = 0; /* the length of the HMAC Bytes */
- unsigned int TLen = 0; /* the length of the requested */
- /* truncated HMAC Bytes */
- unsigned char HMAC[HASH_LENGTH_MAX]; /* computed HMAC */
- unsigned char expectedHMAC[HASH_LENGTH_MAX]; /* for .fax files that have */
+ size_t bufSize = 400; /* MAX buffer size */
+ char *buf = NULL; /* holds one line from the input REQUEST file.*/
+ unsigned int keyLen = 0; /* Key Length */
+ unsigned char key[200]; /* key MAX size = 184 */
+ unsigned int msgLen = 128; /* the length of the input */
+ /* Message is always 128 Bytes */
+ unsigned char *msg = NULL; /* holds the message to digest.*/
+ unsigned int HMACLen = 0; /* the length of the HMAC Bytes */
+ unsigned int TLen = 0; /* the length of the requested */
+ /* truncated HMAC Bytes */
+ unsigned char HMAC[HASH_LENGTH_MAX]; /* computed HMAC */
+ unsigned char expectedHMAC[HASH_LENGTH_MAX]; /* for .fax files that have */
/* supplied known answer */
HASH_HashType hash_alg = HASH_AlgNULL; /* HMAC type */
-
- FILE *req = NULL; /* input stream from the REQUEST file */
- FILE *resp; /* output stream to the RESPONSE file */
+ FILE *req = NULL; /* input stream from the REQUEST file */
+ FILE *resp; /* output stream to the RESPONSE file */
buf = PORT_ZAlloc(bufSize);
if (buf == NULL) {
goto loser;
- }
+ }
msg = PORT_ZAlloc(msgLen);
if (msg == NULL) {
goto loser;
- }
+ }
req = fopen(reqfn, "r");
resp = stdout;
@@ -3917,17 +3955,17 @@ void hmac_test(char *reqfn)
i++;
}
memset(expectedHMAC, 0, HASH_LENGTH_MAX);
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &expectedHMAC[j]);
}
if (memcmp(HMAC, expectedHMAC, TLen) != 0) {
fprintf(stderr, "Generate failed:\n");
- fputs( " expected=", stderr);
- to_hex_str(buf, expectedHMAC,
+ fputs(" expected=", stderr);
+ to_hex_str(buf, expectedHMAC,
TLen);
fputs(buf, stderr);
fputs("\n generated=", stderr);
- to_hex_str(buf, HMAC,
+ to_hex_str(buf, HMAC,
TLen);
fputs(buf, stderr);
fputc('\n', stderr);
@@ -3948,22 +3986,22 @@ void hmac_test(char *reqfn)
}
/* HMACLen will get reused for Tlen */
HMACLen = atoi(&buf[i]);
- hash_alg = sha_get_hashType(HMACLen*PR_BITS_PER_BYTE);
- if (hash_alg == HASH_AlgNULL) {
- goto loser;
- }
+ hash_alg = sha_get_hashType(HMACLen * PR_BITS_PER_BYTE);
+ if (hash_alg == HASH_AlgNULL) {
+ goto loser;
+ }
fputs(buf, resp);
continue;
}
}
/* Count = test iteration number*/
- if (strncmp(buf, "Count ", 5) == 0) {
+ if (strncmp(buf, "Count ", 5) == 0) {
/* count can just be put into resp file */
fputs(buf, resp);
/* zeroize the variables for the test with this data set */
- keyLen = 0;
+ keyLen = 0;
TLen = 0;
- memset(key, 0, sizeof key);
+ memset(key, 0, sizeof key);
memset(msg, 0, msgLen);
memset(HMAC, 0, sizeof HMAC);
continue;
@@ -3984,10 +4022,10 @@ void hmac_test(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j< keyLen; i+=2,j++) {
+ for (j = 0; j < keyLen; i += 2, j++) {
hex_to_byteval(&buf[i], &key[j]);
}
- fputs(buf, resp);
+ fputs(buf, resp);
}
/* TLen = Length of the calculated HMAC */
if (strncmp(buf, "Tlen", 4) == 0) {
@@ -4005,20 +4043,20 @@ void hmac_test(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j< msgLen; i+=2,j++) {
+ for (j = 0; j < msgLen; i += 2, j++) {
hex_to_byteval(&buf[i], &msg[j]);
}
- fputs(buf, resp);
- /* calculate the HMAC and output */
- if (hmac_calc(HMAC, HMACLen, key, keyLen,
- msg, msgLen, hash_alg) != SECSuccess) {
- goto loser;
- }
- fputs("Mac = ", resp);
- to_hex_str(buf, HMAC, TLen);
- fputs(buf, resp);
- fputc('\n', resp);
- continue;
+ fputs(buf, resp);
+ /* calculate the HMAC and output */
+ if (hmac_calc(HMAC, HMACLen, key, keyLen,
+ msg, msgLen, hash_alg) != SECSuccess) {
+ goto loser;
+ }
+ fputs("Mac = ", resp);
+ to_hex_str(buf, HMAC, TLen);
+ fputs(buf, resp);
+ fputc('\n', resp);
+ continue;
}
}
loser:
@@ -4043,12 +4081,12 @@ loser:
void
dsa_keypair_test(char *reqfn)
{
- char buf[800]; /* holds one line from the input REQUEST file
+ char buf[800]; /* holds one line from the input REQUEST file
* or to the output RESPONSE file.
* 800 to hold (384 public key (x2 for HEX) + 1'\n'
*/
- FILE *dsareq; /* input stream from the REQUEST file */
- FILE *dsaresp; /* output stream to the RESPONSE file */
+ FILE *dsareq; /* input stream from the REQUEST file */
+ FILE *dsaresp; /* output stream to the RESPONSE file */
int count;
int N;
int L;
@@ -4056,7 +4094,7 @@ dsa_keypair_test(char *reqfn)
PQGParams *pqg = NULL;
PQGVerify *vfy = NULL;
PRBool use_dsa1 = PR_FALSE;
- int keySizeIndex; /* index for valid key sizes */
+ int keySizeIndex; /* index for valid key sizes */
dsareq = fopen(reqfn, "r");
dsaresp = stdout;
@@ -4069,11 +4107,11 @@ dsa_keypair_test(char *reqfn)
/* [Mod = x] */
if (buf[0] == '[') {
- if(pqg!=NULL) {
+ if (pqg != NULL) {
PQG_DestroyParams(pqg);
pqg = NULL;
}
- if(vfy!=NULL) {
+ if (vfy != NULL) {
PQG_DestroyVerify(vfy);
vfy = NULL;
}
@@ -4089,28 +4127,29 @@ dsa_keypair_test(char *reqfn)
if (use_dsa1) {
/*************************************************************
- * PQG_ParamGenSeedLen doesn't take a key size, it takes an
+ * PQG_ParamGenSeedLen doesn't take a key size, it takes an
* index that points to a valid key size.
*/
keySizeIndex = PQG_PBITS_TO_INDEX(L);
- if(keySizeIndex == -1 || L<512 || L>1024) {
- fprintf(dsaresp,
- "DSA key size must be a multiple of 64 between 512 "
- "and 1024, inclusive");
+ if (keySizeIndex == -1 || L < 512 || L > 1024) {
+ fprintf(dsaresp,
+ "DSA key size must be a multiple of 64 between 512 "
+ "and 1024, inclusive");
goto loser;
}
/* Generate the parameters P, Q, and G */
if (PQG_ParamGenSeedLen(keySizeIndex, PQG_TEST_SEED_BYTES,
- &pqg, &vfy) != SECSuccess) {
- fprintf(dsaresp,
- "ERROR: Unable to generate PQG parameters");
+ &pqg, &vfy) !=
+ SECSuccess) {
+ fprintf(dsaresp,
+ "ERROR: Unable to generate PQG parameters");
goto loser;
}
} else {
if (PQG_ParamGenV2(L, N, N, &pqg, &vfy) != SECSuccess) {
- fprintf(dsaresp,
- "ERROR: Unable to generate PQG parameters");
+ fprintf(dsaresp,
+ "ERROR: Unable to generate PQG parameters");
goto loser;
}
}
@@ -4148,7 +4187,6 @@ dsa_keypair_test(char *reqfn)
}
continue;
}
-
}
loser:
fclose(dsareq);
@@ -4158,14 +4196,14 @@ loser:
* pqg generation type
*/
typedef enum {
- FIPS186_1,/* Generate/Verify P,Q & G according to FIPS 186-1 */
- A_1_2_1, /* Generate Provable P & Q */
- A_1_1_3, /* Verify Probable P & Q */
- A_1_2_2, /* Verify Provable P & Q */
- A_2_1, /* Generate Unverifiable G */
- A_2_2, /* Assure Unverifiable G */
- A_2_3, /* Generate Verifiable G */
- A_2_4 /* Verify Verifiable G */
+ FIPS186_1, /* Generate/Verify P,Q & G according to FIPS 186-1 */
+ A_1_2_1, /* Generate Provable P & Q */
+ A_1_1_3, /* Verify Probable P & Q */
+ A_1_2_2, /* Verify Provable P & Q */
+ A_2_1, /* Generate Unverifiable G */
+ A_2_2, /* Assure Unverifiable G */
+ A_2_3, /* Generate Verifiable G */
+ A_2_4 /* Verify Verifiable G */
} dsa_pqg_type;
/*
@@ -4178,18 +4216,18 @@ typedef enum {
void
dsa_pqgver_test(char *reqfn)
{
- char buf[800]; /* holds one line from the input REQUEST file
+ char buf[800]; /* holds one line from the input REQUEST file
* or to the output RESPONSE file.
* 800 to hold (384 public key (x2 for HEX) + P = ...
*/
- FILE *dsareq; /* input stream from the REQUEST file */
- FILE *dsaresp; /* output stream to the RESPONSE file */
+ FILE *dsareq; /* input stream from the REQUEST file */
+ FILE *dsaresp; /* output stream to the RESPONSE file */
int N;
int L;
unsigned int i, j;
PQGParams pqg;
PQGVerify vfy;
- unsigned int pghSize = 0; /* size for p, g, and h */
+ unsigned int pghSize = 0; /* size for p, g, and h */
dsa_pqg_type type = FIPS186_1;
dsareq = fopen(reqfn, "r");
@@ -4205,34 +4243,33 @@ dsa_pqgver_test(char *reqfn)
}
/* [A.xxxxx ] */
- if (buf[0] == '[' && buf[1] == 'A') {
+ if (buf[0] == '[' && buf[1] == 'A') {
- if (strncmp(&buf[1],"A.1.1.3",7) == 0) {
+ if (strncmp(&buf[1], "A.1.1.3", 7) == 0) {
type = A_1_1_3;
- } else if (strncmp(&buf[1],"A.2.2",5) == 0) {
+ } else if (strncmp(&buf[1], "A.2.2", 5) == 0) {
type = A_2_2;
- } else if (strncmp(&buf[1],"A.2.4",5) == 0) {
+ } else if (strncmp(&buf[1], "A.2.4", 5) == 0) {
type = A_2_4;
- } else if (strncmp(&buf[1],"A.1.2.2",7) == 0) {
+ } else if (strncmp(&buf[1], "A.1.2.2", 7) == 0) {
type = A_1_2_2;
- /* validate our output from PQGGEN */
- } else if (strncmp(&buf[1],"A.1.1.2",7) == 0) {
+ /* validate our output from PQGGEN */
+ } else if (strncmp(&buf[1], "A.1.1.2", 7) == 0) {
type = A_2_4; /* validate PQ and G together */
} else {
fprintf(stderr, "Unknown dsa ver test %s\n", &buf[1]);
exit(1);
}
-
+
fputs(buf, dsaresp);
continue;
}
-
/* [Mod = x] */
if (buf[0] == '[') {
if (type == FIPS186_1) {
- N=160;
+ N = 160;
if (sscanf(buf, "[mod = %d]", &L) != 1) {
goto loser;
}
@@ -4246,36 +4283,36 @@ dsa_pqgver_test(char *reqfn)
if (pqg.subPrime.data) { /* Q */
SECITEM_ZfreeItem(&pqg.subPrime, PR_FALSE);
}
- if (pqg.base.data) { /* G */
+ if (pqg.base.data) { /* G */
SECITEM_ZfreeItem(&pqg.base, PR_FALSE);
}
- if (vfy.seed.data) { /* seed */
+ if (vfy.seed.data) { /* seed */
SECITEM_ZfreeItem(&vfy.seed, PR_FALSE);
}
- if (vfy.h.data) { /* H */
+ if (vfy.h.data) { /* H */
SECITEM_ZfreeItem(&vfy.h, PR_FALSE);
}
fputs(buf, dsaresp);
/*calculate the size of p, g, and h then allocate items */
- pghSize = L/8;
+ pghSize = L / 8;
pqg.base.data = vfy.h.data = NULL;
vfy.seed.len = pqg.base.len = vfy.h.len = 0;
SECITEM_AllocItem(NULL, &pqg.prime, pghSize);
- SECITEM_AllocItem(NULL, &vfy.seed, pghSize*3);
+ SECITEM_AllocItem(NULL, &vfy.seed, pghSize * 3);
if (type == A_2_2) {
SECITEM_AllocItem(NULL, &vfy.h, pghSize);
- vfy.h.len = pghSize;
+ vfy.h.len = pghSize;
} else if (type == A_2_4) {
SECITEM_AllocItem(NULL, &vfy.h, 1);
- vfy.h.len = 1;
+ vfy.h.len = 1;
}
pqg.prime.len = pghSize;
/* q is always N bits */
- SECITEM_AllocItem(NULL, &pqg.subPrime, N/8);
- pqg.subPrime.len = N/8;
+ SECITEM_AllocItem(NULL, &pqg.subPrime, N / 8);
+ pqg.subPrime.len = N / 8;
vfy.counter = -1;
continue;
@@ -4286,7 +4323,7 @@ dsa_pqgver_test(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j< pqg.prime.len; i+=2,j++) {
+ for (j = 0; j < pqg.prime.len; i += 2, j++) {
hex_to_byteval(&buf[i], &pqg.prime.data[j]);
}
@@ -4300,7 +4337,7 @@ dsa_pqgver_test(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j< pqg.subPrime.len; i+=2,j++) {
+ for (j = 0; j < pqg.subPrime.len; i += 2, j++) {
hex_to_byteval(&buf[i], &pqg.subPrime.data[j]);
}
@@ -4318,7 +4355,7 @@ dsa_pqgver_test(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j< pqg.base.len; i+=2,j++) {
+ for (j = 0; j < pqg.base.len; i += 2, j++) {
hex_to_byteval(&buf[i], &pqg.base.data[j]);
}
@@ -4331,7 +4368,7 @@ dsa_pqgver_test(char *reqfn)
i = 4;
} else if (strncmp(buf, "domain_parameter_seed", 21) == 0) {
i = 21;
- } else if (strncmp(buf,"firstseed",9) == 0) {
+ } else if (strncmp(buf, "firstseed", 9) == 0) {
i = 9;
} else {
i = 0;
@@ -4340,7 +4377,7 @@ dsa_pqgver_test(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &vfy.seed.data[j]);
}
vfy.seed.len = j;
@@ -4362,14 +4399,13 @@ dsa_pqgver_test(char *reqfn)
}
continue;
}
- if ((strncmp(buf,"pseed",5) == 0) ||
- (strncmp(buf,"qseed",5) == 0))
- {
+ if ((strncmp(buf, "pseed", 5) == 0) ||
+ (strncmp(buf, "qseed", 5) == 0)) {
i = 5;
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=vfy.seed.len; isxdigit(buf[i]); i+=2,j++) {
+ for (j = vfy.seed.len; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &vfy.seed.data[j]);
}
vfy.seed.len = j;
@@ -4378,7 +4414,7 @@ dsa_pqgver_test(char *reqfn)
continue;
}
if (strncmp(buf, "index", 4) == 0) {
- i=5;
+ i = 5;
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
@@ -4388,8 +4424,8 @@ dsa_pqgver_test(char *reqfn)
}
/* c = ... or counter=*/
- if (buf[0] == 'c') {
- if (strncmp(buf,"counter", 7) == 0) {
+ if (buf[0] == 'c') {
+ if (strncmp(buf, "counter", 7) == 0) {
if (sscanf(buf, "counter = %u", &vfy.counter) != 1) {
goto loser;
}
@@ -4416,14 +4452,14 @@ dsa_pqgver_test(char *reqfn)
}
continue;
}
- if (strncmp(buf,"pgen_counter", 12) == 0) {
+ if (strncmp(buf, "pgen_counter", 12) == 0) {
if (sscanf(buf, "pgen_counter = %u", &vfy.counter) != 1) {
goto loser;
- }
+ }
fputs(buf, dsaresp);
continue;
}
- if (strncmp(buf,"qgen_counter", 12) == 0) {
+ if (strncmp(buf, "qgen_counter", 12) == 0) {
fputs(buf, dsaresp);
if (type == A_1_2_2) {
SECStatus result;
@@ -4438,7 +4474,7 @@ dsa_pqgver_test(char *reqfn)
fprintf(dsaresp, "Result = F\n");
}
fprintf(dsaresp, "\n");
- }
+ }
continue;
}
/* H = ... */
@@ -4449,14 +4485,14 @@ dsa_pqgver_test(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &vfy.h.data[j]);
}
vfy.h.len = j;
fputs(buf, dsaresp);
/* this should be a byte value. Remove the leading zeros. If
- * it doesn't reduce to a byte, PQG_VerifyParams will catch it
+ * it doesn't reduce to a byte, PQG_VerifyParams will catch it
if (type == A_2_2) {
data_save = vfy.h.data;
while(vfy.h.data[0] && (vfy.h.len > 1)) {
@@ -4487,16 +4523,15 @@ loser:
if (pqg.subPrime.data) { /* Q */
SECITEM_ZfreeItem(&pqg.subPrime, PR_FALSE);
}
- if (pqg.base.data) { /* G */
+ if (pqg.base.data) { /* G */
SECITEM_ZfreeItem(&pqg.base, PR_FALSE);
}
- if (vfy.seed.data) { /* seed */
+ if (vfy.seed.data) { /* seed */
SECITEM_ZfreeItem(&vfy.seed, PR_FALSE);
}
- if (vfy.h.data) { /* H */
+ if (vfy.h.data) { /* H */
SECITEM_ZfreeItem(&vfy.h, PR_FALSE);
}
-
}
/*
@@ -4509,13 +4544,13 @@ loser:
void
dsa_pqggen_test(char *reqfn)
{
- char buf[800]; /* holds one line from the input REQUEST file
+ char buf[800]; /* holds one line from the input REQUEST file
* or to the output RESPONSE file.
* 800 to hold seed = (384 public key (x2 for HEX)
*/
- FILE *dsareq; /* input stream from the REQUEST file */
- FILE *dsaresp; /* output stream to the RESPONSE file */
- int count; /* number of times to generate parameters */
+ FILE *dsareq; /* input stream from the REQUEST file */
+ FILE *dsaresp; /* output stream to the RESPONSE file */
+ int count; /* number of times to generate parameters */
int N;
int L;
int i;
@@ -4536,20 +4571,20 @@ dsa_pqggen_test(char *reqfn)
}
/* [A.xxxxx ] */
- if (buf[0] == '[' && buf[1] == 'A') {
- if (strncmp(&buf[1],"A.1.1.2",7) == 0) {
+ if (buf[0] == '[' && buf[1] == 'A') {
+ if (strncmp(&buf[1], "A.1.1.2", 7) == 0) {
fprintf(stderr, "NSS does Generate Probablistic Primes\n");
- exit(1);
- } else if (strncmp(&buf[1],"A.2.1",5) == 0) {
+ exit(1);
+ } else if (strncmp(&buf[1], "A.2.1", 5) == 0) {
type = A_1_2_1;
- output_g = 1;
+ output_g = 1;
exit(1);
- } else if (strncmp(&buf[1],"A.2.3",5) == 0) {
+ } else if (strncmp(&buf[1], "A.2.3", 5) == 0) {
fprintf(stderr, "NSS only Generates G with P&Q\n");
exit(1);
- } else if (strncmp(&buf[1],"A.1.2.1",7) == 0) {
+ } else if (strncmp(&buf[1], "A.1.2.1", 7) == 0) {
type = A_1_2_1;
- output_g = 0;
+ output_g = 0;
} else {
fprintf(stderr, "Unknown dsa pqggen test %s\n", &buf[1]);
exit(1);
@@ -4562,7 +4597,7 @@ dsa_pqggen_test(char *reqfn)
if (buf[0] == '[') {
if (type == FIPS186_1) {
- N=160;
+ N = 160;
if (sscanf(buf, "[mod = %d]", &L) != 1) {
goto loser;
}
@@ -4579,10 +4614,10 @@ dsa_pqggen_test(char *reqfn)
* index that points to a valid key size.
*/
keySizeIndex = PQG_PBITS_TO_INDEX(L);
- if(keySizeIndex == -1 || L<512 || L>1024) {
- fprintf(dsaresp,
- "DSA key size must be a multiple of 64 between 512 "
- "and 1024, inclusive");
+ if (keySizeIndex == -1 || L < 512 || L > 1024) {
+ fprintf(dsaresp,
+ "DSA key size must be a multiple of 64 between 512 "
+ "and 1024, inclusive");
goto loser;
}
}
@@ -4590,7 +4625,7 @@ dsa_pqggen_test(char *reqfn)
}
/* N = ... */
if (buf[0] == 'N') {
- if (strncmp(buf, "Num", 3) == 0) {
+ if (strncmp(buf, "Num", 3) == 0) {
if (sscanf(buf, "Num = %d", &count) != 1) {
goto loser;
}
@@ -4602,7 +4637,7 @@ dsa_pqggen_test(char *reqfn)
if (type == FIPS186_1) {
rv = PQG_ParamGenSeedLen(keySizeIndex, PQG_TEST_SEED_BYTES,
- &pqg, &vfy);
+ &pqg, &vfy);
} else {
rv = PQG_ParamGenV2(L, N, N, &pqg, &vfy);
}
@@ -4615,44 +4650,43 @@ dsa_pqggen_test(char *reqfn)
fprintf(dsaresp, "P = %s\n", buf);
to_hex_str(buf, pqg->subPrime.data, pqg->subPrime.len);
fprintf(dsaresp, "Q = %s\n", buf);
- if (output_g) {
+ if (output_g) {
to_hex_str(buf, pqg->base.data, pqg->base.len);
fprintf(dsaresp, "G = %s\n", buf);
- }
+ }
if (type == FIPS186_1) {
to_hex_str(buf, vfy->seed.data, vfy->seed.len);
fprintf(dsaresp, "Seed = %s\n", buf);
fprintf(dsaresp, "c = %d\n", vfy->counter);
to_hex_str(buf, vfy->h.data, vfy->h.len);
fputs("H = ", dsaresp);
- for (j=vfy->h.len; j< pqg->prime.len; j++) {
+ for (j = vfy->h.len; j < pqg->prime.len; j++) {
fprintf(dsaresp, "00");
}
fprintf(dsaresp, "%s\n", buf);
} else {
- unsigned int seedlen = vfy->seed.len/2;
- unsigned int pgen_counter = vfy->counter >> 16;
- unsigned int qgen_counter = vfy->counter & 0xffff;
+ unsigned int seedlen = vfy->seed.len / 2;
+ unsigned int pgen_counter = vfy->counter >> 16;
+ unsigned int qgen_counter = vfy->counter & 0xffff;
/*fprintf(dsaresp, "index = %02x\n", vfy->h.data[0]); */
to_hex_str(buf, vfy->seed.data, seedlen);
fprintf(dsaresp, "pseed = %s\n", buf);
- to_hex_str(buf, vfy->seed.data+seedlen, seedlen);
+ to_hex_str(buf, vfy->seed.data + seedlen, seedlen);
fprintf(dsaresp, "qseed = %s\n", buf);
fprintf(dsaresp, "pgen_counter = %d\n", pgen_counter);
fprintf(dsaresp, "qgen_counter = %d\n", qgen_counter);
- if (output_g) {
+ if (output_g) {
to_hex_str(buf, vfy->seed.data, vfy->seed.len);
fprintf(dsaresp, "domain_parameter_seed = %s\n", buf);
- fprintf(dsaresp, "index = %02x\n", vfy->h.data[0]);
- }
-
+ fprintf(dsaresp, "index = %02x\n", vfy->h.data[0]);
+ }
}
fputc('\n', dsaresp);
- if(pqg!=NULL) {
+ if (pqg != NULL) {
PQG_DestroyParams(pqg);
pqg = NULL;
}
- if(vfy!=NULL) {
+ if (vfy != NULL) {
PQG_DestroyVerify(vfy);
vfy = NULL;
}
@@ -4660,19 +4694,17 @@ dsa_pqggen_test(char *reqfn)
continue;
}
-
}
loser:
fclose(dsareq);
- if(pqg!=NULL) {
+ if (pqg != NULL) {
PQG_DestroyParams(pqg);
}
- if(vfy!=NULL) {
+ if (vfy != NULL) {
PQG_DestroyVerify(vfy);
}
}
-
/*
* Perform the DSA Signature Generation Test.
*
@@ -4683,12 +4715,12 @@ loser:
void
dsa_siggen_test(char *reqfn)
{
- char buf[800]; /* holds one line from the input REQUEST file
+ char buf[800]; /* holds one line from the input REQUEST file
* or to the output RESPONSE file.
* max for Msg = ....
*/
- FILE *dsareq; /* input stream from the REQUEST file */
- FILE *dsaresp; /* output stream to the RESPONSE file */
+ FILE *dsareq; /* input stream from the REQUEST file */
+ FILE *dsaresp; /* output stream to the RESPONSE file */
int modulus;
int L;
int N;
@@ -4697,8 +4729,8 @@ dsa_siggen_test(char *reqfn)
PQGParams *pqg = NULL;
PQGVerify *vfy = NULL;
DSAPrivateKey *dsakey = NULL;
- int keySizeIndex; /* index for valid key sizes */
- unsigned char hashBuf[HASH_LENGTH_MAX]; /* SHA-x hash (160-512 bits) */
+ int keySizeIndex; /* index for valid key sizes */
+ unsigned char hashBuf[HASH_LENGTH_MAX]; /* SHA-x hash (160-512 bits) */
unsigned char sig[DSA_MAX_SIGNATURE_LEN];
SECItem digest, signature;
HASH_HashType hashType = HASH_AlgNULL;
@@ -4716,21 +4748,21 @@ dsa_siggen_test(char *reqfn)
/* [Mod = x] */
if (buf[0] == '[') {
- if(pqg!=NULL) {
+ if (pqg != NULL) {
PQG_DestroyParams(pqg);
pqg = NULL;
}
- if(vfy!=NULL) {
+ if (vfy != NULL) {
PQG_DestroyVerify(vfy);
vfy = NULL;
}
if (dsakey != NULL) {
- PORT_FreeArena(dsakey->params.arena, PR_TRUE);
- dsakey = NULL;
+ PORT_FreeArena(dsakey->params.arena, PR_TRUE);
+ dsakey = NULL;
}
- if (sscanf(buf, "[mod = L=%d, N=%d, SHA-%d]", &L, & N,
- &hashNum) != 3) {
+ if (sscanf(buf, "[mod = L=%d, N=%d, SHA-%d]", &L, &N,
+ &hashNum) != 3) {
use_dsa1 = PR_TRUE;
hashNum = 1;
if (sscanf(buf, "[mod = %d]", &modulus) != 1) {
@@ -4746,22 +4778,23 @@ dsa_siggen_test(char *reqfn)
*/
if (use_dsa1) {
keySizeIndex = PQG_PBITS_TO_INDEX(modulus);
- if(keySizeIndex == -1 || modulus<512 || modulus>1024) {
+ if (keySizeIndex == -1 || modulus < 512 || modulus > 1024) {
fprintf(dsaresp,
- "DSA key size must be a multiple of 64 between 512 "
- "and 1024, inclusive");
+ "DSA key size must be a multiple of 64 between 512 "
+ "and 1024, inclusive");
goto loser;
}
/* Generate PQG and output PQG */
if (PQG_ParamGenSeedLen(keySizeIndex, PQG_TEST_SEED_BYTES,
- &pqg, &vfy) != SECSuccess) {
- fprintf(dsaresp,
+ &pqg, &vfy) !=
+ SECSuccess) {
+ fprintf(dsaresp,
"ERROR: Unable to generate PQG parameters");
goto loser;
}
} else {
if (PQG_ParamGenV2(L, N, N, &pqg, &vfy) != SECSuccess) {
- fprintf(dsaresp,
+ fprintf(dsaresp,
"ERROR: Unable to generate PQG parameters");
goto loser;
}
@@ -4778,10 +4811,10 @@ dsa_siggen_test(char *reqfn)
fprintf(dsaresp, "ERROR: Unable to generate DSA key");
goto loser;
}
-
+
hashType = sha_get_hashType(hashNum);
if (hashType == HASH_AlgNULL) {
- fprintf(dsaresp, "ERROR: invalid hash (SHA-%d)",hashNum);
+ fprintf(dsaresp, "ERROR: invalid hash (SHA-%d)", hashNum);
goto loser;
}
continue;
@@ -4798,22 +4831,21 @@ dsa_siggen_test(char *reqfn)
}
memset(hashBuf, 0, sizeof hashBuf);
- memset(sig, 0, sizeof sig);
+ memset(sig, 0, sizeof sig);
i = 3;
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &msg[j]);
}
if (fips_hashBuf(hashType, hashBuf, msg, j) != SECSuccess) {
- fprintf(dsaresp, "ERROR: Unable to generate SHA% digest",
- hashNum);
- goto loser;
+ fprintf(dsaresp, "ERROR: Unable to generate SHA% digest",
+ hashNum);
+ goto loser;
}
-
digest.type = siBuffer;
digest.data = hashBuf;
digest.len = fips_hashLen(hashType);
@@ -4826,10 +4858,10 @@ dsa_siggen_test(char *reqfn)
goto loser;
}
len = signature.len;
- if (len%2 != 0) {
+ if (len % 2 != 0) {
goto loser;
}
- len = len/2;
+ len = len / 2;
/* output the orginal Msg, and generated Y, R, and S */
fputs(buf, dsaresp);
@@ -4843,15 +4875,14 @@ dsa_siggen_test(char *reqfn)
fputc('\n', dsaresp);
continue;
}
-
}
loser:
fclose(dsareq);
- if(pqg != NULL) {
+ if (pqg != NULL) {
PQG_DestroyParams(pqg);
pqg = NULL;
}
- if(vfy != NULL) {
+ if (vfy != NULL) {
PQG_DestroyVerify(vfy);
vfy = NULL;
}
@@ -4861,7 +4892,7 @@ loser:
}
}
- /*
+/*
* Perform the DSA Signature Verification Test.
*
* reqfn is the pathname of the REQUEST file.
@@ -4871,19 +4902,19 @@ loser:
void
dsa_sigver_test(char *reqfn)
{
- char buf[800]; /* holds one line from the input REQUEST file
+ char buf[800]; /* holds one line from the input REQUEST file
* or to the output RESPONSE file.
* max for Msg = ....
*/
- FILE *dsareq; /* input stream from the REQUEST file */
- FILE *dsaresp; /* output stream to the RESPONSE file */
+ FILE *dsareq; /* input stream from the REQUEST file */
+ FILE *dsaresp; /* output stream to the RESPONSE file */
int L;
int N;
unsigned int i, j;
SECItem digest, signature;
DSAPublicKey pubkey;
- unsigned int pgySize; /* size for p, g, and y */
- unsigned char hashBuf[HASH_LENGTH_MAX]; /* SHA-x hash (160-512 bits) */
+ unsigned int pgySize; /* size for p, g, and y */
+ unsigned char hashBuf[HASH_LENGTH_MAX]; /* SHA-x hash (160-512 bits) */
unsigned char sig[DSA_MAX_SIGNATURE_LEN];
HASH_HashType hashType = HASH_AlgNULL;
int hashNum = 0;
@@ -4902,9 +4933,9 @@ dsa_sigver_test(char *reqfn)
/* [Mod = x] */
if (buf[0] == '[') {
- if (sscanf(buf, "[mod = L=%d, N=%d, SHA-%d]", &L, & N,
- &hashNum) != 3) {
- N=160;
+ if (sscanf(buf, "[mod = L=%d, N=%d, SHA-%d]", &L, &N,
+ &hashNum) != 3) {
+ N = 160;
hashNum = 1;
if (sscanf(buf, "[mod = %d]", &L) != 1) {
goto loser;
@@ -4917,16 +4948,16 @@ dsa_sigver_test(char *reqfn)
if (pubkey.params.subPrime.data) { /* Q */
SECITEM_ZfreeItem(&pubkey.params.subPrime, PR_FALSE);
}
- if (pubkey.params.base.data) { /* G */
+ if (pubkey.params.base.data) { /* G */
SECITEM_ZfreeItem(&pubkey.params.base, PR_FALSE);
}
- if (pubkey.publicValue.data) { /* Y */
+ if (pubkey.publicValue.data) { /* Y */
SECITEM_ZfreeItem(&pubkey.publicValue, PR_FALSE);
}
fputs(buf, dsaresp);
/* calculate the size of p, g, and y then allocate items */
- pgySize = L/8;
+ pgySize = L / 8;
SECITEM_AllocItem(NULL, &pubkey.params.prime, pgySize);
SECITEM_AllocItem(NULL, &pubkey.params.base, pgySize);
SECITEM_AllocItem(NULL, &pubkey.publicValue, pgySize);
@@ -4934,12 +4965,12 @@ dsa_sigver_test(char *reqfn)
pubkey.publicValue.len = pgySize;
/* q always N/8 bytes */
- SECITEM_AllocItem(NULL, &pubkey.params.subPrime, N/8);
- pubkey.params.subPrime.len = N/8;
+ SECITEM_AllocItem(NULL, &pubkey.params.subPrime, N / 8);
+ pubkey.params.subPrime.len = N / 8;
hashType = sha_get_hashType(hashNum);
if (hashType == HASH_AlgNULL) {
- fprintf(dsaresp, "ERROR: invalid hash (SHA-%d)",hashNum);
+ fprintf(dsaresp, "ERROR: invalid hash (SHA-%d)", hashNum);
goto loser;
}
@@ -4952,7 +4983,7 @@ dsa_sigver_test(char *reqfn)
i++;
}
memset(pubkey.params.prime.data, 0, pubkey.params.prime.len);
- for (j=0; j< pubkey.params.prime.len; i+=2,j++) {
+ for (j = 0; j < pubkey.params.prime.len; i += 2, j++) {
hex_to_byteval(&buf[i], &pubkey.params.prime.data[j]);
}
@@ -4967,7 +4998,7 @@ dsa_sigver_test(char *reqfn)
i++;
}
memset(pubkey.params.subPrime.data, 0, pubkey.params.subPrime.len);
- for (j=0; j< pubkey.params.subPrime.len; i+=2,j++) {
+ for (j = 0; j < pubkey.params.subPrime.len; i += 2, j++) {
hex_to_byteval(&buf[i], &pubkey.params.subPrime.data[j]);
}
@@ -4982,7 +5013,7 @@ dsa_sigver_test(char *reqfn)
i++;
}
memset(pubkey.params.base.data, 0, pubkey.params.base.len);
- for (j=0; j< pubkey.params.base.len; i+=2,j++) {
+ for (j = 0; j < pubkey.params.base.len; i += 2, j++) {
hex_to_byteval(&buf[i], &pubkey.params.base.data[j]);
}
@@ -5004,12 +5035,12 @@ dsa_sigver_test(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]); i += 2, j++) {
hex_to_byteval(&buf[i], &msg[j]);
}
if (fips_hashBuf(hashType, hashBuf, msg, j) != SECSuccess) {
fprintf(dsaresp, "ERROR: Unable to generate SHA-%d digest",
- hashNum);
+ hashNum);
goto loser;
}
@@ -5024,7 +5055,7 @@ dsa_sigver_test(char *reqfn)
i++;
}
memset(pubkey.publicValue.data, 0, pubkey.params.subPrime.len);
- for (j=0; j< pubkey.publicValue.len; i+=2,j++) {
+ for (j = 0; j < pubkey.publicValue.len; i += 2, j++) {
hex_to_byteval(&buf[i], &pubkey.publicValue.data[j]);
}
@@ -5034,12 +5065,12 @@ dsa_sigver_test(char *reqfn)
/* R = ... */
if (buf[0] == 'R') {
- memset(sig, 0, sizeof sig);
+ memset(sig, 0, sizeof sig);
i = 1;
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j< pubkey.params.subPrime.len; i+=2,j++) {
+ for (j = 0; j < pubkey.params.subPrime.len; i += 2, j++) {
hex_to_byteval(&buf[i], &sig[j]);
}
@@ -5058,8 +5089,8 @@ dsa_sigver_test(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=pubkey.params.subPrime.len;
- j< pubkey.params.subPrime.len*2; i+=2,j++) {
+ for (j = pubkey.params.subPrime.len;
+ j < pubkey.params.subPrime.len * 2; i += 2, j++) {
hex_to_byteval(&buf[i], &sig[j]);
}
fputs(buf, dsaresp);
@@ -5069,7 +5100,7 @@ dsa_sigver_test(char *reqfn)
digest.len = fips_hashLen(hashType);
signature.type = siBuffer;
signature.data = sig;
- signature.len = pubkey.params.subPrime.len*2;
+ signature.len = pubkey.params.subPrime.len * 2;
if (DSA_VerifyDigest(&pubkey, &signature, &digest) == SECSuccess) {
fprintf(dsaresp, "Result = P\n");
@@ -5088,31 +5119,30 @@ loser:
if (pubkey.params.subPrime.data) { /* Q */
SECITEM_ZfreeItem(&pubkey.params.subPrime, PR_FALSE);
}
- if (pubkey.params.base.data) { /* G */
+ if (pubkey.params.base.data) { /* G */
SECITEM_ZfreeItem(&pubkey.params.base, PR_FALSE);
}
- if (pubkey.publicValue.data) { /* Y */
+ if (pubkey.publicValue.data) { /* Y */
SECITEM_ZfreeItem(&pubkey.publicValue, PR_FALSE);
}
}
-static void
-pad(unsigned char *buf, int pad_len, unsigned char *src, int src_len)
+static void
+pad(unsigned char *buf, int pad_len, unsigned char *src, int src_len)
{
int offset = 0;
/* this shouldn't happen, fail right away rather than produce bad output */
if (pad_len < src_len) {
- fprintf(stderr, "data bigger than expected! %d > %d\n", src_len, pad_len);
- exit(1);
+ fprintf(stderr, "data bigger than expected! %d > %d\n", src_len, pad_len);
+ exit(1);
}
offset = pad_len - src_len;
memset(buf, 0, offset);
- memcpy(buf+offset, src, src_len);
+ memcpy(buf + offset, src, src_len);
return;
}
-
/*
* Perform the DSA Key Pair Generation Test.
*
@@ -5123,23 +5153,23 @@ pad(unsigned char *buf, int pad_len, unsigned char *src, int src_len)
void
rsa_keypair_test(char *reqfn)
{
- char buf[800]; /* holds one line from the input REQUEST file
+ char buf[800]; /* holds one line from the input REQUEST file
* or to the output RESPONSE file.
* 800 to hold (384 public key (x2 for HEX) + 1'\n'
*/
- unsigned char buf2[400]; /* can't need more then 1/2 buf length */
- FILE *rsareq; /* input stream from the REQUEST file */
- FILE *rsaresp; /* output stream to the RESPONSE file */
+ unsigned char buf2[400]; /* can't need more then 1/2 buf length */
+ FILE *rsareq; /* input stream from the REQUEST file */
+ FILE *rsaresp; /* output stream to the RESPONSE file */
int count;
int i;
- int keySize; /* key size in bits*/
- int len = 0; /* key size in bytes */
- int len2 = 0; /* key size in bytes/2 (prime size) */
+ int keySize = 1; /* key size in bits*/
+ int len = 0; /* key size in bytes */
+ int len2 = 0; /* key size in bytes/2 (prime size) */
SECItem e;
unsigned char default_e[] = { 0x1, 0x0, 0x1 };
e.data = default_e;
- e.len = sizeof (default_e);
+ e.len = sizeof(default_e);
rsareq = fopen(reqfn, "r");
rsaresp = stdout;
@@ -5152,13 +5182,13 @@ rsa_keypair_test(char *reqfn)
/* [Mod = x] */
if (buf[0] == '[') {
- if (buf[1] == 'm') {
- if (sscanf(buf, "[mod = %d]", &keySize) != 1) {
+ if (buf[1] == 'm') {
+ if (sscanf(buf, "[mod = %d]", &keySize) != 1) {
goto loser;
- }
- len = keySize/8;
- len2 = keySize/16;
- }
+ }
+ len = keySize / 8;
+ len2 = keySize / 16;
+ }
fputs(buf, rsaresp);
continue;
}
@@ -5176,24 +5206,24 @@ rsa_keypair_test(char *reqfn)
fprintf(rsaresp, "ERROR: Unable to generate RSA key");
goto loser;
}
- pad(buf2,len,rsakey->publicExponent.data,
- rsakey->publicExponent.len);
+ pad(buf2, len, rsakey->publicExponent.data,
+ rsakey->publicExponent.len);
to_hex_str(buf, buf2, len);
fprintf(rsaresp, "e = %s\n", buf);
- pad(buf2,len2,rsakey->prime1.data,
- rsakey->prime1.len);
+ pad(buf2, len2, rsakey->prime1.data,
+ rsakey->prime1.len);
to_hex_str(buf, buf2, len2);
fprintf(rsaresp, "p = %s\n", buf);
- pad(buf2,len2,rsakey->prime2.data,
- rsakey->prime2.len);
+ pad(buf2, len2, rsakey->prime2.data,
+ rsakey->prime2.len);
to_hex_str(buf, buf2, len2);
fprintf(rsaresp, "q = %s\n", buf);
- pad(buf2,len,rsakey->modulus.data,
- rsakey->modulus.len);
+ pad(buf2, len, rsakey->modulus.data,
+ rsakey->modulus.len);
to_hex_str(buf, buf2, len);
fprintf(rsaresp, "n = %s\n", buf);
- pad(buf2,len,rsakey->privateExponent.data,
- rsakey->privateExponent.len);
+ pad(buf2, len, rsakey->privateExponent.data,
+ rsakey->privateExponent.len);
to_hex_str(buf, buf2, len);
fprintf(rsaresp, "d = %s\n", buf);
fprintf(rsaresp, "\n");
@@ -5202,7 +5232,6 @@ rsa_keypair_test(char *reqfn)
}
continue;
}
-
}
loser:
fclose(rsareq);
@@ -5218,37 +5247,38 @@ loser:
void
rsa_siggen_test(char *reqfn)
{
- char buf[2*RSA_MAX_TEST_MODULUS_BYTES+1];
- /* buf holds one line from the input REQUEST file
+ char buf[2 * RSA_MAX_TEST_MODULUS_BYTES + 1];
+ /* buf holds one line from the input REQUEST file
* or to the output RESPONSE file.
* 2x for HEX output + 1 for \n
*/
- FILE *rsareq; /* input stream from the REQUEST file */
- FILE *rsaresp; /* output stream to the RESPONSE file */
+ FILE *rsareq; /* input stream from the REQUEST file */
+ FILE *rsaresp; /* output stream to the RESPONSE file */
int i, j;
- unsigned char sha[HASH_LENGTH_MAX]; /* SHA digest */
- unsigned int shaLength = 0; /* length of SHA */
- HASH_HashType shaAlg = HASH_AlgNULL; /* type of SHA Alg */
- SECOidTag shaOid = SEC_OID_UNKNOWN;
- int modulus; /* the Modulus size */
- int publicExponent = DEFAULT_RSA_PUBLIC_EXPONENT;
- SECItem pe = {0, 0, 0 };
+ unsigned char sha[HASH_LENGTH_MAX]; /* SHA digest */
+ unsigned int shaLength = 0; /* length of SHA */
+ HASH_HashType shaAlg = HASH_AlgNULL; /* type of SHA Alg */
+ SECOidTag shaOid = SEC_OID_UNKNOWN;
+ int modulus; /* the Modulus size */
+ int publicExponent = DEFAULT_RSA_PUBLIC_EXPONENT;
+ SECItem pe = { 0, 0, 0 };
unsigned char pubEx[4];
int peCount = 0;
- RSAPrivateKey *rsaBlapiPrivKey = NULL; /* holds RSA private and
+ RSAPrivateKey *rsaBlapiPrivKey = NULL; /* holds RSA private and
* public keys */
- RSAPublicKey *rsaBlapiPublicKey = NULL; /* hold RSA public key */
+ RSAPublicKey *rsaBlapiPublicKey = NULL; /* hold RSA public key */
rsareq = fopen(reqfn, "r");
rsaresp = stdout;
/* calculate the exponent */
- for (i=0; i < 4; i++) {
+ for (i = 0; i < 4; i++) {
if (peCount || (publicExponent &
- ((unsigned long)0xff000000L >> (i*8)))) {
+ ((unsigned long)0xff000000L >> (i *
+ 8)))) {
pubEx[peCount] =
- (unsigned char)((publicExponent >> (3-i)*8) & 0xff);
+ (unsigned char)((publicExponent >> (3 - i) * 8) & 0xff);
peCount++;
}
}
@@ -5270,7 +5300,7 @@ rsa_siggen_test(char *reqfn)
goto loser;
}
if (modulus > RSA_MAX_TEST_MODULUS_BITS) {
- fprintf(rsaresp,"ERROR: modulus greater than test maximum\n");
+ fprintf(rsaresp, "ERROR: modulus greater than test maximum\n");
goto loser;
}
@@ -5297,8 +5327,8 @@ rsa_siggen_test(char *reqfn)
/* convert private key to public key. Memory
* is freed with private key's arena */
rsaBlapiPublicKey = (RSAPublicKey *)PORT_ArenaAlloc(
- rsaBlapiPrivKey->arena,
- sizeof(RSAPublicKey));
+ rsaBlapiPrivKey->arena,
+ sizeof(RSAPublicKey));
rsaBlapiPublicKey->modulus.len = rsaBlapiPrivKey->modulus.len;
rsaBlapiPublicKey->modulus.data = rsaBlapiPrivKey->modulus.data;
@@ -5311,28 +5341,27 @@ rsa_siggen_test(char *reqfn)
/* SHAAlg = ... */
if (strncmp(buf, "SHAAlg", 6) == 0) {
- i = 6;
- while (isspace(buf[i]) || buf[i] == '=') {
- i++;
- }
- /* set the SHA Algorithm */
- if (strncmp(&buf[i], "SHA1", 4) == 0) {
+ i = 6;
+ while (isspace(buf[i]) || buf[i] == '=') {
+ i++;
+ }
+ /* set the SHA Algorithm */
+ if (strncmp(&buf[i], "SHA1", 4) == 0) {
shaAlg = HASH_AlgSHA1;
- } else if (strncmp(&buf[i], "SHA224", 6) == 0) {
+ } else if (strncmp(&buf[i], "SHA224", 6) == 0) {
shaAlg = HASH_AlgSHA224;
- } else if (strncmp(&buf[i], "SHA256", 6) == 0) {
+ } else if (strncmp(&buf[i], "SHA256", 6) == 0) {
shaAlg = HASH_AlgSHA256;
- } else if (strncmp(&buf[i], "SHA384", 6)== 0) {
- shaAlg = HASH_AlgSHA384;
- } else if (strncmp(&buf[i], "SHA512", 6) == 0) {
- shaAlg = HASH_AlgSHA512;
- } else {
- fprintf(rsaresp, "ERROR: Unable to find SHAAlg type");
- goto loser;
- }
- fputs(buf, rsaresp);
- continue;
-
+ } else if (strncmp(&buf[i], "SHA384", 6) == 0) {
+ shaAlg = HASH_AlgSHA384;
+ } else if (strncmp(&buf[i], "SHA512", 6) == 0) {
+ shaAlg = HASH_AlgSHA512;
+ } else {
+ fprintf(rsaresp, "ERROR: Unable to find SHAAlg type");
+ goto loser;
+ }
+ fputs(buf, rsaresp);
+ continue;
}
/* Msg = ... */
if (strncmp(buf, "Msg", 3) == 0) {
@@ -5340,13 +5369,13 @@ rsa_siggen_test(char *reqfn)
unsigned char msg[128]; /* MAX msg 128 */
unsigned int rsa_bytes_signed;
unsigned char rsa_computed_signature[RSA_MAX_TEST_MODULUS_BYTES];
- SECStatus rv = SECFailure;
- NSSLOWKEYPublicKey * rsa_public_key;
- NSSLOWKEYPrivateKey * rsa_private_key;
- NSSLOWKEYPrivateKey low_RSA_private_key = { NULL,
- NSSLOWKEYRSAKey, };
- NSSLOWKEYPublicKey low_RSA_public_key = { NULL,
- NSSLOWKEYRSAKey, };
+ SECStatus rv = SECFailure;
+ NSSLOWKEYPublicKey *rsa_public_key;
+ NSSLOWKEYPrivateKey *rsa_private_key;
+ NSSLOWKEYPrivateKey low_RSA_private_key = { NULL,
+ NSSLOWKEYRSAKey };
+ NSSLOWKEYPublicKey low_RSA_public_key = { NULL,
+ NSSLOWKEYRSAKey };
low_RSA_private_key.u.rsa = *rsaBlapiPrivKey;
low_RSA_public_key.u.rsa = *rsaBlapiPublicKey;
@@ -5363,13 +5392,13 @@ rsa_siggen_test(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; isxdigit(buf[i]) && j < sizeof(msg); i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]) && j < sizeof(msg); i += 2, j++) {
hex_to_byteval(&buf[i], &msg[j]);
}
shaLength = fips_hashLen(shaAlg);
- if (fips_hashBuf(shaAlg,sha,msg,j) != SECSuccess) {
+ if (fips_hashBuf(shaAlg, sha, msg, j) != SECSuccess) {
if (shaLength == 0) {
- fprintf(rsaresp, "ERROR: SHAAlg not defined.");
+ fprintf(rsaresp, "ERROR: SHAAlg not defined.");
}
fprintf(rsaresp, "ERROR: Unable to generate SHA%x",
shaLength == 160 ? 1 : shaLength);
@@ -5378,17 +5407,17 @@ rsa_siggen_test(char *reqfn)
shaOid = fips_hashOid(shaAlg);
/* Perform RSA signature with the RSA private key. */
- rv = RSA_HashSign( shaOid,
- rsa_private_key,
- rsa_computed_signature,
- &rsa_bytes_signed,
- nsslowkey_PrivateModulusLen(rsa_private_key),
- sha,
- shaLength);
+ rv = RSA_HashSign(shaOid,
+ rsa_private_key,
+ rsa_computed_signature,
+ &rsa_bytes_signed,
+ nsslowkey_PrivateModulusLen(rsa_private_key),
+ sha,
+ shaLength);
- if( rv != SECSuccess ) {
- fprintf(rsaresp, "ERROR: RSA_HashSign failed");
- goto loser;
+ if (rv != SECSuccess) {
+ fprintf(rsaresp, "ERROR: RSA_HashSign failed");
+ goto loser;
}
/* Output the signature */
@@ -5397,15 +5426,15 @@ rsa_siggen_test(char *reqfn)
fprintf(rsaresp, "S = %s\n", buf);
/* Perform RSA verification with the RSA public key. */
- rv = RSA_HashCheckSign( shaOid,
- rsa_public_key,
- rsa_computed_signature,
- rsa_bytes_signed,
- sha,
- shaLength);
- if( rv != SECSuccess ) {
- fprintf(rsaresp, "ERROR: RSA_HashCheckSign failed");
- goto loser;
+ rv = RSA_HashCheckSign(shaOid,
+ rsa_public_key,
+ rsa_computed_signature,
+ rsa_bytes_signed,
+ sha,
+ shaLength);
+ if (rv != SECSuccess) {
+ fprintf(rsaresp, "ERROR: RSA_HashCheckSign failed");
+ goto loser;
}
continue;
}
@@ -5419,7 +5448,6 @@ loser:
rsaBlapiPrivKey = NULL;
rsaBlapiPublicKey = NULL;
}
-
}
/*
* Perform the RSA Signature Verification Test.
@@ -5431,24 +5459,24 @@ loser:
void
rsa_sigver_test(char *reqfn)
{
- char buf[2*RSA_MAX_TEST_MODULUS_BYTES+7];
- /* buf holds one line from the input REQUEST file
+ char buf[2 * RSA_MAX_TEST_MODULUS_BYTES + 7];
+ /* buf holds one line from the input REQUEST file
* or to the output RESPONSE file.
* s = 2x for HEX output + 1 for \n
*/
- FILE *rsareq; /* input stream from the REQUEST file */
- FILE *rsaresp; /* output stream to the RESPONSE file */
+ FILE *rsareq; /* input stream from the REQUEST file */
+ FILE *rsaresp; /* output stream to the RESPONSE file */
int i, j;
- unsigned char sha[HASH_LENGTH_MAX]; /* SHA digest */
- unsigned int shaLength = 0; /* actual length of the digest */
- HASH_HashType shaAlg = HASH_AlgNULL;
- SECOidTag shaOid = SEC_OID_UNKNOWN;
- int modulus = 0; /* the Modulus size */
- unsigned char signature[513]; /* largest signature size + '\n' */
- unsigned int signatureLength = 0; /* actual length of the signature */
+ unsigned char sha[HASH_LENGTH_MAX]; /* SHA digest */
+ unsigned int shaLength = 0; /* actual length of the digest */
+ HASH_HashType shaAlg = HASH_AlgNULL;
+ SECOidTag shaOid = SEC_OID_UNKNOWN;
+ int modulus = 0; /* the Modulus size */
+ unsigned char signature[513]; /* largest signature size + '\n' */
+ unsigned int signatureLength = 0; /* actual length of the signature */
PRBool keyvalid = PR_TRUE;
- RSAPublicKey rsaBlapiPublicKey; /* hold RSA public key */
+ RSAPublicKey rsaBlapiPublicKey; /* hold RSA public key */
rsareq = fopen(reqfn, "r");
rsaresp = stdout;
@@ -5463,7 +5491,7 @@ rsa_sigver_test(char *reqfn)
/* [Mod = ...] */
if (buf[0] == '[') {
- unsigned int flen; /* length in bytes of the field size */
+ unsigned int flen; /* length in bytes of the field size */
if (rsaBlapiPublicKey.modulus.data) { /* n */
SECITEM_ZfreeItem(&rsaBlapiPublicKey.modulus, PR_FALSE);
@@ -5473,13 +5501,13 @@ rsa_sigver_test(char *reqfn)
}
if (modulus > RSA_MAX_TEST_MODULUS_BITS) {
- fprintf(rsaresp,"ERROR: modulus greater than test maximum\n");
+ fprintf(rsaresp, "ERROR: modulus greater than test maximum\n");
goto loser;
}
fputs(buf, rsaresp);
- signatureLength = flen = modulus/8;
+ signatureLength = flen = modulus / 8;
SECITEM_AllocItem(NULL, &rsaBlapiPublicKey.modulus, flen);
if (rsaBlapiPublicKey.modulus.data == NULL) {
@@ -5500,7 +5528,7 @@ rsa_sigver_test(char *reqfn)
if (!keyvalid) {
fprintf(rsaresp, "ERROR: rsa_sigver n not valid.\n");
- goto loser;
+ goto loser;
}
fputs(buf, rsaresp);
continue;
@@ -5508,27 +5536,27 @@ rsa_sigver_test(char *reqfn)
/* SHAAlg = ... */
if (strncmp(buf, "SHAAlg", 6) == 0) {
- i = 6;
- while (isspace(buf[i]) || buf[i] == '=') {
- i++;
- }
- /* set the SHA Algorithm */
- if (strncmp(&buf[i], "SHA1", 4) == 0) {
+ i = 6;
+ while (isspace(buf[i]) || buf[i] == '=') {
+ i++;
+ }
+ /* set the SHA Algorithm */
+ if (strncmp(&buf[i], "SHA1", 4) == 0) {
shaAlg = HASH_AlgSHA1;
- } else if (strncmp(&buf[i], "SHA224", 6) == 0) {
+ } else if (strncmp(&buf[i], "SHA224", 6) == 0) {
shaAlg = HASH_AlgSHA224;
- } else if (strncmp(&buf[i], "SHA256", 6) == 0) {
+ } else if (strncmp(&buf[i], "SHA256", 6) == 0) {
shaAlg = HASH_AlgSHA256;
- } else if (strncmp(&buf[i], "SHA384", 6) == 0) {
- shaAlg = HASH_AlgSHA384;
- } else if (strncmp(&buf[i], "SHA512", 6) == 0) {
- shaAlg = HASH_AlgSHA512;
- } else {
- fprintf(rsaresp, "ERROR: Unable to find SHAAlg type");
- goto loser;
- }
- fputs(buf, rsaresp);
- continue;
+ } else if (strncmp(&buf[i], "SHA384", 6) == 0) {
+ shaAlg = HASH_AlgSHA384;
+ } else if (strncmp(&buf[i], "SHA512", 6) == 0) {
+ shaAlg = HASH_AlgSHA512;
+ } else {
+ fprintf(rsaresp, "ERROR: Unable to find SHAAlg type");
+ goto loser;
+ }
+ fputs(buf, rsaresp);
+ continue;
}
/* e = ... public Key */
@@ -5550,23 +5578,26 @@ rsa_sigver_test(char *reqfn)
while (isxdigit(buf[i])) {
hex_to_byteval(&buf[i], &t);
if (t == 0) {
- i+=2;
- } else break;
+ i += 2;
+ } else
+ break;
}
-
+
/* get the exponent */
- for (j=0; isxdigit(buf[i]) && j < sizeof data; i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]) && j < sizeof data; i += 2, j++) {
hex_to_byteval(&buf[i], &data[j]);
}
- if (j == 0) { j = 1; } /* to handle 1 byte length exponents */
+ if (j == 0) {
+ j = 1;
+ } /* to handle 1 byte length exponents */
- SECITEM_AllocItem(NULL, &rsaBlapiPublicKey.publicExponent, j);
+ SECITEM_AllocItem(NULL, &rsaBlapiPublicKey.publicExponent, j);
if (rsaBlapiPublicKey.publicExponent.data == NULL) {
goto loser;
}
- for (i=0; i < j; i++) {
+ for (i = 0; i < j; i++) {
rsaBlapiPublicKey.publicExponent.data[i] = data[i];
}
@@ -5586,14 +5617,14 @@ rsa_sigver_test(char *reqfn)
i++;
}
- for (j=0; isxdigit(buf[i]) && j < sizeof msg; i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]) && j < sizeof msg; i += 2, j++) {
hex_to_byteval(&buf[i], &msg[j]);
}
shaLength = fips_hashLen(shaAlg);
- if (fips_hashBuf(shaAlg,sha,msg,j) != SECSuccess) {
+ if (fips_hashBuf(shaAlg, sha, msg, j) != SECSuccess) {
if (shaLength == 0) {
- fprintf(rsaresp, "ERROR: SHAAlg not defined.");
+ fprintf(rsaresp, "ERROR: SHAAlg not defined.");
}
fprintf(rsaresp, "ERROR: Unable to generate SHA%x",
shaLength == 160 ? 1 : shaLength);
@@ -5602,15 +5633,14 @@ rsa_sigver_test(char *reqfn)
fputs(buf, rsaresp);
continue;
-
}
/* S = ... */
if (buf[0] == 'S') {
SECStatus rv = SECFailure;
- NSSLOWKEYPublicKey * rsa_public_key;
- NSSLOWKEYPublicKey low_RSA_public_key = { NULL,
- NSSLOWKEYRSAKey, };
+ NSSLOWKEYPublicKey *rsa_public_key;
+ NSSLOWKEYPublicKey low_RSA_public_key = { NULL,
+ NSSLOWKEYRSAKey };
/* convert to a low RSA public key */
low_RSA_public_key.u.rsa = rsaBlapiPublicKey;
@@ -5622,7 +5652,7 @@ rsa_sigver_test(char *reqfn)
i++;
}
- for (j=0; isxdigit(buf[i]) && j < sizeof signature; i+=2,j++) {
+ for (j = 0; isxdigit(buf[i]) && j < sizeof signature; i += 2, j++) {
hex_to_byteval(&buf[i], &signature[j]);
}
@@ -5632,13 +5662,13 @@ rsa_sigver_test(char *reqfn)
shaOid = fips_hashOid(shaAlg);
/* Perform RSA verification with the RSA public key. */
- rv = RSA_HashCheckSign( shaOid,
- rsa_public_key,
- signature,
- signatureLength,
- sha,
- shaLength);
- if( rv == SECSuccess ) {
+ rv = RSA_HashCheckSign(shaOid,
+ rsa_public_key,
+ signature,
+ signatureLength,
+ sha,
+ shaLength);
+ if (rv == SECSuccess) {
fputs("Result = P\n", rsaresp);
} else {
fputs("Result = F\n", rsaresp);
@@ -5659,7 +5689,7 @@ loser:
void
tls(char *reqfn)
{
- char buf[256]; /* holds one line from the input REQUEST file.
+ char buf[256]; /* holds one line from the input REQUEST file.
* needs to be large enough to hold the longest
* line "XSeed = <128 hex digits>\n".
*/
@@ -5677,41 +5707,41 @@ tls(char *reqfn)
unsigned int i, j;
CK_SLOT_ID slotList[10];
CK_SLOT_ID slotID;
- CK_ULONG slotListCount = sizeof(slotList)/sizeof(slotList[0]);
+ CK_ULONG slotListCount = sizeof(slotList) / sizeof(slotList[0]);
CK_ULONG count;
- static const CK_C_INITIALIZE_ARGS pk11args= {
- NULL, NULL, NULL, NULL, CKF_LIBRARY_CANT_CREATE_OS_THREADS ,
- (void *)"flags=readOnly,noCertDB,noModDB", NULL };
+ static const CK_C_INITIALIZE_ARGS pk11args = {
+ NULL, NULL, NULL, NULL, CKF_LIBRARY_CANT_CREATE_OS_THREADS,
+ (void *)"flags=readOnly,noCertDB,noModDB", NULL
+ };
static CK_OBJECT_CLASS ck_secret = CKO_SECRET_KEY;
static CK_KEY_TYPE ck_generic = CKK_GENERIC_SECRET;
static CK_BBOOL ck_true = CK_TRUE;
static CK_ULONG one = 1;
CK_ATTRIBUTE create_template[] = {
- { CKA_VALUE, NULL, 0 },
- { CKA_CLASS, &ck_secret, sizeof(ck_secret) },
- { CKA_KEY_TYPE, &ck_generic, sizeof(ck_generic) },
- { CKA_DERIVE, &ck_true, sizeof (ck_true) },
+ { CKA_VALUE, NULL, 0 },
+ { CKA_CLASS, &ck_secret, sizeof(ck_secret) },
+ { CKA_KEY_TYPE, &ck_generic, sizeof(ck_generic) },
+ { CKA_DERIVE, &ck_true, sizeof(ck_true) },
};
- CK_ULONG create_template_count =
- sizeof(create_template)/sizeof(create_template[0]);
+ CK_ULONG create_template_count =
+ sizeof(create_template) / sizeof(create_template[0]);
CK_ATTRIBUTE derive_template[] = {
- { CKA_CLASS, &ck_secret, sizeof(ck_secret) },
- { CKA_KEY_TYPE, &ck_generic, sizeof(ck_generic) },
- { CKA_DERIVE, &ck_true, sizeof(ck_true) },
- { CKA_VALUE_LEN, &one, sizeof(one) },
+ { CKA_CLASS, &ck_secret, sizeof(ck_secret) },
+ { CKA_KEY_TYPE, &ck_generic, sizeof(ck_generic) },
+ { CKA_DERIVE, &ck_true, sizeof(ck_true) },
+ { CKA_VALUE_LEN, &one, sizeof(one) },
};
- CK_ULONG derive_template_count =
- sizeof(derive_template)/sizeof(derive_template[0]);
- CK_ATTRIBUTE master_template =
- { CKA_VALUE, NULL, 0 };
- CK_ATTRIBUTE kb1_template =
- { CKA_VALUE, NULL, 0 };
- CK_ATTRIBUTE kb2_template =
- { CKA_VALUE, NULL, 0 };
-
-
- CK_MECHANISM master_mech = { CKM_TLS_MASTER_KEY_DERIVE , NULL, 0 };
- CK_MECHANISM key_block_mech = { CKM_TLS_KEY_AND_MAC_DERIVE , NULL, 0};
+ CK_ULONG derive_template_count =
+ sizeof(derive_template) / sizeof(derive_template[0]);
+ CK_ATTRIBUTE master_template =
+ { CKA_VALUE, NULL, 0 };
+ CK_ATTRIBUTE kb1_template =
+ { CKA_VALUE, NULL, 0 };
+ CK_ATTRIBUTE kb2_template =
+ { CKA_VALUE, NULL, 0 };
+
+ CK_MECHANISM master_mech = { CKM_TLS_MASTER_KEY_DERIVE, NULL, 0 };
+ CK_MECHANISM key_block_mech = { CKM_TLS_KEY_AND_MAC_DERIVE, NULL, 0 };
CK_SSL3_MASTER_KEY_DERIVE_PARAMS master_params;
CK_SSL3_KEY_MAT_PARAMS key_block_params;
CK_SSL3_KEY_MAT_OUT key_material;
@@ -5723,7 +5753,7 @@ tls(char *reqfn)
master_params.RandomInfo.ulClientRandomLen = sizeof(clientHello_random);
master_params.RandomInfo.pServerRandom = serverHello_random;
master_params.RandomInfo.ulServerRandomLen = sizeof(serverHello_random);
- master_mech.pParameter = (void *) &master_params;
+ master_mech.pParameter = (void *)&master_params;
master_mech.ulParameterLen = sizeof(master_params);
key_block_params.ulMacSizeInBits = 0;
key_block_params.ulKeySizeInBits = 0;
@@ -5734,26 +5764,25 @@ tls(char *reqfn)
key_block_params.RandomInfo.pServerRandom = server_random;
key_block_params.RandomInfo.ulServerRandomLen = sizeof(server_random);
key_block_params.pReturnedKeyMaterial = &key_material;
- key_block_mech.pParameter = (void *) &key_block_params;
+ key_block_mech.pParameter = (void *)&key_block_params;
key_block_mech.ulParameterLen = sizeof(key_block_params);
-
crv = NSC_Initialize((CK_VOID_PTR)&pk11args);
if (crv != CKR_OK) {
- fprintf(stderr,"NSC_Initialize failed crv=0x%x\n",(unsigned int)crv);
- goto loser;
+ fprintf(stderr, "NSC_Initialize failed crv=0x%x\n", (unsigned int)crv);
+ goto loser;
}
count = slotListCount;
- crv = NSC_GetSlotList(PR_TRUE,slotList, &count);
+ crv = NSC_GetSlotList(PR_TRUE, slotList, &count);
if (crv != CKR_OK) {
- fprintf(stderr,"NSC_GetSlotList failed crv=0x%x\n",(unsigned int)crv);
- goto loser;
+ fprintf(stderr, "NSC_GetSlotList failed crv=0x%x\n", (unsigned int)crv);
+ goto loser;
}
if ((count > slotListCount) || count < 1) {
- fprintf(stderr,
-"NSC_GetSlotList returned too many or too few slots: %d slots max=%d min=1\n",
- (int) count, (int) slotListCount);
- goto loser;
+ fprintf(stderr,
+ "NSC_GetSlotList returned too many or too few slots: %d slots max=%d min=1\n",
+ (int)count, (int)slotListCount);
+ goto loser;
}
slotID = slotList[0];
tlsreq = fopen(reqfn, "r");
@@ -5766,49 +5795,49 @@ tls(char *reqfn)
}
/* [Xchange - SHA1] */
if (buf[0] == '[') {
- if (strncmp(buf, "[TLS", 4) == 0) {
- if (buf[7] == '0') {
- master_mech.mechanism = CKM_TLS_MASTER_KEY_DERIVE;
- key_block_mech.mechanism = CKM_TLS_KEY_AND_MAC_DERIVE;
- } else if (buf[7] == '2') {
- master_mech.mechanism =
- CKM_NSS_TLS_MASTER_KEY_DERIVE_SHA256;
- key_block_mech.mechanism =
- CKM_NSS_TLS_KEY_AND_MAC_DERIVE_SHA256;
- } else {
- fprintf(stderr, "Unknown TLS type %x\n",
- (unsigned int)buf[0]);
- goto loser;
- }
- }
- if (strncmp(buf, "[pre-master", 11) == 0) {
- if (sscanf(buf, "[pre-master secret length = %d]",
- &pms_len) != 1) {
+ if (strncmp(buf, "[TLS", 4) == 0) {
+ if (buf[7] == '0') {
+ master_mech.mechanism = CKM_TLS_MASTER_KEY_DERIVE;
+ key_block_mech.mechanism = CKM_TLS_KEY_AND_MAC_DERIVE;
+ } else if (buf[7] == '2') {
+ master_mech.mechanism =
+ CKM_NSS_TLS_MASTER_KEY_DERIVE_SHA256;
+ key_block_mech.mechanism =
+ CKM_NSS_TLS_KEY_AND_MAC_DERIVE_SHA256;
+ } else {
+ fprintf(stderr, "Unknown TLS type %x\n",
+ (unsigned int)buf[0]);
goto loser;
}
- pms_len = pms_len/8;
- pms = malloc(pms_len);
- master_secret = malloc(pms_len);
- create_template[0].pValue = pms;
- create_template[0].ulValueLen = pms_len;
- master_template.pValue = master_secret;
- master_template.ulValueLen = pms_len;
- }
- if (strncmp(buf, "[key", 4) == 0) {
+ }
+ if (strncmp(buf, "[pre-master", 11) == 0) {
+ if (sscanf(buf, "[pre-master secret length = %d]",
+ &pms_len) != 1) {
+ goto loser;
+ }
+ pms_len = pms_len / 8;
+ pms = malloc(pms_len);
+ master_secret = malloc(pms_len);
+ create_template[0].pValue = pms;
+ create_template[0].ulValueLen = pms_len;
+ master_template.pValue = master_secret;
+ master_template.ulValueLen = pms_len;
+ }
+ if (strncmp(buf, "[key", 4) == 0) {
if (sscanf(buf, "[key block length = %d]", &key_block_len) != 1) {
goto loser;
}
- key_block_params.ulKeySizeInBits = 8;
- key_block_params.ulIVSizeInBits = key_block_len/2-8;
- key_block_len=key_block_len/8;
- key_block = malloc(key_block_len);
- kb1_template.pValue = &key_block[0];
- kb1_template.ulValueLen = 1;
- kb2_template.pValue = &key_block[1];
- kb2_template.ulValueLen = 1;
- key_material.pIVClient = &key_block[2];
- key_material.pIVServer = &key_block[2+key_block_len/2-1];
- }
+ key_block_params.ulKeySizeInBits = 8;
+ key_block_params.ulIVSizeInBits = key_block_len / 2 - 8;
+ key_block_len = key_block_len / 8;
+ key_block = malloc(key_block_len);
+ kb1_template.pValue = &key_block[0];
+ kb1_template.ulValueLen = 1;
+ kb2_template.pValue = &key_block[1];
+ kb2_template.ulValueLen = 1;
+ key_material.pIVClient = &key_block[2];
+ key_material.pIVServer = &key_block[2 + key_block_len / 2 - 1];
+ }
fputs(buf, tlsresp);
continue;
}
@@ -5827,7 +5856,7 @@ tls(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j<pms_len; i+=2,j++) {
+ for (j = 0; j < pms_len; i += 2, j++) {
hex_to_byteval(&buf[i], &pms[j]);
}
fputs(buf, tlsresp);
@@ -5839,7 +5868,7 @@ tls(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j<SSL3_RANDOM_LENGTH; i+=2,j++) {
+ for (j = 0; j < SSL3_RANDOM_LENGTH; i += 2, j++) {
hex_to_byteval(&buf[i], &serverHello_random[j]);
}
fputs(buf, tlsresp);
@@ -5851,7 +5880,7 @@ tls(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j<SSL3_RANDOM_LENGTH; i+=2,j++) {
+ for (j = 0; j < SSL3_RANDOM_LENGTH; i += 2, j++) {
hex_to_byteval(&buf[i], &clientHello_random[j]);
}
fputs(buf, tlsresp);
@@ -5863,7 +5892,7 @@ tls(char *reqfn)
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j<SSL3_RANDOM_LENGTH; i+=2,j++) {
+ for (j = 0; j < SSL3_RANDOM_LENGTH; i += 2, j++) {
hex_to_byteval(&buf[i], &server_random[j]);
}
fputs(buf, tlsresp);
@@ -5871,90 +5900,98 @@ tls(char *reqfn)
}
/* client_random = ... */
if (strncmp(buf, "client_random", 13) == 0) {
- CK_SESSION_HANDLE session;
- CK_OBJECT_HANDLE pms_handle;
- CK_OBJECT_HANDLE master_handle;
- CK_OBJECT_HANDLE fake_handle;
+ CK_SESSION_HANDLE session;
+ CK_OBJECT_HANDLE pms_handle;
+ CK_OBJECT_HANDLE master_handle;
+ CK_OBJECT_HANDLE fake_handle;
i = 13;
while (isspace(buf[i]) || buf[i] == '=') {
i++;
}
- for (j=0; j<SSL3_RANDOM_LENGTH; i+=2,j++) {
+ for (j = 0; j < SSL3_RANDOM_LENGTH; i += 2, j++) {
hex_to_byteval(&buf[i], &client_random[j]);
}
fputs(buf, tlsresp);
- crv = NSC_OpenSession(slotID, 0, NULL, NULL, &session);
- if (crv != CKR_OK) {
- fprintf(stderr,"NSC_OpenSession failed crv=0x%x\n",
- (unsigned int)crv);
- goto loser;
- }
- crv = NSC_CreateObject(session, create_template,
- create_template_count, &pms_handle);
- if (crv != CKR_OK) {
- fprintf(stderr,"NSC_CreateObject failed crv=0x%x\n",
- (unsigned int)crv);
- goto loser;
- }
- crv = NSC_DeriveKey(session, &master_mech, pms_handle,
- derive_template, derive_template_count-1, &master_handle);
- if (crv != CKR_OK) {
- fprintf(stderr,"NSC_DeriveKey(master) failed crv=0x%x\n",
- (unsigned int) crv);
- goto loser;
- }
- crv = NSC_GetAttributeValue(session, master_handle,
- &master_template, 1);
- if (crv != CKR_OK) {
- fprintf(stderr,"NSC_GetAttribute failed crv=0x%x\n",
- (unsigned int) crv);
- goto loser;
- }
+ crv = NSC_OpenSession(slotID, 0, NULL, NULL, &session);
+ if (crv != CKR_OK) {
+ fprintf(stderr, "NSC_OpenSession failed crv=0x%x\n",
+ (unsigned int)crv);
+ goto loser;
+ }
+ crv = NSC_CreateObject(session, create_template,
+ create_template_count, &pms_handle);
+ if (crv != CKR_OK) {
+ fprintf(stderr, "NSC_CreateObject failed crv=0x%x\n",
+ (unsigned int)crv);
+ goto loser;
+ }
+ crv = NSC_DeriveKey(session, &master_mech, pms_handle,
+ derive_template, derive_template_count -
+ 1,
+ &master_handle);
+ if (crv != CKR_OK) {
+ fprintf(stderr, "NSC_DeriveKey(master) failed crv=0x%x\n",
+ (unsigned int)crv);
+ goto loser;
+ }
+ crv = NSC_GetAttributeValue(session, master_handle,
+ &master_template, 1);
+ if (crv != CKR_OK) {
+ fprintf(stderr, "NSC_GetAttribute failed crv=0x%x\n",
+ (unsigned int)crv);
+ goto loser;
+ }
fputs("master_secret = ", tlsresp);
to_hex_str(buf, master_secret, pms_len);
fputs(buf, tlsresp);
fputc('\n', tlsresp);
- crv = NSC_DeriveKey(session, &key_block_mech, master_handle,
- derive_template, derive_template_count, &fake_handle);
- if (crv != CKR_OK) {
- fprintf(stderr,
- "NSC_DeriveKey(keyblock) failed crv=0x%x\n",
- (unsigned int) crv);
- goto loser;
- }
- crv = NSC_GetAttributeValue(session, key_material.hClientKey,
- &kb1_template, 1);
- if (crv != CKR_OK) {
- fprintf(stderr,"NSC_GetAttribute failed crv=0x%x\n",
- (unsigned int) crv);
- goto loser;
- }
- crv = NSC_GetAttributeValue(session, key_material.hServerKey,
- &kb2_template, 1);
- if (crv != CKR_OK) {
- fprintf(stderr,"NSC_GetAttribute failed crv=0x%x\n",
- (unsigned int) crv);
- goto loser;
- }
+ crv = NSC_DeriveKey(session, &key_block_mech, master_handle,
+ derive_template, derive_template_count, &fake_handle);
+ if (crv != CKR_OK) {
+ fprintf(stderr,
+ "NSC_DeriveKey(keyblock) failed crv=0x%x\n",
+ (unsigned int)crv);
+ goto loser;
+ }
+ crv = NSC_GetAttributeValue(session, key_material.hClientKey,
+ &kb1_template, 1);
+ if (crv != CKR_OK) {
+ fprintf(stderr, "NSC_GetAttribute failed crv=0x%x\n",
+ (unsigned int)crv);
+ goto loser;
+ }
+ crv = NSC_GetAttributeValue(session, key_material.hServerKey,
+ &kb2_template, 1);
+ if (crv != CKR_OK) {
+ fprintf(stderr, "NSC_GetAttribute failed crv=0x%x\n",
+ (unsigned int)crv);
+ goto loser;
+ }
fputs("key_block = ", tlsresp);
to_hex_str(buf, key_block, key_block_len);
fputs(buf, tlsresp);
fputc('\n', tlsresp);
- crv = NSC_CloseSession(session);
+ crv = NSC_CloseSession(session);
continue;
}
}
loser:
NSC_Finalize(NULL);
- if (pms) free(pms);
- if (master_secret) free(master_secret);
- if (key_block) free(key_block);
- if (tlsreq) fclose(tlsreq);
+ if (pms)
+ free(pms);
+ if (master_secret)
+ free(master_secret);
+ if (key_block)
+ free(key_block);
+ if (tlsreq)
+ fclose(tlsreq);
}
-int main(int argc, char **argv)
+int
+main(int argc, char **argv)
{
- if (argc < 2) exit (-1);
+ if (argc < 2)
+ exit(-1);
RNG_RNGInit();
SECOID_Init();
@@ -5966,42 +6003,42 @@ int main(int argc, char **argv)
/* argv[2]=kat|mmt|mct argv[3]=ecb|cbc argv[4]=<test name>.req */
if (strcmp(argv[2], "kat") == 0) {
/* Known Answer Test (KAT) */
- tdea_kat_mmt(argv[4]);
+ tdea_kat_mmt(argv[4]);
} else if (strcmp(argv[2], "mmt") == 0) {
/* Multi-block Message Test (MMT) */
- tdea_kat_mmt(argv[4]);
+ tdea_kat_mmt(argv[4]);
} else if (strcmp(argv[2], "mct") == 0) {
- /* Monte Carlo Test (MCT) */
- if (strcmp(argv[3], "ecb") == 0) {
- /* ECB mode */
- tdea_mct(NSS_DES_EDE3, argv[4]);
- } else if (strcmp(argv[3], "cbc") == 0) {
- /* CBC mode */
- tdea_mct(NSS_DES_EDE3_CBC, argv[4]);
- }
+ /* Monte Carlo Test (MCT) */
+ if (strcmp(argv[3], "ecb") == 0) {
+ /* ECB mode */
+ tdea_mct(NSS_DES_EDE3, argv[4]);
+ } else if (strcmp(argv[3], "cbc") == 0) {
+ /* CBC mode */
+ tdea_mct(NSS_DES_EDE3_CBC, argv[4]);
+ }
}
- /*************/
- /* AES */
- /*************/
+ /*************/
+ /* AES */
+ /*************/
} else if (strcmp(argv[1], "aes") == 0) {
/* argv[2]=kat|mmt|mct argv[3]=ecb|cbc argv[4]=<test name>.req */
- if ( strcmp(argv[2], "kat") == 0) {
+ if (strcmp(argv[2], "kat") == 0) {
/* Known Answer Test (KAT) */
aes_kat_mmt(argv[4]);
} else if (strcmp(argv[2], "mmt") == 0) {
/* Multi-block Message Test (MMT) */
aes_kat_mmt(argv[4]);
} else if (strcmp(argv[2], "gcm") == 0) {
- if ( strcmp(argv[3], "decrypt") == 0) {
- aes_gcm(argv[4],0);
+ if (strcmp(argv[3], "decrypt") == 0) {
+ aes_gcm(argv[4], 0);
} else if (strcmp(argv[3], "encrypt_extiv") == 0) {
- aes_gcm(argv[4],1);
+ aes_gcm(argv[4], 1);
} else if (strcmp(argv[3], "encrypt_intiv") == 0) {
- aes_gcm(argv[4],2);
+ aes_gcm(argv[4], 2);
}
} else if (strcmp(argv[2], "mct") == 0) {
/* Monte Carlo Test (MCT) */
- if ( strcmp(argv[3], "ecb") == 0) {
+ if (strcmp(argv[3], "ecb") == 0) {
/* ECB mode */
aes_ecb_mct(argv[4]);
} else if (strcmp(argv[3], "cbc") == 0) {
@@ -6009,14 +6046,14 @@ int main(int argc, char **argv)
aes_cbc_mct(argv[4]);
}
}
- /*************/
- /* SHA */
- /*************/
+ /*************/
+ /* SHA */
+ /*************/
} else if (strcmp(argv[1], "sha") == 0) {
sha_test(argv[2]);
- /*************/
- /* RSA */
- /*************/
+ /*************/
+ /* RSA */
+ /*************/
} else if (strcmp(argv[1], "rsa") == 0) {
/* argv[2]=siggen|sigver */
/* argv[3]=<test name>.req */
@@ -6029,15 +6066,15 @@ int main(int argc, char **argv)
} else if (strcmp(argv[2], "keypair") == 0) {
/* Key Pair Generation Test */
rsa_keypair_test(argv[3]);
- }
- /*************/
- /* HMAC */
- /*************/
+ }
+ /*************/
+ /* HMAC */
+ /*************/
} else if (strcmp(argv[1], "hmac") == 0) {
hmac_test(argv[2]);
- /*************/
- /* DSA */
- /*************/
+ /*************/
+ /* DSA */
+ /*************/
} else if (strcmp(argv[1], "dsa") == 0) {
/* argv[2]=keypair|pqggen|pqgver|siggen|sigver */
/* argv[3]=<test name>.req */
@@ -6045,10 +6082,10 @@ int main(int argc, char **argv)
/* Key Pair Generation Test */
dsa_keypair_test(argv[3]);
} else if (strcmp(argv[2], "pqggen") == 0) {
- /* Domain Parameter Generation Test */
+ /* Domain Parameter Generation Test */
dsa_pqggen_test(argv[3]);
} else if (strcmp(argv[2], "pqgver") == 0) {
- /* Domain Parameter Validation Test */
+ /* Domain Parameter Validation Test */
dsa_pqgver_test(argv[3]);
} else if (strcmp(argv[2], "siggen") == 0) {
/* Signature Generation Test */
@@ -6058,43 +6095,43 @@ int main(int argc, char **argv)
dsa_sigver_test(argv[3]);
}
#ifndef NSS_DISABLE_ECC
- /*************/
- /* ECDSA */
- /*************/
+ /*************/
+ /* ECDSA */
+ /*************/
} else if (strcmp(argv[1], "ecdsa") == 0) {
- /* argv[2]=keypair|pkv|siggen|sigver argv[3]=<test name>.req */
- if ( strcmp(argv[2], "keypair") == 0) {
- /* Key Pair Generation Test */
- ecdsa_keypair_test(argv[3]);
- } else if (strcmp(argv[2], "pkv") == 0) {
- /* Public Key Validation Test */
- ecdsa_pkv_test(argv[3]);
- } else if (strcmp(argv[2], "siggen") == 0) {
- /* Signature Generation Test */
- ecdsa_siggen_test(argv[3]);
- } else if (strcmp(argv[2], "sigver") == 0) {
- /* Signature Verification Test */
- ecdsa_sigver_test(argv[3]);
- }
+ /* argv[2]=keypair|pkv|siggen|sigver argv[3]=<test name>.req */
+ if (strcmp(argv[2], "keypair") == 0) {
+ /* Key Pair Generation Test */
+ ecdsa_keypair_test(argv[3]);
+ } else if (strcmp(argv[2], "pkv") == 0) {
+ /* Public Key Validation Test */
+ ecdsa_pkv_test(argv[3]);
+ } else if (strcmp(argv[2], "siggen") == 0) {
+ /* Signature Generation Test */
+ ecdsa_siggen_test(argv[3]);
+ } else if (strcmp(argv[2], "sigver") == 0) {
+ /* Signature Verification Test */
+ ecdsa_sigver_test(argv[3]);
+ }
#endif /* NSS_DISABLE_ECC */
- /*************/
- /* RNG */
- /*************/
+ /*************/
+ /* RNG */
+ /*************/
} else if (strcmp(argv[1], "rng") == 0) {
- /* argv[2]=vst|mct argv[3]=<test name>.req */
- if ( strcmp(argv[2], "vst") == 0) {
- /* Variable Seed Test */
- rng_vst(argv[3]);
- } else if (strcmp(argv[2], "mct") == 0) {
- /* Monte Carlo Test */
- rng_mct(argv[3]);
- }
+ /* argv[2]=vst|mct argv[3]=<test name>.req */
+ if (strcmp(argv[2], "vst") == 0) {
+ /* Variable Seed Test */
+ rng_vst(argv[3]);
+ } else if (strcmp(argv[2], "mct") == 0) {
+ /* Monte Carlo Test */
+ rng_mct(argv[3]);
+ }
} else if (strcmp(argv[1], "drbg") == 0) {
- /* Variable Seed Test */
- drbg(argv[2]);
+ /* Variable Seed Test */
+ drbg(argv[2]);
} else if (strcmp(argv[1], "ddrbg") == 0) {
- debug = 1;
- drbg(argv[2]);
+ debug = 1;
+ drbg(argv[2]);
}
return 0;
}