diff --git a/AES128_8cpp_source.html b/AES128_8cpp_source.html
index 59f4576e..043ba847 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 71024276..f94fa8d5 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 ac29064e..d30381c5 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 c18c191c..c5fbc770 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 6bf45c98..1b2bd932 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 29f57afe..f05c0e0b 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 9a9439c5..eaebf075 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 394f1c1f..d16948fc 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 e580e47b..f7fa9b99 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 c0060ca5..2fe858c9 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 e1c0ee19..7b7804cf 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 4aa65ae2..839ac14c 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 83ffcac6..1a8248ba 100644
--- a/BigNumberUtil_8h_source.html
+++ b/BigNumberUtil_8h_source.html
@@ -118,70 +118,77 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
- 31 #define BIGNUMBER_LIMB_8BIT 0
- 32 #define BIGNUMBER_LIMB_16BIT 1
- 33 #define BIGNUMBER_LIMB_32BIT 0
-
-
- 36 #if BIGNUMBER_LIMB_8BIT
- 37 typedef uint8_t limb_t;
- 38 typedef int8_t slimb_t;
- 39 typedef uint16_t dlimb_t;
- 40 #elif BIGNUMBER_LIMB_16BIT
- 41 typedef uint16_t limb_t;
- 42 typedef int16_t slimb_t;
- 43 typedef uint32_t dlimb_t;
- 44 #elif BIGNUMBER_LIMB_32BIT
- 45 typedef uint32_t limb_t;
- 46 typedef int32_t slimb_t;
- 47 typedef uint64_t dlimb_t;
-
- 49 #error "limb_t must be 8, 16, or 32 bits in size"
-
-
-
-
-
- 55 static void unpackLE(limb_t *limbs,
size_t count,
- 56 const uint8_t *bytes,
size_t len);
- 57 static void unpackBE(limb_t *limbs,
size_t count,
- 58 const uint8_t *bytes,
size_t len);
- 59 static void packLE(uint8_t *bytes,
size_t len,
- 60 const limb_t *limbs,
size_t count);
- 61 static void packBE(uint8_t *bytes,
size_t len,
- 62 const limb_t *limbs,
size_t count);
-
- 64 static limb_t
add(limb_t *result,
const limb_t *x,
- 65 const limb_t *y,
size_t size);
- 66 static limb_t
sub(limb_t *result,
const limb_t *x,
- 67 const limb_t *y,
size_t size);
- 68 static void mul(limb_t *result,
const limb_t *x,
size_t xcount,
- 69 const limb_t *y,
size_t ycount);
- 70 static void reduceQuick(limb_t *result,
const limb_t *x,
- 71 const limb_t *y,
size_t size);
-
- 73 static limb_t
add_P(limb_t *result,
const limb_t *x,
- 74 const limb_t *y,
size_t size);
- 75 static limb_t
sub_P(limb_t *result,
const limb_t *x,
- 76 const limb_t *y,
size_t size);
- 77 static void mul_P(limb_t *result,
const limb_t *x,
size_t xcount,
- 78 const limb_t *y,
size_t ycount);
-
- 80 const limb_t *y,
size_t size);
-
-
-
-
-
-
-
-
+
+ 32 #define BIGNUMBER_LIMB_8BIT 0
+ 33 #define BIGNUMBER_LIMB_16BIT 1
+ 34 #define BIGNUMBER_LIMB_32BIT 0
+
+
+ 37 #define BIGNUMBER_LIMB_8BIT 0
+ 38 #define BIGNUMBER_LIMB_16BIT 0
+ 39 #define BIGNUMBER_LIMB_32BIT 1
+
+
+
+ 43 #if BIGNUMBER_LIMB_8BIT
+ 44 typedef uint8_t limb_t;
+ 45 typedef int8_t slimb_t;
+ 46 typedef uint16_t dlimb_t;
+ 47 #elif BIGNUMBER_LIMB_16BIT
+ 48 typedef uint16_t limb_t;
+ 49 typedef int16_t slimb_t;
+ 50 typedef uint32_t dlimb_t;
+ 51 #elif BIGNUMBER_LIMB_32BIT
+ 52 typedef uint32_t limb_t;
+ 53 typedef int32_t slimb_t;
+ 54 typedef uint64_t dlimb_t;
+
+ 56 #error "limb_t must be 8, 16, or 32 bits in size"
+
+
+
+
+
+ 62 static void unpackLE(limb_t *limbs,
size_t count,
+ 63 const uint8_t *bytes,
size_t len);
+ 64 static void unpackBE(limb_t *limbs,
size_t count,
+ 65 const uint8_t *bytes,
size_t len);
+ 66 static void packLE(uint8_t *bytes,
size_t len,
+ 67 const limb_t *limbs,
size_t count);
+ 68 static void packBE(uint8_t *bytes,
size_t len,
+ 69 const limb_t *limbs,
size_t count);
+
+ 71 static limb_t
add(limb_t *result,
const limb_t *x,
+ 72 const limb_t *y,
size_t size);
+ 73 static limb_t
sub(limb_t *result,
const limb_t *x,
+ 74 const limb_t *y,
size_t size);
+ 75 static void mul(limb_t *result,
const limb_t *x,
size_t xcount,
+ 76 const limb_t *y,
size_t ycount);
+ 77 static void reduceQuick(limb_t *result,
const limb_t *x,
+ 78 const limb_t *y,
size_t size);
+
+ 80 static limb_t
add_P(limb_t *result,
const limb_t *x,
+ 81 const limb_t *y,
size_t size);
+ 82 static limb_t
sub_P(limb_t *result,
const limb_t *x,
+ 83 const limb_t *y,
size_t size);
+ 84 static void mul_P(limb_t *result,
const limb_t *x,
size_t xcount,
+ 85 const limb_t *y,
size_t ycount);
+
+ 87 const limb_t *y,
size_t size);
+
+
+
+
+
+
+
+
static void reduceQuick_P(limb_t *result, const limb_t *x, const limb_t *y, size_t size)
Reduces x modulo y using subtraction where y is in program memory.
static limb_t add(limb_t *result, const limb_t *x, const limb_t *y, size_t size)
Adds two big numbers.
static limb_t sub_P(limb_t *result, const limb_t *x, const limb_t *y, size_t size)
Subtracts one big number from another where one is in program memory.
static void reduceQuick(limb_t *result, const limb_t *x, const limb_t *y, size_t size)
Reduces x modulo y using subtraction.
static limb_t sub(limb_t *result, const limb_t *x, const limb_t *y, size_t size)
Subtracts one big number from another.
-Utilities to assist with implementing big number arithmetic.
+Utilities to assist with implementing big number arithmetic.
static void mul_P(limb_t *result, const limb_t *x, size_t xcount, const limb_t *y, size_t ycount)
Multiplies two big numbers where one is in program memory.
static void packBE(uint8_t *bytes, size_t len, const limb_t *limbs, size_t count)
Packs the big-endian byte representation of a big number into a byte array.
static void unpackLE(limb_t *limbs, size_t count, const uint8_t *bytes, size_t len)
Unpacks the little-endian byte representation of a big number into a limb array.
@@ -192,7 +199,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/Bitmap_8cpp_source.html b/Bitmap_8cpp_source.html
index 39c7a19b..80b9c3d5 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 5402b0c4..df4f6526 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 d74b5019..af0b91dd 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 5e4d1229..13945c19 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 a2b9f5ba..1df54eaa 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 00890dc8..779a74e1 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 de66a05b..b6a5d240 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 0db57a03..d83e7386 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 d5bb13ed..1f705436 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 32db72ae..8cbe3390 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 3d59c645..acac1fd0 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 301b500a..c6b45023 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 cc56776c..a1e2123f 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 5b669f21..089a4e09 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 365ade70..92d6ed13 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 bac49f7e..f34a81e3 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 f54bd0fc..0dc3b169 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 8fa6cea9..3996dee7 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 99c1ed6c..dfdd4af4 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 635ce841..f10ff5df 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 0eae2696..2406c9e0 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 7343c6ef..e4171886 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 c8388ca7..d00133da 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 eccfdb30..e759b7ab 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 2932e1e6..dbd7d735 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 e2e60ba0..7aa9ee72 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 d6c01bcd..95ab7073 100644
--- a/Curve25519_8cpp_source.html
+++ b/Curve25519_8cpp_source.html
@@ -803,7 +803,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
-void rand(uint8_t *data, size_t len)
Generates random bytes into a caller-supplied buffer.
+void rand(uint8_t *data, size_t len)
Generates random bytes into a caller-supplied buffer.
static bool eval(uint8_t result[32], const uint8_t s[32], const uint8_t x[32])
Evaluates the raw Curve25519 function.
static void unpackLE(limb_t *limbs, size_t count, const uint8_t *bytes, size_t len)
Unpacks the little-endian byte representation of a big number into a limb array.
static void packLE(uint8_t *bytes, size_t len, const limb_t *limbs, size_t count)
Packs the little-endian byte representation of a big number into a byte array.
@@ -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 9fb8584c..9d58b0ae 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 a3ffb870..a23b0cd9 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 ad7b29d1..d1225444 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 1ffff0ba..ae5a651f 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 bc093575..966b340c 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 37f97d13..3a982183 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 24978977..cf5bad98 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 90b389fe..74b656fe 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 a67bbce4..9ed79e32 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 f83d39f0..234f3b95 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 a1aed297..77077f59 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 1d4b3f5d..72594550 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 047497c4..2f8a556b 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 1dcf41b3..4660a35f 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 c5dc2925..705c8b2a 100644
--- a/Ed25519_8cpp_source.html
+++ b/Ed25519_8cpp_source.html
@@ -557,7 +557,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
static void reduceQuick_P(limb_t *result, const limb_t *x, const limb_t *y, size_t size)
Reduces x modulo y using subtraction where y is in program memory.
static void generatePrivateKey(uint8_t privateKey[32])
Generates a private key for Ed25519 signing operations.
static limb_t add(limb_t *result, const limb_t *x, const limb_t *y, size_t size)
Adds two big numbers.
-void rand(uint8_t *data, size_t len)
Generates random bytes into a caller-supplied buffer.
+void rand(uint8_t *data, size_t len)
Generates random bytes into a caller-supplied buffer.
static bool verify(const uint8_t signature[64], const uint8_t publicKey[32], const void *message, size_t len)
Verifies a signature using a specific Ed25519 public key.
void reset()
Resets the hash ready for a new hashing process.
@@ -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 7fa5430b..fd634079 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 8e99aae5..d12eccfe 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 33f254a1..360e00a0 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 60be9a98..90958eba 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 fd3a060b..a57f4794 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 d43afcfd..b90824ce 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 9f57a7ee..492c3a79 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 ba49cb2b..4c0f2ae3 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 e6b04711..b43ceee1 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 55cd34a6..fa4636c9 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 40526873..8c1d5f36 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 a1cdee6c..0bdd207c 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 2726a169..2b28eebe 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 f4fe5e9d..2d515d91 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 73bf9e30..651245fc 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 76631d50..30d7c3c2 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 e2a119d4..d2414bf9 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 e97fd80d..d45de28c 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 454bb93e..9ea8e781 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 b976e359..223ad391 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 c9ddfd9d..dd0cbc6c 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 11876106..d1d3f4b9 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 f5a73098..90ed3ead 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 3eeea7e7..a540a88f 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 d7d2144d..9021c7d7 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 f124bd8a..4557f23a 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 3f21b91f..1a3363a4 100644
--- a/NoiseSource_8cpp_source.html
+++ b/NoiseSource_8cpp_source.html
@@ -134,11 +134,11 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
virtual void added()
Called when the noise source is added to RNG with RNG.addNoiseSource().
virtual void output(const uint8_t *data, size_t len, unsigned int credit)
Called from subclasses to output noise to the global random number pool.
virtual ~NoiseSource()
Destroys this random noise source.
-void stir(const uint8_t *data, size_t len, unsigned int credit=0)
Stirs additional entropy data into the random pool.
+void stir(const uint8_t *data, size_t len, unsigned int credit=0)
Stirs additional entropy data into the random pool.
diff --git a/NoiseSource_8h_source.html b/NoiseSource_8h_source.html
index 7829d3b0..dccf3089 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 0e245ac6..6e802fce 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 00509463..9cc255d3 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 908c0137..c132e342 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 e38620d1..50a8138e 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 d69531f6..44cb71ff 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 5e01a728..d7f13e9c 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 15e4e9fd..16e019eb 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 0297fb58..a7346785 100644
--- a/RNG_8cpp_source.html
+++ b/RNG_8cpp_source.html
@@ -116,266 +116,434 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
27 #include "utility/ProgMemUtil.h"
- 29 #include <avr/eeprom.h>
-
-
-
-
-
- 125 #define RNG_ROUNDS 20
-
-
- 128 #define RNG_REKEY_BLOCKS 16
-
-
- 131 #define RNG_MAX_CREDITS 384
-
-
-
- 137 static const char tagRNG[16] PROGMEM = {
- 138 'e',
'x',
'p',
'a',
'n',
'd',
' ',
'3',
- 139 '2',
'-',
'b',
'y',
't',
'e',
' ',
'k'
-
-
-
-
-
-
-
-
- 148 static const uint8_t initRNG[48] PROGMEM = {
- 149 0xB0, 0x2A, 0xAE, 0x7D, 0xEE, 0xCB, 0xBB, 0xB1,
- 150 0xFC, 0x03, 0x6F, 0xDD, 0xDC, 0x7D, 0x76, 0x67,
- 151 0x0C, 0xE8, 0x1F, 0x0D, 0xA3, 0xA0, 0xAA, 0x1E,
- 152 0xB0, 0xBD, 0x72, 0x6B, 0x2B, 0x4C, 0x8A, 0x7E,
- 153 0x34, 0xFC, 0x37, 0x60, 0xF4, 0x1E, 0x22, 0xA0,
- 154 0x0B, 0xFB, 0x18, 0x84, 0x60, 0xA5, 0x77, 0x72
+ 29 #if defined (__arm__) && defined (__SAM3X8E__)
+
+
+ 32 #define RNG_DUE_TRNG 1
+
+
+ 35 #include <avr/eeprom.h>
+
+
+
+
+
+
+ 140 #define RNG_ROUNDS 20
+
+
+ 143 #define RNG_REKEY_BLOCKS 16
+
+
+ 146 #define RNG_MAX_CREDITS 384
+
+
+
+ 152 static const char tagRNG[16] PROGMEM = {
+ 153 'e',
'x',
'p',
'a',
'n',
'd',
' ',
'3',
+ 154 '2',
'-',
'b',
'y',
't',
'e',
' ',
'k'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 205 address = eepromAddress;
-
-
- 208 memcpy_P(block, tagRNG,
sizeof(tagRNG));
- 209 memcpy_P(block + 4, initRNG,
sizeof(initRNG));
- 210 if (eeprom_read_byte((
const uint8_t *)address) ==
'S') {
-
- 212 for (
int posn = 0; posn < 12; ++posn) {
-
- 214 eeprom_read_dword((
const uint32_t *)(address + posn * 4 + 1));
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 229 stir((
const uint8_t *)tag, strlen(tag));
-
-
-
-
-
-
-
-
-
- 251 #define MAX_NOISE_SOURCES (sizeof(noiseSources) / sizeof(noiseSources[0]))
- 252 if (count < MAX_NOISE_SOURCES) {
- 253 noiseSources[count++] = &source;
-
-
-
+
+
+
+
+
+
+ 163 static const uint8_t initRNG[48] PROGMEM = {
+ 164 0xB0, 0x2A, 0xAE, 0x7D, 0xEE, 0xCB, 0xBB, 0xB1,
+ 165 0xFC, 0x03, 0x6F, 0xDD, 0xDC, 0x7D, 0x76, 0x67,
+ 166 0x0C, 0xE8, 0x1F, 0x0D, 0xA3, 0xA0, 0xAA, 0x1E,
+ 167 0xB0, 0xBD, 0x72, 0x6B, 0x2B, 0x4C, 0x8A, 0x7E,
+ 168 0x34, 0xFC, 0x37, 0x60, 0xF4, 0x1E, 0x22, 0xA0,
+ 169 0x0B, 0xFB, 0x18, 0x84, 0x60, 0xA5, 0x77, 0x72
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 198 #if defined(RNG_DUE_TRNG)
+
+ 200 REG_TRNG_CR = TRNG_CR_KEY(0x524E47);
+
+
+
+
+
+ 206 #if defined(RNG_DUE_TRNG)
+
+
+
+ 210 #if defined(IFLASH1_ADDR)
+ 211 #define RNG_FLASH_ADDR IFLASH1_ADDR
+ 212 #define RNG_FLASH_SIZE IFLASH1_SIZE
+ 213 #define RNG_FLASH_PAGE_SIZE IFLASH1_PAGE_SIZE
+
+ 215 #elif defined(IFLASH0_ADDR)
+ 216 #define RNG_FLASH_ADDR IFLASH0_ADDR
+ 217 #define RNG_FLASH_SIZE IFLASH0_SIZE
+ 218 #define RNG_FLASH_PAGE_SIZE IFLASH0_PAGE_SIZE
+
+
+ 221 #define RNG_FLASH_ADDR IFLASH_ADDR
+ 222 #define RNG_FLASH_SIZE IFLASH_SIZE
+ 223 #define RNG_FLASH_PAGE_SIZE IFLASH_PAGE_SIZE
+
+
+
+
+
+
+ 230 #define RNG_SEED_ADDR (RNG_FLASH_ADDR + RNG_FLASH_SIZE - RNG_FLASH_PAGE_SIZE)
+ 231 #define RNG_SEED_PAGE ((RNG_FLASH_SIZE / RNG_FLASH_PAGE_SIZE) - 1)
+
+
+
+
+
+ 237 __attribute__((section(
".ramfunc")))
+ 238 static
void stirUniqueIdentifier(
void)
+
+
+
+
+ 243 RNG_EFC->EEFC_FCR = (0x5A << 24) | EFC_FCMD_STUI;
+ 244 while ((RNG_EFC->EEFC_FSR & EEFC_FSR_FRDY) != 0)
+
+
+
+ 248 id[0] = *((
const uint32_t *)RNG_FLASH_ADDR);
+ 249 id[1] = *((
const uint32_t *)(RNG_FLASH_ADDR + 4));
+ 250 id[2] = *((
const uint32_t *)(RNG_FLASH_ADDR + 8));
+ 251 id[3] = *((
const uint32_t *)(RNG_FLASH_ADDR + 12));
+
+
+ 254 RNG_EFC->EEFC_FCR = (0x5A << 24) | EFC_FCMD_SPUI;
+ 255 while ((RNG_EFC->EEFC_FSR & EEFC_FSR_FRDY) == 0)
+
-
-
-
-
- 278 timeout = ((uint32_t)minutes) * 60000U;
-
-
-
-
-
- 301 if (len > (credits / 8))
-
-
-
-
-
-
-
-
- 310 if (count >= RNG_REKEY_BLOCKS) {
-
-
-
-
-
-
-
-
-
+
+ 259 RNG.
stir((uint8_t *)
id,
sizeof(
id));
+
+
+
+
+ 264 __attribute__((section(
".ramfunc")))
+ 265 static
void eraseAndWriteSeed()
+
+
+ 268 RNG_EFC->EEFC_FCR = (0x5A << 24) | (RNG_SEED_PAGE << 8) | EFC_FCMD_EWP;
+
+
+ 271 while ((RNG_EFC->EEFC_FSR & EEFC_FSR_FRDY) == 0)
+
+
+
+
+
+
+
+
+ 299 address = eepromAddress;
+
+
+ 302 memcpy_P(block, tagRNG,
sizeof(tagRNG));
+ 303 memcpy_P(block + 4, initRNG,
sizeof(initRNG));
+ 304 #if defined(RNG_EEPROM)
+ 305 if (eeprom_read_byte((
const uint8_t *)address) ==
'S') {
+
+ 307 for (
int posn = 0; posn < 12; ++posn) {
+
+ 309 eeprom_read_dword((
const uint32_t *)(address + posn * 4 + 1));
+
+
+ 312 #elif defined(RNG_DUE_TRNG)
+
+
+ 315 if (((
const uint32_t *)RNG_SEED_ADDR)[0] ==
'S') {
+
+ 317 for (posn = 0; posn < 12; ++posn)
+ 318 block[posn + 4] ^= ((
const uint32_t *)RNG_SEED_ADDR)[posn + 1];
+
-
-
- 323 memcpy(data, stream, len);
-
-
- 326 memcpy(data, stream, 64);
-
-
-
-
-
-
-
-
-
-
-
- 377 if (len >= (RNG_MAX_CREDITS / 8))
- 378 return credits >= RNG_MAX_CREDITS;
-
- 380 return len <= (credits / 8);
-
-
-
-
-
- 411 if ((credit / 8) >= len)
-
- 413 if ((RNG_MAX_CREDITS - credits) > credit)
-
-
- 416 credits = RNG_MAX_CREDITS;
-
-
-
-
-
-
-
-
- 425 size_t templen = len;
-
-
- 428 uint8_t *output = ((uint8_t *)block) + 16;
-
- 430 while (templen > 0) {
- 431 *output++ ^= *data++;
-
-
-
-
-
-
-
-
-
-
-
-
-
- 445 if (firstSave && credits >= RNG_MAX_CREDITS) {
-
-
-
-
+
+
+
+ 324 pmc_enable_periph_clk(ID_TRNG);
+ 325 REG_TRNG_CR = TRNG_CR_KEY(0x524E47) | TRNG_CR_ENABLE;
+ 326 REG_TRNG_IDR = TRNG_IDR_DATRDY;
+ 327 for (posn = 0; posn < 12; ++posn) {
+
+
+
+
+ 332 for (counter = 0; counter < 200; ++counter) {
+ 333 if ((REG_TRNG_ISR & TRNG_ISR_DATRDY) != 0)
+
+
+
+
+ 338 block[posn + 4] ^= REG_TRNG_ODATA;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 353 stir((
const uint8_t *)tag, strlen(tag));
+
+ 355 #if defined(RNG_DUE_TRNG)
+
+
+ 358 stirUniqueIdentifier();
+
+
+
+
+
+
+
+
+
+
+ 381 #define MAX_NOISE_SOURCES (sizeof(noiseSources) / sizeof(noiseSources[0]))
+ 382 if (count < MAX_NOISE_SOURCES) {
+ 383 noiseSources[count++] = &source;
+
+
+
+
+
+
+
+
+ 408 timeout = ((uint32_t)minutes) * 60000U;
+
+
+
+
+
+ 431 if (len > (credits / 8))
+
+
+
+
+
+
+
+
+ 440 if (count >= RNG_REKEY_BLOCKS) {
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
- 483 eeprom_write_block(stream, (
void *)(address + 1), 48);
- 484 eeprom_update_byte((uint8_t *)address,
'S');
-
-
-
-
-
-
-
- 498 for (uint8_t posn = 0; posn < count; ++posn)
- 499 noiseSources[posn]->
stir();
-
-
- 502 if ((millis() - timer) >= timeout)
-
-
-
-
-
-
-
- 529 for (
int posn = 0; posn <
SEED_SIZE; ++posn)
- 530 eeprom_write_byte((uint8_t *)(address + posn), 0xFF);
-
-
- 536 void RNGClass::rekey()
-
-
-
-
-
-
-
- 544 memcpy(block + 4, stream, 48);
-
-
-
-
-
-
- 551 block[13] ^= micros();
-
-void save()
Saves the random seed to EEPROM.
-void rand(uint8_t *data, size_t len)
Generates random bytes into a caller-supplied buffer.
-void begin(const char *tag, int eepromAddress)
Initializes the random number generator.
+
+
+ 453 memcpy(data, stream, len);
+
+
+ 456 memcpy(data, stream, 64);
+
+
+
+
+
+
+
+
+
+
+
+ 507 if (len >= (RNG_MAX_CREDITS / 8))
+ 508 return credits >= RNG_MAX_CREDITS;
+
+ 510 return len <= (credits / 8);
+
+
+
+
+
+ 541 if ((credit / 8) >= len)
+
+ 543 if ((RNG_MAX_CREDITS - credits) > credit)
+
+
+ 546 credits = RNG_MAX_CREDITS;
+
+
+
+
+
+
+
+
+ 555 size_t templen = len;
+
+
+ 558 uint8_t *output = ((uint8_t *)block) + 16;
+
+ 560 while (templen > 0) {
+ 561 *output++ ^= *data++;
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 575 if (firstSave && credits >= RNG_MAX_CREDITS) {
+
+
+
+
+
+
+
+
+
+
+
+ 613 #if defined(RNG_EEPROM)
+ 614 eeprom_write_block(stream, (
void *)(address + 1), 48);
+ 615 eeprom_update_byte((uint8_t *)address,
'S');
+ 616 #elif defined(RNG_DUE_TRNG)
+
+ 618 ((uint32_t *)(RNG_SEED_ADDR))[0] =
'S';
+ 619 for (posn = 0; posn < 12; ++posn)
+ 620 ((uint32_t *)(RNG_SEED_ADDR))[posn + 1] = stream[posn];
+ 621 for (posn = 13; posn < (RNG_FLASH_PAGE_SIZE / 4); ++posn)
+ 622 ((uint32_t *)(RNG_SEED_ADDR))[posn + 13] = 0xFFFFFFFF;
+
+
+
+
+
+
+
+
+
+ 638 for (uint8_t posn = 0; posn < count; ++posn)
+ 639 noiseSources[posn]->
stir();
+
+ 641 #if defined(RNG_DUE_TRNG)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 661 if ((REG_TRNG_ISR & TRNG_ISR_DATRDY) != 0) {
+ 662 block[4 + trngPosn] ^= REG_TRNG_ODATA;
+ 663 if (++trngPosn >= 12)
+
+ 665 if (credits < RNG_MAX_CREDITS) {
+
+
+
+
+
+
+
+
+
+ 675 if ((millis() - timer) >= timeout)
+
+
+
+
+
+
+
+ 702 #if defined(RNG_EEPROM)
+ 703 for (
int posn = 0; posn <
SEED_SIZE; ++posn)
+ 704 eeprom_write_byte((uint8_t *)(address + posn), 0xFF);
+ 705 #elif defined(RNG_DUE_TRNG)
+ 706 for (
unsigned posn = 0; posn < (RNG_FLASH_PAGE_SIZE / 4); ++posn)
+ 707 ((uint32_t *)(RNG_SEED_ADDR))[posn] = 0xFFFFFFFF;
+
+
+
+
+ 715 void RNGClass::rekey()
+
+
+
+
+
+
+
+ 723 memcpy(block + 4, stream, 48);
+
+
+
+
+
+
+ 730 block[13] ^= micros();
+
+void save()
Saves the random seed to EEPROM.
+void rand(uint8_t *data, size_t len)
Generates random bytes into a caller-supplied buffer.
+void begin(const char *tag, int eepromAddress)
Initializes the random number generator.
Abstract base class for random noise sources.
-~RNGClass()
Destroys this random number generator instance.
+~RNGClass()
Destroys this random number generator instance.
virtual void added()
Called when the noise source is added to RNG with RNG.addNoiseSource().
-void addNoiseSource(NoiseSource &source)
Adds a noise source to the random number generator.
-RNGClass()
Constructs a new random number generator instance.
-void destroy()
Destroys the data in the random number pool and the saved seed in EEPROM.
-bool available(size_t len) const
Determine if there is sufficient entropy available for a specific request size.
-void loop()
Run periodic housekeeping tasks on the random number generator.
+void addNoiseSource(NoiseSource &source)
Adds a noise source to the random number generator.
+RNGClass()
Constructs a new random number generator instance.
+void destroy()
Destroys the data in the random number pool and the saved seed in EEPROM.
+bool available(size_t len) const
Determine if there is sufficient entropy available for a specific request size.
+void loop()
Run periodic housekeeping tasks on the random number generator.
Pseudo random number generator suitable for cryptography.
static const int SEED_SIZE
Size of a saved random number seed in EEPROM space.
static void hashCore(uint32_t *output, const uint32_t *input, uint8_t rounds)
Executes the ChaCha hash core on an input memory block.
-void stir(const uint8_t *data, size_t len, unsigned int credit=0)
Stirs additional entropy data into the random pool.
-void setAutoSaveTime(uint16_t minutes)
Sets the amount of time between automatic seed saves.
+void stir(const uint8_t *data, size_t len, unsigned int credit=0)
Stirs additional entropy data into the random pool.
+void setAutoSaveTime(uint16_t minutes)
Sets the amount of time between automatic seed saves.
diff --git a/RNG_8h_source.html b/RNG_8h_source.html
index 35602b53..da1bff7b 100644
--- a/RNG_8h_source.html
+++ b/RNG_8h_source.html
@@ -152,31 +152,32 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
62 unsigned long timeout;
-
-
-
-
-
-
-
-void save()
Saves the random seed to EEPROM.
-void rand(uint8_t *data, size_t len)
Generates random bytes into a caller-supplied buffer.
-void begin(const char *tag, int eepromAddress)
Initializes the random number generator.
+
+
+
+
+
+
+
+
+void save()
Saves the random seed to EEPROM.
+void rand(uint8_t *data, size_t len)
Generates random bytes into a caller-supplied buffer.
+void begin(const char *tag, int eepromAddress)
Initializes the random number generator.
Abstract base class for random noise sources.
-~RNGClass()
Destroys this random number generator instance.
-void addNoiseSource(NoiseSource &source)
Adds a noise source to the random number generator.
-RNGClass()
Constructs a new random number generator instance.
-void destroy()
Destroys the data in the random number pool and the saved seed in EEPROM.
-bool available(size_t len) const
Determine if there is sufficient entropy available for a specific request size.
-void loop()
Run periodic housekeeping tasks on the random number generator.
+~RNGClass()
Destroys this random number generator instance.
+void addNoiseSource(NoiseSource &source)
Adds a noise source to the random number generator.
+RNGClass()
Constructs a new random number generator instance.
+void destroy()
Destroys the data in the random number pool and the saved seed in EEPROM.
+bool available(size_t len) const
Determine if there is sufficient entropy available for a specific request size.
+void loop()
Run periodic housekeeping tasks on the random number generator.
Pseudo random number generator suitable for cryptography.
static const int SEED_SIZE
Size of a saved random number seed in EEPROM space.
-void stir(const uint8_t *data, size_t len, unsigned int credit=0)
Stirs additional entropy data into the random pool.
-void setAutoSaveTime(uint16_t minutes)
Sets the amount of time between automatic seed saves.
+void stir(const uint8_t *data, size_t len, unsigned int credit=0)
Stirs additional entropy data into the random pool.
+void setAutoSaveTime(uint16_t minutes)
Sets the amount of time between automatic seed saves.
diff --git a/RTC_8cpp_source.html b/RTC_8cpp_source.html
index e2fb98a5..130b3630 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 9aca11d4..be51331e 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 276ad964..0491daa0 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 dee12fbc..8eb27654 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 567317b7..3d4eef7d 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 4bf274f4..dd0368e4 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 cb7d8098..63beda13 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 d0e17956..1e268912 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 fbd7b1b2..6fcce220 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 0f2c0fba..1b728472 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 6e3c4b8f..78dbf63a 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 fc785d10..d663b78d 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 022c53f4..46e5db28 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 cb86ec52..3e0935ae 100644
--- a/SoftI2C_8h_source.html
+++ b/SoftI2C_8h_source.html
@@ -157,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/TextField_8cpp_source.html b/TextField_8cpp_source.html
index 0334c54a..8e1746ae 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 b6deb3e5..b12a8b89 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 53e775bc..90f02fa5 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 c6623e63..fee4f985 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 2edd55b8..5be5662a 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 d4d87b84..50ec0874 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 1a71d663..6171215e 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 4e77fee0..86d2dff7 100644
--- a/alarm_clock.html
+++ b/alarm_clock.html
@@ -140,7 +140,7 @@ Completed Clock
diff --git a/annotated.html b/annotated.html
index acd503ee..d6a16a32 100644
--- a/annotated.html
+++ b/annotated.html
@@ -156,7 +156,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/blink-blink_8dox.html b/blink-blink_8dox.html
index 5252d303..7a68f6d5 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 f08d20a0..73480491 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 ccbd7d89..0376f9d8 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 b537d8de..e0508094 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 51813c81..ddc8cc88 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 ea115652..c4a5546a 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 9cd872bf..48cac7ba 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 77a535df..c583ff64 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 497f5ecd..00242eb0 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 c326400f..f9671fca 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 72982183..72e22eb3 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 3c72af60..077d82db 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 38a98598..5c327ff9 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 f83ec311..8ed9fa1e 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 7b308e72..a95b4824 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 86eb40f8..cb1b1359 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 d0770e9c..b739c552 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 3a4e7741..8dbb5389 100644
--- a/classAuthenticatedCipher.html
+++ b/classAuthenticatedCipher.html
@@ -349,7 +349,7 @@ virtual
diff --git a/classBLAKE2b-members.html b/classBLAKE2b-members.html
index 2e329a94..667365ac 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 4d73d148..78dc02c6 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 af272dc9..fc134ca5 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 864ee690..430e5ac3 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 c239209e..65e6372b 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 f2f90e68..6e70687f 100644
--- a/classBigNumberUtil.html
+++ b/classBigNumberUtil.html
@@ -140,7 +140,7 @@ Static Public Member Functions
Big numbers are represented as arrays of limb_t words, which may be 8 bits, 16 bits, or 32 bits in size depending upon how the library was configured. For AVR, 16 bit limbs usually give the best performance.
Limb arrays are ordered from the least significant word to the most significant.
-Definition at line 52 of file BigNumberUtil.h.
+Definition at line 59 of file BigNumberUtil.h.
@@ -893,7 +893,7 @@ Static Public Member Functions
diff --git a/classBitmap-members.html b/classBitmap-members.html
index 017c07f0..cfe93184 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 647963f5..f170e997 100644
--- a/classBitmap.html
+++ b/classBitmap.html
@@ -1745,7 +1745,7 @@ class DMD |
diff --git a/classBlinkLED-members.html b/classBlinkLED-members.html
index c0cd8919..83235b69 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 6fb1c1e1..98118632 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 cb3b6c13..6e5d8f77 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 a0c4fcb1..0e354985 100644
--- a/classBlockCipher.html
+++ b/classBlockCipher.html
@@ -407,7 +407,7 @@ Public Member Functions
diff --git a/classBoolField-members.html b/classBoolField-members.html
index 81d40247..76d125f7 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 13f04b19..f886a123 100644
--- a/classBoolField.html
+++ b/classBoolField.html
@@ -506,7 +506,7 @@ LiquidCrystal *
diff --git a/classCBC-members.html b/classCBC-members.html
index e9964d37..c5dbbfb2 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 64d57ea8..549972d0 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 3c4b3b51..78199a96 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 23a70408..763c1a19 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 58008bbb..0d242c2d 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 bba0b646..72051765 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 e3911e85..17557697 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 4226b4b7..8c9b15e1 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 94b0e31e..ccff66ac 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 2b43d14c..e356d131 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 075d8a78..45e1e494 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 10fad6a3..6518dcdc 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 1868a22b..cccbabd7 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 6b1233fa..0f1897b9 100644
--- a/classChaCha.html
+++ b/classChaCha.html
@@ -673,7 +673,7 @@ class ChaChaPoly | <
diff --git a/classChaChaPoly-members.html b/classChaChaPoly-members.html
index 8a317b82..062dacbf 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 cf74762b..7ee6891b 100644
--- a/classChaChaPoly.html
+++ b/classChaChaPoly.html
@@ -665,7 +665,7 @@ virtual
diff --git a/classCharlieplex-members.html b/classCharlieplex-members.html
index 38d8fabb..99d355f3 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 743c0c4e..c4dbe4eb 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 5fdb214d..fb9babbc 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 802a6e26..beaab8d0 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 79af7fb5..0a642d4b 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 120c2dc3..cf51d1a5 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 4c85fda0..05a5890f 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 4d159ba5..5292226b 100644
--- a/classCurve25519.html
+++ b/classCurve25519.html
@@ -303,7 +303,7 @@ class Ed25519 |
diff --git a/classDMD-members.html b/classDMD-members.html
index edb05182..e97372f5 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 b4830b26..5f3b5751 100644
--- a/classDMD.html
+++ b/classDMD.html
@@ -755,7 +755,7 @@ Multiple panels
diff --git a/classDS1307RTC-members.html b/classDS1307RTC-members.html
index 2d20c7c3..6c380906 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 622178c7..3a682b41 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 4db49e04..6e8d6437 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 4b05cfdf..31f33a8b 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 59fb3634..ec4187dd 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 f478ef44..75eb4a3b 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 7dbc4fd1..cff501d5 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 73ad9077..24684518 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 447e5675..48a0c7eb 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 a0dd79f3..949e8765 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 a8ba02a0..e7f882d6 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 de9e32b4..61b2204b 100644
--- a/classField.html
+++ b/classField.html
@@ -424,7 +424,7 @@ class Form |
diff --git a/classForm-members.html b/classForm-members.html
index 462a6190..5f241a3e 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 0644de6e..66f1c3af 100644
--- a/classForm.html
+++ b/classForm.html
@@ -485,7 +485,7 @@ class Field |
diff --git a/classGCM-members.html b/classGCM-members.html
index 3a70ffb4..efa06dd8 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 7c334781..b5faddd8 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 982ad9c9..0e309b22 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 feea9069..b996f968 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 5216e92f..fe4bb682 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 93cce48a..2f339f12 100644
--- a/classGHASH.html
+++ b/classGHASH.html
@@ -265,7 +265,7 @@ void
diff --git a/classHash-members.html b/classHash-members.html
index 054872a9..7bf3ada7 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 5f0ef59c..2d71a516 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 28625fd5..d2ffadd8 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 cce49b64..cf1adab7 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 7de8a990..e2aef896 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 92cc4ee5..a94c74c1 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 f0d3736c..2cd0c076 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 6d6f632d..96d24535 100644
--- a/classIntField.html
+++ b/classIntField.html
@@ -647,7 +647,7 @@ LiquidCrystal * |
diff --git a/classKeccakCore-members.html b/classKeccakCore-members.html
index c20b3412..e514bf9e 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 22806891..1375f4c8 100644
--- a/classKeccakCore.html
+++ b/classKeccakCore.html
@@ -425,7 +425,7 @@ void |
diff --git a/classLCD-members.html b/classLCD-members.html
index b3f7a604..c138e364 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 e7c97bef..57969f23 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 89347bad..aca625f4 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 8feeceb1..e0fa334a 100644
--- a/classListField.html
+++ b/classListField.html
@@ -411,7 +411,7 @@ LiquidCrystal * |
diff --git a/classMelody-members.html b/classMelody-members.html
index 3d73cb4f..bf031e37 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 3ebfaaf3..bfdb6f30 100644
--- a/classMelody.html
+++ b/classMelody.html
@@ -371,7 +371,7 @@ bool |
diff --git a/classNoiseSource-members.html b/classNoiseSource-members.html
index 2dce426e..44930677 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 5cbbe755..034212cd 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 beadcbc6..4c17a655 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 5218bd73..4ed1b749 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 4d223a0e..96084265 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 13329e1f..fabaef88 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 a1b9cea6..2553c25e 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 8933bec6..d96768f3 100644
--- a/classPoly1305.html
+++ b/classPoly1305.html
@@ -280,7 +280,7 @@ void
diff --git a/classRNGClass-members.html b/classRNGClass-members.html
index 10d420b2..46af2c6d 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 89268595..9821ef6c 100644
--- a/classRNGClass.html
+++ b/classRNGClass.html
@@ -190,6 +190,7 @@ static const int | loop() function will automatically save the random number seed on a regular basis. By default the seed is saved every hour but this can be changed using setAutoSaveTime().
Keep in mind that saving too often may cause the EEPROM to wear out quicker. It is wise to limit saving to once an hour or once a day depending upon how long you intend to field the device before replacing it. For example, an EEPROM rated for 100k erase/write cycles will last about 69 days saving once a minute or 11 years saving once an hour.
The application can still elect to call save() at any time if wants. For example, if the application can detect power loss or shutdown conditions programmatically, then it may make sense to force a save() of the seed upon shutdown.
+The Arduino Due does not have EEPROM so RNG saves the seed into the last page of system flash memory instead. The RNG class will also mix in data from the CPU's built-in True Random Number Generator (TRNG). Assuming that the CPU's TRNG is trustworthy, this should be sufficient to properly seed the random number generator. It is recommended to also mix in data from other noise sources just in case the CPU's TRNG is not trustworthy.
- See Also
- NoiseSource
Definition at line 31 of file RNG.h.
@@ -211,7 +212,7 @@ static const int | begin() to properly initialize the random number generator.
- See Also
- begin()
-Definition at line 167 of file RNG.cpp.
+Definition at line 182 of file RNG.cpp.
@@ -240,7 +241,7 @@ static const int | NoiseSource::stir() directly.
- See Also
- loop(), begin()
-Definition at line 249 of file RNG.cpp.
+Definition at line 379 of file RNG.cpp.
@@ -283,7 +284,7 @@ static const int | See Alsorand()
- Definition at line 375 of file RNG.cpp.
+Definition at line 505 of file RNG.cpp.
@@ -320,9 +321,10 @@ static const int | addNoiseSource() to register the application's noise sources.
+ The eepromAddress is ignored on the Arduino Due. The seed is instead stored in the last page of system flash memory.
- See Also
- addNoiseSource(), stir(), save()
-Definition at line 202 of file RNG.cpp.
+Definition at line 296 of file RNG.cpp.
@@ -345,7 +347,7 @@ static const int | NoteThe rand() and save() functions take some care to manage the random number pool in a way that makes prediction of past outputs from a captured state very difficult. Future outputs may be predictable if noise or other high-entropy data is not mixed in with stir() on a regular basis.
- See Also
- begin()
-Definition at line 525 of file RNG.cpp.
+Definition at line 698 of file RNG.cpp.
@@ -365,7 +367,7 @@ static const int |
- Definition at line 495 of file RNG.cpp.
+Definition at line 635 of file RNG.cpp.
@@ -405,7 +407,7 @@ static const int | available() function can be polled to determine when sufficient entropy is available.
- See Also
- available(), stir()
-Definition at line 298 of file RNG.cpp.
+Definition at line 428 of file RNG.cpp.
@@ -429,7 +431,7 @@ static const int | stir() in new noise data at startup.
- See Also
- loop(), stir()
-Definition at line 477 of file RNG.cpp.
+Definition at line 607 of file RNG.cpp.
@@ -458,7 +460,7 @@ static const int | See Alsosave(), stir()
- Definition at line 274 of file RNG.cpp.
+Definition at line 404 of file RNG.cpp.
@@ -506,7 +508,7 @@ static const int | See Alsoloop()
- Definition at line 408 of file RNG.cpp.
+Definition at line 538 of file RNG.cpp.
@@ -517,7 +519,7 @@ static const int |
diff --git a/classRTC-members.html b/classRTC-members.html
index 92ead22c..4f77209c 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 1374be96..7d4b0c92 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 3884f1e4..e9c5a194 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 9dbea9d2..29d0d317 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 4f2a9494..72de4949 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 645fbef0..0f37b6ba 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 ce7a3880..5eaf4123 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 f3a1ec92..66c58775 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 dd835283..d21001a8 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 b1fa51e7..2539ee2b 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 70ad4346..d1e20b75 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 b52841fc..e3240413 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 4d55f814..905aca88 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 7970d5fd..71bca1b0 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 912a6384..4c2fa875 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 ebe742a5..002b0dce 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 9c7ba08f..e951da6d 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 bbc7a999..e4e6a6cf 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 90c851cf..d5c9819b 100644
--- a/classSoftI2C.html
+++ b/classSoftI2C.html
@@ -346,7 +346,7 @@ unsigned int
diff --git a/classTextField-members.html b/classTextField-members.html
index 1b4ee300..aeab59bc 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 3ec734cd..c26f383a 100644
--- a/classTextField.html
+++ b/classTextField.html
@@ -343,7 +343,7 @@ LiquidCrystal * |
diff --git a/classTimeField-members.html b/classTimeField-members.html
index 8e4b4a5d..e975fddc 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 c931cf60..4a9f63e3 100644
--- a/classTimeField.html
+++ b/classTimeField.html
@@ -541,7 +541,7 @@ LiquidCrystal * |
diff --git a/classTransistorNoiseSource-members.html b/classTransistorNoiseSource-members.html
index 7f815e98..a160de33 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 a2fb0739..437fc363 100644
--- a/classTransistorNoiseSource.html
+++ b/classTransistorNoiseSource.html
@@ -280,7 +280,7 @@ Additional Inherited Members |
diff --git a/classes.html b/classes.html
index a4079969..beded399 100644
--- a/classes.html
+++ b/classes.html
@@ -133,7 +133,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/crypto-rng-ring_8dox.html b/crypto-rng-ring_8dox.html
index dccb1add..5acf9aee 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 f5bb9f08..9b064792 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 9db07f09..f4c3d835 100644
--- a/crypto.html
+++ b/crypto.html
@@ -101,6 +101,8 @@ Examples and other topics
Performance
+
+Performance on AVR
All figures are for the Arduino Uno running at 16 MHz. Figures for the Ardunino Mega 2560 running at 16 MHz are similar:
-Where a cipher supports more than one key size (such as ChaCha), the values are typically almost identical for 128-bit and 256-bit keys so only the maximum is shown above.
+Where a cipher supports more than one key size (such as ChaCha), the values are typically almost identical for 128-bit and 256-bit keys so only the maximum is shown above.
+
+Performance on ARM
+All figures are for the Arduino Due running at 84 MHz:
+
+
+Encryption Algorithm | Encryption (per byte) | Decryption (per byte) | Key Setup | State Size (bytes) |
+
+AES128 (ECB mode) | 6.65us | 11.00us | 35.15us | 220 |
+
+AES192 (ECB mode) | 8.02us | 13.31us | 36.59us | 252 |
+
+AES256 (ECB mode) | 9.39us | 15.63 | 50.19us | 284 |
+
+ChaCha (20 rounds) | 0.87us | 0.88us | 4.96us | 136 |
+
+ChaCha (12 rounds) | 0.70us | 0.71us | 4.96us | 136 |
+
+ChaCha (8 rounds) | 0.62us | 0.62us | 4.96us | 136 |
+
+ |
+
+AEAD Algorithm | Encryption (per byte) | Decryption (per byte) | Key Setup | State Size (bytes) |
+
+ChaChaPoly | 1.66us | 1.66us | 45.02us | 280 |
+
+GCM<AES128> | 11.01us | 10.92us | 247.90us | 344 |
+
+GCM<AES192> | 12.40us | 12.31us | 294.07us | 376 |
+
+GCM<AES256> | 13.73us | 13.64us | 347.40us | 408 |
+
+ |
+
+Hash Algorithm | Hashing (per byte) | Finalization | | State Size (bytes) |
+
+SHA1 | 0.94us | 62.55us | | 112 |
+
+SHA256 | 1.15us | 76.60us | | 120 |
+
+SHA512 | 2.87us | 370.37us | | 224 |
+
+SHA3_256 | 5.36us | 697.65us | | 424 |
+
+SHA3_512 | 9.89us | 697.81us | | 424 |
+
+BLAKE2s | 0.76us | 50.88us | | 184 |
+
+BLAKE2b | 1.33us | 170.93us | | 352 |
+
+ |
+
+Authentication Algorithm | Hashing (per byte) | Finalization | Key Setup | State Size (bytes) |
+
+SHA1 (HMAC mode) | 0.94us | 193.92us | 65.09us | 112 |
+
+SHA256 (HMAC mode) | 1.15us | 238.98us | 80.44us | 120 |
+
+BLAKE2s (HMAC mode) | 0.76us | 165.64us | 59.92us | 184 |
+
+Poly1305 | 0.85us | 19.25us | 2.35us | 96 |
+
+GHASH | 4.37us | 1.50us | 4.37us | 36 |
+
+ |
+
+Public Key Operation | Time (per operation) | Comment |
+
+Curve25519::eval() | 103ms | Raw curve evaluation |
+
+Curve25519::dh1() | 103ms | First half of Diffie-Hellman key agreement |
+
+Curve25519::dh2() | 104ms | Second half of Diffie-Hellman key agreement |
+
+Ed25519::sign() | 195ms | Digital signature generation |
+
+Ed25519::verify() | 306ms | Digital signature verification |
+
+Ed25519::derivePublicKey() | 194ms | Derive a public key from a private key |
+
diff --git a/crypto_8dox.html b/crypto_8dox.html
index f33d3ebf..8c37d7bb 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 6e2235c1..6aabf18a 100644
--- a/crypto_rng.html
+++ b/crypto_rng.html
@@ -86,6 +86,7 @@ Features of the random number generator
- Provision for plug-in environmental noise sources and entropy estimation.
- Whitening of noise values to scatter the input noise across the entire random number pool.
+- Built-in support for the True Random Number Generator (TRNG) in the Arduino Due's CPU.
- Support for mixing in static values like serial numbers and MAC addresses so that otherwise identical devices do not generate the same sequence of random numbers upon first boot.
- Cryptographically secure pseudo random number generator (PRNG) for expanding the noise-based seed into an arbitrary amount of random material for the application.
- Periodic saving of the random seed into EEPROM so that the accumulated entropy is not lost across a power restart.
@@ -131,6 +132,7 @@ Initializing the random number generator
}
The random number generator needs 49 bytes of EEPROM space at the specified address to store the previous seed. When the system is started next time, the previous saved seed is loaded and then deliberately overwritten with a new seed. This ensures that the device will not accidentally generate the same sequence of random numbers if it is restarted before the first automatic save of the seed.
By default the seed is saved once an hour, although this can be changed with RNG.setAutoSaveTime(). Because the device may be restarted before the first hour expires, there is a special case in the code: the first time that the entropy pool fills up, a save will be automatically forced.
+The Arduino Due does not have EEPROM so RNG saves the seed into the last page of system flash memory instead. The RNG class will also mix in data from the CPU's built-in True Random Number Generator (TRNG). Assuming that the CPU's TRNG is trustworthy, this should be sufficient to properly seed the random number generator. It is recommended to also mix in data from other noise sources just in case the CPU's TRNG is not trustworthy.
To use the random number generator properly, there are some regular tasks that must be performed every time around the application's main loop(). Newly accumulated noise must be mixed in and auto-saves must be performed on a regular basis. The RNG.loop() function takes care of these tasks for us:
void loop() {
@@ -182,7 +184,7 @@ Destroying secret data
diff --git a/crypto_rng_ring.html b/crypto_rng_ring.html
index 84e62302..2d644df6 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 3b176e24..299cebb3 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 91764f91..6acb4479 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 1fef9ce2..cdfa003b 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 97a163bd..65e698d6 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 8437446c..8d9eb893 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 0bf44fae..992faad8 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 8025698a..c386fe01 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 7e12014d..284879a2 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 c9b3bcca..6f5b2cbd 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 5b588e12..b8230998 100644
--- a/dir_e2ce51835550ba18edf07a8311722290.html
+++ b/dir_e2ce51835550ba18edf07a8311722290.html
@@ -204,7 +204,7 @@ Files
diff --git a/dir_f34881fcf60f680b800190d5274dfaea.html b/dir_f34881fcf60f680b800190d5274dfaea.html
index e96cd344..bb5cea3b 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 3c6e37c4..01ef4238 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 e23db1fe..7f14e0c7 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 edcc31f4..dafb1279 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 397c2c6c..c62d18a3 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 2b5a283d..60fcec94 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 22d7f5c5..989639a5 100644
--- a/files.html
+++ b/files.html
@@ -203,7 +203,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/functions.html b/functions.html
index 3395b0ef..226d3e85 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 a2ae0fbe..d053583f 100644
--- a/functions_b.html
+++ b/functions_b.html
@@ -181,7 +181,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/functions_c.html b/functions_c.html
index 3d7e1d68..a7a6d252 100644
--- a/functions_c.html
+++ b/functions_c.html
@@ -220,7 +220,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/functions_d.html b/functions_d.html
index 0f1d2d8b..a8b55f1d 100644
--- a/functions_d.html
+++ b/functions_d.html
@@ -251,7 +251,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/functions_e.html b/functions_e.html
index 0c39cf01..36be607b 100644
--- a/functions_e.html
+++ b/functions_e.html
@@ -186,7 +186,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/functions_enum.html b/functions_enum.html
index 6591e6dc..15e482a7 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 9113bc7f..8b8b8af0 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 7b2b4775..a5a8097b 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 a1cd9753..c7a9e3fb 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 43e95d51..ed6eb09b 100644
--- a/functions_func_b.html
+++ b/functions_func_b.html
@@ -171,7 +171,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/functions_func_c.html b/functions_func_c.html
index 08abb580..eb1fba55 100644
--- a/functions_func_c.html
+++ b/functions_func_c.html
@@ -216,7 +216,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/functions_func_d.html b/functions_func_d.html
index c8c429fb..0b4876bc 100644
--- a/functions_func_d.html
+++ b/functions_func_d.html
@@ -234,7 +234,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/functions_func_e.html b/functions_func_e.html
index d679efd2..dc36ec55 100644
--- a/functions_func_e.html
+++ b/functions_func_e.html
@@ -185,7 +185,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/functions_func_f.html b/functions_func_f.html
index 0cb5f31e..b33235ec 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 34de5d9c..02cbdfc4 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 bddb4b97..95fd152b 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 02475e18..ebb92679 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 2da59f99..dbc72663 100644
--- a/functions_func_k.html
+++ b/functions_func_k.html
@@ -143,7 +143,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/functions_func_l.html b/functions_func_l.html
index ae2957bc..cd462517 100644
--- a/functions_func_l.html
+++ b/functions_func_l.html
@@ -129,7 +129,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
: Field
LCD()
-: LCD
+: LCD
led()
: Charlieplex
@@ -151,7 +151,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/functions_func_m.html b/functions_func_m.html
index 2a7469e8..b8ec23d5 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 aec82ee5..31b9616b 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 e73f2804..e495b4aa 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 bb7c0f4d..ca134858 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 d8871a01..4df9a967 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 16860b45..071cd435 100644
--- a/functions_func_s.html
+++ b/functions_func_s.html
@@ -349,7 +349,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/functions_func_t.html b/functions_func_t.html
index a3f459df..9c4dc66c 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 ecefb51f..4bea7db0 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 724d37ea..dc255111 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 093fae8b..163bb525 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 53292618..3b6ed9b4 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 962e3477..96e8e6c7 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 99b2ed1f..61817f90 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 b2889e1b..c1b7a707 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 5c819860..473c9309 100644
--- a/functions_k.html
+++ b/functions_k.html
@@ -144,7 +144,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/functions_l.html b/functions_l.html
index 1c787c71..52c0c47c 100644
--- a/functions_l.html
+++ b/functions_l.html
@@ -130,7 +130,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
: Field
LCD()
-: LCD
+: LCD
led()
: Charlieplex
@@ -152,7 +152,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/functions_m.html b/functions_m.html
index 6c0c9f69..3d225874 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 e6866f31..a453643d 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 55b021db..aef5dc86 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 44e6fedc..b583960b 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 4cbc2e03..6a618f01 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 a3bab499..ca344564 100644
--- a/functions_s.html
+++ b/functions_s.html
@@ -126,12 +126,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
save()
: RNGClass
-screenSaverMode()
-: LCD
-
ScreenSaverMode
: LCD
+screenSaverMode()
+: LCD
+
scroll()
: Bitmap
@@ -360,7 +360,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/functions_t.html b/functions_t.html
index 76c66956..afdba6f9 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 8b4eb8a5..9ec4b551 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 60cd04a0..5895c6f7 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 879e4a1d..cb31e4d2 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 25f5fb12..a838be31 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 2e18ed74..221a01c7 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 e7b9a89d..da9e452d 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 b0896208..d3292461 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 17ef418d..b935e5c3 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 cbdc725c..60de4d48 100644
--- a/hierarchy.html
+++ b/hierarchy.html
@@ -157,7 +157,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/index.html b/index.html
index d767bd17..6d803a53 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 9b9d4076..7dfb1e12 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 a6933790..f4c4f0c3 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 dfa694d0..f5322298 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 883ec07f..617af47b 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 0020cb4e..9b85e2ef 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 0a6732a2..5ea5b709 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 3ce941d7..dcdc0e4c 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 8f2486ed..3fea969d 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 b40cb060..ed86abd3 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 91b260c0..448ab753 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 0e96926c..8d1247fb 100644
--- a/pages.html
+++ b/pages.html
@@ -100,7 +100,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
diff --git a/search/all_10.js b/search/all_10.js
index 16d1064c..c67ef5f3 100644
--- a/search/all_10.js
+++ b/search/all_10.js
@@ -3,7 +3,7 @@ var searchData=
['star_20trek_20example',['Star Trek Example',['../blink_startrek.html',1,'']]],
['snake_20video_20game_20using_20an_20infrared_20remote_20control',['Snake Video Game Using an Infrared Remote Control',['../ir_snake.html',1,'']]],
['save',['save',['../classRNGClass.html#a139584fb249148e2058d1d645d090db7',1,'RNGClass']]],
- ['screensavermode',['screenSaverMode',['../classLCD.html#a1917fa285f81f476b4c7cc20d15456b8',1,'LCD::screenSaverMode() const '],['../classLCD.html#a264bf94308c95d8598426e13dc8cdb28',1,'LCD::ScreenSaverMode()']]],
+ ['screensavermode',['ScreenSaverMode',['../classLCD.html#a264bf94308c95d8598426e13dc8cdb28',1,'LCD::ScreenSaverMode()'],['../classLCD.html#a1917fa285f81f476b4c7cc20d15456b8',1,'LCD::screenSaverMode() const ']]],
['scroll',['scroll',['../classBitmap.html#ae08eb6f9086f9923d8dc83a469ae4c4a',1,'Bitmap::scroll(int dx, int dy, Color fillColor=Black)'],['../classBitmap.html#af79ad4432297ff453fddc55625fec485',1,'Bitmap::scroll(int x, int y, int width, int height, int dx, int dy, Color fillColor=Black)']]],
['second',['second',['../structRTCTime.html#a87b7c02e535d808dcba04c77e34abb91',1,'RTCTime::second()'],['../structRTCAlarm.html#ab749e3695ee5c5dd703aec71f72d46a1',1,'RTCAlarm::second()']]],
['seed_5fsize',['SEED_SIZE',['../classRNGClass.html#ae3a013bfc73795fd26ee36e70d89f4c2',1,'RNGClass']]],
diff --git a/search/all_a.js b/search/all_a.js
index e96e486d..151e1cdf 100644
--- a/search/all_a.js
+++ b/search/all_a.js
@@ -1,7 +1,7 @@
var searchData=
[
['label',['label',['../classField.html#aaa861ef917130c989a955bc75c683afe',1,'Field']]],
- ['lcd',['LCD',['../classLCD.html',1,'LCD'],['../classField.html#a5cf21bf958a71e51feac9e1bf9f599d1',1,'Field::lcd()'],['../classLCD.html#a00bb2db1390721abc7b24ac4b8c276c8',1,'LCD::LCD()'],['../classLCD.html#a067bc741cf27f143aba5d9f147908401',1,'LCD::LCD(uint8_t pin9)'],['../classLCD.html#a203d268bef6c61fa293562dbb0e9f51e',1,'LCD::LCD(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)']]],
+ ['lcd',['LCD',['../classLCD.html',1,'LCD'],['../classLCD.html#a00bb2db1390721abc7b24ac4b8c276c8',1,'LCD::LCD()'],['../classLCD.html#a067bc741cf27f143aba5d9f147908401',1,'LCD::LCD(uint8_t pin9)'],['../classLCD.html#a203d268bef6c61fa293562dbb0e9f51e',1,'LCD::LCD(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)'],['../classField.html#a5cf21bf958a71e51feac9e1bf9f599d1',1,'Field::lcd()']]],
['lcd_2dform_2edox',['lcd-form.dox',['../lcd-form_8dox.html',1,'']]],
['lcd_2dhelloworld_2edox',['lcd-helloworld.dox',['../lcd-helloworld_8dox.html',1,'']]],
['led',['led',['../classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d',1,'Charlieplex']]],
diff --git a/search/functions_a.js b/search/functions_a.js
index 63e20740..9547f241 100644
--- a/search/functions_a.js
+++ b/search/functions_a.js
@@ -1,7 +1,7 @@
var searchData=
[
['label',['label',['../classField.html#aaa861ef917130c989a955bc75c683afe',1,'Field']]],
- ['lcd',['lcd',['../classField.html#a5cf21bf958a71e51feac9e1bf9f599d1',1,'Field::lcd()'],['../classLCD.html#a00bb2db1390721abc7b24ac4b8c276c8',1,'LCD::LCD()'],['../classLCD.html#a067bc741cf27f143aba5d9f147908401',1,'LCD::LCD(uint8_t pin9)'],['../classLCD.html#a203d268bef6c61fa293562dbb0e9f51e',1,'LCD::LCD(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)']]],
+ ['lcd',['LCD',['../classLCD.html#a00bb2db1390721abc7b24ac4b8c276c8',1,'LCD::LCD()'],['../classLCD.html#a067bc741cf27f143aba5d9f147908401',1,'LCD::LCD(uint8_t pin9)'],['../classLCD.html#a203d268bef6c61fa293562dbb0e9f51e',1,'LCD::LCD(uint8_t rs, uint8_t enable, uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)'],['../classField.html#a5cf21bf958a71e51feac9e1bf9f599d1',1,'Field::lcd()']]],
['led',['led',['../classCharlieplex.html#a90fd09f24b62424b0b7b8bcdb0140b9d',1,'Charlieplex']]],
['listfield',['ListField',['../classListField.html#a118501da7edb0b0bc6b493734975b4e9',1,'ListField::ListField(const String &label)'],['../classListField.html#aa303898a1f74b52c1c4982653de488b7',1,'ListField::ListField(Form &form, const String &label, ListItems items, int value=0)']]],
['loop',['loop',['../classBlinkLED.html#aeeaf42b94c5392935f00f0f12a58c75e',1,'BlinkLED::loop()'],['../classCharlieplex.html#a8313edeacd8387c428b8299d52584d6a',1,'Charlieplex::loop()'],['../classChaseLEDs.html#a8745fa6b9f33b6c6274a563dd4dea786',1,'ChaseLEDs::loop()'],['../classDMD.html#a2c74a0845ef6080056b972d490648114',1,'DMD::loop()'],['../classRNGClass.html#a8cb91e39f0c4591de5bf98b1e2880b13',1,'RNGClass::loop()']]],
diff --git a/structRTCAlarm.html b/structRTCAlarm.html
index 59b74a18..0fae4e87 100644
--- a/structRTCAlarm.html
+++ b/structRTCAlarm.html
@@ -200,7 +200,7 @@ uint8_t |
diff --git a/structRTCDate.html b/structRTCDate.html
index c61c27bc..58bdbde4 100644
--- a/structRTCDate.html
+++ b/structRTCDate.html
@@ -123,7 +123,7 @@ uint8_t |
diff --git a/structRTCTime.html b/structRTCTime.html
index 9d801f30..b1b63cad 100644
--- a/structRTCTime.html
+++ b/structRTCTime.html
@@ -123,7 +123,7 @@ uint8_t |
|