changes to use blapitest on NT.

This commit is contained in:
mcgreer%netscape.com 2000-09-29 22:27:14 +00:00
Родитель d0d4c2fc1c
Коммит ccd7cc788f
2 изменённых файлов: 40 добавлений и 11 удалений

Просмотреть файл

@ -1509,7 +1509,10 @@ blapi_selftest(char **modesToTest, int numModesToTest,
{
blapitestCryptoFn cryptofn;
blapitestInfo info;
SECItem output, asciiOut, item, inpCopy;
SECItem output = { 0, 0, 0 };
SECItem asciiOut = { 0, 0, 0 };
SECItem inpCopy = { 0, 0, 0 };
SECItem item = { 0, 0, 0 };
SECStatus rv;
char filename[256];
PRFileDesc *file;
@ -1545,20 +1548,29 @@ blapi_selftest(char **modesToTest, int numModesToTest,
fprintf(stderr, "File %s does not exist.\n", filename);
return SECFailure;
}
memset(&item, 0, sizeof(item));
rv = SECU_FileToItem(&item, file);
PR_Close(file);
/* loop over the tests in the directory */
for (j=0; j<(int)(item.data[0] - '0'); j++) {
memset(&info.key, 0, sizeof(info.key));
memset(&info.iv, 0, sizeof(info.iv));
memset(&info.in, 0, sizeof(info.in));
memset(&info.seed, 0, sizeof(info.seed));
memset(&info.sigseed, 0, sizeof(info.sigseed));
rv = get_ascii_file_data(&info.key, mode, "key", j);
rv = get_ascii_file_data(&info.iv, mode, "iv", j);
rv = get_ascii_file_data(&info.in, mode, "plaintext", j);
#if 0
rv = get_ascii_file_data(&info.seed, mode, "keyseed", j);
#endif
rv = get_ascii_file_data(&info.sigseed, mode, "sigseed", j);
SECITEM_CopyItem(NULL, &inpCopy, &info.in);
get_params(&info, mode, j);
sprintf(filename, "%s/tests/%s/%s%d", testdir, mode,
"ciphertext", j);
file = PR_Open(filename, PR_RDONLY, 00440);
memset(&asciiOut, 0, sizeof(asciiOut));
rv = SECU_FileToItem(&asciiOut, file);
PR_Close(file);
rv = atob(&asciiOut, &output);
@ -1572,6 +1584,11 @@ blapi_selftest(char **modesToTest, int numModesToTest,
}*/
decrypt:
if (!decrypt) continue;
if (PL_strcmp(mode, "md2") == 0 ||
PL_strcmp(mode, "md5") == 0 ||
PL_strcmp(mode, "sha1") == 0) {
continue; /* hashes only go once */
}
info.encrypt = info.hash = info.sign = PR_FALSE;
info.decrypt = info.verify = PR_TRUE;
if (PL_strcmp(mode, "dsa") == 0) {
@ -1608,7 +1625,7 @@ get_file_data(char *filename, SECItem *item, PRBool b64)
SECStatus rv = SECSuccess;
PRFileDesc *file = PR_Open(filename, PR_RDONLY, 006600);
if (file) {
SECItem asciiItem;
SECItem asciiItem = { 0, 0, 0 };
rv = SECU_FileToItem(&asciiItem, file);
CHECKERROR(rv, __LINE__);
if (b64) {

Просмотреть файл

@ -1031,6 +1031,7 @@ SECU_FileToItem(SECItem *dst, PRFileDesc *src)
PRFileInfo info;
PRInt32 numBytes;
PRStatus prStatus;
unsigned char *buf;
if (src == PR_STDIN)
return secu_StdinToItem(dst);
@ -1042,19 +1043,30 @@ SECU_FileToItem(SECItem *dst, PRFileDesc *src)
return SECFailure;
}
dst->len = info.size;
dst->data = (unsigned char*) PORT_Alloc(dst->len);
if (!dst->data) {
return SECFailure;
}
numBytes = PR_Read(src, dst->data, dst->len);
if (numBytes != dst->len) {
PORT_SetError(SEC_ERROR_IO);
buf = (unsigned char*)PORT_Alloc(info.size);
if (!buf)
return SECFailure;
numBytes = PR_Read(src, buf, info.size);
if (numBytes != info.size) {
PORT_SetError(SEC_ERROR_IO);
goto loser;
}
while (buf[numBytes-1] == '\r' ||
buf[numBytes-1] == '\n' ||
buf[numBytes-1] == '\0') numBytes--;
if (!SECITEM_AllocItem(NULL, dst, numBytes))
goto loser;
memcpy(dst->data, buf, numBytes);
PORT_Free(buf);
return SECSuccess;
loser:
PORT_Free(buf);
return SECFailure;
}
SECStatus