提交 97a982e2 编写于 作者: M Matt Caswell

Fix the tests to work with EBCDIC

Most of the tests already pass with EBCIDC but a few were trying to
write into read only memory.
Reviewed-by: NAndy Polyakov <appro@openssl.org>
上级 4cd5c3f4
...@@ -80,7 +80,7 @@ int main(int argc, char *argv[]) ...@@ -80,7 +80,7 @@ int main(int argc, char *argv[])
# include <openssl/ebcdic.h> # include <openssl/ebcdic.h>
# endif # endif
static char *bf_key[2] = { static char bf_key[2][30] = {
"abcdefghijklmnopqrstuvwxyz", "abcdefghijklmnopqrstuvwxyz",
"Who is John Galt?" "Who is John Galt?"
}; };
......
...@@ -95,7 +95,7 @@ int main(int argc, char *argv[]) ...@@ -95,7 +95,7 @@ int main(int argc, char *argv[])
unsigned char md[MDC2_DIGEST_LENGTH]; unsigned char md[MDC2_DIGEST_LENGTH];
int i; int i;
EVP_MD_CTX *c; EVP_MD_CTX *c;
static char *text = "Now is the time for all "; static char text[30] = "Now is the time for all ";
# ifdef CHARSET_EBCDIC # ifdef CHARSET_EBCDIC
ebcdic2ascii(text, text, strlen(text)); ebcdic2ascii(text, text, strlen(text));
......
...@@ -75,16 +75,15 @@ int main(int argc, char *argv[]) ...@@ -75,16 +75,15 @@ int main(int argc, char *argv[])
# include <openssl/ebcdic.h> # include <openssl/ebcdic.h>
# endif # endif
static char *test[] = { static char test[][100] = {
"", { "" },
"a", { "a" },
"abc", { "abc" },
"message digest", { "message digest" },
"abcdefghijklmnopqrstuvwxyz", { "abcdefghijklmnopqrstuvwxyz" },
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" },
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" },
"12345678901234567890123456789012345678901234567890123456789012345678901234567890", { "12345678901234567890123456789012345678901234567890123456789012345678901234567890" }
NULL,
}; };
static char *ret[] = { static char *ret[] = {
...@@ -101,30 +100,29 @@ static char *ret[] = { ...@@ -101,30 +100,29 @@ static char *ret[] = {
static char *pt(unsigned char *md); static char *pt(unsigned char *md);
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
int i, err = 0; unsigned int i;
char **P, **R; int err = 0;
char **R;
char *p; char *p;
unsigned char md[RIPEMD160_DIGEST_LENGTH]; unsigned char md[RIPEMD160_DIGEST_LENGTH];
P = test;
R = ret; R = ret;
i = 1; i = 0;
while (*P != NULL) { while (i < OSSL_NELEM(test)) {
# ifdef CHARSET_EBCDIC # ifdef CHARSET_EBCDIC
ebcdic2ascii((char *)*P, (char *)*P, strlen((char *)*P)); ebcdic2ascii(test[i], test[i], strlen(test[i]));
# endif # endif
EVP_Digest(&(P[0][0]), strlen((char *)*P), md, NULL, EVP_ripemd160(), EVP_Digest(test[i], strlen(test[i]), md, NULL, EVP_ripemd160(),
NULL); NULL);
p = pt(md); p = pt(md);
if (strcmp(p, (char *)*R) != 0) { if (strcmp(p, (char *)*R) != 0) {
printf("error calculating RIPEMD160 on '%s'\n", *P); printf("error calculating RIPEMD160 on '%s'\n", test[i]);
printf("got %s instead of %s\n", p, *R); printf("got %s instead of %s\n", p, *R);
err++; err++;
} else } else
printf("test %d ok\n", i); printf("test %d ok\n", i + 1);
i++; i++;
R++; R++;
P++;
} }
EXIT(err); EXIT(err);
} }
......
...@@ -67,10 +67,9 @@ ...@@ -67,10 +67,9 @@
# include <openssl/ebcdic.h> # include <openssl/ebcdic.h>
#endif #endif
static char *test[] = { static char test[][80] = {
"abc", { "abc" },
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" }
NULL,
}; };
static char *ret[] = { static char *ret[] = {
...@@ -83,34 +82,31 @@ static char *bigret = "34aa973cd4c4daa4f61eeb2bdbad27316534016f"; ...@@ -83,34 +82,31 @@ static char *bigret = "34aa973cd4c4daa4f61eeb2bdbad27316534016f";
static char *pt(unsigned char *md); static char *pt(unsigned char *md);
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
int i, err = 0; unsigned int i;
char **P, **R; int err = 0;
char **R;
static unsigned char buf[1000]; static unsigned char buf[1000];
char *p, *r; char *p, *r;
EVP_MD_CTX *c; EVP_MD_CTX *c;
unsigned char md[SHA_DIGEST_LENGTH]; unsigned char md[SHA_DIGEST_LENGTH];
#ifdef CHARSET_EBCDIC
ebcdic2ascii(test[0], test[0], strlen(test[0]));
ebcdic2ascii(test[1], test[1], strlen(test[1]));
#endif
c = EVP_MD_CTX_new(); c = EVP_MD_CTX_new();
P = test;
R = ret; R = ret;
i = 1; i = 0;
while (*P != NULL) { while (i < OSSL_NELEM(test)) {
EVP_Digest(*P, strlen((char *)*P), md, NULL, EVP_sha1(), NULL); # ifdef CHARSET_EBCDIC
ebcdic2ascii(test[i], test[i], strlen(test[i]));
# endif
EVP_Digest(test[i], strlen(test[i]), md, NULL, EVP_sha1(), NULL);
p = pt(md); p = pt(md);
if (strcmp(p, (char *)*R) != 0) { if (strcmp(p, (char *)*R) != 0) {
printf("error calculating SHA1 on '%s'\n", *P); printf("error calculating SHA1 on '%s'\n", test[i]);
printf("got %s instead of %s\n", p, *R); printf("got %s instead of %s\n", p, *R);
err++; err++;
} else } else
printf("test %d ok\n", i); printf("test %d ok\n", i + 1);
i++; i++;
R++; R++;
P++;
} }
memset(buf, 'a', 1000); memset(buf, 'a', 1000);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册