From c6a419a3f03e9eb233c2924ef504e153072f8bfe Mon Sep 17 00:00:00 2001 From: Joel Brockman <12435369+jbrock24@users.noreply.github.com> Date: Thu, 14 Nov 2024 15:59:28 -0500 Subject: [PATCH] Updated documentation for counterFieldLen support added to AES ctrDRBG --- src/drbg/sections/05-capabilities.adoc | 12 ++++++++---- src/drbg/sections/06-test-vectors.adoc | 1 + src/drbg/sections/97-examples.adoc | 13 +++++++++---- src/drbg/sections/98-references.adoc | 1 + src/drbg/sections/XX-examples.adoc | 6 ++++-- .../sections/06-eddsa-sigver-test-vectors.adoc | 2 +- 6 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/drbg/sections/05-capabilities.adoc b/src/drbg/sections/05-capabilities.adoc index 0e07a3e6..6841e9d2 100644 --- a/src/drbg/sections/05-capabilities.adoc +++ b/src/drbg/sections/05-capabilities.adoc @@ -36,6 +36,7 @@ Each DRBG algorithm capability advertised is a self-contained JSON object. A reg | persoStringLen | Personalization string length. See the notes below. | domain | Min: maximum security strength (see <>), Max: See <>. Set to 0 if not supported | additionalInputLen | See the notes below. | domain | Min: maximum security strength (see <>), Max: See <>. Set to 0 if not supported | returnedBitsLen | Returned bits length | integer | Min: See <>, Max: 4096. +| counterFieldLen | Optional: See the notes below. | integer | Min: 4, Max: 128. Set to 128 if not altered |=== @@ -53,6 +54,8 @@ NOTE: ACVP allows bit length values for 'persoString' ranging from the maximum s NOTE: The 'addtionalInput' configuration and restrictions are the same as those for the 'persoString'. +NOTE: The custom 'counterFieldLen' was introduced in the SP800-90Ar1 update. This is only valid for AES and not TDES ctrDRBG, please refer to SP800-90Ar1 for guidance. + [[value_req_per_option]] === Supported values per DRBG option @@ -74,20 +77,20 @@ DRBG minimum/maximum values for the properties listed in <> | hashDRBG | "SHA-1" | N/A | 128 | 128 | 65536 | 65536 | 65536 | 64 | 65536 | 160 | hashDRBG | "SHA2-224" | N/A | 192| 192 | 65536 | 65536 | 65536 | 96 | 65536 | 224 | hashDRBG | "SHA2-256" | N/A | 256| 256 | 65536 | 65536 | 65536 | 128 | 65536 | 256 -| hashDRBG | "SHA2-384" | N/A | 256| 256 | 65536 | 65536 | 65536 | 128 | 65536 | 384 +| hashDRBG | "SHA2-384" | N/A | 256| 256 | 65536 | 65536 | 65536 | 128 | 65536 | 384 | hashDRBG | "SHA2-512" | N/A | 256| 256 | 65536 | 65536 | 65536 | 128 | 65536 | 512 | hashDRBG | "SHA2-512/224" | N/A | 192 | 192 | 65536 | 65536 | 65536 | 96 | 65536 | 224 | hashDRBG | "SHA2-512/256" | N/A | 256 | 256 | 65536 | 65536 | 65536 | 128 | 65536 | 256 | hashDRBG | "SHA3-224" | N/A | 192| 192 | 65536 | 65536 | 65536 | 96 | 65536 | 224 | hashDRBG | "SHA3-256" | N/A | 256| 256 | 65536 | 65536 | 65536 | 128 | 65536 | 256 -| hashDRBG | "SHA3-384" | N/A | 256| 256 | 65536 | 65536 | 65536 | 128 | 65536 | 384 +| hashDRBG | "SHA3-384" | N/A | 256| 256 | 65536 | 65536 | 65536 | 128 | 65536 | 384 | hashDRBG | "SHA3-512" | N/A | 256| 256 | 65536 | 65536 | 65536 | 128 | 65536 | 512 | hmacDRBG | "SHA-1" | N/A | 128 | 128 | 65536 | 65536 | 65536 | 64 | 65536 | 160 | hmacDRBG | "SHA2-224" | N/A | 192 | 192 | 65536 | 65536 | 65536 | 96 | 65536 | 224 | hmacDRBG | "SHA2-256" | N/A | 256 | 256 | 65536 | 65536 | 65536 | 128 | 65536 | 256 | hmacDRBG | "SHA2-384" | N/A | 256 | 256 | 65536 | 65536 | 65536 | 128 | 65536 | 384 | hmacDRBG | "SHA2-512" | N/A | 256 | 256 | 65536 | 65536 | 65536 | 128 | 65536 | 512 -| hmacDRBG | "SHA2-512/224" | N/A | 192 | 192 | 65536 | 65536 | 65536 | 96 | 65536 | 224 +| hmacDRBG | "SHA2-512/224" | N/A | 192 | 192 | 65536 | 65536 | 65536 | 96 | 65536 | 224 | hmacDRBG | "SHA2-512/256" | N/A | 256 | 256 | 65536 | 65536 | 65536 | 128 | 65536 | 256 | hmacDRBG | "SHA3-224" | N/A | 192 | 192 | 65536 | 65536 | 65536 | 96 | 65536 | 224 | hmacDRBG | "SHA3-256" | N/A | 256 | 256 | 65536 | 65536 | 65536 | 128 | 65536 | 256 @@ -144,7 +147,8 @@ The following is an example registration. "additionalInputLen": [ 256 ], - "returnedBitsLen": 512 + "returnedBitsLen": 512, + "counterFieldLen": 100 } ] } diff --git a/src/drbg/sections/06-test-vectors.adoc b/src/drbg/sections/06-test-vectors.adoc index 14b97fb5..1780cfbd 100644 --- a/src/drbg/sections/06-test-vectors.adoc +++ b/src/drbg/sections/06-test-vectors.adoc @@ -96,6 +96,7 @@ Here is an abbreviated yet fully constructed example of the prompt "persoStringLen": 256, "additionalInputLen": 256, "returnedBitsLen": 512, + "counterFieldLen": 100, "mode": "AES-128", "tests": [ { diff --git a/src/drbg/sections/97-examples.adoc b/src/drbg/sections/97-examples.adoc index 85915de6..069bf34c 100644 --- a/src/drbg/sections/97-examples.adoc +++ b/src/drbg/sections/97-examples.adoc @@ -39,7 +39,8 @@ The following is a example JSON object advertising support for ctrDRBG with TDES "additionalInputLen": [ 256 ], - "returnedBitsLen": 512 + "returnedBitsLen": 512, + "counterFieldLen": 75 }, { "mode": "AES-192", @@ -73,7 +74,8 @@ The following is a example JSON object advertising support for ctrDRBG with TDES "additionalInputLen": [ 384 ], - "returnedBitsLen": 512 + "returnedBitsLen": 512, + "counterFieldLen": 100 }, { "mode": "TDES", @@ -124,7 +126,8 @@ The following is a example JSON object advertising support for ctrDRBG with TDES "additionalInputLen": [ 320 ], - "returnedBitsLen": 512 + "returnedBitsLen": 512, + "counterFieldLen": 10 }, { "mode": "AES-256", @@ -141,7 +144,8 @@ The following is a example JSON object advertising support for ctrDRBG with TDES "additionalInputLen": [ 384 ], - "returnedBitsLen": 512 + "returnedBitsLen": 512, + "counterFieldLen": 50 }, { "mode": "TDES", @@ -336,6 +340,7 @@ The following is a example JSON object for ctrDRBG test vectors sent from the AC "persoStringLen": 112, "additionalInputLen": 112, "returnedBitsLen": 256, + "counterFieldLen": 100, "tests": [ { "tcId": 1815, diff --git a/src/drbg/sections/98-references.adoc b/src/drbg/sections/98-references.adoc index 87abb1e0..9a9bf7b4 100644 --- a/src/drbg/sections/98-references.adoc +++ b/src/drbg/sections/98-references.adoc @@ -6,6 +6,7 @@ * [[[RFC7991,RFC 7991]]] * [[[RFC8174,RFC 8174]]] * [[[SP800-90A,NIST SP 800-90A]]] +* [[[SP800-90Ar1,NIST SP 800-90Ar1]]] [%bibitem] === Automatic Cryptographic Validation Protocol diff --git a/src/drbg/sections/XX-examples.adoc b/src/drbg/sections/XX-examples.adoc index 2c9bf95f..967fe6fb 100644 --- a/src/drbg/sections/XX-examples.adoc +++ b/src/drbg/sections/XX-examples.adoc @@ -39,7 +39,8 @@ The following is a example JSON object advertising support for ctrDRBG with 3Key "additionalInputLen": [ 256 ], - "returnedBitsLen": 512 + "returnedBitsLen": 512, + "counterFieldLen": 100 }, { "mode": "AES-192", @@ -141,7 +142,8 @@ The following is a example JSON object advertising support for ctrDRBG with 3Key "additionalInputLen": [ 384 ], - "returnedBitsLen": 512 + "returnedBitsLen": 512, + "counterFieldLen": 100 }, { "mode": "TDES", diff --git a/src/eddsa/sections/06-eddsa-sigver-test-vectors.adoc b/src/eddsa/sections/06-eddsa-sigver-test-vectors.adoc index be4357c3..dac0449b 100644 --- a/src/eddsa/sections/06-eddsa-sigver-test-vectors.adoc +++ b/src/eddsa/sections/06-eddsa-sigver-test-vectors.adoc @@ -14,7 +14,7 @@ The test group for EDDSA / sigVer / 1.0 is as follows: | curve | The curve type used for the test vectors | string | prehash | Whether or not Prehash EdDSA/HashEdDSA (vs normal/'pure' EdDSA) should be used for the test vectors | boolean | testType | The testType for the group | string -| tests | Array of individual test vector JSON objects, which are defined in <> | array +| tests | Array of individual test vector JSON objects, which are defined in U<> | array |=== [[EDDSA_sigVer_tvjs]]