]> git.piffa.net Git - arduino/blob - books/pdummies/Libraries/Sha/examples/sha256test/sha256test.pde
first commit
[arduino] / books / pdummies / Libraries / Sha / examples / sha256test / sha256test.pde
1 #include "sha256.h"
2
3 uint8_t hmacKey1[]={
4   0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b,0x0b
5 };
6 uint8_t hmacKey2[]={
7   0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,
8   0x15,0x16,0x17,0x18,0x19
9 };
10 uint8_t hmacKey3[]={
11   0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa
12 };
13 uint8_t hmacKey4[]={
14   0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c,0x0c
15 };
16 uint8_t hmacKey5[]={
17   0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
18   0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
19   0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
20   0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
21   0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
22   0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,
23   0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa
24 };
25
26 void printHash(uint8_t* hash) {
27   int i;
28   for (i=0; i<32; i++) {
29     Serial.print("0123456789abcdef"[hash[i]>>4]);
30     Serial.print("0123456789abcdef"[hash[i]&0xf]);
31   }
32   Serial.println();
33 }
34
35 void setup() {
36   uint8_t* hash;
37   uint32_t a;
38   
39   Serial.begin(9600);
40
41   // SHA tests
42   Serial.println("Test: FIPS 180-2 B.1");
43   Serial.println("Expect:ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad");
44   Serial.print("Result:");
45   Sha256.init();
46   Sha256.print("abc");
47   printHash(Sha256.result());
48   Serial.println();
49
50   Serial.println("Test: FIPS 180-2 B.2");
51   Serial.println("Expect:248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1");
52   Serial.print("Result:");
53   Sha256.init();
54   Sha256.print("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq");
55   printHash(Sha256.result());
56   Serial.println();
57
58   // HMAC tests
59   Serial.println("Test: RFC4231 4.2");
60   Serial.println("Expect:b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7");
61   Serial.print("Result:");
62   Sha256.initHmac(hmacKey1,20);
63   Sha256.print("Hi There");
64   printHash(Sha256.resultHmac());
65   Serial.println();
66   
67   Serial.println("Test: RFC4231 4.3");
68   Serial.println("Expect:5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843");
69   Serial.print("Result:");
70   Sha256.initHmac((uint8_t*)"Jefe",4);
71   Sha256.print("what do ya want for nothing?");
72   printHash(Sha256.resultHmac());
73   Serial.println();
74   
75   Serial.println("Test: RFC4231 4.4");
76   Serial.println("Expect:773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe");
77   Serial.print("Result:");
78   Sha256.initHmac(hmacKey3,20);
79   for (a=0; a<50; a++) Sha256.write(0xdd);
80   printHash(Sha256.resultHmac());
81   Serial.println();
82
83   Serial.println("Test: RFC4231 4.5");
84   Serial.println("Expect:82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b");
85   Serial.print("Result:");
86   Sha256.initHmac(hmacKey2,25);
87   for (a=0; a<50; a++) Sha256.write(0xcd);
88   printHash(Sha256.resultHmac());
89   Serial.println();
90   
91   Serial.println("Test: RFC4231 4.6");
92   Serial.println("Expect:a3b6167473100ee06e0c796c2955552b-------------------------------");
93   Serial.print("Result:");
94   Sha256.initHmac(hmacKey4,20);
95   Sha256.print("Test With Truncation");
96   printHash(Sha256.resultHmac());
97   Serial.println();
98   
99   Serial.println("Test: RFC4231 4.7");
100   Serial.println("Expect:60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54");
101   Serial.print("Result:");
102   Sha256.initHmac(hmacKey5,131);
103   Sha256.print("Test Using Larger Than Block-Size Key - Hash Key First");
104   printHash(Sha256.resultHmac());
105   Serial.println();
106
107   Serial.println("Test: RFC4231 4.8");
108   Serial.println("Expect:9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2");
109   Serial.print("Result:");
110   Sha256.initHmac(hmacKey5,131);
111 //  Sha256.print("This is a test using a larger than block-size key and a larger than "
112 //  "block-size data. The key needs to be hashed before being used by the HMAC algorithm.");
113   printHash(Sha256.resultHmac());
114   Serial.println();
115   
116   // Long tests 
117   Serial.println("Test: FIPS 180-2 B.3 (Processing 1000000 characters. This will take a while.)");
118   Serial.println("Expect:cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0");
119   Serial.print("Result:");
120   Sha256.init();
121   for (a=0; a<1000000; a++) Sha256.write('a');
122   printHash(Sha256.result());
123 }
124
125 void loop() {
126 }