From 95a162cdfd5d2d94f09e4a93f35910aeed2a2cde Mon Sep 17 00:00:00 2001 From: Rhys Weatherley Date: Wed, 1 Apr 2015 16:36:21 +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 +- AuthenticatedCipher_8cpp_source.html | 133 ++++ AuthenticatedCipher_8h_source.html | 149 ++++ BLAKE2b_8cpp_source.html | 2 +- BLAKE2b_8h_source.html | 2 +- BLAKE2s_8cpp_source.html | 2 +- BLAKE2s_8h_source.html | 2 +- BigNumberUtil_8h_source.html | 150 ++++ 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 +- ChaChaPoly_8cpp_source.html | 270 +++++++ ChaChaPoly_8h_source.html | 181 +++++ ChaCha_8cpp_source.html | 123 ++-- ChaCha_8h_source.html | 77 +- 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 | 13 +- Crypto_8h_source.html | 6 +- Curve25519_8cpp_source.html | 22 +- Curve25519_8h_source.html | 111 ++- DMD_8cpp_source.html | 2 +- DMD_8h_source.html | 2 +- DS1307RTC_8cpp_source.html | 2 +- DS1307RTC_8h_source.html | 2 +- DS3231RTC_8cpp_source.html | 2 +- DS3231RTC_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 +- GCM_8cpp_source.html | 360 ++++++++++ GCM_8h_source.html | 199 ++++++ GHASH_8cpp_source.html | 247 +++++++ GHASH_8h_source.html | 160 +++++ 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 | 2 +- KeccakCore_8h_source.html | 2 +- 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 +- Poly1305_8cpp_source.html | 361 ++++++++++ Poly1305_8h_source.html | 162 +++++ PowerSave_8cpp_source.html | 2 +- PowerSave_8h_source.html | 2 +- RC5_8h_source.html | 2 +- RNG_8cpp_source.html | 4 +- RNG_8h_source.html | 2 +- RTC_8cpp_source.html | 2 +- RTC_8h_source.html | 2 +- RingOscillatorNoiseSource_8cpp_source.html | 2 +- RingOscillatorNoiseSource_8h_source.html | 2 +- SHA1_8cpp_source.html | 2 +- SHA1_8h_source.html | 2 +- SHA256_8cpp_source.html | 2 +- SHA256_8h_source.html | 2 +- SHA3_8cpp_source.html | 2 +- SHA3_8h_source.html | 2 +- SHA512_8cpp_source.html | 2 +- SHA512_8h_source.html | 2 +- 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 | 108 +-- 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 +- classAuthenticatedCipher-members.html | 116 +++ classAuthenticatedCipher.html | 357 ++++++++++ classAuthenticatedCipher.png | Bin 0 -> 1255 bytes classBLAKE2b-members.html | 2 +- classBLAKE2b.html | 2 +- classBLAKE2s-members.html | 2 +- classBLAKE2s.html | 2 +- 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 | 31 +- classChaCha.html | 19 +- classChaChaPoly-members.html | 123 ++++ classChaChaPoly.html | 673 ++++++++++++++++++ classChaChaPoly.png | Bin 0 -> 714 bytes classCharlieplex-members.html | 2 +- classCharlieplex.html | 2 +- classChaseLEDs-members.html | 2 +- classChaseLEDs.html | 2 +- classCipher-members.html | 2 +- classCipher.html | 38 +- classCipher.png | Bin 1601 -> 3140 bytes classCurve25519-members.html | 2 +- classCurve25519.html | 4 +- classDMD-members.html | 2 +- classDMD.html | 2 +- classDS1307RTC-members.html | 2 +- classDS1307RTC.html | 2 +- classDS3231RTC-members.html | 2 +- classDS3231RTC.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 +- classGCM-members.html | 127 ++++ classGCM.html | 231 ++++++ classGCM.png | Bin 0 -> 876 bytes classGCMCommon-members.html | 126 ++++ classGCMCommon.html | 744 ++++++++++++++++++++ classGCMCommon.png | Bin 0 -> 880 bytes classGHASH-members.html | 111 +++ classGHASH.html | 273 +++++++ classHash-members.html | 2 +- classHash.html | 2 +- classI2CMaster-members.html | 2 +- classI2CMaster.html | 2 +- classIRreceiver-members.html | 2 +- classIRreceiver.html | 2 +- classIntField-members.html | 2 +- classIntField.html | 2 +- classKeccakCore-members.html | 2 +- classKeccakCore.html | 2 +- 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 +- classPoly1305-members.html | 113 +++ classPoly1305.html | 288 ++++++++ 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 +- classRingOscillatorNoiseSource-members.html | 2 +- classRingOscillatorNoiseSource.html | 2 +- classSHA1-members.html | 2 +- classSHA1.html | 2 +- classSHA256-members.html | 2 +- classSHA256.html | 2 +- classSHA3__256-members.html | 2 +- classSHA3__256.html | 2 +- classSHA3__512-members.html | 2 +- classSHA3__512.html | 2 +- classSHA512-members.html | 2 +- classSHA512.html | 2 +- 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 | 67 +- crypto-rng-ring_8dox.html | 2 +- crypto-rng_8dox.html | 2 +- crypto.html | 54 +- crypto_8dox.html | 2 +- crypto_rng.html | 2 +- crypto_rng_ring.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 | 24 +- 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 | 199 +++--- functions.html | 10 +- functions_b.html | 2 +- functions_c.html | 19 +- functions_d.html | 10 +- functions_e.html | 4 +- functions_enum.html | 2 +- functions_eval.html | 2 +- functions_f.html | 10 +- functions_func.html | 10 +- functions_func_b.html | 2 +- functions_func_c.html | 19 +- functions_func_d.html | 6 +- functions_func_e.html | 4 +- functions_func_f.html | 4 +- functions_func_g.html | 11 +- functions_func_h.html | 2 +- functions_func_i.html | 4 +- functions_func_k.html | 4 +- functions_func_l.html | 4 +- functions_func_m.html | 2 +- functions_func_n.html | 2 +- functions_func_o.html | 2 +- functions_func_p.html | 9 +- functions_func_r.html | 4 +- functions_func_s.html | 7 +- functions_func_t.html | 9 +- functions_func_u.html | 4 +- functions_func_v.html | 2 +- functions_func_w.html | 2 +- functions_func_~.html | 17 +- functions_g.html | 11 +- functions_h.html | 2 +- functions_i.html | 4 +- functions_k.html | 4 +- functions_l.html | 4 +- functions_m.html | 2 +- functions_n.html | 2 +- functions_o.html | 2 +- functions_p.html | 9 +- functions_r.html | 4 +- functions_s.html | 7 +- functions_t.html | 9 +- functions_type.html | 2 +- functions_u.html | 4 +- functions_v.html | 2 +- functions_vars.html | 2 +- functions_w.html | 2 +- functions_y.html | 2 +- functions_~.html | 17 +- group__power__save.html | 2 +- hierarchy.html | 80 ++- index.html | 6 +- 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_0.js | 2 + search/all_10.js | 6 +- search/all_11.js | 1 + search/all_12.js | 2 +- search/all_16.js | 5 + search/all_2.js | 5 +- search/all_3.js | 2 +- search/all_4.js | 2 +- search/all_5.js | 4 +- search/all_6.js | 5 +- search/all_8.js | 2 +- search/all_9.js | 2 +- search/all_a.js | 2 +- search/all_e.js | 3 +- search/all_f.js | 2 +- search/classes_0.js | 3 +- search/classes_10.html | 26 + search/classes_10.js | 9 + search/classes_11.html | 26 + search/classes_11.js | 6 + search/classes_2.js | 1 + search/classes_6.js | 4 +- search/classes_7.js | 4 +- search/classes_8.js | 4 +- search/classes_9.js | 3 +- search/classes_a.js | 3 +- search/classes_b.js | 2 +- search/classes_c.js | 3 +- search/classes_d.js | 8 +- search/classes_e.js | 7 +- search/classes_f.js | 9 +- search/functions_0.js | 2 + search/functions_10.js | 6 +- search/functions_11.js | 1 + search/functions_12.js | 2 +- search/functions_15.js | 5 + search/functions_2.js | 5 +- search/functions_3.js | 2 +- search/functions_4.js | 2 +- search/functions_5.js | 4 +- search/functions_6.js | 5 +- search/functions_8.js | 2 +- search/functions_9.js | 2 +- search/functions_a.js | 2 +- search/functions_e.js | 3 +- search/functions_f.js | 2 +- search/search.js | 2 +- structRTCAlarm.html | 2 +- structRTCDate.html | 2 +- structRTCTime.html | 2 +- 377 files changed, 6799 insertions(+), 801 deletions(-) create mode 100644 AuthenticatedCipher_8cpp_source.html create mode 100644 AuthenticatedCipher_8h_source.html create mode 100644 BigNumberUtil_8h_source.html create mode 100644 ChaChaPoly_8cpp_source.html create mode 100644 ChaChaPoly_8h_source.html create mode 100644 GCM_8cpp_source.html create mode 100644 GCM_8h_source.html create mode 100644 GHASH_8cpp_source.html create mode 100644 GHASH_8h_source.html create mode 100644 Poly1305_8cpp_source.html create mode 100644 Poly1305_8h_source.html create mode 100644 classAuthenticatedCipher-members.html create mode 100644 classAuthenticatedCipher.html create mode 100644 classAuthenticatedCipher.png create mode 100644 classChaChaPoly-members.html create mode 100644 classChaChaPoly.html create mode 100644 classChaChaPoly.png create mode 100644 classGCM-members.html create mode 100644 classGCM.html create mode 100644 classGCM.png create mode 100644 classGCMCommon-members.html create mode 100644 classGCMCommon.html create mode 100644 classGCMCommon.png create mode 100644 classGHASH-members.html create mode 100644 classGHASH.html create mode 100644 classPoly1305-members.html create mode 100644 classPoly1305.html create mode 100644 search/classes_10.html create mode 100644 search/classes_10.js create mode 100644 search/classes_11.html create mode 100644 search/classes_11.js diff --git a/AES128_8cpp_source.html b/AES128_8cpp_source.html index ba3576e4..e9e6b728 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 3195b686..9eff8209 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 b74e6209..65bca129 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 0cea2abd..6058ed1a 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 d068be49..970d4957 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/AuthenticatedCipher_8cpp_source.html b/AuthenticatedCipher_8cpp_source.html new file mode 100644 index 00000000..1c2e0d6c --- /dev/null +++ b/AuthenticatedCipher_8cpp_source.html @@ -0,0 +1,133 @@ + + + + + + +ArduinoLibs: AuthenticatedCipher.cpp Source File + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
AuthenticatedCipher.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 "AuthenticatedCipher.h"
+
24 
+ +
55 {
+
56 }
+
57 
+ +
62 {
+
63 }
+
64 
+
virtual ~AuthenticatedCipher()
Destroys this authenticated cipher.
+
AuthenticatedCipher()
Constructs a new authenticated cipher.
+
+ + + + diff --git a/AuthenticatedCipher_8h_source.html b/AuthenticatedCipher_8h_source.html new file mode 100644 index 00000000..f41c2302 --- /dev/null +++ b/AuthenticatedCipher_8h_source.html @@ -0,0 +1,149 @@ + + + + + + +ArduinoLibs: AuthenticatedCipher.h Source File + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
AuthenticatedCipher.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_AUTHENTICATEDCIPHER_h
+
24 #define CRYPTO_AUTHENTICATEDCIPHER_h
+
25 
+
26 #include "Cipher.h"
+
27 
+ +
29 {
+
30 public:
+ +
32  virtual ~AuthenticatedCipher();
+
33 
+
34  virtual size_t tagSize() const = 0;
+
35 
+
36  virtual void addAuthData(const void *data, size_t len) = 0;
+
37 
+
38  virtual void computeTag(void *tag, size_t len) = 0;
+
39  virtual bool checkTag(const void *tag, size_t len) = 0;
+
40 };
+
41 
+
42 #endif
+
Abstract base class for stream ciphers.
Definition: Cipher.h:29
+
virtual bool checkTag(const void *tag, size_t len)=0
Finalizes the decryption process and checks the authentication tag.
+
virtual ~AuthenticatedCipher()
Destroys this authenticated cipher.
+
Abstract base class for authenticated ciphers.
+
virtual size_t tagSize() const =0
Returns the size of the authentication tag.
+
virtual void computeTag(void *tag, size_t len)=0
Finalizes the encryption process and computes the authentication tag.
+
virtual void addAuthData(const void *data, size_t len)=0
Adds extra data that will be authenticated but not encrypted.
+
AuthenticatedCipher()
Constructs a new authenticated cipher.
+
+ + + + diff --git a/BLAKE2b_8cpp_source.html b/BLAKE2b_8cpp_source.html index 68b16d08..12a8fbab 100644 --- a/BLAKE2b_8cpp_source.html +++ b/BLAKE2b_8cpp_source.html @@ -330,7 +330,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/BLAKE2b_8h_source.html b/BLAKE2b_8h_source.html index 54426b1e..34a2fa62 100644 --- a/BLAKE2b_8h_source.html +++ b/BLAKE2b_8h_source.html @@ -163,7 +163,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/BLAKE2s_8cpp_source.html b/BLAKE2s_8cpp_source.html index 71a3bd1a..4d5ddb05 100644 --- a/BLAKE2s_8cpp_source.html +++ b/BLAKE2s_8cpp_source.html @@ -322,7 +322,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/BLAKE2s_8h_source.html b/BLAKE2s_8h_source.html index 4a675b57..7a591dc7 100644 --- a/BLAKE2s_8h_source.html +++ b/BLAKE2s_8h_source.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/BigNumberUtil_8h_source.html b/BigNumberUtil_8h_source.html new file mode 100644 index 00000000..49432d3a --- /dev/null +++ b/BigNumberUtil_8h_source.html @@ -0,0 +1,150 @@ + + + + + + +ArduinoLibs: BigNumberUtil.h Source File + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
BigNumberUtil.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_BIGNUMBERUTIL_h
+
24 #define CRYPTO_BIGNUMBERUTIL_h
+
25 
+
26 #include <inttypes.h>
+
27 
+
28 // Define exactly one of these to 1 to set the size of the basic limb type.
+
29 // 16-bit limbs seem to give the best performance on 8-bit AVR micros.
+
30 #define BIGNUMBER_LIMB_8BIT 0
+
31 #define BIGNUMBER_LIMB_16BIT 1
+
32 #define BIGNUMBER_LIMB_32BIT 0
+
33 
+
34 // Define the limb types to use on this platform.
+
35 #if BIGNUMBER_LIMB_8BIT
+
36 typedef uint8_t limb_t;
+
37 typedef int8_t slimb_t;
+
38 typedef uint16_t dlimb_t;
+
39 #elif BIGNUMBER_LIMB_16BIT
+
40 typedef uint16_t limb_t;
+
41 typedef int16_t slimb_t;
+
42 typedef uint32_t dlimb_t;
+
43 #elif BIGNUMBER_LIMB_32BIT
+
44 typedef uint32_t limb_t;
+
45 typedef int32_t slimb_t;
+
46 typedef uint64_t dlimb_t;
+
47 #else
+
48 #error "limb_t must be 8, 16, or 32 bits in size"
+
49 #endif
+
50 
+
51 #endif
+
+ + + + diff --git a/Bitmap_8cpp_source.html b/Bitmap_8cpp_source.html index a620e45e..f0b222bc 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 bb395881..2dbdcb97 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 db448774..6f5ea165 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 d8254cd5..7a5270f3 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 b8ab6afe..ff6f35cc 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 1e4b0d48..fd30d940 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 eff165b5..d6307f93 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 4c824cf6..20fcaf90 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 3fefdb1a..dd51ab1b 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 6b9afb27..7f9b3eff 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 05c34b7f..962e2e83 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 23e7b2a4..e15822c1 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 e4638bfe..4048f2bd 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 b80913ce..5f9c66a9 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/ChaChaPoly_8cpp_source.html b/ChaChaPoly_8cpp_source.html new file mode 100644 index 00000000..f46de203 --- /dev/null +++ b/ChaChaPoly_8cpp_source.html @@ -0,0 +1,270 @@ + + + + + + +ArduinoLibs: ChaChaPoly.cpp Source File + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
ChaChaPoly.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 "ChaChaPoly.h"
+
24 #include "Crypto.h"
+
25 #include "utility/EndianUtil.h"
+
26 #include <string.h>
+
27 
+ +
46 {
+
47  state.authSize = 0;
+
48  state.dataSize = 0;
+
49  state.dataStarted = false;
+
50  state.ivSize = 8;
+
51 }
+
52 
+ +
57 {
+
58  clean(state);
+
59 }
+
60 
+
61 size_t ChaChaPoly::keySize() const
+
62 {
+
63  // Default key size is 256-bit, but any key size is allowed.
+
64  return 32;
+
65 }
+
66 
+
67 size_t ChaChaPoly::ivSize() const
+
68 {
+
69  // Return 8 but we also support 12-byte nonces in setIV().
+
70  return 8;
+
71 }
+
72 
+
73 size_t ChaChaPoly::tagSize() const
+
74 {
+
75  // Any tag size between 1 and 16 is supported.
+
76  return 16;
+
77 }
+
78 
+
79 bool ChaChaPoly::setKey(const uint8_t *key, size_t len)
+
80 {
+
81  return chacha.setKey(key, len);
+
82 }
+
83 
+
84 bool ChaChaPoly::setIV(const uint8_t *iv, size_t len)
+
85 {
+
86  // ChaCha::setIV() supports both 64-bit and 96-bit nonces.
+
87  if (!chacha.setIV(iv, len))
+
88  return false;
+
89 
+
90  // Generate the key and nonce to use for Poly1305.
+
91  uint32_t data[16];
+
92  chacha.keystreamBlock(data);
+
93  poly1305.reset(data);
+
94  memcpy(state.nonce, data + 4, 16);
+
95  clean(data);
+
96 
+
97  // Reset the size counters for the auth data and payload.
+
98  state.authSize = 0;
+
99  state.dataSize = 0;
+
100  state.dataStarted = false;
+
101  state.ivSize = len;
+
102 }
+
103 
+
104 void ChaChaPoly::encrypt(uint8_t *output, const uint8_t *input, size_t len)
+
105 {
+
106  if (!state.dataStarted) {
+
107  poly1305.pad();
+
108  state.dataStarted = true;
+
109  }
+
110  chacha.encrypt(output, input, len);
+
111  poly1305.update(output, len);
+
112  state.dataSize += len;
+
113 }
+
114 
+
115 void ChaChaPoly::decrypt(uint8_t *output, const uint8_t *input, size_t len)
+
116 {
+
117  if (!state.dataStarted) {
+
118  poly1305.pad();
+
119  state.dataStarted = true;
+
120  }
+
121  poly1305.update(input, len);
+
122  chacha.encrypt(output, input, len); // encrypt() is the same as decrypt()
+
123  state.dataSize += len;
+
124 }
+
125 
+
126 void ChaChaPoly::addAuthData(const void *data, size_t len)
+
127 {
+
128  if (!state.dataStarted) {
+
129  poly1305.update(data, len);
+
130  state.authSize += len;
+
131  }
+
132 }
+
133 
+
134 void ChaChaPoly::computeTag(void *tag, size_t len)
+
135 {
+
136  uint64_t sizes[2];
+
137 
+
138  // Pad the final Poly1305 block and then hash the sizes.
+
139  poly1305.pad();
+
140  sizes[0] = htole64(state.authSize);
+
141  sizes[1] = htole64(state.dataSize);
+
142  poly1305.update(sizes, sizeof(sizes));
+
143 
+
144  // Compute the tag and copy it to the return buffer.
+
145  poly1305.finalize(state.nonce, tag, len);
+
146  clean(sizes);
+
147 }
+
148 
+
149 bool ChaChaPoly::checkTag(const void *tag, size_t len)
+
150 {
+
151  // Can never match if the expected tag length is too long.
+
152  if (len > 16)
+
153  return false;
+
154 
+
155  // Compute the tag and check it.
+
156  uint8_t temp[16];
+
157  computeTag(temp, len);
+
158  bool equal = secure_compare(temp, tag, len);
+
159  clean(temp);
+
160  return equal;
+
161 }
+
162 
+ +
164 {
+
165  chacha.clear();
+
166  poly1305.clear();
+
167  clean(state);
+
168  state.ivSize = 8;
+
169 }
+
void finalize(const void *nonce, void *token, size_t len)
Finalizes the authentication process and returns the token.
Definition: Poly1305.cpp:180
+
void reset(const void *key)
Resets the Poly1305 message authenticator for a new session.
Definition: Poly1305.cpp:111
+
bool setKey(const uint8_t *key, size_t len)
Sets the key to use for future encryption and decryption operations.
Definition: ChaCha.cpp:87
+
virtual ~ChaChaPoly()
Destroys this ChaChaPoly authenticated cipher.
Definition: ChaChaPoly.cpp:56
+
size_t tagSize() const
Returns the size of the authentication tag.
Definition: ChaChaPoly.cpp:73
+
bool setIV(const uint8_t *iv, size_t len)
Sets the initialization vector to use for future encryption and decryption operations.
Definition: ChaCha.cpp:111
+
bool setIV(const uint8_t *iv, size_t len)
Sets the initialization vector to use for future encryption and decryption operations.
Definition: ChaChaPoly.cpp:84
+
size_t keySize() const
Default size of the key for this cipher, in bytes.
Definition: ChaChaPoly.cpp:61
+
void computeTag(void *tag, size_t len)
Finalizes the encryption process and computes the authentication tag.
Definition: ChaChaPoly.cpp:134
+
ChaChaPoly()
Constructs a new ChaChaPoly authenticated cipher.
Definition: ChaChaPoly.cpp:45
+
void encrypt(uint8_t *output, const uint8_t *input, size_t len)
Encrypts an input buffer and writes the ciphertext to an output buffer.
Definition: ChaCha.cpp:158
+
void addAuthData(const void *data, size_t len)
Adds extra data that will be authenticated but not encrypted.
Definition: ChaChaPoly.cpp:126
+
void encrypt(uint8_t *output, const uint8_t *input, size_t len)
Encrypts an input buffer and writes the ciphertext to an output buffer.
Definition: ChaChaPoly.cpp:104
+
size_t ivSize() const
Size of the initialization vector for this cipher, in bytes.
+
void update(const void *data, size_t len)
Updates the message authenticator with more data.
Definition: Poly1305.cpp:143
+
void clear()
Clears all security-sensitive state from this cipher.
Definition: ChaCha.cpp:218
+
void clear()
Clears all security-sensitive state from this cipher.
Definition: ChaChaPoly.cpp:163
+
void decrypt(uint8_t *output, const uint8_t *input, size_t len)
Decrypts an input buffer and writes the plaintext to an output buffer.
Definition: ChaChaPoly.cpp:115
+
void pad()
Pads the input stream with zero bytes to a multiple of 16.
Definition: Poly1305.cpp:251
+
void clear()
Clears the authenticator's state, removing all sensitive data.
Definition: Poly1305.cpp:265
+
bool setKey(const uint8_t *key, size_t len)
Sets the key to use for future encryption and decryption operations.
Definition: ChaChaPoly.cpp:79
+
bool checkTag(const void *tag, size_t len)
Finalizes the decryption process and checks the authentication tag.
Definition: ChaChaPoly.cpp:149
+
+ + + + diff --git a/ChaChaPoly_8h_source.html b/ChaChaPoly_8h_source.html new file mode 100644 index 00000000..f14eea2f --- /dev/null +++ b/ChaChaPoly_8h_source.html @@ -0,0 +1,181 @@ + + + + + + +ArduinoLibs: ChaChaPoly.h Source File + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
ChaChaPoly.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_CHACHAPOLY_H
+
24 #define CRYPTO_CHACHAPOLY_H
+
25 
+
26 #include "AuthenticatedCipher.h"
+
27 #include "ChaCha.h"
+
28 #include "Poly1305.h"
+
29 
+ +
31 {
+
32 public:
+
33  ChaChaPoly();
+
34  virtual ~ChaChaPoly();
+
35 
+
36  size_t keySize() const;
+
37  size_t ivSize() const;
+
38  size_t tagSize() const;
+
39 
+
40  bool setKey(const uint8_t *key, size_t len);
+
41  bool setIV(const uint8_t *iv, size_t len);
+
42 
+
43  void encrypt(uint8_t *output, const uint8_t *input, size_t len);
+
44  void decrypt(uint8_t *output, const uint8_t *input, size_t len);
+
45 
+
46  void addAuthData(const void *data, size_t len);
+
47 
+
48  void computeTag(void *tag, size_t len);
+
49  bool checkTag(const void *tag, size_t len);
+
50 
+
51  void clear();
+
52 
+
53 private:
+
54  ChaCha chacha;
+
55  Poly1305 poly1305;
+
56  struct {
+
57  uint8_t nonce[16];
+
58  uint64_t authSize;
+
59  uint64_t dataSize;
+
60  bool dataStarted;
+
61  uint8_t ivSize;
+
62  } state;
+
63 };
+
64 
+
65 #endif
+
Poly1305 message authenticator.
Definition: Poly1305.h:29
+
Authenticated cipher based on ChaCha and Poly1305.
Definition: ChaChaPoly.h:30
+
ChaCha stream cipher.
Definition: ChaCha.h:30
+
virtual ~ChaChaPoly()
Destroys this ChaChaPoly authenticated cipher.
Definition: ChaChaPoly.cpp:56
+
size_t tagSize() const
Returns the size of the authentication tag.
Definition: ChaChaPoly.cpp:73
+
Abstract base class for authenticated ciphers.
+
bool setIV(const uint8_t *iv, size_t len)
Sets the initialization vector to use for future encryption and decryption operations.
Definition: ChaChaPoly.cpp:84
+
size_t keySize() const
Default size of the key for this cipher, in bytes.
Definition: ChaChaPoly.cpp:61
+
void computeTag(void *tag, size_t len)
Finalizes the encryption process and computes the authentication tag.
Definition: ChaChaPoly.cpp:134
+
ChaChaPoly()
Constructs a new ChaChaPoly authenticated cipher.
Definition: ChaChaPoly.cpp:45
+
void addAuthData(const void *data, size_t len)
Adds extra data that will be authenticated but not encrypted.
Definition: ChaChaPoly.cpp:126
+
void encrypt(uint8_t *output, const uint8_t *input, size_t len)
Encrypts an input buffer and writes the ciphertext to an output buffer.
Definition: ChaChaPoly.cpp:104
+
size_t ivSize() const
Size of the initialization vector for this cipher, in bytes.
+
void clear()
Clears all security-sensitive state from this cipher.
Definition: ChaChaPoly.cpp:163
+
void decrypt(uint8_t *output, const uint8_t *input, size_t len)
Decrypts an input buffer and writes the plaintext to an output buffer.
Definition: ChaChaPoly.cpp:115
+
bool setKey(const uint8_t *key, size_t len)
Sets the key to use for future encryption and decryption operations.
Definition: ChaChaPoly.cpp:79
+
bool checkTag(const void *tag, size_t len)
Finalizes the decryption process and checks the authentication tag.
Definition: ChaChaPoly.cpp:149
+
+ + + + diff --git a/ChaCha_8cpp_source.html b/ChaCha_8cpp_source.html index 89695b7d..5fbb47ee 100644 --- a/ChaCha_8cpp_source.html +++ b/ChaCha_8cpp_source.html @@ -167,7 +167,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
110 
111 bool ChaCha::setIV(const uint8_t *iv, size_t len)
112 {
-
113  // From draft-nir-cfrg-chacha20-poly1305-04.txt, we can use either
+
113  // From draft-nir-cfrg-chacha20-poly1305-10.txt, we can use either
114  // 64-bit or 96-bit nonces. The 96-bit nonce consists of the high
115  // word of the counter prepended to a regular 64-bit nonce for ChaCha.
116  if (len == 8) {
@@ -235,58 +235,69 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
192  encrypt(output, input, len);
193 }
194 
-
195 void ChaCha::clear()
-
196 {
-
197  clean(block);
-
198  clean(stream);
-
199  posn = 64;
-
200 }
-
201 
-
202 // Perform a ChaCha quarter round operation.
-
203 #define quarterRound(a, b, c, d) \
-
204  do { \
-
205  uint32_t _b = (b); \
-
206  uint32_t _a = (a) + _b; \
-
207  uint32_t _d = leftRotate((d) ^ _a, 16); \
-
208  uint32_t _c = (c) + _d; \
-
209  _b = leftRotate12(_b ^ _c); \
-
210  _a += _b; \
-
211  (d) = _d = leftRotate(_d ^ _a, 8); \
-
212  _c += _d; \
-
213  (a) = _a; \
-
214  (b) = leftRotate7(_b ^ _c); \
-
215  (c) = _c; \
-
216  } while (0)
-
217 
-
230 void ChaCha::hashCore(uint32_t *output, const uint32_t *input, uint8_t rounds)
-
231 {
-
232  uint8_t posn;
-
233 
-
234  // Copy the input buffer to the output prior to the first round
-
235  // and convert from little-endian to host byte order.
-
236  for (posn = 0; posn < 16; ++posn)
-
237  output[posn] = le32toh(input[posn]);
-
238 
-
239  // Perform the ChaCha rounds in sets of two.
-
240  for (; rounds >= 2; rounds -= 2) {
-
241  // Column round.
-
242  quarterRound(output[0], output[4], output[8], output[12]);
-
243  quarterRound(output[1], output[5], output[9], output[13]);
-
244  quarterRound(output[2], output[6], output[10], output[14]);
-
245  quarterRound(output[3], output[7], output[11], output[15]);
-
246 
-
247  // Diagonal round.
-
248  quarterRound(output[0], output[5], output[10], output[15]);
-
249  quarterRound(output[1], output[6], output[11], output[12]);
-
250  quarterRound(output[2], output[7], output[8], output[13]);
-
251  quarterRound(output[3], output[4], output[9], output[14]);
-
252  }
-
253 
-
254  // Add the original input to the final output, convert back to
-
255  // little-endian, and return the result.
-
256  for (posn = 0; posn < 16; ++posn)
-
257  output[posn] = htole32(output[posn] + le32toh(input[posn]));
-
258 }
+
207 void ChaCha::keystreamBlock(uint32_t *output)
+
208 {
+
209  // Generate the hash output directly into the caller-supplied buffer.
+
210  hashCore(output, (const uint32_t *)block, rounds);
+
211  posn = 64;
+
212 
+
213  // Increment the lowest counter byte. We are assuming that the caller
+
214  // is ChaChaPoly::setKey() and that the previous counter value was zero.
+
215  block[48] = 1;
+
216 }
+
217 
+
218 void ChaCha::clear()
+
219 {
+
220  clean(block);
+
221  clean(stream);
+
222  posn = 64;
+
223 }
+
224 
+
225 // Perform a ChaCha quarter round operation.
+
226 #define quarterRound(a, b, c, d) \
+
227  do { \
+
228  uint32_t _b = (b); \
+
229  uint32_t _a = (a) + _b; \
+
230  uint32_t _d = leftRotate((d) ^ _a, 16); \
+
231  uint32_t _c = (c) + _d; \
+
232  _b = leftRotate12(_b ^ _c); \
+
233  _a += _b; \
+
234  (d) = _d = leftRotate(_d ^ _a, 8); \
+
235  _c += _d; \
+
236  (a) = _a; \
+
237  (b) = leftRotate7(_b ^ _c); \
+
238  (c) = _c; \
+
239  } while (0)
+
240 
+
253 void ChaCha::hashCore(uint32_t *output, const uint32_t *input, uint8_t rounds)
+
254 {
+
255  uint8_t posn;
+
256 
+
257  // Copy the input buffer to the output prior to the first round
+
258  // and convert from little-endian to host byte order.
+
259  for (posn = 0; posn < 16; ++posn)
+
260  output[posn] = le32toh(input[posn]);
+
261 
+
262  // Perform the ChaCha rounds in sets of two.
+
263  for (; rounds >= 2; rounds -= 2) {
+
264  // Column round.
+
265  quarterRound(output[0], output[4], output[8], output[12]);
+
266  quarterRound(output[1], output[5], output[9], output[13]);
+
267  quarterRound(output[2], output[6], output[10], output[14]);
+
268  quarterRound(output[3], output[7], output[11], output[15]);
+
269 
+
270  // Diagonal round.
+
271  quarterRound(output[0], output[5], output[10], output[15]);
+
272  quarterRound(output[1], output[6], output[11], output[12]);
+
273  quarterRound(output[2], output[7], output[8], output[13]);
+
274  quarterRound(output[3], output[4], output[9], output[14]);
+
275  }
+
276 
+
277  // Add the original input to the final output, convert back to
+
278  // little-endian, and return the result.
+
279  for (posn = 0; posn < 16; ++posn)
+
280  output[posn] = htole32(output[posn] + le32toh(input[posn]));
+
281 }
size_t ivSize() const
Size of the initialization vector for this cipher, in bytes.
Definition: ChaCha.cpp:65
bool setKey(const uint8_t *key, size_t len)
Sets the key to use for future encryption and decryption operations.
Definition: ChaCha.cpp:87
size_t keySize() const
Default size of the key for this cipher, in bytes.
Definition: ChaCha.cpp:59
@@ -295,12 +306,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
ChaCha(uint8_t numRounds=20)
Constructs a new ChaCha stream cipher.
Definition: ChaCha.cpp:47
void decrypt(uint8_t *output, const uint8_t *input, size_t len)
Decrypts an input buffer and writes the plaintext to an output buffer.
Definition: ChaCha.cpp:190
void encrypt(uint8_t *output, const uint8_t *input, size_t len)
Encrypts an input buffer and writes the ciphertext to an output buffer.
Definition: ChaCha.cpp:158
-
void clear()
Clears all security-sensitive state from this cipher.
Definition: ChaCha.cpp:195
-
static void hashCore(uint32_t *output, const uint32_t *input, uint8_t rounds)
Executes the ChaCha hash core on an input memory block.
Definition: ChaCha.cpp:230
+
void clear()
Clears all security-sensitive state from this cipher.
Definition: ChaCha.cpp:218
+
static void hashCore(uint32_t *output, const uint32_t *input, uint8_t rounds)
Executes the ChaCha hash core on an input memory block.
Definition: ChaCha.cpp:253
diff --git a/ChaCha_8h_source.html b/ChaCha_8h_source.html index 816fcb8a..f1f7c22a 100644 --- a/ChaCha_8h_source.html +++ b/ChaCha_8h_source.html @@ -115,55 +115,62 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
25 
26 #include "Cipher.h"
27 
-
28 class ChaCha : public Cipher
-
29 {
-
30 public:
-
31  explicit ChaCha(uint8_t numRounds = 20);
-
32  virtual ~ChaCha();
-
33 
-
34  size_t keySize() const;
-
35  size_t ivSize() const;
-
36 
-
37  uint8_t numRounds() const { return rounds; }
-
38  void setNumRounds(uint8_t numRounds) { rounds = numRounds; }
-
39 
-
40  bool setKey(const uint8_t *key, size_t len);
-
41  bool setIV(const uint8_t *iv, size_t len);
-
42  bool setCounter(const uint8_t *counter, size_t len);
-
43 
-
44  void encrypt(uint8_t *output, const uint8_t *input, size_t len);
-
45  void decrypt(uint8_t *output, const uint8_t *input, size_t len);
-
46 
-
47  void clear();
+
28 class ChaChaPoly;
+
29 
+
30 class ChaCha : public Cipher
+
31 {
+
32 public:
+
33  explicit ChaCha(uint8_t numRounds = 20);
+
34  virtual ~ChaCha();
+
35 
+
36  size_t keySize() const;
+
37  size_t ivSize() const;
+
38 
+
39  uint8_t numRounds() const { return rounds; }
+
40  void setNumRounds(uint8_t numRounds) { rounds = numRounds; }
+
41 
+
42  bool setKey(const uint8_t *key, size_t len);
+
43  bool setIV(const uint8_t *iv, size_t len);
+
44  bool setCounter(const uint8_t *counter, size_t len);
+
45 
+
46  void encrypt(uint8_t *output, const uint8_t *input, size_t len);
+
47  void decrypt(uint8_t *output, const uint8_t *input, size_t len);
48 
-
49  static void hashCore(uint32_t *output, const uint32_t *input, uint8_t rounds);
+
49  void clear();
50 
-
51 private:
-
52  uint8_t block[64];
-
53  uint8_t stream[64];
-
54  uint8_t rounds;
-
55  uint8_t posn;
-
56 };
-
57 
-
58 #endif
+
51  static void hashCore(uint32_t *output, const uint32_t *input, uint8_t rounds);
+
52 
+
53 private:
+
54  uint8_t block[64];
+
55  uint8_t stream[64];
+
56  uint8_t rounds;
+
57  uint8_t posn;
+
58 
+
59  void keystreamBlock(uint32_t *output);
+
60 
+
61  friend class ChaChaPoly;
+
62 };
+
63 
+
64 #endif
Abstract base class for stream ciphers.
Definition: Cipher.h:29
size_t ivSize() const
Size of the initialization vector for this cipher, in bytes.
Definition: ChaCha.cpp:65
+
Authenticated cipher based on ChaCha and Poly1305.
Definition: ChaChaPoly.h:30
bool setKey(const uint8_t *key, size_t len)
Sets the key to use for future encryption and decryption operations.
Definition: ChaCha.cpp:87
-
ChaCha stream cipher.
Definition: ChaCha.h:28
+
ChaCha stream cipher.
Definition: ChaCha.h:30
size_t keySize() const
Default size of the key for this cipher, in bytes.
Definition: ChaCha.cpp:59
bool setIV(const uint8_t *iv, size_t len)
Sets the initialization vector to use for future encryption and decryption operations.
Definition: ChaCha.cpp:111
bool setCounter(const uint8_t *counter, size_t len)
Sets the starting counter for encryption.
Definition: ChaCha.cpp:145
ChaCha(uint8_t numRounds=20)
Constructs a new ChaCha stream cipher.
Definition: ChaCha.cpp:47
void decrypt(uint8_t *output, const uint8_t *input, size_t len)
Decrypts an input buffer and writes the plaintext to an output buffer.
Definition: ChaCha.cpp:190
void encrypt(uint8_t *output, const uint8_t *input, size_t len)
Encrypts an input buffer and writes the ciphertext to an output buffer.
Definition: ChaCha.cpp:158
-
void clear()
Clears all security-sensitive state from this cipher.
Definition: ChaCha.cpp:195
-
uint8_t numRounds() const
Returns the number of encryption rounds; usually 8, 12, or 20.
Definition: ChaCha.h:37
-
void setNumRounds(uint8_t numRounds)
Sets the number of encryption rounds.
Definition: ChaCha.h:38
-
static void hashCore(uint32_t *output, const uint32_t *input, uint8_t rounds)
Executes the ChaCha hash core on an input memory block.
Definition: ChaCha.cpp:230
+
void clear()
Clears all security-sensitive state from this cipher.
Definition: ChaCha.cpp:218
+
uint8_t numRounds() const
Returns the number of encryption rounds; usually 8, 12, or 20.
Definition: ChaCha.h:39
+
void setNumRounds(uint8_t numRounds)
Sets the number of encryption rounds.
Definition: ChaCha.h:40
+
static void hashCore(uint32_t *output, const uint32_t *input, uint8_t rounds)
Executes the ChaCha hash core on an input memory block.
Definition: ChaCha.cpp:253
diff --git a/Charlieplex_8cpp_source.html b/Charlieplex_8cpp_source.html index 1a194c1d..51028988 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 7bb95ee5..bcf4a749 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 741dc1e6..c347ea17 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 47502fd5..ae950a44 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 12b88722..007fdadb 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 ca4be790..3bc1ff82 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 04e25b1c..1d23e9c5 100644 --- a/Crypto_8cpp_source.html +++ b/Crypto_8cpp_source.html @@ -124,10 +124,21 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
43  }
44 }
45 
+
69 bool secure_compare(const void *data1, const void *data2, size_t len)
+
70 {
+
71  uint8_t result = 0;
+
72  const uint8_t *d1 = (const uint8_t *)data1;
+
73  const uint8_t *d2 = (const uint8_t *)data2;
+
74  while (len > 0) {
+
75  result |= (*d1++ ^ *d2++);
+
76  --len;
+
77  }
+
78  return (bool)((((uint16_t)0x0100) - result) >> 8);
+
79 }
diff --git a/Crypto_8h_source.html b/Crypto_8h_source.html index 65778d76..18372f24 100644 --- a/Crypto_8h_source.html +++ b/Crypto_8h_source.html @@ -124,11 +124,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
34  clean(&var, sizeof(T));
35 }
36 
-
37 #endif
+
37 bool secure_compare(const void *data1, const void *data2, size_t len);
+
38 
+
39 #endif
diff --git a/Curve25519_8cpp_source.html b/Curve25519_8cpp_source.html index 2f39397a..a52e6431 100644 --- a/Curve25519_8cpp_source.html +++ b/Curve25519_8cpp_source.html @@ -436,7 +436,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
455  }
456 }
457 
-
471 Curve25519::limb_t Curve25519::reduceQuick(limb_t *x)
+
471 limb_t Curve25519::reduceQuick(limb_t *x)
472 {
473  limb_t temp[NUM_LIMBS];
474  dlimb_t carry;
@@ -509,13 +509,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
570 void Curve25519::mulA24(limb_t *result, const limb_t *x)
571 {
572  // The constant a24 = 121665 (0x1DB41) as a limb array.
-
573 #if CURVE25519_LIMB_8BIT
+
573 #if BIGNUMBER_LIMB_8BIT
574  static limb_t const a24[3] PROGMEM = {0x41, 0xDB, 0x01};
575  #define pgm_read_a24(index) (pgm_read_byte(&(a24[(index)])))
-
576 #elif CURVE25519_LIMB_16BIT
+
576 #elif BIGNUMBER_LIMB_16BIT
577  static limb_t const a24[2] PROGMEM = {0xDB41, 0x0001};
578  #define pgm_read_a24(index) (pgm_read_word(&(a24[(index)])))
-
579 #elif CURVE25519_LIMB_32BIT
+
579 #elif BIGNUMBER_LIMB_32BIT
580  static limb_t const a24[1] PROGMEM = {0x0001DB41};
581  #define pgm_read_a24(index) (pgm_read_dword(&(a24[(index)])))
582 #else
@@ -671,15 +671,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
769 
782 void Curve25519::unpack(limb_t *result, const uint8_t *x)
783 {
-
784 #if CURVE25519_LIMB_8BIT
+
784 #if BIGNUMBER_LIMB_8BIT
785  memcpy(result, x, 32);
786  result[31] &= 0x7F;
-
787 #elif CURVE25519_LIMB_16BIT
+
787 #elif BIGNUMBER_LIMB_16BIT
788  for (uint8_t posn = 0; posn < 16; ++posn) {
789  result[posn] = ((limb_t)x[posn * 2]) | (((limb_t)x[posn * 2 + 1]) << 8);
790  }
791  result[15] &= 0x7FFF;
-
792 #elif CURVE25519_LIMB_32BIT
+
792 #elif BIGNUMBER_LIMB_32BIT
793  for (uint8_t posn = 0; posn < 8; ++posn) {
794  result[posn] = ((limb_t)x[posn * 4]) |
795  (((limb_t)x[posn * 4 + 1]) << 8) |
@@ -692,15 +692,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
802 
812 void Curve25519::pack(uint8_t *result, const limb_t *x)
813 {
-
814 #if CURVE25519_LIMB_8BIT
+
814 #if BIGNUMBER_LIMB_8BIT
815  memcpy(result, x, 32);
-
816 #elif CURVE25519_LIMB_16BIT
+
816 #elif BIGNUMBER_LIMB_16BIT
817  for (uint8_t posn = 0; posn < 16; ++posn) {
818  limb_t value = x[posn];
819  result[posn * 2] = (uint8_t)value;
820  result[posn * 2 + 1] = (uint8_t)(value >> 8);
821  }
-
822 #elif CURVE25519_LIMB_32BIT
+
822 #elif BIGNUMBER_LIMB_32BIT
823  for (uint8_t posn = 0; posn < 8; ++posn) {
824  limb_t value = x[posn];
825  result[posn * 4] = (uint8_t)value;
@@ -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 666d9963..c0d68bb4 100644 --- a/Curve25519_8h_source.html +++ b/Curve25519_8h_source.html @@ -113,82 +113,59 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
23 #ifndef CRYPTO_CURVE15519_h
24 #define CRYPTO_CURVE15519_h
25 
-
26 #include <inttypes.h>
+
26 #include "BigNumberUtil.h"
27 #include <stddef.h>
28 
-
29 // Define exactly one of these to 1 to set the size of the basic limb type.
-
30 // 16-bit limbs seems to give the best performance on 8-bit AVR micros.
-
31 #define CURVE25519_LIMB_8BIT 0
-
32 #define CURVE25519_LIMB_16BIT 1
-
33 #define CURVE25519_LIMB_32BIT 0
-
34 
-
35 class Curve25519
-
36 {
-
37 public:
-
38  static bool eval(uint8_t result[32], const uint8_t s[32], const uint8_t x[32]);
-
39 
-
40  static void dh1(uint8_t k[32], uint8_t f[32]);
-
41  static bool dh2(uint8_t k[32], uint8_t f[32]);
-
42 
-
43 #if defined(TEST_CURVE25519_FIELD_OPS)
-
44 public:
-
45 #else
-
46 private:
-
47 #endif
-
48  // Define the limb types to use on this platform.
-
49  #if CURVE25519_LIMB_8BIT
-
50  typedef uint8_t limb_t;
-
51  typedef int8_t slimb_t;
-
52  typedef uint16_t dlimb_t;
-
53  #elif CURVE25519_LIMB_16BIT
-
54  typedef uint16_t limb_t;
-
55  typedef int16_t slimb_t;
-
56  typedef uint32_t dlimb_t;
-
57  #elif CURVE25519_LIMB_32BIT
-
58  typedef uint32_t limb_t;
-
59  typedef int32_t slimb_t;
-
60  typedef uint64_t dlimb_t;
-
61  #else
-
62  #error "limb_t must be 8, 16, or 32 bits in size"
-
63  #endif
-
64 
-
65  static uint8_t isWeakPoint(const uint8_t k[32]);
-
66 
-
67  static void reduce(limb_t *result, limb_t *x, uint8_t size);
-
68  static limb_t reduceQuick(limb_t *x);
+
29 class Curve25519
+
30 {
+
31 public:
+
32  static bool eval(uint8_t result[32], const uint8_t s[32], const uint8_t x[32]);
+
33 
+
34  static void dh1(uint8_t k[32], uint8_t f[32]);
+
35  static bool dh2(uint8_t k[32], uint8_t f[32]);
+
36 
+
37 #if defined(TEST_CURVE25519_FIELD_OPS)
+
38 public:
+
39 #else
+
40 private:
+
41 #endif
+
42  static uint8_t isWeakPoint(const uint8_t k[32]);
+
43 
+
44  static void reduce(limb_t *result, limb_t *x, uint8_t size);
+
45  static limb_t reduceQuick(limb_t *x);
+
46 
+
47  static void mul(limb_t *result, const limb_t *x, const limb_t *y);
+
48  static void square(limb_t *result, const limb_t *x)
+
49  {
+
50  mul(result, x, x);
+
51  }
+
52 
+
53  static void mulA24(limb_t *result, const limb_t *x);
+
54 
+
55  static void add(limb_t *result, const limb_t *x, const limb_t *y);
+
56  static void sub(limb_t *result, const limb_t *x, const limb_t *y);
+
57 
+
58  static void cswap(uint8_t select, limb_t *x, limb_t *y);
+
59 
+
60  static void recip(limb_t *result, const limb_t *x);
+
61 
+
62  static void unpack(limb_t *result, const uint8_t *x);
+
63  static void pack(uint8_t *result, const limb_t *x);
+
64 
+
65  // Constructor and destructor are private - cannot instantiate this class.
+
66  Curve25519() {}
+
67  ~Curve25519() {}
+
68 };
69 
-
70  static void mul(limb_t *result, const limb_t *x, const limb_t *y);
-
71  static void square(limb_t *result, const limb_t *x)
-
72  {
-
73  mul(result, x, x);
-
74  }
-
75 
-
76  static void mulA24(limb_t *result, const limb_t *x);
-
77 
-
78  static void add(limb_t *result, const limb_t *x, const limb_t *y);
-
79  static void sub(limb_t *result, const limb_t *x, const limb_t *y);
-
80 
-
81  static void cswap(uint8_t select, limb_t *x, limb_t *y);
-
82 
-
83  static void recip(limb_t *result, const limb_t *x);
-
84 
-
85  static void unpack(limb_t *result, const uint8_t *x);
-
86  static void pack(uint8_t *result, const limb_t *x);
-
87 
-
88  // Constructor and destructor are private - cannot instantiate this class.
-
89  Curve25519() {}
-
90  ~Curve25519() {}
-
91 };
-
92 
-
93 #endif
-
Diffie-Hellman key agreement based on the elliptic curve modulo 2^255 - 19.
Definition: Curve25519.h:35
+
70 #endif
+
Diffie-Hellman key agreement based on the elliptic curve modulo 2^255 - 19.
Definition: Curve25519.h:29
static bool eval(uint8_t result[32], const uint8_t s[32], const uint8_t x[32])
Evaluates the raw Curve25519 function.
Definition: Curve25519.cpp:68
static void dh1(uint8_t k[32], uint8_t f[32])
Performs phase 1 of a Diffie-Hellman key exchange using Curve25519.
Definition: Curve25519.cpp:231
static bool dh2(uint8_t k[32], uint8_t f[32])
Performs phase 2 of a Diffie-Hellman key exchange using Curve25519.
Definition: Curve25519.cpp:269
diff --git a/DMD_8cpp_source.html b/DMD_8cpp_source.html index 2e162aad..6fdc0c8c 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 69d377a8..d5453676 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 ca0c5dd4..021e3f9e 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 9f11a390..83a7f1ce 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/DS3231RTC_8cpp_source.html b/DS3231RTC_8cpp_source.html index 6338b3b1..2e685b0c 100644 --- a/DS3231RTC_8cpp_source.html +++ b/DS3231RTC_8cpp_source.html @@ -657,7 +657,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/DS3231RTC_8h_source.html b/DS3231RTC_8h_source.html index 7fd6f5c6..b3461ed4 100644 --- a/DS3231RTC_8h_source.html +++ b/DS3231RTC_8h_source.html @@ -202,7 +202,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/DS3232RTC_8cpp_source.html b/DS3232RTC_8cpp_source.html index 3bc62781..6871235d 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 7395d5ac..2c0c6b96 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 07aebb04..d3944077 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 58d86e1e..0a1f2de6 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 86e48a07..48a75b56 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 55769a06..5c310cc8 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 b392e559..bdfb2e1a 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 5e4c2163..45c45368 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 d4371255..99cf098c 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 277e056f..e7124f45 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 db308ea9..79e59a1d 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/GCM_8cpp_source.html b/GCM_8cpp_source.html new file mode 100644 index 00000000..1bcbe7ea --- /dev/null +++ b/GCM_8cpp_source.html @@ -0,0 +1,360 @@ + + + + + + +ArduinoLibs: GCM.cpp Source File + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
GCM.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 "GCM.h"
+
24 #include "Crypto.h"
+
25 #include "utility/EndianUtil.h"
+
26 #include <string.h>
+
27 
+ +
45  : blockCipher(0)
+
46 {
+
47  state.authSize = 0;
+
48  state.dataSize = 0;
+
49  state.dataStarted = false;
+
50  state.posn = 16;
+
51 }
+
52 
+ +
57 {
+
58  clean(state);
+
59 }
+
60 
+
61 size_t GCMCommon::keySize() const
+
62 {
+
63  return blockCipher->keySize();
+
64 }
+
65 
+
66 size_t GCMCommon::ivSize() const
+
67 {
+
68  return 16;
+
69 }
+
70 
+
71 size_t GCMCommon::tagSize() const
+
72 {
+
73  // The GCM specification recommends an IV size of 96 bits.
+
74  return 12;
+
75 }
+
76 
+
77 bool GCMCommon::setKey(const uint8_t *key, size_t len)
+
78 {
+
79  // Set the encryption key for the block cipher.
+
80  if (!blockCipher->setKey(key, len))
+
81  return false;
+
82 
+
83  // Construct the hashing key by encrypting a zero block.
+
84  memset(state.nonce, 0, 16);
+
85  blockCipher->encryptBlock(state.nonce, state.nonce);
+
86  ghash.reset(state.nonce);
+
87  return true;
+
88 }
+
89 
+
90 bool GCMCommon::setIV(const uint8_t *iv, size_t len)
+
91 {
+
92  // Note: We assume that setKey() has already been called to
+
93  // set the hashing key in the "ghash" object and that the
+
94  // hashing key itself is still stored in "state.nonce".
+
95 
+
96  // Format the counter block from the IV.
+
97  if (len == 12) {
+
98  // IV's of exactly 96 bits are used directly as the counter block.
+
99  memcpy(state.counter, iv, 12);
+
100  state.counter[12] = 0;
+
101  state.counter[13] = 0;
+
102  state.counter[14] = 0;
+
103  state.counter[15] = 1;
+
104  } else {
+
105  // IV's of other sizes are hashed to produce the counter block.
+
106  ghash.update(iv, len);
+
107  ghash.pad();
+
108  uint64_t sizes[2] = {0, htobe64(((uint64_t)len) * 8)};
+
109  ghash.update(sizes, sizeof(sizes));
+
110  clean(sizes);
+
111  ghash.finalize(state.counter, 16);
+
112  ghash.reset(state.nonce);
+
113  }
+
114 
+
115  // Reset the GCM object ready to process auth or payload data.
+
116  state.authSize = 0;
+
117  state.dataSize = 0;
+
118  state.dataStarted = false;
+
119  state.posn = 16;
+
120 
+
121  // Replace the hash key in "nonce" with the encrypted counter.
+
122  // This value will be XOR'ed with the final authentication hash
+
123  // value in computeTag().
+
124  blockCipher->encryptBlock(state.nonce, state.counter);
+
125 }
+
126 
+
132 static inline void increment(uint8_t counter[16])
+
133 {
+
134  uint16_t carry = 1;
+
135  carry += counter[15];
+
136  counter[15] = (uint8_t)carry;
+
137  carry = (carry >> 8) + counter[14];
+
138  counter[14] = (uint8_t)carry;
+
139  carry = (carry >> 8) + counter[13];
+
140  counter[13] = (uint8_t)carry;
+
141  carry = (carry >> 8) + counter[12];
+
142  counter[12] = (uint8_t)carry;
+
143 }
+
144 
+
145 void GCMCommon::encrypt(uint8_t *output, const uint8_t *input, size_t len)
+
146 {
+
147  // Finalize the authenticated data if necessary.
+
148  if (!state.dataStarted) {
+
149  ghash.pad();
+
150  state.dataStarted = true;
+
151  }
+
152 
+
153  // Encrypt the plaintext using the block cipher in counter mode.
+
154  uint8_t *out = output;
+
155  size_t size = len;
+
156  while (size > 0) {
+
157  // Create a new keystream block if necessary.
+
158  if (state.posn >= 16) {
+
159  increment(state.counter);
+
160  blockCipher->encryptBlock(state.stream, state.counter);
+
161  state.posn = 0;
+
162  }
+
163 
+
164  // Encrypt as many bytes as we can using the keystream block.
+
165  uint8_t temp = 16 - state.posn;
+
166  if (temp > size)
+
167  temp = size;
+
168  uint8_t *stream = state.stream + state.posn;
+
169  state.posn += temp;
+
170  size -= temp;
+
171  while (temp > 0) {
+
172  *out++ = *input++ ^ *stream++;
+
173  --temp;
+
174  }
+
175  }
+
176 
+
177  // Feed the ciphertext into the hash.
+
178  ghash.update(output, len);
+
179  state.dataSize += len;
+
180 }
+
181 
+
182 void GCMCommon::decrypt(uint8_t *output, const uint8_t *input, size_t len)
+
183 {
+
184  // Finalize the authenticated data if necessary.
+
185  if (!state.dataStarted) {
+
186  ghash.pad();
+
187  state.dataStarted = true;
+
188  }
+
189 
+
190  // Feed the ciphertext into the hash before we decrypt it.
+
191  ghash.update(input, len);
+
192  state.dataSize += len;
+
193 
+
194  // Decrypt the plaintext using the block cipher in counter mode.
+
195  while (len > 0) {
+
196  // Create a new keystream block if necessary.
+
197  if (state.posn >= 16) {
+
198  increment(state.counter);
+
199  blockCipher->encryptBlock(state.stream, state.counter);
+
200  state.posn = 0;
+
201  }
+
202 
+
203  // Decrypt as many bytes as we can using the keystream block.
+
204  uint8_t temp = 16 - state.posn;
+
205  if (temp > len)
+
206  temp = len;
+
207  uint8_t *stream = state.stream + state.posn;
+
208  state.posn += temp;
+
209  len -= temp;
+
210  while (temp > 0) {
+
211  *output++ = *input++ ^ *stream++;
+
212  --temp;
+
213  }
+
214  }
+
215 }
+
216 
+
217 void GCMCommon::addAuthData(const void *data, size_t len)
+
218 {
+
219  if (!state.dataStarted) {
+
220  ghash.update(data, len);
+
221  state.authSize += len;
+
222  }
+
223 }
+
224 
+
225 void GCMCommon::computeTag(void *tag, size_t len)
+
226 {
+
227  // Pad the hashed data and add the sizes.
+
228  ghash.pad();
+
229  uint64_t sizes[2] = {
+
230  htobe64(state.authSize * 8),
+
231  htobe64(state.dataSize * 8)
+
232  };
+
233  ghash.update(sizes, sizeof(sizes));
+
234  clean(sizes);
+
235 
+
236  // Get the finalized hash, encrypt it with the nonce, and return the tag.
+
237  ghash.finalize(state.stream, 16);
+
238  for (uint8_t posn = 0; posn < 16; ++posn)
+
239  state.stream[posn] ^= state.nonce[posn];
+
240  if (len > 16)
+
241  len = 16;
+
242  memcpy(tag, state.stream, len);
+
243 }
+
244 
+
245 bool GCMCommon::checkTag(const void *tag, size_t len)
+
246 {
+
247  // Can never match if the expected tag length is too long.
+
248  if (len > 16)
+
249  return false;
+
250 
+
251  // Compute the tag and check it.
+
252  computeTag(state.counter, 16);
+
253  return secure_compare(state.counter, tag, len);
+
254 }
+
255 
+ +
257 {
+
258  blockCipher->clear();
+
259  ghash.clear();
+
260  clean(state);
+
261  state.posn = 16;
+
262 }
+
263 
+
void computeTag(void *tag, size_t len)
Finalizes the encryption process and computes the authentication tag.
Definition: GCM.cpp:225
+
bool setKey(const uint8_t *key, size_t len)
Sets the key to use for future encryption and decryption operations.
Definition: GCM.cpp:77
+
size_t tagSize() const
Returns the size of the authentication tag.
Definition: GCM.cpp:71
+
void encrypt(uint8_t *output, const uint8_t *input, size_t len)
Encrypts an input buffer and writes the ciphertext to an output buffer.
Definition: GCM.cpp:145
+
void clear()
Clears all security-sensitive state from this cipher.
Definition: GCM.cpp:256
+
bool checkTag(const void *tag, size_t len)
Finalizes the decryption process and checks the authentication tag.
Definition: GCM.cpp:245
+
size_t ivSize() const
Size of the initialization vector for this cipher, in bytes.
Definition: GCM.cpp:66
+
void finalize(void *token, size_t len)
Finalizes the authentication process and returns the token.
Definition: GHASH.cpp:130
+
void addAuthData(const void *data, size_t len)
Adds extra data that will be authenticated but not encrypted.
Definition: GCM.cpp:217
+
void update(const void *data, size_t len)
Updates the message authenticator with more data.
Definition: GHASH.cpp:94
+
virtual void encryptBlock(uint8_t *output, const uint8_t *input)=0
Encrypts a single block using this cipher.
+
void decrypt(uint8_t *output, const uint8_t *input, size_t len)
Decrypts an input buffer and writes the plaintext to an output buffer.
Definition: GCM.cpp:182
+
virtual bool setKey(const uint8_t *key, size_t len)=0
Sets the key to use for future encryption and decryption operations.
+
GCMCommon()
Constructs a new cipher in GCM mode.
Definition: GCM.cpp:44
+
void pad()
Pads the input stream with zero bytes to a multiple of 16.
Definition: GHASH.cpp:146
+
virtual void clear()=0
Clears all security-sensitive state from this block cipher.
+
void clear()
Clears the authenticator's state, removing all sensitive data.
Definition: GHASH.cpp:159
+
virtual ~GCMCommon()
Destroys this cipher object after clearing sensitive information.
Definition: GCM.cpp:56
+
bool setIV(const uint8_t *iv, size_t len)
Sets the initialization vector to use for future encryption and decryption operations.
Definition: GCM.cpp:90
+
virtual size_t keySize() const =0
Default size of the key for this block cipher, in bytes.
+
size_t keySize() const
Default size of the key for this cipher, in bytes.
Definition: GCM.cpp:61
+
void reset(const void *key)
Resets the GHASH message authenticator for a new session.
Definition: GHASH.cpp:67
+
+ + + + diff --git a/GCM_8h_source.html b/GCM_8h_source.html new file mode 100644 index 00000000..d0b48d12 --- /dev/null +++ b/GCM_8h_source.html @@ -0,0 +1,199 @@ + + + + + + +ArduinoLibs: GCM.h Source File + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
GCM.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_GCM_h
+
24 #define CRYPTO_GCM_h
+
25 
+
26 #include "AuthenticatedCipher.h"
+
27 #include "BlockCipher.h"
+
28 #include "GHASH.h"
+
29 
+ +
31 {
+
32 public:
+
33  virtual ~GCMCommon();
+
34 
+
35  size_t keySize() const;
+
36  size_t ivSize() const;
+
37  size_t tagSize() const;
+
38 
+
39  bool setKey(const uint8_t *key, size_t len);
+
40  bool setIV(const uint8_t *iv, size_t len);
+
41 
+
42  void encrypt(uint8_t *output, const uint8_t *input, size_t len);
+
43  void decrypt(uint8_t *output, const uint8_t *input, size_t len);
+
44 
+
45  void addAuthData(const void *data, size_t len);
+
46 
+
47  void computeTag(void *tag, size_t len);
+
48  bool checkTag(const void *tag, size_t len);
+
49 
+
50  void clear();
+
51 
+
52 protected:
+
53  GCMCommon();
+
54  void setBlockCipher(BlockCipher *cipher) { blockCipher = cipher; }
+
55 
+
56 private:
+
57  BlockCipher *blockCipher;
+
58  GHASH ghash;
+
59  struct {
+
60  uint8_t counter[16];
+
61  uint8_t stream[16];
+
62  uint8_t nonce[16];
+
63  uint64_t authSize;
+
64  uint64_t dataSize;
+
65  bool dataStarted;
+
66  uint8_t posn;
+
67  } state;
+
68 };
+
69 
+
70 template <typename T>
+
71 class GCM : public GCMCommon
+
72 {
+
73 public:
+
74  GCM() { setBlockCipher(&cipher); }
+
75 
+
76 private:
+
77  T cipher;
+
78 };
+
79 
+
80 #endif
+
void computeTag(void *tag, size_t len)
Finalizes the encryption process and computes the authentication tag.
Definition: GCM.cpp:225
+
Implementation of the Galois Counter Mode (GCM).
Definition: GCM.h:71
+
bool setKey(const uint8_t *key, size_t len)
Sets the key to use for future encryption and decryption operations.
Definition: GCM.cpp:77
+
size_t tagSize() const
Returns the size of the authentication tag.
Definition: GCM.cpp:71
+
void encrypt(uint8_t *output, const uint8_t *input, size_t len)
Encrypts an input buffer and writes the ciphertext to an output buffer.
Definition: GCM.cpp:145
+
Abstract base class for block ciphers.
Definition: BlockCipher.h:29
+
GCM()
Constructs a new GCM object for the block cipher T.
Definition: GCM.h:74
+
Abstract base class for authenticated ciphers.
+
Concrete base class to assist with implementing GCM for 128-bit block ciphers.
Definition: GCM.h:30
+
void clear()
Clears all security-sensitive state from this cipher.
Definition: GCM.cpp:256
+
bool checkTag(const void *tag, size_t len)
Finalizes the decryption process and checks the authentication tag.
Definition: GCM.cpp:245
+
size_t ivSize() const
Size of the initialization vector for this cipher, in bytes.
Definition: GCM.cpp:66
+
void addAuthData(const void *data, size_t len)
Adds extra data that will be authenticated but not encrypted.
Definition: GCM.cpp:217
+
void decrypt(uint8_t *output, const uint8_t *input, size_t len)
Decrypts an input buffer and writes the plaintext to an output buffer.
Definition: GCM.cpp:182
+
GCMCommon()
Constructs a new cipher in GCM mode.
Definition: GCM.cpp:44
+
void setBlockCipher(BlockCipher *cipher)
Sets the block cipher to use for this GCM object.
Definition: GCM.h:54
+
Implementation of the GHASH message authenticator.
Definition: GHASH.h:29
+
virtual ~GCMCommon()
Destroys this cipher object after clearing sensitive information.
Definition: GCM.cpp:56
+
bool setIV(const uint8_t *iv, size_t len)
Sets the initialization vector to use for future encryption and decryption operations.
Definition: GCM.cpp:90
+
size_t keySize() const
Default size of the key for this cipher, in bytes.
Definition: GCM.cpp:61
+
+ + + + diff --git a/GHASH_8cpp_source.html b/GHASH_8cpp_source.html new file mode 100644 index 00000000..0508115a --- /dev/null +++ b/GHASH_8cpp_source.html @@ -0,0 +1,247 @@ + + + + + + +ArduinoLibs: GHASH.cpp Source File + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
GHASH.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 "GHASH.h"
+
24 #include "Crypto.h"
+
25 #include "utility/EndianUtil.h"
+
26 #include <string.h>
+
27 
+ +
48 {
+
49  state.posn = 0;
+
50 }
+
51 
+ +
56 {
+
57  clean(state);
+
58 }
+
59 
+
67 void GHASH::reset(const void *key)
+
68 {
+
69  // Copy the key into H and convert from big endian to host order.
+
70  memcpy(state.H, key, 16);
+
71 #if defined(CRYPTO_LITTLE_ENDIAN)
+
72  state.H[0] = be32toh(state.H[0]);
+
73  state.H[1] = be32toh(state.H[1]);
+
74  state.H[2] = be32toh(state.H[2]);
+
75  state.H[3] = be32toh(state.H[3]);
+
76 #endif
+
77 
+
78  // Reset the hash.
+
79  memset(state.Y, 0, sizeof(state.Y));
+
80  state.posn = 0;
+
81 }
+
82 
+
94 void GHASH::update(const void *data, size_t len)
+
95 {
+
96  // XOR the input with state.Y in 128-bit chunks and process them.
+
97  const uint8_t *d = (const uint8_t *)data;
+
98  while (len > 0) {
+
99  uint8_t size = 16 - state.posn;
+
100  if (size > len)
+
101  size = len;
+
102  uint8_t *y = ((uint8_t *)state.Y) + state.posn;
+
103  for (uint8_t i = 0; i < size; ++i)
+
104  y[i] ^= d[i];
+
105  state.posn += size;
+
106  len -= size;
+
107  d += size;
+
108  if (state.posn == 16) {
+
109  processChunk();
+
110  state.posn = 0;
+
111  }
+
112  }
+
113 }
+
114 
+
130 void GHASH::finalize(void *token, size_t len)
+
131 {
+
132  // Pad with zeroes to a multiple of 16 bytes.
+
133  pad();
+
134 
+
135  // The token is the current value of Y.
+
136  if (len > 16)
+
137  len = 16;
+
138  memcpy(token, state.Y, len);
+
139 }
+
140 
+ +
147 {
+
148  if (state.posn != 0) {
+
149  // Padding involves XOR'ing the rest of state.Y with zeroes,
+
150  // which does nothing. Immediately process the next chunk.
+
151  processChunk();
+
152  state.posn = 0;
+
153  }
+
154 }
+
155 
+ +
160 {
+
161  clean(state);
+
162 }
+
163 
+
164 void GHASH::processChunk()
+
165 {
+
166  uint32_t Z0 = 0; // Z = 0
+
167  uint32_t Z1 = 0;
+
168  uint32_t Z2 = 0;
+
169  uint32_t Z3 = 0;
+
170  uint32_t V0 = state.H[0]; // V = H
+
171  uint32_t V1 = state.H[1];
+
172  uint32_t V2 = state.H[2];
+
173  uint32_t V3 = state.H[3];
+
174 
+
175  // Multiply Z by V for the set bits in Y, starting at the top.
+
176  // This is a very simple bit by bit version that may not be very
+
177  // fast but it should be resistant to cache timing attacks.
+
178  for (uint8_t posn = 0; posn < 16; ++posn) {
+
179  uint8_t value = ((const uint8_t *)state.Y)[posn];
+
180  for (uint8_t bit = 0; bit < 8; ++bit, value <<= 1) {
+
181  // Extract the high bit of "value" and turn it into a mask.
+
182  uint32_t mask = (~((uint32_t)(value >> 7))) + 1;
+
183 
+
184  // XOR V with Z if the bit is 1.
+
185  Z0 ^= (V0 & mask);
+
186  Z1 ^= (V1 & mask);
+
187  Z2 ^= (V2 & mask);
+
188  Z3 ^= (V3 & mask);
+
189 
+
190  // Rotate V right by 1 bit.
+
191  mask = ((~(V3 & 0x01)) + 1) & 0xE1000000;
+
192  V3 = (V3 >> 1) | (V2 << 31);
+
193  V2 = (V2 >> 1) | (V1 << 31);
+
194  V1 = (V1 >> 1) | (V0 << 31);
+
195  V0 = (V0 >> 1) ^ mask;
+
196  }
+
197  }
+
198 
+
199  // We have finished the block so copy Z into Y and byte-swap.
+
200  state.Y[0] = htobe32(Z0);
+
201  state.Y[1] = htobe32(Z1);
+
202  state.Y[2] = htobe32(Z2);
+
203  state.Y[3] = htobe32(Z3);
+
204 }
+
void finalize(void *token, size_t len)
Finalizes the authentication process and returns the token.
Definition: GHASH.cpp:130
+
void update(const void *data, size_t len)
Updates the message authenticator with more data.
Definition: GHASH.cpp:94
+
~GHASH()
Destroys this GHASH message authenticator.
Definition: GHASH.cpp:55
+
void pad()
Pads the input stream with zero bytes to a multiple of 16.
Definition: GHASH.cpp:146
+
void clear()
Clears the authenticator's state, removing all sensitive data.
Definition: GHASH.cpp:159
+
GHASH()
Constructs a new GHASH message authenticator.
Definition: GHASH.cpp:47
+
void reset(const void *key)
Resets the GHASH message authenticator for a new session.
Definition: GHASH.cpp:67
+
+ + + + diff --git a/GHASH_8h_source.html b/GHASH_8h_source.html new file mode 100644 index 00000000..659a815f --- /dev/null +++ b/GHASH_8h_source.html @@ -0,0 +1,160 @@ + + + + + + +ArduinoLibs: GHASH.h Source File + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
GHASH.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_GHASH_h
+
24 #define CRYPTO_GHASH_h
+
25 
+
26 #include <inttypes.h>
+
27 #include <stddef.h>
+
28 
+
29 class GHASH
+
30 {
+
31 public:
+
32  GHASH();
+
33  ~GHASH();
+
34 
+
35  void reset(const void *key);
+
36  void update(const void *data, size_t len);
+
37  void finalize(void *token, size_t len);
+
38 
+
39  void pad();
+
40 
+
41  void clear();
+
42 
+
43 private:
+
44  struct {
+
45  uint32_t H[4];
+
46  uint32_t Y[4];
+
47  uint8_t posn;
+
48  } state;
+
49 
+
50  void processChunk();
+
51 };
+
52 
+
53 #endif
+
void finalize(void *token, size_t len)
Finalizes the authentication process and returns the token.
Definition: GHASH.cpp:130
+
void update(const void *data, size_t len)
Updates the message authenticator with more data.
Definition: GHASH.cpp:94
+
~GHASH()
Destroys this GHASH message authenticator.
Definition: GHASH.cpp:55
+
void pad()
Pads the input stream with zero bytes to a multiple of 16.
Definition: GHASH.cpp:146
+
Implementation of the GHASH message authenticator.
Definition: GHASH.h:29
+
void clear()
Clears the authenticator's state, removing all sensitive data.
Definition: GHASH.cpp:159
+
GHASH()
Constructs a new GHASH message authenticator.
Definition: GHASH.cpp:47
+
void reset(const void *key)
Resets the GHASH message authenticator for a new session.
Definition: GHASH.cpp:67
+
+ + + + diff --git a/Hash_8cpp_source.html b/Hash_8cpp_source.html index 8b2ddb60..ae1a42c9 100644 --- a/Hash_8cpp_source.html +++ b/Hash_8cpp_source.html @@ -151,7 +151,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Hash_8h_source.html b/Hash_8h_source.html index 20ac38f9..da525750 100644 --- a/Hash_8h_source.html +++ b/Hash_8h_source.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/I2CMaster_8cpp_source.html b/I2CMaster_8cpp_source.html index 216f2ec9..b15f4cc0 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 59aa5943..fc2a43c6 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 63c48845..dd6590b5 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 988413c7..47218df1 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 f3c32805..bf23e2de 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 4fcee9f9..02eea73b 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 index 56c53a18..959ff56e 100644 --- a/KeccakCore_8cpp_source.html +++ b/KeccakCore_8cpp_source.html @@ -358,7 +358,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/KeccakCore_8h_source.html b/KeccakCore_8h_source.html index ac3959bc..45ba767b 100644 --- a/KeccakCore_8h_source.html +++ b/KeccakCore_8h_source.html @@ -166,7 +166,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/LCD_8cpp_source.html b/LCD_8cpp_source.html index ffb4b2d9..63da2d40 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 aa64a5b5..3c5d87ac 100644 --- a/LCD_8h_source.html +++ b/LCD_8h_source.html @@ -202,7 +202,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/ListField_8cpp_source.html b/ListField_8cpp_source.html index ffff232d..d1e1e14a 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 81f42fd5..0233881d 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 1ea56e8f..f7952c21 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 59b1f132..3e4ba437 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 d55b863a..9ecae910 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 a1fe11f4..e93e8980 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 e0b2569f..72ac10ab 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 394bac26..65518f97 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 5d1c4684..9b52e341 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/Poly1305_8cpp_source.html b/Poly1305_8cpp_source.html new file mode 100644 index 00000000..db9dbb5a --- /dev/null +++ b/Poly1305_8cpp_source.html @@ -0,0 +1,361 @@ + + + + + + +ArduinoLibs: Poly1305.cpp Source File + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
Poly1305.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 "Poly1305.h"
+
24 #include "Crypto.h"
+
25 #include "utility/EndianUtil.h"
+
26 #include <string.h>
+
27 
+
61 // Useful sizes for limb array and word manipulation.
+
62 #define NUM_LIMBS_128BIT (16 / sizeof(limb_t))
+
63 #define NUM_LIMBS_130BIT ((16 / sizeof(limb_t)) + 1)
+
64 #define LIMB_BITS (sizeof(limb_t) * 8)
+
65 
+
66 // Endian helper macros for limbs and arrays of limbs.
+
67 #if BIGNUMBER_LIMB_8BIT
+
68 #define lelimbtoh(x) (x)
+
69 #define htolelimb(x) (x)
+
70 #elif BIGNUMBER_LIMB_16BIT
+
71 #define lelimbtoh(x) (le16toh((x)))
+
72 #define htolelimb(x) (htole16((x)))
+
73 #elif BIGNUMBER_LIMB_32BIT
+
74 #define lelimbtoh(x) (le32toh((x)))
+
75 #define htolelimb(x) (htole32((x)))
+
76 #endif
+
77 #if defined(CRYPTO_LITTLE_ENDIAN)
+
78 #define littleToHost(r,size) do { ; } while (0)
+
79 #else
+
80 #define littleToHost(r,size) \
+
81  do { \
+
82  for (uint8_t i = 0; i < (size); ++i) \
+
83  (r)[i] = lelimbtoh((r)[i]); \
+
84  } while (0)
+
85 #endif
+
86 
+ +
91 {
+
92  state.chunkSize = 0;
+
93 }
+
94 
+ +
100 {
+
101  clean(state);
+
102 }
+
103 
+
111 void Poly1305::reset(const void *key)
+
112 {
+
113  // Copy the key into place and clear the bits we don't need.
+
114  uint8_t *r = (uint8_t *)state.r;
+
115  memcpy(r, key, 16);
+
116  r[3] &= 0x0F;
+
117  r[4] &= 0xFC;
+
118  r[7] &= 0x0F;
+
119  r[8] &= 0xFC;
+
120  r[11] &= 0x0F;
+
121  r[12] &= 0xFC;
+
122  r[15] &= 0x0F;
+
123 
+
124  // Convert into little-endian if necessary.
+
125  littleToHost(state.r, NUM_LIMBS_128BIT);
+
126 
+
127  // Reset the hashing process.
+
128  state.chunkSize = 0;
+
129  memset(state.h, 0, sizeof(state.h));
+
130 }
+
131 
+
143 void Poly1305::update(const void *data, size_t len)
+
144 {
+
145  // Break the input up into 128-bit chunks and process each in turn.
+
146  const uint8_t *d = (const uint8_t *)data;
+
147  while (len > 0) {
+
148  uint8_t size = 16 - state.chunkSize;
+
149  if (size > len)
+
150  size = len;
+
151  memcpy(((uint8_t *)state.c) + state.chunkSize, d, size);
+
152  state.chunkSize += size;
+
153  len -= size;
+
154  d += size;
+
155  if (state.chunkSize == 16) {
+
156  littleToHost(state.c, NUM_LIMBS_128BIT);
+
157  state.c[NUM_LIMBS_128BIT] = 1;
+
158  processChunk();
+
159  state.chunkSize = 0;
+
160  }
+
161  }
+
162 }
+
163 
+
180 void Poly1305::finalize(const void *nonce, void *token, size_t len)
+
181 {
+
182  dlimb_t carry;
+
183  uint8_t i;
+
184 
+
185  // Pad and flush the final chunk.
+
186  if (state.chunkSize > 0) {
+
187  uint8_t *c = (uint8_t *)state.c;
+
188  c[state.chunkSize] = 1;
+
189  memset(c + state.chunkSize + 1, 0, 16 - state.chunkSize - 1);
+
190  littleToHost(state.c, NUM_LIMBS_128BIT);
+
191  state.c[NUM_LIMBS_128BIT] = 0;
+
192  processChunk();
+
193  }
+
194 
+
195  // At this point, processChunk() has left h as a partially reduced
+
196  // result that is less than (2^130 - 5) * 6. Perform one more
+
197  // reduction and a trial subtraction to produce the final result.
+
198 
+
199  // Multiply the high bits of h by 5 and add them to the 130 low bits.
+
200  carry = (dlimb_t)((state.h[NUM_LIMBS_128BIT] >> 2) +
+
201  (state.h[NUM_LIMBS_128BIT] & ~((limb_t)3)));
+
202  state.h[NUM_LIMBS_128BIT] &= 0x0003;
+
203  for (i = 0; i < NUM_LIMBS_128BIT; ++i) {
+
204  carry += state.h[i];
+
205  state.h[i] = (limb_t)carry;
+
206  carry >>= LIMB_BITS;
+
207  }
+
208  state.h[i] += (limb_t)carry;
+
209 
+
210  // Subtract (2^130 - 5) from h by computing t = h + 5 - 2^130.
+
211  // The "minus 2^130" step is implicit.
+
212  carry = 5;
+
213  for (i = 0; i < NUM_LIMBS_130BIT; ++i) {
+
214  carry += state.h[i];
+
215  state.t[i] = (limb_t)carry;
+
216  carry >>= LIMB_BITS;
+
217  }
+
218 
+
219  // Borrow occurs if bit 2^130 of the previous t result is zero.
+
220  // Carefully turn this into a selection mask so we can select either
+
221  // h or t as the final result. We don't care about the highest word
+
222  // of the result because we are about to drop it in the next step.
+
223  // We have to do it this way to avoid giving away any information
+
224  // about the value of h in the instruction timing.
+
225  limb_t mask = (~((state.t[NUM_LIMBS_128BIT] >> 2) & 1)) + 1;
+
226  limb_t nmask = ~mask;
+
227  for (i = 0; i < NUM_LIMBS_128BIT; ++i) {
+
228  state.h[i] = (state.h[i] & nmask) | (state.t[i] & mask);
+
229  }
+
230 
+
231  // Add the encrypted nonce and format the final hash.
+
232  memcpy(state.c, nonce, 16);
+
233  littleToHost(state.c, NUM_LIMBS_128BIT);
+
234  carry = 0;
+
235  for (i = 0; i < NUM_LIMBS_128BIT; ++i) {
+
236  carry += state.h[i];
+
237  carry += state.c[i];
+
238  state.h[i] = htolelimb((limb_t)carry);
+
239  carry >>= LIMB_BITS;
+
240  }
+
241  if (len > 16)
+
242  len = 16;
+
243  memcpy(token, state.h, len);
+
244 }
+
245 
+ +
252 {
+
253  if (state.chunkSize != 0) {
+
254  memset(((uint8_t *)state.c) + state.chunkSize, 0, 16 - state.chunkSize);
+
255  littleToHost(state.c, NUM_LIMBS_128BIT);
+
256  state.c[NUM_LIMBS_128BIT] = 1;
+
257  processChunk();
+
258  state.chunkSize = 0;
+
259  }
+
260 }
+
261 
+ +
266 {
+
267  clean(state);
+
268 }
+
269 
+
273 void Poly1305::processChunk()
+
274 {
+
275  // Compute h = ((h + c) * r) mod (2^130 - 5).
+
276 
+
277  // Start with h += c. We assume that h is less than (2^130 - 5) * 6
+
278  // and that c is less than 2^129, so the result will be less than 2^133.
+
279  dlimb_t carry = 0;
+
280  uint8_t i, j;
+
281  for (i = 0; i < NUM_LIMBS_130BIT; ++i) {
+
282  carry += state.h[i];
+
283  carry += state.c[i];
+
284  state.h[i] = (limb_t)carry;
+
285  carry >>= LIMB_BITS;
+
286  }
+
287 
+
288  // Multiply h by r. We know that r is less than 2^124 because the
+
289  // top 4 bits were AND-ed off by reset(). That makes h * r less
+
290  // than 2^257. Which is less than the (2^130 - 6)^2 we want for
+
291  // the modulo reduction step that follows.
+
292  carry = 0;
+
293  limb_t word = state.r[0];
+
294  for (i = 0; i < NUM_LIMBS_130BIT; ++i) {
+
295  carry += ((dlimb_t)(state.h[i])) * word;
+
296  state.t[i] = (limb_t)carry;
+
297  carry >>= LIMB_BITS;
+
298  }
+
299  state.t[NUM_LIMBS_130BIT] = (limb_t)carry;
+
300  for (i = 1; i < NUM_LIMBS_128BIT; ++i) {
+
301  word = state.r[i];
+
302  carry = 0;
+
303  for (j = 0; j < NUM_LIMBS_130BIT; ++j) {
+
304  carry += ((dlimb_t)(state.h[j])) * word;
+
305  carry += state.t[i + j];
+
306  state.t[i + j] = (limb_t)carry;
+
307  carry >>= LIMB_BITS;
+
308  }
+
309  state.t[i + NUM_LIMBS_130BIT] = (limb_t)carry;
+
310  }
+
311 
+
312  // Reduce h * r modulo (2^130 - 5) by multiplying the high 130 bits by 5
+
313  // and adding them to the low 130 bits. See the explaination in the
+
314  // comments for Curve25519::reduce() for a description of how this works.
+
315  carry = ((dlimb_t)(state.t[NUM_LIMBS_128BIT] >> 2)) +
+
316  (state.t[NUM_LIMBS_128BIT] & ~((limb_t)3));
+
317  state.t[NUM_LIMBS_128BIT] &= 0x0003;
+
318  for (i = 0; i < NUM_LIMBS_128BIT; ++i) {
+
319  // Shift the next word of t up by (LIMB_BITS - 2) bits and then
+
320  // multiply it by 5. Breaking it down, we can add the results
+
321  // of shifting up by LIMB_BITS and shifting up by (LIMB_BITS - 2).
+
322  // The main wrinkle here is that this can result in an intermediate
+
323  // carry that is (LIMB_BITS * 2 + 1) bits in size which doesn't
+
324  // fit within a dlimb_t variable. However, we can defer adding
+
325  // (word << LIMB_BITS) until after the "carry >>= LIMB_BITS" step
+
326  // because it won't affect the low bits of the carry.
+
327  word = state.t[i + NUM_LIMBS_130BIT];
+
328  carry += ((dlimb_t)word) << (LIMB_BITS - 2);
+
329  carry += state.t[i];
+
330  state.h[i] = (limb_t)carry;
+
331  carry >>= LIMB_BITS;
+
332  carry += word;
+
333  }
+
334  state.h[i] = (limb_t)(carry + state.t[NUM_LIMBS_128BIT]);
+
335 
+
336  // At this point, h is either the answer of reducing modulo (2^130 - 5)
+
337  // or it is at most 5 subtractions away from the answer we want.
+
338  // Leave it as-is for now with h less than (2^130 - 5) * 6. It is
+
339  // still within a range where the next h * r step will not overflow.
+
340 }
+
void finalize(const void *nonce, void *token, size_t len)
Finalizes the authentication process and returns the token.
Definition: Poly1305.cpp:180
+
void reset(const void *key)
Resets the Poly1305 message authenticator for a new session.
Definition: Poly1305.cpp:111
+
void update(const void *data, size_t len)
Updates the message authenticator with more data.
Definition: Poly1305.cpp:143
+
void pad()
Pads the input stream with zero bytes to a multiple of 16.
Definition: Poly1305.cpp:251
+
~Poly1305()
Destroys this Poly1305 message authenticator after clearing all sensitive information.
Definition: Poly1305.cpp:99
+
Poly1305()
Constructs a new Poly1305 message authenticator.
Definition: Poly1305.cpp:90
+
void clear()
Clears the authenticator's state, removing all sensitive data.
Definition: Poly1305.cpp:265
+
+ + + + diff --git a/Poly1305_8h_source.html b/Poly1305_8h_source.html new file mode 100644 index 00000000..23b021ff --- /dev/null +++ b/Poly1305_8h_source.html @@ -0,0 +1,162 @@ + + + + + + +ArduinoLibs: Poly1305.h Source File + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ + +
+
+
+
Poly1305.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_POLY1305_h
+
24 #define CRYPTO_POLY1305_h
+
25 
+
26 #include "BigNumberUtil.h"
+
27 #include <stddef.h>
+
28 
+
29 class Poly1305
+
30 {
+
31 public:
+
32  Poly1305();
+
33  ~Poly1305();
+
34 
+
35  void reset(const void *key);
+
36  void update(const void *data, size_t len);
+
37  void finalize(const void *nonce, void *token, size_t len);
+
38 
+
39  void pad();
+
40 
+
41  void clear();
+
42 
+
43 private:
+
44  struct {
+
45  limb_t h[(16 / sizeof(limb_t)) + 1];
+
46  limb_t c[(16 / sizeof(limb_t)) + 1];
+
47  limb_t r[(16 / sizeof(limb_t))];
+
48  limb_t t[(32 / sizeof(limb_t)) + 1];
+
49  uint8_t chunkSize;
+
50  } state;
+
51 
+
52  void processChunk();
+
53 };
+
54 
+
55 #endif
+
Poly1305 message authenticator.
Definition: Poly1305.h:29
+
void finalize(const void *nonce, void *token, size_t len)
Finalizes the authentication process and returns the token.
Definition: Poly1305.cpp:180
+
void reset(const void *key)
Resets the Poly1305 message authenticator for a new session.
Definition: Poly1305.cpp:111
+
void update(const void *data, size_t len)
Updates the message authenticator with more data.
Definition: Poly1305.cpp:143
+
void pad()
Pads the input stream with zero bytes to a multiple of 16.
Definition: Poly1305.cpp:251
+
~Poly1305()
Destroys this Poly1305 message authenticator after clearing all sensitive information.
Definition: Poly1305.cpp:99
+
Poly1305()
Constructs a new Poly1305 message authenticator.
Definition: Poly1305.cpp:90
+
void clear()
Clears the authenticator's state, removing all sensitive data.
Definition: Poly1305.cpp:265
+
+ + + + diff --git a/PowerSave_8cpp_source.html b/PowerSave_8cpp_source.html index 7cd2467c..2f8af1e3 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 481fdd5f..0c064daa 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 c8ff9269..5d42b95a 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 3f4be017..f6448b91 100644 --- a/RNG_8cpp_source.html +++ b/RNG_8cpp_source.html @@ -366,13 +366,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
void loop()
Run periodic housekeeping tasks on the random number generator.
Definition: RNG.cpp:493
Pseudo random number generator suitable for cryptography.
Definition: RNG.h:31
static const int SEED_SIZE
Size of a saved random number seed in EEPROM space.
Definition: RNG.h:53
-
static void hashCore(uint32_t *output, const uint32_t *input, uint8_t rounds)
Executes the ChaCha hash core on an input memory block.
Definition: ChaCha.cpp:230
+
static void hashCore(uint32_t *output, const uint32_t *input, uint8_t rounds)
Executes the ChaCha hash core on an input memory block.
Definition: ChaCha.cpp:253
void stir(const uint8_t *data, size_t len, unsigned int credit=0)
Stirs additional entropy data into the random pool.
Definition: RNG.cpp:406
void setAutoSaveTime(uint16_t minutes)
Sets the amount of time between automatic seed saves.
Definition: RNG.cpp:272
diff --git a/RNG_8h_source.html b/RNG_8h_source.html index 38eeb55a..fe8c9b83 100644 --- a/RNG_8h_source.html +++ b/RNG_8h_source.html @@ -176,7 +176,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/RTC_8cpp_source.html b/RTC_8cpp_source.html index 83343adc..039443ab 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 48fd84fc..850f59df 100644 --- a/RTC_8h_source.html +++ b/RTC_8h_source.html @@ -237,7 +237,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/RingOscillatorNoiseSource_8cpp_source.html b/RingOscillatorNoiseSource_8cpp_source.html index d7c59680..cd8ccc0f 100644 --- a/RingOscillatorNoiseSource_8cpp_source.html +++ b/RingOscillatorNoiseSource_8cpp_source.html @@ -285,7 +285,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/RingOscillatorNoiseSource_8h_source.html b/RingOscillatorNoiseSource_8h_source.html index 9925c451..47326469 100644 --- a/RingOscillatorNoiseSource_8h_source.html +++ b/RingOscillatorNoiseSource_8h_source.html @@ -145,7 +145,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/SHA1_8cpp_source.html b/SHA1_8cpp_source.html index f89abaad..a4da4cb4 100644 --- a/SHA1_8cpp_source.html +++ b/SHA1_8cpp_source.html @@ -323,7 +323,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/SHA1_8h_source.html b/SHA1_8h_source.html index 06b20691..79e74f14 100644 --- a/SHA1_8h_source.html +++ b/SHA1_8h_source.html @@ -160,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/SHA256_8cpp_source.html b/SHA256_8cpp_source.html index 73bac9de..6edca6aa 100644 --- a/SHA256_8cpp_source.html +++ b/SHA256_8cpp_source.html @@ -339,7 +339,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/SHA256_8h_source.html b/SHA256_8h_source.html index 594e954d..923d58be 100644 --- a/SHA256_8h_source.html +++ b/SHA256_8h_source.html @@ -160,7 +160,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/SHA3_8cpp_source.html b/SHA3_8cpp_source.html index 53b4d7c5..d83d95ed 100644 --- a/SHA3_8cpp_source.html +++ b/SHA3_8cpp_source.html @@ -257,7 +257,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/SHA3_8h_source.html b/SHA3_8h_source.html index 7cad9e90..7c52eaad 100644 --- a/SHA3_8h_source.html +++ b/SHA3_8h_source.html @@ -188,7 +188,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/SHA512_8cpp_source.html b/SHA512_8cpp_source.html index 91672256..63ba87a0 100644 --- a/SHA512_8cpp_source.html +++ b/SHA512_8cpp_source.html @@ -355,7 +355,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/SHA512_8h_source.html b/SHA512_8h_source.html index 44f66d0f..d1f27ed0 100644 --- a/SHA512_8h_source.html +++ b/SHA512_8h_source.html @@ -161,7 +161,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/SoftI2C_8cpp_source.html b/SoftI2C_8cpp_source.html index d94fe127..07dc4a3e 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 ea12fc27..2f507c93 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 a8c03bf2..7afcd1c7 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 b25fcb45..3eee93c4 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 1b866f48..4db6da8f 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 44b0b131..4f053cf5 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 ff4d01f1..3ad719f7 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 c0bf95ac..0d42071a 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 00c51ea8..2d84e5c4 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 6834f30b..a2917798 100644 --- a/alarm_clock.html +++ b/alarm_clock.html @@ -140,7 +140,7 @@ Completed Clock diff --git a/annotated.html b/annotated.html index 5613cb36..723d9f63 100644 --- a/annotated.html +++ b/annotated.html @@ -93,62 +93,68 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); oCAES192AES block cipher with 192-bit keys oCAES256AES block cipher with 256-bit keys oCAESCommonAbstract base class for AES block ciphers -oCBitmapRepresents a monochrome bitmap within main memory -oCBLAKE2bBLAKE2b hash algorithm -oCBLAKE2sBLAKE2s hash algorithm -oCBlinkLEDBlink a LED on a digital output pin -oCBlockCipherAbstract base class for block ciphers -oCBoolFieldField that manages the input of a boolean value -oCCBCImplementation of the Cipher Block Chaining (CBC) mode for 128-bit block ciphers -oCCBCCommonConcrete base class to assist with implementing CBC for 128-bit block ciphers -oCCFBImplementation of the Cipher Feedback (CFB) mode for 128-bit block ciphers -oCCFBCommonConcrete base class to assist with implementing CFB for 128-bit block ciphers -oCChaChaChaCha stream cipher -oCCharlieplexManage an array of LED's in a charlieplexed arrangement -oCChaseLEDsChase LED's on output pins in a defined sequence -oCCipherAbstract base class for stream ciphers -oCCTRImplementation of the Counter (CTR) mode for 128-bit block ciphers -oCCTRCommonConcrete base class to assist with implementing CTR mode for 128-bit block ciphers -oCCurve25519Diffie-Hellman key agreement based on the elliptic curve modulo 2^255 - 19 -oCDMDHandle large dot matrix displays composed of LED's -oCDS1307RTCCommunicates with a DS1307 realtime clock chip via I2C -oCDS3231RTCCommunicates with a DS3231 realtime clock chip via I2C -oCDS3232RTCCommunicates with a DS3232 realtime clock chip via I2C -oCEEPROM24Reading and writing EEPROM's from the 24LCXX family -oCFieldManages a single data input/output field within a Form -oCFormManager for a form containing data input/output fields -oCHashAbstract base class for cryptographic hash algorithms -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 -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 -oCRingOscillatorNoiseSourceProcesses the signal from a ring oscillator based noise source -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 +oCAuthenticatedCipherAbstract base class for authenticated ciphers +oCBitmapRepresents a monochrome bitmap within main memory +oCBLAKE2bBLAKE2b hash algorithm +oCBLAKE2sBLAKE2s hash algorithm +oCBlinkLEDBlink a LED on a digital output pin +oCBlockCipherAbstract base class for block ciphers +oCBoolFieldField that manages the input of a boolean value +oCCBCImplementation of the Cipher Block Chaining (CBC) mode for 128-bit block ciphers +oCCBCCommonConcrete base class to assist with implementing CBC for 128-bit block ciphers +oCCFBImplementation of the Cipher Feedback (CFB) mode for 128-bit block ciphers +oCCFBCommonConcrete base class to assist with implementing CFB for 128-bit block ciphers +oCChaChaChaCha stream cipher +oCChaChaPolyAuthenticated cipher based on ChaCha and Poly1305 +oCCharlieplexManage an array of LED's in a charlieplexed arrangement +oCChaseLEDsChase LED's on output pins in a defined sequence +oCCipherAbstract base class for stream ciphers +oCCTRImplementation of the Counter (CTR) mode for 128-bit block ciphers +oCCTRCommonConcrete base class to assist with implementing CTR mode for 128-bit block ciphers +oCCurve25519Diffie-Hellman key agreement based on the elliptic curve modulo 2^255 - 19 +oCDMDHandle large dot matrix displays composed of LED's +oCDS1307RTCCommunicates with a DS1307 realtime clock chip via I2C +oCDS3231RTCCommunicates with a DS3231 realtime clock chip via I2C +oCDS3232RTCCommunicates with a DS3232 realtime clock chip via I2C +oCEEPROM24Reading and writing EEPROM's from the 24LCXX family +oCFieldManages a single data input/output field within a Form +oCFormManager for a form containing data input/output fields +oCGCMImplementation of the Galois Counter Mode (GCM) +oCGCMCommonConcrete base class to assist with implementing GCM for 128-bit block ciphers +oCGHASHImplementation of the GHASH message authenticator +oCHashAbstract base class for cryptographic hash algorithms +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 +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 +oCPoly1305Poly1305 message authenticator +oCRingOscillatorNoiseSourceProcesses the signal from a ring oscillator based noise source +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 01c3a7b8..e2fe3365 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 377150de..ba25126c 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 90953799..9ce0bdc2 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 03a3d125..0f894590 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 5f79d6ce..f1ed064d 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 57177cd1..bd75c052 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 849d1bfb..1793b5e7 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 0fe407fd..8277d7c3 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 28f256cd..6fee3a29 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 cc8ec213..1e25c3c1 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 fbfd8edb..fbabc9e8 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 d53b18a3..8aa6f214 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 8431b8de..23173d74 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 4e246bea..d4171d5b 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 63999532..d9350f13 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 4632aeb5..cced77f9 100644 --- a/classAESCommon.html +++ b/classAESCommon.html @@ -322,7 +322,7 @@ Protected Member Functions diff --git a/classAuthenticatedCipher-members.html b/classAuthenticatedCipher-members.html new file mode 100644 index 00000000..bc497f85 --- /dev/null +++ b/classAuthenticatedCipher-members.html @@ -0,0 +1,116 @@ + + + + + + +ArduinoLibs: Member List + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+
+
+
AuthenticatedCipher Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + +
addAuthData(const void *data, size_t len)=0AuthenticatedCipherpure virtual
AuthenticatedCipher()AuthenticatedCipher
checkTag(const void *tag, size_t len)=0AuthenticatedCipherpure virtual
Cipher()Cipher
clear()=0Cipherpure virtual
computeTag(void *tag, size_t len)=0AuthenticatedCipherpure virtual
decrypt(uint8_t *output, const uint8_t *input, size_t len)=0Cipherpure virtual
encrypt(uint8_t *output, const uint8_t *input, size_t len)=0Cipherpure virtual
ivSize() const =0Cipherpure virtual
keySize() const =0Cipherpure virtual
setIV(const uint8_t *iv, size_t len)=0Cipherpure virtual
setKey(const uint8_t *key, size_t len)=0Cipherpure virtual
tagSize() const =0AuthenticatedCipherpure virtual
~AuthenticatedCipher()AuthenticatedCiphervirtual
~Cipher()Ciphervirtual
+ + + + diff --git a/classAuthenticatedCipher.html b/classAuthenticatedCipher.html new file mode 100644 index 00000000..f67ee4e5 --- /dev/null +++ b/classAuthenticatedCipher.html @@ -0,0 +1,357 @@ + + + + + + +ArduinoLibs: AuthenticatedCipher Class Reference + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
AuthenticatedCipher Class Referenceabstract
+
+
+ +

Abstract base class for authenticated ciphers. + More...

+ +

#include <AuthenticatedCipher.h>

+
+Inheritance diagram for AuthenticatedCipher:
+
+
+ + +Cipher +ChaChaPoly +GCMCommon +GCM< T > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

AuthenticatedCipher ()
 Constructs a new authenticated cipher.
 
+virtual ~AuthenticatedCipher ()
 Destroys this authenticated cipher.
 
virtual size_t tagSize () const =0
 Returns the size of the authentication tag. More...
 
virtual void addAuthData (const void *data, size_t len)=0
 Adds extra data that will be authenticated but not encrypted. More...
 
virtual void computeTag (void *tag, size_t len)=0
 Finalizes the encryption process and computes the authentication tag. More...
 
virtual bool checkTag (const void *tag, size_t len)=0
 Finalizes the decryption process and checks the authentication tag. More...
 
- Public Member Functions inherited from Cipher
Cipher ()
 Constructs a new cipher object.
 
virtual ~Cipher ()
 Destroys this cipher object. More...
 
virtual size_t keySize () const =0
 Default size of the key for this cipher, in bytes. More...
 
virtual size_t ivSize () const =0
 Size of the initialization vector for this cipher, in bytes. More...
 
virtual bool setKey (const uint8_t *key, size_t len)=0
 Sets the key to use for future encryption and decryption operations. More...
 
virtual bool setIV (const uint8_t *iv, size_t len)=0
 Sets the initialization vector to use for future encryption and decryption operations. More...
 
virtual void encrypt (uint8_t *output, const uint8_t *input, size_t len)=0
 Encrypts an input buffer and writes the ciphertext to an output buffer. More...
 
virtual void decrypt (uint8_t *output, const uint8_t *input, size_t len)=0
 Decrypts an input buffer and writes the plaintext to an output buffer. More...
 
virtual void clear ()=0
 Clears all security-sensitive state from this cipher. More...
 
+

Detailed Description

+

Abstract base class for authenticated ciphers.

+

This class abstracts the details of algorithms that provide Authenticated Encryption with Associated Data (AEAD). Such algorithms combine encryption with message authentication to provide a single primitive.

+

Authenticated ciphers have four parameters: the secret key, an initialization vector (called a "nonce" in the literature), the plaintext, and some associated data which is to be authenticated with the plaintext but not encrypted. Associated data might be sequence numbers, IP addresses, protocol versions, or other information that is not secret but is important and unique to the session.

+

Subclasses encrypt the plaintext content and output the ciphertext. Once all plaintext has been processed, the caller should invoke computeTag() to obtain the authentication tag to transmit with the ciphertext. When the ciphertext is later decrypted, the checkTag() function can be used to check that the data is authentic.

+

Reference: RFC 5116

+
See Also
Cipher
+ +

Definition at line 28 of file AuthenticatedCipher.h.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void AuthenticatedCipher::addAuthData (const void * data,
size_t len 
)
+
+pure virtual
+
+ +

Adds extra data that will be authenticated but not encrypted.

+
Parameters
+ + + +
dataThe extra data to be authenticated.
lenThe number of bytes of extra data to be authenticated.
+
+
+

This function must be called before the first call to encrypt() or decrypt(). That is, it is assumed that all extra data for authentication is available before the first payload data block and that it will be prepended to the payload for authentication. If the subclass needs to process the extra data after the payload, then it is responsible for saving data away until it is needed during computeTag() or checkTag().

+

This function can be called multiple times with separate extra data blocks for authentication. All such data will be concatenated into a single block for authentication purposes.

+ +

Implemented in ChaChaPoly, and GCMCommon.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool AuthenticatedCipher::checkTag (const void * tag,
size_t len 
)
+
+pure virtual
+
+ +

Finalizes the decryption process and checks the authentication tag.

+
Parameters
+ + + +
tagThe tag value from the incoming ciphertext to be checked.
lenThe length of the tag value in bytes, which may be less than tagSize().
+
+
+
Returns
Returns true if the tag is identical to the first len bytes of the authentication tag that was calculated during the decryption process. Returns false otherwise.
+

This function must be called after the final block of ciphertext is passed to decrypt() to determine if the data could be authenticated.

+
Note
Authenticated cipher modes usually require that if the tag could not be verified, then all of the data that was previously decrypted must be discarded. It is unwise to use the decrypted data for any purpose before it can be verified. Callers are responsible for ensuring that any data returned via previous calls to decrypt() is discarded if checkTag() returns false.
+
See Also
computeTag()
+ +

Implemented in ChaChaPoly, and GCMCommon.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void AuthenticatedCipher::computeTag (void * tag,
size_t len 
)
+
+pure virtual
+
+ +

Finalizes the encryption process and computes the authentication tag.

+
Parameters
+ + + +
tagPoints to the buffer to write the tag to.
lenThe length of the tag, which may be less than tagSize() to truncate the tag to the first len bytes.
+
+
+
See Also
checkTag()
+ +

Implemented in ChaChaPoly, and GCMCommon.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
size_t AuthenticatedCipher::tagSize () const
+
+pure virtual
+
+ +

Returns the size of the authentication tag.

+
Returns
The size of the authentication tag in bytes.
+

By default this function should return the largest tag size supported by the authenticated cipher.

+
See Also
computeTag()
+ +

Implemented in ChaChaPoly, and GCMCommon.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classAuthenticatedCipher.png b/classAuthenticatedCipher.png new file mode 100644 index 0000000000000000000000000000000000000000..8dc80439a86f1c723faf0056dafe8449b46ec67c GIT binary patch literal 1255 zcmeAS@N?(olHy`uVBq!ia0y~yVB`R@4{$I8$@5Qm7XT@V0G|-o|Ns93nJ?aaE$u%v z0muU50|ySUcHWT(ayd$Z{DK*Pia_A%sSqOu29`2U7srqa#6dpNwHzboj*VhqvcBPYSzgns(&S zv%Bg~n*=t8hD?gPW}1G4J^T5~`%;^aK0Geh`%iGiJ*mf9mi1e`E`7GrKXNEp$#ecR zMIJ@XCtL!Pw(R6dNRK)~fOZT16ZZI3Qvy!Ng(M zqSzqdOcEo8Z&Bu~wBt+`Zf~o#+YDF)k~o|h6x&-g@?Mo~sF>{iHr2V@WRHMc%%2+q zzJ=lb3JhJdoWDqDyVWFg)X99WfAP2Y$9ulqzjfsz`)1j_o87eGHoyJ+bJFK56^{Jq zmsuqpJx}6jV8-loYwJxNbz*Y@EV*55qokHiIe+2LogWQn&0NxQJl zvDW$u>z3`uEY`hRYq;0%Q~&YwWfj>+x@9YS8Gg9g?%$`#!`SjifaSnrVEjP>$5P1U zvdLK@!!U+(QSR+;6094NWuNWO1cePekT4mu^Hr8kF$Rb=~gVo2yl71J*12nwQobl_wYdUq&h3 z;=A>xGu2a<@V{bp*;i-$CDym4^;urJP0TExNz2wWaol|>Imw){?uF@h>$=(dD~hyN zEB@+k`)He`$G4v?kk|CgjN7_*h0B*ke)$o1?R-bgh6|PRHe5dQBfI0>snrTg(xzSi z{z=cp{)+h7uezR>nyZrCLjLw~{dPDb*L(EYqOVc{-2JsXtNx33BwjlEyS6~THzd{C zrKYgI|J4_rkh6)rvA^S@*(dIv`&If@S9$2lfIn`No_!T^nzZf8eFu+A<*#oG=*!fx zJ(_y>{TU9=sxVOc1*T4?pc4}ng1j>Ka|viJ-4f3jvnYyTy5c71Y)eLsc0FKDf!h>;y@%c| zj?!24jdU!O?3h1G@N&iHXytvbb?Ln?!aL*^Mr&(z%&*M$xU~J0K-&ZnU@r3D0%k{G giSeib?9acmdKI;Vst0G1IDcK`qY literal 0 HcmV?d00001 diff --git a/classBLAKE2b-members.html b/classBLAKE2b-members.html index 2245aae3..cee17619 100644 --- a/classBLAKE2b-members.html +++ b/classBLAKE2b-members.html @@ -113,7 +113,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classBLAKE2b.html b/classBLAKE2b.html index 01d9746c..d7940087 100644 --- a/classBLAKE2b.html +++ b/classBLAKE2b.html @@ -536,7 +536,7 @@ Additional Inherited Members diff --git a/classBLAKE2s-members.html b/classBLAKE2s-members.html index 29370c11..89a651c0 100644 --- a/classBLAKE2s-members.html +++ b/classBLAKE2s-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classBLAKE2s.html b/classBLAKE2s.html index e99bcd40..3aa4ae2c 100644 --- a/classBLAKE2s.html +++ b/classBLAKE2s.html @@ -536,7 +536,7 @@ Additional Inherited Members diff --git a/classBitmap-members.html b/classBitmap-members.html index 35e337b1..de47aa5d 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 5bade799..2f22a284 100644 --- a/classBitmap.html +++ b/classBitmap.html @@ -1745,7 +1745,7 @@ class DMD diff --git a/classBlinkLED-members.html b/classBlinkLED-members.html index 5ff2078b..b987659b 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 53e8adbd..43bf09fc 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 6e6d95c2..4bcc01f3 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 ae86fe50..c27e5fa2 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 f91603c4..606decae 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 85f6e781..bf5724c8 100644 --- a/classBoolField.html +++ b/classBoolField.html @@ -506,7 +506,7 @@ LiquidCrystal *  diff --git a/classCBC-members.html b/classCBC-members.html index 77d1a70f..346132b9 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 a4ab5aef..4608f899 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 45410fdf..16e6184c 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 591ecffb..b2b2f437 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 15c7c77c..db1f26bd 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 42e6c942..9638eeb0 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 6ecf5eaf..d2212f44 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 8e80da1e..ba99df62 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 e34c4a11..40974bda 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 c2325235..81b510cd 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 434d55bb..15027563 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 0f288557..66d07c6f 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 273d030d..9a7108e7 100644 --- a/classChaCha-members.html +++ b/classChaCha-members.html @@ -91,24 +91,25 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

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

- - - - - - - - - - - - - - + + + + + + + + + + + + + + +
ChaCha(uint8_t numRounds=20)ChaChaexplicit
Cipher()Cipher
clear()ChaChavirtual
decrypt(uint8_t *output, const uint8_t *input, size_t len)ChaChavirtual
encrypt(uint8_t *output, const uint8_t *input, size_t len)ChaChavirtual
hashCore(uint32_t *output, const uint32_t *input, uint8_t rounds)ChaChastatic
ivSize() const ChaChavirtual
keySize() const ChaChavirtual
numRounds() const ChaChainline
setCounter(const uint8_t *counter, size_t len)ChaCha
setIV(const uint8_t *iv, size_t len)ChaChavirtual
setKey(const uint8_t *key, size_t len)ChaChavirtual
setNumRounds(uint8_t numRounds)ChaChainline
~ChaCha() (defined in ChaCha)ChaChavirtual
~Cipher()Ciphervirtual
ChaChaPoly (defined in ChaCha)ChaChafriend
Cipher()Cipher
clear()ChaChavirtual
decrypt(uint8_t *output, const uint8_t *input, size_t len)ChaChavirtual
encrypt(uint8_t *output, const uint8_t *input, size_t len)ChaChavirtual
hashCore(uint32_t *output, const uint32_t *input, uint8_t rounds)ChaChastatic
ivSize() const ChaChavirtual
keySize() const ChaChavirtual
numRounds() const ChaChainline
setCounter(const uint8_t *counter, size_t len)ChaCha
setIV(const uint8_t *iv, size_t len)ChaChavirtual
setKey(const uint8_t *key, size_t len)ChaChavirtual
setNumRounds(uint8_t numRounds)ChaChainline
~ChaCha() (defined in ChaCha)ChaChavirtual
~Cipher()Ciphervirtual
diff --git a/classChaCha.html b/classChaCha.html index 328ef30d..0a985663 100644 --- a/classChaCha.html +++ b/classChaCha.html @@ -86,6 +86,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
ChaCha Class Reference
@@ -155,13 +156,19 @@ Static Public Member Functions static void hashCore (uint32_t *output, const uint32_t *input, uint8_t rounds)  Executes the ChaCha hash core on an input memory block. More...
  + + + +

+Friends

+class ChaChaPoly
 

Detailed Description

ChaCha stream cipher.

ChaCha is a stream cipher that takes a key, an 8-byte nonce/IV, and a counter and hashes them to generate a keystream to XOR with the plaintext. Variations on the ChaCha cipher use 8, 12, or 20 rounds of hashing operations with either 128-bit or 256-bit keys.

Reference: http://cr.yp.to/chacha.html

-

Definition at line 28 of file ChaCha.h.

+

Definition at line 30 of file ChaCha.h.

Constructor & Destructor Documentation

@@ -224,7 +231,7 @@ Static Public Member Functions

Implements Cipher.

-

Definition at line 195 of file ChaCha.cpp.

+

Definition at line 218 of file ChaCha.cpp.

@@ -389,7 +396,7 @@ Static Public Member Functions

This function is provided for the convenience of applications that need access to the ChaCha hash core without the higher-level processing that turns the core into a stream cipher.

-

Definition at line 230 of file ChaCha.cpp.

+

Definition at line 253 of file ChaCha.cpp.

@@ -478,7 +485,7 @@ Static Public Member Functions

Returns the number of encryption rounds; usually 8, 12, or 20.

See Also
setNumRounds()
-

Definition at line 37 of file ChaCha.h.

+

Definition at line 39 of file ChaCha.h.

@@ -655,7 +662,7 @@ Static Public Member Functions
See Also
numRounds()
-

Definition at line 38 of file ChaCha.h.

+

Definition at line 40 of file ChaCha.h.

@@ -666,7 +673,7 @@ Static Public Member Functions diff --git a/classChaChaPoly-members.html b/classChaChaPoly-members.html new file mode 100644 index 00000000..a3b8d44b --- /dev/null +++ b/classChaChaPoly-members.html @@ -0,0 +1,123 @@ + + + + + + +ArduinoLibs: Member List + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+
+
+
ChaChaPoly Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + +
addAuthData(const void *data, size_t len)ChaChaPolyvirtual
AuthenticatedCipher()AuthenticatedCipher
authSize (defined in ChaChaPoly)ChaChaPoly
ChaChaPoly()ChaChaPoly
checkTag(const void *tag, size_t len)ChaChaPolyvirtual
Cipher()Cipher
clear()ChaChaPolyvirtual
computeTag(void *tag, size_t len)ChaChaPolyvirtual
dataSize (defined in ChaChaPoly)ChaChaPoly
dataStarted (defined in ChaChaPoly)ChaChaPoly
decrypt(uint8_t *output, const uint8_t *input, size_t len)ChaChaPolyvirtual
encrypt(uint8_t *output, const uint8_t *input, size_t len)ChaChaPolyvirtual
ivSize (defined in ChaChaPoly)ChaChaPoly
ivSize() const ChaChaPolyvirtual
keySize() const ChaChaPolyvirtual
nonce (defined in ChaChaPoly)ChaChaPoly
setIV(const uint8_t *iv, size_t len)ChaChaPolyvirtual
setKey(const uint8_t *key, size_t len)ChaChaPolyvirtual
tagSize() const ChaChaPolyvirtual
~AuthenticatedCipher()AuthenticatedCiphervirtual
~ChaChaPoly()ChaChaPolyvirtual
~Cipher()Ciphervirtual
+ + + + diff --git a/classChaChaPoly.html b/classChaChaPoly.html new file mode 100644 index 00000000..6096b5f2 --- /dev/null +++ b/classChaChaPoly.html @@ -0,0 +1,673 @@ + + + + + + +ArduinoLibs: ChaChaPoly Class Reference + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
ChaChaPoly Class Reference
+
+
+ +

Authenticated cipher based on ChaCha and Poly1305. + More...

+ +

#include <ChaChaPoly.h>

+
+Inheritance diagram for ChaChaPoly:
+
+
+ + +AuthenticatedCipher +Cipher + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ChaChaPoly ()
 Constructs a new ChaChaPoly authenticated cipher.
 
+virtual ~ChaChaPoly ()
 Destroys this ChaChaPoly authenticated cipher.
 
size_t keySize () const
 Default size of the key for this cipher, in bytes. More...
 
size_t ivSize () const
 Size of the initialization vector for this cipher, in bytes. More...
 
size_t tagSize () const
 Returns the size of the authentication tag. More...
 
bool setKey (const uint8_t *key, size_t len)
 Sets the key to use for future encryption and decryption operations. More...
 
bool setIV (const uint8_t *iv, size_t len)
 Sets the initialization vector to use for future encryption and decryption operations. More...
 
void encrypt (uint8_t *output, const uint8_t *input, size_t len)
 Encrypts an input buffer and writes the ciphertext to an output buffer. More...
 
void decrypt (uint8_t *output, const uint8_t *input, size_t len)
 Decrypts an input buffer and writes the plaintext to an output buffer. More...
 
void addAuthData (const void *data, size_t len)
 Adds extra data that will be authenticated but not encrypted. More...
 
void computeTag (void *tag, size_t len)
 Finalizes the encryption process and computes the authentication tag. More...
 
bool checkTag (const void *tag, size_t len)
 Finalizes the decryption process and checks the authentication tag. More...
 
void clear ()
 Clears all security-sensitive state from this cipher. More...
 
- Public Member Functions inherited from AuthenticatedCipher
AuthenticatedCipher ()
 Constructs a new authenticated cipher.
 
+virtual ~AuthenticatedCipher ()
 Destroys this authenticated cipher.
 
- Public Member Functions inherited from Cipher
Cipher ()
 Constructs a new cipher object.
 
virtual ~Cipher ()
 Destroys this cipher object. More...
 
+

Detailed Description

+

Authenticated cipher based on ChaCha and Poly1305.

+

ChaChaPoly is an authenticated cipher based on a combination of ChaCha with 20 rounds for encryption and Poly1305 for authentication. The resulting cipher has a 256-bit key, a 64-bit or 96-bit initialization vector, and a 128-bit authentication tag.

+

Reference: https://tools.ietf.org/html/draft-irtf-cfrg-chacha20-poly1305-10

+
See Also
ChaCha, Poly1305, AuthenticatedCipher
+ +

Definition at line 30 of file ChaChaPoly.h.

+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ChaChaPoly::addAuthData (const void * data,
size_t len 
)
+
+virtual
+
+ +

Adds extra data that will be authenticated but not encrypted.

+
Parameters
+ + + +
dataThe extra data to be authenticated.
lenThe number of bytes of extra data to be authenticated.
+
+
+

This function must be called before the first call to encrypt() or decrypt(). That is, it is assumed that all extra data for authentication is available before the first payload data block and that it will be prepended to the payload for authentication. If the subclass needs to process the extra data after the payload, then it is responsible for saving data away until it is needed during computeTag() or checkTag().

+

This function can be called multiple times with separate extra data blocks for authentication. All such data will be concatenated into a single block for authentication purposes.

+ +

Implements AuthenticatedCipher.

+ +

Definition at line 126 of file ChaChaPoly.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool ChaChaPoly::checkTag (const void * tag,
size_t len 
)
+
+virtual
+
+ +

Finalizes the decryption process and checks the authentication tag.

+
Parameters
+ + + +
tagThe tag value from the incoming ciphertext to be checked.
lenThe length of the tag value in bytes, which may be less than tagSize().
+
+
+
Returns
Returns true if the tag is identical to the first len bytes of the authentication tag that was calculated during the decryption process. Returns false otherwise.
+

This function must be called after the final block of ciphertext is passed to decrypt() to determine if the data could be authenticated.

+
Note
Authenticated cipher modes usually require that if the tag could not be verified, then all of the data that was previously decrypted must be discarded. It is unwise to use the decrypted data for any purpose before it can be verified. Callers are responsible for ensuring that any data returned via previous calls to decrypt() is discarded if checkTag() returns false.
+
See Also
computeTag()
+ +

Implements AuthenticatedCipher.

+ +

Definition at line 149 of file ChaChaPoly.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
void ChaChaPoly::clear ()
+
+virtual
+
+ +

Clears all security-sensitive state from this cipher.

+

Security-sensitive information includes key schedules, initialization vectors, and any temporary state that is used by encrypt() or decrypt() which is stored in the cipher itself.

+ +

Implements Cipher.

+ +

Definition at line 163 of file ChaChaPoly.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ChaChaPoly::computeTag (void * tag,
size_t len 
)
+
+virtual
+
+ +

Finalizes the encryption process and computes the authentication tag.

+
Parameters
+ + + +
tagPoints to the buffer to write the tag to.
lenThe length of the tag, which may be less than tagSize() to truncate the tag to the first len bytes.
+
+
+
See Also
checkTag()
+ +

Implements AuthenticatedCipher.

+ +

Definition at line 134 of file ChaChaPoly.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ChaChaPoly::decrypt (uint8_t * output,
const uint8_t * input,
size_t len 
)
+
+virtual
+
+ +

Decrypts an input buffer and writes the plaintext to an output buffer.

+
Parameters
+ + + + +
outputThe output buffer to write to, which may be the same buffer as input. The output buffer must have at least as many bytes as the input buffer.
inputThe input buffer to read from.
lenThe number of bytes to decrypt.
+
+
+

The decrypt() function can be called multiple times with different regions of the ciphertext data.

+
See Also
encrypt()
+ +

Implements Cipher.

+ +

Definition at line 115 of file ChaChaPoly.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ChaChaPoly::encrypt (uint8_t * output,
const uint8_t * input,
size_t len 
)
+
+virtual
+
+ +

Encrypts an input buffer and writes the ciphertext to an output buffer.

+
Parameters
+ + + + +
outputThe output buffer to write to, which may be the same buffer as input. The output buffer must have at least as many bytes as the input buffer.
inputThe input buffer to read from.
lenThe number of bytes to encrypt.
+
+
+

The encrypt() function can be called multiple times with different regions of the plaintext data.

+
See Also
decrypt()
+ +

Implements Cipher.

+ +

Definition at line 104 of file ChaChaPoly.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
size_t ChaChaPoly::ivSize () const
+
+virtual
+
+ +

Size of the initialization vector for this cipher, in bytes.

+

If the cipher does not need an initialization vector, this function will return zero.

+ +

Implements Cipher.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
size_t ChaChaPoly::keySize () const
+
+virtual
+
+ +

Default size of the key for this cipher, in bytes.

+

If the cipher supports variable-sized keys, keySize() indicates the default or recommended key size. The cipher may support other key sizes.

+
See Also
setKey(), ivSize()
+ +

Implements Cipher.

+ +

Definition at line 61 of file ChaChaPoly.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool ChaChaPoly::setIV (const uint8_t * iv,
size_t len 
)
+
+virtual
+
+ +

Sets the initialization vector to use for future encryption and decryption operations.

+
Parameters
+ + + +
ivThe initialization vector to use.
lenThe length of the initialization vector in bytes.
+
+
+
Returns
Returns false if the length is not supported.
+

Initialization vectors should be set before the first call to encrypt() or decrypt() after a setKey() call. If the initialization vector is changed after encryption or decryption begins, then the behaviour is undefined.

+
Note
The IV is not encoded into the output stream by encrypt(). The caller is responsible for communicating the IV to the other party.
+
See Also
ivSize()
+ +

Implements Cipher.

+ +

Definition at line 84 of file ChaChaPoly.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool ChaChaPoly::setKey (const uint8_t * key,
size_t len 
)
+
+virtual
+
+ +

Sets the key to use for future encryption and decryption operations.

+
Parameters
+ + + +
keyThe key to use.
lenThe length of the key in bytes.
+
+
+
Returns
Returns false if the key length is not supported, or the key is somehow "weak" and unusable by this cipher.
+

Use clear() or the destructor to remove the key and any other sensitive data from the object once encryption or decryption is complete.

+

Calling setKey() resets the cipher. Any temporary data that was being retained for encrypting partial blocks will be abandoned.

+
See Also
keySize(), clear()
+ +

Implements Cipher.

+ +

Definition at line 79 of file ChaChaPoly.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
size_t ChaChaPoly::tagSize () const
+
+virtual
+
+ +

Returns the size of the authentication tag.

+
Returns
The size of the authentication tag in bytes.
+

By default this function should return the largest tag size supported by the authenticated cipher.

+
See Also
computeTag()
+ +

Implements AuthenticatedCipher.

+ +

Definition at line 73 of file ChaChaPoly.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classChaChaPoly.png b/classChaChaPoly.png new file mode 100644 index 0000000000000000000000000000000000000000..7a4de2d54b72a084eb93b783331cd82fea66cf42 GIT binary patch literal 714 zcmeAS@N?(olHy`uVBq!ia0vp^^+4Rg!3-pSemT+rq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0B0XIkLn;{G&V4wkS%HUby20b$_MbF0 z1YC2y_ue^k^rgCxfwa?#`c6YPXF*q&Gf!%scX#YrV-W8h%&Vj%|2npAk>->2pSW}C zIEwWy1!qk=@}zM)lhniI5?-78o@uza#9g}Z%lho@+aGQJEi`a-$@_ZsYkff9{A>Rc zAJ?n@fBRGa>weLDA9K1oVzM9n&wum4`u_g*TaUhq9``uzC#L-FrkM}%4ihufN_? z>i0B1alMzGw^YdbjaPU6-mbO(c@FQhw*BoM6MkKmE}e7x-J^w?#!_{`M!Q>|vwZ)N z`oiF4&wlMQht9W6o@4eiu*NoAQt#URY01;~-~KWAPyCzul~0V*#s92rxo(yJs=j#p z>i<;+r%r>sf8Xl$oBbUpgsm)pocsQM{^$Qp_QxdNvKTDlJP>f~Pv$1x12gO&`!a8M z_W$>>)F{~ ztN$2ToIic<>n7`GUpAChuVjApKDDmw+74Ue)$hLl*t+<~tvew{o&WgkFx37RTf6tD z{geIKVb>Jv(!I0&_@A-=c diff --git a/classCharlieplex.html b/classCharlieplex.html index d26f5f24..2c5cbd92 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 fc57a0cf..1a187408 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 491be03f..41e8393d 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 f004bff5..f8ca2ae8 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 167cc853..c98bda9e 100644 --- a/classCipher.html +++ b/classCipher.html @@ -101,15 +101,19 @@ Inheritance diagram for Cipher:
-CBCCommon -CFBCommon -ChaCha -CTRCommon -OFBCommon -CBC< T > -CFB< T > -CTR< T > -OFB< T > +AuthenticatedCipher +CBCCommon +CFBCommon +ChaCha +CTRCommon +OFBCommon +ChaChaPoly +GCMCommon +CBC< T > +CFB< T > +CTR< T > +OFB< T > +GCM< T >
@@ -205,7 +209,7 @@ Public Member Functions

Clears all security-sensitive state from this cipher.

Security-sensitive information includes key schedules, initialization vectors, and any temporary state that is used by encrypt() or decrypt() which is stored in the cipher itself.

-

Implemented in ChaCha, CTRCommon, CBCCommon, CFBCommon, and OFBCommon.

+

Implemented in ChaChaPoly, GCMCommon, ChaCha, CTRCommon, CBCCommon, CFBCommon, and OFBCommon.

@@ -259,7 +263,7 @@ Public Member Functions

The decrypt() function can be called multiple times with different regions of the ciphertext data.

See Also
encrypt()
-

Implemented in ChaCha, CTRCommon, CBCCommon, CFBCommon, and OFBCommon.

+

Implemented in ChaCha, ChaChaPoly, CTRCommon, GCMCommon, CBCCommon, CFBCommon, and OFBCommon.

@@ -313,7 +317,7 @@ Public Member Functions

The encrypt() function can be called multiple times with different regions of the plaintext data.

See Also
decrypt()
-

Implemented in ChaCha, CTRCommon, CBCCommon, CFBCommon, and OFBCommon.

+

Implemented in ChaCha, ChaChaPoly, CTRCommon, GCMCommon, CBCCommon, CFBCommon, and OFBCommon.

@@ -341,7 +345,7 @@ Public Member Functions

Size of the initialization vector for this cipher, in bytes.

If the cipher does not need an initialization vector, this function will return zero.

-

Implemented in CBCCommon, CFBCommon, ChaCha, CTRCommon, and OFBCommon.

+

Implemented in ChaCha, ChaChaPoly, GCMCommon, CBCCommon, CFBCommon, CTRCommon, and OFBCommon.

@@ -370,7 +374,7 @@ Public Member Functions

If the cipher supports variable-sized keys, keySize() indicates the default or recommended key size. The cipher may support other key sizes.

See Also
setKey(), ivSize()
-

Implemented in CBCCommon, CFBCommon, ChaCha, CTRCommon, and OFBCommon.

+

Implemented in ChaCha, ChaChaPoly, GCMCommon, CBCCommon, CFBCommon, CTRCommon, and OFBCommon.

@@ -419,7 +423,7 @@ Public Member Functions
Note
The IV is not encoded into the output stream by encrypt(). The caller is responsible for communicating the IV to the other party.
See Also
ivSize()
-

Implemented in ChaCha, CTRCommon, CBCCommon, CFBCommon, and OFBCommon.

+

Implemented in ChaCha, ChaChaPoly, CTRCommon, GCMCommon, CBCCommon, CFBCommon, and OFBCommon.

@@ -468,7 +472,7 @@ Public Member Functions

Calling setKey() resets the cipher. Any temporary data that was being retained for encrypting partial blocks will be abandoned.

See Also
keySize(), clear()
-

Implemented in ChaCha, CTRCommon, CBCCommon, CFBCommon, and OFBCommon.

+

Implemented in ChaCha, ChaChaPoly, CTRCommon, GCMCommon, CBCCommon, CFBCommon, and OFBCommon.

@@ -479,7 +483,7 @@ Public Member Functions diff --git a/classCipher.png b/classCipher.png index 3a1ad03b590116b8f115c8e01b13f3522ba81474..51c890073c7a0293318b41288885ce33e33806c6 100644 GIT binary patch literal 3140 zcmc&$3se(l7N$}VL5jN-!B8I6@v(viH7W=~snj@Cf)zzTLa-pOK_e(ZUctx;c2Ut` zYbi`e4^24aP`%j>A0+h z>$s-7>+9LLT1;py z{oz$d`D_7~TXEbnLCHUD4bC69Z!&2mP3}iU$= znRR{a1!kSbR?ljfPW`cPD1z`VKWc@gXX&K@l2KTvo#W*Ilg7vuEhQeoE09&`BD-5h z)9US_HZSLTINmj6d2|F=QqqEbO_!v7hdAaLKIIYKHT(=Z;beNze}~cXuhE7x|8YRs z)K)LixuxpJoI5TTSO-OpnFa`x{)n;*_V*|HOP1q5)ykpKvJ z1zT}@KrRsS$~h<0*Ax!*MOF<>bwpeT9u=YMg?3S=VEiTEmXg1ojI;+-yDW^eE%;rU zfI{Mv8mz`OOzE)rl6YLbdPF*R|4hXVpf7y7I3`DiaLi0#nV-d8^>8elEWB!+KyNyo zyw`W>oTQI_#jsX5U>TH%v|+$kF_CgLD|Nbt_CU40<3q{dK3MW}#7D|&)CCwWUaZLj zXlEgEo91d%6J|GQtr?5x&&@loE*O(voSD!_*G!hHY8PVIPEX?IXMQGGjdiPpU0H?d z*%o3z5+RC7unCWG>ey@R=I-Wl8SwwpO&{qw>ESDV%kca*6c3%H1yW#h33g*Ul(8f9 z{ymik)o9$6KL+L%pCN6x;yWqkm4 z*w%v4jPYoKd|J!-6V9NoV>6aywXF?faai;TGpN0@Ws4xEhhpKDlsIeQo#E~JJ=P_F zT`dIX2RD5QWJ;pt;qbSf)uH8vhF~mjGN0y5Z3hm(sbf@#yi3M_QcsY^yxv0#zIUk> z*4C6q$OlR@&8U18Z&`annHR%idM(O~^YF$M2(=+UzMlu!S4o4^!M`qayEc$Q9%dBC zs1=MwvADrqfp9}g5N}A{;Baj2hRiSC&!zH1jXvbAEId|OUBQ?b6opXd%gKH&w)K(C zVi!EIea*4VO|B06;Sj1~{?j|-Xd88bl`c6q=d@5>_^g#Z1&Ts6?UI!YA?7*<;D<1v1 z9T>2BZ~F^?A9WqzmmrQ@?!GiYXn^bl@oLKsb<)B6-pPCsq6HuVqY`Vl{>PEKN1nV zoR~3|@pqnCrjE)Ib2!EPTSv+Ix@HlO=^sbZ^_ODgziKR0_bF%8T)hI8A&dJBCvt7@ z|6h?QuY~2?dHtSBMDmLN(N08a9a)xE@8hWLY^mWSAK3MZXdfVK#M=`;@l$OlbA1tk zT{Z+^6C4iyomevr;6J~rkI6oe6#(ADPaW@EzBd8?BDBGLcTOCt2(l^j1}RX?T-zFwCq+CrQE)NV^475HiAILCMFRUDlEdwV^Pv|qjrJr~F5q*h~+zJXzrl2M(ks$;C|fFHddx3M(8JCP95`?LMF4MKB;@is>Rqjb;NY4Yw^ zQAB$CkUd0WzAAcN?V_~VvcfmAvTyjw3CC zCaq9r!ep5P7)U)&Ia>#TDmM|h8x$_R_Kl*sU< z@~)PU&FlD^{*(R3PvOLh%hhtA?xME8&4=D*NdI$7T?5HWWc`L4nWNA%#`9mNE!2NZ z;;tgqY{Bav)S1%Bai2olgYXXBJ6qfHQr;gA9(`Vy)(D2h_9Y4`mn5^q{l9~I%pH{_lIP*?vp{CFZx`Srk0D4zE|4!-yc$z>8| literal 1601 zcmc&!X;4#F6n>A@rlnvh)>07A07c4Lltnfx)P_YgV4y(=NRcHaf;2{ikc=}{QA!{N zsj>t$Xi54G{TO$s^)8*5Rm%WU1PIlvOXf_ZS(Q?xxtF=-|&Dc`2 z!hPMW_h@kL+1g2g0$NKq%s2rPb(hcxN^JJ7eWoXPoV4)M-e?3hi<#4V5xK8~Ycgbe z+jOntfX$P%(ZQs}_SQrd#fs9v)5>AGaw)v_ry28Mj>3;tt~+{#JUW}I(Q}3@;ur|c z0_5-qYmv09mFr^p-)2`IHr87rZT=uXJB{+m7R3!sCmwELt=FDOt;f;B_Hv=FcwqnV zxR{6JdDt0}h8e~|_%=L@zc4dxQt47-Qn`tQ1IPiOtzVc_dV=^LW+`5z?pL(T`04ml zyVblc7M2X2mQIej!Vz=hy(ZJmKNbZ-P@ zlN zF!zf*9a1*qWVU3fjbxH`>p`;kmwBfH-nAj<>ipvRB)R?wff(bPro4{sib~5K3#(F$ zXB|^&j+>L-*T`IE<-xQ)<~Aco$0-SYR*nbx-s&o(xhJ();5;Z+JQsaVjyFRT56|CSS?A+>?%~gE z)fjW*jSGsHw=%vnJ}q$ey-2Qb%}Ma`e5Fpxn$jSD^(peI~-Q7IQBEj;B0a+2Y&;Q zJuQ+mSt7i(T^yJBar$FxI|eTZEBu$7n2xZpm%BMrz!%8EgX|3b?R{SZ{)xVthl*oXI`K?Zj}+pYw<$;xf?OLAXsS{!0e1Esx| z%bU=-qMZK)$}g%pZxxym<10L~GLb%DqcOZQryVf7U$Ixvk};JURKq$V4~NTR%;)7oGVf^!v76DGs(X^%TST&9|MwLEc2Tsk-CoWotib!0UzN!Mj#3v$c{Z=*9=iq^w@+VI=TB3vI}(PKbAaY5#C)_Q#peOLS0dn3 zUS18HEszM@!IuQ#CS#6pGQKZqP2#omvFAeh3#kTO@-B(sf{I!?TO{#%=sDGa8a%OYy*2NH${hJzG~)Ai{HZGlQ;y;s(VIik$9HBf(o&>kx}MbRas=JRS{4 r@-DKlWSd0LD#%c+RTb-b=0P diff --git a/classCurve25519.html b/classCurve25519.html index b37e4611..4da5d901 100644 --- a/classCurve25519.html +++ b/classCurve25519.html @@ -113,7 +113,7 @@ Static Public Member Functions
Note
This public functions in this class need a substantial amount of stack space to store intermediate results while the curve function is being evaluated. About 1k of free stack space is recommended for safety.

References: http://cr.yp.to/ecdh.html https://tools.ietf.org/html/draft-irtf-cfrg-curves-02

-

Definition at line 35 of file Curve25519.h.

+

Definition at line 29 of file Curve25519.h.

Member Function Documentation

@@ -295,7 +295,7 @@ Static Public Member Functions
diff --git a/classDMD-members.html b/classDMD-members.html index 60d9cfa9..ede876f0 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 8d1e3513..d01eae3a 100644 --- a/classDMD.html +++ b/classDMD.html @@ -755,7 +755,7 @@ Multiple panels diff --git a/classDS1307RTC-members.html b/classDS1307RTC-members.html index 314d39b7..25d3557a 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 63fc4f8b..5c68a471 100644 --- a/classDS1307RTC.html +++ b/classDS1307RTC.html @@ -598,7 +598,7 @@ static const uint8_t  diff --git a/classDS3231RTC-members.html b/classDS3231RTC-members.html index 13b08c6d..d8a7adee 100644 --- a/classDS3231RTC-members.html +++ b/classDS3231RTC-members.html @@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classDS3231RTC.html b/classDS3231RTC.html index 0e8d1c34..df71475c 100644 --- a/classDS3231RTC.html +++ b/classDS3231RTC.html @@ -713,7 +713,7 @@ static const uint8_t  diff --git a/classDS3232RTC-members.html b/classDS3232RTC-members.html index 4567b376..63ceeb88 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 9e4a90a7..2936bfc7 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 935ed035..02fe8d5d 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 54350ab1..ace5e935 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 2a0f2c50..ed2bfc60 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 692b958a..0741c0bc 100644 --- a/classField.html +++ b/classField.html @@ -424,7 +424,7 @@ class Form diff --git a/classForm-members.html b/classForm-members.html index bfd42e65..5474b9d3 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 dac6c529..cadcec31 100644 --- a/classForm.html +++ b/classForm.html @@ -485,7 +485,7 @@ class Field diff --git a/classGCM-members.html b/classGCM-members.html new file mode 100644 index 00000000..5895e95a --- /dev/null +++ b/classGCM-members.html @@ -0,0 +1,127 @@ + + + + + + +ArduinoLibs: Member List + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+
+
+
GCM< T > Member List
+
+
+ +

This is the complete list of members for GCM< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
addAuthData(const void *data, size_t len)GCMCommonvirtual
AuthenticatedCipher()AuthenticatedCipher
authSize (defined in GCMCommon)GCMCommon
checkTag(const void *tag, size_t len)GCMCommonvirtual
Cipher()Cipher
clear()GCMCommonvirtual
computeTag(void *tag, size_t len)GCMCommonvirtual
counter (defined in GCMCommon)GCMCommon
dataSize (defined in GCMCommon)GCMCommon
dataStarted (defined in GCMCommon)GCMCommon
decrypt(uint8_t *output, const uint8_t *input, size_t len)GCMCommonvirtual
encrypt(uint8_t *output, const uint8_t *input, size_t len)GCMCommonvirtual
GCM()GCM< T >inline
GCMCommon()GCMCommonprotected
ivSize() const GCMCommonvirtual
keySize() const GCMCommonvirtual
nonce (defined in GCMCommon)GCMCommon
posn (defined in GCMCommon)GCMCommon
setBlockCipher(BlockCipher *cipher)GCMCommoninlineprotected
setIV(const uint8_t *iv, size_t len)GCMCommonvirtual
setKey(const uint8_t *key, size_t len)GCMCommonvirtual
stream (defined in GCMCommon)GCMCommon
tagSize() const GCMCommonvirtual
~AuthenticatedCipher()AuthenticatedCiphervirtual
~Cipher()Ciphervirtual
~GCMCommon()GCMCommonvirtual
+ + + + diff --git a/classGCM.html b/classGCM.html new file mode 100644 index 00000000..36971fc8 --- /dev/null +++ b/classGCM.html @@ -0,0 +1,231 @@ + + + + + + +ArduinoLibs: GCM< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
GCM< T > Class Template Reference
+
+
+ +

Implementation of the Galois Counter Mode (GCM). + More...

+ +

#include <GCM.h>

+
+Inheritance diagram for GCM< T >:
+
+
+ + +GCMCommon +AuthenticatedCipher +Cipher + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

GCM ()
 Constructs a new GCM object for the block cipher T.
 
- Public Member Functions inherited from GCMCommon
+virtual ~GCMCommon ()
 Destroys this cipher object after clearing sensitive information.
 
size_t keySize () const
 Default size of the key for this cipher, in bytes. More...
 
size_t ivSize () const
 Size of the initialization vector for this cipher, in bytes. More...
 
size_t tagSize () const
 Returns the size of the authentication tag. More...
 
bool setKey (const uint8_t *key, size_t len)
 Sets the key to use for future encryption and decryption operations. More...
 
bool setIV (const uint8_t *iv, size_t len)
 Sets the initialization vector to use for future encryption and decryption operations. More...
 
void encrypt (uint8_t *output, const uint8_t *input, size_t len)
 Encrypts an input buffer and writes the ciphertext to an output buffer. More...
 
void decrypt (uint8_t *output, const uint8_t *input, size_t len)
 Decrypts an input buffer and writes the plaintext to an output buffer. More...
 
void addAuthData (const void *data, size_t len)
 Adds extra data that will be authenticated but not encrypted. More...
 
void computeTag (void *tag, size_t len)
 Finalizes the encryption process and computes the authentication tag. More...
 
bool checkTag (const void *tag, size_t len)
 Finalizes the decryption process and checks the authentication tag. More...
 
void clear ()
 Clears all security-sensitive state from this cipher. More...
 
- Public Member Functions inherited from AuthenticatedCipher
AuthenticatedCipher ()
 Constructs a new authenticated cipher.
 
+virtual ~AuthenticatedCipher ()
 Destroys this authenticated cipher.
 
- Public Member Functions inherited from Cipher
Cipher ()
 Constructs a new cipher object.
 
virtual ~Cipher ()
 Destroys this cipher object. More...
 
+ + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from GCMCommon
 GCMCommon ()
 Constructs a new cipher in GCM mode. More...
 
void setBlockCipher (BlockCipher *cipher)
 Sets the block cipher to use for this GCM object. More...
 
+

Detailed Description

+

template<typename T>
+class GCM< T >

+ +

Implementation of the Galois Counter Mode (GCM).

+

GCM mode converts a block cipher into an authenticated cipher that uses the block cipher T to encrypt and GHASH to authenticate.

+

The size of the key is determined by the underlying block cipher T. The IV is recommended to be 96 bits (12 bytes) in length, but other lengths are supported as well. The default tagSize() is 128 bits (16 bytes) but the GCM specification does allow other tag sizes: 32, 64, 96, 104, 112, 120, or 128 bits (4, 8, 12, 13, 14, 15, or 16 bytes).

+

The template parameter T must be a concrete subclass of BlockCipher indicating the specific block cipher to use. The block cipher must have a block size of 128 bits. For example, the following creates a GCM object using AES256 as the underlying cipher and then uses it to encrypt and authenticate a plaintext block:

+
+
gcm.setKey(key, sizeof(key));
+
gcm.setIV(iv, sizeof(iv));
+
gcm.addAuthData(adata, sizeof(adata));
+
gcm.encrypt(ciphertext, plaintext, sizeof(plaintext));
+
gcm.computeTag(tag, sizeof(tag));
+

The decryption process is almost identical to convert a ciphertext and tag back into plaintext and then check the tag:

+
+
gcm.setKey(key, sizeof(key));
+
gcm.setIV(iv, sizeof(iv));
+
gcm.addAuthData(adata, sizeof(adata));
+
gcm.decrypt(ciphertext, plaintext, sizeof(plaintext));
+
if (!gcm.checkTag(tag, sizeof(tag))) {
+
// The data was invalid - do not use it.
+
...
+
}
+

The GCM class can also be used to implement GMAC message authentication by omitting the plaintext:

+
+
gcm.setKey(key, sizeof(key));
+
gcm.setIV(iv, sizeof(iv));
+
gcm.addAuthData(adata1, sizeof(adata1));
+
gcm.addAuthData(adata2, sizeof(adata1));
+
...
+
gcm.addAuthData(adataN, sizeof(adataN));
+
gcm.computeTag(tag, sizeof(tag));
+

References: NIST SP 800-38D, http://en.wikipedia.org/wiki/Galois/Counter_Mode

+
See Also
GCMCommon, GHASH
+ +

Definition at line 71 of file GCM.h.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/classGCM.png b/classGCM.png new file mode 100644 index 0000000000000000000000000000000000000000..17936529fc2227e21b9e7042d8d059057d0fda82 GIT binary patch literal 876 zcmeAS@N?(olHy`uVBq!ia0vp^^+0@pgBeIl{r71EQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;Zfe z_uu|8Kl1;#Khyuj3+LCHslJ>eUH|``?4J+E|L_0spRN9!W$WFDw6< zzG;0qIaPAk_GRn7-R)cTZ*jlw!95@HRlQb)?+^UF@2%cDxux!p^MlfiKUOyO|5=)O z{pHO1$uo}HhucJ6POG)5zrTI8#mxHIeeM6w9|NsA?|I&XfpTA*#z{lJmxVc_p595r#i|ac;p;HCTbBfKJrm09j6ufO_*;HGKWkaQ zqD*Pkm&xb;Jbk=1;P2HvdS`S6jt9c^1JQnd&~8o?>A9hxi{ + + + + + +ArduinoLibs: Member List + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+
+
+
GCMCommon Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
addAuthData(const void *data, size_t len)GCMCommonvirtual
AuthenticatedCipher()AuthenticatedCipher
authSize (defined in GCMCommon)GCMCommon
checkTag(const void *tag, size_t len)GCMCommonvirtual
Cipher()Cipher
clear()GCMCommonvirtual
computeTag(void *tag, size_t len)GCMCommonvirtual
counter (defined in GCMCommon)GCMCommon
dataSize (defined in GCMCommon)GCMCommon
dataStarted (defined in GCMCommon)GCMCommon
decrypt(uint8_t *output, const uint8_t *input, size_t len)GCMCommonvirtual
encrypt(uint8_t *output, const uint8_t *input, size_t len)GCMCommonvirtual
GCMCommon()GCMCommonprotected
ivSize() const GCMCommonvirtual
keySize() const GCMCommonvirtual
nonce (defined in GCMCommon)GCMCommon
posn (defined in GCMCommon)GCMCommon
setBlockCipher(BlockCipher *cipher)GCMCommoninlineprotected
setIV(const uint8_t *iv, size_t len)GCMCommonvirtual
setKey(const uint8_t *key, size_t len)GCMCommonvirtual
stream (defined in GCMCommon)GCMCommon
tagSize() const GCMCommonvirtual
~AuthenticatedCipher()AuthenticatedCiphervirtual
~Cipher()Ciphervirtual
~GCMCommon()GCMCommonvirtual
+ + + + diff --git a/classGCMCommon.html b/classGCMCommon.html new file mode 100644 index 00000000..36e6018b --- /dev/null +++ b/classGCMCommon.html @@ -0,0 +1,744 @@ + + + + + + +ArduinoLibs: GCMCommon Class Reference + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+ +
+ +

Concrete base class to assist with implementing GCM for 128-bit block ciphers. + More...

+ +

#include <GCM.h>

+
+Inheritance diagram for GCMCommon:
+
+
+ + +AuthenticatedCipher +Cipher +GCM< T > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual ~GCMCommon ()
 Destroys this cipher object after clearing sensitive information.
 
size_t keySize () const
 Default size of the key for this cipher, in bytes. More...
 
size_t ivSize () const
 Size of the initialization vector for this cipher, in bytes. More...
 
size_t tagSize () const
 Returns the size of the authentication tag. More...
 
bool setKey (const uint8_t *key, size_t len)
 Sets the key to use for future encryption and decryption operations. More...
 
bool setIV (const uint8_t *iv, size_t len)
 Sets the initialization vector to use for future encryption and decryption operations. More...
 
void encrypt (uint8_t *output, const uint8_t *input, size_t len)
 Encrypts an input buffer and writes the ciphertext to an output buffer. More...
 
void decrypt (uint8_t *output, const uint8_t *input, size_t len)
 Decrypts an input buffer and writes the plaintext to an output buffer. More...
 
void addAuthData (const void *data, size_t len)
 Adds extra data that will be authenticated but not encrypted. More...
 
void computeTag (void *tag, size_t len)
 Finalizes the encryption process and computes the authentication tag. More...
 
bool checkTag (const void *tag, size_t len)
 Finalizes the decryption process and checks the authentication tag. More...
 
void clear ()
 Clears all security-sensitive state from this cipher. More...
 
- Public Member Functions inherited from AuthenticatedCipher
AuthenticatedCipher ()
 Constructs a new authenticated cipher.
 
+virtual ~AuthenticatedCipher ()
 Destroys this authenticated cipher.
 
- Public Member Functions inherited from Cipher
Cipher ()
 Constructs a new cipher object.
 
virtual ~Cipher ()
 Destroys this cipher object. More...
 
+ + + + + + + +

+Protected Member Functions

 GCMCommon ()
 Constructs a new cipher in GCM mode. More...
 
void setBlockCipher (BlockCipher *cipher)
 Sets the block cipher to use for this GCM object. More...
 
+

Detailed Description

+

Concrete base class to assist with implementing GCM for 128-bit block ciphers.

+

References: NIST SP 800-38D, http://en.wikipedia.org/wiki/Galois/Counter_Mode

+
See Also
GCM
+ +

Definition at line 30 of file GCM.h.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + +
+ + + + + + + +
GCMCommon::GCMCommon ()
+
+protected
+
+ +

Constructs a new cipher in GCM mode.

+

This constructor must be followed by a call to setBlockCipher().

+ +

Definition at line 44 of file GCM.cpp.

+ +
+
+

Member Function Documentation

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void GCMCommon::addAuthData (const void * data,
size_t len 
)
+
+virtual
+
+ +

Adds extra data that will be authenticated but not encrypted.

+
Parameters
+ + + +
dataThe extra data to be authenticated.
lenThe number of bytes of extra data to be authenticated.
+
+
+

This function must be called before the first call to encrypt() or decrypt(). That is, it is assumed that all extra data for authentication is available before the first payload data block and that it will be prepended to the payload for authentication. If the subclass needs to process the extra data after the payload, then it is responsible for saving data away until it is needed during computeTag() or checkTag().

+

This function can be called multiple times with separate extra data blocks for authentication. All such data will be concatenated into a single block for authentication purposes.

+ +

Implements AuthenticatedCipher.

+ +

Definition at line 217 of file GCM.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool GCMCommon::checkTag (const void * tag,
size_t len 
)
+
+virtual
+
+ +

Finalizes the decryption process and checks the authentication tag.

+
Parameters
+ + + +
tagThe tag value from the incoming ciphertext to be checked.
lenThe length of the tag value in bytes, which may be less than tagSize().
+
+
+
Returns
Returns true if the tag is identical to the first len bytes of the authentication tag that was calculated during the decryption process. Returns false otherwise.
+

This function must be called after the final block of ciphertext is passed to decrypt() to determine if the data could be authenticated.

+
Note
Authenticated cipher modes usually require that if the tag could not be verified, then all of the data that was previously decrypted must be discarded. It is unwise to use the decrypted data for any purpose before it can be verified. Callers are responsible for ensuring that any data returned via previous calls to decrypt() is discarded if checkTag() returns false.
+
See Also
computeTag()
+ +

Implements AuthenticatedCipher.

+ +

Definition at line 245 of file GCM.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
void GCMCommon::clear ()
+
+virtual
+
+ +

Clears all security-sensitive state from this cipher.

+

Security-sensitive information includes key schedules, initialization vectors, and any temporary state that is used by encrypt() or decrypt() which is stored in the cipher itself.

+ +

Implements Cipher.

+ +

Definition at line 256 of file GCM.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void GCMCommon::computeTag (void * tag,
size_t len 
)
+
+virtual
+
+ +

Finalizes the encryption process and computes the authentication tag.

+
Parameters
+ + + +
tagPoints to the buffer to write the tag to.
lenThe length of the tag, which may be less than tagSize() to truncate the tag to the first len bytes.
+
+
+
See Also
checkTag()
+ +

Implements AuthenticatedCipher.

+ +

Definition at line 225 of file GCM.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void GCMCommon::decrypt (uint8_t * output,
const uint8_t * input,
size_t len 
)
+
+virtual
+
+ +

Decrypts an input buffer and writes the plaintext to an output buffer.

+
Parameters
+ + + + +
outputThe output buffer to write to, which may be the same buffer as input. The output buffer must have at least as many bytes as the input buffer.
inputThe input buffer to read from.
lenThe number of bytes to decrypt.
+
+
+

The decrypt() function can be called multiple times with different regions of the ciphertext data.

+
See Also
encrypt()
+ +

Implements Cipher.

+ +

Definition at line 182 of file GCM.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void GCMCommon::encrypt (uint8_t * output,
const uint8_t * input,
size_t len 
)
+
+virtual
+
+ +

Encrypts an input buffer and writes the ciphertext to an output buffer.

+
Parameters
+ + + + +
outputThe output buffer to write to, which may be the same buffer as input. The output buffer must have at least as many bytes as the input buffer.
inputThe input buffer to read from.
lenThe number of bytes to encrypt.
+
+
+

The encrypt() function can be called multiple times with different regions of the plaintext data.

+
See Also
decrypt()
+ +

Implements Cipher.

+ +

Definition at line 145 of file GCM.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
size_t GCMCommon::ivSize () const
+
+virtual
+
+ +

Size of the initialization vector for this cipher, in bytes.

+

If the cipher does not need an initialization vector, this function will return zero.

+ +

Implements Cipher.

+ +

Definition at line 66 of file GCM.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
size_t GCMCommon::keySize () const
+
+virtual
+
+ +

Default size of the key for this cipher, in bytes.

+

If the cipher supports variable-sized keys, keySize() indicates the default or recommended key size. The cipher may support other key sizes.

+
See Also
setKey(), ivSize()
+ +

Implements Cipher.

+ +

Definition at line 61 of file GCM.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + +
void GCMCommon::setBlockCipher (BlockCiphercipher)
+
+inlineprotected
+
+ +

Sets the block cipher to use for this GCM object.

+
Parameters
+ + +
cipherThe block cipher to use to implement GCM mode. This object must have a block size of 128 bits (16 bytes).
+
+
+ +

Definition at line 54 of file GCM.h.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool GCMCommon::setIV (const uint8_t * iv,
size_t len 
)
+
+virtual
+
+ +

Sets the initialization vector to use for future encryption and decryption operations.

+
Parameters
+ + + +
ivThe initialization vector to use.
lenThe length of the initialization vector in bytes.
+
+
+
Returns
Returns false if the length is not supported.
+

Initialization vectors should be set before the first call to encrypt() or decrypt() after a setKey() call. If the initialization vector is changed after encryption or decryption begins, then the behaviour is undefined.

+
Note
The IV is not encoded into the output stream by encrypt(). The caller is responsible for communicating the IV to the other party.
+
See Also
ivSize()
+ +

Implements Cipher.

+ +

Definition at line 90 of file GCM.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool GCMCommon::setKey (const uint8_t * key,
size_t len 
)
+
+virtual
+
+ +

Sets the key to use for future encryption and decryption operations.

+
Parameters
+ + + +
keyThe key to use.
lenThe length of the key in bytes.
+
+
+
Returns
Returns false if the key length is not supported, or the key is somehow "weak" and unusable by this cipher.
+

Use clear() or the destructor to remove the key and any other sensitive data from the object once encryption or decryption is complete.

+

Calling setKey() resets the cipher. Any temporary data that was being retained for encrypting partial blocks will be abandoned.

+
See Also
keySize(), clear()
+ +

Implements Cipher.

+ +

Definition at line 77 of file GCM.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
size_t GCMCommon::tagSize () const
+
+virtual
+
+ +

Returns the size of the authentication tag.

+
Returns
The size of the authentication tag in bytes.
+

By default this function should return the largest tag size supported by the authenticated cipher.

+
See Also
computeTag()
+ +

Implements AuthenticatedCipher.

+ +

Definition at line 71 of file GCM.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classGCMCommon.png b/classGCMCommon.png new file mode 100644 index 0000000000000000000000000000000000000000..d2e01ee842a244a1aac93184824a31cbd5aed87c GIT binary patch literal 880 zcmbtTdq`7p6#m&`E=kOa9KIIKrIux7QCPYj+Fa=j^&i2xC@7oOuuLt>dwrB>sj-<$ z%gj*AR!Pb*nRbVjtNDU_BwIE|>eRV5o!OmT@2^|`_Gbsa^L+;noOAd%g(vu2XD4?j z0Dvipz8`SD7U8jcaK4#m}xmZYb^UE%(p)(yAAl+8GpG07vHBf`Yg^ zco$iOK~}4)wcGqec|Pquax%qKhD`@HwMr%w9~21(Hk_Ht^nc`vl+>(GwyeG3Gjb}4 z^nEYa%|fE!U0E&D-e^NuUiu#RwiEU)wivN7Se~hF_UCa(|l zNt&hF5_`Q86Indw1eF{?-&9vHGToVgvm3rm3Qyrvt+8+pXA$b3!7|192BWfGo*h!O zeJ(-l-S};2=OA{YT_TJxuTdszr-zqf2a$!QJ@=SIR-t5iP&|;DqP$h`_;wNzrJ33M zCcs*OrFqdpY?ignxa_8Hvi5nj(V|XwcC(55X9qAH?rTC`LAJEIeWnAevsN0TNO7ZX z90_5J8x{x|Ar_`LLCO58ho1j;euO`p8v!ola|mD@TXBAiZaATwk7l&a2Uga{JU+MI z;p>D(cvV!lXgaO?^t`w(X8-mlxCA+yG-RAT-jr5$Owhblt>E+-%9)=GA}4fR_CwgK z_=u^n3kUDRo-4x&_P)eCvh9~S-ZEmc2MShc<>_r^M?Anl+2Ur1rsjjA_kd^WLbOy2 zddYZ;JK6$GHfo`gf7~MI9F%ErWT?7R(2w0IAX4&$j^OO6%H4=ob1}9nSmfcy%XmHB z*BJ2CE)QchC=;dnd6{ges09%eA7Mn96a6xlt_Y)-s-DXAg`*^q1vgb=>HdBViF-FO ze!xybUO$Fpd56A%UEc%0UnO<=oW2Rn=X#N~KqzUWV-*!F2tv7h2f;R%Eb2V~FPtCt I^6<&r-^a7m#Q*>R literal 0 HcmV?d00001 diff --git a/classGHASH-members.html b/classGHASH-members.html new file mode 100644 index 00000000..5c0bd70a --- /dev/null +++ b/classGHASH-members.html @@ -0,0 +1,111 @@ + + + + + + +ArduinoLibs: Member List + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+
+
+
GHASH Member List
+
+
+ +

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

+ + + + + + + + + + + +
clear()GHASH
finalize(void *token, size_t len)GHASH
GHASH()GHASH
H (defined in GHASH)GHASH
pad()GHASH
posn (defined in GHASH)GHASH
reset(const void *key)GHASH
update(const void *data, size_t len)GHASH
Y (defined in GHASH)GHASH
~GHASH()GHASH
+ + + + diff --git a/classGHASH.html b/classGHASH.html new file mode 100644 index 00000000..2454ca79 --- /dev/null +++ b/classGHASH.html @@ -0,0 +1,273 @@ + + + + + + +ArduinoLibs: GHASH Class Reference + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
GHASH Class Reference
+
+
+ +

Implementation of the GHASH message authenticator. + More...

+ +

#include <GHASH.h>

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

+Public Member Functions

GHASH ()
 Constructs a new GHASH message authenticator.
 
~GHASH ()
 Destroys this GHASH message authenticator.
 
void reset (const void *key)
 Resets the GHASH message authenticator for a new session. More...
 
void update (const void *data, size_t len)
 Updates the message authenticator with more data. More...
 
void finalize (void *token, size_t len)
 Finalizes the authentication process and returns the token. More...
 
void pad ()
 Pads the input stream with zero bytes to a multiple of 16. More...
 
+void clear ()
 Clears the authenticator's state, removing all sensitive data.
 
+

Detailed Description

+

Implementation of the GHASH message authenticator.

+

GHASH is the message authentication part of Galois Counter Mode (GCM).

+
Note
GHASH is not the same as GMAC. GHASH implements the low level hashing primitive that is used by both GCM and GMAC. GMAC can be simulated using GCM and an empty plaintext/ciphertext.
+

References: NIST SP 800-38D, http://en.wikipedia.org/wiki/Galois/Counter_Mode

+
See Also
GCM
+ +

Definition at line 29 of file GHASH.h.

+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + +
void GHASH::finalize (void * token,
size_t len 
)
+
+ +

Finalizes the authentication process and returns the token.

+
Parameters
+ + + +
tokenThe buffer to return the token value in.
lenThe length of the token buffer between 0 and 16.
+
+
+

If len is less than 16, then the token value will be truncated to the first len bytes. If len is greater than 16, then the remaining bytes will left unchanged.

+

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

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

Definition at line 130 of file GHASH.cpp.

+ +
+
+ +
+
+ + + + + + + +
void GHASH::pad ()
+
+ +

Pads the input stream with zero bytes to a multiple of 16.

+
See Also
update()
+ +

Definition at line 146 of file GHASH.cpp.

+ +
+
+ +
+
+ + + + + + + + +
void GHASH::reset (const void * key)
+
+ +

Resets the GHASH message authenticator for a new session.

+
Parameters
+ + +
keyPoints to the 16 byte authentication key.
+
+
+
See Also
update(), finalize()
+ +

Definition at line 67 of file GHASH.cpp.

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

Updates the message authenticator 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 authentication process.

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

Definition at line 94 of file GHASH.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classHash-members.html b/classHash-members.html index 0ee9ba82..c7954e43 100644 --- a/classHash-members.html +++ b/classHash-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classHash.html b/classHash.html index 99a1878b..43e39e81 100644 --- a/classHash.html +++ b/classHash.html @@ -576,7 +576,7 @@ Protected Member Functions diff --git a/classI2CMaster-members.html b/classI2CMaster-members.html index f9ffa15a..6d8194d1 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 07523ad8..c1d4a5c8 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 91e656dd..402f4b79 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 b4af25b4..817aedda 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 f8538a1e..dd1e255a 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 4873c695..d738985c 100644 --- a/classIntField.html +++ b/classIntField.html @@ -647,7 +647,7 @@ LiquidCrystal *  diff --git a/classKeccakCore-members.html b/classKeccakCore-members.html index 8dfa69f0..a8ba0e4f 100644 --- a/classKeccakCore-members.html +++ b/classKeccakCore-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classKeccakCore.html b/classKeccakCore.html index 9ddc03ec..cd1eddd6 100644 --- a/classKeccakCore.html +++ b/classKeccakCore.html @@ -425,7 +425,7 @@ void  diff --git a/classLCD-members.html b/classLCD-members.html index 904d1010..66833cad 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 d69ac219..31683fd7 100644 --- a/classLCD.html +++ b/classLCD.html @@ -592,7 +592,7 @@ Support for DFRobot LCD Shield diff --git a/classListField-members.html b/classListField-members.html index ee3dd34d..d869b196 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 c6c8e59b..c920ca9d 100644 --- a/classListField.html +++ b/classListField.html @@ -411,7 +411,7 @@ LiquidCrystal *  diff --git a/classMelody-members.html b/classMelody-members.html index 1d167d55..c84be0e3 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 88820fdc..e5fbf2ee 100644 --- a/classMelody.html +++ b/classMelody.html @@ -371,7 +371,7 @@ bool  diff --git a/classNoiseSource-members.html b/classNoiseSource-members.html index e288f1e0..7283f700 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 ab6006d8..a9a64c8c 100644 --- a/classNoiseSource.html +++ b/classNoiseSource.html @@ -258,7 +258,7 @@ Protected Member Functions diff --git a/classOFB-members.html b/classOFB-members.html index ded87fd1..499e9e17 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 7a7ffba4..e943b85f 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 f6cc1081..6b6b4eab 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 12ae4c99..b1999d26 100644 --- a/classOFBCommon.html +++ b/classOFBCommon.html @@ -534,7 +534,7 @@ Protected Member Functions diff --git a/classPoly1305-members.html b/classPoly1305-members.html new file mode 100644 index 00000000..9f23f8db --- /dev/null +++ b/classPoly1305-members.html @@ -0,0 +1,113 @@ + + + + + + +ArduinoLibs: Member List + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+
+
+
Poly1305 Member List
+
+
+ +

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

+ + + + + + + + + + + + + +
c (defined in Poly1305)Poly1305
chunkSize (defined in Poly1305)Poly1305
clear()Poly1305
finalize(const void *nonce, void *token, size_t len)Poly1305
h (defined in Poly1305)Poly1305
pad()Poly1305
Poly1305()Poly1305
r (defined in Poly1305)Poly1305
reset(const void *key)Poly1305
t (defined in Poly1305)Poly1305
update(const void *data, size_t len)Poly1305
~Poly1305()Poly1305
+ + + + diff --git a/classPoly1305.html b/classPoly1305.html new file mode 100644 index 00000000..13606129 --- /dev/null +++ b/classPoly1305.html @@ -0,0 +1,288 @@ + + + + + + +ArduinoLibs: Poly1305 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
Poly1305 Class Reference
+
+
+ +

Poly1305 message authenticator. + More...

+ +

#include <Poly1305.h>

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

+Public Member Functions

Poly1305 ()
 Constructs a new Poly1305 message authenticator.
 
~Poly1305 ()
 Destroys this Poly1305 message authenticator after clearing all sensitive information.
 
void reset (const void *key)
 Resets the Poly1305 message authenticator for a new session. More...
 
void update (const void *data, size_t len)
 Updates the message authenticator with more data. More...
 
void finalize (const void *nonce, void *token, size_t len)
 Finalizes the authentication process and returns the token. More...
 
void pad ()
 Pads the input stream with zero bytes to a multiple of 16. More...
 
+void clear ()
 Clears the authenticator's state, removing all sensitive data.
 
+

Detailed Description

+

Poly1305 message authenticator.

+

Poly1305 is a message authenticator designed by Daniel J. Bernstein. An arbitrary-length message is broken up into 16-byte chunks and fed into a polynomial mod 2130 - 5 based on the 16-byte authentication key. The final polynomial value is then combined with a 16-byte nonce to create the authentication token.

+

The following example demonstrates how to compute an authentication token for a message made up of several blocks under a specific key and nonce:

+
Poly1305 poly1305;
+
uint8_t token[16];
+
poly1305.reset(key);
+
poly1305.update(block1, sizeof(block1));
+
poly1305.update(block2, sizeof(block2));
+
...
+
poly1305.update(blockN, sizeof(blockN));
+
poly1305.finalize(nonce, token, sizeof(token));
+

In the original Poly1305 specification, the nonce was encrypted with AES and a second 16-byte key. Since then, common practice has been for the caller to encrypt the nonce which gives the caller more flexibility as to how to derive and/or encrypt the nonce.

+

References: http://en.wikipedia.org/wiki/Poly1305-AES, http://cr.yp.to/mac.html

+ +

Definition at line 29 of file Poly1305.h.

+

Member Function Documentation

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void Poly1305::finalize (const void * nonce,
void * token,
size_t len 
)
+
+ +

Finalizes the authentication process and returns the token.

+
Parameters
+ + + + +
noncePoints to the 16-bit nonce to combine with the token.
tokenThe buffer to return the token value in.
lenThe length of the token buffer between 0 and 16.
+
+
+

If len is less than 16, then the token value will be truncated to the first len bytes. If len is greater than 16, then the remaining bytes will left unchanged.

+

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

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

Definition at line 180 of file Poly1305.cpp.

+ +
+
+ +
+
+ + + + + + + +
void Poly1305::pad ()
+
+ +

Pads the input stream with zero bytes to a multiple of 16.

+
See Also
update()
+ +

Definition at line 251 of file Poly1305.cpp.

+ +
+
+ +
+
+ + + + + + + + +
void Poly1305::reset (const void * key)
+
+ +

Resets the Poly1305 message authenticator for a new session.

+
Parameters
+ + +
keyPoints to the 16 byte authentication key.
+
+
+
See Also
update(), finalize()
+ +

Definition at line 111 of file Poly1305.cpp.

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

Updates the message authenticator 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 authentication process.

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

Definition at line 143 of file Poly1305.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classRNGClass-members.html b/classRNGClass-members.html index 1ca6ed50..0cc4eb22 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 35efd6a6..87679ec4 100644 --- a/classRNGClass.html +++ b/classRNGClass.html @@ -517,7 +517,7 @@ static const int  diff --git a/classRTC-members.html b/classRTC-members.html index b42d5b81..5483eed2 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 45c0e9f0..6de9ba45 100644 --- a/classRTC.html +++ b/classRTC.html @@ -779,7 +779,7 @@ static const uint8_t  diff --git a/classRTCAlarm-members.html b/classRTCAlarm-members.html index 808ba527..524805b7 100644 --- a/classRTCAlarm-members.html +++ b/classRTCAlarm-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classRTCDate-members.html b/classRTCDate-members.html index 112b849f..2824966f 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 5d20166d..48ee2c2b 100644 --- a/classRTCTime-members.html +++ b/classRTCTime-members.html @@ -96,7 +96,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classRingOscillatorNoiseSource-members.html b/classRingOscillatorNoiseSource-members.html index 053ab272..10c755b7 100644 --- a/classRingOscillatorNoiseSource-members.html +++ b/classRingOscillatorNoiseSource-members.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classRingOscillatorNoiseSource.html b/classRingOscillatorNoiseSource.html index 65566412..4cc36cd0 100644 --- a/classRingOscillatorNoiseSource.html +++ b/classRingOscillatorNoiseSource.html @@ -250,7 +250,7 @@ Additional Inherited Members diff --git a/classSHA1-members.html b/classSHA1-members.html index 46b9245c..4a83a4dd 100644 --- a/classSHA1-members.html +++ b/classSHA1-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classSHA1.html b/classSHA1.html index 7a95905f..22fd48fa 100644 --- a/classSHA1.html +++ b/classSHA1.html @@ -506,7 +506,7 @@ Additional Inherited Members diff --git a/classSHA256-members.html b/classSHA256-members.html index b5f26c13..6fc35cb1 100644 --- a/classSHA256-members.html +++ b/classSHA256-members.html @@ -110,7 +110,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classSHA256.html b/classSHA256.html index e21d2bca..588fb275 100644 --- a/classSHA256.html +++ b/classSHA256.html @@ -506,7 +506,7 @@ Additional Inherited Members diff --git a/classSHA3__256-members.html b/classSHA3__256-members.html index c7c01fd5..d1e7a4e4 100644 --- a/classSHA3__256-members.html +++ b/classSHA3__256-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classSHA3__256.html b/classSHA3__256.html index af0eaa14..9071ec25 100644 --- a/classSHA3__256.html +++ b/classSHA3__256.html @@ -506,7 +506,7 @@ Additional Inherited Members diff --git a/classSHA3__512-members.html b/classSHA3__512-members.html index 6250621d..fc01907b 100644 --- a/classSHA3__512-members.html +++ b/classSHA3__512-members.html @@ -106,7 +106,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classSHA3__512.html b/classSHA3__512.html index 92a39cda..4a7061c9 100644 --- a/classSHA3__512.html +++ b/classSHA3__512.html @@ -506,7 +506,7 @@ Additional Inherited Members diff --git a/classSHA512-members.html b/classSHA512-members.html index d89fa586..a4c3bfaf 100644 --- a/classSHA512-members.html +++ b/classSHA512-members.html @@ -111,7 +111,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classSHA512.html b/classSHA512.html index c0a8cf33..d84294f9 100644 --- a/classSHA512.html +++ b/classSHA512.html @@ -506,7 +506,7 @@ Additional Inherited Members diff --git a/classSoftI2C-members.html b/classSoftI2C-members.html index c605dcc3..2ada6123 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 5b2d7281..fd746fed 100644 --- a/classSoftI2C.html +++ b/classSoftI2C.html @@ -346,7 +346,7 @@ unsigned int  diff --git a/classTextField-members.html b/classTextField-members.html index f3ce5433..05933c6b 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 1d7582a1..16e033cc 100644 --- a/classTextField.html +++ b/classTextField.html @@ -343,7 +343,7 @@ LiquidCrystal *  diff --git a/classTimeField-members.html b/classTimeField-members.html index cf11b00e..4bdb7379 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 21d65f57..63660ac6 100644 --- a/classTimeField.html +++ b/classTimeField.html @@ -541,7 +541,7 @@ LiquidCrystal *  diff --git a/classTransistorNoiseSource-members.html b/classTransistorNoiseSource-members.html index bdbe601e..35c3c53f 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 e483f80d..4bb92852 100644 --- a/classTransistorNoiseSource.html +++ b/classTransistorNoiseSource.html @@ -277,7 +277,7 @@ Additional Inherited Members diff --git a/classes.html b/classes.html index 50eda519..0de10c4e 100644 --- a/classes.html +++ b/classes.html @@ -87,49 +87,54 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
Class Index
-
A | B | C | D | E | F | H | I | K | L | M | N | O | R | S | T
+
A | B | C | D | E | F | G | H | I | K | L | M | N | O | P | R | S | T
- + + - - - - + + + + - - - + + + - - - - + + + + - + + + - - + +
  A  
-
CFB   
  F  
-
ListField   RTCTime   
CFBCommon   
  M  
-
  S  
+
CFBCommon   Form   ListField   RTCDate   
ChaCha   
  G  
+
  M  
+
RTCTime   
AES128   ChaChaPoly   
  S  
AES128   ChaCha   Field   
AES192   Charlieplex   Form   Melody   SHA1   
AES256   ChaseLEDs   
  H  
-
  N  
-
SHA256   
AESCommon   Cipher   SHA3_256   
AES192   Charlieplex   GCM   Melody   
AES256   ChaseLEDs   GCMCommon   
  N  
+
SHA1   
AESCommon   Cipher   GHASH   SHA256   
AuthenticatedCipher   CTR   
  H  
+
NoiseSource   SHA3_256   
  B  
-
CTR   Hash   NoiseSource   SHA3_512   
CTRCommon   
  I  
-
  O  
-
SHA512   
Bitmap   Curve25519   SoftI2C   
BLAKE2b   
  D  
-
I2CMaster   OFB   
  T  
+
CTRCommon   
  O  
+
SHA3_512   
Curve25519   Hash   SHA512   
Bitmap   
  D  
+
  I  
+
OFB   SoftI2C   
BLAKE2b   OFBCommon   
  T  
BLAKE2s   IntField   OFBCommon   
BlinkLED   DMD   IRreceiver   
  R  
-
TextField   
BlockCipher   DS1307RTC   
  K  
-
TimeField   
BoolField   DS3231RTC   RingOscillatorNoiseSource   TransistorNoiseSource   
BLAKE2s   DMD   I2CMaster   
  P  
+
BlinkLED   DS1307RTC   IntField   TextField   
BlockCipher   DS3231RTC   IRreceiver   Poly1305   TimeField   
BoolField   DS3232RTC   
  K  
+
  R  
+
TransistorNoiseSource   
  C  
-
DS3232RTC   KeccakCore   RNGClass   
  E  
-
  L  
+
  E  
+
KeccakCore   RingOscillatorNoiseSource   
CBC   EEPROM24   
  L  
+
RNGClass   
CBCCommon   
  F  
RTC   
CBC   RTCAlarm   
CBCCommon   EEPROM24   LCD   RTCDate   
CFB   LCD   RTCAlarm   
Field   
-
A | B | C | D | E | F | H | I | K | L | M | N | O | R | S | T
+
A | B | C | D | E | F | G | H | I | K | L | M | N | O | P | R | S | T
diff --git a/crypto-rng-ring_8dox.html b/crypto-rng-ring_8dox.html index 1f9bc249..7eece088 100644 --- a/crypto-rng-ring_8dox.html +++ b/crypto-rng-ring_8dox.html @@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/crypto-rng_8dox.html b/crypto-rng_8dox.html index 171b4ddb..a1504143 100644 --- a/crypto-rng_8dox.html +++ b/crypto-rng_8dox.html @@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/crypto.html b/crypto.html index b0c1fd48..dfbf0e9d 100644 --- a/crypto.html +++ b/crypto.html @@ -83,9 +83,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); Supported Algorithms @@ -102,33 +104,53 @@ Performance

All figures are for the Arduino Uno running at 16 MHz. Figures for the Ardunino Mega 2560 running at 16 MHz are similar:

- + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + +
AlgorithmEncryption / Hashing (per byte)Decryption (per byte)Key SetupState Size (bytes)
Encryption AlgorithmEncryption (per byte)Decryption (per byte)Key SetupState Size (bytes)
AES128 (ECB mode)36.90us66.48us160.00us208
AES128 (ECB mode)36.90us66.48us160.00us213
AES192 (ECB mode)44.20us80.35us166.54us240
AES192 (ECB mode)44.20us80.35us166.54us245
AES256 (ECB mode)51.50us94.22us227.97us272
AES256 (ECB mode)51.50us94.22us227.97us277
ChaCha (20 rounds)14.87us14.88us43.74us130
ChaCha (20 rounds)14.87us14.88us43.74us132
ChaCha (12 rounds)10.38us10.38us43.74us130
ChaCha (12 rounds)10.38us10.38us43.74us132
ChaCha (8 rounds)8.13us8.14us43.74us130
ChaCha (8 rounds)8.13us8.14us43.74us132
SHA121.90us93
SHA25643.85us105
AEAD AlgorithmEncryption (per byte)Decryption (per byte)Key SetupState Size (bytes)
SHA512123.24us209
ChaChaPoly41.23us41.23us902.55us255
SHA3_256121.69us403
GCM<AES128>186.47us186.42us1388.43us316
SHA3_512229.12us403
GCM<AES192>194.17us193.72us1628.67us348
BLAKE2s18.54us169
GCM<AES256>201.47us201.02us1923.78us380
BLAKE2b50.58us337
Hash AlgorithmHashing (per byte)FinalizationKey SetupState Size (bytes)
SHA121.90us95
SHA25643.85us107
SHA512123.24us211
SHA3_256121.69us405
SHA3_512229.12us405
BLAKE2s18.54us171
BLAKE2b50.58us339
Poly130526.29us87
GHASH148.14us33

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:

@@ -145,7 +167,7 @@ Performance diff --git a/crypto_8dox.html b/crypto_8dox.html index f019c86f..90792c05 100644 --- a/crypto_8dox.html +++ b/crypto_8dox.html @@ -87,7 +87,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/crypto_rng.html b/crypto_rng.html index f9051d30..7aa4acfc 100644 --- a/crypto_rng.html +++ b/crypto_rng.html @@ -182,7 +182,7 @@ Destroying secret data diff --git a/crypto_rng_ring.html b/crypto_rng_ring.html index 946ad738..eb761745 100644 --- a/crypto_rng_ring.html +++ b/crypto_rng_ring.html @@ -151,7 +151,7 @@ Connecting to the Arduino diff --git a/dir_1586d320a3b1e622174530fde769cda9.html b/dir_1586d320a3b1e622174530fde769cda9.html index 6d6b7e94..0508d2bb 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 c0c28026..dd7490c4 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 ed6058fe..a62fa9a0 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 6fdf4541..99c11c33 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 eb8fada6..b4332a40 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 41a5ad21..59672634 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 672ab798..54fcc17a 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 730f0780..e79c421d 100644 --- a/dir_e2ce51835550ba18edf07a8311722290.html +++ b/dir_e2ce51835550ba18edf07a8311722290.html @@ -96,6 +96,12 @@ Files   file  AESCommon.cpp [code]   +file  AuthenticatedCipher.cpp [code] +  +file  AuthenticatedCipher.h [code] +  +file  BigNumberUtil.h [code] +  file  BLAKE2b.cpp [code]   file  BLAKE2b.h [code] @@ -120,6 +126,10 @@ Files   file  ChaCha.h [code]   +file  ChaChaPoly.cpp [code] +  +file  ChaChaPoly.h [code] +  file  Cipher.cpp [code]   file  Cipher.h [code] @@ -136,6 +146,14 @@ Files   file  Curve25519.h [code]   +file  GCM.cpp [code] +  +file  GCM.h [code] +  +file  GHASH.cpp [code] +  +file  GHASH.h [code] +  file  Hash.cpp [code]   file  Hash.h [code] @@ -152,6 +170,10 @@ Files   file  OFB.h [code]   +file  Poly1305.cpp [code] +  +file  Poly1305.h [code] +  file  RingOscillatorNoiseSource.cpp [code]   file  RingOscillatorNoiseSource.h [code] @@ -184,7 +206,7 @@ Files diff --git a/dir_f34881fcf60f680b800190d5274dfaea.html b/dir_f34881fcf60f680b800190d5274dfaea.html index 0f54db8a..622b233a 100644 --- a/dir_f34881fcf60f680b800190d5274dfaea.html +++ b/dir_f34881fcf60f680b800190d5274dfaea.html @@ -106,7 +106,7 @@ Files diff --git a/dir_f9b96888882c2691b8eeaeafd1b9501d.html b/dir_f9b96888882c2691b8eeaeafd1b9501d.html index 05ffe78e..8d4e8104 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 16e0a7ef..e2c20904 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 f36944a0..e3dd8987 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 1ac4b869..87d3afe8 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 704a536b..5df74471 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 938978f7..18f224c6 100644 --- a/files.html +++ b/files.html @@ -91,105 +91,116 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); o*AES192.cpp o*AES256.cpp o*AESCommon.cpp -o*Bitmap.cpp -o*Bitmap.h -o*BLAKE2b.cpp -o*BLAKE2b.h -o*BLAKE2s.cpp -o*BLAKE2s.h -o*BlinkLED.cpp -o*BlinkLED.h -o*BlockCipher.cpp -o*BlockCipher.h -o*BoolField.cpp -o*BoolField.h -o*CBC.cpp -o*CBC.h -o*CFB.cpp -o*CFB.h -o*ChaCha.cpp -o*ChaCha.h -o*Charlieplex.cpp -o*Charlieplex.h -o*ChaseLEDs.cpp -o*ChaseLEDs.h -o*Cipher.cpp -o*Cipher.h -o*Crypto.cpp -o*Crypto.h -o*CTR.cpp -o*CTR.h -o*Curve25519.cpp -o*Curve25519.h -o*DejaVuSans9.h -o*DejaVuSansBold9.h -o*DejaVuSansItalic9.h -o*DMD.cpp -o*DMD.h -o*DS1307RTC.cpp -o*DS1307RTC.h -o*DS3231RTC.cpp -o*DS3231RTC.h -o*DS3232RTC.cpp -o*DS3232RTC.h -o*EEPROM24.cpp -o*EEPROM24.h -o*Field.cpp -o*Field.h -o*Form.cpp -o*Form.h -o*Hash.cpp -o*Hash.h -o*I2CMaster.cpp -o*I2CMaster.h -o*IntField.cpp -o*IntField.h -o*IRreceiver.cpp -o*IRreceiver.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*RingOscillatorNoiseSource.cpp -o*RingOscillatorNoiseSource.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 +o*AuthenticatedCipher.cpp +o*AuthenticatedCipher.h +o*BigNumberUtil.h +o*Bitmap.cpp +o*Bitmap.h +o*BLAKE2b.cpp +o*BLAKE2b.h +o*BLAKE2s.cpp +o*BLAKE2s.h +o*BlinkLED.cpp +o*BlinkLED.h +o*BlockCipher.cpp +o*BlockCipher.h +o*BoolField.cpp +o*BoolField.h +o*CBC.cpp +o*CBC.h +o*CFB.cpp +o*CFB.h +o*ChaCha.cpp +o*ChaCha.h +o*ChaChaPoly.cpp +o*ChaChaPoly.h +o*Charlieplex.cpp +o*Charlieplex.h +o*ChaseLEDs.cpp +o*ChaseLEDs.h +o*Cipher.cpp +o*Cipher.h +o*Crypto.cpp +o*Crypto.h +o*CTR.cpp +o*CTR.h +o*Curve25519.cpp +o*Curve25519.h +o*DejaVuSans9.h +o*DejaVuSansBold9.h +o*DejaVuSansItalic9.h +o*DMD.cpp +o*DMD.h +o*DS1307RTC.cpp +o*DS1307RTC.h +o*DS3231RTC.cpp +o*DS3231RTC.h +o*DS3232RTC.cpp +o*DS3232RTC.h +o*EEPROM24.cpp +o*EEPROM24.h +o*Field.cpp +o*Field.h +o*Form.cpp +o*Form.h +o*GCM.cpp +o*GCM.h +o*GHASH.cpp +o*GHASH.h +o*Hash.cpp +o*Hash.h +o*I2CMaster.cpp +o*I2CMaster.h +o*IntField.cpp +o*IntField.h +o*IRreceiver.cpp +o*IRreceiver.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*Poly1305.cpp +o*Poly1305.h +o*PowerSave.cpp +o*PowerSave.h +o*RC5.h +o*RingOscillatorNoiseSource.cpp +o*RingOscillatorNoiseSource.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 3a542917..856aeeeb 100644 --- a/functions.html +++ b/functions.html @@ -123,6 +123,11 @@ 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:

- a -

diff --git a/functions_func_l.html b/functions_func_l.html index f8e16f1c..9c5e24cf 100644 --- a/functions_func_l.html +++ b/functions_func_l.html @@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : Field
  • LCD() -: LCD +: LCD
  • led() : Charlieplex @@ -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 a5ef2b3f..f36b755f 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 0a26e918..4eb24be5 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 9f71ab9d..ad774ebe 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 452ad531..63d0da43 100644 --- a/functions_func_p.html +++ b/functions_func_p.html @@ -123,7 +123,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

    - p -

    diff --git a/functions_l.html b/functions_l.html index 2d8ca2a6..6e46530c 100644 --- a/functions_l.html +++ b/functions_l.html @@ -130,7 +130,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : Field
  • LCD() -: LCD +: LCD
  • led() : Charlieplex @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_m.html b/functions_m.html index e6c1a508..38859503 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 fb662768..ae135254 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 6abbf5e0..eca58d71 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 645ea309..250e580c 100644 --- a/functions_p.html +++ b/functions_p.html @@ -124,7 +124,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');

    - p -

    • pad() -: KeccakCore +: GHASH +, KeccakCore +, Poly1305
    • pageSize() : EEPROM24 @@ -141,6 +143,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    • playOnce() : Melody
    • +
    • Poly1305() +: Poly1305 +
    • prevField() : Form
    • @@ -157,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_r.html b/functions_r.html index 191d67c7..b0ade69f 100644 --- a/functions_r.html +++ b/functions_r.html @@ -172,8 +172,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
    • reset() : BLAKE2b , BLAKE2s +, GHASH , Hash , KeccakCore +, Poly1305 , SHA1 , SHA256 , SHA3_256 @@ -206,7 +208,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_s.html b/functions_s.html index 92bf3f42..4f93f8f2 100644 --- a/functions_s.html +++ b/functions_s.html @@ -161,6 +161,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : CBCCommon , CFBCommon , CTRCommon +, GCMCommon , OFBCommon
    • setCapacity() @@ -197,8 +198,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : CBCCommon , CFBCommon , ChaCha +, ChaChaPoly , Cipher , CTRCommon +, GCMCommon , OFBCommon
    • setKey() @@ -209,8 +212,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , CBCCommon , CFBCommon , ChaCha +, ChaChaPoly , Cipher , CTRCommon +, GCMCommon , OFBCommon
    • setLabel() @@ -346,7 +351,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_t.html b/functions_t.html index acf2ce17..5a2171bf 100644 --- a/functions_t.html +++ b/functions_t.html @@ -123,6 +123,11 @@ 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:

      - t -

        +
      • tagSize() +: AuthenticatedCipher +, ChaChaPoly +, GCMCommon +
      • textColor() : Bitmap
      • @@ -136,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : Bitmap
      • TimeField() -: TimeField +: TimeField
      • TransistorNoiseSource() : TransistorNoiseSource @@ -148,7 +153,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_type.html b/functions_type.html index 62b722e7..8a0c2f0e 100644 --- a/functions_type.html +++ b/functions_type.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_u.html b/functions_u.html index 94448e07..9801fe85 100644 --- a/functions_u.html +++ b/functions_u.html @@ -126,8 +126,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
      • update() : BLAKE2b , BLAKE2s +, GHASH , Hash , KeccakCore +, Poly1305 , SHA1 , SHA256 , SHA3_256 @@ -141,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_v.html b/functions_v.html index eee7fa36..7fe1187e 100644 --- a/functions_v.html +++ b/functions_v.html @@ -134,7 +134,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_vars.html b/functions_vars.html index b964fe62..573c342a 100644 --- a/functions_vars.html +++ b/functions_vars.html @@ -156,7 +156,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_w.html b/functions_w.html index ff5812a3..53d2412a 100644 --- a/functions_w.html +++ b/functions_w.html @@ -164,7 +164,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_y.html b/functions_y.html index b9f032dd..ea3d5a50 100644 --- a/functions_y.html +++ b/functions_y.html @@ -130,7 +130,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_~.html b/functions_~.html index e16ab1c1..a9d04aa0 100644 --- a/functions_~.html +++ b/functions_~.html @@ -126,6 +126,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
      • ~AESCommon() : AESCommon
      • +
      • ~AuthenticatedCipher() +: AuthenticatedCipher +
      • ~Bitmap() : Bitmap
      • @@ -144,6 +147,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
      • ~CFBCommon() : CFBCommon
      • +
      • ~ChaChaPoly() +: ChaChaPoly +
      • ~Charlieplex() : Charlieplex
      • @@ -159,6 +165,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
      • ~Form() : Form
      • +
      • ~GCMCommon() +: GCMCommon +
      • +
      • ~GHASH() +: GHASH +
      • ~Hash() : Hash
      • @@ -171,6 +183,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
      • ~OFBCommon() : OFBCommon
      • +
      • ~Poly1305() +: Poly1305 +
      • ~RNGClass() : RNGClass
      • @@ -193,7 +208,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/group__power__save.html b/group__power__save.html index 54d0f30d..7c8cb563 100644 --- a/group__power__save.html +++ b/group__power__save.html @@ -201,7 +201,7 @@ void  diff --git a/hierarchy.html b/hierarchy.html index b4cd135f..193adbb2 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -88,7 +88,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
        This inheritance list is sorted roughly, but not completely, alphabetically:
        -
        [detail level 123]
        +
        [detail level 1234]
        @@ -100,15 +100,19 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); - - - - - - - - - + + + + + + + + + + + + + @@ -118,38 +122,40 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        oCBitmapRepresents a monochrome bitmap within main memory
        |\CDMDHandle large dot matrix displays composed of LED's
        oCBlinkLEDBlink a LED on a digital output pin
        oCCharlieplexManage an array of LED's in a charlieplexed arrangement
        oCChaseLEDsChase LED's on output pins in a defined sequence
        oCCipherAbstract base class for stream ciphers
        |oCCBCCommonConcrete base class to assist with implementing CBC for 128-bit block ciphers
        ||\CCBC< T >Implementation of the Cipher Block Chaining (CBC) mode for 128-bit block ciphers
        |oCCFBCommonConcrete base class to assist with implementing CFB for 128-bit block ciphers
        ||\CCFB< T >Implementation of the Cipher Feedback (CFB) mode for 128-bit block ciphers
        |oCChaChaChaCha stream cipher
        |oCCTRCommonConcrete base class to assist with implementing CTR mode for 128-bit block ciphers
        ||\CCTR< T >Implementation of the Counter (CTR) mode for 128-bit block ciphers
        |\COFBCommonConcrete base class to assist with implementing OFB for 128-bit block ciphers
        | \COFB< T >Implementation of the Output Feedback (OFB) mode for 128-bit block ciphers
        |oCAuthenticatedCipherAbstract base class for authenticated ciphers
        ||oCChaChaPolyAuthenticated cipher based on ChaCha and Poly1305
        ||\CGCMCommonConcrete base class to assist with implementing GCM for 128-bit block ciphers
        || \CGCM< T >Implementation of the Galois Counter Mode (GCM)
        |oCCBCCommonConcrete base class to assist with implementing CBC for 128-bit block ciphers
        ||\CCBC< T >Implementation of the Cipher Block Chaining (CBC) mode for 128-bit block ciphers
        |oCCFBCommonConcrete base class to assist with implementing CFB for 128-bit block ciphers
        ||\CCFB< T >Implementation of the Cipher Feedback (CFB) mode for 128-bit block ciphers
        |oCChaChaChaCha stream cipher
        |oCCTRCommonConcrete base class to assist with implementing CTR mode for 128-bit block ciphers
        ||\CCTR< T >Implementation of the Counter (CTR) mode for 128-bit block ciphers
        |\COFBCommonConcrete base class to assist with implementing OFB for 128-bit block ciphers
        | \COFB< T >Implementation of the Output Feedback (OFB) mode for 128-bit block ciphers
        oCCurve25519Diffie-Hellman key agreement based on the elliptic curve modulo 2^255 - 19
        oCEEPROM24Reading and writing EEPROM's from the 24LCXX family
        oCFieldManages a single data input/output field within a Form
        |oCTextFieldField that displays a read-only text value
        |\CTimeFieldField that manages the display and editing of a time value
        oCFormManager for a form containing data input/output fields
        oCHashAbstract base class for cryptographic hash algorithms
        |oCBLAKE2bBLAKE2b hash algorithm
        |oCBLAKE2sBLAKE2s hash algorithm
        |oCSHA1SHA-1 hash algorithm
        |oCSHA256SHA-256 hash algorithm
        |oCSHA3_256SHA3-256 hash algorithm
        |oCSHA3_512SHA3-512 hash algorithm
        |\CSHA512SHA-512 hash algorithm
        oCI2CMasterAbstract base class for I2C master implementations
        |\CSoftI2CBit-banged implementation of an I2C master
        oCIRreceiverManages the reception of RC-5 commands from an infrared remote control
        oCKeccakCoreKeccak core sponge function
        oCLiquidCrystal
        |\CLCDEnhanced library for Freetronics 16x2 LCD shields
        oCMelodyPlays a melody on a digital output pin using tone()
        oCNoiseSourceAbstract base class for random noise sources
        |oCRingOscillatorNoiseSourceProcesses the signal from a ring oscillator based noise source
        |\CTransistorNoiseSourceProcesses the signal from a transistor-based noise source
        oCRNGClassPseudo random number generator suitable for cryptography
        oCRTCBase class for realtime clock handlers
        |oCDS1307RTCCommunicates with a DS1307 realtime clock chip via I2C
        |oCDS3231RTCCommunicates with a DS3231 realtime clock chip via I2C
        |\CDS3232RTCCommunicates with a DS3232 realtime clock chip via I2C
        oCRTCAlarmStores alarm information from a realtime clock chip
        oCRTCDateStores date information from a realtime clock chip
        \CRTCTimeStores time information from a realtime clock chip
        oCGHASHImplementation of the GHASH message authenticator
        oCHashAbstract base class for cryptographic hash algorithms
        |oCBLAKE2bBLAKE2b hash algorithm
        |oCBLAKE2sBLAKE2s hash algorithm
        |oCSHA1SHA-1 hash algorithm
        |oCSHA256SHA-256 hash algorithm
        |oCSHA3_256SHA3-256 hash algorithm
        |oCSHA3_512SHA3-512 hash algorithm
        |\CSHA512SHA-512 hash algorithm
        oCI2CMasterAbstract base class for I2C master implementations
        |\CSoftI2CBit-banged implementation of an I2C master
        oCIRreceiverManages the reception of RC-5 commands from an infrared remote control
        oCKeccakCoreKeccak core sponge function
        oCLiquidCrystal
        |\CLCDEnhanced library for Freetronics 16x2 LCD shields
        oCMelodyPlays a melody on a digital output pin using tone()
        oCNoiseSourceAbstract base class for random noise sources
        |oCRingOscillatorNoiseSourceProcesses the signal from a ring oscillator based noise source
        |\CTransistorNoiseSourceProcesses the signal from a transistor-based noise source
        oCPoly1305Poly1305 message authenticator
        oCRNGClassPseudo random number generator suitable for cryptography
        oCRTCBase class for realtime clock handlers
        |oCDS1307RTCCommunicates with a DS1307 realtime clock chip via I2C
        |oCDS3231RTCCommunicates with a DS3231 realtime clock chip via I2C
        |\CDS3232RTCCommunicates with a DS3232 realtime clock chip via I2C
        oCRTCAlarmStores alarm information from a realtime clock chip
        oCRTCDateStores date information from a realtime clock chip
        \CRTCTimeStores time information from a realtime clock chip
        diff --git a/index.html b/index.html index 02b8f383..76227317 100644 --- a/index.html +++ b/index.html @@ -129,9 +129,11 @@ Realtime Clock Library Cryptographic Library @@ -152,7 +154,7 @@ Other diff --git a/ir-dumpir_8dox.html b/ir-dumpir_8dox.html index f96ced0b..749beff1 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 eb0807d5..6a9f8fac 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 33c11893..f7a1c211 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 e727c261..c1ba9950 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 19a31f7e..826517b9 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 f2521d80..f88f7a14 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 53e0cff2..b06ee0c6 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 991a111f..d0d66dc1 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 49e453b1..39bcff0d 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 98d71dba..0afcbd61 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 d3022691..673a3a35 100644 --- a/pages.html +++ b/pages.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/search/all_0.js b/search/all_0.js index 02e008ed..3e61c0d3 100644 --- a/search/all_0.js +++ b/search/all_0.js @@ -1,5 +1,6 @@ var searchData= [ + ['addauthdata',['addAuthData',['../classAuthenticatedCipher.html#abdb081bdf0d59c138cbcffd23c044b10',1,'AuthenticatedCipher::addAuthData()'],['../classChaChaPoly.html#a4aa3514d1fb6272da977a7467ae6734b',1,'ChaChaPoly::addAuthData()'],['../classGCMCommon.html#ad926e980ae2d61c10c9bf82813154a25',1,'GCMCommon::addAuthData()']]], ['addfield',['addField',['../classForm.html#a5cb056ace428e75e321610555bfecac7',1,'Form']]], ['addnoisesource',['addNoiseSource',['../classRNGClass.html#aacf23b192b0e4cc8726d9abe05f5a9db',1,'RNGClass']]], ['adjustdays',['adjustDays',['../classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d',1,'RTC']]], @@ -14,6 +15,7 @@ var searchData= ['alarm_2dclock_2edox',['alarm-clock.dox',['../alarm-clock_8dox.html',1,'']]], ['alarm_20clock',['Alarm Clock',['../alarm_clock.html',1,'']]], ['alarm_5fcount',['ALARM_COUNT',['../classRTC.html#aee5ae8f600ee5296e65635c0d836fca3',1,'RTC']]], + ['authenticatedcipher',['AuthenticatedCipher',['../classAuthenticatedCipher.html',1,'AuthenticatedCipher'],['../classAuthenticatedCipher.html#a0b1c0210ecb9d374d09b5b62a5140ba2',1,'AuthenticatedCipher::AuthenticatedCipher()']]], ['auto_5frepeat',['AUTO_REPEAT',['../classIRreceiver.html#a9c37631cc1291dc47cabcfef2f631cf9',1,'IRreceiver']]], ['available',['available',['../classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf',1,'EEPROM24::available()'],['../classI2CMaster.html#a6458fa99cfd9e6270ae6dff993955833',1,'I2CMaster::available()'],['../classSoftI2C.html#a849af91018caedbb82e83f02c543305e',1,'SoftI2C::available()'],['../classRNGClass.html#a49e3231ba65a5e4b045bc90976e0a659',1,'RNGClass::available()']]] ]; diff --git a/search/all_10.js b/search/all_10.js index 245dfd07..49e217f1 100644 --- a/search/all_10.js +++ b/search/all_10.js @@ -12,7 +12,7 @@ var searchData= ['setautosavetime',['setAutoSaveTime',['../classRNGClass.html#a5848e87a5f2f0302c88b0377f0e3366d',1,'RNGClass']]], ['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()']]], + ['setblockcipher',['setBlockCipher',['../classCBCCommon.html#a0b7631244b0c2c954cfdb50eb32f7db1',1,'CBCCommon::setBlockCipher()'],['../classCFBCommon.html#a9161530f456efacb64f5008fdb1a460c',1,'CFBCommon::setBlockCipher()'],['../classCTRCommon.html#a6c409c4ec1f99e0cb751196d891dc228',1,'CTRCommon::setBlockCipher()'],['../classGCMCommon.html#a7abd3044862f8634f3b176aafa779ba2',1,'GCMCommon::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']]], @@ -23,8 +23,8 @@ var searchData= ['sethmackey',['setHMACKey',['../classKeccakCore.html#aeff6b3357916bf426b60d3629db52628',1,'KeccakCore']]], ['setholdtime',['setHoldTime',['../classCharlieplex.html#a8502f4c752faba37023ced587695f6a4',1,'Charlieplex']]], ['setitems',['setItems',['../classListField.html#ae6709bce9355451b651893691456704e',1,'ListField']]], - ['setiv',['setIV',['../classCBCCommon.html#ac7a586217835055b3a354bb932db160c',1,'CBCCommon::setIV()'],['../classCFBCommon.html#a597040eb7df40adbbef94b4c3975cd80',1,'CFBCommon::setIV()'],['../classChaCha.html#a734f3246b1e6810c63637b8cda26b259',1,'ChaCha::setIV()'],['../classCipher.html#a3777acd8ff776a4e945bb7c9f2d044d9',1,'Cipher::setIV()'],['../classCTRCommon.html#aad289af3eb013cb3ffda6d7e8e8b3d04',1,'CTRCommon::setIV()'],['../classOFBCommon.html#a4a35364cf30d78f1968cc00803686caf',1,'OFBCommon::setIV()']]], - ['setkey',['setKey',['../classAES128.html#a42d7548eb5084a2c3e2d5aa5f6f98ba4',1,'AES128::setKey()'],['../classAES192.html#a4ab37cff19fb05ceef1533ebc5e37cde',1,'AES192::setKey()'],['../classAES256.html#a6af085d2d6a730ff1e025f982121bbda',1,'AES256::setKey()'],['../classBlockCipher.html#a9a05307664469777592799c8f77397c4',1,'BlockCipher::setKey()'],['../classCBCCommon.html#add75ea4342a190e560cee26a8e9efc37',1,'CBCCommon::setKey()'],['../classCFBCommon.html#a45b9be25fb96f0e3ca5211b064e2baea',1,'CFBCommon::setKey()'],['../classChaCha.html#a6b2bdffbd3705e388bb458edb2f40c90',1,'ChaCha::setKey()'],['../classCipher.html#a0dfe133bda81dfa680b668f5908ccbe5',1,'Cipher::setKey()'],['../classCTRCommon.html#a79da937dc2c444a174176beab33c055a',1,'CTRCommon::setKey()'],['../classOFBCommon.html#ac3a98e81d95ebc6c883baef5f4cfbefb',1,'OFBCommon::setKey()']]], + ['setiv',['setIV',['../classCBCCommon.html#ac7a586217835055b3a354bb932db160c',1,'CBCCommon::setIV()'],['../classCFBCommon.html#a597040eb7df40adbbef94b4c3975cd80',1,'CFBCommon::setIV()'],['../classChaCha.html#a734f3246b1e6810c63637b8cda26b259',1,'ChaCha::setIV()'],['../classChaChaPoly.html#a308056b17b3a4a496e9612ae19a2fd6f',1,'ChaChaPoly::setIV()'],['../classCipher.html#a3777acd8ff776a4e945bb7c9f2d044d9',1,'Cipher::setIV()'],['../classCTRCommon.html#aad289af3eb013cb3ffda6d7e8e8b3d04',1,'CTRCommon::setIV()'],['../classGCMCommon.html#a2545135fe42c832e40e057b603824524',1,'GCMCommon::setIV()'],['../classOFBCommon.html#a4a35364cf30d78f1968cc00803686caf',1,'OFBCommon::setIV()']]], + ['setkey',['setKey',['../classAES128.html#a42d7548eb5084a2c3e2d5aa5f6f98ba4',1,'AES128::setKey()'],['../classAES192.html#a4ab37cff19fb05ceef1533ebc5e37cde',1,'AES192::setKey()'],['../classAES256.html#a6af085d2d6a730ff1e025f982121bbda',1,'AES256::setKey()'],['../classBlockCipher.html#a9a05307664469777592799c8f77397c4',1,'BlockCipher::setKey()'],['../classCBCCommon.html#add75ea4342a190e560cee26a8e9efc37',1,'CBCCommon::setKey()'],['../classCFBCommon.html#a45b9be25fb96f0e3ca5211b064e2baea',1,'CFBCommon::setKey()'],['../classChaCha.html#a6b2bdffbd3705e388bb458edb2f40c90',1,'ChaCha::setKey()'],['../classChaChaPoly.html#ae300892647dd92cbce711b834aa20c09',1,'ChaChaPoly::setKey()'],['../classCipher.html#a0dfe133bda81dfa680b668f5908ccbe5',1,'Cipher::setKey()'],['../classCTRCommon.html#a79da937dc2c444a174176beab33c055a',1,'CTRCommon::setKey()'],['../classGCMCommon.html#a397c5dddde828c59eb63367385aec562',1,'GCMCommon::setKey()'],['../classOFBCommon.html#ac3a98e81d95ebc6c883baef5f4cfbefb',1,'OFBCommon::setKey()']]], ['setlabel',['setLabel',['../classField.html#ad4ea63599d780c35b296cf2840b69f7b',1,'Field']]], ['setled',['setLed',['../classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5',1,'Charlieplex']]], ['setloopcount',['setLoopCount',['../classMelody.html#a507097a2e8ff51a5e9157e3a320ae35b',1,'Melody']]], diff --git a/search/all_11.js b/search/all_11.js index f67bae63..46ac2922 100644 --- a/search/all_11.js +++ b/search/all_11.js @@ -1,5 +1,6 @@ var searchData= [ + ['tagsize',['tagSize',['../classAuthenticatedCipher.html#a50c9de15b1ac1f3079dcfef626238759',1,'AuthenticatedCipher::tagSize()'],['../classChaChaPoly.html#a086c2aea395ab31136ebe7805591fd0a',1,'ChaChaPoly::tagSize()'],['../classGCMCommon.html#a935f343858e98ee331706daf43e34805',1,'GCMCommon::tagSize()']]], ['textcolor',['textColor',['../classBitmap.html#ab6e5f5744fd2f18478aac428b751d848',1,'Bitmap']]], ['textfield',['TextField',['../classTextField.html',1,'TextField'],['../classTextField.html#a5108741ab147b2cd5a399fefbe0a2382',1,'TextField::TextField(const String &label)'],['../classTextField.html#a24096a344d9161b2c99ce724ec2ee93c',1,'TextField::TextField(Form &form, const String &label, const String &value)']]], ['textheight',['textHeight',['../classBitmap.html#a628bb694fcfe6eab619a4f1e152d41c4',1,'Bitmap']]], diff --git a/search/all_12.js b/search/all_12.js index 4d6b3005..d016eb59 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()'],['../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()']]], + ['update',['update',['../classBLAKE2b.html#a468e48c66ce1738e11c922d133135069',1,'BLAKE2b::update()'],['../classBLAKE2s.html#aa192da2fa044b03cccaf11e87fdf9911',1,'BLAKE2s::update()'],['../classGHASH.html#a235edb14c6ed1ec55ddda595816ef1c7',1,'GHASH::update()'],['../classHash.html#aec9761ee427d122e7450de8df200265c',1,'Hash::update()'],['../classKeccakCore.html#aaaa0355ccec0f469ac8eb577bdf853ed',1,'KeccakCore::update()'],['../classPoly1305.html#ae4e0b647ff93f501bd01459b1616557c',1,'Poly1305::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 4bc2b6bb..891292bd 100644 --- a/search/all_16.js +++ b/search/all_16.js @@ -1,21 +1,26 @@ var searchData= [ ['_7eaescommon',['~AESCommon',['../classAESCommon.html#a8f67970c86c23affb0297fc1bb10fad8',1,'AESCommon']]], + ['_7eauthenticatedcipher',['~AuthenticatedCipher',['../classAuthenticatedCipher.html#ae52a07be5b7265ea5898529ec21a79e4',1,'AuthenticatedCipher']]], ['_7ebitmap',['~Bitmap',['../classBitmap.html#a72d2a301ec1eb1c8d0f3d64823659a8e',1,'Bitmap']]], ['_7eblake2b',['~BLAKE2b',['../classBLAKE2b.html#ad0287d7284000ff236153e6afa0130f1',1,'BLAKE2b']]], ['_7eblake2s',['~BLAKE2s',['../classBLAKE2s.html#a4b3187ecaa3d3c8febfbb40c0f779aa7',1,'BLAKE2s']]], ['_7eblockcipher',['~BlockCipher',['../classBlockCipher.html#acec1bc4faeaa6dda2d91bffd79a988f9',1,'BlockCipher']]], ['_7ecbccommon',['~CBCCommon',['../classCBCCommon.html#a45a91367531b4692b3bb7237ab6e9015',1,'CBCCommon']]], ['_7ecfbcommon',['~CFBCommon',['../classCFBCommon.html#ae200d7b876a1f154bcdb1cdf33d3be54',1,'CFBCommon']]], + ['_7echachapoly',['~ChaChaPoly',['../classChaChaPoly.html#a7c37e683ee0d2f1181007d8bded4f80c',1,'ChaChaPoly']]], ['_7echarlieplex',['~Charlieplex',['../classCharlieplex.html#a4dbe37ccba8ba18139f4e710afdcd103',1,'Charlieplex']]], ['_7ecipher',['~Cipher',['../classCipher.html#a84bdea765f7e35aa5b5950dd2853a383',1,'Cipher']]], ['_7edmd',['~DMD',['../classDMD.html#a7b37e05584d3e0308163700920df99b2',1,'DMD']]], ['_7efield',['~Field',['../classField.html#a45d6e6d09b8f8e46de62b40119d62c60',1,'Field']]], ['_7eform',['~Form',['../classForm.html#a9cda7cce41e81bfaca51e922d4f9b98f',1,'Form']]], + ['_7egcmcommon',['~GCMCommon',['../classGCMCommon.html#a0d3e1525d91adbbdcd5ac27793817112',1,'GCMCommon']]], + ['_7eghash',['~GHASH',['../classGHASH.html#ae7f63a587adf1aa1ffcdc0a6e20584fd',1,'GHASH']]], ['_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']]], + ['_7epoly1305',['~Poly1305',['../classPoly1305.html#ac021b5ebbc123fa4c0ee36330472c25d',1,'Poly1305']]], ['_7erngclass',['~RNGClass',['../classRNGClass.html#aef3ee2fb14a39caf650dc90a0226dd31',1,'RNGClass']]], ['_7esha1',['~SHA1',['../classSHA1.html#a8485d7c14fa29286cd3c7acfe438606d',1,'SHA1']]], ['_7esha256',['~SHA256',['../classSHA256.html#ad82f2925b612de315b289017e023a73b',1,'SHA256']]], diff --git a/search/all_2.js b/search/all_2.js index 6ea117ce..16d03237 100644 --- a/search/all_2.js +++ b/search/all_2.js @@ -9,13 +9,16 @@ var searchData= ['cfb',['CFB',['../classCFB.html',1,'CFB< T >'],['../classCFB.html#a26a027614d027162c67085a58b512318',1,'CFB::CFB()']]], ['cfbcommon',['CFBCommon',['../classCFBCommon.html',1,'CFBCommon'],['../classCFBCommon.html#adad0210430c83817c993bdca30d562a6',1,'CFBCommon::CFBCommon()']]], ['chacha',['ChaCha',['../classChaCha.html',1,'ChaCha'],['../classChaCha.html#a5831811b705d3c80e97f0242597f0c7e',1,'ChaCha::ChaCha()']]], + ['chachapoly',['ChaChaPoly',['../classChaChaPoly.html',1,'ChaChaPoly'],['../classChaChaPoly.html#a1b6779227eff97b0336bbc849c7e2e1c',1,'ChaChaPoly::ChaChaPoly()']]], ['charlieplex',['Charlieplex',['../classCharlieplex.html',1,'Charlieplex'],['../classCharlieplex.html#abfb0d0456bcbadbf60c21f615adacdbd',1,'Charlieplex::Charlieplex()']]], ['charwidth',['charWidth',['../classBitmap.html#a9b79ac13077ca865e4515510297780bd',1,'Bitmap']]], ['chaseleds',['ChaseLEDs',['../classChaseLEDs.html',1,'ChaseLEDs'],['../classChaseLEDs.html#ab6bb3da371d3730a6552e93a9b2eab78',1,'ChaseLEDs::ChaseLEDs()']]], + ['checktag',['checkTag',['../classAuthenticatedCipher.html#a4bb33d194e2c7d30c4e5a713e59786ff',1,'AuthenticatedCipher::checkTag()'],['../classChaChaPoly.html#aeffb3e0df0b4da03f72f30251243d953',1,'ChaChaPoly::checkTag()'],['../classGCMCommon.html#a70229be2fe2274c4109fe7511481075a',1,'GCMCommon::checkTag()']]], ['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()'],['../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()']]], + ['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()'],['../classChaChaPoly.html#a2d7fc3fd05a0b6c7c9c21fff6e939c9a',1,'ChaChaPoly::clear()'],['../classCipher.html#a4b7c3965646441a70d9ab934a7c92ab1',1,'Cipher::clear()'],['../classCTRCommon.html#ac0d6381c02fe2a8a017ad66d006a6ef2',1,'CTRCommon::clear()'],['../classGCMCommon.html#a06868ebd67a571aa68d88d5d072cece9',1,'GCMCommon::clear()'],['../classGHASH.html#a4b1ee789debf56f7f24807960ef0556e',1,'GHASH::clear()'],['../classHash.html#a4a959469433cd9348ab7f3ac6228bb34',1,'Hash::clear()'],['../classKeccakCore.html#aeff1df56e4a3103c99c1fe4307e60c66',1,'KeccakCore::clear()'],['../classOFBCommon.html#a55bf2396beb91c457bfc4c20ef5c8123',1,'OFBCommon::clear()'],['../classPoly1305.html#ae3f3392b9a2bd0f3472e7e50dd7e21dd',1,'Poly1305::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']]], + ['computetag',['computeTag',['../classAuthenticatedCipher.html#a73fa4306053ed457e5c533b3127391c9',1,'AuthenticatedCipher::computeTag()'],['../classChaChaPoly.html#a92d850ad7027829e4072c43bd5028f95',1,'ChaChaPoly::computeTag()'],['../classGCMCommon.html#a444634bd4469bb5d404ac882d1d8fdf4',1,'GCMCommon::computeTag()']]], ['copy',['copy',['../classBitmap.html#ab22fe1f3871934987a670b559f67c67c',1,'Bitmap']]], ['count',['count',['../classCharlieplex.html#a5008aa4143d381ce34a3aed1a3843e4e',1,'Charlieplex']]], ['cryptographic_20library',['Cryptographic Library',['../crypto.html',1,'']]], diff --git a/search/all_3.js b/search/all_3.js index 47be02fc..44b98310 100644 --- a/search/all_3.js +++ b/search/all_3.js @@ -4,7 +4,7 @@ var searchData= ['day',['day',['../structRTCDate.html#a2d68ff3fb90240df522b41222362704c',1,'RTCDate::day()'],['../structRTCAlarm.html#a9cbc0c2bd8cee02917539af77e845fc4',1,'RTCAlarm::day()']]], ['dayofweek',['dayOfWeek',['../classRTC.html#a525a9c1dad89613708f47a683eb316aa',1,'RTC::dayOfWeek(const RTCDate *date)'],['../classRTC.html#ab2ca0cbee608ec32d3d6e04d40298f11',1,'RTC::DayOfWeek()']]], ['decrement',['DECREMENT',['../classRTC.html#a05b1bd1479afc80682abdd4f3e58dc6f',1,'RTC']]], - ['decrypt',['decrypt',['../classCBCCommon.html#ab46a2625cae9a654c708e1f31a0e22b6',1,'CBCCommon::decrypt()'],['../classCFBCommon.html#aaaa3d61c5743e30e355207c193c0b0ef',1,'CFBCommon::decrypt()'],['../classChaCha.html#a1f54b2b51b59428010f81a6c4dc4e42c',1,'ChaCha::decrypt()'],['../classCipher.html#ac6099d1a0d7f2ff67b0e4ccb4a17eb08',1,'Cipher::decrypt()'],['../classCTRCommon.html#a0943387cf1124258389702e0690740fe',1,'CTRCommon::decrypt()'],['../classOFBCommon.html#aeb3636d7175b150e2bf16367e51c2e36',1,'OFBCommon::decrypt()']]], + ['decrypt',['decrypt',['../classCBCCommon.html#ab46a2625cae9a654c708e1f31a0e22b6',1,'CBCCommon::decrypt()'],['../classCFBCommon.html#aaaa3d61c5743e30e355207c193c0b0ef',1,'CFBCommon::decrypt()'],['../classChaCha.html#a1f54b2b51b59428010f81a6c4dc4e42c',1,'ChaCha::decrypt()'],['../classChaChaPoly.html#a42f556f202b1166486434ee15b6d95a0',1,'ChaChaPoly::decrypt()'],['../classCipher.html#ac6099d1a0d7f2ff67b0e4ccb4a17eb08',1,'Cipher::decrypt()'],['../classCTRCommon.html#a0943387cf1124258389702e0690740fe',1,'CTRCommon::decrypt()'],['../classGCMCommon.html#a60912d3ab5766aa68dc9b3111ac2c0d7',1,'GCMCommon::decrypt()'],['../classOFBCommon.html#aeb3636d7175b150e2bf16367e51c2e36',1,'OFBCommon::decrypt()']]], ['decryptblock',['decryptBlock',['../classAESCommon.html#a95a806adf42f975765ff62907efdc639',1,'AESCommon::decryptBlock()'],['../classBlockCipher.html#ac3ba2450222aa1ea804ae4881ab6440c',1,'BlockCipher::decryptBlock()']]], ['defaultfield',['defaultField',['../classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b',1,'Form']]], ['destroy',['destroy',['../classRNGClass.html#a9901367d86f2303a59bbc12fe91cad00',1,'RNGClass']]], diff --git a/search/all_4.js b/search/all_4.js index 0b66d295..ff78ab31 100644 --- a/search/all_4.js +++ b/search/all_4.js @@ -7,7 +7,7 @@ var searchData= ['enablescreensaver',['enableScreenSaver',['../classLCD.html#af9a2326d034fa159d384ec16223c924f',1,'LCD']]], ['enabletimer1',['enableTimer1',['../classDMD.html#a4c3b04b384f3d656a9b59690836775e2',1,'DMD']]], ['enabletimer2',['enableTimer2',['../classDMD.html#a5469775db7fafebca2cdbc6a6372fb97',1,'DMD']]], - ['encrypt',['encrypt',['../classCBCCommon.html#a41d2f655a7df13cfcd009b2882e13147',1,'CBCCommon::encrypt()'],['../classCFBCommon.html#a57af3692389bed300d3cfdf351351c51',1,'CFBCommon::encrypt()'],['../classChaCha.html#acd4fff140b8871c233d9a31abf753ed8',1,'ChaCha::encrypt()'],['../classCipher.html#ad2832bd61039d61560e34ea3382ca562',1,'Cipher::encrypt()'],['../classCTRCommon.html#a201bda584d111552ce8ec09fac759963',1,'CTRCommon::encrypt()'],['../classOFBCommon.html#a984d81a460e0799895b19dc48c3b5cf8',1,'OFBCommon::encrypt()']]], + ['encrypt',['encrypt',['../classCBCCommon.html#a41d2f655a7df13cfcd009b2882e13147',1,'CBCCommon::encrypt()'],['../classCFBCommon.html#a57af3692389bed300d3cfdf351351c51',1,'CFBCommon::encrypt()'],['../classChaCha.html#acd4fff140b8871c233d9a31abf753ed8',1,'ChaCha::encrypt()'],['../classChaChaPoly.html#a7df4acd04f459ecf9d3b24317bde94a3',1,'ChaChaPoly::encrypt()'],['../classCipher.html#ad2832bd61039d61560e34ea3382ca562',1,'Cipher::encrypt()'],['../classCTRCommon.html#a201bda584d111552ce8ec09fac759963',1,'CTRCommon::encrypt()'],['../classGCMCommon.html#a01ac69afe3d9fc4d72b2ea5dc242e55c',1,'GCMCommon::encrypt()'],['../classOFBCommon.html#a984d81a460e0799895b19dc48c3b5cf8',1,'OFBCommon::encrypt()']]], ['encryptblock',['encryptBlock',['../classAESCommon.html#a2d95f6159abfcd92b5841f9018e44296',1,'AESCommon::encryptBlock()'],['../classBlockCipher.html#aed0788b25f6bb2f1bd47d5a5f0c5db33',1,'BlockCipher::encryptBlock()']]], ['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()']]], diff --git a/search/all_5.js b/search/all_5.js index e940fe1c..f3295b83 100644 --- a/search/all_5.js +++ b/search/all_5.js @@ -3,12 +3,12 @@ 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()'],['../classSHA3__256.html#a8fe7cad1f83bd1bae1a0d521324247a1',1,'SHA3_256::finalize()'],['../classSHA3__512.html#ac0227aafb5f047bb50f0bd84df0b4b5b',1,'SHA3_512::finalize()'],['../classSHA512.html#afc136ad0e77de527b031db3fb8b32464',1,'SHA512::finalize()']]], + ['finalize',['finalize',['../classBLAKE2b.html#a0cd8146b7868bd0f4c24a3856f106d17',1,'BLAKE2b::finalize()'],['../classBLAKE2s.html#a751a3d772cbe1cd1dad83dbd09853b1b',1,'BLAKE2s::finalize()'],['../classGHASH.html#ab221298ca69c9612bfbfd3dedcb28307',1,'GHASH::finalize()'],['../classHash.html#a09b3ccec22763fc86b1415695862977c',1,'Hash::finalize()'],['../classPoly1305.html#aab3fa6c5f6fa7d9ca6c82bead38f499c',1,'Poly1305::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()']]], ['finalizehmac',['finalizeHMAC',['../classBLAKE2b.html#a29fafbba26e3c1d896b4d4c428f7d52a',1,'BLAKE2b::finalizeHMAC()'],['../classBLAKE2s.html#a3f910f3bd48cc4a9c5330c31bcda31fc',1,'BLAKE2s::finalizeHMAC()'],['../classHash.html#aab42fa5420cc0bda4321a3d3866cfd06',1,'Hash::finalizeHMAC()'],['../classSHA1.html#a791db53fe9d6cc0e383b25f1da0a97b8',1,'SHA1::finalizeHMAC()'],['../classSHA256.html#a28bc2510c5bdaf210a012f9f21a753cd',1,'SHA256::finalizeHMAC()'],['../classSHA3__256.html#a001215fa1b7d2c30717b4b5b1618d68c',1,'SHA3_256::finalizeHMAC()'],['../classSHA3__512.html#a25c9d2da26d01d46ba6b72c8a7905ea0',1,'SHA3_512::finalizeHMAC()'],['../classSHA512.html#a1fe9533f0d3dfdb426eb3dc4bdc31904',1,'SHA512::finalizeHMAC()']]], ['firedalarm',['firedAlarm',['../classDS3231RTC.html#a6a5b3717ff65528de566c021eb821b94',1,'DS3231RTC::firedAlarm()'],['../classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3',1,'DS3232RTC::firedAlarm()']]], ['flags',['flags',['../structRTCAlarm.html#a0f2ef7363cb60a26642d5295b77ca19e',1,'RTCAlarm']]], ['font',['Font',['../classBitmap.html#a456f7d6da03189c1e7148563a891b3cf',1,'Bitmap::Font()'],['../classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c',1,'Bitmap::font() const ']]], - ['form',['Form',['../classForm.html',1,'Form'],['../classForm.html#ad30836b22edde707a52d94090b716996',1,'Form::Form()'],['../classField.html#a27427319be1cc92db3128637d8884ee5',1,'Field::form()']]], + ['form',['Form',['../classForm.html',1,'Form'],['../classField.html#a27427319be1cc92db3128637d8884ee5',1,'Field::form()'],['../classForm.html#ad30836b22edde707a52d94090b716996',1,'Form::Form()']]], ['formathmackey',['formatHMACKey',['../classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc',1,'Hash']]], ['fromrgb',['fromRGB',['../classDMD.html#a557412f734fc4596e1102bf71e110ea0',1,'DMD']]], ['form_20example_20for_20lcd_20displays',['Form example for LCD displays',['../lcd_form.html',1,'']]] diff --git a/search/all_6.js b/search/all_6.js index 42fa73bb..72f62f8a 100644 --- a/search/all_6.js +++ b/search/all_6.js @@ -1,5 +1,8 @@ var searchData= [ ['generating_20random_20numbers',['Generating random numbers',['../crypto_rng.html',1,'']]], - ['getbutton',['getButton',['../classLCD.html#ac1e80e2603bd1cf0276c36092c416292',1,'LCD']]] + ['gcm',['GCM',['../classGCM.html',1,'GCM< T >'],['../classGCM.html#acbef04a5593177aabf19df538ad3def7',1,'GCM::GCM()']]], + ['gcmcommon',['GCMCommon',['../classGCMCommon.html',1,'GCMCommon'],['../classGCMCommon.html#a1b05ff393e8c20db30cb991e875aab19',1,'GCMCommon::GCMCommon()']]], + ['getbutton',['getButton',['../classLCD.html#ac1e80e2603bd1cf0276c36092c416292',1,'LCD']]], + ['ghash',['GHASH',['../classGHASH.html',1,'GHASH'],['../classGHASH.html#a3a1abd0f641bccd9b4aa1f40beb8dca3',1,'GHASH::GHASH()']]] ]; diff --git a/search/all_8.js b/search/all_8.js index 350eec6b..2666a81a 100644 --- a/search/all_8.js +++ b/search/all_8.js @@ -15,5 +15,5 @@ var searchData= ['isvalid',['isValid',['../classBitmap.html#a3846a240722e847d3cf11f701da1ce7b',1,'Bitmap']]], ['isvisible',['isVisible',['../classForm.html#a3101f288e3e5aa8307c57f35861ad587',1,'Form']]], ['items',['items',['../classListField.html#a4dbbdeebd386551eb8f245b42b45ccf0',1,'ListField']]], - ['ivsize',['ivSize',['../classCBCCommon.html#a016277533730284a38bb6ad8cd6f91ce',1,'CBCCommon::ivSize()'],['../classCFBCommon.html#a55db1be69de87aafe5601d31be918ebb',1,'CFBCommon::ivSize()'],['../classChaCha.html#afaa3df343a7d07976bd7e03a0c1bf43c',1,'ChaCha::ivSize()'],['../classCipher.html#ab8b53ddc4ce431f03c2a1903d70ace9c',1,'Cipher::ivSize()'],['../classCTRCommon.html#a98c1717d11d8da8e1fa108607358774a',1,'CTRCommon::ivSize()'],['../classOFBCommon.html#a67b4639aaece17a796fcba3a2ce8b43c',1,'OFBCommon::ivSize()']]] + ['ivsize',['ivSize',['../classCBCCommon.html#a016277533730284a38bb6ad8cd6f91ce',1,'CBCCommon::ivSize()'],['../classCFBCommon.html#a55db1be69de87aafe5601d31be918ebb',1,'CFBCommon::ivSize()'],['../classChaCha.html#afaa3df343a7d07976bd7e03a0c1bf43c',1,'ChaCha::ivSize()'],['../classChaChaPoly.html#ac3ebfaaaffe9d607905681949e75140d',1,'ChaChaPoly::ivSize()'],['../classCipher.html#ab8b53ddc4ce431f03c2a1903d70ace9c',1,'Cipher::ivSize()'],['../classCTRCommon.html#a98c1717d11d8da8e1fa108607358774a',1,'CTRCommon::ivSize()'],['../classGCMCommon.html#a01cff072505e861fd20f6cfee1e10fb2',1,'GCMCommon::ivSize()'],['../classOFBCommon.html#a67b4639aaece17a796fcba3a2ce8b43c',1,'OFBCommon::ivSize()']]] ]; diff --git a/search/all_9.js b/search/all_9.js index 0e0b10de..8e283c77 100644 --- a/search/all_9.js +++ b/search/all_9.js @@ -1,5 +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()']]] + ['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()'],['../classChaChaPoly.html#a666760e68cb53f28ba0a8dc09039c0fb',1,'ChaChaPoly::keySize()'],['../classCipher.html#a4cea432ea0278c865441f17cbb88b1ab',1,'Cipher::keySize()'],['../classCTRCommon.html#a29ce8e13a302350397fc6790a686bea2',1,'CTRCommon::keySize()'],['../classGCMCommon.html#a134ba35e740a18bee3c45502b4149eae',1,'GCMCommon::keySize()'],['../classOFBCommon.html#a76ea9f9ea9dd137778338813e534a8ce',1,'OFBCommon::keySize()']]] ]; diff --git a/search/all_a.js b/search/all_a.js index 151e1cdf..e96e486d 100644 --- a/search/all_a.js +++ b/search/all_a.js @@ -1,7 +1,7 @@ var searchData= [ ['label',['label',['../classField.html#aaa861ef917130c989a955bc75c683afe',1,'Field']]], - ['lcd',['LCD',['../classLCD.html',1,'LCD'],['../classLCD.html#a00bb2db1390721abc7b24ac4b8c276c8',1,'LCD::LCD()'],['../classLCD.html#a067bc741cf27f143aba5d9f147908401',1,'LCD::LCD(uint8_t pin9)'],['../classLCD.html#a203d268bef6c61fa293562dbb0e9f51e',1,'LCD::LCD(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)'],['../classField.html#a5cf21bf958a71e51feac9e1bf9f599d1',1,'Field::lcd()']]], + ['lcd',['LCD',['../classLCD.html',1,'LCD'],['../classField.html#a5cf21bf958a71e51feac9e1bf9f599d1',1,'Field::lcd()'],['../classLCD.html#a00bb2db1390721abc7b24ac4b8c276c8',1,'LCD::LCD()'],['../classLCD.html#a067bc741cf27f143aba5d9f147908401',1,'LCD::LCD(uint8_t pin9)'],['../classLCD.html#a203d268bef6c61fa293562dbb0e9f51e',1,'LCD::LCD(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)']]], ['lcd_2dform_2edox',['lcd-form.dox',['../lcd-form_8dox.html',1,'']]], ['lcd_2dhelloworld_2edox',['lcd-helloworld.dox',['../lcd-helloworld_8dox.html',1,'']]], ['led',['led',['../classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d',1,'Charlieplex']]], diff --git a/search/all_e.js b/search/all_e.js index 411aa530..e9c94066 100644 --- a/search/all_e.js +++ b/search/all_e.js @@ -1,11 +1,12 @@ var searchData= [ - ['pad',['pad',['../classKeccakCore.html#a97852ee4381ced17ee6d21704cf0b4d7',1,'KeccakCore']]], + ['pad',['pad',['../classGHASH.html#a8c38ee9313605f1d8b12dca7cd43e4ad',1,'GHASH::pad()'],['../classKeccakCore.html#a97852ee4381ced17ee6d21704cf0b4d7',1,'KeccakCore::pad()'],['../classPoly1305.html#aaea2f40c1f22dcc2f8f690c793fb4388',1,'Poly1305::pad()']]], ['pagesize',['pageSize',['../classEEPROM24.html#af33b23e2614f3966bbaf2554890c032a',1,'EEPROM24']]], ['pause',['pause',['../classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a',1,'BlinkLED']]], ['pixel',['pixel',['../classBitmap.html#a35aa38b377d509d6c4f061a0b988d203',1,'Bitmap']]], ['play',['play',['../classMelody.html#a9fd8e0d48833d8da3cd3b3b58408b0b5',1,'Melody']]], ['playonce',['playOnce',['../classMelody.html#aecc9185c9cb1246e8a55521b17d72932',1,'Melody']]], + ['poly1305',['Poly1305',['../classPoly1305.html',1,'Poly1305'],['../classPoly1305.html#a7d62e7cd2d67f1c72142580036066fa2',1,'Poly1305::Poly1305()']]], ['power_20saving_20utility_20functions',['Power saving utility functions',['../group__power__save.html',1,'']]], ['prevfield',['prevField',['../classForm.html#acb080fe4f4631e9060e6efab8eaa0a90',1,'Form']]], ['previouspin',['previousPin',['../classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525',1,'ChaseLEDs']]], diff --git a/search/all_f.js b/search/all_f.js index d247dd23..919367a1 100644 --- a/search/all_f.js +++ b/search/all_f.js @@ -12,7 +12,7 @@ var searchData= ['readtime',['readTime',['../classDS1307RTC.html#acd9800d6df2244b8e4e790480a1d62a6',1,'DS1307RTC::readTime()'],['../classDS3231RTC.html#a3a2c448b152c401fb598c487ef0ed288',1,'DS3231RTC::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()'],['../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()']]], + ['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)'],['../classGHASH.html#a479a3e8c37e320bf99f54b95bf5f4c55',1,'GHASH::reset()'],['../classHash.html#a7b94309acaa5f52386785fb780e5be61',1,'Hash::reset()'],['../classKeccakCore.html#a5a322eb7e3b5c1eaad127c9c6e6a529b',1,'KeccakCore::reset()'],['../classPoly1305.html#a544839403d0a19300c239708bc1e6ed8',1,'Poly1305::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()']]], ['resethmac',['resetHMAC',['../classBLAKE2b.html#acb1ca4081c509d1c34b3aee465cd4494',1,'BLAKE2b::resetHMAC()'],['../classBLAKE2s.html#a7f9745854704b34a508497105ca5e2fd',1,'BLAKE2s::resetHMAC()'],['../classHash.html#adf50359c1f525af884721cc9034e7945',1,'Hash::resetHMAC()'],['../classSHA1.html#ad0a09a5100d59ff90c04ed5d4071b606',1,'SHA1::resetHMAC()'],['../classSHA256.html#a2271683d6f1c7c103272f1dec55a6871',1,'SHA256::resetHMAC()'],['../classSHA3__256.html#a324fe4d268bbf23d7b492033fe3bc632',1,'SHA3_256::resetHMAC()'],['../classSHA3__512.html#aac7133f420f2be0288965c2e863f389b',1,'SHA3_512::resetHMAC()'],['../classSHA512.html#a2427ad8bf8b6958df91bd5806986167c',1,'SHA512::resetHMAC()']]], ['resume',['resume',['../classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252',1,'BlinkLED']]], ['ringoscillatornoisesource',['RingOscillatorNoiseSource',['../classRingOscillatorNoiseSource.html',1,'']]], diff --git a/search/classes_0.js b/search/classes_0.js index 7a28eaaf..46bab6d6 100644 --- a/search/classes_0.js +++ b/search/classes_0.js @@ -3,5 +3,6 @@ var searchData= ['aes128',['AES128',['../classAES128.html',1,'']]], ['aes192',['AES192',['../classAES192.html',1,'']]], ['aes256',['AES256',['../classAES256.html',1,'']]], - ['aescommon',['AESCommon',['../classAESCommon.html',1,'']]] + ['aescommon',['AESCommon',['../classAESCommon.html',1,'']]], + ['authenticatedcipher',['AuthenticatedCipher',['../classAuthenticatedCipher.html',1,'']]] ]; diff --git a/search/classes_10.html b/search/classes_10.html new file mode 100644 index 00000000..e03af794 --- /dev/null +++ b/search/classes_10.html @@ -0,0 +1,26 @@ + + + + + + + + + +
        +
        Loading...
        +
        + +
        Searching...
        +
        No Matches
        + +
        + + diff --git a/search/classes_10.js b/search/classes_10.js new file mode 100644 index 00000000..d9a1790a --- /dev/null +++ b/search/classes_10.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['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_11.html b/search/classes_11.html new file mode 100644 index 00000000..519b2399 --- /dev/null +++ b/search/classes_11.html @@ -0,0 +1,26 @@ + + + + + + + + + +
        +
        Loading...
        +
        + +
        Searching...
        +
        No Matches
        + +
        + + diff --git a/search/classes_11.js b/search/classes_11.js new file mode 100644 index 00000000..57d4c0cb --- /dev/null +++ b/search/classes_11.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/classes_2.js b/search/classes_2.js index 44cdfad4..9ddfd3f3 100644 --- a/search/classes_2.js +++ b/search/classes_2.js @@ -5,6 +5,7 @@ var searchData= ['cfb',['CFB',['../classCFB.html',1,'']]], ['cfbcommon',['CFBCommon',['../classCFBCommon.html',1,'']]], ['chacha',['ChaCha',['../classChaCha.html',1,'']]], + ['chachapoly',['ChaChaPoly',['../classChaChaPoly.html',1,'']]], ['charlieplex',['Charlieplex',['../classCharlieplex.html',1,'']]], ['chaseleds',['ChaseLEDs',['../classChaseLEDs.html',1,'']]], ['cipher',['Cipher',['../classCipher.html',1,'']]], diff --git a/search/classes_6.js b/search/classes_6.js index 779a6d47..6d8aa809 100644 --- a/search/classes_6.js +++ b/search/classes_6.js @@ -1,4 +1,6 @@ var searchData= [ - ['hash',['Hash',['../classHash.html',1,'']]] + ['gcm',['GCM',['../classGCM.html',1,'']]], + ['gcmcommon',['GCMCommon',['../classGCMCommon.html',1,'']]], + ['ghash',['GHASH',['../classGHASH.html',1,'']]] ]; diff --git a/search/classes_7.js b/search/classes_7.js index 1639feb3..779a6d47 100644 --- a/search/classes_7.js +++ b/search/classes_7.js @@ -1,6 +1,4 @@ var searchData= [ - ['i2cmaster',['I2CMaster',['../classI2CMaster.html',1,'']]], - ['intfield',['IntField',['../classIntField.html',1,'']]], - ['irreceiver',['IRreceiver',['../classIRreceiver.html',1,'']]] + ['hash',['Hash',['../classHash.html',1,'']]] ]; diff --git a/search/classes_8.js b/search/classes_8.js index 989a3982..1639feb3 100644 --- a/search/classes_8.js +++ b/search/classes_8.js @@ -1,4 +1,6 @@ var searchData= [ - ['keccakcore',['KeccakCore',['../classKeccakCore.html',1,'']]] + ['i2cmaster',['I2CMaster',['../classI2CMaster.html',1,'']]], + ['intfield',['IntField',['../classIntField.html',1,'']]], + ['irreceiver',['IRreceiver',['../classIRreceiver.html',1,'']]] ]; diff --git a/search/classes_9.js b/search/classes_9.js index cfd886c9..989a3982 100644 --- a/search/classes_9.js +++ b/search/classes_9.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_a.js b/search/classes_a.js index a6451ed5..cfd886c9 100644 --- a/search/classes_a.js +++ b/search/classes_a.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_b.js b/search/classes_b.js index d53a9846..a6451ed5 100644 --- a/search/classes_b.js +++ b/search/classes_b.js @@ -1,4 +1,4 @@ var searchData= [ - ['noisesource',['NoiseSource',['../classNoiseSource.html',1,'']]] + ['melody',['Melody',['../classMelody.html',1,'']]] ]; diff --git a/search/classes_c.js b/search/classes_c.js index 8f9a8c0f..d53a9846 100644 --- a/search/classes_c.js +++ b/search/classes_c.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_d.js b/search/classes_d.js index 18aec76c..8f9a8c0f 100644 --- a/search/classes_d.js +++ b/search/classes_d.js @@ -1,9 +1,5 @@ var searchData= [ - ['ringoscillatornoisesource',['RingOscillatorNoiseSource',['../classRingOscillatorNoiseSource.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,'']]] + ['ofb',['OFB',['../classOFB.html',1,'']]], + ['ofbcommon',['OFBCommon',['../classOFBCommon.html',1,'']]] ]; diff --git a/search/classes_e.js b/search/classes_e.js index d9a1790a..371a76ec 100644 --- a/search/classes_e.js +++ b/search/classes_e.js @@ -1,9 +1,4 @@ var searchData= [ - ['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,'']]] + ['poly1305',['Poly1305',['../classPoly1305.html',1,'']]] ]; diff --git a/search/classes_f.js b/search/classes_f.js index 57d4c0cb..18aec76c 100644 --- a/search/classes_f.js +++ b/search/classes_f.js @@ -1,6 +1,9 @@ var searchData= [ - ['textfield',['TextField',['../classTextField.html',1,'']]], - ['timefield',['TimeField',['../classTimeField.html',1,'']]], - ['transistornoisesource',['TransistorNoiseSource',['../classTransistorNoiseSource.html',1,'']]] + ['ringoscillatornoisesource',['RingOscillatorNoiseSource',['../classRingOscillatorNoiseSource.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/functions_0.js b/search/functions_0.js index 9a816c0e..a044193a 100644 --- a/search/functions_0.js +++ b/search/functions_0.js @@ -1,5 +1,6 @@ var searchData= [ + ['addauthdata',['addAuthData',['../classAuthenticatedCipher.html#abdb081bdf0d59c138cbcffd23c044b10',1,'AuthenticatedCipher::addAuthData()'],['../classChaChaPoly.html#a4aa3514d1fb6272da977a7467ae6734b',1,'ChaChaPoly::addAuthData()'],['../classGCMCommon.html#ad926e980ae2d61c10c9bf82813154a25',1,'GCMCommon::addAuthData()']]], ['addfield',['addField',['../classForm.html#a5cb056ace428e75e321610555bfecac7',1,'Form']]], ['addnoisesource',['addNoiseSource',['../classRNGClass.html#aacf23b192b0e4cc8726d9abe05f5a9db',1,'RNGClass']]], ['adjustdays',['adjustDays',['../classRTC.html#adc29d7c43efc5a192d21965da5c3ee1d',1,'RTC']]], @@ -11,5 +12,6 @@ var searchData= ['aes192',['AES192',['../classAES192.html#a6f8e457cfffdc12f7dd829e3ac4585ce',1,'AES192']]], ['aes256',['AES256',['../classAES256.html#a3b2cbe56f03a87ec4260be4f8914fb02',1,'AES256']]], ['aescommon',['AESCommon',['../classAESCommon.html#acf224a392659429bac80dc68c7471b21',1,'AESCommon']]], + ['authenticatedcipher',['AuthenticatedCipher',['../classAuthenticatedCipher.html#a0b1c0210ecb9d374d09b5b62a5140ba2',1,'AuthenticatedCipher']]], ['available',['available',['../classEEPROM24.html#af8b70971d882b06de3fc6644a8ece3cf',1,'EEPROM24::available()'],['../classI2CMaster.html#a6458fa99cfd9e6270ae6dff993955833',1,'I2CMaster::available()'],['../classSoftI2C.html#a849af91018caedbb82e83f02c543305e',1,'SoftI2C::available()'],['../classRNGClass.html#a49e3231ba65a5e4b045bc90976e0a659',1,'RNGClass::available()']]] ]; diff --git a/search/functions_10.js b/search/functions_10.js index 12dc6e54..1910cd81 100644 --- a/search/functions_10.js +++ b/search/functions_10.js @@ -8,7 +8,7 @@ var searchData= ['setautosavetime',['setAutoSaveTime',['../classRNGClass.html#a5848e87a5f2f0302c88b0377f0e3366d',1,'RNGClass']]], ['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()']]], + ['setblockcipher',['setBlockCipher',['../classCBCCommon.html#a0b7631244b0c2c954cfdb50eb32f7db1',1,'CBCCommon::setBlockCipher()'],['../classCFBCommon.html#a9161530f456efacb64f5008fdb1a460c',1,'CFBCommon::setBlockCipher()'],['../classCTRCommon.html#a6c409c4ec1f99e0cb751196d891dc228',1,'CTRCommon::setBlockCipher()'],['../classGCMCommon.html#a7abd3044862f8634f3b176aafa779ba2',1,'GCMCommon::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']]], @@ -19,8 +19,8 @@ var searchData= ['sethmackey',['setHMACKey',['../classKeccakCore.html#aeff6b3357916bf426b60d3629db52628',1,'KeccakCore']]], ['setholdtime',['setHoldTime',['../classCharlieplex.html#a8502f4c752faba37023ced587695f6a4',1,'Charlieplex']]], ['setitems',['setItems',['../classListField.html#ae6709bce9355451b651893691456704e',1,'ListField']]], - ['setiv',['setIV',['../classCBCCommon.html#ac7a586217835055b3a354bb932db160c',1,'CBCCommon::setIV()'],['../classCFBCommon.html#a597040eb7df40adbbef94b4c3975cd80',1,'CFBCommon::setIV()'],['../classChaCha.html#a734f3246b1e6810c63637b8cda26b259',1,'ChaCha::setIV()'],['../classCipher.html#a3777acd8ff776a4e945bb7c9f2d044d9',1,'Cipher::setIV()'],['../classCTRCommon.html#aad289af3eb013cb3ffda6d7e8e8b3d04',1,'CTRCommon::setIV()'],['../classOFBCommon.html#a4a35364cf30d78f1968cc00803686caf',1,'OFBCommon::setIV()']]], - ['setkey',['setKey',['../classAES128.html#a42d7548eb5084a2c3e2d5aa5f6f98ba4',1,'AES128::setKey()'],['../classAES192.html#a4ab37cff19fb05ceef1533ebc5e37cde',1,'AES192::setKey()'],['../classAES256.html#a6af085d2d6a730ff1e025f982121bbda',1,'AES256::setKey()'],['../classBlockCipher.html#a9a05307664469777592799c8f77397c4',1,'BlockCipher::setKey()'],['../classCBCCommon.html#add75ea4342a190e560cee26a8e9efc37',1,'CBCCommon::setKey()'],['../classCFBCommon.html#a45b9be25fb96f0e3ca5211b064e2baea',1,'CFBCommon::setKey()'],['../classChaCha.html#a6b2bdffbd3705e388bb458edb2f40c90',1,'ChaCha::setKey()'],['../classCipher.html#a0dfe133bda81dfa680b668f5908ccbe5',1,'Cipher::setKey()'],['../classCTRCommon.html#a79da937dc2c444a174176beab33c055a',1,'CTRCommon::setKey()'],['../classOFBCommon.html#ac3a98e81d95ebc6c883baef5f4cfbefb',1,'OFBCommon::setKey()']]], + ['setiv',['setIV',['../classCBCCommon.html#ac7a586217835055b3a354bb932db160c',1,'CBCCommon::setIV()'],['../classCFBCommon.html#a597040eb7df40adbbef94b4c3975cd80',1,'CFBCommon::setIV()'],['../classChaCha.html#a734f3246b1e6810c63637b8cda26b259',1,'ChaCha::setIV()'],['../classChaChaPoly.html#a308056b17b3a4a496e9612ae19a2fd6f',1,'ChaChaPoly::setIV()'],['../classCipher.html#a3777acd8ff776a4e945bb7c9f2d044d9',1,'Cipher::setIV()'],['../classCTRCommon.html#aad289af3eb013cb3ffda6d7e8e8b3d04',1,'CTRCommon::setIV()'],['../classGCMCommon.html#a2545135fe42c832e40e057b603824524',1,'GCMCommon::setIV()'],['../classOFBCommon.html#a4a35364cf30d78f1968cc00803686caf',1,'OFBCommon::setIV()']]], + ['setkey',['setKey',['../classAES128.html#a42d7548eb5084a2c3e2d5aa5f6f98ba4',1,'AES128::setKey()'],['../classAES192.html#a4ab37cff19fb05ceef1533ebc5e37cde',1,'AES192::setKey()'],['../classAES256.html#a6af085d2d6a730ff1e025f982121bbda',1,'AES256::setKey()'],['../classBlockCipher.html#a9a05307664469777592799c8f77397c4',1,'BlockCipher::setKey()'],['../classCBCCommon.html#add75ea4342a190e560cee26a8e9efc37',1,'CBCCommon::setKey()'],['../classCFBCommon.html#a45b9be25fb96f0e3ca5211b064e2baea',1,'CFBCommon::setKey()'],['../classChaCha.html#a6b2bdffbd3705e388bb458edb2f40c90',1,'ChaCha::setKey()'],['../classChaChaPoly.html#ae300892647dd92cbce711b834aa20c09',1,'ChaChaPoly::setKey()'],['../classCipher.html#a0dfe133bda81dfa680b668f5908ccbe5',1,'Cipher::setKey()'],['../classCTRCommon.html#a79da937dc2c444a174176beab33c055a',1,'CTRCommon::setKey()'],['../classGCMCommon.html#a397c5dddde828c59eb63367385aec562',1,'GCMCommon::setKey()'],['../classOFBCommon.html#ac3a98e81d95ebc6c883baef5f4cfbefb',1,'OFBCommon::setKey()']]], ['setlabel',['setLabel',['../classField.html#ad4ea63599d780c35b296cf2840b69f7b',1,'Field']]], ['setled',['setLed',['../classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5',1,'Charlieplex']]], ['setloopcount',['setLoopCount',['../classMelody.html#a507097a2e8ff51a5e9157e3a320ae35b',1,'Melody']]], diff --git a/search/functions_11.js b/search/functions_11.js index db96fc6d..ee99b7fc 100644 --- a/search/functions_11.js +++ b/search/functions_11.js @@ -1,5 +1,6 @@ var searchData= [ + ['tagsize',['tagSize',['../classAuthenticatedCipher.html#a50c9de15b1ac1f3079dcfef626238759',1,'AuthenticatedCipher::tagSize()'],['../classChaChaPoly.html#a086c2aea395ab31136ebe7805591fd0a',1,'ChaChaPoly::tagSize()'],['../classGCMCommon.html#a935f343858e98ee331706daf43e34805',1,'GCMCommon::tagSize()']]], ['textcolor',['textColor',['../classBitmap.html#ab6e5f5744fd2f18478aac428b751d848',1,'Bitmap']]], ['textfield',['TextField',['../classTextField.html#a5108741ab147b2cd5a399fefbe0a2382',1,'TextField::TextField(const String &label)'],['../classTextField.html#a24096a344d9161b2c99ce724ec2ee93c',1,'TextField::TextField(Form &form, const String &label, const String &value)']]], ['textheight',['textHeight',['../classBitmap.html#a628bb694fcfe6eab619a4f1e152d41c4',1,'Bitmap']]], diff --git a/search/functions_12.js b/search/functions_12.js index 4d6b3005..d016eb59 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()'],['../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()']]], + ['update',['update',['../classBLAKE2b.html#a468e48c66ce1738e11c922d133135069',1,'BLAKE2b::update()'],['../classBLAKE2s.html#aa192da2fa044b03cccaf11e87fdf9911',1,'BLAKE2s::update()'],['../classGHASH.html#a235edb14c6ed1ec55ddda595816ef1c7',1,'GHASH::update()'],['../classHash.html#aec9761ee427d122e7450de8df200265c',1,'Hash::update()'],['../classKeccakCore.html#aaaa0355ccec0f469ac8eb577bdf853ed',1,'KeccakCore::update()'],['../classPoly1305.html#ae4e0b647ff93f501bd01459b1616557c',1,'Poly1305::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 4bc2b6bb..891292bd 100644 --- a/search/functions_15.js +++ b/search/functions_15.js @@ -1,21 +1,26 @@ var searchData= [ ['_7eaescommon',['~AESCommon',['../classAESCommon.html#a8f67970c86c23affb0297fc1bb10fad8',1,'AESCommon']]], + ['_7eauthenticatedcipher',['~AuthenticatedCipher',['../classAuthenticatedCipher.html#ae52a07be5b7265ea5898529ec21a79e4',1,'AuthenticatedCipher']]], ['_7ebitmap',['~Bitmap',['../classBitmap.html#a72d2a301ec1eb1c8d0f3d64823659a8e',1,'Bitmap']]], ['_7eblake2b',['~BLAKE2b',['../classBLAKE2b.html#ad0287d7284000ff236153e6afa0130f1',1,'BLAKE2b']]], ['_7eblake2s',['~BLAKE2s',['../classBLAKE2s.html#a4b3187ecaa3d3c8febfbb40c0f779aa7',1,'BLAKE2s']]], ['_7eblockcipher',['~BlockCipher',['../classBlockCipher.html#acec1bc4faeaa6dda2d91bffd79a988f9',1,'BlockCipher']]], ['_7ecbccommon',['~CBCCommon',['../classCBCCommon.html#a45a91367531b4692b3bb7237ab6e9015',1,'CBCCommon']]], ['_7ecfbcommon',['~CFBCommon',['../classCFBCommon.html#ae200d7b876a1f154bcdb1cdf33d3be54',1,'CFBCommon']]], + ['_7echachapoly',['~ChaChaPoly',['../classChaChaPoly.html#a7c37e683ee0d2f1181007d8bded4f80c',1,'ChaChaPoly']]], ['_7echarlieplex',['~Charlieplex',['../classCharlieplex.html#a4dbe37ccba8ba18139f4e710afdcd103',1,'Charlieplex']]], ['_7ecipher',['~Cipher',['../classCipher.html#a84bdea765f7e35aa5b5950dd2853a383',1,'Cipher']]], ['_7edmd',['~DMD',['../classDMD.html#a7b37e05584d3e0308163700920df99b2',1,'DMD']]], ['_7efield',['~Field',['../classField.html#a45d6e6d09b8f8e46de62b40119d62c60',1,'Field']]], ['_7eform',['~Form',['../classForm.html#a9cda7cce41e81bfaca51e922d4f9b98f',1,'Form']]], + ['_7egcmcommon',['~GCMCommon',['../classGCMCommon.html#a0d3e1525d91adbbdcd5ac27793817112',1,'GCMCommon']]], + ['_7eghash',['~GHASH',['../classGHASH.html#ae7f63a587adf1aa1ffcdc0a6e20584fd',1,'GHASH']]], ['_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']]], + ['_7epoly1305',['~Poly1305',['../classPoly1305.html#ac021b5ebbc123fa4c0ee36330472c25d',1,'Poly1305']]], ['_7erngclass',['~RNGClass',['../classRNGClass.html#aef3ee2fb14a39caf650dc90a0226dd31',1,'RNGClass']]], ['_7esha1',['~SHA1',['../classSHA1.html#a8485d7c14fa29286cd3c7acfe438606d',1,'SHA1']]], ['_7esha256',['~SHA256',['../classSHA256.html#ad82f2925b612de315b289017e023a73b',1,'SHA256']]], diff --git a/search/functions_2.js b/search/functions_2.js index b6351d6b..c3c31d50 100644 --- a/search/functions_2.js +++ b/search/functions_2.js @@ -7,12 +7,15 @@ var searchData= ['cfb',['CFB',['../classCFB.html#a26a027614d027162c67085a58b512318',1,'CFB']]], ['cfbcommon',['CFBCommon',['../classCFBCommon.html#adad0210430c83817c993bdca30d562a6',1,'CFBCommon']]], ['chacha',['ChaCha',['../classChaCha.html#a5831811b705d3c80e97f0242597f0c7e',1,'ChaCha']]], + ['chachapoly',['ChaChaPoly',['../classChaChaPoly.html#a1b6779227eff97b0336bbc849c7e2e1c',1,'ChaChaPoly']]], ['charlieplex',['Charlieplex',['../classCharlieplex.html#abfb0d0456bcbadbf60c21f615adacdbd',1,'Charlieplex']]], ['charwidth',['charWidth',['../classBitmap.html#a9b79ac13077ca865e4515510297780bd',1,'Bitmap']]], ['chaseleds',['ChaseLEDs',['../classChaseLEDs.html#ab6bb3da371d3730a6552e93a9b2eab78',1,'ChaseLEDs']]], + ['checktag',['checkTag',['../classAuthenticatedCipher.html#a4bb33d194e2c7d30c4e5a713e59786ff',1,'AuthenticatedCipher::checkTag()'],['../classChaChaPoly.html#aeffb3e0df0b4da03f72f30251243d953',1,'ChaChaPoly::checkTag()'],['../classGCMCommon.html#a70229be2fe2274c4109fe7511481075a',1,'GCMCommon::checkTag()']]], ['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()'],['../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()']]], + ['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()'],['../classChaChaPoly.html#a2d7fc3fd05a0b6c7c9c21fff6e939c9a',1,'ChaChaPoly::clear()'],['../classCipher.html#a4b7c3965646441a70d9ab934a7c92ab1',1,'Cipher::clear()'],['../classCTRCommon.html#ac0d6381c02fe2a8a017ad66d006a6ef2',1,'CTRCommon::clear()'],['../classGCMCommon.html#a06868ebd67a571aa68d88d5d072cece9',1,'GCMCommon::clear()'],['../classGHASH.html#a4b1ee789debf56f7f24807960ef0556e',1,'GHASH::clear()'],['../classHash.html#a4a959469433cd9348ab7f3ac6228bb34',1,'Hash::clear()'],['../classKeccakCore.html#aeff1df56e4a3103c99c1fe4307e60c66',1,'KeccakCore::clear()'],['../classOFBCommon.html#a55bf2396beb91c457bfc4c20ef5c8123',1,'OFBCommon::clear()'],['../classPoly1305.html#ae3f3392b9a2bd0f3472e7e50dd7e21dd',1,'Poly1305::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']]], + ['computetag',['computeTag',['../classAuthenticatedCipher.html#a73fa4306053ed457e5c533b3127391c9',1,'AuthenticatedCipher::computeTag()'],['../classChaChaPoly.html#a92d850ad7027829e4072c43bd5028f95',1,'ChaChaPoly::computeTag()'],['../classGCMCommon.html#a444634bd4469bb5d404ac882d1d8fdf4',1,'GCMCommon::computeTag()']]], ['copy',['copy',['../classBitmap.html#ab22fe1f3871934987a670b559f67c67c',1,'Bitmap']]], ['count',['count',['../classCharlieplex.html#a5008aa4143d381ce34a3aed1a3843e4e',1,'Charlieplex']]], ['ctr',['CTR',['../classCTR.html#a7025ab5d79f0f0763f751aeabc425ca9',1,'CTR']]], diff --git a/search/functions_3.js b/search/functions_3.js index 7039f30f..eb8ddd0c 100644 --- a/search/functions_3.js +++ b/search/functions_3.js @@ -2,7 +2,7 @@ var searchData= [ ['data',['data',['../classBitmap.html#a5eeed27c176eb6e4a2c39ea83444e27d',1,'Bitmap::data()'],['../classBitmap.html#a20fea2a946545aa3b5edd78245149e5f',1,'Bitmap::data() const ']]], ['dayofweek',['dayOfWeek',['../classRTC.html#a525a9c1dad89613708f47a683eb316aa',1,'RTC']]], - ['decrypt',['decrypt',['../classCBCCommon.html#ab46a2625cae9a654c708e1f31a0e22b6',1,'CBCCommon::decrypt()'],['../classCFBCommon.html#aaaa3d61c5743e30e355207c193c0b0ef',1,'CFBCommon::decrypt()'],['../classChaCha.html#a1f54b2b51b59428010f81a6c4dc4e42c',1,'ChaCha::decrypt()'],['../classCipher.html#ac6099d1a0d7f2ff67b0e4ccb4a17eb08',1,'Cipher::decrypt()'],['../classCTRCommon.html#a0943387cf1124258389702e0690740fe',1,'CTRCommon::decrypt()'],['../classOFBCommon.html#aeb3636d7175b150e2bf16367e51c2e36',1,'OFBCommon::decrypt()']]], + ['decrypt',['decrypt',['../classCBCCommon.html#ab46a2625cae9a654c708e1f31a0e22b6',1,'CBCCommon::decrypt()'],['../classCFBCommon.html#aaaa3d61c5743e30e355207c193c0b0ef',1,'CFBCommon::decrypt()'],['../classChaCha.html#a1f54b2b51b59428010f81a6c4dc4e42c',1,'ChaCha::decrypt()'],['../classChaChaPoly.html#a42f556f202b1166486434ee15b6d95a0',1,'ChaChaPoly::decrypt()'],['../classCipher.html#ac6099d1a0d7f2ff67b0e4ccb4a17eb08',1,'Cipher::decrypt()'],['../classCTRCommon.html#a0943387cf1124258389702e0690740fe',1,'CTRCommon::decrypt()'],['../classGCMCommon.html#a60912d3ab5766aa68dc9b3111ac2c0d7',1,'GCMCommon::decrypt()'],['../classOFBCommon.html#aeb3636d7175b150e2bf16367e51c2e36',1,'OFBCommon::decrypt()']]], ['decryptblock',['decryptBlock',['../classAESCommon.html#a95a806adf42f975765ff62907efdc639',1,'AESCommon::decryptBlock()'],['../classBlockCipher.html#ac3ba2450222aa1ea804ae4881ab6440c',1,'BlockCipher::decryptBlock()']]], ['defaultfield',['defaultField',['../classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b',1,'Form']]], ['destroy',['destroy',['../classRNGClass.html#a9901367d86f2303a59bbc12fe91cad00',1,'RNGClass']]], diff --git a/search/functions_4.js b/search/functions_4.js index b54c8ef7..c2e26963 100644 --- a/search/functions_4.js +++ b/search/functions_4.js @@ -7,7 +7,7 @@ var searchData= ['enablescreensaver',['enableScreenSaver',['../classLCD.html#af9a2326d034fa159d384ec16223c924f',1,'LCD']]], ['enabletimer1',['enableTimer1',['../classDMD.html#a4c3b04b384f3d656a9b59690836775e2',1,'DMD']]], ['enabletimer2',['enableTimer2',['../classDMD.html#a5469775db7fafebca2cdbc6a6372fb97',1,'DMD']]], - ['encrypt',['encrypt',['../classCBCCommon.html#a41d2f655a7df13cfcd009b2882e13147',1,'CBCCommon::encrypt()'],['../classCFBCommon.html#a57af3692389bed300d3cfdf351351c51',1,'CFBCommon::encrypt()'],['../classChaCha.html#acd4fff140b8871c233d9a31abf753ed8',1,'ChaCha::encrypt()'],['../classCipher.html#ad2832bd61039d61560e34ea3382ca562',1,'Cipher::encrypt()'],['../classCTRCommon.html#a201bda584d111552ce8ec09fac759963',1,'CTRCommon::encrypt()'],['../classOFBCommon.html#a984d81a460e0799895b19dc48c3b5cf8',1,'OFBCommon::encrypt()']]], + ['encrypt',['encrypt',['../classCBCCommon.html#a41d2f655a7df13cfcd009b2882e13147',1,'CBCCommon::encrypt()'],['../classCFBCommon.html#a57af3692389bed300d3cfdf351351c51',1,'CFBCommon::encrypt()'],['../classChaCha.html#acd4fff140b8871c233d9a31abf753ed8',1,'ChaCha::encrypt()'],['../classChaChaPoly.html#a7df4acd04f459ecf9d3b24317bde94a3',1,'ChaChaPoly::encrypt()'],['../classCipher.html#ad2832bd61039d61560e34ea3382ca562',1,'Cipher::encrypt()'],['../classCTRCommon.html#a201bda584d111552ce8ec09fac759963',1,'CTRCommon::encrypt()'],['../classGCMCommon.html#a01ac69afe3d9fc4d72b2ea5dc242e55c',1,'GCMCommon::encrypt()'],['../classOFBCommon.html#a984d81a460e0799895b19dc48c3b5cf8',1,'OFBCommon::encrypt()']]], ['encryptblock',['encryptBlock',['../classAESCommon.html#a2d95f6159abfcd92b5841f9018e44296',1,'AESCommon::encryptBlock()'],['../classBlockCipher.html#aed0788b25f6bb2f1bd47d5a5f0c5db33',1,'BlockCipher::encryptBlock()']]], ['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()']]], diff --git a/search/functions_5.js b/search/functions_5.js index ba069d79..9a9d2f9e 100644 --- a/search/functions_5.js +++ b/search/functions_5.js @@ -3,11 +3,11 @@ 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()'],['../classSHA3__256.html#a8fe7cad1f83bd1bae1a0d521324247a1',1,'SHA3_256::finalize()'],['../classSHA3__512.html#ac0227aafb5f047bb50f0bd84df0b4b5b',1,'SHA3_512::finalize()'],['../classSHA512.html#afc136ad0e77de527b031db3fb8b32464',1,'SHA512::finalize()']]], + ['finalize',['finalize',['../classBLAKE2b.html#a0cd8146b7868bd0f4c24a3856f106d17',1,'BLAKE2b::finalize()'],['../classBLAKE2s.html#a751a3d772cbe1cd1dad83dbd09853b1b',1,'BLAKE2s::finalize()'],['../classGHASH.html#ab221298ca69c9612bfbfd3dedcb28307',1,'GHASH::finalize()'],['../classHash.html#a09b3ccec22763fc86b1415695862977c',1,'Hash::finalize()'],['../classPoly1305.html#aab3fa6c5f6fa7d9ca6c82bead38f499c',1,'Poly1305::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()']]], ['finalizehmac',['finalizeHMAC',['../classBLAKE2b.html#a29fafbba26e3c1d896b4d4c428f7d52a',1,'BLAKE2b::finalizeHMAC()'],['../classBLAKE2s.html#a3f910f3bd48cc4a9c5330c31bcda31fc',1,'BLAKE2s::finalizeHMAC()'],['../classHash.html#aab42fa5420cc0bda4321a3d3866cfd06',1,'Hash::finalizeHMAC()'],['../classSHA1.html#a791db53fe9d6cc0e383b25f1da0a97b8',1,'SHA1::finalizeHMAC()'],['../classSHA256.html#a28bc2510c5bdaf210a012f9f21a753cd',1,'SHA256::finalizeHMAC()'],['../classSHA3__256.html#a001215fa1b7d2c30717b4b5b1618d68c',1,'SHA3_256::finalizeHMAC()'],['../classSHA3__512.html#a25c9d2da26d01d46ba6b72c8a7905ea0',1,'SHA3_512::finalizeHMAC()'],['../classSHA512.html#a1fe9533f0d3dfdb426eb3dc4bdc31904',1,'SHA512::finalizeHMAC()']]], ['firedalarm',['firedAlarm',['../classDS3231RTC.html#a6a5b3717ff65528de566c021eb821b94',1,'DS3231RTC::firedAlarm()'],['../classDS3232RTC.html#a79649f100a4562b9c1ba7c69e85cbca3',1,'DS3232RTC::firedAlarm()']]], ['font',['font',['../classBitmap.html#a7bf0a232b4bd12573cc570cc0edef47c',1,'Bitmap']]], - ['form',['Form',['../classForm.html#ad30836b22edde707a52d94090b716996',1,'Form::Form()'],['../classField.html#a27427319be1cc92db3128637d8884ee5',1,'Field::form()']]], + ['form',['form',['../classField.html#a27427319be1cc92db3128637d8884ee5',1,'Field::form()'],['../classForm.html#ad30836b22edde707a52d94090b716996',1,'Form::Form()']]], ['formathmackey',['formatHMACKey',['../classHash.html#ab6f40c9af91dc3d738d9fcce59af63cc',1,'Hash']]], ['fromrgb',['fromRGB',['../classDMD.html#a557412f734fc4596e1102bf71e110ea0',1,'DMD']]] ]; diff --git a/search/functions_6.js b/search/functions_6.js index 9269d5d2..95c47f1c 100644 --- a/search/functions_6.js +++ b/search/functions_6.js @@ -1,4 +1,7 @@ var searchData= [ - ['getbutton',['getButton',['../classLCD.html#ac1e80e2603bd1cf0276c36092c416292',1,'LCD']]] + ['gcm',['GCM',['../classGCM.html#acbef04a5593177aabf19df538ad3def7',1,'GCM']]], + ['gcmcommon',['GCMCommon',['../classGCMCommon.html#a1b05ff393e8c20db30cb991e875aab19',1,'GCMCommon']]], + ['getbutton',['getButton',['../classLCD.html#ac1e80e2603bd1cf0276c36092c416292',1,'LCD']]], + ['ghash',['GHASH',['../classGHASH.html#a3a1abd0f641bccd9b4aa1f40beb8dca3',1,'GHASH']]] ]; diff --git a/search/functions_8.js b/search/functions_8.js index bdecaceb..87cda443 100644 --- a/search/functions_8.js +++ b/search/functions_8.js @@ -11,5 +11,5 @@ var searchData= ['isvalid',['isValid',['../classBitmap.html#a3846a240722e847d3cf11f701da1ce7b',1,'Bitmap']]], ['isvisible',['isVisible',['../classForm.html#a3101f288e3e5aa8307c57f35861ad587',1,'Form']]], ['items',['items',['../classListField.html#a4dbbdeebd386551eb8f245b42b45ccf0',1,'ListField']]], - ['ivsize',['ivSize',['../classCBCCommon.html#a016277533730284a38bb6ad8cd6f91ce',1,'CBCCommon::ivSize()'],['../classCFBCommon.html#a55db1be69de87aafe5601d31be918ebb',1,'CFBCommon::ivSize()'],['../classChaCha.html#afaa3df343a7d07976bd7e03a0c1bf43c',1,'ChaCha::ivSize()'],['../classCipher.html#ab8b53ddc4ce431f03c2a1903d70ace9c',1,'Cipher::ivSize()'],['../classCTRCommon.html#a98c1717d11d8da8e1fa108607358774a',1,'CTRCommon::ivSize()'],['../classOFBCommon.html#a67b4639aaece17a796fcba3a2ce8b43c',1,'OFBCommon::ivSize()']]] + ['ivsize',['ivSize',['../classCBCCommon.html#a016277533730284a38bb6ad8cd6f91ce',1,'CBCCommon::ivSize()'],['../classCFBCommon.html#a55db1be69de87aafe5601d31be918ebb',1,'CFBCommon::ivSize()'],['../classChaCha.html#afaa3df343a7d07976bd7e03a0c1bf43c',1,'ChaCha::ivSize()'],['../classChaChaPoly.html#ac3ebfaaaffe9d607905681949e75140d',1,'ChaChaPoly::ivSize()'],['../classCipher.html#ab8b53ddc4ce431f03c2a1903d70ace9c',1,'Cipher::ivSize()'],['../classCTRCommon.html#a98c1717d11d8da8e1fa108607358774a',1,'CTRCommon::ivSize()'],['../classGCMCommon.html#a01cff072505e861fd20f6cfee1e10fb2',1,'GCMCommon::ivSize()'],['../classOFBCommon.html#a67b4639aaece17a796fcba3a2ce8b43c',1,'OFBCommon::ivSize()']]] ]; diff --git a/search/functions_9.js b/search/functions_9.js index 5ac1c729..0818ab12 100644 --- a/search/functions_9.js +++ b/search/functions_9.js @@ -1,5 +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()']]] + ['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()'],['../classChaChaPoly.html#a666760e68cb53f28ba0a8dc09039c0fb',1,'ChaChaPoly::keySize()'],['../classCipher.html#a4cea432ea0278c865441f17cbb88b1ab',1,'Cipher::keySize()'],['../classCTRCommon.html#a29ce8e13a302350397fc6790a686bea2',1,'CTRCommon::keySize()'],['../classGCMCommon.html#a134ba35e740a18bee3c45502b4149eae',1,'GCMCommon::keySize()'],['../classOFBCommon.html#a76ea9f9ea9dd137778338813e534a8ce',1,'OFBCommon::keySize()']]] ]; diff --git a/search/functions_a.js b/search/functions_a.js index 9547f241..63e20740 100644 --- a/search/functions_a.js +++ b/search/functions_a.js @@ -1,7 +1,7 @@ var searchData= [ ['label',['label',['../classField.html#aaa861ef917130c989a955bc75c683afe',1,'Field']]], - ['lcd',['LCD',['../classLCD.html#a00bb2db1390721abc7b24ac4b8c276c8',1,'LCD::LCD()'],['../classLCD.html#a067bc741cf27f143aba5d9f147908401',1,'LCD::LCD(uint8_t pin9)'],['../classLCD.html#a203d268bef6c61fa293562dbb0e9f51e',1,'LCD::LCD(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)'],['../classField.html#a5cf21bf958a71e51feac9e1bf9f599d1',1,'Field::lcd()']]], + ['lcd',['lcd',['../classField.html#a5cf21bf958a71e51feac9e1bf9f599d1',1,'Field::lcd()'],['../classLCD.html#a00bb2db1390721abc7b24ac4b8c276c8',1,'LCD::LCD()'],['../classLCD.html#a067bc741cf27f143aba5d9f147908401',1,'LCD::LCD(uint8_t pin9)'],['../classLCD.html#a203d268bef6c61fa293562dbb0e9f51e',1,'LCD::LCD(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)']]], ['led',['led',['../classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d',1,'Charlieplex']]], ['listfield',['ListField',['../classListField.html#a118501da7edb0b0bc6b493734975b4e9',1,'ListField::ListField(const String &label)'],['../classListField.html#aa303898a1f74b52c1c4982653de488b7',1,'ListField::ListField(Form &form, const String &label, ListItems items, int value=0)']]], ['loop',['loop',['../classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e',1,'BlinkLED::loop()'],['../classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a',1,'Charlieplex::loop()'],['../classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786',1,'ChaseLEDs::loop()'],['../classDMD.html#a2c74a0845ef6080056b972d490648114',1,'DMD::loop()'],['../classRNGClass.html#a8cb91e39f0c4591de5bf98b1e2880b13',1,'RNGClass::loop()']]], diff --git a/search/functions_e.js b/search/functions_e.js index dfb73127..34c0b315 100644 --- a/search/functions_e.js +++ b/search/functions_e.js @@ -1,11 +1,12 @@ var searchData= [ - ['pad',['pad',['../classKeccakCore.html#a97852ee4381ced17ee6d21704cf0b4d7',1,'KeccakCore']]], + ['pad',['pad',['../classGHASH.html#a8c38ee9313605f1d8b12dca7cd43e4ad',1,'GHASH::pad()'],['../classKeccakCore.html#a97852ee4381ced17ee6d21704cf0b4d7',1,'KeccakCore::pad()'],['../classPoly1305.html#aaea2f40c1f22dcc2f8f690c793fb4388',1,'Poly1305::pad()']]], ['pagesize',['pageSize',['../classEEPROM24.html#af33b23e2614f3966bbaf2554890c032a',1,'EEPROM24']]], ['pause',['pause',['../classBlinkLED.html#a2760a0223cd6a0598b961f681ffb5c0a',1,'BlinkLED']]], ['pixel',['pixel',['../classBitmap.html#a35aa38b377d509d6c4f061a0b988d203',1,'Bitmap']]], ['play',['play',['../classMelody.html#a9fd8e0d48833d8da3cd3b3b58408b0b5',1,'Melody']]], ['playonce',['playOnce',['../classMelody.html#aecc9185c9cb1246e8a55521b17d72932',1,'Melody']]], + ['poly1305',['Poly1305',['../classPoly1305.html#a7d62e7cd2d67f1c72142580036066fa2',1,'Poly1305']]], ['prevfield',['prevField',['../classForm.html#acb080fe4f4631e9060e6efab8eaa0a90',1,'Form']]], ['previouspin',['previousPin',['../classChaseLEDs.html#a27c460fcb341c2dc2fcf9341616eb525',1,'ChaseLEDs']]], ['pwmled',['pwmLed',['../classCharlieplex.html#a89312f2fd1d27c4e56346ed9cccfb9f6',1,'Charlieplex']]] diff --git a/search/functions_f.js b/search/functions_f.js index 544be023..6de19616 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()'],['../classDS3231RTC.html#a3a2c448b152c401fb598c487ef0ed288',1,'DS3231RTC::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()'],['../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()']]], + ['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)'],['../classGHASH.html#a479a3e8c37e320bf99f54b95bf5f4c55',1,'GHASH::reset()'],['../classHash.html#a7b94309acaa5f52386785fb780e5be61',1,'Hash::reset()'],['../classKeccakCore.html#a5a322eb7e3b5c1eaad127c9c6e6a529b',1,'KeccakCore::reset()'],['../classPoly1305.html#a544839403d0a19300c239708bc1e6ed8',1,'Poly1305::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()']]], ['resethmac',['resetHMAC',['../classBLAKE2b.html#acb1ca4081c509d1c34b3aee465cd4494',1,'BLAKE2b::resetHMAC()'],['../classBLAKE2s.html#a7f9745854704b34a508497105ca5e2fd',1,'BLAKE2s::resetHMAC()'],['../classHash.html#adf50359c1f525af884721cc9034e7945',1,'Hash::resetHMAC()'],['../classSHA1.html#ad0a09a5100d59ff90c04ed5d4071b606',1,'SHA1::resetHMAC()'],['../classSHA256.html#a2271683d6f1c7c103272f1dec55a6871',1,'SHA256::resetHMAC()'],['../classSHA3__256.html#a324fe4d268bbf23d7b492033fe3bc632',1,'SHA3_256::resetHMAC()'],['../classSHA3__512.html#aac7133f420f2be0288965c2e863f389b',1,'SHA3_512::resetHMAC()'],['../classSHA512.html#a2427ad8bf8b6958df91bd5806986167c',1,'SHA512::resetHMAC()']]], ['resume',['resume',['../classBlinkLED.html#a380241e4dfd20e8a558487227f2f4252',1,'BlinkLED']]], ['rngclass',['RNGClass',['../classRNGClass.html#acbcf327242f51ae2d9209aeaa45e30e9',1,'RNGClass']]], diff --git a/search/search.js b/search/search.js index f7d9cd4c..8f934e08 100644 --- a/search/search.js +++ b/search/search.js @@ -8,7 +8,7 @@ var indexSectionsWithContent = { 0: "abcdefghiklmnoprstuvwy~", - 1: "abcdefhiklmnorst", + 1: "abcdefghiklmnoprst", 2: "abcdilm", 3: "abcdefghiklmnoprstuvw~", 4: "abdfhimnswy", diff --git a/structRTCAlarm.html b/structRTCAlarm.html index 0e6c08c5..65124bdc 100644 --- a/structRTCAlarm.html +++ b/structRTCAlarm.html @@ -200,7 +200,7 @@ uint8_t  diff --git a/structRTCDate.html b/structRTCDate.html index d3bcd4d5..262db515 100644 --- a/structRTCDate.html +++ b/structRTCDate.html @@ -123,7 +123,7 @@ uint8_t  diff --git a/structRTCTime.html b/structRTCTime.html index 94218e81..1fc00f33 100644 --- a/structRTCTime.html +++ b/structRTCTime.html @@ -123,7 +123,7 @@ uint8_t