From ba61fb1e01a4480a59056f2bc7dd6bb0636d2b90 Mon Sep 17 00:00:00 2001 From: Rhys Weatherley Date: Sat, 14 Mar 2015 15:47:44 +1000 Subject: [PATCH] Update docs --- AES128_8cpp_source.html | 2 +- AES192_8cpp_source.html | 2 +- AES256_8cpp_source.html | 2 +- AESCommon_8cpp_source.html | 2 +- AES_8h_source.html | 2 +- BLAKE2b_8cpp_source.html | 286 ++++++++-------- BLAKE2b_8h_source.html | 27 +- BLAKE2s_8cpp_source.html | 276 ++++++++-------- BLAKE2s_8h_source.html | 25 +- Bitmap_8cpp_source.html | 2 +- Bitmap_8h_source.html | 2 +- BlinkLED_8cpp_source.html | 2 +- BlinkLED_8h_source.html | 2 +- BlockCipher_8cpp_source.html | 2 +- BlockCipher_8h_source.html | 2 +- BoolField_8cpp_source.html | 2 +- BoolField_8h_source.html | 2 +- CBC_8cpp_source.html | 2 +- CBC_8h_source.html | 2 +- CFB_8cpp_source.html | 2 +- CFB_8h_source.html | 2 +- CTR_8cpp_source.html | 2 +- CTR_8h_source.html | 2 +- ChaCha_8cpp_source.html | 2 +- ChaCha_8h_source.html | 2 +- Charlieplex_8cpp_source.html | 2 +- Charlieplex_8h_source.html | 2 +- ChaseLEDs_8cpp_source.html | 2 +- ChaseLEDs_8h_source.html | 2 +- Cipher_8cpp_source.html | 2 +- Cipher_8h_source.html | 2 +- Crypto_8cpp_source.html | 2 +- Crypto_8h_source.html | 2 +- Curve25519_8cpp_source.html | 2 +- Curve25519_8h_source.html | 2 +- DMD_8cpp_source.html | 2 +- DMD_8h_source.html | 2 +- DS1307RTC_8cpp_source.html | 2 +- DS1307RTC_8h_source.html | 2 +- DS3232RTC_8cpp_source.html | 2 +- DS3232RTC_8h_source.html | 2 +- DejaVuSans9_8h_source.html | 2 +- DejaVuSansBold9_8h_source.html | 2 +- DejaVuSansItalic9_8h_source.html | 2 +- EEPROM24_8cpp_source.html | 2 +- EEPROM24_8h_source.html | 2 +- Field_8cpp_source.html | 2 +- Field_8h_source.html | 2 +- Form_8cpp_source.html | 2 +- Form_8h_source.html | 2 +- Hash_8cpp_source.html | 2 +- Hash_8h_source.html | 2 +- I2CMaster_8cpp_source.html | 2 +- I2CMaster_8h_source.html | 2 +- IRreceiver_8cpp_source.html | 2 +- IRreceiver_8h_source.html | 2 +- IntField_8cpp_source.html | 2 +- IntField_8h_source.html | 2 +- KeccakCore_8cpp_source.html | 342 +++++++++++++++++++ KeccakCore_8h_source.html | 171 ++++++++++ LCD_8cpp_source.html | 2 +- LCD_8h_source.html | 2 +- ListField_8cpp_source.html | 2 +- ListField_8h_source.html | 2 +- Melody_8cpp_source.html | 2 +- Melody_8h_source.html | 2 +- Mono5x7_8h_source.html | 2 +- NoiseSource_8cpp_source.html | 2 +- NoiseSource_8h_source.html | 2 +- OFB_8cpp_source.html | 2 +- OFB_8h_source.html | 2 +- PowerSave_8cpp_source.html | 2 +- PowerSave_8h_source.html | 2 +- RC5_8h_source.html | 2 +- RNG_8cpp_source.html | 2 +- RNG_8h_source.html | 2 +- RTC_8cpp_source.html | 2 +- RTC_8h_source.html | 2 +- SHA1_8cpp_source.html | 307 +++++++++-------- SHA1_8h_source.html | 25 +- SHA256_8cpp_source.html | 333 +++++++++---------- SHA256_8h_source.html | 25 +- SHA3_8cpp_source.html | 229 +++++++++++++ SHA3_8h_source.html | 186 +++++++++++ SHA512_8cpp_source.html | 369 ++++++++++----------- SHA512_8h_source.html | 27 +- SoftI2C_8cpp_source.html | 2 +- SoftI2C_8h_source.html | 2 +- TextField_8cpp_source.html | 2 +- TextField_8h_source.html | 2 +- TimeField_8cpp_source.html | 2 +- TimeField_8h_source.html | 2 +- TransistorNoiseSource_8cpp_source.html | 2 +- TransistorNoiseSource_8h_source.html | 2 +- alarm-clock_8dox.html | 2 +- alarm_clock.html | 2 +- annotated.html | 41 +-- blink-blink_8dox.html | 2 +- blink-charlieplex_8dox.html | 2 +- blink-cylon_8dox.html | 2 +- blink-startrek_8dox.html | 2 +- blink_blink.html | 2 +- blink_charlieplex.html | 2 +- blink_cylon.html | 2 +- blink_startrek.html | 2 +- classAES128-members.html | 2 +- classAES128.html | 2 +- classAES192-members.html | 2 +- classAES192.html | 2 +- classAES256-members.html | 2 +- classAES256.html | 2 +- classAESCommon-members.html | 2 +- classAESCommon.html | 2 +- classBLAKE2b-members.html | 27 +- classBLAKE2b.html | 14 +- classBLAKE2s-members.html | 25 +- classBLAKE2s.html | 14 +- classBitmap-members.html | 2 +- classBitmap.html | 2 +- classBlinkLED-members.html | 2 +- classBlinkLED.html | 2 +- classBlockCipher-members.html | 2 +- classBlockCipher.html | 2 +- classBoolField-members.html | 2 +- classBoolField.html | 2 +- classCBC-members.html | 2 +- classCBC.html | 2 +- classCBCCommon-members.html | 2 +- classCBCCommon.html | 2 +- classCFB-members.html | 2 +- classCFB.html | 2 +- classCFBCommon-members.html | 2 +- classCFBCommon.html | 2 +- classCTR-members.html | 2 +- classCTR.html | 2 +- classCTRCommon-members.html | 2 +- classCTRCommon.html | 2 +- classChaCha-members.html | 2 +- classChaCha.html | 2 +- classCharlieplex-members.html | 2 +- classCharlieplex.html | 2 +- classChaseLEDs-members.html | 2 +- classChaseLEDs.html | 2 +- classCipher-members.html | 2 +- classCipher.html | 2 +- classCurve25519-members.html | 2 +- classCurve25519.html | 2 +- classDMD-members.html | 2 +- classDMD.html | 2 +- classDS1307RTC-members.html | 2 +- classDS1307RTC.html | 2 +- classDS3232RTC-members.html | 2 +- classDS3232RTC.html | 2 +- classEEPROM24-members.html | 2 +- classEEPROM24.html | 2 +- classField-members.html | 2 +- classField.html | 2 +- classForm-members.html | 2 +- classForm.html | 2 +- classHash-members.html | 2 +- classHash.html | 30 +- classHash.png | Bin 894 -> 1108 bytes classI2CMaster-members.html | 2 +- classI2CMaster.html | 2 +- classIRreceiver-members.html | 2 +- classIRreceiver.html | 2 +- classIntField-members.html | 2 +- classIntField.html | 2 +- classKeccakCore-members.html | 115 +++++++ classKeccakCore.html | 378 +++++++++++++++++++++ classLCD-members.html | 2 +- classLCD.html | 2 +- classListField-members.html | 2 +- classListField.html | 2 +- classMelody-members.html | 2 +- classMelody.html | 2 +- classNoiseSource-members.html | 2 +- classNoiseSource.html | 2 +- classOFB-members.html | 2 +- classOFB.html | 2 +- classOFBCommon-members.html | 2 +- classOFBCommon.html | 2 +- classRNGClass-members.html | 2 +- classRNGClass.html | 2 +- classRTC-members.html | 2 +- classRTC.html | 2 +- classRTCAlarm-members.html | 2 +- classRTCDate-members.html | 2 +- classRTCTime-members.html | 2 +- classSHA1-members.html | 23 +- classSHA1.html | 12 +- classSHA256-members.html | 23 +- classSHA256.html | 12 +- classSHA3__256-members.html | 111 +++++++ classSHA3__256.html | 383 ++++++++++++++++++++++ classSHA3__256.png | Bin 0 -> 403 bytes classSHA3__512-members.html | 111 +++++++ classSHA3__512.html | 383 ++++++++++++++++++++++ classSHA3__512.png | Bin 0 -> 399 bytes classSHA512-members.html | 25 +- classSHA512.html | 12 +- classSoftI2C-members.html | 2 +- classSoftI2C.html | 2 +- classTextField-members.html | 2 +- classTextField.html | 2 +- classTimeField-members.html | 2 +- classTimeField.html | 2 +- classTransistorNoiseSource-members.html | 2 +- classTransistorNoiseSource.html | 2 +- classes.html | 49 +-- crypto.html | 18 +- crypto_8dox.html | 2 +- dir_1586d320a3b1e622174530fde769cda9.html | 2 +- dir_48f64e79f12bd77ba047e9e436ec978c.html | 2 +- dir_5e87a7229a108582288ef7eda1233dc3.html | 2 +- dir_6591a2127a29f6cea3994dcb5b0596d1.html | 2 +- dir_9a34040863d1190c0e01b23e6b44de01.html | 2 +- dir_bc0718b08fb2015b8e59c47b2805f60c.html | 2 +- dir_be059bf9978ae156837504b1b8a7568c.html | 2 +- dir_e2ce51835550ba18edf07a8311722290.html | 10 +- dir_f34881fcf60f680b800190d5274dfaea.html | 2 +- dir_f9b96888882c2691b8eeaeafd1b9501d.html | 2 +- dmd-demo_8dox.html | 2 +- dmd-running-figure_8dox.html | 2 +- dmd_demo.html | 2 +- dmd_running_figure.html | 2 +- files.html | 70 ++-- functions.html | 2 +- functions_b.html | 5 +- functions_c.html | 8 +- functions_d.html | 2 +- functions_e.html | 5 +- functions_enum.html | 2 +- functions_eval.html | 2 +- functions_f.html | 10 +- functions_func.html | 2 +- functions_func_b.html | 7 +- functions_func_c.html | 8 +- functions_func_d.html | 2 +- functions_func_e.html | 5 +- functions_func_f.html | 4 +- functions_func_g.html | 2 +- functions_func_h.html | 4 +- functions_func_i.html | 2 +- functions_func_k.html | 5 +- functions_func_l.html | 2 +- functions_func_m.html | 2 +- functions_func_n.html | 2 +- functions_func_o.html | 2 +- functions_func_p.html | 5 +- functions_func_r.html | 9 +- functions_func_s.html | 11 +- functions_func_t.html | 2 +- functions_func_u.html | 5 +- functions_func_v.html | 2 +- functions_func_w.html | 2 +- functions_func_~.html | 11 +- functions_g.html | 2 +- functions_h.html | 4 +- functions_i.html | 2 +- functions_k.html | 5 +- functions_l.html | 2 +- functions_m.html | 2 +- functions_n.html | 2 +- functions_o.html | 2 +- functions_p.html | 5 +- functions_r.html | 9 +- functions_s.html | 13 +- functions_t.html | 2 +- functions_type.html | 2 +- functions_u.html | 5 +- functions_v.html | 2 +- functions_vars.html | 2 +- functions_w.html | 2 +- functions_y.html | 2 +- functions_~.html | 11 +- group__power__save.html | 2 +- hierarchy.html | 31 +- index.html | 4 +- ir-dumpir_8dox.html | 2 +- ir-snake_8dox.html | 2 +- ir_dumpir.html | 2 +- ir_snake.html | 2 +- lcd-form_8dox.html | 2 +- lcd-helloworld_8dox.html | 2 +- lcd_form.html | 2 +- lcd_hello_world.html | 2 +- mainpage_8dox.html | 2 +- modules.html | 2 +- pages.html | 2 +- search/all_1.js | 2 +- search/all_10.js | 3 + search/all_12.js | 2 +- search/all_16.js | 3 + search/all_2.js | 3 +- search/all_4.js | 3 +- search/all_5.js | 2 +- search/all_7.js | 2 +- search/all_9.js | 1 + search/all_e.js | 1 + search/all_f.js | 2 +- search/classes_8.js | 3 +- search/classes_9.js | 3 +- search/classes_a.js | 2 +- search/classes_b.js | 3 +- search/classes_c.js | 7 +- search/classes_d.js | 9 +- search/classes_e.js | 9 +- search/classes_f.html | 26 ++ search/classes_f.js | 6 + search/functions_1.js | 2 +- search/functions_10.js | 3 + search/functions_12.js | 2 +- search/functions_15.js | 3 + search/functions_2.js | 3 +- search/functions_4.js | 3 +- search/functions_5.js | 2 +- search/functions_7.js | 2 +- search/functions_9.js | 1 + search/functions_e.js | 1 + search/functions_f.js | 2 +- search/search.js | 2 +- structRTCAlarm.html | 2 +- structRTCDate.html | 2 +- structRTCTime.html | 2 +- 325 files changed, 3901 insertions(+), 1380 deletions(-) create mode 100644 KeccakCore_8cpp_source.html create mode 100644 KeccakCore_8h_source.html create mode 100644 SHA3_8cpp_source.html create mode 100644 SHA3_8h_source.html create mode 100644 classKeccakCore-members.html create mode 100644 classKeccakCore.html create mode 100644 classSHA3__256-members.html create mode 100644 classSHA3__256.html create mode 100644 classSHA3__256.png create mode 100644 classSHA3__512-members.html create mode 100644 classSHA3__512.html create mode 100644 classSHA3__512.png create mode 100644 search/classes_f.html create mode 100644 search/classes_f.js diff --git a/AES128_8cpp_source.html b/AES128_8cpp_source.html index 5706d4f8..5d191d81 100644 --- a/AES128_8cpp_source.html +++ b/AES128_8cpp_source.html @@ -175,7 +175,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/AES192_8cpp_source.html b/AES192_8cpp_source.html index 581fb8ce..888f835e 100644 --- a/AES192_8cpp_source.html +++ b/AES192_8cpp_source.html @@ -175,7 +175,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/AES256_8cpp_source.html b/AES256_8cpp_source.html index dc2c1bfb..f3c48fbc 100644 --- a/AES256_8cpp_source.html +++ b/AES256_8cpp_source.html @@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/AESCommon_8cpp_source.html b/AESCommon_8cpp_source.html index 144b26ff..102f2b8a 100644 --- a/AESCommon_8cpp_source.html +++ b/AESCommon_8cpp_source.html @@ -415,7 +415,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/AES_8h_source.html b/AES_8h_source.html index 84821545..ad4108de 100644 --- a/AES_8h_source.html +++ b/AES_8h_source.html @@ -206,7 +206,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/BLAKE2b_8cpp_source.html b/BLAKE2b_8cpp_source.html index 49f41335..f15f0bf4 100644 --- a/BLAKE2b_8cpp_source.html +++ b/BLAKE2b_8cpp_source.html @@ -158,167 +158,157 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
89  state.h[6] = BLAKE2b_IV6;
90  state.h[7] = BLAKE2b_IV7;
91  state.chunkSize = 0;
-
92  state.finalized = false;
-
93  state.lengthLow = 0;
-
94  state.lengthHigh = 0;
-
95 }
-
96 
-
104 void BLAKE2b::reset(uint8_t outputLength)
-
105 {
-
106  state.h[0] = BLAKE2b_IV0 ^ 0x01010000 ^ outputLength;
-
107  state.h[1] = BLAKE2b_IV1;
-
108  state.h[2] = BLAKE2b_IV2;
-
109  state.h[3] = BLAKE2b_IV3;
-
110  state.h[4] = BLAKE2b_IV4;
-
111  state.h[5] = BLAKE2b_IV5;
-
112  state.h[6] = BLAKE2b_IV6;
-
113  state.h[7] = BLAKE2b_IV7;
-
114  state.chunkSize = 0;
-
115  state.finalized = false;
-
116  state.lengthLow = 0;
-
117  state.lengthHigh = 0;
-
118 }
-
119 
-
120 void BLAKE2b::update(const void *data, size_t len)
-
121 {
-
122  // Reset the hashing process if finalize() was called previously.
-
123  if (state.finalized)
-
124  reset();
-
125 
-
126  // Break the input up into 1024-bit chunks and process each in turn.
-
127  const uint8_t *d = (const uint8_t *)data;
-
128  while (len > 0) {
-
129  if (state.chunkSize == 128) {
-
130  // Previous chunk was full and we know that it wasn't the
-
131  // last chunk, so we can process it now with f0 set to zero.
-
132  processChunk(0);
-
133  state.chunkSize = 0;
-
134  }
-
135  uint8_t size = 128 - state.chunkSize;
-
136  if (size > len)
-
137  size = len;
-
138  memcpy(((uint8_t *)state.m) + state.chunkSize, d, size);
-
139  state.chunkSize += size;
-
140  uint64_t temp = state.lengthLow;
-
141  state.lengthLow += size;
-
142  if (state.lengthLow < temp)
-
143  ++state.lengthHigh;
-
144  len -= size;
-
145  d += size;
-
146  }
-
147 }
+
92  state.lengthLow = 0;
+
93  state.lengthHigh = 0;
+
94 }
+
95 
+
103 void BLAKE2b::reset(uint8_t outputLength)
+
104 {
+
105  state.h[0] = BLAKE2b_IV0 ^ 0x01010000 ^ outputLength;
+
106  state.h[1] = BLAKE2b_IV1;
+
107  state.h[2] = BLAKE2b_IV2;
+
108  state.h[3] = BLAKE2b_IV3;
+
109  state.h[4] = BLAKE2b_IV4;
+
110  state.h[5] = BLAKE2b_IV5;
+
111  state.h[6] = BLAKE2b_IV6;
+
112  state.h[7] = BLAKE2b_IV7;
+
113  state.chunkSize = 0;
+
114  state.lengthLow = 0;
+
115  state.lengthHigh = 0;
+
116 }
+
117 
+
118 void BLAKE2b::update(const void *data, size_t len)
+
119 {
+
120  // Break the input up into 1024-bit chunks and process each in turn.
+
121  const uint8_t *d = (const uint8_t *)data;
+
122  while (len > 0) {
+
123  if (state.chunkSize == 128) {
+
124  // Previous chunk was full and we know that it wasn't the
+
125  // last chunk, so we can process it now with f0 set to zero.
+
126  processChunk(0);
+
127  state.chunkSize = 0;
+
128  }
+
129  uint8_t size = 128 - state.chunkSize;
+
130  if (size > len)
+
131  size = len;
+
132  memcpy(((uint8_t *)state.m) + state.chunkSize, d, size);
+
133  state.chunkSize += size;
+
134  uint64_t temp = state.lengthLow;
+
135  state.lengthLow += size;
+
136  if (state.lengthLow < temp)
+
137  ++state.lengthHigh;
+
138  len -= size;
+
139  d += size;
+
140  }
+
141 }
+
142 
+
143 void BLAKE2b::finalize(void *hash, size_t len)
+
144 {
+
145  // Pad the last chunk and hash it with f0 set to all-ones.
+
146  memset(((uint8_t *)state.m) + state.chunkSize, 0, 128 - state.chunkSize);
+
147  processChunk(0xFFFFFFFFFFFFFFFFULL);
148 
-
149 void BLAKE2b::finalize(void *hash, size_t len)
-
150 {
-
151  // Finalize the hash if necessary.
-
152  if (!state.finalized) {
-
153  // Pad the last chunk and hash it with f0 set to all-ones.
-
154  memset(((uint8_t *)state.m) + state.chunkSize, 0, 128 - state.chunkSize);
-
155  processChunk(0xFFFFFFFFFFFFFFFFULL);
-
156 
-
157  // Convert the hash into little-endian in the message buffer.
-
158  for (uint8_t posn = 0; posn < 8; ++posn)
-
159  state.m[posn] = htole64(state.h[posn]);
-
160  state.finalized = true;
-
161  }
-
162 
-
163  // Copy the hash to the caller's return buffer.
-
164  if (len > 64)
-
165  len = 64;
-
166  memcpy(hash, state.m, len);
-
167 }
-
168 
-
169 void BLAKE2b::clear()
-
170 {
-
171  clean(state);
-
172  reset();
-
173 }
-
174 
-
175 // Permutation on the message input state for BLAKE2b.
-
176 static const uint8_t sigma[12][16] PROGMEM = {
+
149  // Convert the hash into little-endian in the message buffer.
+
150  for (uint8_t posn = 0; posn < 8; ++posn)
+
151  state.m[posn] = htole64(state.h[posn]);
+
152 
+
153  // Copy the hash to the caller's return buffer.
+
154  if (len > 64)
+
155  len = 64;
+
156  memcpy(hash, state.m, len);
+
157 }
+
158 
+
159 void BLAKE2b::clear()
+
160 {
+
161  clean(state);
+
162  reset();
+
163 }
+
164 
+
165 // Permutation on the message input state for BLAKE2b.
+
166 static const uint8_t sigma[12][16] PROGMEM = {
+
167  { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
+
168  {14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3},
+
169  {11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4},
+
170  { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8},
+
171  { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13},
+
172  { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9},
+
173  {12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11},
+
174  {13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10},
+
175  { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5},
+
176  {10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13 , 0},
177  { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
178  {14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3},
-
179  {11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4},
-
180  { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8},
-
181  { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13},
-
182  { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9},
-
183  {12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11},
-
184  {13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10},
-
185  { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5},
-
186  {10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13 , 0},
-
187  { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
-
188  {14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3},
-
189 };
-
190 
-
191 // Perform a BLAKE2b quarter round operation.
-
192 #define quarterRound(a, b, c, d, i) \
-
193  do { \
-
194  uint64_t _b = (b); \
-
195  uint64_t _a = (a) + _b + state.m[pgm_read_byte(&(sigma[index][2 * (i)]))]; \
-
196  uint64_t _d = rightRotate32_64((d) ^ _a); \
-
197  uint64_t _c = (c) + _d; \
-
198  _b = rightRotate24_64(_b ^ _c); \
-
199  _a += _b + state.m[pgm_read_byte(&(sigma[index][2 * (i) + 1]))]; \
-
200  (d) = _d = rightRotate16_64(_d ^ _a); \
-
201  _c += _d; \
-
202  (a) = _a; \
-
203  (b) = rightRotate63_64(_b ^ _c); \
-
204  (c) = _c; \
-
205  } while (0)
+
179 };
+
180 
+
181 // Perform a BLAKE2b quarter round operation.
+
182 #define quarterRound(a, b, c, d, i) \
+
183  do { \
+
184  uint64_t _b = (b); \
+
185  uint64_t _a = (a) + _b + state.m[pgm_read_byte(&(sigma[index][2 * (i)]))]; \
+
186  uint64_t _d = rightRotate32_64((d) ^ _a); \
+
187  uint64_t _c = (c) + _d; \
+
188  _b = rightRotate24_64(_b ^ _c); \
+
189  _a += _b + state.m[pgm_read_byte(&(sigma[index][2 * (i) + 1]))]; \
+
190  (d) = _d = rightRotate16_64(_d ^ _a); \
+
191  _c += _d; \
+
192  (a) = _a; \
+
193  (b) = rightRotate63_64(_b ^ _c); \
+
194  (c) = _c; \
+
195  } while (0)
+
196 
+
197 void BLAKE2b::processChunk(uint64_t f0)
+
198 {
+
199  uint8_t index;
+
200 
+
201  // Byte-swap the message buffer into little-endian if necessary.
+
202 #if !defined(CRYPTO_LITTLE_ENDIAN)
+
203  for (index = 0; index < 16; ++index)
+
204  state.m[index] = le64toh(state.m[index]);
+
205 #endif
206 
-
207 void BLAKE2b::processChunk(uint64_t f0)
-
208 {
-
209  uint8_t index;
-
210 
-
211  // Byte-swap the message buffer into little-endian if necessary.
-
212 #if !defined(CRYPTO_LITTLE_ENDIAN)
-
213  for (index = 0; index < 16; ++index)
-
214  state.m[index] = le64toh(state.m[index]);
-
215 #endif
-
216 
-
217  // Format the block to be hashed.
-
218  memcpy(state.v, state.h, sizeof(state.h));
-
219  state.v[8] = BLAKE2b_IV0;
-
220  state.v[9] = BLAKE2b_IV1;
-
221  state.v[10] = BLAKE2b_IV2;
-
222  state.v[11] = BLAKE2b_IV3;
-
223  state.v[12] = BLAKE2b_IV4 ^ state.lengthLow;
-
224  state.v[13] = BLAKE2b_IV5 ^ state.lengthHigh;
-
225  state.v[14] = BLAKE2b_IV6 ^ f0;
-
226  state.v[15] = BLAKE2b_IV7;
-
227 
-
228  // Perform the 12 BLAKE2b rounds.
-
229  for (index = 0; index < 12; ++index) {
-
230  // Column round.
-
231  quarterRound(state.v[0], state.v[4], state.v[8], state.v[12], 0);
-
232  quarterRound(state.v[1], state.v[5], state.v[9], state.v[13], 1);
-
233  quarterRound(state.v[2], state.v[6], state.v[10], state.v[14], 2);
-
234  quarterRound(state.v[3], state.v[7], state.v[11], state.v[15], 3);
-
235 
-
236  // Diagonal round.
-
237  quarterRound(state.v[0], state.v[5], state.v[10], state.v[15], 4);
-
238  quarterRound(state.v[1], state.v[6], state.v[11], state.v[12], 5);
-
239  quarterRound(state.v[2], state.v[7], state.v[8], state.v[13], 6);
-
240  quarterRound(state.v[3], state.v[4], state.v[9], state.v[14], 7);
-
241  }
-
242 
-
243  // Combine the new and old hash values.
-
244  for (index = 0; index < 8; ++index)
-
245  state.h[index] ^= (state.v[index] ^ state.v[index + 8]);
-
246 }
-
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: BLAKE2b.cpp:149
+
207  // Format the block to be hashed.
+
208  memcpy(state.v, state.h, sizeof(state.h));
+
209  state.v[8] = BLAKE2b_IV0;
+
210  state.v[9] = BLAKE2b_IV1;
+
211  state.v[10] = BLAKE2b_IV2;
+
212  state.v[11] = BLAKE2b_IV3;
+
213  state.v[12] = BLAKE2b_IV4 ^ state.lengthLow;
+
214  state.v[13] = BLAKE2b_IV5 ^ state.lengthHigh;
+
215  state.v[14] = BLAKE2b_IV6 ^ f0;
+
216  state.v[15] = BLAKE2b_IV7;
+
217 
+
218  // Perform the 12 BLAKE2b rounds.
+
219  for (index = 0; index < 12; ++index) {
+
220  // Column round.
+
221  quarterRound(state.v[0], state.v[4], state.v[8], state.v[12], 0);
+
222  quarterRound(state.v[1], state.v[5], state.v[9], state.v[13], 1);
+
223  quarterRound(state.v[2], state.v[6], state.v[10], state.v[14], 2);
+
224  quarterRound(state.v[3], state.v[7], state.v[11], state.v[15], 3);
+
225 
+
226  // Diagonal round.
+
227  quarterRound(state.v[0], state.v[5], state.v[10], state.v[15], 4);
+
228  quarterRound(state.v[1], state.v[6], state.v[11], state.v[12], 5);
+
229  quarterRound(state.v[2], state.v[7], state.v[8], state.v[13], 6);
+
230  quarterRound(state.v[3], state.v[4], state.v[9], state.v[14], 7);
+
231  }
+
232 
+
233  // Combine the new and old hash values.
+
234  for (index = 0; index < 8; ++index)
+
235  state.h[index] ^= (state.v[index] ^ state.v[index + 8]);
+
236 }
+
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: BLAKE2b.cpp:143
void reset()
Resets the hash ready for a new hashing process.
Definition: BLAKE2b.cpp:81
-
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: BLAKE2b.cpp:169
+
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: BLAKE2b.cpp:159
BLAKE2b()
Constructs a BLAKE2b hash object.
Definition: BLAKE2b.cpp:47
size_t blockSize() const
Size of the internal block used by the hash algorithm.
Definition: BLAKE2b.cpp:66
size_t hashSize() const
Size of the hash result from finalize().
Definition: BLAKE2b.cpp:61
virtual ~BLAKE2b()
Destroys this BLAKE2b hash object after clearing sensitive information.
Definition: BLAKE2b.cpp:56
-
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: BLAKE2b.cpp:120
+
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: BLAKE2b.cpp:118
uint8_t * data()
Returns a pointer to the start of the bitmap's data buffer.
Definition: Bitmap.h:53
diff --git a/BLAKE2b_8h_source.html b/BLAKE2b_8h_source.html index 825af4eb..cdb59400 100644 --- a/BLAKE2b_8h_source.html +++ b/BLAKE2b_8h_source.html @@ -136,30 +136,29 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
46  uint64_t h[8];
47  uint64_t m[16];
48  uint64_t v[16];
-
49  uint8_t chunkSize;
-
50  bool finalized;
-
51  uint64_t lengthLow;
-
52  uint64_t lengthHigh;
-
53  } state;
-
54 
-
55  void processChunk(uint64_t f0);
-
56 };
-
57 
-
58 #endif
-
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: BLAKE2b.cpp:149
+
49  uint64_t lengthLow;
+
50  uint64_t lengthHigh;
+
51  uint8_t chunkSize;
+
52  } state;
+
53 
+
54  void processChunk(uint64_t f0);
+
55 };
+
56 
+
57 #endif
+
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: BLAKE2b.cpp:143
void reset()
Resets the hash ready for a new hashing process.
Definition: BLAKE2b.cpp:81
-
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: BLAKE2b.cpp:169
+
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: BLAKE2b.cpp:159
BLAKE2b()
Constructs a BLAKE2b hash object.
Definition: BLAKE2b.cpp:47
size_t blockSize() const
Size of the internal block used by the hash algorithm.
Definition: BLAKE2b.cpp:66
Abstract base class for cryptographic hash algorithms.
Definition: Hash.h:29
BLAKE2b hash algorithm.
Definition: BLAKE2b.h:28
size_t hashSize() const
Size of the hash result from finalize().
Definition: BLAKE2b.cpp:61
virtual ~BLAKE2b()
Destroys this BLAKE2b hash object after clearing sensitive information.
Definition: BLAKE2b.cpp:56
-
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: BLAKE2b.cpp:120
+
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: BLAKE2b.cpp:118
diff --git a/BLAKE2s_8cpp_source.html b/BLAKE2s_8cpp_source.html index 77f8082c..245879f4 100644 --- a/BLAKE2s_8cpp_source.html +++ b/BLAKE2s_8cpp_source.html @@ -158,159 +158,149 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
89  state.h[6] = BLAKE2s_IV6;
90  state.h[7] = BLAKE2s_IV7;
91  state.chunkSize = 0;
-
92  state.finalized = false;
-
93  state.length = 0;
-
94 }
-
95 
-
103 void BLAKE2s::reset(uint8_t outputLength)
-
104 {
-
105  state.h[0] = BLAKE2s_IV0 ^ 0x01010000 ^ outputLength;
-
106  state.h[1] = BLAKE2s_IV1;
-
107  state.h[2] = BLAKE2s_IV2;
-
108  state.h[3] = BLAKE2s_IV3;
-
109  state.h[4] = BLAKE2s_IV4;
-
110  state.h[5] = BLAKE2s_IV5;
-
111  state.h[6] = BLAKE2s_IV6;
-
112  state.h[7] = BLAKE2s_IV7;
-
113  state.chunkSize = 0;
-
114  state.finalized = false;
-
115  state.length = 0;
-
116 }
-
117 
-
118 void BLAKE2s::update(const void *data, size_t len)
-
119 {
-
120  // Reset the hashing process if finalize() was called previously.
-
121  if (state.finalized)
-
122  reset();
-
123 
-
124  // Break the input up into 512-bit chunks and process each in turn.
-
125  const uint8_t *d = (const uint8_t *)data;
-
126  while (len > 0) {
-
127  if (state.chunkSize == 64) {
-
128  // Previous chunk was full and we know that it wasn't the
-
129  // last chunk, so we can process it now with f0 set to zero.
-
130  processChunk(0);
-
131  state.chunkSize = 0;
-
132  }
-
133  uint8_t size = 64 - state.chunkSize;
-
134  if (size > len)
-
135  size = len;
-
136  memcpy(((uint8_t *)state.m) + state.chunkSize, d, size);
-
137  state.chunkSize += size;
-
138  state.length += size;
-
139  len -= size;
-
140  d += size;
-
141  }
-
142 }
+
92  state.length = 0;
+
93 }
+
94 
+
102 void BLAKE2s::reset(uint8_t outputLength)
+
103 {
+
104  state.h[0] = BLAKE2s_IV0 ^ 0x01010000 ^ outputLength;
+
105  state.h[1] = BLAKE2s_IV1;
+
106  state.h[2] = BLAKE2s_IV2;
+
107  state.h[3] = BLAKE2s_IV3;
+
108  state.h[4] = BLAKE2s_IV4;
+
109  state.h[5] = BLAKE2s_IV5;
+
110  state.h[6] = BLAKE2s_IV6;
+
111  state.h[7] = BLAKE2s_IV7;
+
112  state.chunkSize = 0;
+
113  state.length = 0;
+
114 }
+
115 
+
116 void BLAKE2s::update(const void *data, size_t len)
+
117 {
+
118  // Break the input up into 512-bit chunks and process each in turn.
+
119  const uint8_t *d = (const uint8_t *)data;
+
120  while (len > 0) {
+
121  if (state.chunkSize == 64) {
+
122  // Previous chunk was full and we know that it wasn't the
+
123  // last chunk, so we can process it now with f0 set to zero.
+
124  processChunk(0);
+
125  state.chunkSize = 0;
+
126  }
+
127  uint8_t size = 64 - state.chunkSize;
+
128  if (size > len)
+
129  size = len;
+
130  memcpy(((uint8_t *)state.m) + state.chunkSize, d, size);
+
131  state.chunkSize += size;
+
132  state.length += size;
+
133  len -= size;
+
134  d += size;
+
135  }
+
136 }
+
137 
+
138 void BLAKE2s::finalize(void *hash, size_t len)
+
139 {
+
140  // Pad the last chunk and hash it with f0 set to all-ones.
+
141  memset(((uint8_t *)state.m) + state.chunkSize, 0, 64 - state.chunkSize);
+
142  processChunk(0xFFFFFFFF);
143 
-
144 void BLAKE2s::finalize(void *hash, size_t len)
-
145 {
-
146  // Finalize the hash if necessary.
-
147  if (!state.finalized) {
-
148  // Pad the last chunk and hash it with f0 set to all-ones.
-
149  memset(((uint8_t *)state.m) + state.chunkSize, 0, 64 - state.chunkSize);
-
150  processChunk(0xFFFFFFFF);
-
151 
-
152  // Convert the hash into little-endian in the message buffer.
-
153  for (uint8_t posn = 0; posn < 8; ++posn)
-
154  state.m[posn] = htole32(state.h[posn]);
-
155  state.finalized = true;
-
156  }
-
157 
-
158  // Copy the hash to the caller's return buffer.
-
159  if (len > 32)
-
160  len = 32;
-
161  memcpy(hash, state.m, len);
-
162 }
-
163 
-
164 void BLAKE2s::clear()
-
165 {
-
166  clean(state);
-
167  reset();
-
168 }
-
169 
-
170 // Permutation on the message input state for BLAKE2s.
-
171 static const uint8_t sigma[10][16] PROGMEM = {
-
172  { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
-
173  {14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3},
-
174  {11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4},
-
175  { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8},
-
176  { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13},
-
177  { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9},
-
178  {12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11},
-
179  {13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10},
-
180  { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5},
-
181  {10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13 , 0}
-
182 };
-
183 
-
184 // Perform a BLAKE2s quarter round operation.
-
185 #define quarterRound(a, b, c, d, i) \
-
186  do { \
-
187  uint32_t _b = (b); \
-
188  uint32_t _a = (a) + _b + state.m[pgm_read_byte(&(sigma[index][2 * (i)]))]; \
-
189  uint32_t _d = rightRotate16((d) ^ _a); \
-
190  uint32_t _c = (c) + _d; \
-
191  _b = rightRotate12(_b ^ _c); \
-
192  _a += _b + state.m[pgm_read_byte(&(sigma[index][2 * (i) + 1]))]; \
-
193  (d) = _d = rightRotate8(_d ^ _a); \
-
194  _c += _d; \
-
195  (a) = _a; \
-
196  (b) = rightRotate7(_b ^ _c); \
-
197  (c) = _c; \
-
198  } while (0)
+
144  // Convert the hash into little-endian in the message buffer.
+
145  for (uint8_t posn = 0; posn < 8; ++posn)
+
146  state.m[posn] = htole32(state.h[posn]);
+
147 
+
148  // Copy the hash to the caller's return buffer.
+
149  if (len > 32)
+
150  len = 32;
+
151  memcpy(hash, state.m, len);
+
152 }
+
153 
+
154 void BLAKE2s::clear()
+
155 {
+
156  clean(state);
+
157  reset();
+
158 }
+
159 
+
160 // Permutation on the message input state for BLAKE2s.
+
161 static const uint8_t sigma[10][16] PROGMEM = {
+
162  { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
+
163  {14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3},
+
164  {11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4},
+
165  { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8},
+
166  { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13},
+
167  { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9},
+
168  {12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11},
+
169  {13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10},
+
170  { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5},
+
171  {10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13 , 0}
+
172 };
+
173 
+
174 // Perform a BLAKE2s quarter round operation.
+
175 #define quarterRound(a, b, c, d, i) \
+
176  do { \
+
177  uint32_t _b = (b); \
+
178  uint32_t _a = (a) + _b + state.m[pgm_read_byte(&(sigma[index][2 * (i)]))]; \
+
179  uint32_t _d = rightRotate16((d) ^ _a); \
+
180  uint32_t _c = (c) + _d; \
+
181  _b = rightRotate12(_b ^ _c); \
+
182  _a += _b + state.m[pgm_read_byte(&(sigma[index][2 * (i) + 1]))]; \
+
183  (d) = _d = rightRotate8(_d ^ _a); \
+
184  _c += _d; \
+
185  (a) = _a; \
+
186  (b) = rightRotate7(_b ^ _c); \
+
187  (c) = _c; \
+
188  } while (0)
+
189 
+
190 void BLAKE2s::processChunk(uint32_t f0)
+
191 {
+
192  uint8_t index;
+
193 
+
194  // Byte-swap the message buffer into little-endian if necessary.
+
195 #if !defined(CRYPTO_LITTLE_ENDIAN)
+
196  for (index = 0; index < 16; ++index)
+
197  state.m[index] = le32toh(state.m[index]);
+
198 #endif
199 
-
200 void BLAKE2s::processChunk(uint32_t f0)
-
201 {
-
202  uint8_t index;
-
203 
-
204  // Byte-swap the message buffer into little-endian if necessary.
-
205 #if !defined(CRYPTO_LITTLE_ENDIAN)
-
206  for (index = 0; index < 16; ++index)
-
207  state.m[index] = le32toh(state.m[index]);
-
208 #endif
-
209 
-
210  // Format the block to be hashed.
-
211  memcpy(state.v, state.h, sizeof(state.h));
-
212  state.v[8] = BLAKE2s_IV0;
-
213  state.v[9] = BLAKE2s_IV1;
-
214  state.v[10] = BLAKE2s_IV2;
-
215  state.v[11] = BLAKE2s_IV3;
-
216  state.v[12] = BLAKE2s_IV4 ^ (uint32_t)(state.length);
-
217  state.v[13] = BLAKE2s_IV5 ^ (uint32_t)(state.length >> 32);
-
218  state.v[14] = BLAKE2s_IV6 ^ f0;
-
219  state.v[15] = BLAKE2s_IV7;
-
220 
-
221  // Perform the 10 BLAKE2s rounds.
-
222  for (index = 0; index < 10; ++index) {
-
223  // Column round.
-
224  quarterRound(state.v[0], state.v[4], state.v[8], state.v[12], 0);
-
225  quarterRound(state.v[1], state.v[5], state.v[9], state.v[13], 1);
-
226  quarterRound(state.v[2], state.v[6], state.v[10], state.v[14], 2);
-
227  quarterRound(state.v[3], state.v[7], state.v[11], state.v[15], 3);
-
228 
-
229  // Diagonal round.
-
230  quarterRound(state.v[0], state.v[5], state.v[10], state.v[15], 4);
-
231  quarterRound(state.v[1], state.v[6], state.v[11], state.v[12], 5);
-
232  quarterRound(state.v[2], state.v[7], state.v[8], state.v[13], 6);
-
233  quarterRound(state.v[3], state.v[4], state.v[9], state.v[14], 7);
-
234  }
-
235 
-
236  // Combine the new and old hash values.
-
237  for (index = 0; index < 8; ++index)
-
238  state.h[index] ^= (state.v[index] ^ state.v[index + 8]);
-
239 }
+
200  // Format the block to be hashed.
+
201  memcpy(state.v, state.h, sizeof(state.h));
+
202  state.v[8] = BLAKE2s_IV0;
+
203  state.v[9] = BLAKE2s_IV1;
+
204  state.v[10] = BLAKE2s_IV2;
+
205  state.v[11] = BLAKE2s_IV3;
+
206  state.v[12] = BLAKE2s_IV4 ^ (uint32_t)(state.length);
+
207  state.v[13] = BLAKE2s_IV5 ^ (uint32_t)(state.length >> 32);
+
208  state.v[14] = BLAKE2s_IV6 ^ f0;
+
209  state.v[15] = BLAKE2s_IV7;
+
210 
+
211  // Perform the 10 BLAKE2s rounds.
+
212  for (index = 0; index < 10; ++index) {
+
213  // Column round.
+
214  quarterRound(state.v[0], state.v[4], state.v[8], state.v[12], 0);
+
215  quarterRound(state.v[1], state.v[5], state.v[9], state.v[13], 1);
+
216  quarterRound(state.v[2], state.v[6], state.v[10], state.v[14], 2);
+
217  quarterRound(state.v[3], state.v[7], state.v[11], state.v[15], 3);
+
218 
+
219  // Diagonal round.
+
220  quarterRound(state.v[0], state.v[5], state.v[10], state.v[15], 4);
+
221  quarterRound(state.v[1], state.v[6], state.v[11], state.v[12], 5);
+
222  quarterRound(state.v[2], state.v[7], state.v[8], state.v[13], 6);
+
223  quarterRound(state.v[3], state.v[4], state.v[9], state.v[14], 7);
+
224  }
+
225 
+
226  // Combine the new and old hash values.
+
227  for (index = 0; index < 8; ++index)
+
228  state.h[index] ^= (state.v[index] ^ state.v[index + 8]);
+
229 }
virtual ~BLAKE2s()
Destroys this BLAKE2s hash object after clearing sensitive information.
Definition: BLAKE2s.cpp:56
size_t hashSize() const
Size of the hash result from finalize().
Definition: BLAKE2s.cpp:61
-
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: BLAKE2s.cpp:164
+
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: BLAKE2s.cpp:154
void reset()
Resets the hash ready for a new hashing process.
Definition: BLAKE2s.cpp:81
size_t blockSize() const
Size of the internal block used by the hash algorithm.
Definition: BLAKE2s.cpp:66
-
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: BLAKE2s.cpp:118
-
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: BLAKE2s.cpp:144
+
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: BLAKE2s.cpp:116
+
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: BLAKE2s.cpp:138
BLAKE2s()
Constructs a BLAKE2s hash object.
Definition: BLAKE2s.cpp:47
diff --git a/BLAKE2s_8h_source.html b/BLAKE2s_8h_source.html index 8d398993..637db3bf 100644 --- a/BLAKE2s_8h_source.html +++ b/BLAKE2s_8h_source.html @@ -136,29 +136,28 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
46  uint32_t h[8];
47  uint32_t m[16];
48  uint32_t v[16];
-
49  uint8_t chunkSize;
-
50  bool finalized;
-
51  uint64_t length;
-
52  } state;
-
53 
-
54  void processChunk(uint32_t f0);
-
55 };
-
56 
-
57 #endif
+
49  uint64_t length;
+
50  uint8_t chunkSize;
+
51  } state;
+
52 
+
53  void processChunk(uint32_t f0);
+
54 };
+
55 
+
56 #endif
virtual ~BLAKE2s()
Destroys this BLAKE2s hash object after clearing sensitive information.
Definition: BLAKE2s.cpp:56
size_t hashSize() const
Size of the hash result from finalize().
Definition: BLAKE2s.cpp:61
-
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: BLAKE2s.cpp:164
+
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: BLAKE2s.cpp:154
void reset()
Resets the hash ready for a new hashing process.
Definition: BLAKE2s.cpp:81
size_t blockSize() const
Size of the internal block used by the hash algorithm.
Definition: BLAKE2s.cpp:66
Abstract base class for cryptographic hash algorithms.
Definition: Hash.h:29
-
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: BLAKE2s.cpp:118
+
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: BLAKE2s.cpp:116
BLAKE2s hash algorithm.
Definition: BLAKE2s.h:28
-
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: BLAKE2s.cpp:144
+
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: BLAKE2s.cpp:138
BLAKE2s()
Constructs a BLAKE2s hash object.
Definition: BLAKE2s.cpp:47
diff --git a/Bitmap_8cpp_source.html b/Bitmap_8cpp_source.html index d7821420..86c4ad76 100644 --- a/Bitmap_8cpp_source.html +++ b/Bitmap_8cpp_source.html @@ -694,7 +694,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Bitmap_8h_source.html b/Bitmap_8h_source.html index 3ec3a3df..67454c57 100644 --- a/Bitmap_8h_source.html +++ b/Bitmap_8h_source.html @@ -271,7 +271,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/BlinkLED_8cpp_source.html b/BlinkLED_8cpp_source.html index 17f14b6c..b3347b94 100644 --- a/BlinkLED_8cpp_source.html +++ b/BlinkLED_8cpp_source.html @@ -196,7 +196,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/BlinkLED_8h_source.html b/BlinkLED_8h_source.html index 9ce8a5a4..f68a9b03 100644 --- a/BlinkLED_8h_source.html +++ b/BlinkLED_8h_source.html @@ -157,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/BlockCipher_8cpp_source.html b/BlockCipher_8cpp_source.html index 0e3847cf..60f89a6e 100644 --- a/BlockCipher_8cpp_source.html +++ b/BlockCipher_8cpp_source.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/BlockCipher_8h_source.html b/BlockCipher_8h_source.html index 45249339..d787e115 100644 --- a/BlockCipher_8h_source.html +++ b/BlockCipher_8h_source.html @@ -146,7 +146,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/BoolField_8cpp_source.html b/BoolField_8cpp_source.html index 43656d5d..65c72120 100644 --- a/BoolField_8cpp_source.html +++ b/BoolField_8cpp_source.html @@ -202,7 +202,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/BoolField_8h_source.html b/BoolField_8h_source.html index 4db29607..2faa79c4 100644 --- a/BoolField_8h_source.html +++ b/BoolField_8h_source.html @@ -160,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/CBC_8cpp_source.html b/CBC_8cpp_source.html index c2295604..1491ccc9 100644 --- a/CBC_8cpp_source.html +++ b/CBC_8cpp_source.html @@ -208,7 +208,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/CBC_8h_source.html b/CBC_8h_source.html index 822c452b..4aa2fde9 100644 --- a/CBC_8h_source.html +++ b/CBC_8h_source.html @@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/CFB_8cpp_source.html b/CFB_8cpp_source.html index f4b1cd63..fac0cd51 100644 --- a/CFB_8cpp_source.html +++ b/CFB_8cpp_source.html @@ -233,7 +233,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/CFB_8h_source.html b/CFB_8h_source.html index abcaa851..f8b58d01 100644 --- a/CFB_8h_source.html +++ b/CFB_8h_source.html @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/CTR_8cpp_source.html b/CTR_8cpp_source.html index ba98ae09..8a2aa7ae 100644 --- a/CTR_8cpp_source.html +++ b/CTR_8cpp_source.html @@ -228,7 +228,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/CTR_8h_source.html b/CTR_8h_source.html index 2cba8aa2..bd688730 100644 --- a/CTR_8h_source.html +++ b/CTR_8h_source.html @@ -175,7 +175,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/ChaCha_8cpp_source.html b/ChaCha_8cpp_source.html index 372c3a42..d802704f 100644 --- a/ChaCha_8cpp_source.html +++ b/ChaCha_8cpp_source.html @@ -300,7 +300,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/ChaCha_8h_source.html b/ChaCha_8h_source.html index 3d61550e..bdf32b9b 100644 --- a/ChaCha_8h_source.html +++ b/ChaCha_8h_source.html @@ -163,7 +163,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Charlieplex_8cpp_source.html b/Charlieplex_8cpp_source.html index b0022562..e3efb326 100644 --- a/Charlieplex_8cpp_source.html +++ b/Charlieplex_8cpp_source.html @@ -232,7 +232,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Charlieplex_8h_source.html b/Charlieplex_8h_source.html index ca3cd350..fb06ef9b 100644 --- a/Charlieplex_8h_source.html +++ b/Charlieplex_8h_source.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/ChaseLEDs_8cpp_source.html b/ChaseLEDs_8cpp_source.html index 3676ec46..86a4ff2b 100644 --- a/ChaseLEDs_8cpp_source.html +++ b/ChaseLEDs_8cpp_source.html @@ -160,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/ChaseLEDs_8h_source.html b/ChaseLEDs_8h_source.html index ec2c367a..e88e6927 100644 --- a/ChaseLEDs_8h_source.html +++ b/ChaseLEDs_8h_source.html @@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Cipher_8cpp_source.html b/Cipher_8cpp_source.html index 3121eefd..5bea2fd0 100644 --- a/Cipher_8cpp_source.html +++ b/Cipher_8cpp_source.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Cipher_8h_source.html b/Cipher_8h_source.html index 1b3744fc..26b150c5 100644 --- a/Cipher_8h_source.html +++ b/Cipher_8h_source.html @@ -148,7 +148,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Crypto_8cpp_source.html b/Crypto_8cpp_source.html index 3d68321b..0e93fde8 100644 --- a/Crypto_8cpp_source.html +++ b/Crypto_8cpp_source.html @@ -127,7 +127,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Crypto_8h_source.html b/Crypto_8h_source.html index 9f3e82c0..fcff9631 100644 --- a/Crypto_8h_source.html +++ b/Crypto_8h_source.html @@ -128,7 +128,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Curve25519_8cpp_source.html b/Curve25519_8cpp_source.html index d5602a55..e13bc3b9 100644 --- a/Curve25519_8cpp_source.html +++ b/Curve25519_8cpp_source.html @@ -717,7 +717,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Curve25519_8h_source.html b/Curve25519_8h_source.html index 5d23b32c..2db152bd 100644 --- a/Curve25519_8h_source.html +++ b/Curve25519_8h_source.html @@ -188,7 +188,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/DMD_8cpp_source.html b/DMD_8cpp_source.html index e15eece8..261e7faf 100644 --- a/DMD_8cpp_source.html +++ b/DMD_8cpp_source.html @@ -456,7 +456,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/DMD_8h_source.html b/DMD_8h_source.html index 683c0f30..c1ffea8c 100644 --- a/DMD_8h_source.html +++ b/DMD_8h_source.html @@ -170,7 +170,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/DS1307RTC_8cpp_source.html b/DS1307RTC_8cpp_source.html index 4ee173d7..1e98bd65 100644 --- a/DS1307RTC_8cpp_source.html +++ b/DS1307RTC_8cpp_source.html @@ -415,7 +415,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/DS1307RTC_8h_source.html b/DS1307RTC_8h_source.html index 4bc46ebe..83309edd 100644 --- a/DS1307RTC_8h_source.html +++ b/DS1307RTC_8h_source.html @@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/DS3232RTC_8cpp_source.html b/DS3232RTC_8cpp_source.html index b8f8df30..83fb083c 100644 --- a/DS3232RTC_8cpp_source.html +++ b/DS3232RTC_8cpp_source.html @@ -575,7 +575,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/DS3232RTC_8h_source.html b/DS3232RTC_8h_source.html index 7a7df6b1..dace665f 100644 --- a/DS3232RTC_8h_source.html +++ b/DS3232RTC_8h_source.html @@ -190,7 +190,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/DejaVuSans9_8h_source.html b/DejaVuSans9_8h_source.html index efcb565d..32cced0a 100644 --- a/DejaVuSans9_8h_source.html +++ b/DejaVuSans9_8h_source.html @@ -257,7 +257,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/DejaVuSansBold9_8h_source.html b/DejaVuSansBold9_8h_source.html index 19716ecf..c10bf507 100644 --- a/DejaVuSansBold9_8h_source.html +++ b/DejaVuSansBold9_8h_source.html @@ -257,7 +257,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/DejaVuSansItalic9_8h_source.html b/DejaVuSansItalic9_8h_source.html index e0ae4cf6..c122831a 100644 --- a/DejaVuSansItalic9_8h_source.html +++ b/DejaVuSansItalic9_8h_source.html @@ -257,7 +257,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/EEPROM24_8cpp_source.html b/EEPROM24_8cpp_source.html index 9e488054..a061d0c6 100644 --- a/EEPROM24_8cpp_source.html +++ b/EEPROM24_8cpp_source.html @@ -282,7 +282,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/EEPROM24_8h_source.html b/EEPROM24_8h_source.html index 4f48d26d..6e8d71da 100644 --- a/EEPROM24_8h_source.html +++ b/EEPROM24_8h_source.html @@ -186,7 +186,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Field_8cpp_source.html b/Field_8cpp_source.html index 07891416..d32dd103 100644 --- a/Field_8cpp_source.html +++ b/Field_8cpp_source.html @@ -196,7 +196,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Field_8h_source.html b/Field_8h_source.html index 7139f109..f9eeb4e7 100644 --- a/Field_8h_source.html +++ b/Field_8h_source.html @@ -164,7 +164,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Form_8cpp_source.html b/Form_8cpp_source.html index fd548a17..47c0422e 100644 --- a/Form_8cpp_source.html +++ b/Form_8cpp_source.html @@ -278,7 +278,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Form_8h_source.html b/Form_8h_source.html index 234adc01..6f647c95 100644 --- a/Form_8h_source.html +++ b/Form_8h_source.html @@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Hash_8cpp_source.html b/Hash_8cpp_source.html index 470d95d5..4ca4c053 100644 --- a/Hash_8cpp_source.html +++ b/Hash_8cpp_source.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Hash_8h_source.html b/Hash_8h_source.html index 1d5494f1..44436b09 100644 --- a/Hash_8h_source.html +++ b/Hash_8h_source.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/I2CMaster_8cpp_source.html b/I2CMaster_8cpp_source.html index 4e93eb66..ada39857 100644 --- a/I2CMaster_8cpp_source.html +++ b/I2CMaster_8cpp_source.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/I2CMaster_8h_source.html b/I2CMaster_8h_source.html index 20af61de..9c0bfc5b 100644 --- a/I2CMaster_8h_source.html +++ b/I2CMaster_8h_source.html @@ -140,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/IRreceiver_8cpp_source.html b/IRreceiver_8cpp_source.html index 44da79d2..fa2a84cc 100644 --- a/IRreceiver_8cpp_source.html +++ b/IRreceiver_8cpp_source.html @@ -261,7 +261,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/IRreceiver_8h_source.html b/IRreceiver_8h_source.html index 947999b7..9ad0a8a2 100644 --- a/IRreceiver_8h_source.html +++ b/IRreceiver_8h_source.html @@ -157,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/IntField_8cpp_source.html b/IntField_8cpp_source.html index 72527b95..21fe0878 100644 --- a/IntField_8cpp_source.html +++ b/IntField_8cpp_source.html @@ -208,7 +208,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/IntField_8h_source.html b/IntField_8h_source.html index 6bfcc5d3..2fe4a72a 100644 --- a/IntField_8h_source.html +++ b/IntField_8h_source.html @@ -173,7 +173,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/KeccakCore_8cpp_source.html b/KeccakCore_8cpp_source.html new file mode 100644 index 00000000..d266b429 --- /dev/null +++ b/KeccakCore_8cpp_source.html @@ -0,0 +1,342 @@ + + + + + + +ArduinoLibs: KeccakCore.cpp Source File + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
KeccakCore.cpp
+
+
+
1 /*
+
2  * Copyright (C) 2015 Southern Storm Software, Pty Ltd.
+
3  *
+
4  * Permission is hereby granted, free of charge, to any person obtaining a
+
5  * copy of this software and associated documentation files (the "Software"),
+
6  * to deal in the Software without restriction, including without limitation
+
7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
8  * and/or sell copies of the Software, and to permit persons to whom the
+
9  * Software is furnished to do so, subject to the following conditions:
+
10  *
+
11  * The above copyright notice and this permission notice shall be included
+
12  * in all copies or substantial portions of the Software.
+
13  *
+
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+
15  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+
17  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+
18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+
19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+
20  * DEALINGS IN THE SOFTWARE.
+
21  */
+
22 
+
23 #include "KeccakCore.h"
+
24 #include "Crypto.h"
+
25 #include "utility/EndianUtil.h"
+
26 #include "utility/RotateUtil.h"
+
27 #include "utility/ProgMemUtil.h"
+
28 #include <string.h>
+
29 
+ +
50  : _blockSize(8)
+
51 {
+
52  memset(state.A, 0, sizeof(state.A));
+
53  state.inputSize = 0;
+
54  state.outputSize = 0;
+
55 }
+
56 
+ +
62 {
+
63  clean(state);
+
64 }
+
65 
+
71 size_t KeccakCore::capacity() const
+
72 {
+
73  return 1600 - ((size_t)_blockSize) * 8;
+
74 }
+
75 
+
89 void KeccakCore::setCapacity(size_t capacity)
+
90 {
+
91  _blockSize = (1600 - capacity) / 8;
+
92  reset();
+
93 }
+
94 
+ +
110 {
+
111  memset(state.A, 0, sizeof(state.A));
+
112  state.inputSize = 0;
+
113  state.outputSize = 0;
+
114 }
+
115 
+
128 void KeccakCore::update(const void *data, size_t size)
+
129 {
+
130  // Stop generating output while we incorporate the new data.
+
131  state.outputSize = 0;
+
132 
+
133  // Break the input up into chunks and process each in turn.
+
134  const uint8_t *d = (const uint8_t *)data;
+
135 #if !defined(CRYPTO_LITTLE_ENDIAN)
+
136  uint64_t *Awords = &(state.A[0][0]);
+
137  uint8_t index, index2;
+
138 #endif
+
139  while (size > 0) {
+
140  uint8_t len = _blockSize - state.inputSize;
+
141  if (len > size)
+
142  len = size;
+
143 #if defined(CRYPTO_LITTLE_ENDIAN)
+
144  uint8_t *Abytes = ((uint8_t *)state.A) + state.inputSize;
+
145  for (uint8_t posn = 0; posn < len; ++posn)
+
146  Abytes[posn] ^= d[posn];
+
147 #else
+
148  index2 = state.inputSize;
+
149  for (index = 0; index < len; ++index) {
+
150  Awords[index2 / 8] ^= (((uint64_t)d[index]) << ((index2 % 8) * 8));
+
151  ++index2;
+
152  }
+
153 #endif
+
154  state.inputSize += len;
+
155  size -= len;
+
156  d += len;
+
157  if (state.inputSize == _blockSize) {
+
158  keccakp();
+
159  state.inputSize = 0;
+
160  }
+
161  }
+
162 }
+
163 
+
174 void KeccakCore::pad(uint8_t tag)
+
175 {
+
176  // Padding for SHA3-NNN variants according to FIPS 202 appends "01",
+
177  // then another "1", then many zero bits, followed by a final "1".
+
178  // SHAKE appends "1111" first instead of "01". Note that SHA-3 numbers
+
179  // bits from the least significant, so appending "01" is equivalent
+
180  // to 0x02 for byte-aligned data, not 0x40.
+
181  uint8_t size = state.inputSize;
+
182  uint64_t *Awords = &(state.A[0][0]);
+
183  Awords[size / 8] ^= (((uint64_t)tag) << ((size % 8) * 8));
+
184  Awords[(_blockSize - 1) / 8] ^= 0x8000000000000000ULL;
+
185  keccakp();
+
186  state.inputSize = 0;
+
187  state.outputSize = 0;
+
188 }
+
189 
+
201 void KeccakCore::extract(void *data, size_t size)
+
202 {
+
203 #if !defined(CRYPTO_LITTLE_ENDIAN)
+
204  uint8_t index, index2;
+
205  const uint64_t *Awords = &(state.A[0][0]);
+
206 #endif
+
207 
+
208  // Stop accepting input while we are generating output.
+
209  state.inputSize = 0;
+
210 
+
211  // Copy the output data into the caller's return buffer.
+
212  uint8_t *d = (uint8_t *)data;
+
213  uint8_t tempSize;
+
214  while (size > 0) {
+
215  // Generate another output block if the current one has been exhausted.
+
216  if (state.outputSize >= _blockSize) {
+
217  keccakp();
+
218  state.outputSize = 0;
+
219  }
+
220 
+
221  // How many bytes can we copy this time around?
+
222  tempSize = _blockSize - state.outputSize;
+
223  if (tempSize > size)
+
224  tempSize = size;
+
225 
+
226  // Copy the partial output data into the caller's return buffer.
+
227 #if defined(CRYPTO_LITTLE_ENDIAN)
+
228  memcpy(d, ((uint8_t *)(state.A)) + state.outputSize, tempSize);
+
229 #else
+
230  index2 = state.outputSize;
+
231  for (index = 0; index < tempSize; ++index) {
+
232  d[index] = (uint8_t)(Awords[index2 / 8] >> ((index2 % 8) * 8));
+
233  ++index2;
+
234  }
+
235 #endif
+
236  state.outputSize += tempSize;
+
237  size -= tempSize;
+
238  d += tempSize;
+
239  }
+
240 }
+
241 
+ +
246 {
+
247  clean(state);
+
248 }
+
249 
+
253 void KeccakCore::keccakp()
+
254 {
+
255  static const uint8_t addMod5Table[9] PROGMEM = {
+
256  0, 1, 2, 3, 4, 0, 1, 2, 3
+
257  };
+
258  #define addMod5(x, y) (pgm_read_byte(&(addMod5Table[(x) + (y)])))
+
259  uint64_t D;
+
260  uint8_t index, index2;
+
261  for (uint8_t round = 0; round < 24; ++round) {
+
262  // Step mapping theta. The specification mentions two temporary
+
263  // arrays of size 5 called C and D. To save a bit of memory,
+
264  // we use the first row of B to store C and compute D on the fly.
+
265  for (index = 0; index < 5; ++index) {
+
266  state.B[0][index] = state.A[0][index] ^ state.A[1][index] ^
+
267  state.A[2][index] ^ state.A[3][index] ^
+
268  state.A[4][index];
+
269  }
+
270  for (index = 0; index < 5; ++index) {
+
271  D = state.B[0][addMod5(index, 4)] ^
+
272  leftRotate1_64(state.B[0][addMod5(index, 1)]);
+
273  for (index2 = 0; index2 < 5; ++index2)
+
274  state.A[index2][index] ^= D;
+
275  }
+
276 
+
277  // Step mapping rho and pi combined into a single step.
+
278  // Rotate all lanes by a specific offset and rearrange.
+
279  state.B[0][0] = state.A[0][0];
+
280  state.B[1][0] = leftRotate28_64(state.A[0][3]);
+
281  state.B[2][0] = leftRotate1_64 (state.A[0][1]);
+
282  state.B[3][0] = leftRotate27_64(state.A[0][4]);
+
283  state.B[4][0] = leftRotate62_64(state.A[0][2]);
+
284  state.B[0][1] = leftRotate44_64(state.A[1][1]);
+
285  state.B[1][1] = leftRotate20_64(state.A[1][4]);
+
286  state.B[2][1] = leftRotate6_64 (state.A[1][2]);
+
287  state.B[3][1] = leftRotate36_64(state.A[1][0]);
+
288  state.B[4][1] = leftRotate55_64(state.A[1][3]);
+
289  state.B[0][2] = leftRotate43_64(state.A[2][2]);
+
290  state.B[1][2] = leftRotate3_64 (state.A[2][0]);
+
291  state.B[2][2] = leftRotate25_64(state.A[2][3]);
+
292  state.B[3][2] = leftRotate10_64(state.A[2][1]);
+
293  state.B[4][2] = leftRotate39_64(state.A[2][4]);
+
294  state.B[0][3] = leftRotate21_64(state.A[3][3]);
+
295  state.B[1][3] = leftRotate45_64(state.A[3][1]);
+
296  state.B[2][3] = leftRotate8_64 (state.A[3][4]);
+
297  state.B[3][3] = leftRotate15_64(state.A[3][2]);
+
298  state.B[4][3] = leftRotate41_64(state.A[3][0]);
+
299  state.B[0][4] = leftRotate14_64(state.A[4][4]);
+
300  state.B[1][4] = leftRotate61_64(state.A[4][2]);
+
301  state.B[2][4] = leftRotate18_64(state.A[4][0]);
+
302  state.B[3][4] = leftRotate56_64(state.A[4][3]);
+
303  state.B[4][4] = leftRotate2_64 (state.A[4][1]);
+
304 
+
305  // Step mapping chi. Combine each lane with two other lanes in its row.
+
306  for (index = 0; index < 5; ++index) {
+
307  for (index2 = 0; index2 < 5; ++index2) {
+
308  state.A[index2][index] =
+
309  state.B[index2][index] ^
+
310  ((~state.B[index2][addMod5(index, 1)]) &
+
311  state.B[index2][addMod5(index, 2)]);
+
312  }
+
313  }
+
314 
+
315  // Step mapping iota. XOR A[0][0] with the round constant.
+
316  static uint64_t const RC[24] PROGMEM = {
+
317  0x0000000000000001ULL, 0x0000000000008082ULL, 0x800000000000808AULL,
+
318  0x8000000080008000ULL, 0x000000000000808BULL, 0x0000000080000001ULL,
+
319  0x8000000080008081ULL, 0x8000000000008009ULL, 0x000000000000008AULL,
+
320  0x0000000000000088ULL, 0x0000000080008009ULL, 0x000000008000000AULL,
+
321  0x000000008000808BULL, 0x800000000000008BULL, 0x8000000000008089ULL,
+
322  0x8000000000008003ULL, 0x8000000000008002ULL, 0x8000000000000080ULL,
+
323  0x000000000000800AULL, 0x800000008000000AULL, 0x8000000080008081ULL,
+
324  0x8000000000008080ULL, 0x0000000080000001ULL, 0x8000000080008008ULL
+
325  };
+
326  state.A[0][0] ^= pgm_read_qword(RC + round);
+
327  }
+
328 }
+
void setCapacity(size_t capacity)
Sets the capacity of the Keccak sponge function in bits.
Definition: KeccakCore.cpp:89
+
~KeccakCore()
Destroys this Keccak sponge function after clearing all sensitive information.
Definition: KeccakCore.cpp:61
+
void extract(void *data, size_t size)
Extracts data from the Keccak sponge function.
Definition: KeccakCore.cpp:201
+
void pad(uint8_t tag)
Pads the last block of input data to blockSize().
Definition: KeccakCore.cpp:174
+
size_t capacity() const
Returns the capacity of the sponge function in bits.
Definition: KeccakCore.cpp:71
+
KeccakCore()
Constructs a new Keccak sponge function.
Definition: KeccakCore.cpp:49
+
void update(const void *data, size_t size)
Updates the Keccak sponge function with more input data.
Definition: KeccakCore.cpp:128
+
void clear()
Clears all sensitive data from this object.
Definition: KeccakCore.cpp:245
+
void reset()
Resets the Keccak sponge function ready for a new session.
Definition: KeccakCore.cpp:109
+
+ + + + diff --git a/KeccakCore_8h_source.html b/KeccakCore_8h_source.html new file mode 100644 index 00000000..f46e28da --- /dev/null +++ b/KeccakCore_8h_source.html @@ -0,0 +1,171 @@ + + + + + + +ArduinoLibs: KeccakCore.h Source File + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
KeccakCore.h
+
+
+
1 /*
+
2  * Copyright (C) 2015 Southern Storm Software, Pty Ltd.
+
3  *
+
4  * Permission is hereby granted, free of charge, to any person obtaining a
+
5  * copy of this software and associated documentation files (the "Software"),
+
6  * to deal in the Software without restriction, including without limitation
+
7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
8  * and/or sell copies of the Software, and to permit persons to whom the
+
9  * Software is furnished to do so, subject to the following conditions:
+
10  *
+
11  * The above copyright notice and this permission notice shall be included
+
12  * in all copies or substantial portions of the Software.
+
13  *
+
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+
15  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+
17  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+
18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+
19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+
20  * DEALINGS IN THE SOFTWARE.
+
21  */
+
22 
+
23 #ifndef CRYPTO_KECCAKCORE_H
+
24 #define CRYPTO_KECCAKCORE_H
+
25 
+
26 #include <inttypes.h>
+
27 #include <stddef.h>
+
28 
+ +
30 {
+
31 public:
+
32  KeccakCore();
+
33  ~KeccakCore();
+
34 
+
35  size_t capacity() const;
+
36  void setCapacity(size_t capacity);
+
37 
+
38  size_t blockSize() const { return _blockSize; }
+
39 
+
40  void reset();
+
41 
+
42  void update(const void *data, size_t size);
+
43  void pad(uint8_t tag);
+
44 
+
45  void extract(void *data, size_t size);
+
46 
+
47  void clear();
+
48 
+
49 private:
+
50  struct {
+
51  uint64_t A[5][5];
+
52  uint64_t B[5][5];
+
53  uint8_t inputSize;
+
54  uint8_t outputSize;
+
55  } state;
+
56  uint8_t _blockSize;
+
57 
+
58  void keccakp();
+
59 };
+
60 
+
61 #endif
+
size_t blockSize() const
Returns the input block size for the sponge function in bytes.
Definition: KeccakCore.h:38
+
void setCapacity(size_t capacity)
Sets the capacity of the Keccak sponge function in bits.
Definition: KeccakCore.cpp:89
+
~KeccakCore()
Destroys this Keccak sponge function after clearing all sensitive information.
Definition: KeccakCore.cpp:61
+
void extract(void *data, size_t size)
Extracts data from the Keccak sponge function.
Definition: KeccakCore.cpp:201
+
void pad(uint8_t tag)
Pads the last block of input data to blockSize().
Definition: KeccakCore.cpp:174
+
size_t capacity() const
Returns the capacity of the sponge function in bits.
Definition: KeccakCore.cpp:71
+
KeccakCore()
Constructs a new Keccak sponge function.
Definition: KeccakCore.cpp:49
+
void update(const void *data, size_t size)
Updates the Keccak sponge function with more input data.
Definition: KeccakCore.cpp:128
+
void clear()
Clears all sensitive data from this object.
Definition: KeccakCore.cpp:245
+
void reset()
Resets the Keccak sponge function ready for a new session.
Definition: KeccakCore.cpp:109
+
Keccak core sponge function.
Definition: KeccakCore.h:29
+
+ + + + diff --git a/LCD_8cpp_source.html b/LCD_8cpp_source.html index 95e14409..5f6105dd 100644 --- a/LCD_8cpp_source.html +++ b/LCD_8cpp_source.html @@ -290,7 +290,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/LCD_8h_source.html b/LCD_8h_source.html index 80b06cab..a1e5d000 100644 --- a/LCD_8h_source.html +++ b/LCD_8h_source.html @@ -201,7 +201,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/ListField_8cpp_source.html b/ListField_8cpp_source.html index a6490464..496fe971 100644 --- a/ListField_8cpp_source.html +++ b/ListField_8cpp_source.html @@ -221,7 +221,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/ListField_8h_source.html b/ListField_8h_source.html index b5ef4ea4..6ec3d173 100644 --- a/ListField_8h_source.html +++ b/ListField_8h_source.html @@ -159,7 +159,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Melody_8cpp_source.html b/Melody_8cpp_source.html index 2bbb14a1..9917f3f4 100644 --- a/Melody_8cpp_source.html +++ b/Melody_8cpp_source.html @@ -215,7 +215,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Melody_8h_source.html b/Melody_8h_source.html index 50fcd523..42a48c9c 100644 --- a/Melody_8h_source.html +++ b/Melody_8h_source.html @@ -258,7 +258,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Mono5x7_8h_source.html b/Mono5x7_8h_source.html index 34442216..b0ff658c 100644 --- a/Mono5x7_8h_source.html +++ b/Mono5x7_8h_source.html @@ -246,7 +246,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/NoiseSource_8cpp_source.html b/NoiseSource_8cpp_source.html index b73c502e..7117ea50 100644 --- a/NoiseSource_8cpp_source.html +++ b/NoiseSource_8cpp_source.html @@ -132,7 +132,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/NoiseSource_8h_source.html b/NoiseSource_8h_source.html index 0adedf8d..fc1c270a 100644 --- a/NoiseSource_8h_source.html +++ b/NoiseSource_8h_source.html @@ -139,7 +139,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/OFB_8cpp_source.html b/OFB_8cpp_source.html index d3e476d8..79d52669 100644 --- a/OFB_8cpp_source.html +++ b/OFB_8cpp_source.html @@ -206,7 +206,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/OFB_8h_source.html b/OFB_8h_source.html index 1f3775e1..9fa3266b 100644 --- a/OFB_8h_source.html +++ b/OFB_8h_source.html @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/PowerSave_8cpp_source.html b/PowerSave_8cpp_source.html index cfb7c91b..f7e1ca50 100644 --- a/PowerSave_8cpp_source.html +++ b/PowerSave_8cpp_source.html @@ -155,7 +155,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/PowerSave_8h_source.html b/PowerSave_8h_source.html index b2f80af1..637fef14 100644 --- a/PowerSave_8h_source.html +++ b/PowerSave_8h_source.html @@ -158,7 +158,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/RC5_8h_source.html b/RC5_8h_source.html index 62e4b356..77cc2529 100644 --- a/RC5_8h_source.html +++ b/RC5_8h_source.html @@ -435,7 +435,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/RNG_8cpp_source.html b/RNG_8cpp_source.html index ffd3cfa0..99afb3aa 100644 --- a/RNG_8cpp_source.html +++ b/RNG_8cpp_source.html @@ -365,7 +365,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/RNG_8h_source.html b/RNG_8h_source.html index 75401454..2fd29ddb 100644 --- a/RNG_8h_source.html +++ b/RNG_8h_source.html @@ -173,7 +173,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/RTC_8cpp_source.html b/RTC_8cpp_source.html index 870442e7..44e33921 100644 --- a/RTC_8cpp_source.html +++ b/RTC_8cpp_source.html @@ -380,7 +380,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/RTC_8h_source.html b/RTC_8h_source.html index d30b2a26..448adbe0 100644 --- a/RTC_8h_source.html +++ b/RTC_8h_source.html @@ -231,7 +231,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/SHA1_8cpp_source.html b/SHA1_8cpp_source.html index 7f81acb6..9bfdf149 100644 --- a/SHA1_8cpp_source.html +++ b/SHA1_8cpp_source.html @@ -144,173 +144,164 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
69  state.h[3] = 0x10325476;
70  state.h[4] = 0xC3D2E1F0;
71  state.chunkSize = 0;
-
72  state.finalized = false;
-
73  state.length = 0;
-
74 }
-
75 
-
76 void SHA1::update(const void *data, size_t len)
-
77 {
-
78  // Reset the hashing process if finalize() was called previously.
-
79  if (state.finalized)
-
80  reset();
-
81 
-
82  // Update the total length (in bits, not bytes).
-
83  state.length += ((uint64_t)len) << 3;
-
84 
-
85  // Break the input up into 512-bit chunks and process each in turn.
-
86  const uint8_t *d = (const uint8_t *)data;
-
87  while (len > 0) {
-
88  uint8_t size = 64 - state.chunkSize;
-
89  if (size > len)
-
90  size = len;
-
91  memcpy(((uint8_t *)state.w) + state.chunkSize, d, size);
-
92  state.chunkSize += size;
-
93  len -= size;
-
94  d += size;
-
95  if (state.chunkSize == 64) {
-
96  processChunk();
-
97  state.chunkSize = 0;
-
98  }
-
99  }
-
100 }
-
101 
-
102 void SHA1::finalize(void *hash, size_t len)
-
103 {
-
104  // Finalize the hash if necessary.
-
105  if (!state.finalized) {
-
106  // Pad the last chunk. We may need two padding chunks if there
-
107  // isn't enough room in the first for the padding and length.
-
108  uint8_t *wbytes = (uint8_t *)state.w;
-
109  if (state.chunkSize <= (64 - 9)) {
-
110  wbytes[state.chunkSize] = 0x80;
-
111  memset(wbytes + state.chunkSize + 1, 0x00, 64 - 8 - (state.chunkSize + 1));
-
112  state.w[14] = htobe32((uint32_t)(state.length >> 32));
-
113  state.w[15] = htobe32((uint32_t)state.length);
-
114  processChunk();
-
115  } else {
-
116  wbytes[state.chunkSize] = 0x80;
-
117  memset(wbytes + state.chunkSize + 1, 0x00, 64 - (state.chunkSize + 1));
-
118  processChunk();
-
119  memset(wbytes, 0x00, 64 - 8);
-
120  state.w[14] = htobe32((uint32_t)(state.length >> 32));
-
121  state.w[15] = htobe32((uint32_t)state.length);
-
122  processChunk();
-
123  }
-
124 
-
125  // Convert the result into big endian and return it.
-
126  for (uint8_t posn = 0; posn < 5; ++posn)
-
127  state.w[posn] = htobe32(state.h[posn]);
-
128  state.finalized = true;
-
129  }
-
130 
-
131  // Copy the hash to the caller's return buffer.
-
132  if (len > 20)
-
133  len = 20;
-
134  memcpy(hash, state.w, len);
-
135 }
-
136 
-
137 void SHA1::clear()
-
138 {
-
139  clean(state);
-
140  reset();
-
141 }
+
72  state.length = 0;
+
73 }
+
74 
+
75 void SHA1::update(const void *data, size_t len)
+
76 {
+
77  // Update the total length (in bits, not bytes).
+
78  state.length += ((uint64_t)len) << 3;
+
79 
+
80  // Break the input up into 512-bit chunks and process each in turn.
+
81  const uint8_t *d = (const uint8_t *)data;
+
82  while (len > 0) {
+
83  uint8_t size = 64 - state.chunkSize;
+
84  if (size > len)
+
85  size = len;
+
86  memcpy(((uint8_t *)state.w) + state.chunkSize, d, size);
+
87  state.chunkSize += size;
+
88  len -= size;
+
89  d += size;
+
90  if (state.chunkSize == 64) {
+
91  processChunk();
+
92  state.chunkSize = 0;
+
93  }
+
94  }
+
95 }
+
96 
+
97 void SHA1::finalize(void *hash, size_t len)
+
98 {
+
99  // Pad the last chunk. We may need two padding chunks if there
+
100  // isn't enough room in the first for the padding and length.
+
101  uint8_t *wbytes = (uint8_t *)state.w;
+
102  if (state.chunkSize <= (64 - 9)) {
+
103  wbytes[state.chunkSize] = 0x80;
+
104  memset(wbytes + state.chunkSize + 1, 0x00, 64 - 8 - (state.chunkSize + 1));
+
105  state.w[14] = htobe32((uint32_t)(state.length >> 32));
+
106  state.w[15] = htobe32((uint32_t)state.length);
+
107  processChunk();
+
108  } else {
+
109  wbytes[state.chunkSize] = 0x80;
+
110  memset(wbytes + state.chunkSize + 1, 0x00, 64 - (state.chunkSize + 1));
+
111  processChunk();
+
112  memset(wbytes, 0x00, 64 - 8);
+
113  state.w[14] = htobe32((uint32_t)(state.length >> 32));
+
114  state.w[15] = htobe32((uint32_t)state.length);
+
115  processChunk();
+
116  }
+
117 
+
118  // Convert the result into big endian and return it.
+
119  for (uint8_t posn = 0; posn < 5; ++posn)
+
120  state.w[posn] = htobe32(state.h[posn]);
+
121 
+
122  // Copy the hash to the caller's return buffer.
+
123  if (len > 20)
+
124  len = 20;
+
125  memcpy(hash, state.w, len);
+
126 }
+
127 
+
128 void SHA1::clear()
+
129 {
+
130  clean(state);
+
131  reset();
+
132 }
+
133 
+
139 void SHA1::processChunk()
+
140 {
+
141  uint8_t index;
142 
-
148 void SHA1::processChunk()
-
149 {
-
150  uint8_t index;
-
151 
-
152  // Convert the first 16 words from big endian to host byte order.
-
153  for (index = 0; index < 16; ++index)
-
154  state.w[index] = be32toh(state.w[index]);
-
155 
-
156  // Initialize the hash value for this chunk.
-
157  uint32_t a = state.h[0];
-
158  uint32_t b = state.h[1];
-
159  uint32_t c = state.h[2];
-
160  uint32_t d = state.h[3];
-
161  uint32_t e = state.h[4];
-
162 
-
163  // Perform the first 16 rounds of the compression function main loop.
-
164  uint32_t temp;
-
165  for (index = 0; index < 16; ++index) {
-
166  temp = leftRotate5(a) + ((b & c) | ((~b) & d)) + e + 0x5A827999 + state.w[index];
-
167  e = d;
-
168  d = c;
-
169  c = leftRotate30(b);
-
170  b = a;
-
171  a = temp;
-
172  }
-
173 
-
174  // Perform the 64 remaining rounds. We expand the first 16 words to
-
175  // 80 in-place in the "w" array. This saves 256 bytes of memory
-
176  // that would have otherwise need to be allocated to the "w" array.
-
177  for (; index < 20; ++index) {
-
178  temp = state.w[index & 0x0F] = leftRotate1
-
179  (state.w[(index - 3) & 0x0F] ^ state.w[(index - 8) & 0x0F] ^
-
180  state.w[(index - 14) & 0x0F] ^ state.w[(index - 16) & 0x0F]);
-
181  temp = leftRotate5(a) + ((b & c) | ((~b) & d)) + e + 0x5A827999 + temp;
-
182  e = d;
-
183  d = c;
-
184  c = leftRotate30(b);
-
185  b = a;
-
186  a = temp;
-
187  }
-
188  for (; index < 40; ++index) {
-
189  temp = state.w[index & 0x0F] = leftRotate1
-
190  (state.w[(index - 3) & 0x0F] ^ state.w[(index - 8) & 0x0F] ^
-
191  state.w[(index - 14) & 0x0F] ^ state.w[(index - 16) & 0x0F]);
-
192  temp = leftRotate5(a) + (b ^ c ^ d) + e + 0x6ED9EBA1 + temp;
-
193  e = d;
-
194  d = c;
-
195  c = leftRotate30(b);
-
196  b = a;
-
197  a = temp;
-
198  }
-
199  for (; index < 60; ++index) {
-
200  temp = state.w[index & 0x0F] = leftRotate1
-
201  (state.w[(index - 3) & 0x0F] ^ state.w[(index - 8) & 0x0F] ^
-
202  state.w[(index - 14) & 0x0F] ^ state.w[(index - 16) & 0x0F]);
-
203  temp = leftRotate5(a) + ((b & c) | (b & d) | (c & d)) + e + 0x8F1BBCDC + temp;
-
204  e = d;
-
205  d = c;
-
206  c = leftRotate30(b);
-
207  b = a;
-
208  a = temp;
-
209  }
-
210  for (; index < 80; ++index) {
-
211  temp = state.w[index & 0x0F] = leftRotate1
-
212  (state.w[(index - 3) & 0x0F] ^ state.w[(index - 8) & 0x0F] ^
-
213  state.w[(index - 14) & 0x0F] ^ state.w[(index - 16) & 0x0F]);
-
214  temp = leftRotate5(a) + (b ^ c ^ d) + e + 0xCA62C1D6 + temp;
-
215  e = d;
-
216  d = c;
-
217  c = leftRotate30(b);
-
218  b = a;
-
219  a = temp;
-
220  }
-
221 
-
222  // Add this chunk's hash to the result so far.
-
223  state.h[0] += a;
-
224  state.h[1] += b;
-
225  state.h[2] += c;
-
226  state.h[3] += d;
-
227  state.h[4] += e;
-
228 
-
229  // Attempt to clean up the stack.
-
230  a = b = c = d = e = temp = 0;
-
231 }
+
143  // Convert the first 16 words from big endian to host byte order.
+
144  for (index = 0; index < 16; ++index)
+
145  state.w[index] = be32toh(state.w[index]);
+
146 
+
147  // Initialize the hash value for this chunk.
+
148  uint32_t a = state.h[0];
+
149  uint32_t b = state.h[1];
+
150  uint32_t c = state.h[2];
+
151  uint32_t d = state.h[3];
+
152  uint32_t e = state.h[4];
+
153 
+
154  // Perform the first 16 rounds of the compression function main loop.
+
155  uint32_t temp;
+
156  for (index = 0; index < 16; ++index) {
+
157  temp = leftRotate5(a) + ((b & c) | ((~b) & d)) + e + 0x5A827999 + state.w[index];
+
158  e = d;
+
159  d = c;
+
160  c = leftRotate30(b);
+
161  b = a;
+
162  a = temp;
+
163  }
+
164 
+
165  // Perform the 64 remaining rounds. We expand the first 16 words to
+
166  // 80 in-place in the "w" array. This saves 256 bytes of memory
+
167  // that would have otherwise need to be allocated to the "w" array.
+
168  for (; index < 20; ++index) {
+
169  temp = state.w[index & 0x0F] = leftRotate1
+
170  (state.w[(index - 3) & 0x0F] ^ state.w[(index - 8) & 0x0F] ^
+
171  state.w[(index - 14) & 0x0F] ^ state.w[(index - 16) & 0x0F]);
+
172  temp = leftRotate5(a) + ((b & c) | ((~b) & d)) + e + 0x5A827999 + temp;
+
173  e = d;
+
174  d = c;
+
175  c = leftRotate30(b);
+
176  b = a;
+
177  a = temp;
+
178  }
+
179  for (; index < 40; ++index) {
+
180  temp = state.w[index & 0x0F] = leftRotate1
+
181  (state.w[(index - 3) & 0x0F] ^ state.w[(index - 8) & 0x0F] ^
+
182  state.w[(index - 14) & 0x0F] ^ state.w[(index - 16) & 0x0F]);
+
183  temp = leftRotate5(a) + (b ^ c ^ d) + e + 0x6ED9EBA1 + temp;
+
184  e = d;
+
185  d = c;
+
186  c = leftRotate30(b);
+
187  b = a;
+
188  a = temp;
+
189  }
+
190  for (; index < 60; ++index) {
+
191  temp = state.w[index & 0x0F] = leftRotate1
+
192  (state.w[(index - 3) & 0x0F] ^ state.w[(index - 8) & 0x0F] ^
+
193  state.w[(index - 14) & 0x0F] ^ state.w[(index - 16) & 0x0F]);
+
194  temp = leftRotate5(a) + ((b & c) | (b & d) | (c & d)) + e + 0x8F1BBCDC + temp;
+
195  e = d;
+
196  d = c;
+
197  c = leftRotate30(b);
+
198  b = a;
+
199  a = temp;
+
200  }
+
201  for (; index < 80; ++index) {
+
202  temp = state.w[index & 0x0F] = leftRotate1
+
203  (state.w[(index - 3) & 0x0F] ^ state.w[(index - 8) & 0x0F] ^
+
204  state.w[(index - 14) & 0x0F] ^ state.w[(index - 16) & 0x0F]);
+
205  temp = leftRotate5(a) + (b ^ c ^ d) + e + 0xCA62C1D6 + temp;
+
206  e = d;
+
207  d = c;
+
208  c = leftRotate30(b);
+
209  b = a;
+
210  a = temp;
+
211  }
+
212 
+
213  // Add this chunk's hash to the result so far.
+
214  state.h[0] += a;
+
215  state.h[1] += b;
+
216  state.h[2] += c;
+
217  state.h[3] += d;
+
218  state.h[4] += e;
+
219 
+
220  // Attempt to clean up the stack.
+
221  a = b = c = d = e = temp = 0;
+
222 }
virtual ~SHA1()
Destroys this SHA-1 hash object after clearing sensitive information.
Definition: SHA1.cpp:49
void reset()
Resets the hash ready for a new hashing process.
Definition: SHA1.cpp:64
-
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: SHA1.cpp:76
-
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: SHA1.cpp:137
+
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: SHA1.cpp:75
+
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: SHA1.cpp:128
size_t blockSize() const
Size of the internal block used by the hash algorithm.
Definition: SHA1.cpp:59
-
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: SHA1.cpp:102
+
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: SHA1.cpp:97
size_t hashSize() const
Size of the hash result from finalize().
Definition: SHA1.cpp:54
SHA1()
Constructs a SHA-1 hash object.
Definition: SHA1.cpp:41
diff --git a/SHA1_8h_source.html b/SHA1_8h_source.html index 98fbade2..5572640f 100644 --- a/SHA1_8h_source.html +++ b/SHA1_8h_source.html @@ -134,29 +134,28 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
44  struct {
45  uint32_t h[5];
46  uint32_t w[16];
-
47  uint8_t chunkSize;
-
48  bool finalized;
-
49  uint64_t length;
-
50  } state;
-
51 
-
52  void processChunk();
-
53 };
-
54 
-
55 #endif
+
47  uint64_t length;
+
48  uint8_t chunkSize;
+
49  } state;
+
50 
+
51  void processChunk();
+
52 };
+
53 
+
54 #endif
virtual ~SHA1()
Destroys this SHA-1 hash object after clearing sensitive information.
Definition: SHA1.cpp:49
void reset()
Resets the hash ready for a new hashing process.
Definition: SHA1.cpp:64
Abstract base class for cryptographic hash algorithms.
Definition: Hash.h:29
-
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: SHA1.cpp:76
-
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: SHA1.cpp:137
+
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: SHA1.cpp:75
+
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: SHA1.cpp:128
size_t blockSize() const
Size of the internal block used by the hash algorithm.
Definition: SHA1.cpp:59
SHA-1 hash algorithm.
Definition: SHA1.h:28
-
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: SHA1.cpp:102
+
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: SHA1.cpp:97
size_t hashSize() const
Size of the hash result from finalize().
Definition: SHA1.cpp:54
SHA1()
Constructs a SHA-1 hash object.
Definition: SHA1.cpp:41
diff --git a/SHA256_8cpp_source.html b/SHA256_8cpp_source.html index e305570a..2a85c94f 100644 --- a/SHA256_8cpp_source.html +++ b/SHA256_8cpp_source.html @@ -148,185 +148,176 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
74  state.h[6] = 0x1f83d9ab;
75  state.h[7] = 0x5be0cd19;
76  state.chunkSize = 0;
-
77  state.finalized = false;
-
78  state.length = 0;
-
79 }
-
80 
-
81 void SHA256::update(const void *data, size_t len)
-
82 {
-
83  // Reset the hashing process if finalize() was called previously.
-
84  if (state.finalized)
-
85  reset();
-
86 
-
87  // Update the total length (in bits, not bytes).
-
88  state.length += ((uint64_t)len) << 3;
-
89 
-
90  // Break the input up into 512-bit chunks and process each in turn.
-
91  const uint8_t *d = (const uint8_t *)data;
-
92  while (len > 0) {
-
93  uint8_t size = 64 - state.chunkSize;
-
94  if (size > len)
-
95  size = len;
-
96  memcpy(((uint8_t *)state.w) + state.chunkSize, d, size);
-
97  state.chunkSize += size;
-
98  len -= size;
-
99  d += size;
-
100  if (state.chunkSize == 64) {
-
101  processChunk();
-
102  state.chunkSize = 0;
-
103  }
-
104  }
-
105 }
-
106 
-
107 void SHA256::finalize(void *hash, size_t len)
-
108 {
-
109  // Finalize the hash if necessary.
-
110  if (!state.finalized) {
-
111  // Pad the last chunk. We may need two padding chunks if there
-
112  // isn't enough room in the first for the padding and length.
-
113  uint8_t *wbytes = (uint8_t *)state.w;
-
114  if (state.chunkSize <= (64 - 9)) {
-
115  wbytes[state.chunkSize] = 0x80;
-
116  memset(wbytes + state.chunkSize + 1, 0x00, 64 - 8 - (state.chunkSize + 1));
-
117  state.w[14] = htobe32((uint32_t)(state.length >> 32));
-
118  state.w[15] = htobe32((uint32_t)state.length);
-
119  processChunk();
-
120  } else {
-
121  wbytes[state.chunkSize] = 0x80;
-
122  memset(wbytes + state.chunkSize + 1, 0x00, 64 - (state.chunkSize + 1));
-
123  processChunk();
-
124  memset(wbytes, 0x00, 64 - 8);
-
125  state.w[14] = htobe32((uint32_t)(state.length >> 32));
-
126  state.w[15] = htobe32((uint32_t)state.length);
-
127  processChunk();
-
128  }
-
129 
-
130  // Convert the result into big endian and return it.
-
131  for (uint8_t posn = 0; posn < 8; ++posn)
-
132  state.w[posn] = htobe32(state.h[posn]);
-
133  state.finalized = true;
-
134  }
-
135 
-
136  // Copy the hash to the caller's return buffer.
-
137  if (len > 32)
-
138  len = 32;
-
139  memcpy(hash, state.w, len);
-
140 }
-
141 
-
142 void SHA256::clear()
-
143 {
-
144  clean(state);
-
145  reset();
-
146 }
-
147 
-
153 void SHA256::processChunk()
-
154 {
-
155  // Round constants for SHA-256.
-
156  static uint32_t const k[64] PROGMEM = {
-
157  0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
-
158  0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
-
159  0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
-
160  0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
-
161  0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
-
162  0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
-
163  0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
-
164  0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
-
165  0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
-
166  0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
-
167  0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
-
168  0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
-
169  0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
-
170  0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
-
171  0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
-
172  0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
-
173  };
-
174 
-
175  // Convert the first 16 words from big endian to host byte order.
-
176  uint8_t index;
-
177  for (index = 0; index < 16; ++index)
-
178  state.w[index] = be32toh(state.w[index]);
-
179 
-
180  // Initialise working variables to the current hash value.
-
181  uint32_t a = state.h[0];
-
182  uint32_t b = state.h[1];
-
183  uint32_t c = state.h[2];
-
184  uint32_t d = state.h[3];
-
185  uint32_t e = state.h[4];
-
186  uint32_t f = state.h[5];
-
187  uint32_t g = state.h[6];
-
188  uint32_t h = state.h[7];
-
189 
-
190  // Perform the first 16 rounds of the compression function main loop.
-
191  uint32_t temp1, temp2;
-
192  for (index = 0; index < 16; ++index) {
-
193  temp1 = h + pgm_read_dword(k + index) + state.w[index] +
-
194  (rightRotate6(e) ^ rightRotate11(e) ^ rightRotate25(e)) +
-
195  ((e & f) ^ ((~e) & g));
-
196  temp2 = (rightRotate2(a) ^ rightRotate13(a) ^ rightRotate22(a)) +
-
197  ((a & b) ^ (a & c) ^ (b & c));
-
198  h = g;
-
199  g = f;
-
200  f = e;
-
201  e = d + temp1;
-
202  d = c;
-
203  c = b;
-
204  b = a;
-
205  a = temp1 + temp2;
-
206  }
-
207 
-
208  // Perform the 48 remaining rounds. We expand the first 16 words to
-
209  // 64 in-place in the "w" array. This saves 192 bytes of memory
-
210  // that would have otherwise need to be allocated to the "w" array.
-
211  for (; index < 64; ++index) {
-
212  // Expand the next word.
-
213  temp1 = state.w[(index - 15) & 0x0F];
-
214  temp2 = state.w[(index - 2) & 0x0F];
-
215  temp1 = state.w[index & 0x0F] =
-
216  state.w[(index - 16) & 0x0F] + state.w[(index - 7) & 0x0F] +
-
217  (rightRotate7(temp1) ^ rightRotate18(temp1) ^ (temp1 >> 3)) +
-
218  (rightRotate17(temp2) ^ rightRotate19(temp2) ^ (temp2 >> 10));
-
219 
-
220  // Perform the round.
-
221  temp1 = h + pgm_read_dword(k + index) + temp1 +
-
222  (rightRotate6(e) ^ rightRotate11(e) ^ rightRotate25(e)) +
-
223  ((e & f) ^ ((~e) & g));
-
224  temp2 = (rightRotate2(a) ^ rightRotate13(a) ^ rightRotate22(a)) +
-
225  ((a & b) ^ (a & c) ^ (b & c));
-
226  h = g;
-
227  g = f;
-
228  f = e;
-
229  e = d + temp1;
-
230  d = c;
-
231  c = b;
-
232  b = a;
-
233  a = temp1 + temp2;
-
234  }
-
235 
-
236  // Add the compressed chunk to the current hash value.
-
237  state.h[0] += a;
-
238  state.h[1] += b;
-
239  state.h[2] += c;
-
240  state.h[3] += d;
-
241  state.h[4] += e;
-
242  state.h[5] += f;
-
243  state.h[6] += g;
-
244  state.h[7] += h;
-
245 
-
246  // Attempt to clean up the stack.
-
247  a = b = c = d = e = f = g = h = temp1 = temp2 = 0;
-
248 }
+
77  state.length = 0;
+
78 }
+
79 
+
80 void SHA256::update(const void *data, size_t len)
+
81 {
+
82  // Update the total length (in bits, not bytes).
+
83  state.length += ((uint64_t)len) << 3;
+
84 
+
85  // Break the input up into 512-bit chunks and process each in turn.
+
86  const uint8_t *d = (const uint8_t *)data;
+
87  while (len > 0) {
+
88  uint8_t size = 64 - state.chunkSize;
+
89  if (size > len)
+
90  size = len;
+
91  memcpy(((uint8_t *)state.w) + state.chunkSize, d, size);
+
92  state.chunkSize += size;
+
93  len -= size;
+
94  d += size;
+
95  if (state.chunkSize == 64) {
+
96  processChunk();
+
97  state.chunkSize = 0;
+
98  }
+
99  }
+
100 }
+
101 
+
102 void SHA256::finalize(void *hash, size_t len)
+
103 {
+
104  // Pad the last chunk. We may need two padding chunks if there
+
105  // isn't enough room in the first for the padding and length.
+
106  uint8_t *wbytes = (uint8_t *)state.w;
+
107  if (state.chunkSize <= (64 - 9)) {
+
108  wbytes[state.chunkSize] = 0x80;
+
109  memset(wbytes + state.chunkSize + 1, 0x00, 64 - 8 - (state.chunkSize + 1));
+
110  state.w[14] = htobe32((uint32_t)(state.length >> 32));
+
111  state.w[15] = htobe32((uint32_t)state.length);
+
112  processChunk();
+
113  } else {
+
114  wbytes[state.chunkSize] = 0x80;
+
115  memset(wbytes + state.chunkSize + 1, 0x00, 64 - (state.chunkSize + 1));
+
116  processChunk();
+
117  memset(wbytes, 0x00, 64 - 8);
+
118  state.w[14] = htobe32((uint32_t)(state.length >> 32));
+
119  state.w[15] = htobe32((uint32_t)state.length);
+
120  processChunk();
+
121  }
+
122 
+
123  // Convert the result into big endian and return it.
+
124  for (uint8_t posn = 0; posn < 8; ++posn)
+
125  state.w[posn] = htobe32(state.h[posn]);
+
126 
+
127  // Copy the hash to the caller's return buffer.
+
128  if (len > 32)
+
129  len = 32;
+
130  memcpy(hash, state.w, len);
+
131 }
+
132 
+
133 void SHA256::clear()
+
134 {
+
135  clean(state);
+
136  reset();
+
137 }
+
138 
+
144 void SHA256::processChunk()
+
145 {
+
146  // Round constants for SHA-256.
+
147  static uint32_t const k[64] PROGMEM = {
+
148  0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
+
149  0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
+
150  0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
+
151  0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
+
152  0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
+
153  0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
+
154  0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
+
155  0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
+
156  0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
+
157  0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
+
158  0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
+
159  0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
+
160  0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
+
161  0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
+
162  0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
+
163  0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
+
164  };
+
165 
+
166  // Convert the first 16 words from big endian to host byte order.
+
167  uint8_t index;
+
168  for (index = 0; index < 16; ++index)
+
169  state.w[index] = be32toh(state.w[index]);
+
170 
+
171  // Initialise working variables to the current hash value.
+
172  uint32_t a = state.h[0];
+
173  uint32_t b = state.h[1];
+
174  uint32_t c = state.h[2];
+
175  uint32_t d = state.h[3];
+
176  uint32_t e = state.h[4];
+
177  uint32_t f = state.h[5];
+
178  uint32_t g = state.h[6];
+
179  uint32_t h = state.h[7];
+
180 
+
181  // Perform the first 16 rounds of the compression function main loop.
+
182  uint32_t temp1, temp2;
+
183  for (index = 0; index < 16; ++index) {
+
184  temp1 = h + pgm_read_dword(k + index) + state.w[index] +
+
185  (rightRotate6(e) ^ rightRotate11(e) ^ rightRotate25(e)) +
+
186  ((e & f) ^ ((~e) & g));
+
187  temp2 = (rightRotate2(a) ^ rightRotate13(a) ^ rightRotate22(a)) +
+
188  ((a & b) ^ (a & c) ^ (b & c));
+
189  h = g;
+
190  g = f;
+
191  f = e;
+
192  e = d + temp1;
+
193  d = c;
+
194  c = b;
+
195  b = a;
+
196  a = temp1 + temp2;
+
197  }
+
198 
+
199  // Perform the 48 remaining rounds. We expand the first 16 words to
+
200  // 64 in-place in the "w" array. This saves 192 bytes of memory
+
201  // that would have otherwise need to be allocated to the "w" array.
+
202  for (; index < 64; ++index) {
+
203  // Expand the next word.
+
204  temp1 = state.w[(index - 15) & 0x0F];
+
205  temp2 = state.w[(index - 2) & 0x0F];
+
206  temp1 = state.w[index & 0x0F] =
+
207  state.w[(index - 16) & 0x0F] + state.w[(index - 7) & 0x0F] +
+
208  (rightRotate7(temp1) ^ rightRotate18(temp1) ^ (temp1 >> 3)) +
+
209  (rightRotate17(temp2) ^ rightRotate19(temp2) ^ (temp2 >> 10));
+
210 
+
211  // Perform the round.
+
212  temp1 = h + pgm_read_dword(k + index) + temp1 +
+
213  (rightRotate6(e) ^ rightRotate11(e) ^ rightRotate25(e)) +
+
214  ((e & f) ^ ((~e) & g));
+
215  temp2 = (rightRotate2(a) ^ rightRotate13(a) ^ rightRotate22(a)) +
+
216  ((a & b) ^ (a & c) ^ (b & c));
+
217  h = g;
+
218  g = f;
+
219  f = e;
+
220  e = d + temp1;
+
221  d = c;
+
222  c = b;
+
223  b = a;
+
224  a = temp1 + temp2;
+
225  }
+
226 
+
227  // Add the compressed chunk to the current hash value.
+
228  state.h[0] += a;
+
229  state.h[1] += b;
+
230  state.h[2] += c;
+
231  state.h[3] += d;
+
232  state.h[4] += e;
+
233  state.h[5] += f;
+
234  state.h[6] += g;
+
235  state.h[7] += h;
+
236 
+
237  // Attempt to clean up the stack.
+
238  a = b = c = d = e = f = g = h = temp1 = temp2 = 0;
+
239 }
void reset()
Resets the hash ready for a new hashing process.
Definition: SHA256.cpp:66
SHA256()
Constructs a SHA-256 hash object.
Definition: SHA256.cpp:42
-
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: SHA256.cpp:107
+
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: SHA256.cpp:102
virtual ~SHA256()
Destroys this SHA-256 hash object after clearing sensitive information.
Definition: SHA256.cpp:51
size_t blockSize() const
Size of the internal block used by the hash algorithm.
Definition: SHA256.cpp:61
-
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: SHA256.cpp:81
+
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: SHA256.cpp:80
size_t hashSize() const
Size of the hash result from finalize().
Definition: SHA256.cpp:56
-
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: SHA256.cpp:142
+
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: SHA256.cpp:133
diff --git a/SHA256_8h_source.html b/SHA256_8h_source.html index 1558d690..8a99c980 100644 --- a/SHA256_8h_source.html +++ b/SHA256_8h_source.html @@ -134,29 +134,28 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
44  struct {
45  uint32_t h[8];
46  uint32_t w[16];
-
47  uint8_t chunkSize;
-
48  bool finalized;
-
49  uint64_t length;
-
50  } state;
-
51 
-
52  void processChunk();
-
53 };
-
54 
-
55 #endif
+
47  uint64_t length;
+
48  uint8_t chunkSize;
+
49  } state;
+
50 
+
51  void processChunk();
+
52 };
+
53 
+
54 #endif
void reset()
Resets the hash ready for a new hashing process.
Definition: SHA256.cpp:66
SHA256()
Constructs a SHA-256 hash object.
Definition: SHA256.cpp:42
Abstract base class for cryptographic hash algorithms.
Definition: Hash.h:29
-
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: SHA256.cpp:107
+
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: SHA256.cpp:102
virtual ~SHA256()
Destroys this SHA-256 hash object after clearing sensitive information.
Definition: SHA256.cpp:51
SHA-256 hash algorithm.
Definition: SHA256.h:28
size_t blockSize() const
Size of the internal block used by the hash algorithm.
Definition: SHA256.cpp:61
-
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: SHA256.cpp:81
+
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: SHA256.cpp:80
size_t hashSize() const
Size of the hash result from finalize().
Definition: SHA256.cpp:56
-
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: SHA256.cpp:142
+
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: SHA256.cpp:133
diff --git a/SHA3_8cpp_source.html b/SHA3_8cpp_source.html new file mode 100644 index 00000000..e6b083fa --- /dev/null +++ b/SHA3_8cpp_source.html @@ -0,0 +1,229 @@ + + + + + + +ArduinoLibs: SHA3.cpp Source File + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
SHA3.cpp
+
+
+
1 /*
+
2  * Copyright (C) 2015 Southern Storm Software, Pty Ltd.
+
3  *
+
4  * Permission is hereby granted, free of charge, to any person obtaining a
+
5  * copy of this software and associated documentation files (the "Software"),
+
6  * to deal in the Software without restriction, including without limitation
+
7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
8  * and/or sell copies of the Software, and to permit persons to whom the
+
9  * Software is furnished to do so, subject to the following conditions:
+
10  *
+
11  * The above copyright notice and this permission notice shall be included
+
12  * in all copies or substantial portions of the Software.
+
13  *
+
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+
15  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+
17  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+
18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+
19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+
20  * DEALINGS IN THE SOFTWARE.
+
21  */
+
22 
+
23 #include "SHA3.h"
+
24 
+ +
38 {
+
39  core.setCapacity(512);
+
40 }
+
41 
+ +
46 {
+
47  // The destructor for the KeccakCore object will do most of the work.
+
48 }
+
49 
+
50 size_t SHA3_256::hashSize() const
+
51 {
+
52  return 32;
+
53 }
+
54 
+
55 size_t SHA3_256::blockSize() const
+
56 {
+
57  return core.blockSize();
+
58 }
+
59 
+ +
61 {
+
62  core.reset();
+
63 }
+
64 
+
65 void SHA3_256::update(const void *data, size_t len)
+
66 {
+
67  core.update(data, len);
+
68 }
+
69 
+
70 void SHA3_256::finalize(void *hash, size_t len)
+
71 {
+
72  // Pad the final block and then extract the hash value.
+
73  core.pad(0x06);
+
74  core.extract(hash, len);
+
75 }
+
76 
+ +
78 {
+
79  core.clear();
+
80 }
+
81 
+ +
95 {
+
96  core.setCapacity(1024);
+
97 }
+
98 
+ +
103 {
+
104  // The destructor for the KeccakCore object will do most of the work.
+
105 }
+
106 
+
107 size_t SHA3_512::hashSize() const
+
108 {
+
109  return 64;
+
110 }
+
111 
+
112 size_t SHA3_512::blockSize() const
+
113 {
+
114  return core.blockSize();
+
115 }
+
116 
+ +
118 {
+
119  core.reset();
+
120 }
+
121 
+
122 void SHA3_512::update(const void *data, size_t len)
+
123 {
+
124  core.update(data, len);
+
125 }
+
126 
+
127 void SHA3_512::finalize(void *hash, size_t len)
+
128 {
+
129  // Pad the final block and then extract the hash value.
+
130  core.pad(0x06);
+
131  core.extract(hash, len);
+
132 }
+
133 
+ +
135 {
+
136  core.clear();
+
137 }
+
SHA3_512()
Constructs a new SHA3-512 hash object.
Definition: SHA3.cpp:94
+
void reset()
Resets the hash ready for a new hashing process.
Definition: SHA3.cpp:60
+
size_t blockSize() const
Returns the input block size for the sponge function in bytes.
Definition: KeccakCore.h:38
+
virtual ~SHA3_256()
Destroys this hash object after clearing sensitive information.
Definition: SHA3.cpp:45
+
size_t hashSize() const
Size of the hash result from finalize().
Definition: SHA3.cpp:107
+
SHA3_256()
Constructs a new SHA3-256 hash object.
Definition: SHA3.cpp:37
+
virtual ~SHA3_512()
Destroys this hash object after clearing sensitive information.
Definition: SHA3.cpp:102
+
size_t hashSize() const
Size of the hash result from finalize().
Definition: SHA3.cpp:50
+
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: SHA3.cpp:127
+
void reset()
Resets the hash ready for a new hashing process.
Definition: SHA3.cpp:117
+
void setCapacity(size_t capacity)
Sets the capacity of the Keccak sponge function in bits.
Definition: KeccakCore.cpp:89
+
size_t blockSize() const
Size of the internal block used by the hash algorithm.
Definition: SHA3.cpp:55
+
void extract(void *data, size_t size)
Extracts data from the Keccak sponge function.
Definition: KeccakCore.cpp:201
+
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: SHA3.cpp:134
+
void pad(uint8_t tag)
Pads the last block of input data to blockSize().
Definition: KeccakCore.cpp:174
+
size_t blockSize() const
Size of the internal block used by the hash algorithm.
Definition: SHA3.cpp:112
+
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: SHA3.cpp:122
+
void update(const void *data, size_t size)
Updates the Keccak sponge function with more input data.
Definition: KeccakCore.cpp:128
+
void clear()
Clears all sensitive data from this object.
Definition: KeccakCore.cpp:245
+
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: SHA3.cpp:70
+
void reset()
Resets the Keccak sponge function ready for a new session.
Definition: KeccakCore.cpp:109
+
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: SHA3.cpp:65
+
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: SHA3.cpp:77
+
+ + + + diff --git a/SHA3_8h_source.html b/SHA3_8h_source.html new file mode 100644 index 00000000..e28f28eb --- /dev/null +++ b/SHA3_8h_source.html @@ -0,0 +1,186 @@ + + + + + + +ArduinoLibs: SHA3.h Source File + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
SHA3.h
+
+
+
1 /*
+
2  * Copyright (C) 2015 Southern Storm Software, Pty Ltd.
+
3  *
+
4  * Permission is hereby granted, free of charge, to any person obtaining a
+
5  * copy of this software and associated documentation files (the "Software"),
+
6  * to deal in the Software without restriction, including without limitation
+
7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
8  * and/or sell copies of the Software, and to permit persons to whom the
+
9  * Software is furnished to do so, subject to the following conditions:
+
10  *
+
11  * The above copyright notice and this permission notice shall be included
+
12  * in all copies or substantial portions of the Software.
+
13  *
+
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+
15  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+
17  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+
18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+
19  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+
20  * DEALINGS IN THE SOFTWARE.
+
21  */
+
22 
+
23 #ifndef CRYPTO_SHA3_h
+
24 #define CRYPTO_SHA3_h
+
25 
+
26 #include "KeccakCore.h"
+
27 #include "Hash.h"
+
28 
+
29 class SHA3_256 : public Hash
+
30 {
+
31 public:
+
32  SHA3_256();
+
33  virtual ~SHA3_256();
+
34 
+
35  size_t hashSize() const;
+
36  size_t blockSize() const;
+
37 
+
38  void reset();
+
39  void update(const void *data, size_t len);
+
40  void finalize(void *hash, size_t len);
+
41 
+
42  void clear();
+
43 
+
44 private:
+
45  KeccakCore core;
+
46 };
+
47 
+
48 class SHA3_512 : public Hash
+
49 {
+
50 public:
+
51  SHA3_512();
+
52  virtual ~SHA3_512();
+
53 
+
54  size_t hashSize() const;
+
55  size_t blockSize() const;
+
56 
+
57  void reset();
+
58  void update(const void *data, size_t len);
+
59  void finalize(void *hash, size_t len);
+
60 
+
61  void clear();
+
62 
+
63 private:
+
64  KeccakCore core;
+
65 };
+
66 
+
67 #endif
+
SHA3_512()
Constructs a new SHA3-512 hash object.
Definition: SHA3.cpp:94
+
void reset()
Resets the hash ready for a new hashing process.
Definition: SHA3.cpp:60
+
virtual ~SHA3_256()
Destroys this hash object after clearing sensitive information.
Definition: SHA3.cpp:45
+
size_t hashSize() const
Size of the hash result from finalize().
Definition: SHA3.cpp:107
+
SHA3_256()
Constructs a new SHA3-256 hash object.
Definition: SHA3.cpp:37
+
virtual ~SHA3_512()
Destroys this hash object after clearing sensitive information.
Definition: SHA3.cpp:102
+
Abstract base class for cryptographic hash algorithms.
Definition: Hash.h:29
+
size_t hashSize() const
Size of the hash result from finalize().
Definition: SHA3.cpp:50
+
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: SHA3.cpp:127
+
void reset()
Resets the hash ready for a new hashing process.
Definition: SHA3.cpp:117
+
size_t blockSize() const
Size of the internal block used by the hash algorithm.
Definition: SHA3.cpp:55
+
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: SHA3.cpp:134
+
size_t blockSize() const
Size of the internal block used by the hash algorithm.
Definition: SHA3.cpp:112
+
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: SHA3.cpp:122
+
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: SHA3.cpp:70
+
Keccak core sponge function.
Definition: KeccakCore.h:29
+
SHA3-256 hash algorithm.
Definition: SHA3.h:29
+
SHA3-512 hash algorithm.
Definition: SHA3.h:48
+
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: SHA3.cpp:65
+
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: SHA3.cpp:77
+
+ + + + diff --git a/SHA512_8cpp_source.html b/SHA512_8cpp_source.html index d668f2ac..aa2510d5 100644 --- a/SHA512_8cpp_source.html +++ b/SHA512_8cpp_source.html @@ -146,203 +146,194 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
72  };
73  memcpy_P(state.h, hashStart, sizeof(hashStart));
74  state.chunkSize = 0;
-
75  state.finalized = false;
-
76  state.lengthLow = 0;
-
77  state.lengthHigh = 0;
-
78 }
-
79 
-
80 void SHA512::update(const void *data, size_t len)
-
81 {
-
82  // Reset the hashing process if finalize() was called previously.
-
83  if (state.finalized)
-
84  reset();
-
85 
-
86  // Update the total length in bits, not bytes.
-
87  uint64_t temp = state.lengthLow;
-
88  state.lengthLow += (((uint64_t)len) << 3);
-
89  state.lengthHigh += (((uint64_t)len) >> 61);
-
90  if (state.lengthLow < temp)
-
91  ++state.lengthHigh;
-
92 
-
93  // Break the input up into 1024-bit chunks and process each in turn.
-
94  const uint8_t *d = (const uint8_t *)data;
-
95  while (len > 0) {
-
96  uint8_t size = 128 - state.chunkSize;
-
97  if (size > len)
-
98  size = len;
-
99  memcpy(((uint8_t *)state.w) + state.chunkSize, d, size);
-
100  state.chunkSize += size;
-
101  len -= size;
-
102  d += size;
-
103  if (state.chunkSize == 128) {
-
104  processChunk();
-
105  state.chunkSize = 0;
-
106  }
-
107  }
-
108 }
-
109 
-
110 void SHA512::finalize(void *hash, size_t len)
-
111 {
-
112  // Finalize the hash if necessary.
-
113  if (!state.finalized) {
-
114  // Pad the last chunk. We may need two padding chunks if there
-
115  // isn't enough room in the first for the padding and length.
-
116  uint8_t *wbytes = (uint8_t *)state.w;
-
117  if (state.chunkSize <= (128 - 17)) {
-
118  wbytes[state.chunkSize] = 0x80;
-
119  memset(wbytes + state.chunkSize + 1, 0x00, 128 - 16 - (state.chunkSize + 1));
-
120  state.w[14] = htobe64(state.lengthHigh);
-
121  state.w[15] = htobe64(state.lengthLow);
-
122  processChunk();
-
123  } else {
-
124  wbytes[state.chunkSize] = 0x80;
-
125  memset(wbytes + state.chunkSize + 1, 0x00, 128 - (state.chunkSize + 1));
-
126  processChunk();
-
127  memset(wbytes, 0x00, 128 - 16);
-
128  state.w[14] = htobe64(state.lengthHigh);
-
129  state.w[15] = htobe64(state.lengthLow);
-
130  processChunk();
-
131  }
-
132 
-
133  // Convert the result into big endian and return it.
-
134  for (uint8_t posn = 0; posn < 8; ++posn)
-
135  state.w[posn] = htobe64(state.h[posn]);
-
136  state.finalized = true;
-
137  }
-
138 
-
139  // Copy the hash to the caller's return buffer.
-
140  if (len > 64)
-
141  len = 64;
-
142  memcpy(hash, state.w, len);
-
143 }
-
144 
-
145 void SHA512::clear()
-
146 {
-
147  clean(state);
-
148  reset();
-
149 }
-
150 
-
156 void SHA512::processChunk()
-
157 {
-
158  // Round constants for SHA-512.
-
159  static uint64_t const k[80] PROGMEM = {
-
160  0x428A2F98D728AE22ULL, 0x7137449123EF65CDULL, 0xB5C0FBCFEC4D3B2FULL,
-
161  0xE9B5DBA58189DBBCULL, 0x3956C25BF348B538ULL, 0x59F111F1B605D019ULL,
-
162  0x923F82A4AF194F9BULL, 0xAB1C5ED5DA6D8118ULL, 0xD807AA98A3030242ULL,
-
163  0x12835B0145706FBEULL, 0x243185BE4EE4B28CULL, 0x550C7DC3D5FFB4E2ULL,
-
164  0x72BE5D74F27B896FULL, 0x80DEB1FE3B1696B1ULL, 0x9BDC06A725C71235ULL,
-
165  0xC19BF174CF692694ULL, 0xE49B69C19EF14AD2ULL, 0xEFBE4786384F25E3ULL,
-
166  0x0FC19DC68B8CD5B5ULL, 0x240CA1CC77AC9C65ULL, 0x2DE92C6F592B0275ULL,
-
167  0x4A7484AA6EA6E483ULL, 0x5CB0A9DCBD41FBD4ULL, 0x76F988DA831153B5ULL,
-
168  0x983E5152EE66DFABULL, 0xA831C66D2DB43210ULL, 0xB00327C898FB213FULL,
-
169  0xBF597FC7BEEF0EE4ULL, 0xC6E00BF33DA88FC2ULL, 0xD5A79147930AA725ULL,
-
170  0x06CA6351E003826FULL, 0x142929670A0E6E70ULL, 0x27B70A8546D22FFCULL,
-
171  0x2E1B21385C26C926ULL, 0x4D2C6DFC5AC42AEDULL, 0x53380D139D95B3DFULL,
-
172  0x650A73548BAF63DEULL, 0x766A0ABB3C77B2A8ULL, 0x81C2C92E47EDAEE6ULL,
-
173  0x92722C851482353BULL, 0xA2BFE8A14CF10364ULL, 0xA81A664BBC423001ULL,
-
174  0xC24B8B70D0F89791ULL, 0xC76C51A30654BE30ULL, 0xD192E819D6EF5218ULL,
-
175  0xD69906245565A910ULL, 0xF40E35855771202AULL, 0x106AA07032BBD1B8ULL,
-
176  0x19A4C116B8D2D0C8ULL, 0x1E376C085141AB53ULL, 0x2748774CDF8EEB99ULL,
-
177  0x34B0BCB5E19B48A8ULL, 0x391C0CB3C5C95A63ULL, 0x4ED8AA4AE3418ACBULL,
-
178  0x5B9CCA4F7763E373ULL, 0x682E6FF3D6B2B8A3ULL, 0x748F82EE5DEFB2FCULL,
-
179  0x78A5636F43172F60ULL, 0x84C87814A1F0AB72ULL, 0x8CC702081A6439ECULL,
-
180  0x90BEFFFA23631E28ULL, 0xA4506CEBDE82BDE9ULL, 0xBEF9A3F7B2C67915ULL,
-
181  0xC67178F2E372532BULL, 0xCA273ECEEA26619CULL, 0xD186B8C721C0C207ULL,
-
182  0xEADA7DD6CDE0EB1EULL, 0xF57D4F7FEE6ED178ULL, 0x06F067AA72176FBAULL,
-
183  0x0A637DC5A2C898A6ULL, 0x113F9804BEF90DAEULL, 0x1B710B35131C471BULL,
-
184  0x28DB77F523047D84ULL, 0x32CAAB7B40C72493ULL, 0x3C9EBE0A15C9BEBCULL,
-
185  0x431D67C49C100D4CULL, 0x4CC5D4BECB3E42B6ULL, 0x597F299CFC657E2AULL,
-
186  0x5FCB6FAB3AD6FAECULL, 0x6C44198C4A475817ULL
-
187  };
-
188 
-
189  // Convert the first 16 words from big endian to host byte order.
-
190  uint8_t index;
-
191  for (index = 0; index < 16; ++index)
-
192  state.w[index] = be64toh(state.w[index]);
-
193 
-
194  // Initialise working variables to the current hash value.
-
195  uint64_t a = state.h[0];
-
196  uint64_t b = state.h[1];
-
197  uint64_t c = state.h[2];
-
198  uint64_t d = state.h[3];
-
199  uint64_t e = state.h[4];
-
200  uint64_t f = state.h[5];
-
201  uint64_t g = state.h[6];
-
202  uint64_t h = state.h[7];
-
203 
-
204  // Perform the first 16 rounds of the compression function main loop.
-
205  uint64_t temp1, temp2;
-
206  for (index = 0; index < 16; ++index) {
-
207  temp1 = h + pgm_read_qword(k + index) + state.w[index] +
-
208  (rightRotate14_64(e) ^ rightRotate18_64(e) ^
-
209  rightRotate41_64(e)) + ((e & f) ^ ((~e) & g));
-
210  temp2 = (rightRotate28_64(a) ^ rightRotate34_64(a) ^
-
211  rightRotate39_64(a)) + ((a & b) ^ (a & c) ^ (b & c));
-
212  h = g;
-
213  g = f;
-
214  f = e;
-
215  e = d + temp1;
-
216  d = c;
-
217  c = b;
-
218  b = a;
-
219  a = temp1 + temp2;
-
220  }
-
221 
-
222  // Perform the 64 remaining rounds. We expand the first 16 words to
-
223  // 80 in-place in the "w" array. This saves 512 bytes of memory
-
224  // that would have otherwise need to be allocated to the "w" array.
-
225  for (; index < 80; ++index) {
-
226  // Expand the next word.
-
227  temp1 = state.w[(index - 15) & 0x0F];
-
228  temp2 = state.w[(index - 2) & 0x0F];
-
229  temp1 = state.w[index & 0x0F] =
-
230  state.w[(index - 16) & 0x0F] + state.w[(index - 7) & 0x0F] +
-
231  (rightRotate1_64(temp1) ^ rightRotate8_64(temp1) ^
-
232  (temp1 >> 7)) +
-
233  (rightRotate19_64(temp2) ^ rightRotate61_64(temp2) ^
-
234  (temp2 >> 6));
-
235 
-
236  // Perform the round.
-
237  temp1 = h + pgm_read_qword(k + index) + temp1 +
-
238  (rightRotate14_64(e) ^ rightRotate18_64(e) ^
-
239  rightRotate41_64(e)) + ((e & f) ^ ((~e) & g));
-
240  temp2 = (rightRotate28_64(a) ^ rightRotate34_64(a) ^
-
241  rightRotate39_64(a)) + ((a & b) ^ (a & c) ^ (b & c));
-
242  h = g;
-
243  g = f;
-
244  f = e;
-
245  e = d + temp1;
-
246  d = c;
-
247  c = b;
-
248  b = a;
-
249  a = temp1 + temp2;
-
250  }
-
251 
-
252  // Add the compressed chunk to the current hash value.
-
253  state.h[0] += a;
-
254  state.h[1] += b;
-
255  state.h[2] += c;
-
256  state.h[3] += d;
-
257  state.h[4] += e;
-
258  state.h[5] += f;
-
259  state.h[6] += g;
-
260  state.h[7] += h;
-
261 
-
262  // Attempt to clean up the stack.
-
263  a = b = c = d = e = f = g = h = temp1 = temp2 = 0;
-
264 }
+
75  state.lengthLow = 0;
+
76  state.lengthHigh = 0;
+
77 }
+
78 
+
79 void SHA512::update(const void *data, size_t len)
+
80 {
+
81  // Update the total length in bits, not bytes.
+
82  uint64_t temp = state.lengthLow;
+
83  state.lengthLow += (((uint64_t)len) << 3);
+
84  state.lengthHigh += (((uint64_t)len) >> 61);
+
85  if (state.lengthLow < temp)
+
86  ++state.lengthHigh;
+
87 
+
88  // Break the input up into 1024-bit chunks and process each in turn.
+
89  const uint8_t *d = (const uint8_t *)data;
+
90  while (len > 0) {
+
91  uint8_t size = 128 - state.chunkSize;
+
92  if (size > len)
+
93  size = len;
+
94  memcpy(((uint8_t *)state.w) + state.chunkSize, d, size);
+
95  state.chunkSize += size;
+
96  len -= size;
+
97  d += size;
+
98  if (state.chunkSize == 128) {
+
99  processChunk();
+
100  state.chunkSize = 0;
+
101  }
+
102  }
+
103 }
+
104 
+
105 void SHA512::finalize(void *hash, size_t len)
+
106 {
+
107  // Pad the last chunk. We may need two padding chunks if there
+
108  // isn't enough room in the first for the padding and length.
+
109  uint8_t *wbytes = (uint8_t *)state.w;
+
110  if (state.chunkSize <= (128 - 17)) {
+
111  wbytes[state.chunkSize] = 0x80;
+
112  memset(wbytes + state.chunkSize + 1, 0x00, 128 - 16 - (state.chunkSize + 1));
+
113  state.w[14] = htobe64(state.lengthHigh);
+
114  state.w[15] = htobe64(state.lengthLow);
+
115  processChunk();
+
116  } else {
+
117  wbytes[state.chunkSize] = 0x80;
+
118  memset(wbytes + state.chunkSize + 1, 0x00, 128 - (state.chunkSize + 1));
+
119  processChunk();
+
120  memset(wbytes, 0x00, 128 - 16);
+
121  state.w[14] = htobe64(state.lengthHigh);
+
122  state.w[15] = htobe64(state.lengthLow);
+
123  processChunk();
+
124  }
+
125 
+
126  // Convert the result into big endian and return it.
+
127  for (uint8_t posn = 0; posn < 8; ++posn)
+
128  state.w[posn] = htobe64(state.h[posn]);
+
129 
+
130  // Copy the hash to the caller's return buffer.
+
131  if (len > 64)
+
132  len = 64;
+
133  memcpy(hash, state.w, len);
+
134 }
+
135 
+
136 void SHA512::clear()
+
137 {
+
138  clean(state);
+
139  reset();
+
140 }
+
141 
+
147 void SHA512::processChunk()
+
148 {
+
149  // Round constants for SHA-512.
+
150  static uint64_t const k[80] PROGMEM = {
+
151  0x428A2F98D728AE22ULL, 0x7137449123EF65CDULL, 0xB5C0FBCFEC4D3B2FULL,
+
152  0xE9B5DBA58189DBBCULL, 0x3956C25BF348B538ULL, 0x59F111F1B605D019ULL,
+
153  0x923F82A4AF194F9BULL, 0xAB1C5ED5DA6D8118ULL, 0xD807AA98A3030242ULL,
+
154  0x12835B0145706FBEULL, 0x243185BE4EE4B28CULL, 0x550C7DC3D5FFB4E2ULL,
+
155  0x72BE5D74F27B896FULL, 0x80DEB1FE3B1696B1ULL, 0x9BDC06A725C71235ULL,
+
156  0xC19BF174CF692694ULL, 0xE49B69C19EF14AD2ULL, 0xEFBE4786384F25E3ULL,
+
157  0x0FC19DC68B8CD5B5ULL, 0x240CA1CC77AC9C65ULL, 0x2DE92C6F592B0275ULL,
+
158  0x4A7484AA6EA6E483ULL, 0x5CB0A9DCBD41FBD4ULL, 0x76F988DA831153B5ULL,
+
159  0x983E5152EE66DFABULL, 0xA831C66D2DB43210ULL, 0xB00327C898FB213FULL,
+
160  0xBF597FC7BEEF0EE4ULL, 0xC6E00BF33DA88FC2ULL, 0xD5A79147930AA725ULL,
+
161  0x06CA6351E003826FULL, 0x142929670A0E6E70ULL, 0x27B70A8546D22FFCULL,
+
162  0x2E1B21385C26C926ULL, 0x4D2C6DFC5AC42AEDULL, 0x53380D139D95B3DFULL,
+
163  0x650A73548BAF63DEULL, 0x766A0ABB3C77B2A8ULL, 0x81C2C92E47EDAEE6ULL,
+
164  0x92722C851482353BULL, 0xA2BFE8A14CF10364ULL, 0xA81A664BBC423001ULL,
+
165  0xC24B8B70D0F89791ULL, 0xC76C51A30654BE30ULL, 0xD192E819D6EF5218ULL,
+
166  0xD69906245565A910ULL, 0xF40E35855771202AULL, 0x106AA07032BBD1B8ULL,
+
167  0x19A4C116B8D2D0C8ULL, 0x1E376C085141AB53ULL, 0x2748774CDF8EEB99ULL,
+
168  0x34B0BCB5E19B48A8ULL, 0x391C0CB3C5C95A63ULL, 0x4ED8AA4AE3418ACBULL,
+
169  0x5B9CCA4F7763E373ULL, 0x682E6FF3D6B2B8A3ULL, 0x748F82EE5DEFB2FCULL,
+
170  0x78A5636F43172F60ULL, 0x84C87814A1F0AB72ULL, 0x8CC702081A6439ECULL,
+
171  0x90BEFFFA23631E28ULL, 0xA4506CEBDE82BDE9ULL, 0xBEF9A3F7B2C67915ULL,
+
172  0xC67178F2E372532BULL, 0xCA273ECEEA26619CULL, 0xD186B8C721C0C207ULL,
+
173  0xEADA7DD6CDE0EB1EULL, 0xF57D4F7FEE6ED178ULL, 0x06F067AA72176FBAULL,
+
174  0x0A637DC5A2C898A6ULL, 0x113F9804BEF90DAEULL, 0x1B710B35131C471BULL,
+
175  0x28DB77F523047D84ULL, 0x32CAAB7B40C72493ULL, 0x3C9EBE0A15C9BEBCULL,
+
176  0x431D67C49C100D4CULL, 0x4CC5D4BECB3E42B6ULL, 0x597F299CFC657E2AULL,
+
177  0x5FCB6FAB3AD6FAECULL, 0x6C44198C4A475817ULL
+
178  };
+
179 
+
180  // Convert the first 16 words from big endian to host byte order.
+
181  uint8_t index;
+
182  for (index = 0; index < 16; ++index)
+
183  state.w[index] = be64toh(state.w[index]);
+
184 
+
185  // Initialise working variables to the current hash value.
+
186  uint64_t a = state.h[0];
+
187  uint64_t b = state.h[1];
+
188  uint64_t c = state.h[2];
+
189  uint64_t d = state.h[3];
+
190  uint64_t e = state.h[4];
+
191  uint64_t f = state.h[5];
+
192  uint64_t g = state.h[6];
+
193  uint64_t h = state.h[7];
+
194 
+
195  // Perform the first 16 rounds of the compression function main loop.
+
196  uint64_t temp1, temp2;
+
197  for (index = 0; index < 16; ++index) {
+
198  temp1 = h + pgm_read_qword(k + index) + state.w[index] +
+
199  (rightRotate14_64(e) ^ rightRotate18_64(e) ^
+
200  rightRotate41_64(e)) + ((e & f) ^ ((~e) & g));
+
201  temp2 = (rightRotate28_64(a) ^ rightRotate34_64(a) ^
+
202  rightRotate39_64(a)) + ((a & b) ^ (a & c) ^ (b & c));
+
203  h = g;
+
204  g = f;
+
205  f = e;
+
206  e = d + temp1;
+
207  d = c;
+
208  c = b;
+
209  b = a;
+
210  a = temp1 + temp2;
+
211  }
+
212 
+
213  // Perform the 64 remaining rounds. We expand the first 16 words to
+
214  // 80 in-place in the "w" array. This saves 512 bytes of memory
+
215  // that would have otherwise need to be allocated to the "w" array.
+
216  for (; index < 80; ++index) {
+
217  // Expand the next word.
+
218  temp1 = state.w[(index - 15) & 0x0F];
+
219  temp2 = state.w[(index - 2) & 0x0F];
+
220  temp1 = state.w[index & 0x0F] =
+
221  state.w[(index - 16) & 0x0F] + state.w[(index - 7) & 0x0F] +
+
222  (rightRotate1_64(temp1) ^ rightRotate8_64(temp1) ^
+
223  (temp1 >> 7)) +
+
224  (rightRotate19_64(temp2) ^ rightRotate61_64(temp2) ^
+
225  (temp2 >> 6));
+
226 
+
227  // Perform the round.
+
228  temp1 = h + pgm_read_qword(k + index) + temp1 +
+
229  (rightRotate14_64(e) ^ rightRotate18_64(e) ^
+
230  rightRotate41_64(e)) + ((e & f) ^ ((~e) & g));
+
231  temp2 = (rightRotate28_64(a) ^ rightRotate34_64(a) ^
+
232  rightRotate39_64(a)) + ((a & b) ^ (a & c) ^ (b & c));
+
233  h = g;
+
234  g = f;
+
235  f = e;
+
236  e = d + temp1;
+
237  d = c;
+
238  c = b;
+
239  b = a;
+
240  a = temp1 + temp2;
+
241  }
+
242 
+
243  // Add the compressed chunk to the current hash value.
+
244  state.h[0] += a;
+
245  state.h[1] += b;
+
246  state.h[2] += c;
+
247  state.h[3] += d;
+
248  state.h[4] += e;
+
249  state.h[5] += f;
+
250  state.h[6] += g;
+
251  state.h[7] += h;
+
252 
+
253  // Attempt to clean up the stack.
+
254  a = b = c = d = e = f = g = h = temp1 = temp2 = 0;
+
255 }
size_t hashSize() const
Size of the hash result from finalize().
Definition: SHA512.cpp:56
size_t blockSize() const
Size of the internal block used by the hash algorithm.
Definition: SHA512.cpp:61
virtual ~SHA512()
Destroys this SHA-512 hash object after clearing sensitive information.
Definition: SHA512.cpp:51
-
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: SHA512.cpp:145
+
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: SHA512.cpp:136
void reset()
Resets the hash ready for a new hashing process.
Definition: SHA512.cpp:66
-
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: SHA512.cpp:80
-
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: SHA512.cpp:110
+
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: SHA512.cpp:79
+
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: SHA512.cpp:105
SHA512()
Constructs a SHA-512 hash object.
Definition: SHA512.cpp:42
diff --git a/SHA512_8h_source.html b/SHA512_8h_source.html index 6079ed36..2870a7b0 100644 --- a/SHA512_8h_source.html +++ b/SHA512_8h_source.html @@ -134,30 +134,29 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
44  struct {
45  uint64_t h[8];
46  uint64_t w[16];
-
47  uint8_t chunkSize;
-
48  bool finalized;
-
49  uint64_t lengthLow;
-
50  uint64_t lengthHigh;
-
51  } state;
-
52 
-
53  void processChunk();
-
54 };
-
55 
-
56 #endif
+
47  uint64_t lengthLow;
+
48  uint64_t lengthHigh;
+
49  uint8_t chunkSize;
+
50  } state;
+
51 
+
52  void processChunk();
+
53 };
+
54 
+
55 #endif
size_t hashSize() const
Size of the hash result from finalize().
Definition: SHA512.cpp:56
size_t blockSize() const
Size of the internal block used by the hash algorithm.
Definition: SHA512.cpp:61
virtual ~SHA512()
Destroys this SHA-512 hash object after clearing sensitive information.
Definition: SHA512.cpp:51
Abstract base class for cryptographic hash algorithms.
Definition: Hash.h:29
-
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: SHA512.cpp:145
+
void clear()
Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing ...
Definition: SHA512.cpp:136
SHA-512 hash algorithm.
Definition: SHA512.h:28
void reset()
Resets the hash ready for a new hashing process.
Definition: SHA512.cpp:66
-
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: SHA512.cpp:80
-
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: SHA512.cpp:110
+
void update(const void *data, size_t len)
Updates the hash with more data.
Definition: SHA512.cpp:79
+
void finalize(void *hash, size_t len)
Finalizes the hashing process and returns the hash.
Definition: SHA512.cpp:105
SHA512()
Constructs a SHA-512 hash object.
Definition: SHA512.cpp:42
diff --git a/SoftI2C_8cpp_source.html b/SoftI2C_8cpp_source.html index bf86b650..4e3b4b7b 100644 --- a/SoftI2C_8cpp_source.html +++ b/SoftI2C_8cpp_source.html @@ -283,7 +283,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/SoftI2C_8h_source.html b/SoftI2C_8h_source.html index 6baf7388..85eb1038 100644 --- a/SoftI2C_8h_source.html +++ b/SoftI2C_8h_source.html @@ -157,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/TextField_8cpp_source.html b/TextField_8cpp_source.html index d8602aba..6fd7da7d 100644 --- a/TextField_8cpp_source.html +++ b/TextField_8cpp_source.html @@ -156,7 +156,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/TextField_8h_source.html b/TextField_8h_source.html index 46addfe5..ccbcc222 100644 --- a/TextField_8h_source.html +++ b/TextField_8h_source.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/TimeField_8cpp_source.html b/TimeField_8cpp_source.html index 8231795c..333c3e12 100644 --- a/TimeField_8cpp_source.html +++ b/TimeField_8cpp_source.html @@ -325,7 +325,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/TimeField_8h_source.html b/TimeField_8h_source.html index 00a5ea16..dcabdb93 100644 --- a/TimeField_8h_source.html +++ b/TimeField_8h_source.html @@ -167,7 +167,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/TransistorNoiseSource_8cpp_source.html b/TransistorNoiseSource_8cpp_source.html index e7e78d53..c96a5b76 100644 --- a/TransistorNoiseSource_8cpp_source.html +++ b/TransistorNoiseSource_8cpp_source.html @@ -295,7 +295,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/TransistorNoiseSource_8h_source.html b/TransistorNoiseSource_8h_source.html index c7eef78a..5a687d62 100644 --- a/TransistorNoiseSource_8h_source.html +++ b/TransistorNoiseSource_8h_source.html @@ -151,7 +151,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/alarm-clock_8dox.html b/alarm-clock_8dox.html index 429731ea..c9c10071 100644 --- a/alarm-clock_8dox.html +++ b/alarm-clock_8dox.html @@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/alarm_clock.html b/alarm_clock.html index 6d8afa84..9af73308 100644 --- a/alarm_clock.html +++ b/alarm_clock.html @@ -140,7 +140,7 @@ Completed Clock diff --git a/annotated.html b/annotated.html index 48064dca..3f758c4b 100644 --- a/annotated.html +++ b/annotated.html @@ -120,30 +120,33 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); oCI2CMasterAbstract base class for I2C master implementations oCIntFieldField that manages the input of an integer value oCIRreceiverManages the reception of RC-5 commands from an infrared remote control -oCLCDEnhanced library for Freetronics 16x2 LCD shields -oCListFieldField that manages selection from a static list of items -oCMelodyPlays a melody on a digital output pin using tone() -oCNoiseSourceAbstract base class for random noise sources -oCOFBImplementation of the Output Feedback (OFB) mode for 128-bit block ciphers -oCOFBCommonConcrete base class to assist with implementing OFB for 128-bit block ciphers -oCRNGClassPseudo random number generator suitable for cryptography -oCRTCBase class for realtime clock handlers -oCRTCAlarmStores alarm information from a realtime clock chip -oCRTCDateStores date information from a realtime clock chip -oCRTCTimeStores time information from a realtime clock chip -oCSHA1SHA-1 hash algorithm -oCSHA256SHA-256 hash algorithm -oCSHA512SHA-512 hash algorithm -oCSoftI2CBit-banged implementation of an I2C master -oCTextFieldField that displays a read-only text value -oCTimeFieldField that manages the display and editing of a time value -\CTransistorNoiseSourceProcesses the signal from a transistor-based noise source +oCKeccakCoreKeccak core sponge function +oCLCDEnhanced library for Freetronics 16x2 LCD shields +oCListFieldField that manages selection from a static list of items +oCMelodyPlays a melody on a digital output pin using tone() +oCNoiseSourceAbstract base class for random noise sources +oCOFBImplementation of the Output Feedback (OFB) mode for 128-bit block ciphers +oCOFBCommonConcrete base class to assist with implementing OFB for 128-bit block ciphers +oCRNGClassPseudo random number generator suitable for cryptography +oCRTCBase class for realtime clock handlers +oCRTCAlarmStores alarm information from a realtime clock chip +oCRTCDateStores date information from a realtime clock chip +oCRTCTimeStores time information from a realtime clock chip +oCSHA1SHA-1 hash algorithm +oCSHA256SHA-256 hash algorithm +oCSHA3_256SHA3-256 hash algorithm +oCSHA3_512SHA3-512 hash algorithm +oCSHA512SHA-512 hash algorithm +oCSoftI2CBit-banged implementation of an I2C master +oCTextFieldField that displays a read-only text value +oCTimeFieldField that manages the display and editing of a time value +\CTransistorNoiseSourceProcesses the signal from a transistor-based noise source diff --git a/blink-blink_8dox.html b/blink-blink_8dox.html index cb11cafb..4411c7c8 100644 --- a/blink-blink_8dox.html +++ b/blink-blink_8dox.html @@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/blink-charlieplex_8dox.html b/blink-charlieplex_8dox.html index d3b88a96..014e4f44 100644 --- a/blink-charlieplex_8dox.html +++ b/blink-charlieplex_8dox.html @@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/blink-cylon_8dox.html b/blink-cylon_8dox.html index 4d2c8592..a34468dd 100644 --- a/blink-cylon_8dox.html +++ b/blink-cylon_8dox.html @@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/blink-startrek_8dox.html b/blink-startrek_8dox.html index 3377f5b9..2ab2a884 100644 --- a/blink-startrek_8dox.html +++ b/blink-startrek_8dox.html @@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/blink_blink.html b/blink_blink.html index 6c4f450f..e337c98c 100644 --- a/blink_blink.html +++ b/blink_blink.html @@ -120,7 +120,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/blink_charlieplex.html b/blink_charlieplex.html index a0ad6d87..2ecb54d3 100644 --- a/blink_charlieplex.html +++ b/blink_charlieplex.html @@ -160,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/blink_cylon.html b/blink_cylon.html index fcaf0d7a..67033cf1 100644 --- a/blink_cylon.html +++ b/blink_cylon.html @@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/blink_startrek.html b/blink_startrek.html index 577ba42a..d4a7096a 100644 --- a/blink_startrek.html +++ b/blink_startrek.html @@ -237,7 +237,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classAES128-members.html b/classAES128-members.html index d74e187b..d27ee9ad 100644 --- a/classAES128-members.html +++ b/classAES128-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classAES128.html b/classAES128.html index 835289f5..68ecb927 100644 --- a/classAES128.html +++ b/classAES128.html @@ -265,7 +265,7 @@ Additional Inherited Members diff --git a/classAES192-members.html b/classAES192-members.html index 7a929537..554a7ab7 100644 --- a/classAES192-members.html +++ b/classAES192-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classAES192.html b/classAES192.html index 7b5ca6ea..64597179 100644 --- a/classAES192.html +++ b/classAES192.html @@ -265,7 +265,7 @@ Additional Inherited Members diff --git a/classAES256-members.html b/classAES256-members.html index 76711a12..dc207877 100644 --- a/classAES256-members.html +++ b/classAES256-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classAES256.html b/classAES256.html index 0b6a61ce..a0b1e69b 100644 --- a/classAES256.html +++ b/classAES256.html @@ -265,7 +265,7 @@ Additional Inherited Members diff --git a/classAESCommon-members.html b/classAESCommon-members.html index 1de9ee6a..a96ab57d 100644 --- a/classAESCommon-members.html +++ b/classAESCommon-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classAESCommon.html b/classAESCommon.html index dee7778c..c4230843 100644 --- a/classAESCommon.html +++ b/classAESCommon.html @@ -322,7 +322,7 @@ Protected Member Functions diff --git a/classBLAKE2b-members.html b/classBLAKE2b-members.html index 5ba8de58..3763229c 100644 --- a/classBLAKE2b-members.html +++ b/classBLAKE2b-members.html @@ -95,23 +95,22 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); chunkSize (defined in BLAKE2b)BLAKE2b clear()BLAKE2bvirtual finalize(void *hash, size_t len)BLAKE2bvirtual - finalized (defined in BLAKE2b)BLAKE2b - h (defined in BLAKE2b)BLAKE2b - Hash()Hash - hashSize() const BLAKE2bvirtual - lengthHigh (defined in BLAKE2b)BLAKE2b - lengthLow (defined in BLAKE2b)BLAKE2b - m (defined in BLAKE2b)BLAKE2b - reset()BLAKE2bvirtual - reset(uint8_t outputLength)BLAKE2b - update(const void *data, size_t len)BLAKE2bvirtual - v (defined in BLAKE2b)BLAKE2b - ~BLAKE2b()BLAKE2bvirtual - ~Hash()Hashvirtual + h (defined in BLAKE2b)BLAKE2b + Hash()Hash + hashSize() const BLAKE2bvirtual + lengthHigh (defined in BLAKE2b)BLAKE2b + lengthLow (defined in BLAKE2b)BLAKE2b + m (defined in BLAKE2b)BLAKE2b + reset()BLAKE2bvirtual + reset(uint8_t outputLength)BLAKE2b + update(const void *data, size_t len)BLAKE2bvirtual + v (defined in BLAKE2b)BLAKE2b + ~BLAKE2b()BLAKE2bvirtual + ~Hash()Hashvirtual diff --git a/classBLAKE2b.html b/classBLAKE2b.html index 0d8ba6fb..f28ea0db 100644 --- a/classBLAKE2b.html +++ b/classBLAKE2b.html @@ -209,7 +209,7 @@ virtual Hash.

-

Definition at line 169 of file BLAKE2b.cpp.

+

Definition at line 159 of file BLAKE2b.cpp.

@@ -254,12 +254,12 @@ virtual hashSize(), then the hash value will be truncated to the first len bytes. If len is greater than hashSize(), then the remaining bytes will left unchanged.

-

If finalize() is called again, the same hash value is returned again until the next call to reset() or update().

+

If finalize() is called again, then the returned hash value is undefined. Call reset() first to start a new hashing process.

See Also
reset(), update()

Implements Hash.

-

Definition at line 149 of file BLAKE2b.cpp.

+

Definition at line 143 of file BLAKE2b.cpp.

@@ -345,7 +345,7 @@ virtual 104 of file BLAKE2b.cpp.

+

Definition at line 103 of file BLAKE2b.cpp.

@@ -389,12 +389,12 @@ virtual finalize() has already been called, then calling update() will reset() the hash and start a new hashing process.

+

If finalize() has already been called, then the behavior of update() will be undefined. Call reset() first to start a new hashing process.

See Also
reset(), finalize()

Implements Hash.

-

Definition at line 120 of file BLAKE2b.cpp.

+

Definition at line 118 of file BLAKE2b.cpp.

@@ -405,7 +405,7 @@ virtual  diff --git a/classBLAKE2s-members.html b/classBLAKE2s-members.html index fc84513d..2784e350 100644 --- a/classBLAKE2s-members.html +++ b/classBLAKE2s-members.html @@ -95,22 +95,21 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); chunkSize (defined in BLAKE2s)BLAKE2s clear()BLAKE2svirtual finalize(void *hash, size_t len)BLAKE2svirtual - finalized (defined in BLAKE2s)BLAKE2s - h (defined in BLAKE2s)BLAKE2s - Hash()Hash - hashSize() const BLAKE2svirtual - length (defined in BLAKE2s)BLAKE2s - m (defined in BLAKE2s)BLAKE2s - reset()BLAKE2svirtual - reset(uint8_t outputLength)BLAKE2s - update(const void *data, size_t len)BLAKE2svirtual - v (defined in BLAKE2s)BLAKE2s - ~BLAKE2s()BLAKE2svirtual - ~Hash()Hashvirtual + h (defined in BLAKE2s)BLAKE2s + Hash()Hash + hashSize() const BLAKE2svirtual + length (defined in BLAKE2s)BLAKE2s + m (defined in BLAKE2s)BLAKE2s + reset()BLAKE2svirtual + reset(uint8_t outputLength)BLAKE2s + update(const void *data, size_t len)BLAKE2svirtual + v (defined in BLAKE2s)BLAKE2s + ~BLAKE2s()BLAKE2svirtual + ~Hash()Hashvirtual diff --git a/classBLAKE2s.html b/classBLAKE2s.html index 071947f3..8ca02e76 100644 --- a/classBLAKE2s.html +++ b/classBLAKE2s.html @@ -209,7 +209,7 @@ virtual Hash.

-

Definition at line 164 of file BLAKE2s.cpp.

+

Definition at line 154 of file BLAKE2s.cpp.

@@ -254,12 +254,12 @@ virtual hashSize(), then the hash value will be truncated to the first len bytes. If len is greater than hashSize(), then the remaining bytes will left unchanged.

-

If finalize() is called again, the same hash value is returned again until the next call to reset() or update().

+

If finalize() is called again, then the returned hash value is undefined. Call reset() first to start a new hashing process.

See Also
reset(), update()

Implements Hash.

-

Definition at line 144 of file BLAKE2s.cpp.

+

Definition at line 138 of file BLAKE2s.cpp.

@@ -345,7 +345,7 @@ virtual 103 of file BLAKE2s.cpp.

+

Definition at line 102 of file BLAKE2s.cpp.

@@ -389,12 +389,12 @@ virtual finalize() has already been called, then calling update() will reset() the hash and start a new hashing process.

+

If finalize() has already been called, then the behavior of update() will be undefined. Call reset() first to start a new hashing process.

See Also
reset(), finalize()

Implements Hash.

-

Definition at line 118 of file BLAKE2s.cpp.

+

Definition at line 116 of file BLAKE2s.cpp.

@@ -405,7 +405,7 @@ virtual  diff --git a/classBitmap-members.html b/classBitmap-members.html index ca565201..2221b4be 100644 --- a/classBitmap-members.html +++ b/classBitmap-members.html @@ -138,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classBitmap.html b/classBitmap.html index 1546f0dd..28a34cbe 100644 --- a/classBitmap.html +++ b/classBitmap.html @@ -1745,7 +1745,7 @@ class DMD diff --git a/classBlinkLED-members.html b/classBlinkLED-members.html index 090fa248..36ce6a71 100644 --- a/classBlinkLED-members.html +++ b/classBlinkLED-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classBlinkLED.html b/classBlinkLED.html index 2b3275ed..ef461e9e 100644 --- a/classBlinkLED.html +++ b/classBlinkLED.html @@ -428,7 +428,7 @@ Public Member Functions diff --git a/classBlockCipher-members.html b/classBlockCipher-members.html index 8b3536c1..a32815f7 100644 --- a/classBlockCipher-members.html +++ b/classBlockCipher-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classBlockCipher.html b/classBlockCipher.html index 185cf803..e2cf3d1c 100644 --- a/classBlockCipher.html +++ b/classBlockCipher.html @@ -407,7 +407,7 @@ Public Member Functions diff --git a/classBoolField-members.html b/classBoolField-members.html index fe2eba85..3f4cec7e 100644 --- a/classBoolField-members.html +++ b/classBoolField-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classBoolField.html b/classBoolField.html index f8c01afc..4adea552 100644 --- a/classBoolField.html +++ b/classBoolField.html @@ -506,7 +506,7 @@ LiquidCrystal *  diff --git a/classCBC-members.html b/classCBC-members.html index 72a5b00b..97c6cb4c 100644 --- a/classCBC-members.html +++ b/classCBC-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classCBC.html b/classCBC.html index c2cfb225..abc3a280 100644 --- a/classCBC.html +++ b/classCBC.html @@ -185,7 +185,7 @@ class CBC< T > diff --git a/classCBCCommon-members.html b/classCBCCommon-members.html index 716fb52f..35bb8bf6 100644 --- a/classCBCCommon-members.html +++ b/classCBCCommon-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classCBCCommon.html b/classCBCCommon.html index 6dc4b430..b6a06f17 100644 --- a/classCBCCommon.html +++ b/classCBCCommon.html @@ -534,7 +534,7 @@ Protected Member Functions diff --git a/classCFB-members.html b/classCFB-members.html index f56c41a0..d35b9f41 100644 --- a/classCFB-members.html +++ b/classCFB-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classCFB.html b/classCFB.html index 77cd0e18..a1731b58 100644 --- a/classCFB.html +++ b/classCFB.html @@ -185,7 +185,7 @@ class CFB< T > diff --git a/classCFBCommon-members.html b/classCFBCommon-members.html index 2230f8f2..12bbea11 100644 --- a/classCFBCommon-members.html +++ b/classCFBCommon-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classCFBCommon.html b/classCFBCommon.html index 46390744..5045c938 100644 --- a/classCFBCommon.html +++ b/classCFBCommon.html @@ -534,7 +534,7 @@ Protected Member Functions diff --git a/classCTR-members.html b/classCTR-members.html index 904512bc..0c9edfdd 100644 --- a/classCTR-members.html +++ b/classCTR-members.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classCTR.html b/classCTR.html index 7df90df8..08a96cab 100644 --- a/classCTR.html +++ b/classCTR.html @@ -181,7 +181,7 @@ class CTR< T > diff --git a/classCTRCommon-members.html b/classCTRCommon-members.html index 25fc7f4a..a5bce5be 100644 --- a/classCTRCommon-members.html +++ b/classCTRCommon-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classCTRCommon.html b/classCTRCommon.html index abf81241..2dcec73a 100644 --- a/classCTRCommon.html +++ b/classCTRCommon.html @@ -563,7 +563,7 @@ Protected Member Functions diff --git a/classChaCha-members.html b/classChaCha-members.html index d87675e4..ae4c4b3f 100644 --- a/classChaCha-members.html +++ b/classChaCha-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classChaCha.html b/classChaCha.html index 9c833bff..cd27e6e9 100644 --- a/classChaCha.html +++ b/classChaCha.html @@ -666,7 +666,7 @@ Static Public Member Functions diff --git a/classCharlieplex-members.html b/classCharlieplex-members.html index ed03b8d9..60fc06e6 100644 --- a/classCharlieplex-members.html +++ b/classCharlieplex-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classCharlieplex.html b/classCharlieplex.html index e59d7a82..7b6f8f72 100644 --- a/classCharlieplex.html +++ b/classCharlieplex.html @@ -538,7 +538,7 @@ Public Member Functions diff --git a/classChaseLEDs-members.html b/classChaseLEDs-members.html index fa1a6680..221e2ed3 100644 --- a/classChaseLEDs-members.html +++ b/classChaseLEDs-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classChaseLEDs.html b/classChaseLEDs.html index 01ab0d55..ce151eff 100644 --- a/classChaseLEDs.html +++ b/classChaseLEDs.html @@ -347,7 +347,7 @@ Protected Member Functions diff --git a/classCipher-members.html b/classCipher-members.html index 7a106688..560ef866 100644 --- a/classCipher-members.html +++ b/classCipher-members.html @@ -102,7 +102,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classCipher.html b/classCipher.html index 48b9baf2..10b6e61d 100644 --- a/classCipher.html +++ b/classCipher.html @@ -479,7 +479,7 @@ Public Member Functions diff --git a/classCurve25519-members.html b/classCurve25519-members.html index ede7ea8a..e2d4aca9 100644 --- a/classCurve25519-members.html +++ b/classCurve25519-members.html @@ -96,7 +96,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classCurve25519.html b/classCurve25519.html index 4ca719a2..8aa9f163 100644 --- a/classCurve25519.html +++ b/classCurve25519.html @@ -295,7 +295,7 @@ Static Public Member Functions diff --git a/classDMD-members.html b/classDMD-members.html index 2da27fbf..0502f168 100644 --- a/classDMD-members.html +++ b/classDMD-members.html @@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classDMD.html b/classDMD.html index d9c1ec5e..2c91b0cb 100644 --- a/classDMD.html +++ b/classDMD.html @@ -755,7 +755,7 @@ Multiple panels diff --git a/classDS1307RTC-members.html b/classDS1307RTC-members.html index 9d919c6b..ff69e367 100644 --- a/classDS1307RTC-members.html +++ b/classDS1307RTC-members.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classDS1307RTC.html b/classDS1307RTC.html index fe6eb82d..59399528 100644 --- a/classDS1307RTC.html +++ b/classDS1307RTC.html @@ -598,7 +598,7 @@ static const uint8_t  diff --git a/classDS3232RTC-members.html b/classDS3232RTC-members.html index 619cd290..dd446ff4 100644 --- a/classDS3232RTC-members.html +++ b/classDS3232RTC-members.html @@ -130,7 +130,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classDS3232RTC.html b/classDS3232RTC.html index 2bbd4a91..5e78bb2f 100644 --- a/classDS3232RTC.html +++ b/classDS3232RTC.html @@ -750,7 +750,7 @@ static const uint8_t  diff --git a/classEEPROM24-members.html b/classEEPROM24-members.html index 951c0bc0..3c291a28 100644 --- a/classEEPROM24-members.html +++ b/classEEPROM24-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classEEPROM24.html b/classEEPROM24.html index 9e188260..555e1e4e 100644 --- a/classEEPROM24.html +++ b/classEEPROM24.html @@ -431,7 +431,7 @@ Public Member Functions diff --git a/classField-members.html b/classField-members.html index ad708de0..dc0645a0 100644 --- a/classField-members.html +++ b/classField-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classField.html b/classField.html index fbed2906..a682841d 100644 --- a/classField.html +++ b/classField.html @@ -424,7 +424,7 @@ class Form diff --git a/classForm-members.html b/classForm-members.html index d1fb9997..afb7a9bc 100644 --- a/classForm-members.html +++ b/classForm-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classForm.html b/classForm.html index 20734b93..3c446ac8 100644 --- a/classForm.html +++ b/classForm.html @@ -485,7 +485,7 @@ class Field diff --git a/classHash-members.html b/classHash-members.html index eca8ec78..6475adb7 100644 --- a/classHash-members.html +++ b/classHash-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classHash.html b/classHash.html index 962c9864..8cb5e253 100644 --- a/classHash.html +++ b/classHash.html @@ -101,11 +101,13 @@ Inheritance diagram for Hash:
-BLAKE2b -BLAKE2s -SHA1 -SHA256 -SHA512 +BLAKE2b +BLAKE2s +SHA1 +SHA256 +SHA3_256 +SHA3_512 +SHA512
@@ -197,7 +199,7 @@ Public Member Functions

Size of the internal block used by the hash algorithm.

See Also
update(), hashSize()
-

Implemented in BLAKE2b, BLAKE2s, SHA1, SHA256, and SHA512.

+

Implemented in SHA3_512, SHA3_256, BLAKE2b, BLAKE2s, SHA1, SHA256, and SHA512.

@@ -225,7 +227,7 @@ Public Member Functions

Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing process.

See Also
reset()
-

Implemented in BLAKE2b, BLAKE2s, SHA1, SHA256, and SHA512.

+

Implemented in SHA3_512, BLAKE2b, BLAKE2s, SHA3_256, SHA1, SHA256, and SHA512.

@@ -270,10 +272,10 @@ Public Member Functions

If len is less than hashSize(), then the hash value will be truncated to the first len bytes. If len is greater than hashSize(), then the remaining bytes will left unchanged.

-

If finalize() is called again, the same hash value is returned again until the next call to reset() or update().

+

If finalize() is called again, then the returned hash value is undefined. Call reset() first to start a new hashing process.

See Also
reset(), update()
-

Implemented in BLAKE2b, BLAKE2s, SHA1, SHA256, and SHA512.

+

Implemented in SHA3_512, BLAKE2b, BLAKE2s, SHA3_256, SHA1, SHA256, and SHA512.

@@ -301,7 +303,7 @@ Public Member Functions

Size of the hash result from finalize().

See Also
finalize(), blockSize()
-

Implemented in BLAKE2b, BLAKE2s, SHA1, SHA256, and SHA512.

+

Implemented in SHA3_512, SHA3_256, BLAKE2b, BLAKE2s, SHA1, SHA256, and SHA512.

@@ -329,7 +331,7 @@ Public Member Functions

Resets the hash ready for a new hashing process.

See Also
update(), finalize()
-

Implemented in BLAKE2b, BLAKE2s, SHA1, SHA256, and SHA512.

+

Implemented in SHA3_512, SHA3_256, BLAKE2b, BLAKE2s, SHA1, SHA256, and SHA512.

@@ -373,10 +375,10 @@ Public Member Functions
-

If finalize() has already been called, then calling update() will reset() the hash and start a new hashing process.

+

If finalize() has already been called, then the behavior of update() will be undefined. Call reset() first to start a new hashing process.

See Also
reset(), finalize()
-

Implemented in BLAKE2b, BLAKE2s, SHA1, SHA256, and SHA512.

+

Implemented in SHA3_512, BLAKE2b, BLAKE2s, SHA3_256, SHA1, SHA256, and SHA512.

@@ -387,7 +389,7 @@ Public Member Functions diff --git a/classHash.png b/classHash.png index 9075204703d2bd221cedef87c1328556436777f6..9324f7da82e0be9273502f4917c3478098a14bc9 100644 GIT binary patch literal 1108 zcmeAS@N?(olHy`uVBq!ia0y~yV6q0X12~w0_?3Zxl3d@E}WQOBE-*oRRI-vKA~(ux5mQmJ5Dfx5A!wK6D8~lW!n;exJ-#(F0*Qt zUqVe`XsEitQ~mH~Vqu}B6UtVt+I3>hlDVr^DW`;8@(aBxXrz7r&bg=WAHV9*IEjjzRbE&B6B>hJ8;&mNy@fBkW4 z`6>TrzSpCy`+wHRR{Sfm`Tu?Y_pO(otyy*PbFg*r&%c-7<}N+*{gnB-lN{5;cZJlI zti5;Q;!eA#*?;ngT?0doId{0w$&gHG%_aiLS zw_0y)L#sAD@v$l_&l|7TkF|9$dp z-vnE;BhP=zO8YF{TzFn8_rhMFZa3#0_3Kx;ofm!jt<<+}Zzj-BbyX7b>ij%4m$!mq zve3@2Bs5ey@Ly4CUSen{``c5ulXh=3`X`kddNmrTAXGfE982tHE?@PEW9HN?!J(xs vXHJQ4Gv+y5z_z$sx-HS7S)+dICway@g)_r0{Qd_l0vJ49{an^LB{Ts53+E~; delta 850 zcmcb@@sCZhGr-TCmrII^fq{Y7)59f*fq}6I$PVCO29m}v`8G{dw65p%ba4!+V0=6G zV&7r|0haDrwq=PhTCGS_^w=uvUK1N<1?7z{q*t|i~2XqpE3j_JY}$r(Tw+5 zfBQ32Ku#Fng~KyHJ>A@!o^N}go>80qg<_V@>4T>j?OdFbE$bLJojt`^mGS;*7~coR zMaMR+n*(GB=1FfZYLHtalb``KTLjJOjYSO$eJ-2aWj?@A(e0>nB(FXHd8OHBoAbR4cOFm9pS+pDX$|KB zS#5R>pf;d+9ED;I9j1(1lAkgthVcmiy{>qUiDRQ$L)jV`g(IgJoj_D1gW@%o3w=|W zTYAoVX)g7CHYI4+p-9c8wcVR1soYi6cc1j`gKXqA70-IcFg;I2B>Xn#)bji1-xo?p zos;`L|8DZ1!ov@@O)j$993{Wjb1$tG&E;{jJlR)q4OPaXZcvxDm1oSwVa=FG3Kr>~#H_vssE@4t0yyJX45 z)3-N8NqcW}+Ou+x+$7Pzd*1(DQ+xGPsmxUGOVurZ!zW4o?9<7fw1h!>`Vs*oT(%}= wk`owf02%vSD!nxCDru`Pos##FH}XG&tE%TpTeG5vz-+?c>FVdQ&MBb@01j)13jhEB diff --git a/classI2CMaster-members.html b/classI2CMaster-members.html index 9d21d17e..f7b51261 100644 --- a/classI2CMaster-members.html +++ b/classI2CMaster-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classI2CMaster.html b/classI2CMaster.html index 6180a954..273717a6 100644 --- a/classI2CMaster.html +++ b/classI2CMaster.html @@ -328,7 +328,7 @@ virtual unsigned int  diff --git a/classIRreceiver-members.html b/classIRreceiver-members.html index 55ad1b7d..ad2506ea 100644 --- a/classIRreceiver-members.html +++ b/classIRreceiver-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classIRreceiver.html b/classIRreceiver.html index 24a39990..eff78d7f 100644 --- a/classIRreceiver.html +++ b/classIRreceiver.html @@ -328,7 +328,7 @@ void _IR_receive_interrupt diff --git a/classIntField-members.html b/classIntField-members.html index 78113131..d4a4ceed 100644 --- a/classIntField-members.html +++ b/classIntField-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classIntField.html b/classIntField.html index a289bec2..24ddf26f 100644 --- a/classIntField.html +++ b/classIntField.html @@ -647,7 +647,7 @@ LiquidCrystal *  diff --git a/classKeccakCore-members.html b/classKeccakCore-members.html new file mode 100644 index 00000000..aab23f6d --- /dev/null +++ b/classKeccakCore-members.html @@ -0,0 +1,115 @@ + + + + + + +ArduinoLibs: Member List + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+
+
+
KeccakCore Member List
+
+
+ +

This is the complete list of members for KeccakCore, including all inherited members.

+ + + + + + + + + + + + + + + +
A (defined in KeccakCore)KeccakCore
B (defined in KeccakCore)KeccakCore
blockSize() const KeccakCoreinline
capacity() const KeccakCore
clear()KeccakCore
extract(void *data, size_t size)KeccakCore
inputSize (defined in KeccakCore)KeccakCore
KeccakCore()KeccakCore
outputSize (defined in KeccakCore)KeccakCore
pad(uint8_t tag)KeccakCore
reset()KeccakCore
setCapacity(size_t capacity)KeccakCore
update(const void *data, size_t size)KeccakCore
~KeccakCore()KeccakCore
+ + + + diff --git a/classKeccakCore.html b/classKeccakCore.html new file mode 100644 index 00000000..fe91b78d --- /dev/null +++ b/classKeccakCore.html @@ -0,0 +1,378 @@ + + + + + + +ArduinoLibs: KeccakCore Class Reference + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
KeccakCore Class Reference
+
+
+ +

Keccak core sponge function. + More...

+ +

#include <KeccakCore.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 KeccakCore ()
 Constructs a new Keccak sponge function. More...
 
~KeccakCore ()
 Destroys this Keccak sponge function after clearing all sensitive information.
 
size_t capacity () const
 Returns the capacity of the sponge function in bits. More...
 
void setCapacity (size_t capacity)
 Sets the capacity of the Keccak sponge function in bits. More...
 
size_t blockSize () const
 Returns the input block size for the sponge function in bytes. More...
 
void reset ()
 Resets the Keccak sponge function ready for a new session. More...
 
void update (const void *data, size_t size)
 Updates the Keccak sponge function with more input data. More...
 
void pad (uint8_t tag)
 Pads the last block of input data to blockSize(). More...
 
void extract (void *data, size_t size)
 Extracts data from the Keccak sponge function. More...
 
+void clear ()
 Clears all sensitive data from this object.
 
+

Detailed Description

+

Keccak core sponge function.

+

KeccakCore provides the core sponge function for different capacities. It is used to implement Hash algorithms such as SHA3.

+

References: http://en.wikipedia.org/wiki/SHA-3

+
See Also
SHA3
+ +

Definition at line 29 of file KeccakCore.h.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + +
KeccakCore::KeccakCore ()
+
+ +

Constructs a new Keccak sponge function.

+

The capacity() will initially be set to 1536, which normally won't be of much use to the caller. The constructor should be followed by a call to setCapacity() to select the capacity of interest.

+ +

Definition at line 49 of file KeccakCore.cpp.

+ +
+
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
size_t KeccakCore::blockSize () const
+
+inline
+
+ +

Returns the input block size for the sponge function in bytes.

+

The block size is (1600 - capacity()) / 8.

+
See Also
capacity()
+ +

Definition at line 38 of file KeccakCore.h.

+ +
+
+ +
+
+ + + + + + + +
size_t KeccakCore::capacity () const
+
+ +

Returns the capacity of the sponge function in bits.

+
See Also
setCapacity(), blockSize()
+ +

Definition at line 71 of file KeccakCore.cpp.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void KeccakCore::extract (void * data,
size_t size 
)
+
+ +

Extracts data from the Keccak sponge function.

+
Parameters
+ + + +
dataThe data buffer to fill with extracted data.
sizeThe number number of bytes of extracted data that are required.
+
+
+

If more than blockSize() bytes are required, the sponge function will be invoked to generate additional data.

+
See Also
update(), reset(), extractHash()
+ +

Definition at line 201 of file KeccakCore.cpp.

+ +
+
+ +
+
+ + + + + + + + +
void KeccakCore::pad (uint8_t tag)
+
+ +

Pads the last block of input data to blockSize().

+
Parameters
+ + +
tagThe tag byte to add to the padding to identify SHA3 (0x06), SHAKE (0x1F), or the plain pre-standardized version of Keccak (0x01).
+
+
+

The sponge function will be invoked to process the completed padding block.

+
See Also
update(), extract()
+ +

Definition at line 174 of file KeccakCore.cpp.

+ +
+
+ +
+
+ + + + + + + +
void KeccakCore::reset ()
+
+ +

Resets the Keccak sponge function ready for a new session.

+
See Also
update(), extract()
+ +

Definition at line 109 of file KeccakCore.cpp.

+ +
+
+ +
+
+ + + + + + + + +
void KeccakCore::setCapacity (size_t capacity)
+
+ +

Sets the capacity of the Keccak sponge function in bits.

+
Parameters
+ + +
capacityThe capacity of the Keccak sponge function in bits which should be a multiple of 64 and between 64 and 1536.
+
+
+
Note
It is possible to create a sponge function with this constructor that doesn't strictly conform with the capacity and hash size constraints defined in the relevant standards. It is the responsibility of callers to only use standard parameter combinations.
+
See Also
capacity(), blockSize()
+ +

Definition at line 89 of file KeccakCore.cpp.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
void KeccakCore::update (const void * data,
size_t size 
)
+
+ +

Updates the Keccak sponge function with more input data.

+
Parameters
+ + + +
dataThe extra input data to incorporate.
sizeThe size of the new data to incorporate.
+
+
+

This function will invoke the sponge function whenever a full blockSize() bytes of input data have been accumulated. Call pad() after the last block to finalize the input before calling extract().

+
See Also
pad(), extract(), reset()
+ +

Definition at line 128 of file KeccakCore.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classLCD-members.html b/classLCD-members.html index 901fc1f0..6925d2b8 100644 --- a/classLCD-members.html +++ b/classLCD-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classLCD.html b/classLCD.html index c7991f1c..04f8dc49 100644 --- a/classLCD.html +++ b/classLCD.html @@ -528,7 +528,7 @@ Support for DFRobot LCD Shield diff --git a/classListField-members.html b/classListField-members.html index 9e68947a..e0f3df34 100644 --- a/classListField-members.html +++ b/classListField-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classListField.html b/classListField.html index 4b8f3bfd..e82ced3f 100644 --- a/classListField.html +++ b/classListField.html @@ -411,7 +411,7 @@ LiquidCrystal *  diff --git a/classMelody-members.html b/classMelody-members.html index 808493fa..a1e593be 100644 --- a/classMelody-members.html +++ b/classMelody-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classMelody.html b/classMelody.html index 62569cc9..e8224cd5 100644 --- a/classMelody.html +++ b/classMelody.html @@ -371,7 +371,7 @@ bool  diff --git a/classNoiseSource-members.html b/classNoiseSource-members.html index 7f0ada08..10c19f78 100644 --- a/classNoiseSource-members.html +++ b/classNoiseSource-members.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classNoiseSource.html b/classNoiseSource.html index 88a99689..35cbf4eb 100644 --- a/classNoiseSource.html +++ b/classNoiseSource.html @@ -257,7 +257,7 @@ Protected Member Functions diff --git a/classOFB-members.html b/classOFB-members.html index b4858bd3..1b0ae222 100644 --- a/classOFB-members.html +++ b/classOFB-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classOFB.html b/classOFB.html index cfdca4f8..76ddb4c1 100644 --- a/classOFB.html +++ b/classOFB.html @@ -181,7 +181,7 @@ class OFB< T > diff --git a/classOFBCommon-members.html b/classOFBCommon-members.html index bba3aebf..f33b5a5e 100644 --- a/classOFBCommon-members.html +++ b/classOFBCommon-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classOFBCommon.html b/classOFBCommon.html index ddca9f7f..423fd7fe 100644 --- a/classOFBCommon.html +++ b/classOFBCommon.html @@ -534,7 +534,7 @@ Protected Member Functions diff --git a/classRNGClass-members.html b/classRNGClass-members.html index a98a2a0f..5334223f 100644 --- a/classRNGClass-members.html +++ b/classRNGClass-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classRNGClass.html b/classRNGClass.html index bc2aee92..d6703414 100644 --- a/classRNGClass.html +++ b/classRNGClass.html @@ -516,7 +516,7 @@ static const int  diff --git a/classRTC-members.html b/classRTC-members.html index 519947b5..4478d84f 100644 --- a/classRTC-members.html +++ b/classRTC-members.html @@ -123,7 +123,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classRTC.html b/classRTC.html index b9030a85..d33062ec 100644 --- a/classRTC.html +++ b/classRTC.html @@ -778,7 +778,7 @@ static const uint8_t  diff --git a/classRTCAlarm-members.html b/classRTCAlarm-members.html index 4182d226..5600b9d3 100644 --- a/classRTCAlarm-members.html +++ b/classRTCAlarm-members.html @@ -96,7 +96,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classRTCDate-members.html b/classRTCDate-members.html index 2c0e6c0e..05f6ed68 100644 --- a/classRTCDate-members.html +++ b/classRTCDate-members.html @@ -96,7 +96,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classRTCTime-members.html b/classRTCTime-members.html index b7c46952..8028896a 100644 --- a/classRTCTime-members.html +++ b/classRTCTime-members.html @@ -96,7 +96,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classSHA1-members.html b/classSHA1-members.html index 84324c6c..c127be6e 100644 --- a/classSHA1-members.html +++ b/classSHA1-members.html @@ -94,21 +94,20 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); chunkSize (defined in SHA1)SHA1 clear()SHA1virtual finalize(void *hash, size_t len)SHA1virtual - finalized (defined in SHA1)SHA1 - h (defined in SHA1)SHA1 - Hash()Hash - hashSize() const SHA1virtual - length (defined in SHA1)SHA1 - reset()SHA1virtual - SHA1()SHA1 - update(const void *data, size_t len)SHA1virtual - w (defined in SHA1)SHA1 - ~Hash()Hashvirtual - ~SHA1()SHA1virtual + h (defined in SHA1)SHA1 + Hash()Hash + hashSize() const SHA1virtual + length (defined in SHA1)SHA1 + reset()SHA1virtual + SHA1()SHA1 + update(const void *data, size_t len)SHA1virtual + w (defined in SHA1)SHA1 + ~Hash()Hashvirtual + ~SHA1()SHA1virtual diff --git a/classSHA1.html b/classSHA1.html index d4927683..c429671c 100644 --- a/classSHA1.html +++ b/classSHA1.html @@ -205,7 +205,7 @@ virtual Hash.

-

Definition at line 137 of file SHA1.cpp.

+

Definition at line 128 of file SHA1.cpp.

@@ -250,12 +250,12 @@ virtual hashSize(), then the hash value will be truncated to the first len bytes. If len is greater than hashSize(), then the remaining bytes will left unchanged.

-

If finalize() is called again, the same hash value is returned again until the next call to reset() or update().

+

If finalize() is called again, then the returned hash value is undefined. Call reset() first to start a new hashing process.

See Also
reset(), update()

Implements Hash.

-

Definition at line 102 of file SHA1.cpp.

+

Definition at line 97 of file SHA1.cpp.

@@ -359,12 +359,12 @@ virtual finalize() has already been called, then calling update() will reset() the hash and start a new hashing process.

+

If finalize() has already been called, then the behavior of update() will be undefined. Call reset() first to start a new hashing process.

See Also
reset(), finalize()

Implements Hash.

-

Definition at line 76 of file SHA1.cpp.

+

Definition at line 75 of file SHA1.cpp.

@@ -375,7 +375,7 @@ virtual  diff --git a/classSHA256-members.html b/classSHA256-members.html index 1900a013..24263d83 100644 --- a/classSHA256-members.html +++ b/classSHA256-members.html @@ -94,21 +94,20 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); chunkSize (defined in SHA256)SHA256 clear()SHA256virtual finalize(void *hash, size_t len)SHA256virtual - finalized (defined in SHA256)SHA256 - h (defined in SHA256)SHA256 - Hash()Hash - hashSize() const SHA256virtual - length (defined in SHA256)SHA256 - reset()SHA256virtual - SHA256()SHA256 - update(const void *data, size_t len)SHA256virtual - w (defined in SHA256)SHA256 - ~Hash()Hashvirtual - ~SHA256()SHA256virtual + h (defined in SHA256)SHA256 + Hash()Hash + hashSize() const SHA256virtual + length (defined in SHA256)SHA256 + reset()SHA256virtual + SHA256()SHA256 + update(const void *data, size_t len)SHA256virtual + w (defined in SHA256)SHA256 + ~Hash()Hashvirtual + ~SHA256()SHA256virtual diff --git a/classSHA256.html b/classSHA256.html index 6c438dce..d28eae79 100644 --- a/classSHA256.html +++ b/classSHA256.html @@ -205,7 +205,7 @@ virtual Hash.

-

Definition at line 142 of file SHA256.cpp.

+

Definition at line 133 of file SHA256.cpp.

@@ -250,12 +250,12 @@ virtual hashSize(), then the hash value will be truncated to the first len bytes. If len is greater than hashSize(), then the remaining bytes will left unchanged.

-

If finalize() is called again, the same hash value is returned again until the next call to reset() or update().

+

If finalize() is called again, then the returned hash value is undefined. Call reset() first to start a new hashing process.

See Also
reset(), update()

Implements Hash.

-

Definition at line 107 of file SHA256.cpp.

+

Definition at line 102 of file SHA256.cpp.

@@ -359,12 +359,12 @@ virtual finalize() has already been called, then calling update() will reset() the hash and start a new hashing process.

+

If finalize() has already been called, then the behavior of update() will be undefined. Call reset() first to start a new hashing process.

See Also
reset(), finalize()

Implements Hash.

-

Definition at line 81 of file SHA256.cpp.

+

Definition at line 80 of file SHA256.cpp.

@@ -375,7 +375,7 @@ virtual  diff --git a/classSHA3__256-members.html b/classSHA3__256-members.html new file mode 100644 index 00000000..c394a09a --- /dev/null +++ b/classSHA3__256-members.html @@ -0,0 +1,111 @@ + + + + + + +ArduinoLibs: Member List + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+
+
+
SHA3_256 Member List
+
+
+ +

This is the complete list of members for SHA3_256, including all inherited members.

+ + + + + + + + + + + +
blockSize() const SHA3_256virtual
clear()SHA3_256virtual
finalize(void *hash, size_t len)SHA3_256virtual
Hash()Hash
hashSize() const SHA3_256virtual
reset()SHA3_256virtual
SHA3_256()SHA3_256
update(const void *data, size_t len)SHA3_256virtual
~Hash()Hashvirtual
~SHA3_256()SHA3_256virtual
+ + + + diff --git a/classSHA3__256.html b/classSHA3__256.html new file mode 100644 index 00000000..da6c29d7 --- /dev/null +++ b/classSHA3__256.html @@ -0,0 +1,383 @@ + + + + + + +ArduinoLibs: SHA3_256 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
SHA3_256 Class Reference
+
+
+ +

SHA3-256 hash algorithm. + More...

+ +

#include <SHA3.h>

+
+Inheritance diagram for SHA3_256:
+
+
+ + +Hash + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SHA3_256 ()
 Constructs a new SHA3-256 hash object.
 
+virtual ~SHA3_256 ()
 Destroys this hash object after clearing sensitive information.
 
size_t hashSize () const
 Size of the hash result from finalize(). More...
 
size_t blockSize () const
 Size of the internal block used by the hash algorithm. More...
 
void reset ()
 Resets the hash ready for a new hashing process. More...
 
void update (const void *data, size_t len)
 Updates the hash with more data. More...
 
void finalize (void *hash, size_t len)
 Finalizes the hashing process and returns the hash. More...
 
void clear ()
 Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing process. More...
 
- Public Member Functions inherited from Hash
Hash ()
 Constructs a new hash object.
 
virtual ~Hash ()
 Destroys this hash object. More...
 
+

Detailed Description

+

SHA3-256 hash algorithm.

+

Reference: http://en.wikipedia.org/wiki/SHA-3

+
See Also
SHA3_512
+ +

Definition at line 29 of file SHA3.h.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
size_t SHA3_256::blockSize () const
+
+virtual
+
+ +

Size of the internal block used by the hash algorithm.

+
See Also
update(), hashSize()
+ +

Implements Hash.

+ +

Definition at line 55 of file SHA3.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
void SHA3_256::clear ()
+
+virtual
+
+ +

Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing process.

+
See Also
reset()
+ +

Implements Hash.

+ +

Definition at line 77 of file SHA3.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void SHA3_256::finalize (void * hash,
size_t len 
)
+
+virtual
+
+ +

Finalizes the hashing process and returns the hash.

+
Parameters
+ + + +
hashThe buffer to return the hash value in.
lenThe length of the hash buffer, normally hashSize().
+
+
+

If len is less than hashSize(), then the hash value will be truncated to the first len bytes. If len is greater than hashSize(), then the remaining bytes will left unchanged.

+

If finalize() is called again, then the returned hash value is undefined. Call reset() first to start a new hashing process.

+
See Also
reset(), update()
+ +

Implements Hash.

+ +

Definition at line 70 of file SHA3.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
size_t SHA3_256::hashSize () const
+
+virtual
+
+ +

Size of the hash result from finalize().

+
See Also
finalize(), blockSize()
+ +

Implements Hash.

+ +

Definition at line 50 of file SHA3.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
void SHA3_256::reset ()
+
+virtual
+
+ +

Resets the hash ready for a new hashing process.

+
See Also
update(), finalize()
+ +

Implements Hash.

+ +

Definition at line 60 of file SHA3.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void SHA3_256::update (const void * data,
size_t len 
)
+
+virtual
+
+ +

Updates the hash with more data.

+
Parameters
+ + + +
dataData to be hashed.
lenNumber of bytes of data to be hashed.
+
+
+

If finalize() has already been called, then the behavior of update() will be undefined. Call reset() first to start a new hashing process.

+
See Also
reset(), finalize()
+ +

Implements Hash.

+ +

Definition at line 65 of file SHA3.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classSHA3__256.png b/classSHA3__256.png new file mode 100644 index 0000000000000000000000000000000000000000..4949a56de2672e1cdb8019e0c8eea1ee8cdf9f4d GIT binary patch literal 403 zcmeAS@N?(olHy`uVBq!ia0vp^o=OzQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;lV zcHf|hd3Qp$E_%ganApO5%6RFNNldPjge25FUwyumvMzV=q>=~zzGkSaZ7LJYW)=b`F3_(QFT;ryUwib{;!|-CJJcFasRix{Lrq|WVXLM@4P$e t4bd@XSB+UM5^F*ke$}izc}AyM{zjfaUG&Mt7l0wi;OXk;vd$@?2>=PKuetyL literal 0 HcmV?d00001 diff --git a/classSHA3__512-members.html b/classSHA3__512-members.html new file mode 100644 index 00000000..edb0322a --- /dev/null +++ b/classSHA3__512-members.html @@ -0,0 +1,111 @@ + + + + + + +ArduinoLibs: Member List + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+
+
+
SHA3_512 Member List
+
+
+ +

This is the complete list of members for SHA3_512, including all inherited members.

+ + + + + + + + + + + +
blockSize() const SHA3_512virtual
clear()SHA3_512virtual
finalize(void *hash, size_t len)SHA3_512virtual
Hash()Hash
hashSize() const SHA3_512virtual
reset()SHA3_512virtual
SHA3_512()SHA3_512
update(const void *data, size_t len)SHA3_512virtual
~Hash()Hashvirtual
~SHA3_512()SHA3_512virtual
+ + + + diff --git a/classSHA3__512.html b/classSHA3__512.html new file mode 100644 index 00000000..063bc552 --- /dev/null +++ b/classSHA3__512.html @@ -0,0 +1,383 @@ + + + + + + +ArduinoLibs: SHA3_512 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
SHA3_512 Class Reference
+
+
+ +

SHA3-512 hash algorithm. + More...

+ +

#include <SHA3.h>

+
+Inheritance diagram for SHA3_512:
+
+
+ + +Hash + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SHA3_512 ()
 Constructs a new SHA3-512 hash object.
 
+virtual ~SHA3_512 ()
 Destroys this hash object after clearing sensitive information.
 
size_t hashSize () const
 Size of the hash result from finalize(). More...
 
size_t blockSize () const
 Size of the internal block used by the hash algorithm. More...
 
void reset ()
 Resets the hash ready for a new hashing process. More...
 
void update (const void *data, size_t len)
 Updates the hash with more data. More...
 
void finalize (void *hash, size_t len)
 Finalizes the hashing process and returns the hash. More...
 
void clear ()
 Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing process. More...
 
- Public Member Functions inherited from Hash
Hash ()
 Constructs a new hash object.
 
virtual ~Hash ()
 Destroys this hash object. More...
 
+

Detailed Description

+

SHA3-512 hash algorithm.

+

Reference: http://en.wikipedia.org/wiki/SHA-3

+
See Also
SHA3_256
+ +

Definition at line 48 of file SHA3.h.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + +
size_t SHA3_512::blockSize () const
+
+virtual
+
+ +

Size of the internal block used by the hash algorithm.

+
See Also
update(), hashSize()
+ +

Implements Hash.

+ +

Definition at line 112 of file SHA3.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
void SHA3_512::clear ()
+
+virtual
+
+ +

Clears the hash state, removing all sensitive data, and then resets the hash ready for a new hashing process.

+
See Also
reset()
+ +

Implements Hash.

+ +

Definition at line 134 of file SHA3.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void SHA3_512::finalize (void * hash,
size_t len 
)
+
+virtual
+
+ +

Finalizes the hashing process and returns the hash.

+
Parameters
+ + + +
hashThe buffer to return the hash value in.
lenThe length of the hash buffer, normally hashSize().
+
+
+

If len is less than hashSize(), then the hash value will be truncated to the first len bytes. If len is greater than hashSize(), then the remaining bytes will left unchanged.

+

If finalize() is called again, then the returned hash value is undefined. Call reset() first to start a new hashing process.

+
See Also
reset(), update()
+ +

Implements Hash.

+ +

Definition at line 127 of file SHA3.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
size_t SHA3_512::hashSize () const
+
+virtual
+
+ +

Size of the hash result from finalize().

+
See Also
finalize(), blockSize()
+ +

Implements Hash.

+ +

Definition at line 107 of file SHA3.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
void SHA3_512::reset ()
+
+virtual
+
+ +

Resets the hash ready for a new hashing process.

+
See Also
update(), finalize()
+ +

Implements Hash.

+ +

Definition at line 117 of file SHA3.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void SHA3_512::update (const void * data,
size_t len 
)
+
+virtual
+
+ +

Updates the hash with more data.

+
Parameters
+ + + +
dataData to be hashed.
lenNumber of bytes of data to be hashed.
+
+
+

If finalize() has already been called, then the behavior of update() will be undefined. Call reset() first to start a new hashing process.

+
See Also
reset(), finalize()
+ +

Implements Hash.

+ +

Definition at line 122 of file SHA3.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classSHA3__512.png b/classSHA3__512.png new file mode 100644 index 0000000000000000000000000000000000000000..be2ace43ffe366a67376e189928e9c8dfc12fb9a GIT binary patch literal 399 zcmV;A0dW3_P)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0003VNklazKn#|Vz+S+!Iq?WO16CB@tK$04+P216mqneXja@yPJ!qxEfb^XX-n? zy2j*cZK}I->zMeK)BeE5s^Ye|ocz-KNg<~*+n-Fn?5o5>C+1X5zU+Kc_dJC%chunkSize (defined in SHA512)SHA512 clear()SHA512virtual finalize(void *hash, size_t len)SHA512virtual - finalized (defined in SHA512)SHA512 - h (defined in SHA512)SHA512 - Hash()Hash - hashSize() const SHA512virtual - lengthHigh (defined in SHA512)SHA512 - lengthLow (defined in SHA512)SHA512 - reset()SHA512virtual - SHA512()SHA512 - update(const void *data, size_t len)SHA512virtual - w (defined in SHA512)SHA512 - ~Hash()Hashvirtual - ~SHA512()SHA512virtual + h (defined in SHA512)SHA512 + Hash()Hash + hashSize() const SHA512virtual + lengthHigh (defined in SHA512)SHA512 + lengthLow (defined in SHA512)SHA512 + reset()SHA512virtual + SHA512()SHA512 + update(const void *data, size_t len)SHA512virtual + w (defined in SHA512)SHA512 + ~Hash()Hashvirtual + ~SHA512()SHA512virtual diff --git a/classSHA512.html b/classSHA512.html index 3bcf6b15..61efd699 100644 --- a/classSHA512.html +++ b/classSHA512.html @@ -205,7 +205,7 @@ virtual Hash.

-

Definition at line 145 of file SHA512.cpp.

+

Definition at line 136 of file SHA512.cpp.

@@ -250,12 +250,12 @@ virtual hashSize(), then the hash value will be truncated to the first len bytes. If len is greater than hashSize(), then the remaining bytes will left unchanged.

-

If finalize() is called again, the same hash value is returned again until the next call to reset() or update().

+

If finalize() is called again, then the returned hash value is undefined. Call reset() first to start a new hashing process.

See Also
reset(), update()

Implements Hash.

-

Definition at line 110 of file SHA512.cpp.

+

Definition at line 105 of file SHA512.cpp.

@@ -359,12 +359,12 @@ virtual finalize() has already been called, then calling update() will reset() the hash and start a new hashing process.

+

If finalize() has already been called, then the behavior of update() will be undefined. Call reset() first to start a new hashing process.

See Also
reset(), finalize()

Implements Hash.

-

Definition at line 80 of file SHA512.cpp.

+

Definition at line 79 of file SHA512.cpp.

@@ -375,7 +375,7 @@ virtual  diff --git a/classSoftI2C-members.html b/classSoftI2C-members.html index f0b32c35..89e78ab0 100644 --- a/classSoftI2C-members.html +++ b/classSoftI2C-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classSoftI2C.html b/classSoftI2C.html index d4fcda31..1aa27cc7 100644 --- a/classSoftI2C.html +++ b/classSoftI2C.html @@ -346,7 +346,7 @@ unsigned int  diff --git a/classTextField-members.html b/classTextField-members.html index 9afa9d35..a0bde0cf 100644 --- a/classTextField-members.html +++ b/classTextField-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classTextField.html b/classTextField.html index f600c1ce..1a31cd4b 100644 --- a/classTextField.html +++ b/classTextField.html @@ -343,7 +343,7 @@ LiquidCrystal *  diff --git a/classTimeField-members.html b/classTimeField-members.html index 30847791..de9aa470 100644 --- a/classTimeField-members.html +++ b/classTimeField-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classTimeField.html b/classTimeField.html index cb3149b3..d159a3db 100644 --- a/classTimeField.html +++ b/classTimeField.html @@ -541,7 +541,7 @@ LiquidCrystal *  diff --git a/classTransistorNoiseSource-members.html b/classTransistorNoiseSource-members.html index d867cafa..a0dd3093 100644 --- a/classTransistorNoiseSource-members.html +++ b/classTransistorNoiseSource-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classTransistorNoiseSource.html b/classTransistorNoiseSource.html index a0185c65..ed1ba003 100644 --- a/classTransistorNoiseSource.html +++ b/classTransistorNoiseSource.html @@ -277,7 +277,7 @@ Additional Inherited Members diff --git a/classes.html b/classes.html index 0ef8342b..1cc68dc5 100644 --- a/classes.html +++ b/classes.html @@ -87,48 +87,49 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
Class Index
-
A | B | C | D | E | F | H | I | L | M | N | O | R | S | T
+
A | B | C | D | E | F | H | I | K | L | M | N | O | R | S | T
- + - - + + - + + + + - - + + - - - + + - - + + +
  A  
CBCCommon   
  F  
-
  M  
-
RTCTime   
CFB   
  S  
+
ListField   RTCTime   
CFB   
  M  
+
  S  
AES128   CFBCommon   Field   Melody   
AES192   ChaCha   Form   
  N  
-
SHA1   
AES128   CFBCommon   Field   
AES192   ChaCha   Form   Melody   SHA1   
AES256   Charlieplex   
  H  
+
  N  
SHA256   
AESCommon   ChaseLEDs   NoiseSource   SHA512   
AESCommon   ChaseLEDs   SHA3_256   
  B  
-
Cipher   Hash   
  O  
-
SoftI2C   
Cipher   Hash   NoiseSource   SHA3_512   
CTR   
  I  
-
  T  
+
  O  
+
SHA512   
Bitmap   CTRCommon   SoftI2C   
BLAKE2b   Curve25519   I2CMaster   OFB   
  T  
Bitmap   CTRCommon   OFB   
BLAKE2b   Curve25519   I2CMaster   OFBCommon   TextField   
BLAKE2s   
  D  
-
IntField   
  R  
+
IntField   OFBCommon   
BlinkLED   IRreceiver   
  R  
+
TextField   
BlockCipher   DMD   
  K  
TimeField   
BlinkLED   IRreceiver   TransistorNoiseSource   
BlockCipher   DMD   
  L  
-
RNGClass   
BoolField   DS1307RTC   RTC   
BoolField   DS1307RTC   RNGClass   TransistorNoiseSource   
  C  
-
DS3232RTC   LCD   RTCAlarm   
DS3232RTC   KeccakCore   RTC   
  E  
-
ListField   RTCDate   
CBC   
EEPROM24   
  L  
+
RTCAlarm   
CBC   RTCDate   
EEPROM24   LCD   
-
A | B | C | D | E | F | H | I | L | M | N | O | R | S | T
+
A | B | C | D | E | F | H | I | K | L | M | N | O | R | S | T
diff --git a/crypto.html b/crypto.html index 0d36410e..a5a7575e 100644 --- a/crypto.html +++ b/crypto.html @@ -85,7 +85,7 @@ Supported Algorithms
  • Block ciphers: AES128, AES192, AES256
  • Block cipher modes: CTR, CFB, CBC, OFB
  • Stream ciphers: ChaCha
  • -
  • Hash algorithms: SHA1, SHA256, SHA512, BLAKE2s, BLAKE2b
  • +
  • Hash algorithms: SHA1, SHA256, SHA512, SHA3_256, SHA3_512, BLAKE2s, BLAKE2b
  • Public key algorithms: Curve25519
  • Random number generation: RNG, TransistorNoiseSource
  • @@ -111,15 +111,19 @@ Performance ChaCha (8 rounds)8.13us8.14us43.74us130 -SHA121.90us94 +SHA121.90us93 -SHA25643.85us106 +SHA25643.85us105 -SHA512123.25us210 +SHA512123.24us209 -BLAKE2s18.54us170 +SHA3_256121.69us403 -BLAKE2b50.59us338 +SHA3_512229.12us403 + +BLAKE2s18.54us169 + +BLAKE2b50.58us337

    Where a cipher supports more than one key size (such as ChaCha), the values are typically almost identical for 128-bit and 256-bit keys so only the maximum is shown above.

    Public key algorithms have the following results on an Arduino Uno:

    @@ -136,7 +140,7 @@ Performance diff --git a/crypto_8dox.html b/crypto_8dox.html index 1caa9d93..9533567a 100644 --- a/crypto_8dox.html +++ b/crypto_8dox.html @@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/dir_1586d320a3b1e622174530fde769cda9.html b/dir_1586d320a3b1e622174530fde769cda9.html index 2172fb10..d50bf07d 100644 --- a/dir_1586d320a3b1e622174530fde769cda9.html +++ b/dir_1586d320a3b1e622174530fde769cda9.html @@ -102,7 +102,7 @@ Files diff --git a/dir_48f64e79f12bd77ba047e9e436ec978c.html b/dir_48f64e79f12bd77ba047e9e436ec978c.html index 5b76f34a..8d11af30 100644 --- a/dir_48f64e79f12bd77ba047e9e436ec978c.html +++ b/dir_48f64e79f12bd77ba047e9e436ec978c.html @@ -122,7 +122,7 @@ Files diff --git a/dir_5e87a7229a108582288ef7eda1233dc3.html b/dir_5e87a7229a108582288ef7eda1233dc3.html index b82d1324..4099700e 100644 --- a/dir_5e87a7229a108582288ef7eda1233dc3.html +++ b/dir_5e87a7229a108582288ef7eda1233dc3.html @@ -94,7 +94,7 @@ Files diff --git a/dir_6591a2127a29f6cea3994dcb5b0596d1.html b/dir_6591a2127a29f6cea3994dcb5b0596d1.html index 64b89be1..4ff75b18 100644 --- a/dir_6591a2127a29f6cea3994dcb5b0596d1.html +++ b/dir_6591a2127a29f6cea3994dcb5b0596d1.html @@ -106,7 +106,7 @@ Files diff --git a/dir_9a34040863d1190c0e01b23e6b44de01.html b/dir_9a34040863d1190c0e01b23e6b44de01.html index 1ceb21e4..6cce5163 100644 --- a/dir_9a34040863d1190c0e01b23e6b44de01.html +++ b/dir_9a34040863d1190c0e01b23e6b44de01.html @@ -96,7 +96,7 @@ Files diff --git a/dir_bc0718b08fb2015b8e59c47b2805f60c.html b/dir_bc0718b08fb2015b8e59c47b2805f60c.html index 635764f6..2262ac4b 100644 --- a/dir_bc0718b08fb2015b8e59c47b2805f60c.html +++ b/dir_bc0718b08fb2015b8e59c47b2805f60c.html @@ -108,7 +108,7 @@ Directories diff --git a/dir_be059bf9978ae156837504b1b8a7568c.html b/dir_be059bf9978ae156837504b1b8a7568c.html index 0c4c3033..d61aa09c 100644 --- a/dir_be059bf9978ae156837504b1b8a7568c.html +++ b/dir_be059bf9978ae156837504b1b8a7568c.html @@ -94,7 +94,7 @@ Files diff --git a/dir_e2ce51835550ba18edf07a8311722290.html b/dir_e2ce51835550ba18edf07a8311722290.html index e4a2930c..e1ee2372 100644 --- a/dir_e2ce51835550ba18edf07a8311722290.html +++ b/dir_e2ce51835550ba18edf07a8311722290.html @@ -140,6 +140,10 @@ Files   file  Hash.h [code]   +file  KeccakCore.cpp [code] +  +file  KeccakCore.h [code] +  file  NoiseSource.cpp [code]   file  NoiseSource.h [code] @@ -160,6 +164,10 @@ Files   file  SHA256.h [code]   +file  SHA3.cpp [code] +  +file  SHA3.h [code] +  file  SHA512.cpp [code]   file  SHA512.h [code] @@ -172,7 +180,7 @@ Files diff --git a/dir_f34881fcf60f680b800190d5274dfaea.html b/dir_f34881fcf60f680b800190d5274dfaea.html index 250e60f9..4b4ef65b 100644 --- a/dir_f34881fcf60f680b800190d5274dfaea.html +++ b/dir_f34881fcf60f680b800190d5274dfaea.html @@ -102,7 +102,7 @@ Files diff --git a/dir_f9b96888882c2691b8eeaeafd1b9501d.html b/dir_f9b96888882c2691b8eeaeafd1b9501d.html index 6a269492..7b87f368 100644 --- a/dir_f9b96888882c2691b8eeaeafd1b9501d.html +++ b/dir_f9b96888882c2691b8eeaeafd1b9501d.html @@ -102,7 +102,7 @@ Files diff --git a/dmd-demo_8dox.html b/dmd-demo_8dox.html index bbd63fe4..b651c8d1 100644 --- a/dmd-demo_8dox.html +++ b/dmd-demo_8dox.html @@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/dmd-running-figure_8dox.html b/dmd-running-figure_8dox.html index a90767e7..59acde6f 100644 --- a/dmd-running-figure_8dox.html +++ b/dmd-running-figure_8dox.html @@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/dmd_demo.html b/dmd_demo.html index 216597c7..b709bbde 100644 --- a/dmd_demo.html +++ b/dmd_demo.html @@ -236,7 +236,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/dmd_running_figure.html b/dmd_running_figure.html index 355ec608..cefba62f 100644 --- a/dmd_running_figure.html +++ b/dmd_running_figure.html @@ -430,7 +430,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/files.html b/files.html index 3596078b..b4549156 100644 --- a/files.html +++ b/files.html @@ -144,44 +144,48 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); o*IntField.h o*IRreceiver.cpp o*IRreceiver.h -o*LCD.cpp -o*LCD.h -o*ListField.cpp -o*ListField.h -o*Melody.cpp -o*Melody.h -o*Mono5x7.h -o*NoiseSource.cpp -o*NoiseSource.h -o*OFB.cpp -o*OFB.h -o*PowerSave.cpp -o*PowerSave.h -o*RC5.h -o*RNG.cpp -o*RNG.h -o*RTC.cpp -o*RTC.h -o*SHA1.cpp -o*SHA1.h -o*SHA256.cpp -o*SHA256.h -o*SHA512.cpp -o*SHA512.h -o*SoftI2C.cpp -o*SoftI2C.h -o*TextField.cpp -o*TextField.h -o*TimeField.cpp -o*TimeField.h -o*TransistorNoiseSource.cpp -\*TransistorNoiseSource.h +o*KeccakCore.cpp +o*KeccakCore.h +o*LCD.cpp +o*LCD.h +o*ListField.cpp +o*ListField.h +o*Melody.cpp +o*Melody.h +o*Mono5x7.h +o*NoiseSource.cpp +o*NoiseSource.h +o*OFB.cpp +o*OFB.h +o*PowerSave.cpp +o*PowerSave.h +o*RC5.h +o*RNG.cpp +o*RNG.h +o*RTC.cpp +o*RTC.h +o*SHA1.cpp +o*SHA1.h +o*SHA256.cpp +o*SHA256.h +o*SHA3.cpp +o*SHA3.h +o*SHA512.cpp +o*SHA512.h +o*SoftI2C.cpp +o*SoftI2C.h +o*TextField.cpp +o*TextField.h +o*TimeField.cpp +o*TimeField.h +o*TransistorNoiseSource.cpp +\*TransistorNoiseSource.h diff --git a/functions.html b/functions.html index a81257ff..ae808e1f 100644 --- a/functions.html +++ b/functions.html @@ -169,7 +169,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_b.html b/functions_b.html index 1c5fe001..93a832e5 100644 --- a/functions_b.html +++ b/functions_b.html @@ -162,8 +162,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , BLAKE2s , BlockCipher , Hash +, KeccakCore , SHA1 , SHA256 +, SHA3_256 +, SHA3_512 , SHA512
  • BoolField() @@ -178,7 +181,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_c.html b/functions_c.html index d5369910..ab927dec 100644 --- a/functions_c.html +++ b/functions_c.html @@ -127,6 +127,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : NoiseSource , TransistorNoiseSource
  • +
  • capacity() +: KeccakCore +
  • CBC() : CBC< T >
  • @@ -166,9 +169,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , Cipher , CTRCommon , Hash +, KeccakCore , OFBCommon , SHA1 , SHA256 +, SHA3_256 +, SHA3_512 , SHA512
  • Color @@ -196,7 +202,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_d.html b/functions_d.html index 4e054bcd..72e98ec1 100644 --- a/functions_d.html +++ b/functions_d.html @@ -234,7 +234,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_e.html b/functions_e.html index 4c045192..2b420fbf 100644 --- a/functions_e.html +++ b/functions_e.html @@ -172,11 +172,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : Field , TimeField
  • +
  • extract() +: KeccakCore +
  • diff --git a/functions_enum.html b/functions_enum.html index 72975cb2..4fedb51c 100644 --- a/functions_enum.html +++ b/functions_enum.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_eval.html b/functions_eval.html index 81a77331..46412819 100644 --- a/functions_eval.html +++ b/functions_eval.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_f.html b/functions_f.html index d34c3355..2af58461 100644 --- a/functions_f.html +++ b/functions_f.html @@ -138,6 +138,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , Hash , SHA1 , SHA256 +, SHA3_256 +, SHA3_512 , SHA512
  • firedAlarm() @@ -146,12 +148,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • flags : RTCAlarm
  • -
  • font() -: Bitmap -
  • Font : Bitmap
  • +
  • font() +: Bitmap +
  • form() : Field
  • @@ -165,7 +167,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func.html b/functions_func.html index 1c367d94..25ed526b 100644 --- a/functions_func.html +++ b/functions_func.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_b.html b/functions_func_b.html index 050bffb7..dfc98c8e 100644 --- a/functions_func_b.html +++ b/functions_func_b.html @@ -152,12 +152,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , BLAKE2s , BlockCipher , Hash +, KeccakCore , SHA1 , SHA256 +, SHA3_256 +, SHA3_512 , SHA512
  • BoolField() -: BoolField +: BoolField
  • byteCount() : DS1307RTC @@ -168,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_c.html b/functions_func_c.html index bac4f0f8..604cd979 100644 --- a/functions_func_c.html +++ b/functions_func_c.html @@ -126,6 +126,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : NoiseSource , TransistorNoiseSource
  • +
  • capacity() +: KeccakCore +
  • CBC() : CBC< T >
  • @@ -165,9 +168,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , Cipher , CTRCommon , Hash +, KeccakCore , OFBCommon , SHA1 , SHA256 +, SHA3_256 +, SHA3_512 , SHA512
  • command() @@ -192,7 +198,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_d.html b/functions_func_d.html index f4f4be67..7883222c 100644 --- a/functions_func_d.html +++ b/functions_func_d.html @@ -221,7 +221,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_e.html b/functions_func_e.html index fb5d0380..cc20007f 100644 --- a/functions_func_e.html +++ b/functions_func_e.html @@ -171,11 +171,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : Field , TimeField
  • +
  • extract() +: KeccakCore +
  • diff --git a/functions_func_f.html b/functions_func_f.html index d9a68ced..1c1fd761 100644 --- a/functions_func_f.html +++ b/functions_func_f.html @@ -137,6 +137,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , Hash , SHA1 , SHA256 +, SHA3_256 +, SHA3_512 , SHA512
  • firedAlarm() @@ -158,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_g.html b/functions_func_g.html index 7cb0910d..ce821939 100644 --- a/functions_func_g.html +++ b/functions_func_g.html @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_h.html b/functions_func_h.html index 3c7e9665..da5a0b7b 100644 --- a/functions_func_h.html +++ b/functions_func_h.html @@ -134,6 +134,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , Hash , SHA1 , SHA256 +, SHA3_256 +, SHA3_512 , SHA512
  • hasUpdates() @@ -154,7 +156,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_i.html b/functions_func_i.html index 0f5663a1..469f203f 100644 --- a/functions_func_i.html +++ b/functions_func_i.html @@ -169,7 +169,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_k.html b/functions_func_k.html index b29d58da..2dba6671 100644 --- a/functions_func_k.html +++ b/functions_func_k.html @@ -122,6 +122,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');  

    - k -

      +
    • KeccakCore() +: KeccakCore +
    • keySize() : AES128 , AES192 @@ -138,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_l.html b/functions_func_l.html index c12626f7..656925b1 100644 --- a/functions_func_l.html +++ b/functions_func_l.html @@ -151,7 +151,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_m.html b/functions_func_m.html index 0bc24f44..9c1d5dd8 100644 --- a/functions_func_m.html +++ b/functions_func_m.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_n.html b/functions_func_n.html index cd59bea0..4bb52914 100644 --- a/functions_func_n.html +++ b/functions_func_n.html @@ -138,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_o.html b/functions_func_o.html index a357f9ea..96d549ac 100644 --- a/functions_func_o.html +++ b/functions_func_o.html @@ -141,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_p.html b/functions_func_p.html index d16ef664..0718059b 100644 --- a/functions_func_p.html +++ b/functions_func_p.html @@ -122,6 +122,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');  

      - p -

        +
      • pad() +: KeccakCore +
      • pageSize() : EEPROM24
      • @@ -150,7 +153,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_r.html b/functions_func_r.html index 861f3529..e6725f35 100644 --- a/functions_func_r.html +++ b/functions_func_r.html @@ -165,11 +165,14 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : Form
      • reset() -: BLAKE2b -, BLAKE2s +: BLAKE2b +, BLAKE2s , Hash +, KeccakCore , SHA1 , SHA256 +, SHA3_256 +, SHA3_512 , SHA512
      • resume() @@ -188,7 +191,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_s.html b/functions_func_s.html index 30784410..326663d5 100644 --- a/functions_func_s.html +++ b/functions_func_s.html @@ -149,6 +149,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , CTRCommon , OFBCommon
      • +
      • setCapacity() +: KeccakCore +
      • setCounter() : ChaCha
      • @@ -263,6 +266,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
      • SHA256() : SHA256
      • +
      • SHA3_256() +: SHA3_256 +
      • +
      • SHA3_512() +: SHA3_512 +
      • SHA512() : SHA512
      • @@ -319,7 +328,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_t.html b/functions_func_t.html index 7124a451..eddcb05e 100644 --- a/functions_func_t.html +++ b/functions_func_t.html @@ -147,7 +147,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_u.html b/functions_func_u.html index a3adec37..776503b7 100644 --- a/functions_func_u.html +++ b/functions_func_u.html @@ -126,8 +126,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : BLAKE2b , BLAKE2s , Hash +, KeccakCore , SHA1 , SHA256 +, SHA3_256 +, SHA3_512 , SHA512
      • updateCursor() @@ -137,7 +140,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_v.html b/functions_func_v.html index 0123b34a..44b6e39f 100644 --- a/functions_func_v.html +++ b/functions_func_v.html @@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_w.html b/functions_func_w.html index 132bc71f..9efd2be5 100644 --- a/functions_func_w.html +++ b/functions_func_w.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_~.html b/functions_func_~.html index dc067424..a26ad697 100644 --- a/functions_func_~.html +++ b/functions_func_~.html @@ -161,6 +161,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
      • ~Hash() : Hash
      • +
      • ~KeccakCore() +: KeccakCore +
      • ~NoiseSource() : NoiseSource
      • @@ -176,6 +179,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
      • ~SHA256() : SHA256
      • +
      • ~SHA3_256() +: SHA3_256 +
      • +
      • ~SHA3_512() +: SHA3_512 +
      • ~SHA512() : SHA512
      • @@ -183,7 +192,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_g.html b/functions_g.html index ba97a28d..1cfcc5ae 100644 --- a/functions_g.html +++ b/functions_g.html @@ -130,7 +130,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_h.html b/functions_h.html index aa8709e5..a17db5bf 100644 --- a/functions_h.html +++ b/functions_h.html @@ -135,6 +135,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , Hash , SHA1 , SHA256 +, SHA3_256 +, SHA3_512 , SHA512
      • hasUpdates() @@ -159,7 +161,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_i.html b/functions_i.html index dab3c1ff..20da8891 100644 --- a/functions_i.html +++ b/functions_i.html @@ -173,7 +173,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_k.html b/functions_k.html index f793efff..752426d1 100644 --- a/functions_k.html +++ b/functions_k.html @@ -123,6 +123,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
        Here is a list of all documented class members with links to the class documentation for each member:

        - k -

          +
        • KeccakCore() +: KeccakCore +
        • keySize() : AES128 , AES192 @@ -139,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_l.html b/functions_l.html index 9422b7f2..cac7c47a 100644 --- a/functions_l.html +++ b/functions_l.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_m.html b/functions_m.html index 97d73d98..ce496e34 100644 --- a/functions_m.html +++ b/functions_m.html @@ -150,7 +150,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_n.html b/functions_n.html index 567ad766..2129782c 100644 --- a/functions_n.html +++ b/functions_n.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_o.html b/functions_o.html index 0093b87b..30902cc0 100644 --- a/functions_o.html +++ b/functions_o.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_p.html b/functions_p.html index 80c5fe88..4ce50c8a 100644 --- a/functions_p.html +++ b/functions_p.html @@ -123,6 +123,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
          Here is a list of all documented class members with links to the class documentation for each member:

          - p -

          @@ -151,7 +151,7 @@ Other diff --git a/ir-dumpir_8dox.html b/ir-dumpir_8dox.html index bf96b642..059b3a9f 100644 --- a/ir-dumpir_8dox.html +++ b/ir-dumpir_8dox.html @@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/ir-snake_8dox.html b/ir-snake_8dox.html index 2adba496..a4fd9ee0 100644 --- a/ir-snake_8dox.html +++ b/ir-snake_8dox.html @@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/ir_dumpir.html b/ir_dumpir.html index 07a6e9bf..74737d41 100644 --- a/ir_dumpir.html +++ b/ir_dumpir.html @@ -283,7 +283,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/ir_snake.html b/ir_snake.html index e470a46f..9b20ac64 100644 --- a/ir_snake.html +++ b/ir_snake.html @@ -273,7 +273,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/lcd-form_8dox.html b/lcd-form_8dox.html index 352fa01a..0ce8d372 100644 --- a/lcd-form_8dox.html +++ b/lcd-form_8dox.html @@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/lcd-helloworld_8dox.html b/lcd-helloworld_8dox.html index 5cab7b9f..721cf551 100644 --- a/lcd-helloworld_8dox.html +++ b/lcd-helloworld_8dox.html @@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/lcd_form.html b/lcd_form.html index 15a627cf..eb7ab83e 100644 --- a/lcd_form.html +++ b/lcd_form.html @@ -216,7 +216,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/lcd_hello_world.html b/lcd_hello_world.html index c3bf7110..7f0fea46 100644 --- a/lcd_hello_world.html +++ b/lcd_hello_world.html @@ -166,7 +166,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/mainpage_8dox.html b/mainpage_8dox.html index aba42909..5cf355a4 100644 --- a/mainpage_8dox.html +++ b/mainpage_8dox.html @@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/modules.html b/modules.html index 4de817d7..769f6668 100644 --- a/modules.html +++ b/modules.html @@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/pages.html b/pages.html index 1edb0a9b..a03e27e9 100644 --- a/pages.html +++ b/pages.html @@ -98,7 +98,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/search/all_1.js b/search/all_1.js index 3ef81ade..de6a37b3 100644 --- a/search/all_1.js +++ b/search/all_1.js @@ -16,7 +16,7 @@ var searchData= ['blinking_20led_20example',['Blinking LED Example',['../blink_blink.html',1,'']]], ['blinkled',['BlinkLED',['../classBlinkLED.html',1,'BlinkLED'],['../classBlinkLED.html#afc33958651e7ce6dceb428ea654c2c2f',1,'BlinkLED::BlinkLED()']]], ['blockcipher',['BlockCipher',['../classBlockCipher.html',1,'BlockCipher'],['../classBlockCipher.html#adc3d7cba116cbea9ad017f4cded6fe2f',1,'BlockCipher::BlockCipher()']]], - ['blocksize',['blockSize',['../classAESCommon.html#ae26afdcc6d18e8888974acae16df1413',1,'AESCommon::blockSize()'],['../classBLAKE2b.html#abec1b2320c3afaed12a29cf081b95fe2',1,'BLAKE2b::blockSize()'],['../classBLAKE2s.html#a9b5403734c20a0591d72a98912e4a305',1,'BLAKE2s::blockSize()'],['../classBlockCipher.html#a7059a310487c128db034b0ce0ad425a0',1,'BlockCipher::blockSize()'],['../classHash.html#a4e4297812e3483410556830fe5d47bdf',1,'Hash::blockSize()'],['../classSHA1.html#a816e3fd1a02cf1ecc67866cd8c7c309a',1,'SHA1::blockSize()'],['../classSHA256.html#a71bbd9064f9d6191d0647f867953a858',1,'SHA256::blockSize()'],['../classSHA512.html#acf8b9bcb6be91ee70acc3700a2ffa1a1',1,'SHA512::blockSize()']]], + ['blocksize',['blockSize',['../classAESCommon.html#ae26afdcc6d18e8888974acae16df1413',1,'AESCommon::blockSize()'],['../classBLAKE2b.html#abec1b2320c3afaed12a29cf081b95fe2',1,'BLAKE2b::blockSize()'],['../classBLAKE2s.html#a9b5403734c20a0591d72a98912e4a305',1,'BLAKE2s::blockSize()'],['../classBlockCipher.html#a7059a310487c128db034b0ce0ad425a0',1,'BlockCipher::blockSize()'],['../classHash.html#a4e4297812e3483410556830fe5d47bdf',1,'Hash::blockSize()'],['../classKeccakCore.html#a3742ed39151811b5d1c263c75ee5b20a',1,'KeccakCore::blockSize()'],['../classSHA1.html#a816e3fd1a02cf1ecc67866cd8c7c309a',1,'SHA1::blockSize()'],['../classSHA256.html#a71bbd9064f9d6191d0647f867953a858',1,'SHA256::blockSize()'],['../classSHA3__256.html#a88a50ab6c2d4ad105cda2dd504d96e7c',1,'SHA3_256::blockSize()'],['../classSHA3__512.html#a4493a717bad8fa5cd35fe3aa36f25ab3',1,'SHA3_512::blockSize()'],['../classSHA512.html#acf8b9bcb6be91ee70acc3700a2ffa1a1',1,'SHA512::blockSize()']]], ['boolfield',['BoolField',['../classBoolField.html',1,'BoolField'],['../classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998',1,'BoolField::BoolField(const String &label)'],['../classBoolField.html#a49aad212ed18f84baa105c24e86281d9',1,'BoolField::BoolField(Form &form, const String &label, const String &trueLabel, const String &falseLabel, bool value)']]], ['bytecount',['byteCount',['../classDS1307RTC.html#a93c25269a9b78ab3331354db26672248',1,'DS1307RTC::byteCount()'],['../classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e',1,'DS3232RTC::byteCount()'],['../classRTC.html#acfdebfb449710e44e11f9a3675e14fd8',1,'RTC::byteCount()']]] ]; diff --git a/search/all_10.js b/search/all_10.js index 762b2c08..bd5219d3 100644 --- a/search/all_10.js +++ b/search/all_10.js @@ -12,6 +12,7 @@ var searchData= ['setbacklightpin',['setBacklightPin',['../classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8',1,'LCD']]], ['setblinkrate',['setBlinkRate',['../classBlinkLED.html#a47f95624881063aa91c0066ed2c92258',1,'BlinkLED']]], ['setblockcipher',['setBlockCipher',['../classCBCCommon.html#a0b7631244b0c2c954cfdb50eb32f7db1',1,'CBCCommon::setBlockCipher()'],['../classCFBCommon.html#a9161530f456efacb64f5008fdb1a460c',1,'CFBCommon::setBlockCipher()'],['../classCTRCommon.html#a6c409c4ec1f99e0cb751196d891dc228',1,'CTRCommon::setBlockCipher()'],['../classOFBCommon.html#a0053e2566a88859effffacbf1e4ade04',1,'OFBCommon::setBlockCipher()']]], + ['setcapacity',['setCapacity',['../classKeccakCore.html#ab3c1905f2002e49aca085d6f0b5546f7',1,'KeccakCore']]], ['setcounter',['setCounter',['../classChaCha.html#acab9109b7189ea88d9e5417a3a209eac',1,'ChaCha']]], ['setcountersize',['setCounterSize',['../classCTRCommon.html#ae2bc6b33a864412598b426320d853337',1,'CTRCommon']]], ['setcurrentfield',['setCurrentField',['../classForm.html#ae6004fedfa07191ffd47d7b12370b4e5',1,'Form']]], @@ -44,6 +45,8 @@ var searchData= ['setvalue',['setValue',['../classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577',1,'BoolField::setValue()'],['../classIntField.html#aed421e2c52946f2c7643534b4f6f13f7',1,'IntField::setValue()'],['../classListField.html#a266193631e897fb0b46e1270b1d0eb24',1,'ListField::setValue()'],['../classTextField.html#a24b98c5bb744331bf0a5facc8ea9c033',1,'TextField::setValue()'],['../classTimeField.html#a063b6df2bd6fa7970ee445ab4e5d1fc1',1,'TimeField::setValue()']]], ['sha1',['SHA1',['../classSHA1.html',1,'SHA1'],['../classSHA1.html#ad49a5108ffd6996b1133bf41224ff726',1,'SHA1::SHA1()']]], ['sha256',['SHA256',['../classSHA256.html',1,'SHA256'],['../classSHA256.html#ab672831c542df07ff03ded25760feec2',1,'SHA256::SHA256()']]], + ['sha3_5f256',['SHA3_256',['../classSHA3__256.html',1,'SHA3_256'],['../classSHA3__256.html#ac091b276c6d80a981fa64a9e8c68ca87',1,'SHA3_256::SHA3_256()']]], + ['sha3_5f512',['SHA3_512',['../classSHA3__512.html',1,'SHA3_512'],['../classSHA3__512.html#a5f8bc4180e9d19597f499468098a82a4',1,'SHA3_512::SHA3_512()']]], ['sha512',['SHA512',['../classSHA512.html',1,'SHA512'],['../classSHA512.html#a520d966d99c0008e3cc58bd3b77dafcd',1,'SHA512::SHA512()']]], ['show',['show',['../classForm.html#a9e8d718ab55a8034c22c606ccfa90d65',1,'Form']]], ['size',['size',['../classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c',1,'EEPROM24']]], diff --git a/search/all_12.js b/search/all_12.js index 2efbaec1..4d6b3005 100644 --- a/search/all_12.js +++ b/search/all_12.js @@ -1,6 +1,6 @@ var searchData= [ ['unusedpin',['unusedPin',['../group__power__save.html#ga6dbe8e20a70e83cf5b068177675ec792',1,'PowerSave.h']]], - ['update',['update',['../classBLAKE2b.html#a468e48c66ce1738e11c922d133135069',1,'BLAKE2b::update()'],['../classBLAKE2s.html#aa192da2fa044b03cccaf11e87fdf9911',1,'BLAKE2s::update()'],['../classHash.html#aec9761ee427d122e7450de8df200265c',1,'Hash::update()'],['../classSHA1.html#aec77fbc5015f82bbf7055e535085656a',1,'SHA1::update()'],['../classSHA256.html#a555bf8efb17afd4842d2e55a1f39f27b',1,'SHA256::update()'],['../classSHA512.html#a7d37a20d7ab431ab15d094f768b6a695',1,'SHA512::update()']]], + ['update',['update',['../classBLAKE2b.html#a468e48c66ce1738e11c922d133135069',1,'BLAKE2b::update()'],['../classBLAKE2s.html#aa192da2fa044b03cccaf11e87fdf9911',1,'BLAKE2s::update()'],['../classHash.html#aec9761ee427d122e7450de8df200265c',1,'Hash::update()'],['../classKeccakCore.html#aaaa0355ccec0f469ac8eb577bdf853ed',1,'KeccakCore::update()'],['../classSHA1.html#aec77fbc5015f82bbf7055e535085656a',1,'SHA1::update()'],['../classSHA256.html#a555bf8efb17afd4842d2e55a1f39f27b',1,'SHA256::update()'],['../classSHA3__256.html#a8356957ea403c5da326fc6899b91ea71',1,'SHA3_256::update()'],['../classSHA3__512.html#a0563e4c87150e6019671b4fe92fd63a4',1,'SHA3_512::update()'],['../classSHA512.html#a7d37a20d7ab431ab15d094f768b6a695',1,'SHA512::update()']]], ['updatecursor',['updateCursor',['../classField.html#afc612378167be0e7f8a6f8395b3537bd',1,'Field']]] ]; diff --git a/search/all_16.js b/search/all_16.js index de0f4c80..4bc2b6bb 100644 --- a/search/all_16.js +++ b/search/all_16.js @@ -13,10 +13,13 @@ var searchData= ['_7efield',['~Field',['../classField.html#a45d6e6d09b8f8e46de62b40119d62c60',1,'Field']]], ['_7eform',['~Form',['../classForm.html#a9cda7cce41e81bfaca51e922d4f9b98f',1,'Form']]], ['_7ehash',['~Hash',['../classHash.html#a4e4b4797dda8678aaed058bae155813e',1,'Hash']]], + ['_7ekeccakcore',['~KeccakCore',['../classKeccakCore.html#a4579e3a9b24f1d615fa8d660c23e77a4',1,'KeccakCore']]], ['_7enoisesource',['~NoiseSource',['../classNoiseSource.html#a4eca1e894a5d719fb9bf4df34a791cdb',1,'NoiseSource']]], ['_7eofbcommon',['~OFBCommon',['../classOFBCommon.html#aae7435157e51bf977d3481e94e17ae01',1,'OFBCommon']]], ['_7erngclass',['~RNGClass',['../classRNGClass.html#aef3ee2fb14a39caf650dc90a0226dd31',1,'RNGClass']]], ['_7esha1',['~SHA1',['../classSHA1.html#a8485d7c14fa29286cd3c7acfe438606d',1,'SHA1']]], ['_7esha256',['~SHA256',['../classSHA256.html#ad82f2925b612de315b289017e023a73b',1,'SHA256']]], + ['_7esha3_5f256',['~SHA3_256',['../classSHA3__256.html#a835d09eb88d477cd162330c493cbdf64',1,'SHA3_256']]], + ['_7esha3_5f512',['~SHA3_512',['../classSHA3__512.html#a327005ebc8c0768118ec7d334c583f85',1,'SHA3_512']]], ['_7esha512',['~SHA512',['../classSHA512.html#a777ec274fa838684b0208369c5f66391',1,'SHA512']]] ]; diff --git a/search/all_2.js b/search/all_2.js index e875a5b2..c59a5970 100644 --- a/search/all_2.js +++ b/search/all_2.js @@ -3,6 +3,7 @@ var searchData= ['charlieplexing_20example',['Charlieplexing Example',['../blink_charlieplex.html',1,'']]], ['cylon_20eyes_20example',['Cylon Eyes Example',['../blink_cylon.html',1,'']]], ['calibrating',['calibrating',['../classNoiseSource.html#ac8ac086f830efb5ffe3e8d506aa61c85',1,'NoiseSource::calibrating()'],['../classTransistorNoiseSource.html#a9244b327c291c737396e769da9c66af9',1,'TransistorNoiseSource::calibrating()']]], + ['capacity',['capacity',['../classKeccakCore.html#a804b895121a4e04bc491f41a5821a13e',1,'KeccakCore']]], ['cbc',['CBC',['../classCBC.html',1,'CBC< T >'],['../classCBC.html#ae22d0d9347d5f3c97328e643a9b29ecb',1,'CBC::CBC()']]], ['cbccommon',['CBCCommon',['../classCBCCommon.html',1,'CBCCommon'],['../classCBCCommon.html#a7575b369910e05f54e76698dd04bfa05',1,'CBCCommon::CBCCommon()']]], ['cfb',['CFB',['../classCFB.html',1,'CFB< T >'],['../classCFB.html#a26a027614d027162c67085a58b512318',1,'CFB::CFB()']]], @@ -12,7 +13,7 @@ var searchData= ['charwidth',['charWidth',['../classBitmap.html#a9b79ac13077ca865e4515510297780bd',1,'Bitmap']]], ['chaseleds',['ChaseLEDs',['../classChaseLEDs.html',1,'ChaseLEDs'],['../classChaseLEDs.html#ab6bb3da371d3730a6552e93a9b2eab78',1,'ChaseLEDs::ChaseLEDs()']]], ['cipher',['Cipher',['../classCipher.html',1,'Cipher'],['../classCipher.html#a6a61077eca3ccd5900f92ceac58fb09c',1,'Cipher::Cipher()']]], - ['clear',['clear',['../classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1',1,'Bitmap::clear()'],['../classAESCommon.html#a83e43f7d07e31d90fd7b768a93ecfce6',1,'AESCommon::clear()'],['../classBLAKE2b.html#a21623759bd381285ebf7e75a00c9c8a9',1,'BLAKE2b::clear()'],['../classBLAKE2s.html#a0848885f52df51dc53949d32a206e72d',1,'BLAKE2s::clear()'],['../classBlockCipher.html#a6f27d46e9dfa7761d014d828ad5f955b',1,'BlockCipher::clear()'],['../classCBCCommon.html#a7befadfe7384e0e857a96a59bf3845e9',1,'CBCCommon::clear()'],['../classCFBCommon.html#a847d320b0fe7f329385f26511b42c40d',1,'CFBCommon::clear()'],['../classChaCha.html#af533905f679066c41f4d6cd76bddb4cb',1,'ChaCha::clear()'],['../classCipher.html#a4b7c3965646441a70d9ab934a7c92ab1',1,'Cipher::clear()'],['../classCTRCommon.html#ac0d6381c02fe2a8a017ad66d006a6ef2',1,'CTRCommon::clear()'],['../classHash.html#a4a959469433cd9348ab7f3ac6228bb34',1,'Hash::clear()'],['../classOFBCommon.html#a55bf2396beb91c457bfc4c20ef5c8123',1,'OFBCommon::clear()'],['../classSHA1.html#a41a159d6565b04d3f620dcd720faaf3f',1,'SHA1::clear()'],['../classSHA256.html#add0d1649d533b27005ccd8508398c689',1,'SHA256::clear()'],['../classSHA512.html#a0a9104dce5f099aeba216e5fbcb1ee1a',1,'SHA512::clear()']]], + ['clear',['clear',['../classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1',1,'Bitmap::clear()'],['../classAESCommon.html#a83e43f7d07e31d90fd7b768a93ecfce6',1,'AESCommon::clear()'],['../classBLAKE2b.html#a21623759bd381285ebf7e75a00c9c8a9',1,'BLAKE2b::clear()'],['../classBLAKE2s.html#a0848885f52df51dc53949d32a206e72d',1,'BLAKE2s::clear()'],['../classBlockCipher.html#a6f27d46e9dfa7761d014d828ad5f955b',1,'BlockCipher::clear()'],['../classCBCCommon.html#a7befadfe7384e0e857a96a59bf3845e9',1,'CBCCommon::clear()'],['../classCFBCommon.html#a847d320b0fe7f329385f26511b42c40d',1,'CFBCommon::clear()'],['../classChaCha.html#af533905f679066c41f4d6cd76bddb4cb',1,'ChaCha::clear()'],['../classCipher.html#a4b7c3965646441a70d9ab934a7c92ab1',1,'Cipher::clear()'],['../classCTRCommon.html#ac0d6381c02fe2a8a017ad66d006a6ef2',1,'CTRCommon::clear()'],['../classHash.html#a4a959469433cd9348ab7f3ac6228bb34',1,'Hash::clear()'],['../classKeccakCore.html#aeff1df56e4a3103c99c1fe4307e60c66',1,'KeccakCore::clear()'],['../classOFBCommon.html#a55bf2396beb91c457bfc4c20ef5c8123',1,'OFBCommon::clear()'],['../classSHA1.html#a41a159d6565b04d3f620dcd720faaf3f',1,'SHA1::clear()'],['../classSHA256.html#add0d1649d533b27005ccd8508398c689',1,'SHA256::clear()'],['../classSHA3__256.html#a531467f995ef6fc901ad8c2b5776a8d1',1,'SHA3_256::clear()'],['../classSHA3__512.html#acfbc5e9b4d394f011d5132a2b156d260',1,'SHA3_512::clear()'],['../classSHA512.html#a0a9104dce5f099aeba216e5fbcb1ee1a',1,'SHA512::clear()']]], ['color',['Color',['../classBitmap.html#a88d386944a7017aa776a177b10d8b2ba',1,'Bitmap']]], ['command',['command',['../classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda',1,'IRreceiver']]], ['copy',['copy',['../classBitmap.html#ab22fe1f3871934987a670b559f67c67c',1,'Bitmap']]], diff --git a/search/all_4.js b/search/all_4.js index d39b6d33..fb190346 100644 --- a/search/all_4.js +++ b/search/all_4.js @@ -11,5 +11,6 @@ var searchData= ['endwrite',['endWrite',['../classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41',1,'I2CMaster::endWrite()'],['../classSoftI2C.html#aa12ae82813598b2e9ea70463c23c5bf3',1,'SoftI2C::endWrite()']]], ['enterfield',['enterField',['../classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09',1,'BoolField::enterField()'],['../classField.html#aa032bbeacb405c56546cb56fbbee94f5',1,'Field::enterField()'],['../classIntField.html#a51d9127b660e8dd7f87718acd230202a',1,'IntField::enterField()'],['../classListField.html#a191b79b460e45cf48e04b04eface2888',1,'ListField::enterField()'],['../classTextField.html#aa78f1354f9240b64fabd6f996e312f32',1,'TextField::enterField()'],['../classTimeField.html#ae914d6b870283a334d2d669460f7646b',1,'TimeField::enterField()']]], ['eval',['eval',['../classCurve25519.html#a2e4b7dd83a019b32c76584c99bfda21a',1,'Curve25519']]], - ['exitfield',['exitField',['../classField.html#ad6805c75ee1e62f8cd8bd550c4530c07',1,'Field::exitField()'],['../classTimeField.html#a5a6b7db2e3fda7745e0ff9c3d8d9a541',1,'TimeField::exitField()']]] + ['exitfield',['exitField',['../classField.html#ad6805c75ee1e62f8cd8bd550c4530c07',1,'Field::exitField()'],['../classTimeField.html#a5a6b7db2e3fda7745e0ff9c3d8d9a541',1,'TimeField::exitField()']]], + ['extract',['extract',['../classKeccakCore.html#aad83ece853c0cc15fcab947fdcba924f',1,'KeccakCore']]] ]; diff --git a/search/all_5.js b/search/all_5.js index 7dabd7d1..1019d471 100644 --- a/search/all_5.js +++ b/search/all_5.js @@ -3,7 +3,7 @@ var searchData= ['falselabel',['falseLabel',['../classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01',1,'BoolField']]], ['field',['Field',['../classField.html',1,'Field'],['../classField.html#ac4ea0d104376233c3f0bfc080ec8564e',1,'Field::Field(const String &label)'],['../classField.html#a7e2bdb203ddfd9219696f263c1731fe7',1,'Field::Field(Form &form, const String &label)']]], ['fill',['fill',['../classBitmap.html#a99da820f9280aace6b512801d5a5e2b2',1,'Bitmap::fill(int x, int y, int width, int height, Color color)'],['../classBitmap.html#ac661adab340858b541a2fe44e6303f56',1,'Bitmap::fill(int x, int y, int width, int height, Bitmap::ProgMem pattern, Color color=White)']]], - ['finalize',['finalize',['../classBLAKE2b.html#a0cd8146b7868bd0f4c24a3856f106d17',1,'BLAKE2b::finalize()'],['../classBLAKE2s.html#a751a3d772cbe1cd1dad83dbd09853b1b',1,'BLAKE2s::finalize()'],['../classHash.html#a09b3ccec22763fc86b1415695862977c',1,'Hash::finalize()'],['../classSHA1.html#a5a6a8a6169aa48e0bccadb22a149ab7c',1,'SHA1::finalize()'],['../classSHA256.html#a695157bcdf5495ba892ebac309f3abd6',1,'SHA256::finalize()'],['../classSHA512.html#afc136ad0e77de527b031db3fb8b32464',1,'SHA512::finalize()']]], + ['finalize',['finalize',['../classBLAKE2b.html#a0cd8146b7868bd0f4c24a3856f106d17',1,'BLAKE2b::finalize()'],['../classBLAKE2s.html#a751a3d772cbe1cd1dad83dbd09853b1b',1,'BLAKE2s::finalize()'],['../classHash.html#a09b3ccec22763fc86b1415695862977c',1,'Hash::finalize()'],['../classSHA1.html#a5a6a8a6169aa48e0bccadb22a149ab7c',1,'SHA1::finalize()'],['../classSHA256.html#a695157bcdf5495ba892ebac309f3abd6',1,'SHA256::finalize()'],['../classSHA3__256.html#a8fe7cad1f83bd1bae1a0d521324247a1',1,'SHA3_256::finalize()'],['../classSHA3__512.html#ac0227aafb5f047bb50f0bd84df0b4b5b',1,'SHA3_512::finalize()'],['../classSHA512.html#afc136ad0e77de527b031db3fb8b32464',1,'SHA512::finalize()']]], ['firedalarm',['firedAlarm',['../classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3',1,'DS3232RTC']]], ['flags',['flags',['../structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e',1,'RTCAlarm']]], ['font',['Font',['../classBitmap.html#a456f7d6da03189c1e7148563a891b3cf',1,'Bitmap::Font()'],['../classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c',1,'Bitmap::font() const ']]], diff --git a/search/all_7.js b/search/all_7.js index bc7bcf55..5acb81f2 100644 --- a/search/all_7.js +++ b/search/all_7.js @@ -2,7 +2,7 @@ var searchData= [ ['hash',['Hash',['../classHash.html',1,'Hash'],['../classHash.html#af482880ad75b67a09d2dcb5e86244d80',1,'Hash::Hash()']]], ['hashcore',['hashCore',['../classChaCha.html#a41ac3262e52ff49dcd916d0b3b2e2038',1,'ChaCha']]], - ['hashsize',['hashSize',['../classBLAKE2b.html#a7555de16f6918ab820170a7ed3098c89',1,'BLAKE2b::hashSize()'],['../classBLAKE2s.html#af9f50aac096f92ba27b1b2dd48df4c52',1,'BLAKE2s::hashSize()'],['../classHash.html#adcdd30de3e5ecaa2f798c0c5644d9ef8',1,'Hash::hashSize()'],['../classSHA1.html#ab8cdb7233a8b81be07877049960ddfdd',1,'SHA1::hashSize()'],['../classSHA256.html#a103d5bc5ced792464a82cb1d7986de94',1,'SHA256::hashSize()'],['../classSHA512.html#a6ab3cc1e172eecf4796e4cac629e0a44',1,'SHA512::hashSize()']]], + ['hashsize',['hashSize',['../classBLAKE2b.html#a7555de16f6918ab820170a7ed3098c89',1,'BLAKE2b::hashSize()'],['../classBLAKE2s.html#af9f50aac096f92ba27b1b2dd48df4c52',1,'BLAKE2s::hashSize()'],['../classHash.html#adcdd30de3e5ecaa2f798c0c5644d9ef8',1,'Hash::hashSize()'],['../classSHA1.html#ab8cdb7233a8b81be07877049960ddfdd',1,'SHA1::hashSize()'],['../classSHA256.html#a103d5bc5ced792464a82cb1d7986de94',1,'SHA256::hashSize()'],['../classSHA3__256.html#a2c5c08119d5ad853021f929a763784f3',1,'SHA3_256::hashSize()'],['../classSHA3__512.html#a9f13e4d2b99dd204e96b11142e9c1803',1,'SHA3_512::hashSize()'],['../classSHA512.html#a6ab3cc1e172eecf4796e4cac629e0a44',1,'SHA512::hashSize()']]], ['hasupdates',['hasUpdates',['../classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0',1,'DS1307RTC::hasUpdates()'],['../classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc',1,'DS3232RTC::hasUpdates()'],['../classRTC.html#a3690761f29654a2c9e676fcbfa32dd30',1,'RTC::hasUpdates()']]], ['height',['height',['../classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3',1,'Bitmap']]], ['hide',['hide',['../classForm.html#a88b9146a3f68e837c5e831203096f9e9',1,'Form']]], diff --git a/search/all_9.js b/search/all_9.js index 73611e16..0e0b10de 100644 --- a/search/all_9.js +++ b/search/all_9.js @@ -1,4 +1,5 @@ var searchData= [ + ['keccakcore',['KeccakCore',['../classKeccakCore.html',1,'KeccakCore'],['../classKeccakCore.html#a850c8e85bdb6b347411239716535d9c9',1,'KeccakCore::KeccakCore()']]], ['keysize',['keySize',['../classAES128.html#aa871832a156f0ea61b964e489670ae9d',1,'AES128::keySize()'],['../classAES192.html#ade28843e51e262b30eb55791c83fd791',1,'AES192::keySize()'],['../classAES256.html#af8ed6412bae6fc78274f60344899366a',1,'AES256::keySize()'],['../classBlockCipher.html#afde6004a859e015d877eab3c37042a0f',1,'BlockCipher::keySize()'],['../classCBCCommon.html#adb7daacfe2a4fca3d13b62b75372fe4e',1,'CBCCommon::keySize()'],['../classCFBCommon.html#a82899da983bc70bc8152ee67f424552e',1,'CFBCommon::keySize()'],['../classChaCha.html#af286083291fab2bd36dc7ad1f54d5cd7',1,'ChaCha::keySize()'],['../classCipher.html#a4cea432ea0278c865441f17cbb88b1ab',1,'Cipher::keySize()'],['../classCTRCommon.html#a29ce8e13a302350397fc6790a686bea2',1,'CTRCommon::keySize()'],['../classOFBCommon.html#a76ea9f9ea9dd137778338813e534a8ce',1,'OFBCommon::keySize()']]] ]; diff --git a/search/all_e.js b/search/all_e.js index 53d79781..411aa530 100644 --- a/search/all_e.js +++ b/search/all_e.js @@ -1,5 +1,6 @@ var searchData= [ + ['pad',['pad',['../classKeccakCore.html#a97852ee4381ced17ee6d21704cf0b4d7',1,'KeccakCore']]], ['pagesize',['pageSize',['../classEEPROM24.html#af33b23e2614f3966bbaf2554890c032a',1,'EEPROM24']]], ['pause',['pause',['../classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a',1,'BlinkLED']]], ['pixel',['pixel',['../classBitmap.html#a35aa38b377d509d6c4f061a0b988d203',1,'Bitmap']]], diff --git a/search/all_f.js b/search/all_f.js index d4b2f903..ecdabb72 100644 --- a/search/all_f.js +++ b/search/all_f.js @@ -11,7 +11,7 @@ var searchData= ['readtime',['readTime',['../classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6',1,'DS1307RTC::readTime()'],['../classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747',1,'DS3232RTC::readTime()'],['../classRTC.html#aaf0a5c1f32f210a49718d148620b5bec',1,'RTC::readTime()']]], ['refresh',['refresh',['../classCharlieplex.html#a3c961bfff866e400dad371f0376f096b',1,'Charlieplex::refresh()'],['../classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8',1,'DMD::refresh()']]], ['removefield',['removeField',['../classForm.html#a7abd717029f9b19ee7318470072cd697',1,'Form']]], - ['reset',['reset',['../classBLAKE2b.html#a917beae2ca6e9831a35717a526089e8a',1,'BLAKE2b::reset()'],['../classBLAKE2b.html#a9afd8ec05ccfa08a922de74461e45387',1,'BLAKE2b::reset(uint8_t outputLength)'],['../classBLAKE2s.html#a778776d15316c182fdb2df5a89b3ca02',1,'BLAKE2s::reset()'],['../classBLAKE2s.html#a91ba6bc39e42002ac61114ced1d0af6d',1,'BLAKE2s::reset(uint8_t outputLength)'],['../classHash.html#a7b94309acaa5f52386785fb780e5be61',1,'Hash::reset()'],['../classSHA1.html#ab71aaf39ed956320054861a2fbfa454f',1,'SHA1::reset()'],['../classSHA256.html#ad9d80d8fdccffb15497bd36285afce65',1,'SHA256::reset()'],['../classSHA512.html#a0d009e8d9157c3f14323e68631c33e97',1,'SHA512::reset()']]], + ['reset',['reset',['../classBLAKE2b.html#a917beae2ca6e9831a35717a526089e8a',1,'BLAKE2b::reset()'],['../classBLAKE2b.html#a9afd8ec05ccfa08a922de74461e45387',1,'BLAKE2b::reset(uint8_t outputLength)'],['../classBLAKE2s.html#a778776d15316c182fdb2df5a89b3ca02',1,'BLAKE2s::reset()'],['../classBLAKE2s.html#a91ba6bc39e42002ac61114ced1d0af6d',1,'BLAKE2s::reset(uint8_t outputLength)'],['../classHash.html#a7b94309acaa5f52386785fb780e5be61',1,'Hash::reset()'],['../classKeccakCore.html#a5a322eb7e3b5c1eaad127c9c6e6a529b',1,'KeccakCore::reset()'],['../classSHA1.html#ab71aaf39ed956320054861a2fbfa454f',1,'SHA1::reset()'],['../classSHA256.html#ad9d80d8fdccffb15497bd36285afce65',1,'SHA256::reset()'],['../classSHA3__256.html#a57b5f29347a733e04fe47d60621f3202',1,'SHA3_256::reset()'],['../classSHA3__512.html#a435746d5a8b012f7c65050337cc4a23f',1,'SHA3_512::reset()'],['../classSHA512.html#a0d009e8d9157c3f14323e68631c33e97',1,'SHA512::reset()']]], ['resume',['resume',['../classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252',1,'BlinkLED']]], ['rngclass',['RNGClass',['../classRNGClass.html',1,'RNGClass'],['../classRNGClass.html#acbcf327242f51ae2d9209aeaa45e30e9',1,'RNGClass::RNGClass()']]], ['rtc',['RTC',['../classRTC.html',1,'RTC'],['../classRTC.html#ada31c5120d18d2dd2863b3d440308da2',1,'RTC::RTC()']]], diff --git a/search/classes_8.js b/search/classes_8.js index cfd886c9..989a3982 100644 --- a/search/classes_8.js +++ b/search/classes_8.js @@ -1,5 +1,4 @@ var searchData= [ - ['lcd',['LCD',['../classLCD.html',1,'']]], - ['listfield',['ListField',['../classListField.html',1,'']]] + ['keccakcore',['KeccakCore',['../classKeccakCore.html',1,'']]] ]; diff --git a/search/classes_9.js b/search/classes_9.js index a6451ed5..cfd886c9 100644 --- a/search/classes_9.js +++ b/search/classes_9.js @@ -1,4 +1,5 @@ var searchData= [ - ['melody',['Melody',['../classMelody.html',1,'']]] + ['lcd',['LCD',['../classLCD.html',1,'']]], + ['listfield',['ListField',['../classListField.html',1,'']]] ]; diff --git a/search/classes_a.js b/search/classes_a.js index d53a9846..a6451ed5 100644 --- a/search/classes_a.js +++ b/search/classes_a.js @@ -1,4 +1,4 @@ var searchData= [ - ['noisesource',['NoiseSource',['../classNoiseSource.html',1,'']]] + ['melody',['Melody',['../classMelody.html',1,'']]] ]; diff --git a/search/classes_b.js b/search/classes_b.js index 8f9a8c0f..d53a9846 100644 --- a/search/classes_b.js +++ b/search/classes_b.js @@ -1,5 +1,4 @@ var searchData= [ - ['ofb',['OFB',['../classOFB.html',1,'']]], - ['ofbcommon',['OFBCommon',['../classOFBCommon.html',1,'']]] + ['noisesource',['NoiseSource',['../classNoiseSource.html',1,'']]] ]; diff --git a/search/classes_c.js b/search/classes_c.js index 1c19d004..8f9a8c0f 100644 --- a/search/classes_c.js +++ b/search/classes_c.js @@ -1,8 +1,5 @@ var searchData= [ - ['rngclass',['RNGClass',['../classRNGClass.html',1,'']]], - ['rtc',['RTC',['../classRTC.html',1,'']]], - ['rtcalarm',['RTCAlarm',['../structRTCAlarm.html',1,'']]], - ['rtcdate',['RTCDate',['../structRTCDate.html',1,'']]], - ['rtctime',['RTCTime',['../structRTCTime.html',1,'']]] + ['ofb',['OFB',['../classOFB.html',1,'']]], + ['ofbcommon',['OFBCommon',['../classOFBCommon.html',1,'']]] ]; diff --git a/search/classes_d.js b/search/classes_d.js index b471a0d9..1c19d004 100644 --- a/search/classes_d.js +++ b/search/classes_d.js @@ -1,7 +1,8 @@ var searchData= [ - ['sha1',['SHA1',['../classSHA1.html',1,'']]], - ['sha256',['SHA256',['../classSHA256.html',1,'']]], - ['sha512',['SHA512',['../classSHA512.html',1,'']]], - ['softi2c',['SoftI2C',['../classSoftI2C.html',1,'']]] + ['rngclass',['RNGClass',['../classRNGClass.html',1,'']]], + ['rtc',['RTC',['../classRTC.html',1,'']]], + ['rtcalarm',['RTCAlarm',['../structRTCAlarm.html',1,'']]], + ['rtcdate',['RTCDate',['../structRTCDate.html',1,'']]], + ['rtctime',['RTCTime',['../structRTCTime.html',1,'']]] ]; diff --git a/search/classes_e.js b/search/classes_e.js index 57d4c0cb..d9a1790a 100644 --- a/search/classes_e.js +++ b/search/classes_e.js @@ -1,6 +1,9 @@ var searchData= [ - ['textfield',['TextField',['../classTextField.html',1,'']]], - ['timefield',['TimeField',['../classTimeField.html',1,'']]], - ['transistornoisesource',['TransistorNoiseSource',['../classTransistorNoiseSource.html',1,'']]] + ['sha1',['SHA1',['../classSHA1.html',1,'']]], + ['sha256',['SHA256',['../classSHA256.html',1,'']]], + ['sha3_5f256',['SHA3_256',['../classSHA3__256.html',1,'']]], + ['sha3_5f512',['SHA3_512',['../classSHA3__512.html',1,'']]], + ['sha512',['SHA512',['../classSHA512.html',1,'']]], + ['softi2c',['SoftI2C',['../classSoftI2C.html',1,'']]] ]; diff --git a/search/classes_f.html b/search/classes_f.html new file mode 100644 index 00000000..cee523ad --- /dev/null +++ b/search/classes_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
          +
          Loading...
          +
          + +
          Searching...
          +
          No Matches
          + +
          + + diff --git a/search/classes_f.js b/search/classes_f.js new file mode 100644 index 00000000..57d4c0cb --- /dev/null +++ b/search/classes_f.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['textfield',['TextField',['../classTextField.html',1,'']]], + ['timefield',['TimeField',['../classTimeField.html',1,'']]], + ['transistornoisesource',['TransistorNoiseSource',['../classTransistorNoiseSource.html',1,'']]] +]; diff --git a/search/functions_1.js b/search/functions_1.js index e7717379..dd549ca9 100644 --- a/search/functions_1.js +++ b/search/functions_1.js @@ -8,7 +8,7 @@ var searchData= ['blake2s',['BLAKE2s',['../classBLAKE2s.html#a7345f4e08c19d7a8c278282b46df21a2',1,'BLAKE2s']]], ['blinkled',['BlinkLED',['../classBlinkLED.html#afc33958651e7ce6dceb428ea654c2c2f',1,'BlinkLED']]], ['blockcipher',['BlockCipher',['../classBlockCipher.html#adc3d7cba116cbea9ad017f4cded6fe2f',1,'BlockCipher']]], - ['blocksize',['blockSize',['../classAESCommon.html#ae26afdcc6d18e8888974acae16df1413',1,'AESCommon::blockSize()'],['../classBLAKE2b.html#abec1b2320c3afaed12a29cf081b95fe2',1,'BLAKE2b::blockSize()'],['../classBLAKE2s.html#a9b5403734c20a0591d72a98912e4a305',1,'BLAKE2s::blockSize()'],['../classBlockCipher.html#a7059a310487c128db034b0ce0ad425a0',1,'BlockCipher::blockSize()'],['../classHash.html#a4e4297812e3483410556830fe5d47bdf',1,'Hash::blockSize()'],['../classSHA1.html#a816e3fd1a02cf1ecc67866cd8c7c309a',1,'SHA1::blockSize()'],['../classSHA256.html#a71bbd9064f9d6191d0647f867953a858',1,'SHA256::blockSize()'],['../classSHA512.html#acf8b9bcb6be91ee70acc3700a2ffa1a1',1,'SHA512::blockSize()']]], + ['blocksize',['blockSize',['../classAESCommon.html#ae26afdcc6d18e8888974acae16df1413',1,'AESCommon::blockSize()'],['../classBLAKE2b.html#abec1b2320c3afaed12a29cf081b95fe2',1,'BLAKE2b::blockSize()'],['../classBLAKE2s.html#a9b5403734c20a0591d72a98912e4a305',1,'BLAKE2s::blockSize()'],['../classBlockCipher.html#a7059a310487c128db034b0ce0ad425a0',1,'BlockCipher::blockSize()'],['../classHash.html#a4e4297812e3483410556830fe5d47bdf',1,'Hash::blockSize()'],['../classKeccakCore.html#a3742ed39151811b5d1c263c75ee5b20a',1,'KeccakCore::blockSize()'],['../classSHA1.html#a816e3fd1a02cf1ecc67866cd8c7c309a',1,'SHA1::blockSize()'],['../classSHA256.html#a71bbd9064f9d6191d0647f867953a858',1,'SHA256::blockSize()'],['../classSHA3__256.html#a88a50ab6c2d4ad105cda2dd504d96e7c',1,'SHA3_256::blockSize()'],['../classSHA3__512.html#a4493a717bad8fa5cd35fe3aa36f25ab3',1,'SHA3_512::blockSize()'],['../classSHA512.html#acf8b9bcb6be91ee70acc3700a2ffa1a1',1,'SHA512::blockSize()']]], ['boolfield',['BoolField',['../classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998',1,'BoolField::BoolField(const String &label)'],['../classBoolField.html#a49aad212ed18f84baa105c24e86281d9',1,'BoolField::BoolField(Form &form, const String &label, const String &trueLabel, const String &falseLabel, bool value)']]], ['bytecount',['byteCount',['../classDS1307RTC.html#a93c25269a9b78ab3331354db26672248',1,'DS1307RTC::byteCount()'],['../classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e',1,'DS3232RTC::byteCount()'],['../classRTC.html#acfdebfb449710e44e11f9a3675e14fd8',1,'RTC::byteCount()']]] ]; diff --git a/search/functions_10.js b/search/functions_10.js index 8e8a59e2..6874eb94 100644 --- a/search/functions_10.js +++ b/search/functions_10.js @@ -8,6 +8,7 @@ var searchData= ['setbacklightpin',['setBacklightPin',['../classLCD.html#a0b9b3b954290e7a3d94cdc829582b0a8',1,'LCD']]], ['setblinkrate',['setBlinkRate',['../classBlinkLED.html#a47f95624881063aa91c0066ed2c92258',1,'BlinkLED']]], ['setblockcipher',['setBlockCipher',['../classCBCCommon.html#a0b7631244b0c2c954cfdb50eb32f7db1',1,'CBCCommon::setBlockCipher()'],['../classCFBCommon.html#a9161530f456efacb64f5008fdb1a460c',1,'CFBCommon::setBlockCipher()'],['../classCTRCommon.html#a6c409c4ec1f99e0cb751196d891dc228',1,'CTRCommon::setBlockCipher()'],['../classOFBCommon.html#a0053e2566a88859effffacbf1e4ade04',1,'OFBCommon::setBlockCipher()']]], + ['setcapacity',['setCapacity',['../classKeccakCore.html#ab3c1905f2002e49aca085d6f0b5546f7',1,'KeccakCore']]], ['setcounter',['setCounter',['../classChaCha.html#acab9109b7189ea88d9e5417a3a209eac',1,'ChaCha']]], ['setcountersize',['setCounterSize',['../classCTRCommon.html#ae2bc6b33a864412598b426320d853337',1,'CTRCommon']]], ['setcurrentfield',['setCurrentField',['../classForm.html#ae6004fedfa07191ffd47d7b12370b4e5',1,'Form']]], @@ -40,6 +41,8 @@ var searchData= ['setvalue',['setValue',['../classBoolField.html#a080c575fd4a98e6afc4b9197fbab5577',1,'BoolField::setValue()'],['../classIntField.html#aed421e2c52946f2c7643534b4f6f13f7',1,'IntField::setValue()'],['../classListField.html#a266193631e897fb0b46e1270b1d0eb24',1,'ListField::setValue()'],['../classTextField.html#a24b98c5bb744331bf0a5facc8ea9c033',1,'TextField::setValue()'],['../classTimeField.html#a063b6df2bd6fa7970ee445ab4e5d1fc1',1,'TimeField::setValue()']]], ['sha1',['SHA1',['../classSHA1.html#ad49a5108ffd6996b1133bf41224ff726',1,'SHA1']]], ['sha256',['SHA256',['../classSHA256.html#ab672831c542df07ff03ded25760feec2',1,'SHA256']]], + ['sha3_5f256',['SHA3_256',['../classSHA3__256.html#ac091b276c6d80a981fa64a9e8c68ca87',1,'SHA3_256']]], + ['sha3_5f512',['SHA3_512',['../classSHA3__512.html#a5f8bc4180e9d19597f499468098a82a4',1,'SHA3_512']]], ['sha512',['SHA512',['../classSHA512.html#a520d966d99c0008e3cc58bd3b77dafcd',1,'SHA512']]], ['show',['show',['../classForm.html#a9e8d718ab55a8034c22c606ccfa90d65',1,'Form']]], ['size',['size',['../classEEPROM24.html#aa544875cef9bd05bf71d6c19be06cf7c',1,'EEPROM24']]], diff --git a/search/functions_12.js b/search/functions_12.js index 2efbaec1..4d6b3005 100644 --- a/search/functions_12.js +++ b/search/functions_12.js @@ -1,6 +1,6 @@ var searchData= [ ['unusedpin',['unusedPin',['../group__power__save.html#ga6dbe8e20a70e83cf5b068177675ec792',1,'PowerSave.h']]], - ['update',['update',['../classBLAKE2b.html#a468e48c66ce1738e11c922d133135069',1,'BLAKE2b::update()'],['../classBLAKE2s.html#aa192da2fa044b03cccaf11e87fdf9911',1,'BLAKE2s::update()'],['../classHash.html#aec9761ee427d122e7450de8df200265c',1,'Hash::update()'],['../classSHA1.html#aec77fbc5015f82bbf7055e535085656a',1,'SHA1::update()'],['../classSHA256.html#a555bf8efb17afd4842d2e55a1f39f27b',1,'SHA256::update()'],['../classSHA512.html#a7d37a20d7ab431ab15d094f768b6a695',1,'SHA512::update()']]], + ['update',['update',['../classBLAKE2b.html#a468e48c66ce1738e11c922d133135069',1,'BLAKE2b::update()'],['../classBLAKE2s.html#aa192da2fa044b03cccaf11e87fdf9911',1,'BLAKE2s::update()'],['../classHash.html#aec9761ee427d122e7450de8df200265c',1,'Hash::update()'],['../classKeccakCore.html#aaaa0355ccec0f469ac8eb577bdf853ed',1,'KeccakCore::update()'],['../classSHA1.html#aec77fbc5015f82bbf7055e535085656a',1,'SHA1::update()'],['../classSHA256.html#a555bf8efb17afd4842d2e55a1f39f27b',1,'SHA256::update()'],['../classSHA3__256.html#a8356957ea403c5da326fc6899b91ea71',1,'SHA3_256::update()'],['../classSHA3__512.html#a0563e4c87150e6019671b4fe92fd63a4',1,'SHA3_512::update()'],['../classSHA512.html#a7d37a20d7ab431ab15d094f768b6a695',1,'SHA512::update()']]], ['updatecursor',['updateCursor',['../classField.html#afc612378167be0e7f8a6f8395b3537bd',1,'Field']]] ]; diff --git a/search/functions_15.js b/search/functions_15.js index de0f4c80..4bc2b6bb 100644 --- a/search/functions_15.js +++ b/search/functions_15.js @@ -13,10 +13,13 @@ var searchData= ['_7efield',['~Field',['../classField.html#a45d6e6d09b8f8e46de62b40119d62c60',1,'Field']]], ['_7eform',['~Form',['../classForm.html#a9cda7cce41e81bfaca51e922d4f9b98f',1,'Form']]], ['_7ehash',['~Hash',['../classHash.html#a4e4b4797dda8678aaed058bae155813e',1,'Hash']]], + ['_7ekeccakcore',['~KeccakCore',['../classKeccakCore.html#a4579e3a9b24f1d615fa8d660c23e77a4',1,'KeccakCore']]], ['_7enoisesource',['~NoiseSource',['../classNoiseSource.html#a4eca1e894a5d719fb9bf4df34a791cdb',1,'NoiseSource']]], ['_7eofbcommon',['~OFBCommon',['../classOFBCommon.html#aae7435157e51bf977d3481e94e17ae01',1,'OFBCommon']]], ['_7erngclass',['~RNGClass',['../classRNGClass.html#aef3ee2fb14a39caf650dc90a0226dd31',1,'RNGClass']]], ['_7esha1',['~SHA1',['../classSHA1.html#a8485d7c14fa29286cd3c7acfe438606d',1,'SHA1']]], ['_7esha256',['~SHA256',['../classSHA256.html#ad82f2925b612de315b289017e023a73b',1,'SHA256']]], + ['_7esha3_5f256',['~SHA3_256',['../classSHA3__256.html#a835d09eb88d477cd162330c493cbdf64',1,'SHA3_256']]], + ['_7esha3_5f512',['~SHA3_512',['../classSHA3__512.html#a327005ebc8c0768118ec7d334c583f85',1,'SHA3_512']]], ['_7esha512',['~SHA512',['../classSHA512.html#a777ec274fa838684b0208369c5f66391',1,'SHA512']]] ]; diff --git a/search/functions_2.js b/search/functions_2.js index ab3d11a9..e94de98b 100644 --- a/search/functions_2.js +++ b/search/functions_2.js @@ -1,6 +1,7 @@ var searchData= [ ['calibrating',['calibrating',['../classNoiseSource.html#ac8ac086f830efb5ffe3e8d506aa61c85',1,'NoiseSource::calibrating()'],['../classTransistorNoiseSource.html#a9244b327c291c737396e769da9c66af9',1,'TransistorNoiseSource::calibrating()']]], + ['capacity',['capacity',['../classKeccakCore.html#a804b895121a4e04bc491f41a5821a13e',1,'KeccakCore']]], ['cbc',['CBC',['../classCBC.html#ae22d0d9347d5f3c97328e643a9b29ecb',1,'CBC']]], ['cbccommon',['CBCCommon',['../classCBCCommon.html#a7575b369910e05f54e76698dd04bfa05',1,'CBCCommon']]], ['cfb',['CFB',['../classCFB.html#a26a027614d027162c67085a58b512318',1,'CFB']]], @@ -10,7 +11,7 @@ var searchData= ['charwidth',['charWidth',['../classBitmap.html#a9b79ac13077ca865e4515510297780bd',1,'Bitmap']]], ['chaseleds',['ChaseLEDs',['../classChaseLEDs.html#ab6bb3da371d3730a6552e93a9b2eab78',1,'ChaseLEDs']]], ['cipher',['Cipher',['../classCipher.html#a6a61077eca3ccd5900f92ceac58fb09c',1,'Cipher']]], - ['clear',['clear',['../classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1',1,'Bitmap::clear()'],['../classAESCommon.html#a83e43f7d07e31d90fd7b768a93ecfce6',1,'AESCommon::clear()'],['../classBLAKE2b.html#a21623759bd381285ebf7e75a00c9c8a9',1,'BLAKE2b::clear()'],['../classBLAKE2s.html#a0848885f52df51dc53949d32a206e72d',1,'BLAKE2s::clear()'],['../classBlockCipher.html#a6f27d46e9dfa7761d014d828ad5f955b',1,'BlockCipher::clear()'],['../classCBCCommon.html#a7befadfe7384e0e857a96a59bf3845e9',1,'CBCCommon::clear()'],['../classCFBCommon.html#a847d320b0fe7f329385f26511b42c40d',1,'CFBCommon::clear()'],['../classChaCha.html#af533905f679066c41f4d6cd76bddb4cb',1,'ChaCha::clear()'],['../classCipher.html#a4b7c3965646441a70d9ab934a7c92ab1',1,'Cipher::clear()'],['../classCTRCommon.html#ac0d6381c02fe2a8a017ad66d006a6ef2',1,'CTRCommon::clear()'],['../classHash.html#a4a959469433cd9348ab7f3ac6228bb34',1,'Hash::clear()'],['../classOFBCommon.html#a55bf2396beb91c457bfc4c20ef5c8123',1,'OFBCommon::clear()'],['../classSHA1.html#a41a159d6565b04d3f620dcd720faaf3f',1,'SHA1::clear()'],['../classSHA256.html#add0d1649d533b27005ccd8508398c689',1,'SHA256::clear()'],['../classSHA512.html#a0a9104dce5f099aeba216e5fbcb1ee1a',1,'SHA512::clear()']]], + ['clear',['clear',['../classBitmap.html#a839dc8fab05a5ebf7a6b2e61436b2fa1',1,'Bitmap::clear()'],['../classAESCommon.html#a83e43f7d07e31d90fd7b768a93ecfce6',1,'AESCommon::clear()'],['../classBLAKE2b.html#a21623759bd381285ebf7e75a00c9c8a9',1,'BLAKE2b::clear()'],['../classBLAKE2s.html#a0848885f52df51dc53949d32a206e72d',1,'BLAKE2s::clear()'],['../classBlockCipher.html#a6f27d46e9dfa7761d014d828ad5f955b',1,'BlockCipher::clear()'],['../classCBCCommon.html#a7befadfe7384e0e857a96a59bf3845e9',1,'CBCCommon::clear()'],['../classCFBCommon.html#a847d320b0fe7f329385f26511b42c40d',1,'CFBCommon::clear()'],['../classChaCha.html#af533905f679066c41f4d6cd76bddb4cb',1,'ChaCha::clear()'],['../classCipher.html#a4b7c3965646441a70d9ab934a7c92ab1',1,'Cipher::clear()'],['../classCTRCommon.html#ac0d6381c02fe2a8a017ad66d006a6ef2',1,'CTRCommon::clear()'],['../classHash.html#a4a959469433cd9348ab7f3ac6228bb34',1,'Hash::clear()'],['../classKeccakCore.html#aeff1df56e4a3103c99c1fe4307e60c66',1,'KeccakCore::clear()'],['../classOFBCommon.html#a55bf2396beb91c457bfc4c20ef5c8123',1,'OFBCommon::clear()'],['../classSHA1.html#a41a159d6565b04d3f620dcd720faaf3f',1,'SHA1::clear()'],['../classSHA256.html#add0d1649d533b27005ccd8508398c689',1,'SHA256::clear()'],['../classSHA3__256.html#a531467f995ef6fc901ad8c2b5776a8d1',1,'SHA3_256::clear()'],['../classSHA3__512.html#acfbc5e9b4d394f011d5132a2b156d260',1,'SHA3_512::clear()'],['../classSHA512.html#a0a9104dce5f099aeba216e5fbcb1ee1a',1,'SHA512::clear()']]], ['command',['command',['../classIRreceiver.html#a4b021592a2b089dc2f1e138a38506fda',1,'IRreceiver']]], ['copy',['copy',['../classBitmap.html#ab22fe1f3871934987a670b559f67c67c',1,'Bitmap']]], ['count',['count',['../classCharlieplex.html#a5008aa4143d381ce34a3aed1a3843e4e',1,'Charlieplex']]], diff --git a/search/functions_4.js b/search/functions_4.js index 5c5eab57..c1f6b0e9 100644 --- a/search/functions_4.js +++ b/search/functions_4.js @@ -11,5 +11,6 @@ var searchData= ['endwrite',['endWrite',['../classI2CMaster.html#ab29f63551ddeb032a91505d1c0b8ac41',1,'I2CMaster::endWrite()'],['../classSoftI2C.html#aa12ae82813598b2e9ea70463c23c5bf3',1,'SoftI2C::endWrite()']]], ['enterfield',['enterField',['../classBoolField.html#ab3f1e610b52caed7e41016f6ae3d7d09',1,'BoolField::enterField()'],['../classField.html#aa032bbeacb405c56546cb56fbbee94f5',1,'Field::enterField()'],['../classIntField.html#a51d9127b660e8dd7f87718acd230202a',1,'IntField::enterField()'],['../classListField.html#a191b79b460e45cf48e04b04eface2888',1,'ListField::enterField()'],['../classTextField.html#aa78f1354f9240b64fabd6f996e312f32',1,'TextField::enterField()'],['../classTimeField.html#ae914d6b870283a334d2d669460f7646b',1,'TimeField::enterField()']]], ['eval',['eval',['../classCurve25519.html#a2e4b7dd83a019b32c76584c99bfda21a',1,'Curve25519']]], - ['exitfield',['exitField',['../classField.html#ad6805c75ee1e62f8cd8bd550c4530c07',1,'Field::exitField()'],['../classTimeField.html#a5a6b7db2e3fda7745e0ff9c3d8d9a541',1,'TimeField::exitField()']]] + ['exitfield',['exitField',['../classField.html#ad6805c75ee1e62f8cd8bd550c4530c07',1,'Field::exitField()'],['../classTimeField.html#a5a6b7db2e3fda7745e0ff9c3d8d9a541',1,'TimeField::exitField()']]], + ['extract',['extract',['../classKeccakCore.html#aad83ece853c0cc15fcab947fdcba924f',1,'KeccakCore']]] ]; diff --git a/search/functions_5.js b/search/functions_5.js index 2189e82b..e119aa1d 100644 --- a/search/functions_5.js +++ b/search/functions_5.js @@ -3,7 +3,7 @@ var searchData= ['falselabel',['falseLabel',['../classBoolField.html#a59ad7a8a33290bda0d9fbb3df4f09b01',1,'BoolField']]], ['field',['Field',['../classField.html#ac4ea0d104376233c3f0bfc080ec8564e',1,'Field::Field(const String &label)'],['../classField.html#a7e2bdb203ddfd9219696f263c1731fe7',1,'Field::Field(Form &form, const String &label)']]], ['fill',['fill',['../classBitmap.html#a99da820f9280aace6b512801d5a5e2b2',1,'Bitmap::fill(int x, int y, int width, int height, Color color)'],['../classBitmap.html#ac661adab340858b541a2fe44e6303f56',1,'Bitmap::fill(int x, int y, int width, int height, Bitmap::ProgMem pattern, Color color=White)']]], - ['finalize',['finalize',['../classBLAKE2b.html#a0cd8146b7868bd0f4c24a3856f106d17',1,'BLAKE2b::finalize()'],['../classBLAKE2s.html#a751a3d772cbe1cd1dad83dbd09853b1b',1,'BLAKE2s::finalize()'],['../classHash.html#a09b3ccec22763fc86b1415695862977c',1,'Hash::finalize()'],['../classSHA1.html#a5a6a8a6169aa48e0bccadb22a149ab7c',1,'SHA1::finalize()'],['../classSHA256.html#a695157bcdf5495ba892ebac309f3abd6',1,'SHA256::finalize()'],['../classSHA512.html#afc136ad0e77de527b031db3fb8b32464',1,'SHA512::finalize()']]], + ['finalize',['finalize',['../classBLAKE2b.html#a0cd8146b7868bd0f4c24a3856f106d17',1,'BLAKE2b::finalize()'],['../classBLAKE2s.html#a751a3d772cbe1cd1dad83dbd09853b1b',1,'BLAKE2s::finalize()'],['../classHash.html#a09b3ccec22763fc86b1415695862977c',1,'Hash::finalize()'],['../classSHA1.html#a5a6a8a6169aa48e0bccadb22a149ab7c',1,'SHA1::finalize()'],['../classSHA256.html#a695157bcdf5495ba892ebac309f3abd6',1,'SHA256::finalize()'],['../classSHA3__256.html#a8fe7cad1f83bd1bae1a0d521324247a1',1,'SHA3_256::finalize()'],['../classSHA3__512.html#ac0227aafb5f047bb50f0bd84df0b4b5b',1,'SHA3_512::finalize()'],['../classSHA512.html#afc136ad0e77de527b031db3fb8b32464',1,'SHA512::finalize()']]], ['firedalarm',['firedAlarm',['../classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3',1,'DS3232RTC']]], ['font',['font',['../classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c',1,'Bitmap']]], ['form',['Form',['../classForm.html#ad30836b22edde707a52d94090b716996',1,'Form::Form()'],['../classField.html#a27427319be1cc92db3128637d8884ee5',1,'Field::form()']]], diff --git a/search/functions_7.js b/search/functions_7.js index df210dc5..a64ae580 100644 --- a/search/functions_7.js +++ b/search/functions_7.js @@ -2,7 +2,7 @@ var searchData= [ ['hash',['Hash',['../classHash.html#af482880ad75b67a09d2dcb5e86244d80',1,'Hash']]], ['hashcore',['hashCore',['../classChaCha.html#a41ac3262e52ff49dcd916d0b3b2e2038',1,'ChaCha']]], - ['hashsize',['hashSize',['../classBLAKE2b.html#a7555de16f6918ab820170a7ed3098c89',1,'BLAKE2b::hashSize()'],['../classBLAKE2s.html#af9f50aac096f92ba27b1b2dd48df4c52',1,'BLAKE2s::hashSize()'],['../classHash.html#adcdd30de3e5ecaa2f798c0c5644d9ef8',1,'Hash::hashSize()'],['../classSHA1.html#ab8cdb7233a8b81be07877049960ddfdd',1,'SHA1::hashSize()'],['../classSHA256.html#a103d5bc5ced792464a82cb1d7986de94',1,'SHA256::hashSize()'],['../classSHA512.html#a6ab3cc1e172eecf4796e4cac629e0a44',1,'SHA512::hashSize()']]], + ['hashsize',['hashSize',['../classBLAKE2b.html#a7555de16f6918ab820170a7ed3098c89',1,'BLAKE2b::hashSize()'],['../classBLAKE2s.html#af9f50aac096f92ba27b1b2dd48df4c52',1,'BLAKE2s::hashSize()'],['../classHash.html#adcdd30de3e5ecaa2f798c0c5644d9ef8',1,'Hash::hashSize()'],['../classSHA1.html#ab8cdb7233a8b81be07877049960ddfdd',1,'SHA1::hashSize()'],['../classSHA256.html#a103d5bc5ced792464a82cb1d7986de94',1,'SHA256::hashSize()'],['../classSHA3__256.html#a2c5c08119d5ad853021f929a763784f3',1,'SHA3_256::hashSize()'],['../classSHA3__512.html#a9f13e4d2b99dd204e96b11142e9c1803',1,'SHA3_512::hashSize()'],['../classSHA512.html#a6ab3cc1e172eecf4796e4cac629e0a44',1,'SHA512::hashSize()']]], ['hasupdates',['hasUpdates',['../classDS1307RTC.html#a6fec8ff71f33cc1a129eb0bd009600b0',1,'DS1307RTC::hasUpdates()'],['../classDS3232RTC.html#a619ffee1bc013c9ddf4ae415115798bc',1,'DS3232RTC::hasUpdates()'],['../classRTC.html#a3690761f29654a2c9e676fcbfa32dd30',1,'RTC::hasUpdates()']]], ['height',['height',['../classBitmap.html#adcd4e3dc7594421e647b0f52da9a41a3',1,'Bitmap']]], ['hide',['hide',['../classForm.html#a88b9146a3f68e837c5e831203096f9e9',1,'Form']]], diff --git a/search/functions_9.js b/search/functions_9.js index 73611e16..5ac1c729 100644 --- a/search/functions_9.js +++ b/search/functions_9.js @@ -1,4 +1,5 @@ var searchData= [ + ['keccakcore',['KeccakCore',['../classKeccakCore.html#a850c8e85bdb6b347411239716535d9c9',1,'KeccakCore']]], ['keysize',['keySize',['../classAES128.html#aa871832a156f0ea61b964e489670ae9d',1,'AES128::keySize()'],['../classAES192.html#ade28843e51e262b30eb55791c83fd791',1,'AES192::keySize()'],['../classAES256.html#af8ed6412bae6fc78274f60344899366a',1,'AES256::keySize()'],['../classBlockCipher.html#afde6004a859e015d877eab3c37042a0f',1,'BlockCipher::keySize()'],['../classCBCCommon.html#adb7daacfe2a4fca3d13b62b75372fe4e',1,'CBCCommon::keySize()'],['../classCFBCommon.html#a82899da983bc70bc8152ee67f424552e',1,'CFBCommon::keySize()'],['../classChaCha.html#af286083291fab2bd36dc7ad1f54d5cd7',1,'ChaCha::keySize()'],['../classCipher.html#a4cea432ea0278c865441f17cbb88b1ab',1,'Cipher::keySize()'],['../classCTRCommon.html#a29ce8e13a302350397fc6790a686bea2',1,'CTRCommon::keySize()'],['../classOFBCommon.html#a76ea9f9ea9dd137778338813e534a8ce',1,'OFBCommon::keySize()']]] ]; diff --git a/search/functions_e.js b/search/functions_e.js index 7b395f0a..dfb73127 100644 --- a/search/functions_e.js +++ b/search/functions_e.js @@ -1,5 +1,6 @@ var searchData= [ + ['pad',['pad',['../classKeccakCore.html#a97852ee4381ced17ee6d21704cf0b4d7',1,'KeccakCore']]], ['pagesize',['pageSize',['../classEEPROM24.html#af33b23e2614f3966bbaf2554890c032a',1,'EEPROM24']]], ['pause',['pause',['../classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a',1,'BlinkLED']]], ['pixel',['pixel',['../classBitmap.html#a35aa38b377d509d6c4f061a0b988d203',1,'Bitmap']]], diff --git a/search/functions_f.js b/search/functions_f.js index 4d9154cc..874a2fee 100644 --- a/search/functions_f.js +++ b/search/functions_f.js @@ -10,7 +10,7 @@ var searchData= ['readtime',['readTime',['../classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6',1,'DS1307RTC::readTime()'],['../classDS3232RTC.html#af89e68c68f1c4b7e94286f800b5b2747',1,'DS3232RTC::readTime()'],['../classRTC.html#aaf0a5c1f32f210a49718d148620b5bec',1,'RTC::readTime()']]], ['refresh',['refresh',['../classCharlieplex.html#a3c961bfff866e400dad371f0376f096b',1,'Charlieplex::refresh()'],['../classDMD.html#a9e4bf2a9d247312d35c1401ff61261c8',1,'DMD::refresh()']]], ['removefield',['removeField',['../classForm.html#a7abd717029f9b19ee7318470072cd697',1,'Form']]], - ['reset',['reset',['../classBLAKE2b.html#a917beae2ca6e9831a35717a526089e8a',1,'BLAKE2b::reset()'],['../classBLAKE2b.html#a9afd8ec05ccfa08a922de74461e45387',1,'BLAKE2b::reset(uint8_t outputLength)'],['../classBLAKE2s.html#a778776d15316c182fdb2df5a89b3ca02',1,'BLAKE2s::reset()'],['../classBLAKE2s.html#a91ba6bc39e42002ac61114ced1d0af6d',1,'BLAKE2s::reset(uint8_t outputLength)'],['../classHash.html#a7b94309acaa5f52386785fb780e5be61',1,'Hash::reset()'],['../classSHA1.html#ab71aaf39ed956320054861a2fbfa454f',1,'SHA1::reset()'],['../classSHA256.html#ad9d80d8fdccffb15497bd36285afce65',1,'SHA256::reset()'],['../classSHA512.html#a0d009e8d9157c3f14323e68631c33e97',1,'SHA512::reset()']]], + ['reset',['reset',['../classBLAKE2b.html#a917beae2ca6e9831a35717a526089e8a',1,'BLAKE2b::reset()'],['../classBLAKE2b.html#a9afd8ec05ccfa08a922de74461e45387',1,'BLAKE2b::reset(uint8_t outputLength)'],['../classBLAKE2s.html#a778776d15316c182fdb2df5a89b3ca02',1,'BLAKE2s::reset()'],['../classBLAKE2s.html#a91ba6bc39e42002ac61114ced1d0af6d',1,'BLAKE2s::reset(uint8_t outputLength)'],['../classHash.html#a7b94309acaa5f52386785fb780e5be61',1,'Hash::reset()'],['../classKeccakCore.html#a5a322eb7e3b5c1eaad127c9c6e6a529b',1,'KeccakCore::reset()'],['../classSHA1.html#ab71aaf39ed956320054861a2fbfa454f',1,'SHA1::reset()'],['../classSHA256.html#ad9d80d8fdccffb15497bd36285afce65',1,'SHA256::reset()'],['../classSHA3__256.html#a57b5f29347a733e04fe47d60621f3202',1,'SHA3_256::reset()'],['../classSHA3__512.html#a435746d5a8b012f7c65050337cc4a23f',1,'SHA3_512::reset()'],['../classSHA512.html#a0d009e8d9157c3f14323e68631c33e97',1,'SHA512::reset()']]], ['resume',['resume',['../classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252',1,'BlinkLED']]], ['rngclass',['RNGClass',['../classRNGClass.html#acbcf327242f51ae2d9209aeaa45e30e9',1,'RNGClass']]], ['rtc',['RTC',['../classRTC.html#ada31c5120d18d2dd2863b3d440308da2',1,'RTC']]], diff --git a/search/search.js b/search/search.js index c4bdabff..95cbf848 100644 --- a/search/search.js +++ b/search/search.js @@ -8,7 +8,7 @@ var indexSectionsWithContent = { 0: "abcdefghiklmnoprstuvwy~", - 1: "abcdefhilmnorst", + 1: "abcdefhiklmnorst", 2: "abcdilm", 3: "abcdefghiklmnoprstuvw~", 4: "abdfhimnswy", diff --git a/structRTCAlarm.html b/structRTCAlarm.html index ed3200d7..ad2b7f41 100644 --- a/structRTCAlarm.html +++ b/structRTCAlarm.html @@ -140,7 +140,7 @@ uint8_t  diff --git a/structRTCDate.html b/structRTCDate.html index f9c096b9..bbb3c31f 100644 --- a/structRTCDate.html +++ b/structRTCDate.html @@ -123,7 +123,7 @@ uint8_t  diff --git a/structRTCTime.html b/structRTCTime.html index 3684ba89..369b7855 100644 --- a/structRTCTime.html +++ b/structRTCTime.html @@ -123,7 +123,7 @@ uint8_t