Mercurial > hg > orthanc
comparison Resources/sha1/shatest.cpp @ 177:81b6f3013738
sha1
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 09 Nov 2012 10:42:00 +0100 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
176:81f11fb357f2 | 177:81b6f3013738 |
---|---|
1 /* | |
2 * shatest.cpp | |
3 * | |
4 * Copyright (C) 1998, 2009 | |
5 * Paul E. Jones <paulej@packetizer.com> | |
6 * All Rights Reserved | |
7 * | |
8 ***************************************************************************** | |
9 * $Id: shatest.cpp 12 2009-06-22 19:34:25Z paulej $ | |
10 ***************************************************************************** | |
11 * | |
12 * Description: | |
13 * This file will exercise the SHA1 class and perform the three | |
14 * tests documented in FIPS PUB 180-1. | |
15 * | |
16 * Portability Issues: | |
17 * None. | |
18 * | |
19 */ | |
20 | |
21 #include <iostream> | |
22 #include "sha1.h" | |
23 | |
24 using namespace std; | |
25 | |
26 /* | |
27 * Define patterns for testing | |
28 */ | |
29 #define TESTA "abc" | |
30 #define TESTB "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" | |
31 | |
32 /* | |
33 * Function prototype | |
34 */ | |
35 void DisplayMessageDigest(unsigned *message_digest); | |
36 | |
37 /* | |
38 * main | |
39 * | |
40 * Description: | |
41 * This is the entry point for the program | |
42 * | |
43 * Parameters: | |
44 * None. | |
45 * | |
46 * Returns: | |
47 * Nothing. | |
48 * | |
49 * Comments: | |
50 * | |
51 */ | |
52 int main() | |
53 { | |
54 SHA1 sha; | |
55 unsigned message_digest[5]; | |
56 | |
57 /* | |
58 * Perform test A | |
59 */ | |
60 cout << endl << "Test A: 'abc'" << endl; | |
61 | |
62 sha.Reset(); | |
63 sha << TESTA; | |
64 | |
65 if (!sha.Result(message_digest)) | |
66 { | |
67 cerr << "ERROR-- could not compute message digest" << endl; | |
68 } | |
69 else | |
70 { | |
71 DisplayMessageDigest(message_digest); | |
72 cout << "Should match:" << endl; | |
73 cout << '\t' << "A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D" << endl; | |
74 } | |
75 | |
76 /* | |
77 * Perform test B | |
78 */ | |
79 cout << endl << "Test B: " << TESTB << endl; | |
80 | |
81 sha.Reset(); | |
82 sha << TESTB; | |
83 | |
84 if (!sha.Result(message_digest)) | |
85 { | |
86 cerr << "ERROR-- could not compute message digest" << endl; | |
87 } | |
88 else | |
89 { | |
90 DisplayMessageDigest(message_digest); | |
91 cout << "Should match:" << endl; | |
92 cout << '\t' << "84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1" << endl; | |
93 } | |
94 | |
95 /* | |
96 * Perform test C | |
97 */ | |
98 cout << endl << "Test C: One million 'a' characters" << endl; | |
99 | |
100 sha.Reset(); | |
101 for(int i = 1; i <= 1000000; i++) sha.Input('a'); | |
102 | |
103 if (!sha.Result(message_digest)) | |
104 { | |
105 cerr << "ERROR-- could not compute message digest" << endl; | |
106 } | |
107 else | |
108 { | |
109 DisplayMessageDigest(message_digest); | |
110 cout << "Should match:" << endl; | |
111 cout << '\t' << "34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F" << endl; | |
112 } | |
113 | |
114 return 0; | |
115 } | |
116 | |
117 /* | |
118 * DisplayMessageDigest | |
119 * | |
120 * Description: | |
121 * Display Message Digest array | |
122 * | |
123 * Parameters: | |
124 * None. | |
125 * | |
126 * Returns: | |
127 * Nothing. | |
128 * | |
129 * Comments: | |
130 * | |
131 */ | |
132 void DisplayMessageDigest(unsigned *message_digest) | |
133 { | |
134 ios::fmtflags flags; | |
135 | |
136 cout << '\t'; | |
137 | |
138 flags = cout.setf(ios::hex|ios::uppercase,ios::basefield); | |
139 cout.setf(ios::uppercase); | |
140 | |
141 for(int i = 0; i < 5 ; i++) | |
142 { | |
143 cout << message_digest[i] << ' '; | |
144 } | |
145 | |
146 cout << endl; | |
147 | |
148 cout.setf(flags); | |
149 } |