1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* crypto/sha/sha512t.c */
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* ====================================================================
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright (c) 2004 The OpenSSL Project.  All rights reserved.
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ====================================================================
5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <stdio.h>
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <string.h>
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <stdlib.h>
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/sha.h>
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/evp.h>
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/crypto.h>
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_NO_SHA) || defined(OPENSSL_NO_SHA512)
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint main(int argc, char *argv[])
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project{
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    printf("No SHA512 support\n");
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    return(0);
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectunsigned char app_c1[SHA512_DIGEST_LENGTH] = {
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xdd,0xaf,0x35,0xa1,0x93,0x61,0x7a,0xba,
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xcc,0x41,0x73,0x49,0xae,0x20,0x41,0x31,
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x12,0xe6,0xfa,0x4e,0x89,0xa9,0x7e,0xa2,
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x0a,0x9e,0xee,0xe6,0x4b,0x55,0xd3,0x9a,
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x21,0x92,0x99,0x2a,0x27,0x4f,0xc1,0xa8,
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x36,0xba,0x3c,0x23,0xa3,0xfe,0xeb,0xbd,
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x45,0x4d,0x44,0x23,0x64,0x3c,0xe8,0x0e,
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x2a,0x9a,0xc9,0x4f,0xa5,0x4c,0xa4,0x9f };
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectunsigned char app_c2[SHA512_DIGEST_LENGTH] = {
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x8e,0x95,0x9b,0x75,0xda,0xe3,0x13,0xda,
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x8c,0xf4,0xf7,0x28,0x14,0xfc,0x14,0x3f,
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x8f,0x77,0x79,0xc6,0xeb,0x9f,0x7f,0xa1,
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x72,0x99,0xae,0xad,0xb6,0x88,0x90,0x18,
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x50,0x1d,0x28,0x9e,0x49,0x00,0xf7,0xe4,
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x33,0x1b,0x99,0xde,0xc4,0xb5,0x43,0x3a,
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xc7,0xd3,0x29,0xee,0xb6,0xdd,0x26,0x54,
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x5e,0x96,0xe5,0x5b,0x87,0x4b,0xe9,0x09 };
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectunsigned char app_c3[SHA512_DIGEST_LENGTH] = {
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xe7,0x18,0x48,0x3d,0x0c,0xe7,0x69,0x64,
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x4e,0x2e,0x42,0xc7,0xbc,0x15,0xb4,0x63,
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x8e,0x1f,0x98,0xb1,0x3b,0x20,0x44,0x28,
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x56,0x32,0xa8,0x03,0xaf,0xa9,0x73,0xeb,
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xde,0x0f,0xf2,0x44,0x87,0x7e,0xa6,0x0a,
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x4c,0xb0,0x43,0x2c,0xe5,0x77,0xc3,0x1b,
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xeb,0x00,0x9c,0x5c,0x2c,0x49,0xaa,0x2e,
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x4e,0xad,0xb2,0x17,0xad,0x8c,0xc0,0x9b };
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectunsigned char app_d1[SHA384_DIGEST_LENGTH] = {
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xcb,0x00,0x75,0x3f,0x45,0xa3,0x5e,0x8b,
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xb5,0xa0,0x3d,0x69,0x9a,0xc6,0x50,0x07,
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x27,0x2c,0x32,0xab,0x0e,0xde,0xd1,0x63,
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x1a,0x8b,0x60,0x5a,0x43,0xff,0x5b,0xed,
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x80,0x86,0x07,0x2b,0xa1,0xe7,0xcc,0x23,
58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x58,0xba,0xec,0xa1,0x34,0xc8,0x25,0xa7 };
59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectunsigned char app_d2[SHA384_DIGEST_LENGTH] = {
61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x09,0x33,0x0c,0x33,0xf7,0x11,0x47,0xe8,
62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x3d,0x19,0x2f,0xc7,0x82,0xcd,0x1b,0x47,
63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x53,0x11,0x1b,0x17,0x3b,0x3b,0x05,0xd2,
64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x2f,0xa0,0x80,0x86,0xe3,0xb0,0xf7,0x12,
65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xfc,0xc7,0xc7,0x1a,0x55,0x7e,0x2d,0xb9,
66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x66,0xc3,0xe9,0xfa,0x91,0x74,0x60,0x39 };
67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectunsigned char app_d3[SHA384_DIGEST_LENGTH] = {
69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x9d,0x0e,0x18,0x09,0x71,0x64,0x74,0xcb,
70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x08,0x6e,0x83,0x4e,0x31,0x0a,0x4a,0x1c,
71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xed,0x14,0x9e,0x9c,0x00,0xf2,0x48,0x52,
72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x79,0x72,0xce,0xc5,0x70,0x4c,0x2a,0x5b,
73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0x07,0xb8,0xb3,0xdc,0x38,0xec,0xc4,0xeb,
74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	0xae,0x97,0xdd,0xd8,0x7f,0x3d,0x89,0x85 };
75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint main (int argc,char **argv)
77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project{ unsigned char md[SHA512_DIGEST_LENGTH];
78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  int		i;
79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  EVP_MD_CTX	evp;
80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef OPENSSL_IA32_SSE2
82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    /* Alternative to this is to call OpenSSL_add_all_algorithms...
83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project     * The below code is retained exclusively for debugging purposes. */
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    { char      *env;
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if ((env=getenv("OPENSSL_ia32cap")))
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	    OPENSSL_ia32cap = strtoul (env,NULL,0);
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    }
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    fprintf(stdout,"Testing SHA-512 ");
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    EVP_Digest ("abc",3,md,NULL,EVP_sha512(),NULL);
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    if (memcmp(md,app_c1,sizeof(app_c1)))
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    {	fflush(stdout);
96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	fprintf(stderr,"\nTEST 1 of 3 failed.\n");
97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return 1;
98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    }
99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    else
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	fprintf(stdout,"."); fflush(stdout);
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    EVP_Digest ("abcdefgh""bcdefghi""cdefghij""defghijk"
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		"efghijkl""fghijklm""ghijklmn""hijklmno"
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		"ijklmnop""jklmnopq""klmnopqr""lmnopqrs"
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		"mnopqrst""nopqrstu",112,md,NULL,EVP_sha512(),NULL);
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    if (memcmp(md,app_c2,sizeof(app_c2)))
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    {	fflush(stdout);
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	fprintf(stderr,"\nTEST 2 of 3 failed.\n");
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return 1;
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    }
111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    else
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	fprintf(stdout,"."); fflush(stdout);
113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    EVP_MD_CTX_init (&evp);
115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    EVP_DigestInit_ex (&evp,EVP_sha512(),NULL);
116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    for (i=0;i<1000000;i+=288)
117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	EVP_DigestUpdate (&evp,	"aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				"aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				"aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				"aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				"aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				"aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				"aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				"aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				"aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa",
126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				(1000000-i)<288?1000000-i:288);
127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    EVP_DigestFinal_ex (&evp,md,NULL);
128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    EVP_MD_CTX_cleanup (&evp);
129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    if (memcmp(md,app_c3,sizeof(app_c3)))
131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    {	fflush(stdout);
132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	fprintf(stderr,"\nTEST 3 of 3 failed.\n");
133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return 1;
134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    }
135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    else
136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	fprintf(stdout,"."); fflush(stdout);
137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    fprintf(stdout," passed.\n"); fflush(stdout);
139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    fprintf(stdout,"Testing SHA-384 ");
141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    EVP_Digest ("abc",3,md,NULL,EVP_sha384(),NULL);
143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    if (memcmp(md,app_d1,sizeof(app_d1)))
144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    {	fflush(stdout);
145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	fprintf(stderr,"\nTEST 1 of 3 failed.\n");
146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return 1;
147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    }
148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    else
149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	fprintf(stdout,"."); fflush(stdout);
150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    EVP_Digest ("abcdefgh""bcdefghi""cdefghij""defghijk"
152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		"efghijkl""fghijklm""ghijklmn""hijklmno"
153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		"ijklmnop""jklmnopq""klmnopqr""lmnopqrs"
154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		"mnopqrst""nopqrstu",112,md,NULL,EVP_sha384(),NULL);
155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    if (memcmp(md,app_d2,sizeof(app_d2)))
156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    {	fflush(stdout);
157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	fprintf(stderr,"\nTEST 2 of 3 failed.\n");
158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return 1;
159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    }
160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    else
161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	fprintf(stdout,"."); fflush(stdout);
162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    EVP_MD_CTX_init (&evp);
164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    EVP_DigestInit_ex (&evp,EVP_sha384(),NULL);
165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    for (i=0;i<1000000;i+=64)
166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	EVP_DigestUpdate (&evp,	"aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa"
167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				"aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa",
168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project				(1000000-i)<64?1000000-i:64);
169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    EVP_DigestFinal_ex (&evp,md,NULL);
170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    EVP_MD_CTX_cleanup (&evp);
171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    if (memcmp(md,app_d3,sizeof(app_d3)))
173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    {	fflush(stdout);
174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	fprintf(stderr,"\nTEST 3 of 3 failed.\n");
175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return 1;
176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    }
177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    else
178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	fprintf(stdout,"."); fflush(stdout);
179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project    fprintf(stdout," passed.\n"); fflush(stdout);
181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project  return 0;
183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project}
184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
185