diff --git a/AES128_8cpp_source.html b/AES128_8cpp_source.html index 317098a3..4d84bfe2 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 d13379cd..6cf8dc68 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 7e8151f8..583402e4 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 6f91dbfb..69f3881d 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 4354fd6a..39dc1902 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 index 578acdf7..e720d526 100644 --- a/AuthenticatedCipher_8cpp_source.html +++ b/AuthenticatedCipher_8cpp_source.html @@ -125,7 +125,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/AuthenticatedCipher_8h_source.html b/AuthenticatedCipher_8h_source.html index 3bd0a54c..9dc470e0 100644 --- a/AuthenticatedCipher_8h_source.html +++ b/AuthenticatedCipher_8h_source.html @@ -141,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/BLAKE2b_8cpp_source.html b/BLAKE2b_8cpp_source.html index 4a20fd0d..966ad70e 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 f3458800..62041082 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 d2c09ee3..0a3efeee 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 c0b57425..02a486b8 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_8cpp_source.html b/BigNumberUtil_8cpp_source.html index d1a1346d..0dc557f7 100644 --- a/BigNumberUtil_8cpp_source.html +++ b/BigNumberUtil_8cpp_source.html @@ -557,7 +557,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/BigNumberUtil_8h_source.html b/BigNumberUtil_8h_source.html index fb271007..2d1f2c2e 100644 --- a/BigNumberUtil_8h_source.html +++ b/BigNumberUtil_8h_source.html @@ -199,7 +199,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Bitmap_8cpp_source.html b/Bitmap_8cpp_source.html index 9f1aba4e..50b188e0 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 4e62b2af..6e1d40f2 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 9d8ad905..c4730d9b 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 e0d83678..a8278398 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 4b80c3af..b3ebead4 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 4d743a71..e0338030 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 d5bacc17..afd5a151 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 24994a27..4e25dcfe 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 f858b928..ef82e6a6 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 4cf988b8..d3228725 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 6531cee8..2f16a148 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 7b02ab5c..e55b3345 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 6db7626b..b3638cfe 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 45d9fb44..b3cf13da 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 index 3684a335..4f2b277e 100644 --- a/ChaChaPoly_8cpp_source.html +++ b/ChaChaPoly_8cpp_source.html @@ -262,7 +262,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/ChaChaPoly_8h_source.html b/ChaChaPoly_8h_source.html index f8e748b8..52918691 100644 --- a/ChaChaPoly_8h_source.html +++ b/ChaChaPoly_8h_source.html @@ -173,7 +173,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/ChaCha_8cpp_source.html b/ChaCha_8cpp_source.html index 405894ce..c1579435 100644 --- a/ChaCha_8cpp_source.html +++ b/ChaCha_8cpp_source.html @@ -311,7 +311,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/ChaCha_8h_source.html b/ChaCha_8h_source.html index fb74f899..86e0778d 100644 --- a/ChaCha_8h_source.html +++ b/ChaCha_8h_source.html @@ -170,7 +170,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Charlieplex_8cpp_source.html b/Charlieplex_8cpp_source.html index 318644b5..30e46de5 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 e819d4a0..f9721fc8 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 636ce25a..f5a801b8 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 3fffccb1..1bb5f6f8 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 3847da88..f980347d 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 1ab5e28c..d50f0d55 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 ff73de8e..6789c024 100644 --- a/Crypto_8cpp_source.html +++ b/Crypto_8cpp_source.html @@ -138,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Crypto_8h_source.html b/Crypto_8h_source.html index f5394393..f35d5581 100644 --- a/Crypto_8h_source.html +++ b/Crypto_8h_source.html @@ -130,7 +130,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Curve25519_8cpp_source.html b/Curve25519_8cpp_source.html index d9a60e66..32f61e8a 100644 --- a/Curve25519_8cpp_source.html +++ b/Curve25519_8cpp_source.html @@ -812,7 +812,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Curve25519_8h_source.html b/Curve25519_8h_source.html index a46903fd..d702e59d 100644 --- a/Curve25519_8h_source.html +++ b/Curve25519_8h_source.html @@ -173,7 +173,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/DMD_8cpp_source.html b/DMD_8cpp_source.html index aadf7cd9..18a9d349 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 caa7a39b..e5af6870 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 36cf9cf7..fe8e1a78 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 8cfe3869..8c5a9719 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 57b4059b..804be8db 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 8045ed2d..829ac9b2 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 bf2ec0a5..9a696554 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 bf081fa4..fe8fd2ee 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 e4494800..245b8027 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 9758f27f..bd0c99af 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 673e8281..f0b708e3 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 ac169597..54aec0cf 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 afe65c02..50bc6b95 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/Ed25519_8cpp_source.html b/Ed25519_8cpp_source.html index 4271bf2a..ad3636b4 100644 --- a/Ed25519_8cpp_source.html +++ b/Ed25519_8cpp_source.html @@ -572,7 +572,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Ed25519_8h_source.html b/Ed25519_8h_source.html index aed9194d..55e52a46 100644 --- a/Ed25519_8h_source.html +++ b/Ed25519_8h_source.html @@ -168,7 +168,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Field_8cpp_source.html b/Field_8cpp_source.html index 93d5102b..b546046c 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 ce07088f..b8e18f1c 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 4496baf7..8e7b6ff8 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 1afe34a7..9a9d5c0c 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 index 16ff8b42..5a136ae7 100644 --- a/GCM_8cpp_source.html +++ b/GCM_8cpp_source.html @@ -352,7 +352,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/GCM_8h_source.html b/GCM_8h_source.html index f0ab936d..ad5e6733 100644 --- a/GCM_8h_source.html +++ b/GCM_8h_source.html @@ -191,7 +191,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/GHASH_8cpp_source.html b/GHASH_8cpp_source.html index b17364cc..c6d77c36 100644 --- a/GHASH_8cpp_source.html +++ b/GHASH_8cpp_source.html @@ -239,7 +239,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/GHASH_8h_source.html b/GHASH_8h_source.html index f24320d3..e5a182ce 100644 --- a/GHASH_8h_source.html +++ b/GHASH_8h_source.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Hash_8cpp_source.html b/Hash_8cpp_source.html index 9731256a..3422526d 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 ed9530d3..7790e2f7 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 2d56a265..83c951f9 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 e0bed562..e261e725 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 dd32f44f..e65c7c74 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 1d7a4fc4..dd1f1df2 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 39f807bc..ae33af84 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 bab1f8c8..84b35b78 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 876bc7b8..957b59ef 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 04c5505f..194a58a3 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 906423d0..effd3024 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 374c9617..12f30da8 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 4cddca4f..8306dec1 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 5f37ddd3..ab7834ab 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 d4db3971..a0699d7c 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 c34192eb..44e32604 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 ba4312fb..feee223c 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 00e83258..038b8b5f 100644 --- a/NoiseSource_8cpp_source.html +++ b/NoiseSource_8cpp_source.html @@ -138,7 +138,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/NoiseSource_8h_source.html b/NoiseSource_8h_source.html index b9d9706f..1cf311a0 100644 --- a/NoiseSource_8h_source.html +++ b/NoiseSource_8h_source.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/OFB_8cpp_source.html b/OFB_8cpp_source.html index 19ec0a40..9fabe972 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 2ee1c35f..65b58cf1 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 index 7f47e1e2..beec8efe 100644 --- a/Poly1305_8cpp_source.html +++ b/Poly1305_8cpp_source.html @@ -352,7 +352,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/Poly1305_8h_source.html b/Poly1305_8h_source.html index ec468de3..fccee2f8 100644 --- a/Poly1305_8h_source.html +++ b/Poly1305_8h_source.html @@ -154,7 +154,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/PowerSave_8cpp_source.html b/PowerSave_8cpp_source.html index aa26a7ff..c6efa088 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 328e522d..42e76481 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 242e6174..2a98d0a6 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 7738459c..0dd1d9a3 100644 --- a/RNG_8cpp_source.html +++ b/RNG_8cpp_source.html @@ -543,7 +543,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/RNG_8h_source.html b/RNG_8h_source.html index 8fa235d4..9c0fd91e 100644 --- a/RNG_8h_source.html +++ b/RNG_8h_source.html @@ -177,7 +177,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/RTC_8cpp_source.html b/RTC_8cpp_source.html index 8f232318..25ac6a38 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 e430909d..77ce3022 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 0da6e3d6..61eca464 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 015aa06e..b1257ef8 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 4608ab7d..9ca9ab9a 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 63ec2cbc..5e86e6f4 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 dd2c6185..d37791eb 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 85cbc5c0..2bc9d892 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 057588f5..c8e78852 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 e86b3368..1def1142 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 b73179ed..b072d79a 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 deb56728..ac6af27a 100644 --- a/SHA512_8h_source.html +++ b/SHA512_8h_source.html @@ -166,7 +166,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/SoftI2C_8cpp_source.html b/SoftI2C_8cpp_source.html index d928a824..38684042 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 3cdde91d..e4bbfa55 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/SpeckLowMemory_8cpp_source.html b/SpeckLowMemory_8cpp_source.html new file mode 100644 index 00000000..8fc607f3 --- /dev/null +++ b/SpeckLowMemory_8cpp_source.html @@ -0,0 +1,604 @@ + + + + + + +ArduinoLibs: SpeckLowMemory.cpp Source File + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + +
+ All Classes Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
+ + +
+ +
+ + +
+
+
+
SpeckLowMemory.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 "SpeckLowMemory.h"
+
24 #include "Crypto.h"
+
25 #include "utility/RotateUtil.h"
+
26 #include "utility/EndianUtil.h"
+
27 #include <string.h>
+
28 
+
57 // The "avr-gcc" compiler doesn't do a very good job of compiling
+
58 // code involving 64-bit values. So we have to use inline assembly.
+
59 // It also helps to break the state up into 32-bit quantities
+
60 // because "asm" supports register names like %A0, %B0, %C0, %D0
+
61 // for the bytes in a 32-bit quantity, but it does not support
+
62 // %E0, %F0, %G0, %H0 for the high bytes of a 64-bit quantity.
+
63 #if defined(__AVR__)
+
64 #define USE_AVR_INLINE_ASM 1
+
65 #endif
+
66 
+ +
74  : rounds(32)
+
75 {
+
76 }
+
77 
+
78 SpeckLowMemory::~SpeckLowMemory()
+
79 {
+
80  clean(k);
+
81 }
+
82 
+ +
84 {
+
85  return 16;
+
86 }
+
87 
+ +
89 {
+
90  // Also supports 128-bit and 192-bit, but we only report 256-bit.
+
91  return 32;
+
92 }
+
93 
+
94 // Pack/unpack byte-aligned big-endian 64-bit quantities.
+
95 #define pack64(data, value) \
+
96  do { \
+
97  uint64_t v = htobe64((value)); \
+
98  memcpy((data), &v, sizeof(uint64_t)); \
+
99  } while (0)
+
100 #define unpack64(value, data) \
+
101  do { \
+
102  memcpy(&(value), (data), sizeof(uint64_t)); \
+
103  (value) = be64toh((value)); \
+
104  } while (0)
+
105 
+
106 bool SpeckLowMemory::setKey(const uint8_t *key, size_t len)
+
107 {
+
108 #if USE_AVR_INLINE_ASM
+
109  // Determine the number of rounds to use and validate the key length.
+
110  if (len == 32) {
+
111  rounds = 34;
+
112  } else if (len == 24) {
+
113  rounds = 33;
+
114  } else if (len == 16) {
+
115  rounds = 32;
+
116  } else {
+
117  return false;
+
118  }
+
119 
+
120  // Copy the bytes of the key into the "k" array in reverse order to
+
121  // convert big endian into little-endian.
+
122  __asm__ __volatile__ (
+
123  "1:\n"
+
124  "ld __tmp_reg__,-Z\n"
+
125  "st X+,__tmp_reg__\n"
+
126  "dec %2\n"
+
127  "brne 1b\n"
+
128  : : "x"(k), "z"(key + len), "r"(len)
+
129  );
+
130 #else
+
131  if (len == 32) {
+
132  rounds = 34;
+
133  unpack64(k[3], key);
+
134  unpack64(k[2], key + 8);
+
135  unpack64(k[1], key + 16);
+
136  unpack64(k[0], key + 24);
+
137  } else if (len == 24) {
+
138  rounds = 33;
+
139  unpack64(k[2], key);
+
140  unpack64(k[1], key + 8);
+
141  unpack64(k[0], key + 16);
+
142  } else if (len == 16) {
+
143  rounds = 32;
+
144  unpack64(k[1], key);
+
145  unpack64(k[0], key + 8);
+
146  } else {
+
147  return false;
+
148  }
+
149 #endif
+
150  return true;
+
151 }
+
152 
+
153 void SpeckLowMemory::encryptBlock(uint8_t *output, const uint8_t *input)
+
154 {
+
155 #if USE_AVR_INLINE_ASM
+
156  uint64_t l[4];
+
157  uint32_t xlow, xhigh, ylow, yhigh;
+
158  uint32_t slow, shigh;
+
159  uint8_t li_in = 0;
+
160  uint8_t li_out = (rounds - 31) * 8;
+
161 
+
162  // Copy the "k" array into "s" and the "l" array.
+
163  __asm__ __volatile__ (
+
164  "ldd r25,%4\n" // r25 = li_out
+
165 
+
166  "ld __tmp_reg__,Z+\n"
+
167  "std %A0,__tmp_reg__\n"
+
168  "ld __tmp_reg__,Z+\n"
+
169  "std %B0,__tmp_reg__\n"
+
170  "ld __tmp_reg__,Z+\n"
+
171  "std %C0,__tmp_reg__\n"
+
172  "ld __tmp_reg__,Z+\n"
+
173  "std %D0,__tmp_reg__\n"
+
174  "ld __tmp_reg__,Z+\n"
+
175  "std %A1,__tmp_reg__\n"
+
176  "ld __tmp_reg__,Z+\n"
+
177  "std %B1,__tmp_reg__\n"
+
178  "ld __tmp_reg__,Z+\n"
+
179  "std %C1,__tmp_reg__\n"
+
180  "ld __tmp_reg__,Z+\n"
+
181  "std %D1,__tmp_reg__\n"
+
182 
+
183  "1:\n" // l[0..] = k[1..]
+
184  "ld __tmp_reg__,Z+\n"
+
185  "st X+,__tmp_reg__\n"
+
186  "dec r25\n"
+
187  "brne 1b\n"
+
188  : "=Q"(slow), "=Q"(shigh)
+
189  : "z"(k), "x"(l), "Q"(li_out)
+
190  : "r25"
+
191  );
+
192 
+
193  // Unpack the input into the x and y variables, converting
+
194  // from big-endian into little-endian in the process.
+
195  __asm__ __volatile__ (
+
196  "ld %D1,Z\n"
+
197  "ldd %C1,Z+1\n"
+
198  "ldd %B1,Z+2\n"
+
199  "ldd %A1,Z+3\n"
+
200  "ldd %D0,Z+4\n"
+
201  "ldd %C0,Z+5\n"
+
202  "ldd %B0,Z+6\n"
+
203  "ldd %A0,Z+7\n"
+
204  "ldd %D3,Z+8\n"
+
205  "ldd %C3,Z+9\n"
+
206  "ldd %B3,Z+10\n"
+
207  "ldd %A3,Z+11\n"
+
208  "ldd %D2,Z+12\n"
+
209  "ldd %C2,Z+13\n"
+
210  "ldd %B2,Z+14\n"
+
211  "ldd %A2,Z+15\n"
+
212  : "=r"(xlow), "=r"(xhigh), "=r"(ylow), "=r"(yhigh)
+
213  : "z"(input)
+
214  );
+
215 
+
216  // Perform all encryption rounds while expanding the key schedule in-place.
+
217  __asm__ __volatile__ (
+
218  "mov r23,__zero_reg__\n" // i = 0
+
219  "1:\n"
+
220 
+
221  // Adjust x and y for this round using the key schedule word s.
+
222 
+
223  // x = (rightRotate8_64(x) + y) ^ s;
+
224  "mov __tmp_reg__,%A0\n" // x = rightRotate8_64(x)
+
225  "mov %A0,%B0\n"
+
226  "mov %B0,%C0\n"
+
227  "mov %C0,%D0\n"
+
228  "mov %D0,%A1\n"
+
229  "mov %A1,%B1\n"
+
230  "mov %B1,%C1\n"
+
231  "mov %C1,%D1\n"
+
232  "mov %D1,__tmp_reg__\n"
+
233 
+
234  "add %A0,%A2\n" // x += y
+
235  "adc %B0,%B2\n"
+
236  "adc %C0,%C2\n"
+
237  "adc %D0,%D2\n"
+
238  "adc %A1,%A3\n"
+
239  "adc %B1,%B3\n"
+
240  "adc %C1,%C3\n"
+
241  "adc %D1,%D3\n"
+
242 
+
243  "ldd __tmp_reg__,%A4\n" // x ^= s
+
244  "eor %A0,__tmp_reg__\n"
+
245  "ldd __tmp_reg__,%B4\n"
+
246  "eor %B0,__tmp_reg__\n"
+
247  "ldd __tmp_reg__,%C4\n"
+
248  "eor %C0,__tmp_reg__\n"
+
249  "ldd __tmp_reg__,%D4\n"
+
250  "eor %D0,__tmp_reg__\n"
+
251  "ldd __tmp_reg__,%A5\n"
+
252  "eor %A1,__tmp_reg__\n"
+
253  "ldd __tmp_reg__,%B5\n"
+
254  "eor %B1,__tmp_reg__\n"
+
255  "ldd __tmp_reg__,%C5\n"
+
256  "eor %C1,__tmp_reg__\n"
+
257  "ldd __tmp_reg__,%D5\n"
+
258  "eor %D1,__tmp_reg__\n"
+
259 
+
260  // y = leftRotate3_64(y) ^ x;
+
261  "lsl %A2\n" // y = leftRotate1_64(y)
+
262  "rol %B2\n"
+
263  "rol %C2\n"
+
264  "rol %D2\n"
+
265  "rol %A3\n"
+
266  "rol %B3\n"
+
267  "rol %C3\n"
+
268  "rol %D3\n"
+
269  "adc %A2,__zero_reg__\n"
+
270 
+
271  "lsl %A2\n" // y = leftRotate1_64(y)
+
272  "rol %B2\n"
+
273  "rol %C2\n"
+
274  "rol %D2\n"
+
275  "rol %A3\n"
+
276  "rol %B3\n"
+
277  "rol %C3\n"
+
278  "rol %D3\n"
+
279 
+
280  "adc %A2,__zero_reg__\n"
+
281  "lsl %A2\n" // y = leftRotate1_64(y)
+
282  "rol %B2\n"
+
283  "rol %C2\n"
+
284  "rol %D2\n"
+
285  "rol %A3\n"
+
286  "rol %B3\n"
+
287  "rol %C3\n"
+
288  "rol %D3\n"
+
289  "adc %A2,__zero_reg__\n"
+
290 
+
291  "eor %A2,%A0\n" // y ^= x
+
292  "eor %B2,%B0\n"
+
293  "eor %C2,%C0\n"
+
294  "eor %D2,%D0\n"
+
295  "eor %A3,%A1\n"
+
296  "eor %B3,%B1\n"
+
297  "eor %C3,%C1\n"
+
298  "eor %D3,%D1\n"
+
299 
+
300  // On the last round we don't need to compute s so we
+
301  // can exit early here if (i + 1) == rounds.
+
302  "mov __tmp_reg__,r23\n" // temp = i + 1
+
303  "inc __tmp_reg__\n"
+
304  "cp __tmp_reg__,%9\n" // if (temp == rounds) ...
+
305  "brne 2f\n"
+
306  "rjmp 3f\n"
+
307  "2:\n"
+
308 
+
309  // Save x and y on the stack so we can reuse registers for t and s.
+
310  "push %A0\n"
+
311  "push %B0\n"
+
312  "push %C0\n"
+
313  "push %D0\n"
+
314  "push %A1\n"
+
315  "push %B1\n"
+
316  "push %C1\n"
+
317  "push %D1\n"
+
318  "push %A2\n"
+
319  "push %B2\n"
+
320  "push %C2\n"
+
321  "push %D2\n"
+
322  "push %A3\n"
+
323  "push %B3\n"
+
324  "push %C3\n"
+
325  "push %D3\n"
+
326 
+
327  // Compute the key schedule word s for the next round.
+
328 
+
329  // l[li_out] = (s + rightRotate8_64(l[li_in])) ^ i;
+
330  "ldd r24,%6\n" // Z = &(l[li_in])
+
331  "add %A8,r24\n"
+
332  "adc %B8,__zero_reg__\n"
+
333 
+
334  "ld %D1,Z+\n" // t = rightRotate8_64(l[li_in])
+
335  "ld %A0,Z+\n"
+
336  "ld %B0,Z+\n"
+
337  "ld %C0,Z+\n"
+
338  "ld %D0,Z+\n"
+
339  "ld %A1,Z+\n"
+
340  "ld %B1,Z+\n"
+
341  "ld %C1,Z+\n"
+
342 
+
343  "ldd %A2,%A4\n" // load s
+
344  "ldd %B2,%B4\n"
+
345  "ldd %C2,%C4\n"
+
346  "ldd %D2,%D4\n"
+
347  "ldd %A3,%A5\n"
+
348  "ldd %B3,%B5\n"
+
349  "ldd %C3,%C5\n"
+
350  "ldd %D3,%D5\n"
+
351 
+
352  "add %A0,%A2\n" // t += s
+
353  "adc %B0,%B2\n"
+
354  "adc %C0,%C2\n"
+
355  "adc %D0,%D2\n"
+
356  "adc %A1,%A3\n"
+
357  "adc %B1,%B3\n"
+
358  "adc %C1,%C3\n"
+
359  "adc %D1,%D3\n"
+
360 
+
361  "eor %A0,r23\n" // t ^= i
+
362 
+
363  // Z = Z - li_in + li_out
+
364  "ldi r25,8\n" // li_in = li_in + 1
+
365  "add r24,r25\n"
+
366  "sub %A8,r24\n" // return Z to its initial value
+
367  "sbc %B8,__zero_reg__\n"
+
368  "andi r24,0x1f\n" // li_in = li_in % 4
+
369  "std %6,r24\n"
+
370  "ldd r24,%7\n" // Z = &(l[li_out])
+
371  "add %A8,r24\n"
+
372  "adc %B8,__zero_reg__\n"
+
373 
+
374  "st Z+,%A0\n" // l[li_out] = t
+
375  "st Z+,%B0\n"
+
376  "st Z+,%C0\n"
+
377  "st Z+,%D0\n"
+
378  "st Z+,%A1\n"
+
379  "st Z+,%B1\n"
+
380  "st Z+,%C1\n"
+
381  "st Z+,%D1\n"
+
382 
+
383  "add r24,r25\n" // li_out = li_out + 1
+
384  "sub %A8,r24\n" // return Z to its initial value
+
385  "sbc %B8,__zero_reg__\n"
+
386  "andi r24,0x1f\n" // li_out = li_out % 4
+
387  "std %7,r24\n"
+
388 
+
389  // s = leftRotate3_64(s) ^ l[li_out];
+
390  "lsl %A2\n" // s = leftRotate1_64(s)
+
391  "rol %B2\n"
+
392  "rol %C2\n"
+
393  "rol %D2\n"
+
394  "rol %A3\n"
+
395  "rol %B3\n"
+
396  "rol %C3\n"
+
397  "rol %D3\n"
+
398  "adc %A2,__zero_reg__\n"
+
399 
+
400  "lsl %A2\n" // s = leftRotate1_64(s)
+
401  "rol %B2\n"
+
402  "rol %C2\n"
+
403  "rol %D2\n"
+
404  "rol %A3\n"
+
405  "rol %B3\n"
+
406  "rol %C3\n"
+
407  "rol %D3\n"
+
408  "adc %A2,__zero_reg__\n"
+
409 
+
410  "lsl %A2\n" // s = leftRotate1_64(s)
+
411  "rol %B2\n"
+
412  "rol %C2\n"
+
413  "rol %D2\n"
+
414  "rol %A3\n"
+
415  "rol %B3\n"
+
416  "rol %C3\n"
+
417  "rol %D3\n"
+
418  "adc %A2,__zero_reg__\n"
+
419 
+
420  "eor %A2,%A0\n" // s ^= l[li_out]
+
421  "eor %B2,%B0\n"
+
422  "eor %C2,%C0\n"
+
423  "eor %D2,%D0\n"
+
424  "eor %A3,%A1\n"
+
425  "eor %B3,%B1\n"
+
426  "eor %C3,%C1\n"
+
427  "eor %D3,%D1\n"
+
428 
+
429  "std %A4,%A2\n" // store s
+
430  "std %B4,%B2\n"
+
431  "std %C4,%C2\n"
+
432  "std %D4,%D2\n"
+
433  "std %A5,%A3\n"
+
434  "std %B5,%B3\n"
+
435  "std %C5,%C3\n"
+
436  "std %D5,%D3\n"
+
437 
+
438  // Pop registers from the stack to recover the x and y values.
+
439  "pop %D3\n"
+
440  "pop %C3\n"
+
441  "pop %B3\n"
+
442  "pop %A3\n"
+
443  "pop %D2\n"
+
444  "pop %C2\n"
+
445  "pop %B2\n"
+
446  "pop %A2\n"
+
447  "pop %D1\n"
+
448  "pop %C1\n"
+
449  "pop %B1\n"
+
450  "pop %A1\n"
+
451  "pop %D0\n"
+
452  "pop %C0\n"
+
453  "pop %B0\n"
+
454  "pop %A0\n"
+
455 
+
456  // Bottom of the loop.
+
457  "inc r23\n"
+
458  "rjmp 1b\n"
+
459  "3:\n"
+
460 
+
461  : "+r"(xlow), "+r"(xhigh), "+r"(ylow), "+r"(yhigh),
+
462  "+Q"(slow), "+Q"(shigh), "+Q"(li_in), "+Q"(li_out)
+
463  : "z"(l), "r"(rounds)
+
464  : "r23", "r24", "r25"
+
465  );
+
466 
+
467  // Pack the results into the output and convert back to big-endian.
+
468  __asm__ __volatile__ (
+
469  "st Z,%D1\n"
+
470  "std Z+1,%C1\n"
+
471  "std Z+2,%B1\n"
+
472  "std Z+3,%A1\n"
+
473  "std Z+4,%D0\n"
+
474  "std Z+5,%C0\n"
+
475  "std Z+6,%B0\n"
+
476  "std Z+7,%A0\n"
+
477  "std Z+8,%D3\n"
+
478  "std Z+9,%C3\n"
+
479  "std Z+10,%B3\n"
+
480  "std Z+11,%A3\n"
+
481  "std Z+12,%D2\n"
+
482  "std Z+13,%C2\n"
+
483  "std Z+14,%B2\n"
+
484  "std Z+15,%A2\n"
+
485  : : "r"(xlow), "r"(xhigh), "r"(ylow), "r"(yhigh), "z"(output)
+
486  );
+
487 #else
+
488  uint64_t l[4];
+
489  uint64_t x, y, s;
+
490  uint8_t round;
+
491  uint8_t li_in = 0;
+
492  uint8_t li_out = rounds - 31;
+
493  uint8_t i = 0;
+
494 
+
495  // Copy the input block into the work registers.
+
496  unpack64(x, input);
+
497  unpack64(y, input + 8);
+
498 
+
499  // Prepare the key schedule.
+
500  memcpy(l, k + 1, li_out * sizeof(uint64_t));
+
501  s = k[0];
+
502 
+
503  // Perform all encryption rounds except the last.
+
504  for (round = rounds - 1; round > 0; --round, ++i) {
+
505  // Perform the round with the current key schedule word.
+
506  x = (rightRotate8_64(x) + y) ^ s;
+
507  y = leftRotate3_64(y) ^ x;
+
508 
+
509  // Calculate the next key schedule word.
+
510  l[li_out] = (s + rightRotate8_64(l[li_in])) ^ i;
+
511  s = leftRotate3_64(s) ^ l[li_out];
+
512  li_in = (li_in + 1) & 0x03;
+
513  li_out = (li_out + 1) & 0x03;
+
514  }
+
515 
+
516  // Perform the final round and copy to the output.
+
517  x = (rightRotate8_64(x) + y) ^ s;
+
518  y = leftRotate3_64(y) ^ x;
+
519  pack64(output, x);
+
520  pack64(output + 8, y);
+
521 #endif
+
522 }
+
523 
+
537 void SpeckLowMemory::decryptBlock(uint8_t *output, const uint8_t *input)
+
538 {
+
539  // Decryption is not supported.
+
540 }
+
541 
+ +
543 {
+
544  clean(k);
+
545 }
+
void encryptBlock(uint8_t *output, const uint8_t *input)
Encrypts a single block using this cipher.
+
size_t keySize() const
Default size of the key for this block cipher, in bytes.
+
size_t blockSize() const
Size of a single block processed by this cipher, in bytes.
+
void clear()
Clears all security-sensitive state from this block cipher.
+
void decryptBlock(uint8_t *output, const uint8_t *input)
Decrypts a single block using this cipher.
+
SpeckLowMemory()
Constructs a low-memory Speck block cipher with no initial key.
+
bool setKey(const uint8_t *key, size_t len)
Sets the key to use for future encryption and decryption operations.
+
+ + + + diff --git a/SpeckLowMemory_8h_source.html b/SpeckLowMemory_8h_source.html new file mode 100644 index 00000000..985a4fd4 --- /dev/null +++ b/SpeckLowMemory_8h_source.html @@ -0,0 +1,157 @@ + + + + + + +ArduinoLibs: SpeckLowMemory.h Source File + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + +
+ All Classes Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
+ + +
+ +
+ + +
+
+
+
SpeckLowMemory.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_SPECK_LOW_MEMORY_H
+
24 #define CRYPTO_SPECK_LOW_MEMORY_H
+
25 
+
26 #include "BlockCipher.h"
+
27 
+ +
29 {
+
30 public:
+ +
32  virtual ~SpeckLowMemory();
+
33 
+
34  size_t blockSize() const;
+
35  size_t keySize() const;
+
36 
+
37  bool setKey(const uint8_t *key, size_t len);
+
38 
+
39  void encryptBlock(uint8_t *output, const uint8_t *input);
+
40  void decryptBlock(uint8_t *output, const uint8_t *input);
+
41 
+
42  void clear();
+
43 
+
44 private:
+
45  uint64_t k[4];
+
46  uint8_t rounds;
+
47 };
+
48 
+
49 #endif
+
void encryptBlock(uint8_t *output, const uint8_t *input)
Encrypts a single block using this cipher.
+
size_t keySize() const
Default size of the key for this block cipher, in bytes.
+
size_t blockSize() const
Size of a single block processed by this cipher, in bytes.
+
Abstract base class for block ciphers.
Definition: BlockCipher.h:29
+
void clear()
Clears all security-sensitive state from this block cipher.
+
void decryptBlock(uint8_t *output, const uint8_t *input)
Decrypts a single block using this cipher.
+
Speck block cipher with a 128-bit block size (low-memory version).
+
SpeckLowMemory()
Constructs a low-memory Speck block cipher with no initial key.
+
bool setKey(const uint8_t *key, size_t len)
Sets the key to use for future encryption and decryption operations.
+
+ + + + diff --git a/Speck_8cpp_source.html b/Speck_8cpp_source.html index 8296ac77..33667867 100644 --- a/Speck_8cpp_source.html +++ b/Speck_8cpp_source.html @@ -116,580 +116,570 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
26 #include "utility/EndianUtil.h"
27 #include <string.h>
28 
-
50 // The "avr-gcc" compiler doesn't do a very good job of compiling
-
51 // code involving 64-bit values. So we have to use inline assembly.
-
52 // It also helps to break the state up into 32-bit quantities
-
53 // because "asm" supports register names like %A0, %B0, %C0, %D0
-
54 // for the bytes in a 32-bit quantity, but it does not support
-
55 // %E0, %F0, %G0, %H0 for the high bytes of a 64-bit quantity.
-
56 #if defined(__AVR__)
-
57 #define USE_AVR_INLINE_ASM 1
-
58 #endif
-
59 
-
66 Speck::Speck()
-
67  : rounds(32)
-
68 {
-
69 }
-
70 
-
71 Speck::~Speck()
-
72 {
-
73  clean(k);
-
74 }
-
75 
-
76 size_t Speck::blockSize() const
-
77 {
-
78  return 16;
-
79 }
-
80 
-
81 size_t Speck::keySize() const
-
82 {
-
83  // Also supports 128-bit and 192-bit, but we only report 256-bit.
-
84  return 32;
+
56 // The "avr-gcc" compiler doesn't do a very good job of compiling
+
57 // code involving 64-bit values. So we have to use inline assembly.
+
58 // It also helps to break the state up into 32-bit quantities
+
59 // because "asm" supports register names like %A0, %B0, %C0, %D0
+
60 // for the bytes in a 32-bit quantity, but it does not support
+
61 // %E0, %F0, %G0, %H0 for the high bytes of a 64-bit quantity.
+
62 #if defined(__AVR__)
+
63 #define USE_AVR_INLINE_ASM 1
+
64 #endif
+
65 
+
72 Speck::Speck()
+
73  : rounds(32)
+
74 {
+
75 }
+
76 
+
77 Speck::~Speck()
+
78 {
+
79  clean(k);
+
80 }
+
81 
+
82 size_t Speck::blockSize() const
+
83 {
+
84  return 16;
85 }
86 
-
87 // Pack/unpack byte-aligned big-endian 64-bit quantities.
-
88 #define pack64(data, value) \
-
89  do { \
-
90  uint64_t v = htobe64((value)); \
-
91  memcpy((data), &v, sizeof(uint64_t)); \
-
92  } while (0)
-
93 #define unpack64(value, data) \
-
94  do { \
-
95  memcpy(&(value), (data), sizeof(uint64_t)); \
-
96  (value) = be64toh((value)); \
-
97  } while (0)
-
98 
-
99 bool Speck::setKey(const uint8_t *key, size_t len)
-
100 {
-
101 #if USE_AVR_INLINE_ASM
-
102  uint64_t l[4];
-
103  uint8_t m, mb;
-
104  if (len == 32) {
-
105  m = 4;
-
106  mb = 3 * 8;
-
107  } else if (len == 24) {
-
108  m = 3;
-
109  mb = 2 * 8;
-
110  } else if (len == 16) {
-
111  m = 2;
-
112  mb = 8;
-
113  } else {
-
114  return false;
-
115  }
-
116  rounds = 30 + m;
-
117 
-
118  // Copy the first (m - 1) * 8 bytes of the key into the "l" array
-
119  // in reverse order to convert big endian into little-endian.
-
120  __asm__ __volatile__ (
-
121  "1:\n"
-
122  "ld __tmp_reg__,-Z\n"
-
123  "st X+,__tmp_reg__\n"
-
124  "dec %2\n"
-
125  "brne 1b\n"
-
126  : : "x"(l), "z"(key + len - 8), "r"(mb)
-
127  );
-
128 
-
129  // Copy the final 8 bytes of the key into k[0] in reverse order.
-
130  __asm__ __volatile__ (
-
131  "1:\n"
-
132  "ld __tmp_reg__,-Z\n"
-
133  "st X+,__tmp_reg__\n"
-
134  "dec %2\n"
-
135  "brne 1b\n"
-
136  : : "x"(k), "z"(key + len), "r"(8)
-
137  );
-
138 
-
139  // Expand the key to the full key schedule.
-
140  __asm__ __volatile__ (
-
141  "1:\n"
-
142  // l[li_out] = (k[i] + rightRotate8_64(l[li_in])) ^ i;
-
143  "add %A1,%2\n" // X = &(l[li_in])
-
144  "adc %B1,__zero_reg__\n"
-
145  "ld r8,X+\n" // x = l[li_in]
-
146  "ld r9,X+\n"
-
147  "ld r10,X+\n"
-
148  "ld r11,X+\n"
-
149  "ld r12,X+\n"
-
150  "ld r13,X+\n"
-
151  "ld r14,X+\n"
-
152  "ld r15,X+\n"
-
153 
-
154  "mov __tmp_reg__,r8\n" // x = rightRotate8_64(l[li_in])
-
155  "mov r8,r9\n"
-
156  "mov r9,r10\n"
-
157  "mov r10,r11\n"
-
158  "mov r11,r12\n"
-
159  "mov r12,r13\n"
-
160  "mov r13,r14\n"
-
161  "mov r14,r15\n"
-
162  "mov r15,__tmp_reg__\n"
-
163 
-
164  "ld r16,Z+\n" // y = k[i]
-
165  "ld r17,Z+\n"
-
166  "ld r18,Z+\n"
-
167  "ld r19,Z+\n"
-
168  "ld r20,Z+\n"
-
169  "ld r21,Z+\n"
-
170  "ld r22,Z+\n"
-
171  "ld r23,Z+\n"
-
172 
-
173  "add r8,r16\n" // x += y
-
174  "adc r9,r17\n"
-
175  "adc r10,r18\n"
-
176  "adc r11,r19\n"
-
177  "adc r12,r20\n"
-
178  "adc r13,r21\n"
-
179  "adc r14,r22\n"
-
180  "adc r15,r23\n"
-
181 
-
182  "eor r8,%4\n" // x ^= i
-
183 
-
184  // X = X - li_in + li_out
-
185  "ldi r24,8\n" // li_in = li_in + 1
-
186  "add %2,r24\n"
-
187  "sub %A1,%2\n" // return X to its initial value
-
188  "sbc %B1,__zero_reg__\n"
-
189  "ldi r25,0x1f\n"
-
190  "and %2,r25\n" // li_in = li_in % 4
-
191  "add %A1,%3\n" // X = &(l[li_out])
-
192  "adc %B1,__zero_reg__\n"
-
193 
-
194  "st X+,r8\n" // l[li_out] = x
-
195  "st X+,r9\n"
-
196  "st X+,r10\n"
-
197  "st X+,r11\n"
-
198  "st X+,r12\n"
-
199  "st X+,r13\n"
-
200  "st X+,r14\n"
-
201  "st X+,r15\n"
-
202 
-
203  "add %3,r24\n" // li_out = li_out + 1
-
204  "sub %A1,%3\n" // return X to its initial value
-
205  "sbc %B1,__zero_reg__\n"
-
206  "and %3,r25\n" // li_out = li_out % 4
-
207 
-
208  // k[i + 1] = leftRotate3_64(k[i]) ^ l[li_out];
-
209  "lsl r16\n" // y = leftRotate1_64(y)
-
210  "rol r17\n"
-
211  "rol r18\n"
-
212  "rol r19\n"
-
213  "rol r20\n"
-
214  "rol r21\n"
-
215  "rol r22\n"
-
216  "rol r23\n"
-
217  "adc r16,__zero_reg__\n"
-
218 
-
219  "lsl r16\n" // y = leftRotate1_64(y)
-
220  "rol r17\n"
-
221  "rol r18\n"
-
222  "rol r19\n"
-
223  "rol r20\n"
-
224  "rol r21\n"
-
225  "rol r22\n"
-
226  "rol r23\n"
-
227  "adc r16,__zero_reg__\n"
-
228 
-
229  "lsl r16\n" // y = leftRotate1_64(y)
-
230  "rol r17\n"
-
231  "rol r18\n"
-
232  "rol r19\n"
-
233  "rol r20\n"
-
234  "rol r21\n"
-
235  "rol r22\n"
-
236  "rol r23\n"
-
237  "adc r16,__zero_reg__\n"
-
238 
-
239  "eor r16,r8\n" // y ^= x
-
240  "eor r17,r9\n"
-
241  "eor r18,r10\n"
-
242  "eor r19,r11\n"
-
243  "eor r20,r12\n"
-
244  "eor r21,r13\n"
-
245  "eor r22,r14\n"
-
246  "eor r23,r15\n"
-
247 
-
248  "st Z,r16\n" // k[i + 1] = y
-
249  "std Z+1,r17\n"
-
250  "std Z+2,r18\n"
-
251  "std Z+3,r19\n"
-
252  "std Z+4,r20\n"
-
253  "std Z+5,r21\n"
-
254  "std Z+6,r22\n"
-
255  "std Z+7,r23\n"
-
256 
-
257  // Loop
-
258  "inc %4\n" // ++i
-
259  "dec %5\n" // --rounds
-
260  "breq 2f\n"
-
261  "rjmp 1b\n"
-
262  "2:\n"
-
263 
-
264  : : "z"(k), "x"(l),
-
265  "r"((uint8_t)0), // initial value of li_in
-
266  "r"((uint8_t)((m - 1) * 8)), // initial value of li_out
-
267  "r"(0), // initial value of i
-
268  "r"(rounds - 1)
-
269  : "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
-
270  "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",
-
271  "r24", "r25"
-
272  );
-
273 #else
-
274  uint64_t l[4];
-
275  uint8_t m;
-
276  if (len == 32) {
-
277  m = 4;
-
278  unpack64(l[2], key);
-
279  unpack64(l[1], key + 8);
-
280  unpack64(l[0], key + 16);
-
281  unpack64(k[0], key + 24);
-
282  } else if (len == 24) {
-
283  m = 3;
-
284  unpack64(l[1], key);
-
285  unpack64(l[0], key + 8);
-
286  unpack64(k[0], key + 16);
-
287  } else if (len == 16) {
-
288  m = 2;
-
289  unpack64(l[0], key);
-
290  unpack64(k[0], key + 8);
-
291  } else {
-
292  return false;
-
293  }
-
294  rounds = 30 + m;
-
295  uint8_t li_in = 0;
-
296  uint8_t li_out = m - 1;
-
297  for (uint8_t i = 0; i < (rounds - 1); ++i) {
-
298  l[li_out] = (k[i] + rightRotate8_64(l[li_in])) ^ i;
-
299  k[i + 1] = leftRotate3_64(k[i]) ^ l[li_out];
-
300  if ((++li_in) >= m)
-
301  li_in = 0;
-
302  if ((++li_out) >= m)
-
303  li_out = 0;
-
304  }
-
305 #endif
-
306  clean(l);
-
307  return true;
-
308 }
-
309 
-
310 void Speck::encryptBlock(uint8_t *output, const uint8_t *input)
-
311 {
-
312 #if USE_AVR_INLINE_ASM
-
313  uint32_t xlow, xhigh, ylow, yhigh;
-
314 
-
315  // Unpack the input into the x and y variables, converting
-
316  // from big-endian into little-endian in the process.
-
317  __asm__ __volatile__ (
-
318  "ld %D1,Z\n"
-
319  "ldd %C1,Z+1\n"
-
320  "ldd %B1,Z+2\n"
-
321  "ldd %A1,Z+3\n"
-
322  "ldd %D0,Z+4\n"
-
323  "ldd %C0,Z+5\n"
-
324  "ldd %B0,Z+6\n"
-
325  "ldd %A0,Z+7\n"
-
326  "ldd %D3,Z+8\n"
-
327  "ldd %C3,Z+9\n"
-
328  "ldd %B3,Z+10\n"
-
329  "ldd %A3,Z+11\n"
-
330  "ldd %D2,Z+12\n"
-
331  "ldd %C2,Z+13\n"
-
332  "ldd %B2,Z+14\n"
-
333  "ldd %A2,Z+15\n"
-
334  : "=r"(xlow), "=r"(xhigh), "=r"(ylow), "=r"(yhigh)
-
335  : "z"(input)
-
336  );
-
337 
-
338  // Perform all encryption rounds. Z points to the key schedule.
-
339  __asm__ __volatile__ (
-
340  "1:\n"
-
341  // x = (rightRotate8_64(x) + y) ^ *s++;
-
342  "mov __tmp_reg__,%A0\n" // x = rightRotate8_64(x)
-
343  "mov %A0,%B0\n"
-
344  "mov %B0,%C0\n"
-
345  "mov %C0,%D0\n"
-
346  "mov %D0,%A1\n"
-
347  "mov %A1,%B1\n"
-
348  "mov %B1,%C1\n"
-
349  "mov %C1,%D1\n"
-
350  "mov %D1,__tmp_reg__\n"
-
351 
-
352  "add %A0,%A2\n" // x += y
-
353  "adc %B0,%B2\n"
-
354  "adc %C0,%C2\n"
-
355  "adc %D0,%D2\n"
-
356  "adc %A1,%A3\n"
-
357  "adc %B1,%B3\n"
-
358  "adc %C1,%C3\n"
-
359  "adc %D1,%D3\n"
-
360 
-
361  "ld __tmp_reg__,Z+\n" // x ^= *s++
-
362  "eor %A0,__tmp_reg__\n"
+
87 size_t Speck::keySize() const
+
88 {
+
89  // Also supports 128-bit and 192-bit, but we only report 256-bit.
+
90  return 32;
+
91 }
+
92 
+
93 // Pack/unpack byte-aligned big-endian 64-bit quantities.
+
94 #define pack64(data, value) \
+
95  do { \
+
96  uint64_t v = htobe64((value)); \
+
97  memcpy((data), &v, sizeof(uint64_t)); \
+
98  } while (0)
+
99 #define unpack64(value, data) \
+
100  do { \
+
101  memcpy(&(value), (data), sizeof(uint64_t)); \
+
102  (value) = be64toh((value)); \
+
103  } while (0)
+
104 
+
105 bool Speck::setKey(const uint8_t *key, size_t len)
+
106 {
+
107 #if USE_AVR_INLINE_ASM
+
108  uint64_t l[4];
+
109  uint8_t m, mb;
+
110  if (len == 32) {
+
111  m = 4;
+
112  mb = 3 * 8;
+
113  } else if (len == 24) {
+
114  m = 3;
+
115  mb = 2 * 8;
+
116  } else if (len == 16) {
+
117  m = 2;
+
118  mb = 8;
+
119  } else {
+
120  return false;
+
121  }
+
122  rounds = 30 + m;
+
123 
+
124  // Copy the first (m - 1) * 8 bytes of the key into the "l" array
+
125  // in reverse order to convert big endian into little-endian.
+
126  __asm__ __volatile__ (
+
127  "1:\n"
+
128  "ld __tmp_reg__,-Z\n"
+
129  "st X+,__tmp_reg__\n"
+
130  "dec %2\n"
+
131  "brne 1b\n"
+
132  : : "x"(l), "z"(key + len - 8), "r"(mb)
+
133  );
+
134 
+
135  // Copy the final 8 bytes of the key into k[0] in reverse order.
+
136  __asm__ __volatile__ (
+
137  "1:\n"
+
138  "ld __tmp_reg__,-Z\n"
+
139  "st X+,__tmp_reg__\n"
+
140  "dec %2\n"
+
141  "brne 1b\n"
+
142  : : "x"(k), "z"(key + len), "r"(8)
+
143  );
+
144 
+
145  // Expand the key to the full key schedule.
+
146  __asm__ __volatile__ (
+
147  "1:\n"
+
148  // l[li_out] = (k[i] + rightRotate8_64(l[li_in])) ^ i;
+
149  "add %A1,%2\n" // X = &(l[li_in])
+
150  "adc %B1,__zero_reg__\n"
+
151  "ld r15,X+\n" // x = rightRotate8_64(l[li_in])
+
152  "ld r8,X+\n"
+
153  "ld r9,X+\n"
+
154  "ld r10,X+\n"
+
155  "ld r11,X+\n"
+
156  "ld r12,X+\n"
+
157  "ld r13,X+\n"
+
158  "ld r14,X+\n"
+
159 
+
160  "ld r16,Z+\n" // y = k[i]
+
161  "ld r17,Z+\n"
+
162  "ld r18,Z+\n"
+
163  "ld r19,Z+\n"
+
164  "ld r20,Z+\n"
+
165  "ld r21,Z+\n"
+
166  "ld r22,Z+\n"
+
167  "ld r23,Z+\n"
+
168 
+
169  "add r8,r16\n" // x += y
+
170  "adc r9,r17\n"
+
171  "adc r10,r18\n"
+
172  "adc r11,r19\n"
+
173  "adc r12,r20\n"
+
174  "adc r13,r21\n"
+
175  "adc r14,r22\n"
+
176  "adc r15,r23\n"
+
177 
+
178  "eor r8,%4\n" // x ^= i
+
179 
+
180  // X = X - li_in + li_out
+
181  "ldi r24,8\n" // li_in = li_in + 1
+
182  "add %2,r24\n"
+
183  "sub %A1,%2\n" // return X to its initial value
+
184  "sbc %B1,__zero_reg__\n"
+
185  "ldi r25,0x1f\n"
+
186  "and %2,r25\n" // li_in = li_in % 4
+
187  "add %A1,%3\n" // X = &(l[li_out])
+
188  "adc %B1,__zero_reg__\n"
+
189 
+
190  "st X+,r8\n" // l[li_out] = x
+
191  "st X+,r9\n"
+
192  "st X+,r10\n"
+
193  "st X+,r11\n"
+
194  "st X+,r12\n"
+
195  "st X+,r13\n"
+
196  "st X+,r14\n"
+
197  "st X+,r15\n"
+
198 
+
199  "add %3,r24\n" // li_out = li_out + 1
+
200  "sub %A1,%3\n" // return X to its initial value
+
201  "sbc %B1,__zero_reg__\n"
+
202  "and %3,r25\n" // li_out = li_out % 4
+
203 
+
204  // k[i + 1] = leftRotate3_64(k[i]) ^ l[li_out];
+
205  "lsl r16\n" // y = leftRotate1_64(y)
+
206  "rol r17\n"
+
207  "rol r18\n"
+
208  "rol r19\n"
+
209  "rol r20\n"
+
210  "rol r21\n"
+
211  "rol r22\n"
+
212  "rol r23\n"
+
213  "adc r16,__zero_reg__\n"
+
214 
+
215  "lsl r16\n" // y = leftRotate1_64(y)
+
216  "rol r17\n"
+
217  "rol r18\n"
+
218  "rol r19\n"
+
219  "rol r20\n"
+
220  "rol r21\n"
+
221  "rol r22\n"
+
222  "rol r23\n"
+
223  "adc r16,__zero_reg__\n"
+
224 
+
225  "lsl r16\n" // y = leftRotate1_64(y)
+
226  "rol r17\n"
+
227  "rol r18\n"
+
228  "rol r19\n"
+
229  "rol r20\n"
+
230  "rol r21\n"
+
231  "rol r22\n"
+
232  "rol r23\n"
+
233  "adc r16,__zero_reg__\n"
+
234 
+
235  "eor r16,r8\n" // y ^= x
+
236  "eor r17,r9\n"
+
237  "eor r18,r10\n"
+
238  "eor r19,r11\n"
+
239  "eor r20,r12\n"
+
240  "eor r21,r13\n"
+
241  "eor r22,r14\n"
+
242  "eor r23,r15\n"
+
243 
+
244  "st Z,r16\n" // k[i + 1] = y
+
245  "std Z+1,r17\n"
+
246  "std Z+2,r18\n"
+
247  "std Z+3,r19\n"
+
248  "std Z+4,r20\n"
+
249  "std Z+5,r21\n"
+
250  "std Z+6,r22\n"
+
251  "std Z+7,r23\n"
+
252 
+
253  // Loop
+
254  "inc %4\n" // ++i
+
255  "dec %5\n" // --rounds
+
256  "breq 2f\n"
+
257  "rjmp 1b\n"
+
258  "2:\n"
+
259 
+
260  : : "z"(k), "x"(l),
+
261  "r"((uint8_t)0), // initial value of li_in
+
262  "r"((uint8_t)((m - 1) * 8)), // initial value of li_out
+
263  "r"(0), // initial value of i
+
264  "r"(rounds - 1)
+
265  : "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15",
+
266  "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23",
+
267  "r24", "r25"
+
268  );
+
269 #else
+
270  uint64_t l[4];
+
271  uint8_t m;
+
272  if (len == 32) {
+
273  m = 4;
+
274  unpack64(l[2], key);
+
275  unpack64(l[1], key + 8);
+
276  unpack64(l[0], key + 16);
+
277  unpack64(k[0], key + 24);
+
278  } else if (len == 24) {
+
279  m = 3;
+
280  unpack64(l[1], key);
+
281  unpack64(l[0], key + 8);
+
282  unpack64(k[0], key + 16);
+
283  } else if (len == 16) {
+
284  m = 2;
+
285  unpack64(l[0], key);
+
286  unpack64(k[0], key + 8);
+
287  } else {
+
288  return false;
+
289  }
+
290  rounds = 30 + m;
+
291  uint8_t li_in = 0;
+
292  uint8_t li_out = m - 1;
+
293  for (uint8_t i = 0; i < (rounds - 1); ++i) {
+
294  l[li_out] = (k[i] + rightRotate8_64(l[li_in])) ^ i;
+
295  k[i + 1] = leftRotate3_64(k[i]) ^ l[li_out];
+
296  if ((++li_in) >= m)
+
297  li_in = 0;
+
298  if ((++li_out) >= m)
+
299  li_out = 0;
+
300  }
+
301 #endif
+
302  clean(l);
+
303  return true;
+
304 }
+
305 
+
306 void Speck::encryptBlock(uint8_t *output, const uint8_t *input)
+
307 {
+
308 #if USE_AVR_INLINE_ASM
+
309  uint32_t xlow, xhigh, ylow, yhigh;
+
310 
+
311  // Unpack the input into the x and y variables, converting
+
312  // from big-endian into little-endian in the process.
+
313  __asm__ __volatile__ (
+
314  "ld %D1,Z\n"
+
315  "ldd %C1,Z+1\n"
+
316  "ldd %B1,Z+2\n"
+
317  "ldd %A1,Z+3\n"
+
318  "ldd %D0,Z+4\n"
+
319  "ldd %C0,Z+5\n"
+
320  "ldd %B0,Z+6\n"
+
321  "ldd %A0,Z+7\n"
+
322  "ldd %D3,Z+8\n"
+
323  "ldd %C3,Z+9\n"
+
324  "ldd %B3,Z+10\n"
+
325  "ldd %A3,Z+11\n"
+
326  "ldd %D2,Z+12\n"
+
327  "ldd %C2,Z+13\n"
+
328  "ldd %B2,Z+14\n"
+
329  "ldd %A2,Z+15\n"
+
330  : "=r"(xlow), "=r"(xhigh), "=r"(ylow), "=r"(yhigh)
+
331  : "z"(input)
+
332  );
+
333 
+
334  // Perform all encryption rounds. Z points to the key schedule.
+
335  __asm__ __volatile__ (
+
336  "1:\n"
+
337  // x = (rightRotate8_64(x) + y) ^ *s++;
+
338  "mov __tmp_reg__,%A0\n" // x = rightRotate8_64(x)
+
339  "mov %A0,%B0\n"
+
340  "mov %B0,%C0\n"
+
341  "mov %C0,%D0\n"
+
342  "mov %D0,%A1\n"
+
343  "mov %A1,%B1\n"
+
344  "mov %B1,%C1\n"
+
345  "mov %C1,%D1\n"
+
346  "mov %D1,__tmp_reg__\n"
+
347 
+
348  "add %A0,%A2\n" // x += y
+
349  "adc %B0,%B2\n"
+
350  "adc %C0,%C2\n"
+
351  "adc %D0,%D2\n"
+
352  "adc %A1,%A3\n"
+
353  "adc %B1,%B3\n"
+
354  "adc %C1,%C3\n"
+
355  "adc %D1,%D3\n"
+
356 
+
357  "ld __tmp_reg__,Z+\n" // x ^= *s++
+
358  "eor %A0,__tmp_reg__\n"
+
359  "ld __tmp_reg__,Z+\n"
+
360  "eor %B0,__tmp_reg__\n"
+
361  "ld __tmp_reg__,Z+\n"
+
362  "eor %C0,__tmp_reg__\n"
363  "ld __tmp_reg__,Z+\n"
-
364  "eor %B0,__tmp_reg__\n"
+
364  "eor %D0,__tmp_reg__\n"
365  "ld __tmp_reg__,Z+\n"
-
366  "eor %C0,__tmp_reg__\n"
+
366  "eor %A1,__tmp_reg__\n"
367  "ld __tmp_reg__,Z+\n"
-
368  "eor %D0,__tmp_reg__\n"
+
368  "eor %B1,__tmp_reg__\n"
369  "ld __tmp_reg__,Z+\n"
-
370  "eor %A1,__tmp_reg__\n"
+
370  "eor %C1,__tmp_reg__\n"
371  "ld __tmp_reg__,Z+\n"
-
372  "eor %B1,__tmp_reg__\n"
-
373  "ld __tmp_reg__,Z+\n"
-
374  "eor %C1,__tmp_reg__\n"
-
375  "ld __tmp_reg__,Z+\n"
-
376  "eor %D1,__tmp_reg__\n"
-
377 
-
378  // y = leftRotate3_64(y) ^ x;
-
379  "lsl %A2\n" // y = leftRotate1_64(y)
-
380  "rol %B2\n"
-
381  "rol %C2\n"
-
382  "rol %D2\n"
-
383  "rol %A3\n"
-
384  "rol %B3\n"
-
385  "rol %C3\n"
-
386  "rol %D3\n"
-
387  "adc %A2,__zero_reg__\n"
-
388 
-
389  "lsl %A2\n" // y = leftRotate1_64(y)
-
390  "rol %B2\n"
-
391  "rol %C2\n"
-
392  "rol %D2\n"
-
393  "rol %A3\n"
-
394  "rol %B3\n"
-
395  "rol %C3\n"
-
396  "rol %D3\n"
-
397 
-
398  "adc %A2,__zero_reg__\n"
-
399  "lsl %A2\n" // y = leftRotate1_64(y)
-
400  "rol %B2\n"
-
401  "rol %C2\n"
-
402  "rol %D2\n"
-
403  "rol %A3\n"
-
404  "rol %B3\n"
-
405  "rol %C3\n"
-
406  "rol %D3\n"
-
407  "adc %A2,__zero_reg__\n"
-
408 
-
409  "eor %A2,%A0\n" // y ^= x
-
410  "eor %B2,%B0\n"
-
411  "eor %C2,%C0\n"
-
412  "eor %D2,%D0\n"
-
413  "eor %A3,%A1\n"
-
414  "eor %B3,%B1\n"
-
415  "eor %C3,%C1\n"
-
416  "eor %D3,%D1\n"
-
417 
-
418  // Loop
-
419  "dec %5\n" // --round
-
420  "breq 2f\n"
-
421  "rjmp 1b\n"
-
422  "2:\n"
-
423  : "+r"(xlow), "+r"(xhigh), "+r"(ylow), "+r"(yhigh)
-
424  : "z"(k), "r"(rounds)
-
425  );
-
426 
-
427  // Pack the results into the output and convert back to big-endian.
-
428  __asm__ __volatile__ (
-
429  "st Z,%D1\n"
-
430  "std Z+1,%C1\n"
-
431  "std Z+2,%B1\n"
-
432  "std Z+3,%A1\n"
-
433  "std Z+4,%D0\n"
-
434  "std Z+5,%C0\n"
-
435  "std Z+6,%B0\n"
-
436  "std Z+7,%A0\n"
-
437  "std Z+8,%D3\n"
-
438  "std Z+9,%C3\n"
-
439  "std Z+10,%B3\n"
-
440  "std Z+11,%A3\n"
-
441  "std Z+12,%D2\n"
-
442  "std Z+13,%C2\n"
-
443  "std Z+14,%B2\n"
-
444  "std Z+15,%A2\n"
-
445  : : "r"(xlow), "r"(xhigh), "r"(ylow), "r"(yhigh), "z"(output)
-
446  );
-
447 #else
-
448  uint64_t x, y;
-
449  const uint64_t *s = k;
-
450  unpack64(x, input);
-
451  unpack64(y, input + 8);
-
452  for (uint8_t round = rounds; round > 0; --round, ++s) {
-
453  x = (rightRotate8_64(x) + y) ^ s[0];
-
454  y = leftRotate3_64(y) ^ x;
-
455  }
-
456  pack64(output, x);
-
457  pack64(output + 8, y);
-
458 #endif
-
459 }
-
460 
-
461 void Speck::decryptBlock(uint8_t *output, const uint8_t *input)
-
462 {
-
463 #if USE_AVR_INLINE_ASM
-
464  uint32_t xlow, xhigh, ylow, yhigh;
-
465 
-
466  // Unpack the input into the x and y variables, converting
-
467  // from big-endian into little-endian in the process.
-
468  __asm__ __volatile__ (
-
469  "ld %D1,Z\n"
-
470  "ldd %C1,Z+1\n"
-
471  "ldd %B1,Z+2\n"
-
472  "ldd %A1,Z+3\n"
-
473  "ldd %D0,Z+4\n"
-
474  "ldd %C0,Z+5\n"
-
475  "ldd %B0,Z+6\n"
-
476  "ldd %A0,Z+7\n"
-
477  "ldd %D3,Z+8\n"
-
478  "ldd %C3,Z+9\n"
-
479  "ldd %B3,Z+10\n"
-
480  "ldd %A3,Z+11\n"
-
481  "ldd %D2,Z+12\n"
-
482  "ldd %C2,Z+13\n"
-
483  "ldd %B2,Z+14\n"
-
484  "ldd %A2,Z+15\n"
-
485  : "=r"(xlow), "=r"(xhigh), "=r"(ylow), "=r"(yhigh)
-
486  : "z"(input)
-
487  );
-
488 
-
489  // Perform all decryption rounds. Z points to the end of key schedule.
-
490  __asm__ __volatile__ (
-
491  "1:\n"
-
492  // y = rightRotate3_64(x ^ y);
-
493  "eor %A2,%A0\n" // y ^= x
-
494  "eor %B2,%B0\n"
-
495  "eor %C2,%C0\n"
-
496  "eor %D2,%D0\n"
-
497  "eor %A3,%A1\n"
-
498  "eor %B3,%B1\n"
-
499  "eor %C3,%C1\n"
-
500  "eor %D3,%D1\n"
-
501 
-
502  "bst %A2,0\n" // y = rightRotate1_64(y)
-
503  "ror %D3\n"
-
504  "ror %C3\n"
-
505  "ror %B3\n"
-
506  "ror %A3\n"
-
507  "ror %D2\n"
-
508  "ror %C2\n"
-
509  "ror %B2\n"
-
510  "ror %A2\n"
-
511  "bld %D3,7\n"
-
512 
-
513  "bst %A2,0\n" // y = rightRotate1_64(y)
-
514  "ror %D3\n"
-
515  "ror %C3\n"
-
516  "ror %B3\n"
-
517  "ror %A3\n"
-
518  "ror %D2\n"
-
519  "ror %C2\n"
-
520  "ror %B2\n"
-
521  "ror %A2\n"
-
522  "bld %D3,7\n"
-
523 
-
524  "bst %A2,0\n" // y = rightRotate1_64(y)
-
525  "ror %D3\n"
-
526  "ror %C3\n"
-
527  "ror %B3\n"
-
528  "ror %A3\n"
-
529  "ror %D2\n"
-
530  "ror %C2\n"
-
531  "ror %B2\n"
-
532  "ror %A2\n"
-
533  "bld %D3,7\n"
-
534 
-
535  // x = leftRotate8_64((x ^ *s--) - y);
-
536  "ld __tmp_reg__,-Z\n" // x ^= *s--
-
537  "eor %D1,__tmp_reg__\n"
+
372  "eor %D1,__tmp_reg__\n"
+
373 
+
374  // y = leftRotate3_64(y) ^ x;
+
375  "lsl %A2\n" // y = leftRotate1_64(y)
+
376  "rol %B2\n"
+
377  "rol %C2\n"
+
378  "rol %D2\n"
+
379  "rol %A3\n"
+
380  "rol %B3\n"
+
381  "rol %C3\n"
+
382  "rol %D3\n"
+
383  "adc %A2,__zero_reg__\n"
+
384 
+
385  "lsl %A2\n" // y = leftRotate1_64(y)
+
386  "rol %B2\n"
+
387  "rol %C2\n"
+
388  "rol %D2\n"
+
389  "rol %A3\n"
+
390  "rol %B3\n"
+
391  "rol %C3\n"
+
392  "rol %D3\n"
+
393 
+
394  "adc %A2,__zero_reg__\n"
+
395  "lsl %A2\n" // y = leftRotate1_64(y)
+
396  "rol %B2\n"
+
397  "rol %C2\n"
+
398  "rol %D2\n"
+
399  "rol %A3\n"
+
400  "rol %B3\n"
+
401  "rol %C3\n"
+
402  "rol %D3\n"
+
403  "adc %A2,__zero_reg__\n"
+
404 
+
405  "eor %A2,%A0\n" // y ^= x
+
406  "eor %B2,%B0\n"
+
407  "eor %C2,%C0\n"
+
408  "eor %D2,%D0\n"
+
409  "eor %A3,%A1\n"
+
410  "eor %B3,%B1\n"
+
411  "eor %C3,%C1\n"
+
412  "eor %D3,%D1\n"
+
413 
+
414  // Loop
+
415  "dec %5\n" // --round
+
416  "breq 2f\n"
+
417  "rjmp 1b\n"
+
418  "2:\n"
+
419  : "+r"(xlow), "+r"(xhigh), "+r"(ylow), "+r"(yhigh)
+
420  : "z"(k), "r"(rounds)
+
421  );
+
422 
+
423  // Pack the results into the output and convert back to big-endian.
+
424  __asm__ __volatile__ (
+
425  "st Z,%D1\n"
+
426  "std Z+1,%C1\n"
+
427  "std Z+2,%B1\n"
+
428  "std Z+3,%A1\n"
+
429  "std Z+4,%D0\n"
+
430  "std Z+5,%C0\n"
+
431  "std Z+6,%B0\n"
+
432  "std Z+7,%A0\n"
+
433  "std Z+8,%D3\n"
+
434  "std Z+9,%C3\n"
+
435  "std Z+10,%B3\n"
+
436  "std Z+11,%A3\n"
+
437  "std Z+12,%D2\n"
+
438  "std Z+13,%C2\n"
+
439  "std Z+14,%B2\n"
+
440  "std Z+15,%A2\n"
+
441  : : "r"(xlow), "r"(xhigh), "r"(ylow), "r"(yhigh), "z"(output)
+
442  );
+
443 #else
+
444  uint64_t x, y;
+
445  const uint64_t *s = k;
+
446  unpack64(x, input);
+
447  unpack64(y, input + 8);
+
448  for (uint8_t round = rounds; round > 0; --round, ++s) {
+
449  x = (rightRotate8_64(x) + y) ^ s[0];
+
450  y = leftRotate3_64(y) ^ x;
+
451  }
+
452  pack64(output, x);
+
453  pack64(output + 8, y);
+
454 #endif
+
455 }
+
456 
+
457 void Speck::decryptBlock(uint8_t *output, const uint8_t *input)
+
458 {
+
459 #if USE_AVR_INLINE_ASM
+
460  uint32_t xlow, xhigh, ylow, yhigh;
+
461 
+
462  // Unpack the input into the x and y variables, converting
+
463  // from big-endian into little-endian in the process.
+
464  __asm__ __volatile__ (
+
465  "ld %D1,Z\n"
+
466  "ldd %C1,Z+1\n"
+
467  "ldd %B1,Z+2\n"
+
468  "ldd %A1,Z+3\n"
+
469  "ldd %D0,Z+4\n"
+
470  "ldd %C0,Z+5\n"
+
471  "ldd %B0,Z+6\n"
+
472  "ldd %A0,Z+7\n"
+
473  "ldd %D3,Z+8\n"
+
474  "ldd %C3,Z+9\n"
+
475  "ldd %B3,Z+10\n"
+
476  "ldd %A3,Z+11\n"
+
477  "ldd %D2,Z+12\n"
+
478  "ldd %C2,Z+13\n"
+
479  "ldd %B2,Z+14\n"
+
480  "ldd %A2,Z+15\n"
+
481  : "=r"(xlow), "=r"(xhigh), "=r"(ylow), "=r"(yhigh)
+
482  : "z"(input)
+
483  );
+
484 
+
485  // Perform all decryption rounds. Z points to the end of key schedule.
+
486  __asm__ __volatile__ (
+
487  "1:\n"
+
488  // y = rightRotate3_64(x ^ y);
+
489  "eor %A2,%A0\n" // y ^= x
+
490  "eor %B2,%B0\n"
+
491  "eor %C2,%C0\n"
+
492  "eor %D2,%D0\n"
+
493  "eor %A3,%A1\n"
+
494  "eor %B3,%B1\n"
+
495  "eor %C3,%C1\n"
+
496  "eor %D3,%D1\n"
+
497 
+
498  "bst %A2,0\n" // y = rightRotate1_64(y)
+
499  "ror %D3\n"
+
500  "ror %C3\n"
+
501  "ror %B3\n"
+
502  "ror %A3\n"
+
503  "ror %D2\n"
+
504  "ror %C2\n"
+
505  "ror %B2\n"
+
506  "ror %A2\n"
+
507  "bld %D3,7\n"
+
508 
+
509  "bst %A2,0\n" // y = rightRotate1_64(y)
+
510  "ror %D3\n"
+
511  "ror %C3\n"
+
512  "ror %B3\n"
+
513  "ror %A3\n"
+
514  "ror %D2\n"
+
515  "ror %C2\n"
+
516  "ror %B2\n"
+
517  "ror %A2\n"
+
518  "bld %D3,7\n"
+
519 
+
520  "bst %A2,0\n" // y = rightRotate1_64(y)
+
521  "ror %D3\n"
+
522  "ror %C3\n"
+
523  "ror %B3\n"
+
524  "ror %A3\n"
+
525  "ror %D2\n"
+
526  "ror %C2\n"
+
527  "ror %B2\n"
+
528  "ror %A2\n"
+
529  "bld %D3,7\n"
+
530 
+
531  // x = leftRotate8_64((x ^ *s--) - y);
+
532  "ld __tmp_reg__,-Z\n" // x ^= *s--
+
533  "eor %D1,__tmp_reg__\n"
+
534  "ld __tmp_reg__,-Z\n"
+
535  "eor %C1,__tmp_reg__\n"
+
536  "ld __tmp_reg__,-Z\n"
+
537  "eor %B1,__tmp_reg__\n"
538  "ld __tmp_reg__,-Z\n"
-
539  "eor %C1,__tmp_reg__\n"
+
539  "eor %A1,__tmp_reg__\n"
540  "ld __tmp_reg__,-Z\n"
-
541  "eor %B1,__tmp_reg__\n"
+
541  "eor %D0,__tmp_reg__\n"
542  "ld __tmp_reg__,-Z\n"
-
543  "eor %A1,__tmp_reg__\n"
+
543  "eor %C0,__tmp_reg__\n"
544  "ld __tmp_reg__,-Z\n"
-
545  "eor %D0,__tmp_reg__\n"
+
545  "eor %B0,__tmp_reg__\n"
546  "ld __tmp_reg__,-Z\n"
-
547  "eor %C0,__tmp_reg__\n"
-
548  "ld __tmp_reg__,-Z\n"
-
549  "eor %B0,__tmp_reg__\n"
-
550  "ld __tmp_reg__,-Z\n"
-
551  "eor %A0,__tmp_reg__\n"
-
552 
-
553  "sub %A0,%A2\n" // x -= y
-
554  "sbc %B0,%B2\n"
-
555  "sbc %C0,%C2\n"
-
556  "sbc %D0,%D2\n"
-
557  "sbc %A1,%A3\n"
-
558  "sbc %B1,%B3\n"
-
559  "sbc %C1,%C3\n"
-
560  "sbc %D1,%D3\n"
-
561 
-
562  "mov __tmp_reg__,%D1\n" // x = lefRotate8_64(x)
-
563  "mov %D1,%C1\n"
-
564  "mov %C1,%B1\n"
-
565  "mov %B1,%A1\n"
-
566  "mov %A1,%D0\n"
-
567  "mov %D0,%C0\n"
-
568  "mov %C0,%B0\n"
-
569  "mov %B0,%A0\n"
-
570  "mov %A0,__tmp_reg__\n"
-
571 
-
572  // Loop
-
573  "dec %5\n" // --round
-
574  "breq 2f\n"
-
575  "rjmp 1b\n"
-
576  "2:\n"
-
577  : "+r"(xlow), "+r"(xhigh), "+r"(ylow), "+r"(yhigh)
-
578  : "z"(k + rounds), "r"(rounds)
-
579  );
-
580 
-
581  // Pack the results into the output and convert back to big-endian.
-
582  __asm__ __volatile__ (
-
583  "st Z,%D1\n"
-
584  "std Z+1,%C1\n"
-
585  "std Z+2,%B1\n"
-
586  "std Z+3,%A1\n"
-
587  "std Z+4,%D0\n"
-
588  "std Z+5,%C0\n"
-
589  "std Z+6,%B0\n"
-
590  "std Z+7,%A0\n"
-
591  "std Z+8,%D3\n"
-
592  "std Z+9,%C3\n"
-
593  "std Z+10,%B3\n"
-
594  "std Z+11,%A3\n"
-
595  "std Z+12,%D2\n"
-
596  "std Z+13,%C2\n"
-
597  "std Z+14,%B2\n"
-
598  "std Z+15,%A2\n"
-
599  : : "r"(xlow), "r"(xhigh), "r"(ylow), "r"(yhigh), "z"(output)
-
600  );
-
601 #else
-
602  uint64_t x, y;
-
603  const uint64_t *s = k + rounds - 1;
-
604  unpack64(x, input);
-
605  unpack64(y, input + 8);
-
606  for (uint8_t round = rounds; round > 0; --round, --s) {
-
607  y = rightRotate3_64(x ^ y);
-
608  x = leftRotate8_64((x ^ s[0]) - y);
-
609  }
-
610  pack64(output, x);
-
611  pack64(output + 8, y);
-
612 #endif
-
613 }
-
614 
-
615 void Speck::clear()
-
616 {
-
617  clean(k);
-
618 }
-
Speck::keySize
size_t keySize() const
Default size of the key for this block cipher, in bytes.
Definition: Speck.cpp:81
-
Speck::blockSize
size_t blockSize() const
Size of a single block processed by this cipher, in bytes.
Definition: Speck.cpp:76
-
Speck::Speck
Speck()
Constructs a Speck block cipher with no initial key.
Definition: Speck.cpp:66
-
Speck::encryptBlock
void encryptBlock(uint8_t *output, const uint8_t *input)
Encrypts a single block using this cipher.
Definition: Speck.cpp:310
-
Speck::decryptBlock
void decryptBlock(uint8_t *output, const uint8_t *input)
Decrypts a single block using this cipher.
Definition: Speck.cpp:461
-
Speck::setKey
bool setKey(const uint8_t *key, size_t len)
Sets the key to use for future encryption and decryption operations.
Definition: Speck.cpp:99
-
Speck::clear
void clear()
Clears all security-sensitive state from this block cipher.
Definition: Speck.cpp:615
+
547  "eor %A0,__tmp_reg__\n"
+
548 
+
549  "sub %A0,%A2\n" // x -= y
+
550  "sbc %B0,%B2\n"
+
551  "sbc %C0,%C2\n"
+
552  "sbc %D0,%D2\n"
+
553  "sbc %A1,%A3\n"
+
554  "sbc %B1,%B3\n"
+
555  "sbc %C1,%C3\n"
+
556  "sbc %D1,%D3\n"
+
557 
+
558  "mov __tmp_reg__,%D1\n" // x = lefRotate8_64(x)
+
559  "mov %D1,%C1\n"
+
560  "mov %C1,%B1\n"
+
561  "mov %B1,%A1\n"
+
562  "mov %A1,%D0\n"
+
563  "mov %D0,%C0\n"
+
564  "mov %C0,%B0\n"
+
565  "mov %B0,%A0\n"
+
566  "mov %A0,__tmp_reg__\n"
+
567 
+
568  // Loop
+
569  "dec %5\n" // --round
+
570  "breq 2f\n"
+
571  "rjmp 1b\n"
+
572  "2:\n"
+
573  : "+r"(xlow), "+r"(xhigh), "+r"(ylow), "+r"(yhigh)
+
574  : "z"(k + rounds), "r"(rounds)
+
575  );
+
576 
+
577  // Pack the results into the output and convert back to big-endian.
+
578  __asm__ __volatile__ (
+
579  "st Z,%D1\n"
+
580  "std Z+1,%C1\n"
+
581  "std Z+2,%B1\n"
+
582  "std Z+3,%A1\n"
+
583  "std Z+4,%D0\n"
+
584  "std Z+5,%C0\n"
+
585  "std Z+6,%B0\n"
+
586  "std Z+7,%A0\n"
+
587  "std Z+8,%D3\n"
+
588  "std Z+9,%C3\n"
+
589  "std Z+10,%B3\n"
+
590  "std Z+11,%A3\n"
+
591  "std Z+12,%D2\n"
+
592  "std Z+13,%C2\n"
+
593  "std Z+14,%B2\n"
+
594  "std Z+15,%A2\n"
+
595  : : "r"(xlow), "r"(xhigh), "r"(ylow), "r"(yhigh), "z"(output)
+
596  );
+
597 #else
+
598  uint64_t x, y;
+
599  const uint64_t *s = k + rounds - 1;
+
600  unpack64(x, input);
+
601  unpack64(y, input + 8);
+
602  for (uint8_t round = rounds; round > 0; --round, --s) {
+
603  y = rightRotate3_64(x ^ y);
+
604  x = leftRotate8_64((x ^ s[0]) - y);
+
605  }
+
606  pack64(output, x);
+
607  pack64(output + 8, y);
+
608 #endif
+
609 }
+
610 
+
611 void Speck::clear()
+
612 {
+
613  clean(k);
+
614 }
+
Speck::keySize
size_t keySize() const
Default size of the key for this block cipher, in bytes.
Definition: Speck.cpp:87
+
Speck::blockSize
size_t blockSize() const
Size of a single block processed by this cipher, in bytes.
Definition: Speck.cpp:82
+
Speck::Speck
Speck()
Constructs a Speck block cipher with no initial key.
Definition: Speck.cpp:72
+
Speck::encryptBlock
void encryptBlock(uint8_t *output, const uint8_t *input)
Encrypts a single block using this cipher.
Definition: Speck.cpp:306
+
Speck::decryptBlock
void decryptBlock(uint8_t *output, const uint8_t *input)
Decrypts a single block using this cipher.
Definition: Speck.cpp:457
+
Speck::setKey
bool setKey(const uint8_t *key, size_t len)
Sets the key to use for future encryption and decryption operations.
Definition: Speck.cpp:105
+
Speck::clear
void clear()
Clears all security-sensitive state from this block cipher.
Definition: Speck.cpp:611
diff --git a/Speck_8h_source.html b/Speck_8h_source.html index 56c85a20..de4428bf 100644 --- a/Speck_8h_source.html +++ b/Speck_8h_source.html @@ -138,18 +138,18 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
48 
49 #endif
BlockCipher
Abstract base class for block ciphers.
Definition: BlockCipher.h:29
-
Speck::keySize
size_t keySize() const
Default size of the key for this block cipher, in bytes.
Definition: Speck.cpp:81
-
Speck::blockSize
size_t blockSize() const
Size of a single block processed by this cipher, in bytes.
Definition: Speck.cpp:76
-
Speck::Speck
Speck()
Constructs a Speck block cipher with no initial key.
Definition: Speck.cpp:66
+
Speck::keySize
size_t keySize() const
Default size of the key for this block cipher, in bytes.
Definition: Speck.cpp:87
+
Speck::blockSize
size_t blockSize() const
Size of a single block processed by this cipher, in bytes.
Definition: Speck.cpp:82
+
Speck::Speck
Speck()
Constructs a Speck block cipher with no initial key.
Definition: Speck.cpp:72
Speck
Speck block cipher with a 128-bit block size.
Definition: Speck.h:28
-
Speck::encryptBlock
void encryptBlock(uint8_t *output, const uint8_t *input)
Encrypts a single block using this cipher.
Definition: Speck.cpp:310
-
Speck::decryptBlock
void decryptBlock(uint8_t *output, const uint8_t *input)
Decrypts a single block using this cipher.
Definition: Speck.cpp:461
-
Speck::setKey
bool setKey(const uint8_t *key, size_t len)
Sets the key to use for future encryption and decryption operations.
Definition: Speck.cpp:99
-
Speck::clear
void clear()
Clears all security-sensitive state from this block cipher.
Definition: Speck.cpp:615
+
Speck::encryptBlock
void encryptBlock(uint8_t *output, const uint8_t *input)
Encrypts a single block using this cipher.
Definition: Speck.cpp:306
+
Speck::decryptBlock
void decryptBlock(uint8_t *output, const uint8_t *input)
Decrypts a single block using this cipher.
Definition: Speck.cpp:457
+
Speck::setKey
bool setKey(const uint8_t *key, size_t len)
Sets the key to use for future encryption and decryption operations.
Definition: Speck.cpp:105
+
Speck::clear
void clear()
Clears all security-sensitive state from this block cipher.
Definition: Speck.cpp:611
diff --git a/TextField_8cpp_source.html b/TextField_8cpp_source.html index e88742f4..e9c44f73 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 1065190c..f29c7dc6 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 5b5b26de..6a19991d 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 2fbcf6ab..064bc327 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 abbf8366..32eaa7cc 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 d1967e17..e4a556ac 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 c5091336..923f5833 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 8bbb83bd..ffac9cb5 100644 --- a/alarm_clock.html +++ b/alarm_clock.html @@ -140,7 +140,7 @@ Completed Clock diff --git a/annotated.html b/annotated.html index 580f8daa..6f595398 100644 --- a/annotated.html +++ b/annotated.html @@ -149,15 +149,16 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); oCSHA512SHA-512 hash algorithm oCSoftI2CBit-banged implementation of an I2C master oCSpeckSpeck block cipher with a 128-bit block size -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 +oCSpeckLowMemorySpeck block cipher with a 128-bit block size (low-memory version) +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 4aba381c..d70e7e96 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 c46c472c..a60449a4 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 54e7c566..40a107f3 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 bd9dbf58..4407daba 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 b6dfb432..a9bed3c8 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 ffa63195..64b2e440 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 f9b48761..1a93f151 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 d3efb1b0..3d9bb049 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 dd820b78..5dd6acbd 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 b8d275bc..51c25e29 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 b0e043a4..9f98a42e 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 f9b03912..3c0abaf4 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 ec67492c..2c72bc4d 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 a478e0c8..c722ae57 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 d9a81569..5e3e8bbd 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 8052f05f..33f597f8 100644 --- a/classAESCommon.html +++ b/classAESCommon.html @@ -322,7 +322,7 @@ Protected Member Functions diff --git a/classAuthenticatedCipher-members.html b/classAuthenticatedCipher-members.html index 44220762..d5999d0d 100644 --- a/classAuthenticatedCipher-members.html +++ b/classAuthenticatedCipher-members.html @@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classAuthenticatedCipher.html b/classAuthenticatedCipher.html index 4f94f788..f6ebfb4c 100644 --- a/classAuthenticatedCipher.html +++ b/classAuthenticatedCipher.html @@ -349,7 +349,7 @@ virtual  diff --git a/classBLAKE2b-members.html b/classBLAKE2b-members.html index d9d8b45d..1e45ebba 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 8a0e0944..bb687e19 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 5ce69a71..fb2de65a 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 eb97ee34..5ef4fcaf 100644 --- a/classBLAKE2s.html +++ b/classBLAKE2s.html @@ -536,7 +536,7 @@ Additional Inherited Members diff --git a/classBigNumberUtil-members.html b/classBigNumberUtil-members.html index d49daf8e..372dd5d4 100644 --- a/classBigNumberUtil-members.html +++ b/classBigNumberUtil-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classBigNumberUtil.html b/classBigNumberUtil.html index 52a08c90..d857985b 100644 --- a/classBigNumberUtil.html +++ b/classBigNumberUtil.html @@ -893,7 +893,7 @@ Static Public Member Functions diff --git a/classBitmap-members.html b/classBitmap-members.html index 71bef093..29d83d0c 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 3192960c..a261d9ad 100644 --- a/classBitmap.html +++ b/classBitmap.html @@ -1745,7 +1745,7 @@ class DMD diff --git a/classBlinkLED-members.html b/classBlinkLED-members.html index 3854a1c9..9f78b5ac 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 3d610de5..b6048e87 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 4aa2fb79..a4dce064 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 ea812432..0532dfe6 100644 --- a/classBlockCipher.html +++ b/classBlockCipher.html @@ -101,11 +101,12 @@ Inheritance diagram for BlockCipher:
-AESCommon -Speck -AES128 -AES192 -AES256 +AESCommon +Speck +SpeckLowMemory +AES128 +AES192 +AES256
@@ -199,7 +200,7 @@ Public Member Functions
Returns
Returns the size of a block in bytes.
See Also
keySize(), encryptBlock()
-

Implemented in Speck, and AESCommon.

+

Implemented in Speck, SpeckLowMemory, and AESCommon.

@@ -228,7 +229,7 @@ Public Member Functions

Security-sensitive information includes key schedules and any temporary state that is used by encryptBlock() or decryptBlock() which is stored in the object itself.

See Also
setKey(), encryptBlock(), decryptBlock()
-

Implemented in Speck, and AESCommon.

+

Implemented in Speck, SpeckLowMemory, and AESCommon.

@@ -274,7 +275,7 @@ Public Member Functions
See Also
encryptBlock(), blockSize()
-

Implemented in Speck, and AESCommon.

+

Implemented in Speck, SpeckLowMemory, and AESCommon.

@@ -320,7 +321,7 @@ Public Member Functions
See Also
decryptBlock(), blockSize()
-

Implemented in Speck, and AESCommon.

+

Implemented in Speck, SpeckLowMemory, and AESCommon.

@@ -349,7 +350,7 @@ Public Member Functions

This value indicates the default, or recommended, size for the key.

See Also
setKey(), blockSize()
-

Implemented in AES256, AES192, AES128, and Speck.

+

Implemented in AES256, AES192, AES128, Speck, and SpeckLowMemory.

@@ -397,7 +398,7 @@ Public Member Functions

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

See Also
keySize(), clear()
-

Implemented in AES256, AES192, AES128, and Speck.

+

Implemented in AES256, AES192, AES128, Speck, and SpeckLowMemory.

@@ -408,7 +409,7 @@ Public Member Functions diff --git a/classBlockCipher.png b/classBlockCipher.png index dea5dcbd..88f52adc 100644 Binary files a/classBlockCipher.png and b/classBlockCipher.png differ diff --git a/classBoolField-members.html b/classBoolField-members.html index a5e0b20d..a94e89f7 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 ac2bc2de..92b3ed49 100644 --- a/classBoolField.html +++ b/classBoolField.html @@ -506,7 +506,7 @@ LiquidCrystal *  diff --git a/classCBC-members.html b/classCBC-members.html index 1505b76f..bd1923a9 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 d67488f9..b34570a8 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 3d1021e2..f3640508 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 5dd61a93..46969d60 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 3a733fac..a9f0c0ee 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 635c997b..f4067d9a 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 04c30036..0a897b12 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 d1f420e3..e86cac32 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 a903dc50..6d4cc8a3 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 c3e0bfb1..e6528e66 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 798a04c1..d58ac265 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 d16cc363..2e98efb9 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 509bf19d..42f9d5c9 100644 --- a/classChaCha-members.html +++ b/classChaCha-members.html @@ -109,7 +109,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classChaCha.html b/classChaCha.html index 421c1b2e..c8612f85 100644 --- a/classChaCha.html +++ b/classChaCha.html @@ -673,7 +673,7 @@ class ChaChaPoly< diff --git a/classChaChaPoly-members.html b/classChaChaPoly-members.html index dfaec372..9dc444c5 100644 --- a/classChaChaPoly-members.html +++ b/classChaChaPoly-members.html @@ -115,7 +115,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classChaChaPoly.html b/classChaChaPoly.html index b13ca4f0..d7e9d94c 100644 --- a/classChaChaPoly.html +++ b/classChaChaPoly.html @@ -665,7 +665,7 @@ virtual  diff --git a/classCharlieplex-members.html b/classCharlieplex-members.html index 92ab5a0b..e8a55126 100644 --- a/classCharlieplex-members.html +++ b/classCharlieplex-members.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classCharlieplex.html b/classCharlieplex.html index 2945a755..cfe3b962 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 01cdab51..6d30310d 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 3f3ae39c..cc29d1be 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 d3b10a93..c2f990b1 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 a6892cab..0f48f07f 100644 --- a/classCipher.html +++ b/classCipher.html @@ -483,7 +483,7 @@ Public Member Functions diff --git a/classCurve25519-members.html b/classCurve25519-members.html index 0885a8f0..a77cc4af 100644 --- a/classCurve25519-members.html +++ b/classCurve25519-members.html @@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classCurve25519.html b/classCurve25519.html index 3226f7ba..8afcefaa 100644 --- a/classCurve25519.html +++ b/classCurve25519.html @@ -303,7 +303,7 @@ class Ed25519 diff --git a/classDMD-members.html b/classDMD-members.html index 8711f565..cfd05995 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 a4bb02ab..490306e5 100644 --- a/classDMD.html +++ b/classDMD.html @@ -755,7 +755,7 @@ Multiple panels diff --git a/classDS1307RTC-members.html b/classDS1307RTC-members.html index deef58ee..9fad2ba3 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 5a530e9b..abaca0a4 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 e0cc9bce..ad85b6d3 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 b2f9bda9..6e11c510 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 636ad372..f198a005 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 ea63dceb..7cdddf7c 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 a8ce0c28..efe962e0 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 cc883466..d9bf73db 100644 --- a/classEEPROM24.html +++ b/classEEPROM24.html @@ -431,7 +431,7 @@ Public Member Functions diff --git a/classEd25519-members.html b/classEd25519-members.html index c10ef24e..2aeecaf4 100644 --- a/classEd25519-members.html +++ b/classEd25519-members.html @@ -97,7 +97,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classEd25519.html b/classEd25519.html index 937f824b..157d3a07 100644 --- a/classEd25519.html +++ b/classEd25519.html @@ -354,7 +354,7 @@ Static Public Member Functions diff --git a/classField-members.html b/classField-members.html index 78eb7a5f..f6486cc7 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 02335f49..d4d080ee 100644 --- a/classField.html +++ b/classField.html @@ -424,7 +424,7 @@ class Form diff --git a/classForm-members.html b/classForm-members.html index 7da1a51e..9ecc3de9 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 8049ad3f..809ed08a 100644 --- a/classForm.html +++ b/classForm.html @@ -485,7 +485,7 @@ class Field diff --git a/classGCM-members.html b/classGCM-members.html index ccd662c7..15dd61f0 100644 --- a/classGCM-members.html +++ b/classGCM-members.html @@ -119,7 +119,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classGCM.html b/classGCM.html index 4e7f4c60..17e39323 100644 --- a/classGCM.html +++ b/classGCM.html @@ -223,7 +223,7 @@ class GCM< T > diff --git a/classGCMCommon-members.html b/classGCMCommon-members.html index 6ebd5b7c..e3d76c1f 100644 --- a/classGCMCommon-members.html +++ b/classGCMCommon-members.html @@ -118,7 +118,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classGCMCommon.html b/classGCMCommon.html index a4f3a270..5722b8cb 100644 --- a/classGCMCommon.html +++ b/classGCMCommon.html @@ -736,7 +736,7 @@ Protected Member Functions diff --git a/classGHASH-members.html b/classGHASH-members.html index 8f72f78e..3ff5c23e 100644 --- a/classGHASH-members.html +++ b/classGHASH-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classGHASH.html b/classGHASH.html index 51923f08..254bc581 100644 --- a/classGHASH.html +++ b/classGHASH.html @@ -265,7 +265,7 @@ void  diff --git a/classHash-members.html b/classHash-members.html index 1ad4c8b5..b910e544 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 038e2791..09d9ebb9 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 91305121..4fc8fc2a 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 242d2796..e07338cf 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 624b8b46..ff257a6b 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 0123519d..a21346b9 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 fc6471e9..31c3a5b8 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 6cbdc391..081380b2 100644 --- a/classIntField.html +++ b/classIntField.html @@ -647,7 +647,7 @@ LiquidCrystal *  diff --git a/classKeccakCore-members.html b/classKeccakCore-members.html index 34c9aba5..17604277 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 5aaeedd5..2c057de8 100644 --- a/classKeccakCore.html +++ b/classKeccakCore.html @@ -425,7 +425,7 @@ void  diff --git a/classLCD-members.html b/classLCD-members.html index 1ac82f22..3bf965f9 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 a67e2ffe..845740ef 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 91c532bd..ec48abf0 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 f2afe14e..d672ec9e 100644 --- a/classListField.html +++ b/classListField.html @@ -411,7 +411,7 @@ LiquidCrystal *  diff --git a/classMelody-members.html b/classMelody-members.html index ca69e31d..97737e95 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 06a26966..60ab731a 100644 --- a/classMelody.html +++ b/classMelody.html @@ -371,7 +371,7 @@ bool  diff --git a/classNoiseSource-members.html b/classNoiseSource-members.html index f301b76e..9d6699a0 100644 --- a/classNoiseSource-members.html +++ b/classNoiseSource-members.html @@ -99,7 +99,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classNoiseSource.html b/classNoiseSource.html index 0c806097..608a5aa7 100644 --- a/classNoiseSource.html +++ b/classNoiseSource.html @@ -289,7 +289,7 @@ Protected Member Functions diff --git a/classOFB-members.html b/classOFB-members.html index ed3e8b4b..ed161d3a 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 4ce36677..29a3542f 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 6a5fdc49..cc8bec1c 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 4d72543b..5c5cb936 100644 --- a/classOFBCommon.html +++ b/classOFBCommon.html @@ -534,7 +534,7 @@ Protected Member Functions diff --git a/classPoly1305-members.html b/classPoly1305-members.html index 4f3ae84f..46ebd2bd 100644 --- a/classPoly1305-members.html +++ b/classPoly1305-members.html @@ -105,7 +105,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classPoly1305.html b/classPoly1305.html index 7072047f..c22af4f5 100644 --- a/classPoly1305.html +++ b/classPoly1305.html @@ -280,7 +280,7 @@ void  diff --git a/classRNGClass-members.html b/classRNGClass-members.html index 23a21b89..836d7a49 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 cd23bff7..975e4e0b 100644 --- a/classRNGClass.html +++ b/classRNGClass.html @@ -519,7 +519,7 @@ static const int  diff --git a/classRTC-members.html b/classRTC-members.html index 9ae9d854..fc01cf6e 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 5f32a97a..567c9e37 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 3dfa101f..65d15a30 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 25f03682..cadee281 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 0cecb1b3..e4d37463 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 e8eb9142..b8071b93 100644 --- a/classRingOscillatorNoiseSource-members.html +++ b/classRingOscillatorNoiseSource-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classRingOscillatorNoiseSource.html b/classRingOscillatorNoiseSource.html index 7e57a1a5..589284b1 100644 --- a/classRingOscillatorNoiseSource.html +++ b/classRingOscillatorNoiseSource.html @@ -253,7 +253,7 @@ Additional Inherited Members diff --git a/classSHA1-members.html b/classSHA1-members.html index e0bb7dfd..eb40d872 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 c01bb5d3..3ac73def 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 6cc0670b..75d27f94 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 bef288f2..00a1b4d8 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 8fefc6d3..10d28ece 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 156fdb7c..5ae57deb 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 f044e5f4..8888cbfc 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 d05691bb..92e29ff6 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 572409e3..a09ee1b7 100644 --- a/classSHA512-members.html +++ b/classSHA512-members.html @@ -112,7 +112,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classSHA512.html b/classSHA512.html index db0c6520..bce3479a 100644 --- a/classSHA512.html +++ b/classSHA512.html @@ -513,7 +513,7 @@ Additional Inherited Members diff --git a/classSoftI2C-members.html b/classSoftI2C-members.html index f41d0216..e5b1b74c 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 34780814..4b6cd6ac 100644 --- a/classSoftI2C.html +++ b/classSoftI2C.html @@ -346,7 +346,7 @@ unsigned int  diff --git a/classSpeck-members.html b/classSpeck-members.html index 8a3eab5a..9f41cd77 100644 --- a/classSpeck-members.html +++ b/classSpeck-members.html @@ -103,7 +103,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classSpeck.html b/classSpeck.html index 6b7644dc..0811ee51 100644 --- a/classSpeck.html +++ b/classSpeck.html @@ -142,7 +142,9 @@ Public Member Functions

Speck is a family of lightweight block ciphers designed by the National Security Agency (NSA). The ciphers are highly optimized for software implementation on microcontrollers.

This class implements the Speck family that uses 128-bit block sizes with 128-bit, 192-bit, or 256-bit key sizes. Other Speck families support smaller block sizes of 32, 48, 64, or 96 bits but such block sizes are too small for use in modern cryptosystems.

Note
Current crytoanalysis (up until 2015) has not revealed any obvious weaknesses in the full-round version of Speck. But if you are wary of ciphers designed by the NSA, then use ChaCha or AES instead.
-

References: https://en.wikipedia.org/wiki/Speck_%28cipher%29, http://eprint.iacr.org/2013/404

+

The SpeckLowMemory class provides an alternative implementation that has reduced RAM and flash size requirements at the cost of some encryption performance.

+

References: https://en.wikipedia.org/wiki/Speck_%28cipher%29, http://eprint.iacr.org/2013/404

+
See Also
SpeckLowMemory

Definition at line 28 of file Speck.h.

Constructor & Destructor Documentation

@@ -162,7 +164,7 @@ Public Member Functions

Constructs a Speck block cipher with no initial key.

This constructor must be followed by a call to setKey() before the block cipher can be used for encryption or decryption.

-

Definition at line 66 of file Speck.cpp.

+

Definition at line 72 of file Speck.cpp.

@@ -194,7 +196,7 @@ Public Member Functions

Implements BlockCipher.

-

Definition at line 76 of file Speck.cpp.

+

Definition at line 82 of file Speck.cpp.

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

Implements BlockCipher.

-

Definition at line 615 of file Speck.cpp.

+

Definition at line 611 of file Speck.cpp.

@@ -273,7 +275,7 @@ Public Member Functions

Implements BlockCipher.

-

Definition at line 461 of file Speck.cpp.

+

Definition at line 457 of file Speck.cpp.

@@ -321,7 +323,7 @@ Public Member Functions

Implements BlockCipher.

-

Definition at line 310 of file Speck.cpp.

+

Definition at line 306 of file Speck.cpp.

@@ -352,7 +354,7 @@ Public Member Functions

Implements BlockCipher.

-

Definition at line 81 of file Speck.cpp.

+

Definition at line 87 of file Speck.cpp.

@@ -402,7 +404,7 @@ Public Member Functions

Implements BlockCipher.

-

Definition at line 99 of file Speck.cpp.

+

Definition at line 105 of file Speck.cpp.

@@ -413,7 +415,7 @@ Public Member Functions diff --git a/classSpeckLowMemory-members.html b/classSpeckLowMemory-members.html new file mode 100644 index 00000000..72b8cb49 --- /dev/null +++ b/classSpeckLowMemory-members.html @@ -0,0 +1,111 @@ + + + + + + +ArduinoLibs: Member List + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+
+
+
SpeckLowMemory Member List
+
+
+ +

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

+ + + + + + + + + + + +
BlockCipher()BlockCipher
blockSize() const SpeckLowMemoryvirtual
clear()SpeckLowMemoryvirtual
decryptBlock(uint8_t *output, const uint8_t *input)SpeckLowMemoryvirtual
encryptBlock(uint8_t *output, const uint8_t *input)SpeckLowMemoryvirtual
keySize() const SpeckLowMemoryvirtual
setKey(const uint8_t *key, size_t len)SpeckLowMemoryvirtual
SpeckLowMemory()SpeckLowMemory
~BlockCipher()BlockCiphervirtual
~SpeckLowMemory() (defined in SpeckLowMemory)SpeckLowMemoryvirtual
+ + + + diff --git a/classSpeckLowMemory.html b/classSpeckLowMemory.html new file mode 100644 index 00000000..53fd377a --- /dev/null +++ b/classSpeckLowMemory.html @@ -0,0 +1,427 @@ + + + + + + +ArduinoLibs: SpeckLowMemory Class Reference + + + + + + + + + +
+
+ + + + + + +
+
ArduinoLibs +
+
+
+ + + + + + + + + +
+ +
+ +
+
+ +
+
SpeckLowMemory Class Reference
+
+
+ +

Speck block cipher with a 128-bit block size (low-memory version). + More...

+ +

#include <SpeckLowMemory.h>

+
+Inheritance diagram for SpeckLowMemory:
+
+
+ + +BlockCipher + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SpeckLowMemory ()
 Constructs a low-memory Speck block cipher with no initial key. More...
 
size_t blockSize () const
 Size of a single block processed by this cipher, in bytes. More...
 
size_t keySize () const
 Default size of the key for this block cipher, in bytes. More...
 
bool setKey (const uint8_t *key, size_t len)
 Sets the key to use for future encryption and decryption operations. More...
 
void encryptBlock (uint8_t *output, const uint8_t *input)
 Encrypts a single block using this cipher. More...
 
void decryptBlock (uint8_t *output, const uint8_t *input)
 Decrypts a single block using this cipher. More...
 
void clear ()
 Clears all security-sensitive state from this block cipher. More...
 
- Public Member Functions inherited from BlockCipher
BlockCipher ()
 Constructs a block cipher.
 
virtual ~BlockCipher ()
 Destroys this block cipher object. More...
 
+

Detailed Description

+

Speck block cipher with a 128-bit block size (low-memory version).

+

This class differs from the Speck class in the following ways:

+
    +
  • RAM requirements are vastly reduced. The key (up to 256 bits) is stored directly and then expanded to the full key schedule round by round. The setKey() method is very fast because of this.
  • +
  • Performance of encryptBlock() is slower than for Speck due to expanding the key on the fly rather than ahead of time.
  • +
  • The decryptBlock() function is not supported, which means that CBC mode cannot be used but the CTR, CFB, OFB, and GCM modes can be used.
  • +
+

This class is useful when RAM is at a premium, CBC mode is not required, and reduced encryption performance is not a hindrance to the application. Even though the performance of encryptBlock() is reduced, this class is still faster than AES with equivalent key sizes.

+

See the documentation for the Speck class for more information on the Speck family of block ciphers.

+

References: https://en.wikipedia.org/wiki/Speck_%28cipher%29, http://eprint.iacr.org/2013/404

+
See Also
Speck
+ +

Definition at line 28 of file SpeckLowMemory.h.

+

Constructor & Destructor Documentation

+ +
+
+ + + + + + + +
SpeckLowMemory::SpeckLowMemory ()
+
+ +

Constructs a low-memory Speck block cipher with no initial key.

+

This constructor must be followed by a call to setKey() before the block cipher can be used for encryption.

+ +

Definition at line 73 of file SpeckLowMemory.cpp.

+ +
+
+

Member Function Documentation

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

Size of a single block processed by this cipher, in bytes.

+
Returns
Returns the size of a block in bytes.
+
See Also
keySize(), encryptBlock()
+ +

Implements BlockCipher.

+ +

Definition at line 83 of file SpeckLowMemory.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + +
void SpeckLowMemory::clear ()
+
+virtual
+
+ +

Clears all security-sensitive state from this block cipher.

+

Security-sensitive information includes key schedules and any temporary state that is used by encryptBlock() or decryptBlock() which is stored in the object itself.

+
See Also
setKey(), encryptBlock(), decryptBlock()
+ +

Implements BlockCipher.

+ +

Definition at line 542 of file SpeckLowMemory.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void SpeckLowMemory::decryptBlock (uint8_t * output,
const uint8_t * input 
)
+
+virtual
+
+ +

Decrypts a single block using this cipher.

+
Parameters
+ + + +
outputThe output buffer to put the plaintext into. Must be at least blockSize() bytes in length.
inputThe input buffer to read the ciphertext from which is allowed to overlap with output. Must be at least blockSize() bytes in length.
+
+
+
Note
This function is not supported for SpeckLowMemory, which means that CBC mode cannot be used but that the CTR, CFB, OFB, and GCM modes can be used.
+ +

Implements BlockCipher.

+ +

Definition at line 537 of file SpeckLowMemory.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void SpeckLowMemory::encryptBlock (uint8_t * output,
const uint8_t * input 
)
+
+virtual
+
+ +

Encrypts a single block using this cipher.

+
Parameters
+ + + +
outputThe output buffer to put the ciphertext into. Must be at least blockSize() bytes in length.
inputThe input buffer to read the plaintext from which is allowed to overlap with output. Must be at least blockSize() bytes in length.
+
+
+
See Also
decryptBlock(), blockSize()
+ +

Implements BlockCipher.

+ +

Definition at line 153 of file SpeckLowMemory.cpp.

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

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

+

This value indicates the default, or recommended, size for the key.

+
See Also
setKey(), blockSize()
+ +

Implements BlockCipher.

+ +

Definition at line 88 of file SpeckLowMemory.cpp.

+ +
+
+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool SpeckLowMemory::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.
+
+
+
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.

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

Implements BlockCipher.

+ +

Definition at line 106 of file SpeckLowMemory.cpp.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/classSpeckLowMemory.png b/classSpeckLowMemory.png new file mode 100644 index 00000000..0a9cfa63 Binary files /dev/null and b/classSpeckLowMemory.png differ diff --git a/classTextField-members.html b/classTextField-members.html index c506412d..6123006e 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 2f7d4b7f..c3e53d70 100644 --- a/classTextField.html +++ b/classTextField.html @@ -343,7 +343,7 @@ LiquidCrystal *  diff --git a/classTimeField-members.html b/classTimeField-members.html index 9f8c8810..1118d044 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 448d3e3d..25385f55 100644 --- a/classTimeField.html +++ b/classTimeField.html @@ -541,7 +541,7 @@ LiquidCrystal *  diff --git a/classTransistorNoiseSource-members.html b/classTransistorNoiseSource-members.html index 71f7b607..27ab6e68 100644 --- a/classTransistorNoiseSource-members.html +++ b/classTransistorNoiseSource-members.html @@ -101,7 +101,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/classTransistorNoiseSource.html b/classTransistorNoiseSource.html index c1243fbb..aef02892 100644 --- a/classTransistorNoiseSource.html +++ b/classTransistorNoiseSource.html @@ -280,7 +280,7 @@ Additional Inherited Members diff --git a/classes.html b/classes.html index 63b4022c..caff8127 100644 --- a/classes.html +++ b/classes.html @@ -116,24 +116,24 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); OFB   SoftI2C    BlinkLED   DS1307RTC   OFBCommon   Speck    BlockCipher   DS3231RTC   I2CMaster   
  P  
-
  T  
+SpeckLowMemory    +BoolField   DS3232RTC   IntField   
  T  
-BoolField   DS3232RTC   IntField   
  C  
  E  
-IRreceiver   Poly1305   TextField    +IRreceiver   Poly1305   
  K  
  R  
-TimeField    -CBC   Ed25519   TransistorNoiseSource    -CBCCommon   EEPROM24   KeccakCore   RingOscillatorNoiseSource    +TextField    +CBC   Ed25519   TimeField    +CBCCommon   EEPROM24   KeccakCore   RingOscillatorNoiseSource   TransistorNoiseSource   
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 5c02c862..7c989fb5 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 77193943..8a377101 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 6186351b..e4a40196 100644 --- a/crypto.html +++ b/crypto.html @@ -93,7 +93,7 @@ Supported Algorithms

All cryptographic algorithms have been optimized for 8-bit Arduino platforms like the Uno. Memory usage is also reduced, particularly for SHA1, SHA256, and SHA512 which save 256, 192, and 512 bytes respectively over traditional implementations. For all algorithms, static sbox tables and the like are placed into program memory to further reduce data memory usage.

ChaCha with 20 rounds and 256-bit keys is the recommended symmetric encryption algorithm because it is twice as fast as AES128, constant-time, and much more secure. AES128, AES192, and AES256 are provided for use in applications where compatibility with other systems is desirable.

-

If code size is an issue for your application (for example on very low end Arduino variants), then Speck on AVR is less than half the code size of ChaCha, at the cost of more data memory for the state and longer key setup times.

+

If code size is an issue for your application (for example on very low end Arduino variants), then Speck on AVR is less than half the code size of ChaCha, at the cost of more data memory for the state and longer key setup times. The SpeckLowMemory class is even smaller at the cost of some performance when encrypting.

BLAKE2s and BLAKE2b are variations on the ChaCha stream cipher, designed for hashing, with 256-bit and 512-bit hash outputs respectively. They are intended as high performance replacements for SHA256 and SHA512 for when speed is critical but exact bit-compatibility of hash values is not.

Examples and other topics

@@ -121,11 +121,17 @@ Performance on AVR ChaCha (8 rounds)8.13us8.14us43.74us132 -Speck (128-bit key, ECB mode)10.72us11.09us304.56us275 +Speck (128-bit key, ECB mode)10.72us11.09us287.02us275 -Speck (192-bit key, ECB mode)11.03us11.42us316.32us275 +Speck (192-bit key, ECB mode)11.03us11.42us298.21us275 -Speck (256-bit key, ECB mode)11.35us11.74us328.33us275 +Speck (256-bit key, ECB mode)11.35us11.74us309.66us275 + +SpeckLowMemory (128-bit key, ECB mode)35.25us10.22us35 + +SpeckLowMemory (192-bit key, ECB mode)36.56us13.62us35 + +SpeckLowMemory (256-bit key, ECB mode)37.87us16.89us35 @@ -207,11 +213,17 @@ Performance on ARM ChaCha (8 rounds)0.62us0.62us4.96us136 -Speck (128-bit key, ECB mode)0.88us1.17us37.54us288 +Speck (128-bit key, ECB mode)0.97us0.96us36.80us288 -Speck (192-bit key, ECB mode)0.90us1.20us38.92us288 +Speck (192-bit key, ECB mode)1.00us0.98us38.14us288 -Speck (256-bit key, ECB mode)0.93us1.23us40.10us288 +Speck (256-bit key, ECB mode)1.03us1.01us39.31us288 + +SpeckLowMemory (128-bit key, ECB mode)2.72us1.47us48 + +SpeckLowMemory (192-bit key, ECB mode)2.81us1.54us48 + +SpeckLowMemory (256-bit key, ECB mode)2.90us1.83us48 @@ -276,7 +288,7 @@ Performance on ARM diff --git a/crypto_8dox.html b/crypto_8dox.html index 7483e6ce..07edb915 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 5979ef62..8fdd3001 100644 --- a/crypto_rng.html +++ b/crypto_rng.html @@ -184,7 +184,7 @@ Destroying secret data diff --git a/crypto_rng_ring.html b/crypto_rng_ring.html index c99927a9..ce003cbb 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 7163d4d7..2a94585c 100644 --- a/dir_1586d320a3b1e622174530fde769cda9.html +++ b/dir_1586d320a3b1e622174530fde769cda9.html @@ -102,7 +102,7 @@ Files diff --git a/dir_3dd03323535933fb3f714c41ff7a94da.html b/dir_3dd03323535933fb3f714c41ff7a94da.html index dfc709ba..94b68de1 100644 --- a/dir_3dd03323535933fb3f714c41ff7a94da.html +++ b/dir_3dd03323535933fb3f714c41ff7a94da.html @@ -94,7 +94,7 @@ Files diff --git a/dir_48f64e79f12bd77ba047e9e436ec978c.html b/dir_48f64e79f12bd77ba047e9e436ec978c.html index 52a425fd..dc34f8ff 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 a891315e..01377ff4 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 4a63c28e..8cf1cfc0 100644 --- a/dir_6591a2127a29f6cea3994dcb5b0596d1.html +++ b/dir_6591a2127a29f6cea3994dcb5b0596d1.html @@ -106,7 +106,7 @@ Files diff --git a/dir_7e6ab9b017486261fe80629d442521f0.html b/dir_7e6ab9b017486261fe80629d442521f0.html index 1213d8e3..d8178f9b 100644 --- a/dir_7e6ab9b017486261fe80629d442521f0.html +++ b/dir_7e6ab9b017486261fe80629d442521f0.html @@ -94,7 +94,7 @@ Files diff --git a/dir_9a34040863d1190c0e01b23e6b44de01.html b/dir_9a34040863d1190c0e01b23e6b44de01.html index cc9e00e1..8d8eae7d 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 c93f7582..479263a7 100644 --- a/dir_bc0718b08fb2015b8e59c47b2805f60c.html +++ b/dir_bc0718b08fb2015b8e59c47b2805f60c.html @@ -112,7 +112,7 @@ Directories diff --git a/dir_be059bf9978ae156837504b1b8a7568c.html b/dir_be059bf9978ae156837504b1b8a7568c.html index caad5d64..4fe6ff91 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 b006b8e1..a0fcce9a 100644 --- a/dir_e2ce51835550ba18edf07a8311722290.html +++ b/dir_e2ce51835550ba18edf07a8311722290.html @@ -204,11 +204,15 @@ Files   file  Speck.h [code]   +file  SpeckLowMemory.cpp [code] +  +file  SpeckLowMemory.h [code] diff --git a/dir_f34881fcf60f680b800190d5274dfaea.html b/dir_f34881fcf60f680b800190d5274dfaea.html index a0e301c1..dd710d70 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 5018b989..21c842e6 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 2fbec172..70f1a5f9 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 8be4e373..921a0a4a 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 963eb1e1..5c6f1d41 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 6d7d78fa..01fac624 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 7c72146f..45028ddc 100644 --- a/files.html +++ b/files.html @@ -194,18 +194,20 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); o*SoftI2C.h o*Speck.cpp o*Speck.h -o*TextField.cpp -o*TextField.h -o*TimeField.cpp -o*TimeField.h -o*TransistorNoiseSource.cpp -\*TransistorNoiseSource.h +o*SpeckLowMemory.cpp +o*SpeckLowMemory.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 aae7c23f..97744c20 100644 --- a/functions.html +++ b/functions.html @@ -189,7 +189,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_b.html b/functions_b.html index 79e03a81..6d485140 100644 --- a/functions_b.html +++ b/functions_b.html @@ -169,9 +169,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , SHA3_512 , SHA512 , Speck +, SpeckLowMemory
  • BoolField() -: BoolField +: BoolField
  • byteCount() : DS1307RTC @@ -182,7 +183,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_c.html b/functions_c.html index b5cb37c4..90845215 100644 --- a/functions_c.html +++ b/functions_c.html @@ -190,6 +190,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , SHA3_512 , SHA512 , Speck +, SpeckLowMemory
  • Color : Bitmap @@ -221,7 +222,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_d.html b/functions_d.html index a26af915..6a8f0f01 100644 --- a/functions_d.html +++ b/functions_d.html @@ -153,6 +153,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : AESCommon , BlockCipher , Speck +, SpeckLowMemory
  • defaultField() : Form @@ -228,7 +229,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : Bitmap
  • drawInvertedBitmap() -: Bitmap +: Bitmap
  • drawLine() : Bitmap @@ -252,7 +253,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_e.html b/functions_e.html index cd6e1184..f850ff83 100644 --- a/functions_e.html +++ b/functions_e.html @@ -160,6 +160,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : AESCommon , BlockCipher , Speck +, SpeckLowMemory
  • endWrite() : I2CMaster @@ -187,7 +188,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_enum.html b/functions_enum.html index 0b02ea20..fe1dc68f 100644 --- a/functions_enum.html +++ b/functions_enum.html @@ -104,7 +104,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_eval.html b/functions_eval.html index 7e54aa16..80edf45c 100644 --- a/functions_eval.html +++ b/functions_eval.html @@ -107,7 +107,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_f.html b/functions_f.html index 7b433e3b..0032623b 100644 --- a/functions_f.html +++ b/functions_f.html @@ -183,7 +183,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func.html b/functions_func.html index c75e4f87..a8f30a33 100644 --- a/functions_func.html +++ b/functions_func.html @@ -182,7 +182,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_b.html b/functions_func_b.html index 823f41b5..96a2438e 100644 --- a/functions_func_b.html +++ b/functions_func_b.html @@ -159,6 +159,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , SHA3_512 , SHA512 , Speck +, SpeckLowMemory
  • BoolField() : BoolField @@ -172,7 +173,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_c.html b/functions_func_c.html index def19ccb..172020c8 100644 --- a/functions_func_c.html +++ b/functions_func_c.html @@ -189,6 +189,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , SHA3_512 , SHA512 , Speck +, SpeckLowMemory
  • command() : IRreceiver @@ -217,7 +218,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_d.html b/functions_func_d.html index 5ae0258e..12d35108 100644 --- a/functions_func_d.html +++ b/functions_func_d.html @@ -142,6 +142,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : AESCommon , BlockCipher , Speck +, SpeckLowMemory
  • defaultField() : Form @@ -235,7 +236,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_e.html b/functions_func_e.html index 2f82e8df..58fc0134 100644 --- a/functions_func_e.html +++ b/functions_func_e.html @@ -159,6 +159,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); : AESCommon , BlockCipher , Speck +, SpeckLowMemory
  • endWrite() : I2CMaster @@ -186,7 +187,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_f.html b/functions_func_f.html index 00095b23..c38f6ecd 100644 --- a/functions_func_f.html +++ b/functions_func_f.html @@ -176,7 +176,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_g.html b/functions_func_g.html index 6c381de3..ad6fa8c4 100644 --- a/functions_func_g.html +++ b/functions_func_g.html @@ -141,7 +141,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_h.html b/functions_func_h.html index 3b8bfae4..acfb37a3 100644 --- a/functions_func_h.html +++ b/functions_func_h.html @@ -157,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_i.html b/functions_func_i.html index 12888c9d..b1cd86d3 100644 --- a/functions_func_i.html +++ b/functions_func_i.html @@ -172,7 +172,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_k.html b/functions_func_k.html index 6e3a94f5..6358c68b 100644 --- a/functions_func_k.html +++ b/functions_func_k.html @@ -139,12 +139,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , GCMCommon , OFBCommon , Speck +, SpeckLowMemory
  • diff --git a/functions_func_l.html b/functions_func_l.html index d80b43fe..66b37be6 100644 --- a/functions_func_l.html +++ b/functions_func_l.html @@ -151,7 +151,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_m.html b/functions_func_m.html index 9c8a43ac..4fd09c6c 100644 --- a/functions_func_m.html +++ b/functions_func_m.html @@ -148,7 +148,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_n.html b/functions_func_n.html index a6f67c9a..05a24483 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 cf10c2d6..af26de5f 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 4f3aba1d..f4e70afe 100644 --- a/functions_func_p.html +++ b/functions_func_p.html @@ -164,7 +164,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_r.html b/functions_func_r.html index 9c711bb2..38ffcdee 100644 --- a/functions_func_r.html +++ b/functions_func_r.html @@ -213,7 +213,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_s.html b/functions_func_s.html index 2b12cc08..4ab77f93 100644 --- a/functions_func_s.html +++ b/functions_func_s.html @@ -207,6 +207,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , GCMCommon , OFBCommon , Speck +, SpeckLowMemory
  • setLabel() : Field @@ -302,6 +303,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • Speck() : Speck
  • +
  • SpeckLowMemory() +: SpeckLowMemory +
  • startRead() : I2CMaster , SoftI2C @@ -353,7 +357,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_t.html b/functions_func_t.html index 25008d75..bf10ea61 100644 --- a/functions_func_t.html +++ b/functions_func_t.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_u.html b/functions_func_u.html index 6e782c15..6c68cfa1 100644 --- a/functions_func_u.html +++ b/functions_func_u.html @@ -148,7 +148,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_v.html b/functions_func_v.html index 94814ed5..a8bfea7c 100644 --- a/functions_func_v.html +++ b/functions_func_v.html @@ -136,7 +136,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_w.html b/functions_func_w.html index fb7eef0c..e6d4af09 100644 --- a/functions_func_w.html +++ b/functions_func_w.html @@ -157,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_func_~.html b/functions_func_~.html index 0c41f2d6..fbc684c1 100644 --- a/functions_func_~.html +++ b/functions_func_~.html @@ -207,7 +207,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_g.html b/functions_g.html index 6241cdf2..10c29473 100644 --- a/functions_g.html +++ b/functions_g.html @@ -142,7 +142,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_h.html b/functions_h.html index a4cb84ac..b05993ae 100644 --- a/functions_h.html +++ b/functions_h.html @@ -162,7 +162,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_i.html b/functions_i.html index 583aaac2..9a3a1c0f 100644 --- a/functions_i.html +++ b/functions_i.html @@ -176,7 +176,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_k.html b/functions_k.html index feb2b039..03ec4b5a 100644 --- a/functions_k.html +++ b/functions_k.html @@ -140,12 +140,13 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , GCMCommon , OFBCommon , Speck +, SpeckLowMemory
  • diff --git a/functions_l.html b/functions_l.html index 095242ac..d3e8f4d0 100644 --- a/functions_l.html +++ b/functions_l.html @@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_m.html b/functions_m.html index 6bfb9863..3f2f74a0 100644 --- a/functions_m.html +++ b/functions_m.html @@ -156,7 +156,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_n.html b/functions_n.html index 18b0006f..5eb04495 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 dfc7f913..a296f7b4 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 acc9396a..2defba01 100644 --- a/functions_p.html +++ b/functions_p.html @@ -168,7 +168,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_r.html b/functions_r.html index 5a0d0287..d2a1301a 100644 --- a/functions_r.html +++ b/functions_r.html @@ -214,7 +214,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_s.html b/functions_s.html index 3c26b5c9..77003e62 100644 --- a/functions_s.html +++ b/functions_s.html @@ -218,6 +218,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); , GCMCommon , OFBCommon , Speck +, SpeckLowMemory
  • setLabel() : Field @@ -313,6 +314,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
  • Speck() : Speck
  • +
  • SpeckLowMemory() +: SpeckLowMemory +
  • startRead() : I2CMaster , SoftI2C @@ -364,7 +368,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_t.html b/functions_t.html index 8fc7c1eb..a3e21491 100644 --- a/functions_t.html +++ b/functions_t.html @@ -153,7 +153,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_type.html b/functions_type.html index 1e2f3fb2..dffae50f 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 8ea18cfb..4219ba68 100644 --- a/functions_u.html +++ b/functions_u.html @@ -149,7 +149,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_v.html b/functions_v.html index 5d728a28..dcb2932a 100644 --- a/functions_v.html +++ b/functions_v.html @@ -137,7 +137,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/functions_vars.html b/functions_vars.html index 4808e2ba..50956856 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 ed713d6a..ce5b7924 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 f50dbe57..160abb21 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 5ff40ae3..21345816 100644 --- a/functions_~.html +++ b/functions_~.html @@ -208,7 +208,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/group__power__save.html b/group__power__save.html index f41245f0..dc2a2e94 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 e0c119b5..3f5b18a3 100644 --- a/hierarchy.html +++ b/hierarchy.html @@ -98,67 +98,68 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); ||oCAES128AES block cipher with 128-bit keys ||oCAES192AES block cipher with 192-bit keys ||\CAES256AES block cipher with 256-bit keys -|\CSpeckSpeck block cipher with a 128-bit block size -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 -|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 -oCEd25519Digital signatures 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 -|oCBoolFieldField that manages the input of a boolean value -|oCIntFieldField that manages the input of an integer value -|oCListFieldField that manages selection from a static list of items -|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 -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 +|oCSpeckSpeck block cipher with a 128-bit block size +|\CSpeckLowMemorySpeck block cipher with a 128-bit block size (low-memory version) +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 +|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 +oCEd25519Digital signatures 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 +|oCBoolFieldField that manages the input of a boolean value +|oCIntFieldField that manages the input of an integer value +|oCListFieldField that manages selection from a static list of items +|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 +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 689edcfb..ab56fefa 100644 --- a/index.html +++ b/index.html @@ -154,7 +154,7 @@ Other diff --git a/ir-dumpir_8dox.html b/ir-dumpir_8dox.html index 2a502c29..81c8b87f 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 c7e6a9b3..e089407b 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 a53f36f9..34a59bd3 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 983b3768..8da705c6 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 692a5ba5..95c55881 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 73cc4d6c..fa4cdd87 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 12c4629c..b614903f 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 a53ac896..5a3c53ed 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 696be280..d2111013 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 07e343bd..50e66513 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 730a6d2c..8b453052 100644 --- a/pages.html +++ b/pages.html @@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search'); diff --git a/search/all_1.js b/search/all_1.js index 5c1ee1b4..04bd1720 100644 --- a/search/all_1.js +++ b/search/all_1.js @@ -17,7 +17,7 @@ var searchData= ['blinking_20led_20example',['Blinking LED Example',['../blink_blink.html',1,'']]], ['blinkled',['BlinkLED',['../classBlinkLED.html',1,'BlinkLED'],['../classBlinkLED.html#afc33958651e7ce6dceb428ea654c2c2f',1,'BlinkLED::BlinkLED()']]], ['blockcipher',['BlockCipher',['../classBlockCipher.html',1,'BlockCipher'],['../classBlockCipher.html#adc3d7cba116cbea9ad017f4cded6fe2f',1,'BlockCipher::BlockCipher()']]], - ['blocksize',['blockSize',['../classAESCommon.html#ae26afdcc6d18e8888974acae16df1413',1,'AESCommon::blockSize()'],['../classBLAKE2b.html#abec1b2320c3afaed12a29cf081b95fe2',1,'BLAKE2b::blockSize()'],['../classBLAKE2s.html#a9b5403734c20a0591d72a98912e4a305',1,'BLAKE2s::blockSize()'],['../classBlockCipher.html#a7059a310487c128db034b0ce0ad425a0',1,'BlockCipher::blockSize()'],['../classHash.html#a4e4297812e3483410556830fe5d47bdf',1,'Hash::blockSize()'],['../classKeccakCore.html#a3742ed39151811b5d1c263c75ee5b20a',1,'KeccakCore::blockSize()'],['../classSHA1.html#a816e3fd1a02cf1ecc67866cd8c7c309a',1,'SHA1::blockSize()'],['../classSHA256.html#a71bbd9064f9d6191d0647f867953a858',1,'SHA256::blockSize()'],['../classSHA3__256.html#a88a50ab6c2d4ad105cda2dd504d96e7c',1,'SHA3_256::blockSize()'],['../classSHA3__512.html#a4493a717bad8fa5cd35fe3aa36f25ab3',1,'SHA3_512::blockSize()'],['../classSHA512.html#acf8b9bcb6be91ee70acc3700a2ffa1a1',1,'SHA512::blockSize()'],['../classSpeck.html#a18a3b982a2cbc48befc8d498de08f188',1,'Speck::blockSize()']]], + ['blocksize',['blockSize',['../classAESCommon.html#ae26afdcc6d18e8888974acae16df1413',1,'AESCommon::blockSize()'],['../classBLAKE2b.html#abec1b2320c3afaed12a29cf081b95fe2',1,'BLAKE2b::blockSize()'],['../classBLAKE2s.html#a9b5403734c20a0591d72a98912e4a305',1,'BLAKE2s::blockSize()'],['../classBlockCipher.html#a7059a310487c128db034b0ce0ad425a0',1,'BlockCipher::blockSize()'],['../classHash.html#a4e4297812e3483410556830fe5d47bdf',1,'Hash::blockSize()'],['../classKeccakCore.html#a3742ed39151811b5d1c263c75ee5b20a',1,'KeccakCore::blockSize()'],['../classSHA1.html#a816e3fd1a02cf1ecc67866cd8c7c309a',1,'SHA1::blockSize()'],['../classSHA256.html#a71bbd9064f9d6191d0647f867953a858',1,'SHA256::blockSize()'],['../classSHA3__256.html#a88a50ab6c2d4ad105cda2dd504d96e7c',1,'SHA3_256::blockSize()'],['../classSHA3__512.html#a4493a717bad8fa5cd35fe3aa36f25ab3',1,'SHA3_512::blockSize()'],['../classSHA512.html#acf8b9bcb6be91ee70acc3700a2ffa1a1',1,'SHA512::blockSize()'],['../classSpeck.html#a18a3b982a2cbc48befc8d498de08f188',1,'Speck::blockSize()'],['../classSpeckLowMemory.html#ae16cc24406ad4f93e499d1ed95453090',1,'SpeckLowMemory::blockSize()']]], ['boolfield',['BoolField',['../classBoolField.html',1,'BoolField'],['../classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998',1,'BoolField::BoolField(const String &label)'],['../classBoolField.html#a49aad212ed18f84baa105c24e86281d9',1,'BoolField::BoolField(Form &form, const String &label, const String &trueLabel, const String &falseLabel, bool value)']]], ['bytecount',['byteCount',['../classDS1307RTC.html#a93c25269a9b78ab3331354db26672248',1,'DS1307RTC::byteCount()'],['../classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e',1,'DS3232RTC::byteCount()'],['../classRTC.html#acfdebfb449710e44e11f9a3675e14fd8',1,'RTC::byteCount()']]] ]; diff --git a/search/all_10.js b/search/all_10.js index 207a8dcf..8dcca5a5 100644 --- a/search/all_10.js +++ b/search/all_10.js @@ -24,7 +24,7 @@ var searchData= ['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()'],['../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()'],['../classSpeck.html#a7a07fc025bd25d832e9899333b5dabef',1,'Speck::setKey()']]], + ['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()'],['../classSpeck.html#a7a07fc025bd25d832e9899333b5dabef',1,'Speck::setKey()'],['../classSpeckLowMemory.html#a0fda570e117f2b7977aaee3d1e93584b',1,'SpeckLowMemory::setKey()']]], ['setlabel',['setLabel',['../classField.html#ad4ea63599d780c35b296cf2840b69f7b',1,'Field']]], ['setled',['setLed',['../classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5',1,'Charlieplex']]], ['setloopcount',['setLoopCount',['../classMelody.html#a507097a2e8ff51a5e9157e3a320ae35b',1,'Melody']]], @@ -67,6 +67,7 @@ var searchData= ['sleepfor',['sleepFor',['../group__power__save.html#ga95c1666038493a7f95be6768882eebad',1,'sleepFor(SleepDuration duration, uint8_t mode): PowerSave.cpp'],['../group__power__save.html#ga95c1666038493a7f95be6768882eebad',1,'sleepFor(SleepDuration duration, uint8_t mode=0): PowerSave.cpp']]], ['softi2c',['SoftI2C',['../classSoftI2C.html',1,'SoftI2C'],['../classSoftI2C.html#adb6e00ee3f930f1d32010a18feb5f6cc',1,'SoftI2C::SoftI2C()']]], ['speck',['Speck',['../classSpeck.html',1,'Speck'],['../classSpeck.html#a1f0ea433652d791317863de8a50a0580',1,'Speck::Speck()']]], + ['specklowmemory',['SpeckLowMemory',['../classSpeckLowMemory.html',1,'SpeckLowMemory'],['../classSpeckLowMemory.html#a200cb46d4f4044d691a60f4c19c6021c',1,'SpeckLowMemory::SpeckLowMemory()']]], ['startread',['startRead',['../classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde',1,'I2CMaster::startRead()'],['../classSoftI2C.html#aa0dafc067cfa374af75e060dca647ec3',1,'SoftI2C::startRead()']]], ['startwrite',['startWrite',['../classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35',1,'I2CMaster::startWrite()'],['../classSoftI2C.html#aa8a3219f4e6ff52306cc3c219f37d8f9',1,'SoftI2C::startWrite()']]], ['state',['state',['../classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233',1,'BlinkLED']]], diff --git a/search/all_2.js b/search/all_2.js index b7b1747e..f272beca 100644 --- a/search/all_2.js +++ b/search/all_2.js @@ -15,7 +15,7 @@ var searchData= ['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()'],['../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()'],['../classSpeck.html#aa3866273282addabb9d3703c41fdc95f',1,'Speck::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()'],['../classSpeck.html#aa3866273282addabb9d3703c41fdc95f',1,'Speck::clear()'],['../classSpeckLowMemory.html#a5c4fcd9a8ac0d2cf9dd11ce678146d99',1,'SpeckLowMemory::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()']]], diff --git a/search/all_3.js b/search/all_3.js index 86e6553b..c59c3103 100644 --- a/search/all_3.js +++ b/search/all_3.js @@ -5,7 +5,7 @@ var searchData= ['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()'],['../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()'],['../classSpeck.html#ad8c040df1c52d2559da8fdb3963d28b4',1,'Speck::decryptBlock()']]], + ['decryptblock',['decryptBlock',['../classAESCommon.html#a95a806adf42f975765ff62907efdc639',1,'AESCommon::decryptBlock()'],['../classBlockCipher.html#ac3ba2450222aa1ea804ae4881ab6440c',1,'BlockCipher::decryptBlock()'],['../classSpeck.html#ad8c040df1c52d2559da8fdb3963d28b4',1,'Speck::decryptBlock()'],['../classSpeckLowMemory.html#adf789790cf8ba15eb7025eea965215e9',1,'SpeckLowMemory::decryptBlock()']]], ['defaultfield',['defaultField',['../classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b',1,'Form']]], ['derivepublickey',['derivePublicKey',['../classEd25519.html#ab62bac52ed07f77f76f3ff0fccd71cb2',1,'Ed25519']]], ['destroy',['destroy',['../classRNGClass.html#a9901367d86f2303a59bbc12fe91cad00',1,'RNGClass']]], diff --git a/search/all_4.js b/search/all_4.js index b6c95f71..d8ec092f 100644 --- a/search/all_4.js +++ b/search/all_4.js @@ -9,7 +9,7 @@ var searchData= ['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()'],['../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()'],['../classSpeck.html#af6b8b91929e4b5b2023400688c9437f9',1,'Speck::encryptBlock()']]], + ['encryptblock',['encryptBlock',['../classAESCommon.html#a2d95f6159abfcd92b5841f9018e44296',1,'AESCommon::encryptBlock()'],['../classBlockCipher.html#aed0788b25f6bb2f1bd47d5a5f0c5db33',1,'BlockCipher::encryptBlock()'],['../classSpeck.html#af6b8b91929e4b5b2023400688c9437f9',1,'Speck::encryptBlock()'],['../classSpeckLowMemory.html#ad74f9cec21584184511f6d731b8ad5cf',1,'SpeckLowMemory::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()']]], ['eval',['eval',['../classCurve25519.html#a2e4b7dd83a019b32c76584c99bfda21a',1,'Curve25519']]], diff --git a/search/all_9.js b/search/all_9.js index 7c7f3e16..c641c12b 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()'],['../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()'],['../classSpeck.html#a061e43c1363178cda088c3f46e07d87b',1,'Speck::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()'],['../classSpeck.html#a061e43c1363178cda088c3f46e07d87b',1,'Speck::keySize()'],['../classSpeckLowMemory.html#ab7cd4c7d2acb5b3dfa22ce08d659f279',1,'SpeckLowMemory::keySize()']]] ]; diff --git a/search/classes_10.js b/search/classes_10.js index 6e06d293..9962d9d1 100644 --- a/search/classes_10.js +++ b/search/classes_10.js @@ -6,5 +6,6 @@ var searchData= ['sha3_5f512',['SHA3_512',['../classSHA3__512.html',1,'']]], ['sha512',['SHA512',['../classSHA512.html',1,'']]], ['softi2c',['SoftI2C',['../classSoftI2C.html',1,'']]], - ['speck',['Speck',['../classSpeck.html',1,'']]] + ['speck',['Speck',['../classSpeck.html',1,'']]], + ['specklowmemory',['SpeckLowMemory',['../classSpeckLowMemory.html',1,'']]] ]; diff --git a/search/functions_1.js b/search/functions_1.js index 602f3624..4fc1fec1 100644 --- a/search/functions_1.js +++ b/search/functions_1.js @@ -8,7 +8,7 @@ var searchData= ['blake2s',['BLAKE2s',['../classBLAKE2s.html#a7345f4e08c19d7a8c278282b46df21a2',1,'BLAKE2s']]], ['blinkled',['BlinkLED',['../classBlinkLED.html#afc33958651e7ce6dceb428ea654c2c2f',1,'BlinkLED']]], ['blockcipher',['BlockCipher',['../classBlockCipher.html#adc3d7cba116cbea9ad017f4cded6fe2f',1,'BlockCipher']]], - ['blocksize',['blockSize',['../classAESCommon.html#ae26afdcc6d18e8888974acae16df1413',1,'AESCommon::blockSize()'],['../classBLAKE2b.html#abec1b2320c3afaed12a29cf081b95fe2',1,'BLAKE2b::blockSize()'],['../classBLAKE2s.html#a9b5403734c20a0591d72a98912e4a305',1,'BLAKE2s::blockSize()'],['../classBlockCipher.html#a7059a310487c128db034b0ce0ad425a0',1,'BlockCipher::blockSize()'],['../classHash.html#a4e4297812e3483410556830fe5d47bdf',1,'Hash::blockSize()'],['../classKeccakCore.html#a3742ed39151811b5d1c263c75ee5b20a',1,'KeccakCore::blockSize()'],['../classSHA1.html#a816e3fd1a02cf1ecc67866cd8c7c309a',1,'SHA1::blockSize()'],['../classSHA256.html#a71bbd9064f9d6191d0647f867953a858',1,'SHA256::blockSize()'],['../classSHA3__256.html#a88a50ab6c2d4ad105cda2dd504d96e7c',1,'SHA3_256::blockSize()'],['../classSHA3__512.html#a4493a717bad8fa5cd35fe3aa36f25ab3',1,'SHA3_512::blockSize()'],['../classSHA512.html#acf8b9bcb6be91ee70acc3700a2ffa1a1',1,'SHA512::blockSize()'],['../classSpeck.html#a18a3b982a2cbc48befc8d498de08f188',1,'Speck::blockSize()']]], + ['blocksize',['blockSize',['../classAESCommon.html#ae26afdcc6d18e8888974acae16df1413',1,'AESCommon::blockSize()'],['../classBLAKE2b.html#abec1b2320c3afaed12a29cf081b95fe2',1,'BLAKE2b::blockSize()'],['../classBLAKE2s.html#a9b5403734c20a0591d72a98912e4a305',1,'BLAKE2s::blockSize()'],['../classBlockCipher.html#a7059a310487c128db034b0ce0ad425a0',1,'BlockCipher::blockSize()'],['../classHash.html#a4e4297812e3483410556830fe5d47bdf',1,'Hash::blockSize()'],['../classKeccakCore.html#a3742ed39151811b5d1c263c75ee5b20a',1,'KeccakCore::blockSize()'],['../classSHA1.html#a816e3fd1a02cf1ecc67866cd8c7c309a',1,'SHA1::blockSize()'],['../classSHA256.html#a71bbd9064f9d6191d0647f867953a858',1,'SHA256::blockSize()'],['../classSHA3__256.html#a88a50ab6c2d4ad105cda2dd504d96e7c',1,'SHA3_256::blockSize()'],['../classSHA3__512.html#a4493a717bad8fa5cd35fe3aa36f25ab3',1,'SHA3_512::blockSize()'],['../classSHA512.html#acf8b9bcb6be91ee70acc3700a2ffa1a1',1,'SHA512::blockSize()'],['../classSpeck.html#a18a3b982a2cbc48befc8d498de08f188',1,'Speck::blockSize()'],['../classSpeckLowMemory.html#ae16cc24406ad4f93e499d1ed95453090',1,'SpeckLowMemory::blockSize()']]], ['boolfield',['BoolField',['../classBoolField.html#a5d4382cdcdc989de0179d8f3f3a59998',1,'BoolField::BoolField(const String &label)'],['../classBoolField.html#a49aad212ed18f84baa105c24e86281d9',1,'BoolField::BoolField(Form &form, const String &label, const String &trueLabel, const String &falseLabel, bool value)']]], ['bytecount',['byteCount',['../classDS1307RTC.html#a93c25269a9b78ab3331354db26672248',1,'DS1307RTC::byteCount()'],['../classDS3232RTC.html#a1319fe936dcb7e9d6bdf200b77a94f8e',1,'DS3232RTC::byteCount()'],['../classRTC.html#acfdebfb449710e44e11f9a3675e14fd8',1,'RTC::byteCount()']]] ]; diff --git a/search/functions_10.js b/search/functions_10.js index 85d6de2a..04b76e30 100644 --- a/search/functions_10.js +++ b/search/functions_10.js @@ -20,7 +20,7 @@ var searchData= ['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()'],['../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()'],['../classSpeck.html#a7a07fc025bd25d832e9899333b5dabef',1,'Speck::setKey()']]], + ['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()'],['../classSpeck.html#a7a07fc025bd25d832e9899333b5dabef',1,'Speck::setKey()'],['../classSpeckLowMemory.html#a0fda570e117f2b7977aaee3d1e93584b',1,'SpeckLowMemory::setKey()']]], ['setlabel',['setLabel',['../classField.html#ad4ea63599d780c35b296cf2840b69f7b',1,'Field']]], ['setled',['setLed',['../classCharlieplex.html#ab103c9687a0890faf72e4da79e3de0a5',1,'Charlieplex']]], ['setloopcount',['setLoopCount',['../classMelody.html#a507097a2e8ff51a5e9157e3a320ae35b',1,'Melody']]], @@ -52,6 +52,7 @@ var searchData= ['sleepfor',['sleepFor',['../group__power__save.html#ga95c1666038493a7f95be6768882eebad',1,'sleepFor(SleepDuration duration, uint8_t mode): PowerSave.cpp'],['../group__power__save.html#ga95c1666038493a7f95be6768882eebad',1,'sleepFor(SleepDuration duration, uint8_t mode=0): PowerSave.cpp']]], ['softi2c',['SoftI2C',['../classSoftI2C.html#adb6e00ee3f930f1d32010a18feb5f6cc',1,'SoftI2C']]], ['speck',['Speck',['../classSpeck.html#a1f0ea433652d791317863de8a50a0580',1,'Speck']]], + ['specklowmemory',['SpeckLowMemory',['../classSpeckLowMemory.html#a200cb46d4f4044d691a60f4c19c6021c',1,'SpeckLowMemory']]], ['startread',['startRead',['../classI2CMaster.html#a4e5f1a1a4c2242699be5a35fc4872fde',1,'I2CMaster::startRead()'],['../classSoftI2C.html#aa0dafc067cfa374af75e060dca647ec3',1,'SoftI2C::startRead()']]], ['startwrite',['startWrite',['../classI2CMaster.html#a01960fc821cb25e4c88c26d2c6107e35',1,'I2CMaster::startWrite()'],['../classSoftI2C.html#aa8a3219f4e6ff52306cc3c219f37d8f9',1,'SoftI2C::startWrite()']]], ['state',['state',['../classBlinkLED.html#ab89b5b3435998ea6699d4bf94866e233',1,'BlinkLED']]], diff --git a/search/functions_2.js b/search/functions_2.js index 09c36b31..46220162 100644 --- a/search/functions_2.js +++ b/search/functions_2.js @@ -13,7 +13,7 @@ var searchData= ['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()'],['../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()'],['../classSpeck.html#aa3866273282addabb9d3703c41fdc95f',1,'Speck::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()'],['../classSpeck.html#aa3866273282addabb9d3703c41fdc95f',1,'Speck::clear()'],['../classSpeckLowMemory.html#a5c4fcd9a8ac0d2cf9dd11ce678146d99',1,'SpeckLowMemory::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']]], diff --git a/search/functions_3.js b/search/functions_3.js index a3ae2d27..1a527938 100644 --- a/search/functions_3.js +++ b/search/functions_3.js @@ -3,7 +3,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()'],['../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()'],['../classSpeck.html#ad8c040df1c52d2559da8fdb3963d28b4',1,'Speck::decryptBlock()']]], + ['decryptblock',['decryptBlock',['../classAESCommon.html#a95a806adf42f975765ff62907efdc639',1,'AESCommon::decryptBlock()'],['../classBlockCipher.html#ac3ba2450222aa1ea804ae4881ab6440c',1,'BlockCipher::decryptBlock()'],['../classSpeck.html#ad8c040df1c52d2559da8fdb3963d28b4',1,'Speck::decryptBlock()'],['../classSpeckLowMemory.html#adf789790cf8ba15eb7025eea965215e9',1,'SpeckLowMemory::decryptBlock()']]], ['defaultfield',['defaultField',['../classForm.html#aba75b59f68b31dd77dbbac9ab5c3124b',1,'Form']]], ['derivepublickey',['derivePublicKey',['../classEd25519.html#ab62bac52ed07f77f76f3ff0fccd71cb2',1,'Ed25519']]], ['destroy',['destroy',['../classRNGClass.html#a9901367d86f2303a59bbc12fe91cad00',1,'RNGClass']]], diff --git a/search/functions_4.js b/search/functions_4.js index 093a9986..52133b93 100644 --- a/search/functions_4.js +++ b/search/functions_4.js @@ -8,7 +8,7 @@ var searchData= ['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()'],['../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()'],['../classSpeck.html#af6b8b91929e4b5b2023400688c9437f9',1,'Speck::encryptBlock()']]], + ['encryptblock',['encryptBlock',['../classAESCommon.html#a2d95f6159abfcd92b5841f9018e44296',1,'AESCommon::encryptBlock()'],['../classBlockCipher.html#aed0788b25f6bb2f1bd47d5a5f0c5db33',1,'BlockCipher::encryptBlock()'],['../classSpeck.html#af6b8b91929e4b5b2023400688c9437f9',1,'Speck::encryptBlock()'],['../classSpeckLowMemory.html#ad74f9cec21584184511f6d731b8ad5cf',1,'SpeckLowMemory::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()']]], ['eval',['eval',['../classCurve25519.html#a2e4b7dd83a019b32c76584c99bfda21a',1,'Curve25519']]], diff --git a/search/functions_9.js b/search/functions_9.js index af931af1..17293fd6 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()'],['../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()'],['../classSpeck.html#a061e43c1363178cda088c3f46e07d87b',1,'Speck::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()'],['../classSpeck.html#a061e43c1363178cda088c3f46e07d87b',1,'Speck::keySize()'],['../classSpeckLowMemory.html#ab7cd4c7d2acb5b3dfa22ce08d659f279',1,'SpeckLowMemory::keySize()']]] ]; diff --git a/structRTCAlarm.html b/structRTCAlarm.html index af536e5a..37a1b89a 100644 --- a/structRTCAlarm.html +++ b/structRTCAlarm.html @@ -200,7 +200,7 @@ uint8_t  diff --git a/structRTCDate.html b/structRTCDate.html index 184dbfcd..2d8e8a3a 100644 --- a/structRTCDate.html +++ b/structRTCDate.html @@ -123,7 +123,7 @@ uint8_t  diff --git a/structRTCTime.html b/structRTCTime.html index c792fcfd..7b6f8ccc 100644 --- a/structRTCTime.html +++ b/structRTCTime.html @@ -123,7 +123,7 @@ uint8_t