Skip to content

Commit

Permalink
Adds SLH-DSA and misc. updates
Browse files Browse the repository at this point in the history
Misc ML-DSA updates:
* removes "GDT" test type
* adds the messageLength registration property

Minor updates to Test Vectors section of LMS, ML-DSA, and ML-KEM specs
  • Loading branch information
livebe01 committed Jul 2, 2024
1 parent 5fb91f0 commit ff347c3
Show file tree
Hide file tree
Showing 40 changed files with 909 additions and 58 deletions.
4 changes: 2 additions & 2 deletions src/common/common-sections/06-test-vector-intro.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
[#test-vectors]
== Test Vectors

The ACVP server provides test vectors to the ACVP client, which are then processed and returned to the ACVP server for validation. A typical ACVP validation test session would require multiple test vector sets to be downloaded and processed by the ACVP client. Each test vector set represents an individual algorithm defined during the capability exchange. This section describes the JSON schema for a test vector set used with {spec-algorithm} algorithms.
The ACVP server provides test vectors to the ACVP client, which are then processed and returned to the ACVP server for validation. A typical ACVP validation test session would require multiple test vector sets to be downloaded and processed by the ACVP client. Each test vector set represents an individual cryptographic algorithm defined during the capability exchange. This section describes the JSON schema for a test vector set used with {spec-algorithm} algorithms.

The test vector set JSON schema is a multi-level hierarchy that contains meta data for the entire vector set as well as individual test vectors to be processed by the ACVP client. The following table describes the JSON elements at the top level of the hierarchy.

Expand All @@ -15,7 +15,7 @@ The test vector set JSON schema is a multi-level hierarchy that contains meta da
| algorithm | Algorithm defined in the capability exchange | string
| mode | Mode defined in the capability exchange | string
| revision | Protocol test revision selected | string
| testGroups | Array of test groups containing test data, see <<tgjs>> | array
| testGroups | Array of test group JSON objects, which are defined in <<tgjs>> | array
|===

An example of this would look like this
Expand Down
2 changes: 1 addition & 1 deletion src/draft-celi-acvp-lms.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ include::lms/sections/05-lms-siggen-capabilities.adoc[]

include::lms/sections/05-lms-sigver-capabilities.adoc[]

include::common/common-sections/06-test-vector-intro.adoc[]
//include::common/common-sections/06-test-vector-intro.adoc[]

include::lms/sections/06-test-vectors.adoc[]

Expand Down
2 changes: 1 addition & 1 deletion src/draft-celi-acvp-ml-dsa.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ include::ml-dsa/sections/05-ml-dsa-siggen-capabilities.adoc[]

include::ml-dsa/sections/05-ml-dsa-sigver-capabilities.adoc[]

include::common/common-sections/06-test-vector-intro.adoc[]
//include::common/common-sections/06-test-vector-intro.adoc[]

include::ml-dsa/sections/06-test-vectors.adoc[]

Expand Down
2 changes: 1 addition & 1 deletion src/draft-celi-acvp-ml-kem.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ include::ml-kem/sections/05-ml-kem-keygen-capabilities.adoc[]

include::ml-kem/sections/05-ml-kem-encapdecap-capabilities.adoc[]

include::common/common-sections/06-test-vector-intro.adoc[]
//include::common/common-sections/06-test-vector-intro.adoc[]

include::ml-kem/sections/06-test-vectors.adoc[]

Expand Down
78 changes: 78 additions & 0 deletions src/draft-livelsberger-acvp-slh-dsa.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
= ACVP SLH-DSA JSON Specification
:doctype: internet-draft
:docname: acvp-slh
:docnumber: draft-livelsberger-acvp-slh-dsa-01
:abbrev: ACVP SLH-DSA
:ipr: trust200902
:submission-type: independent
:area: Internet
:intended-series: informational
:revdate: 2024-06-25
:forename_initials: B.R.
:lastname: Livelsberger
:fullname: Benjamin Livelsberger
:organization: National Institute of Standards and Technology
:street: 100 Bureau Drive
:city: Gaithersburg
:code: 20899
:country: United States of America
:email: [email protected]
:role: editor
:docfile: draft-livelsberger-acvp-slh-dsa.adoc
:mn-document-class: ietf
:mn-output-extensions: xml,rfc,txt,html
:area: General
:keyword: acvp, crypto

// Singular name of the algorithm
:spec-algorithm: Stateless Hash-Based Digital Signature Algorithm (SLH-DSA)
:algo-short-name: SLH-DSA

include::common/common-sections/00-abstract.adoc[]

include::common/common-sections/01-intro.adoc[]

include::common/common-sections/02-conventions.adoc[]

include::slh-dsa/sections/03-supported.adoc[]

include::slh-dsa/sections/04-testtypes.adoc[]

include::common/common-sections/05-capabilities-description.adoc[]

include::common/common-sections/051-prerequisites.adoc[]

include::slh-dsa/sections/05-capabilities.adoc[]

include::slh-dsa/sections/05-slh-dsa-keygen-capabilities.adoc[]

include::slh-dsa/sections/05-slh-dsa-siggen-capabilities.adoc[]

include::slh-dsa/sections/05-slh-dsa-sigver-capabilities.adoc[]

//include::common/common-sections/06-test-vector-intro.adoc[]

include::slh-dsa/sections/06-test-vectors.adoc[]

include::slh-dsa/sections/06-slh-dsa-keygen-test-vectors.adoc[]

include::slh-dsa/sections/06-slh-dsa-siggen-test-vectors.adoc[]

include::slh-dsa/sections/06-slh-dsa-sigver-test-vectors.adoc[]

include::slh-dsa/sections/07-responses.adoc[]

include::slh-dsa/sections/07-slh-dsa-keygen-responses.adoc[]

include::slh-dsa/sections/07-slh-dsa-siggen-responses.adoc[]

include::slh-dsa/sections/07-slh-dsa-sigver-responses.adoc[]

include::common/common-sections/10-security.adoc[]

include::common/common-sections/11-iana.adoc[]

include::common/common-sections/99-acknowledgements.adoc[]

// References must be given before appendixes
include::slh-dsa/sections/98-references.adoc[]
3 changes: 2 additions & 1 deletion src/ecdsa/sections/06-ecdsa-detsiggen-test-vectors.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
[[ecdsa_detsigGen_tgjs]]
==== Deterministic ECDSA sigGen Test Groups JSON Schema

The testGroups element at the top level in the test vector JSON object is an array of test groups. Test vectors are grouped into similar test cases to reduce the amount of data transmitted in the vector set. For instance, all test vectors that use the same key size would be grouped together. The Test Group JSON object contains meta data that applies to all test vectors within the group. The following table describes the secure hash JSON elements of the Test Group JSON object.
The testGroups element at the top level in the test vector JSON object is an array of test groups. Test vectors are grouped into similar test cases to reduce the amount of data transmitted in the vector set. For instance, all test vectors that use the same key size would be grouped together. The Test Group JSON object contains meta data that applies to all test vectors within the group. The following table describes the {algo-short-name} JSON elements of the Test Group JSON object.

The test group for DetECDSA / sigGen / * is as follows:

Expand All @@ -13,6 +13,7 @@ The test group for DetECDSA / sigGen / * is as follows:
|===
| JSON Value | Description | JSON type

| tgId | Numeric identifier for the test group, unique across the entire vector set | integer
| testType | The test operation performed | string
| curve | The curve type used for the test vectors | string
| hashAlg | SHA version used | string
Expand Down
5 changes: 3 additions & 2 deletions src/ecdsa/sections/06-ecdsa-keygen-test-vectors.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
[[ecdsa_keyGen_tgjs]]
==== ECDSA keyGen Test Groups JSON Schema

The testGroups element at the top level in the test vector JSON object is an array of test groups. Test vectors are grouped into similar test cases to reduce the amount of data transmitted in the vector set. For instance, all test vectors that use the same key size would be grouped together. The Test Group JSON object contains meta data that applies to all test vectors within the group. The following table describes the secure hash JSON elements of the Test Group JSON object.
The testGroups element at the top level in the test vector JSON object is an array of test groups. Test vectors are grouped into similar test cases to reduce the amount of data transmitted in the vector set. For instance, all test vectors that use the same key size would be grouped together. The Test Group JSON object contains meta data that applies to all test vectors within the group. The following table describes the {algo-short-name} JSON elements of the Test Group JSON object.

The test group for ECDSA / keyGen / * is as follows:

Expand All @@ -13,14 +13,15 @@ The test group for ECDSA / keyGen / * is as follows:
|===
| JSON Value | Description | JSON type

| tgId | Numeric identifier for the test group, unique across the entire vector set | integer
| testType | The test operation performed | string
| curve | The curve type used for the test group | string
| secretGenerationMode | The secret generation mode used for the group | string
| tests | Array of individual test vector JSON objects, which are defined in <<ecdsa_keyGen_tvjs>> | array
|===

[[ecdsa_keyGen_tvjs]]
==== ECDSA keyGen Test Groups JSON Schema
==== ECDSA keyGen Test Case JSON Schema

Each test group contains an array of one or more test cases. Each test case is a JSON object that represents a single test vector to be processed by the ACVP client. The following table describes the JSON elements for each ECDSA test vector.

Expand Down
5 changes: 3 additions & 2 deletions src/ecdsa/sections/06-ecdsa-keyver-test-vectors.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
[[ecdsa_keyVer_tgjs]]
==== ECDSA keyVer Test Groups JSON Schema

The testGroups element at the top level in the test vector JSON object is an array of test groups. Test vectors are grouped into similar test cases to reduce the amount of data transmitted in the vector set. For instance, all test vectors that use the same key size would be grouped together. The Test Group JSON object contains meta data that applies to all test vectors within the group. The following table describes the secure hash JSON elements of the Test Group JSON object.
The testGroups element at the top level in the test vector JSON object is an array of test groups. Test vectors are grouped into similar test cases to reduce the amount of data transmitted in the vector set. For instance, all test vectors that use the same key size would be grouped together. The Test Group JSON object contains meta data that applies to all test vectors within the group. The following table describes the {algo-short-name} JSON elements of the Test Group JSON object.

The test group for ECDSA / keyVer / * is as follows:

Expand All @@ -13,13 +13,14 @@ The test group for ECDSA / keyVer / * is as follows:
|===
| JSON Value | Description | JSON type

| tgId | Numeric identifier for the test group, unique across the entire vector set | integer
| testType | The test operation performed | string
| curve | The curve type used for the test group | string
| tests | Array of individual test vector JSON objects, which are defined in <<ecdsa_keyVer_tvjs>> | array
|===

[[ecdsa_keyVer_tvjs]]
==== ECDSA keyVer Test Groups JSON Schema
==== ECDSA keyVer Test Case JSON Schema

Each test group contains an array of one or more test cases. Each test case is a JSON object that represents a single test vector to be processed by the ACVP client. The following table describes the JSON elements for each ECDSA test vector.

Expand Down
5 changes: 3 additions & 2 deletions src/ecdsa/sections/06-ecdsa-siggen-test-vectors.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
[[ecdsa_sigGen_tgjs]]
==== ECDSA sigGen Test Groups JSON Schema

The testGroups element at the top level in the test vector JSON object is an array of test groups. Test vectors are grouped into similar test cases to reduce the amount of data transmitted in the vector set. For instance, all test vectors that use the same key size would be grouped together. The Test Group JSON object contains meta data that applies to all test vectors within the group. The following table describes the secure hash JSON elements of the Test Group JSON object.
The testGroups element at the top level in the test vector JSON object is an array of test groups. Test vectors are grouped into similar test cases to reduce the amount of data transmitted in the vector set. For instance, all test vectors that use the same key size would be grouped together. The Test Group JSON object contains meta data that applies to all test vectors within the group. The following table describes the {algo-short-name} JSON elements of the Test Group JSON object.

The test group for ECDSA / sigGen / * is as follows:

Expand All @@ -13,6 +13,7 @@ The test group for ECDSA / sigGen / * is as follows:
|===
| JSON Value | Description | JSON type

| tgId | Numeric identifier for the test group, unique across the entire vector set | integer
| testType | The test operation performed | string
| curve | The curve type used for the test vectors | string
| hashAlg | SHA version used | string
Expand All @@ -21,7 +22,7 @@ The test group for ECDSA / sigGen / * is as follows:
|===

[[ecdsa_sigGen_tvjs]]
==== ECDSA sigGen Test Groups JSON Schema
==== ECDSA sigGen Test Case JSON Schema

Each test group contains an array of one or more test cases. Each test case is a JSON object that represents a single test vector to be processed by the ACVP client. The following table describes the JSON elements for each ECDSA test vector.

Expand Down
5 changes: 3 additions & 2 deletions src/ecdsa/sections/06-ecdsa-sigver-test-vectors.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
[[ecdsa_sigVer_tgjs]]
==== ECDSA sigVer Test Groups JSON Schema

The testGroups element at the top level in the test vector JSON object is an array of test groups. Test vectors are grouped into similar test cases to reduce the amount of data transmitted in the vector set. For instance, all test vectors that use the same key size would be grouped together. The Test Group JSON object contains meta data that applies to all test vectors within the group. The following table describes the secure hash JSON elements of the Test Group JSON object.
The testGroups element at the top level in the test vector JSON object is an array of test groups. Test vectors are grouped into similar test cases to reduce the amount of data transmitted in the vector set. For instance, all test vectors that use the same key size would be grouped together. The Test Group JSON object contains meta data that applies to all test vectors within the group. The following table describes the {algo-short-name} JSON elements of the Test Group JSON object.

The test group for ECDSA / sigVer / * is as follows:

Expand All @@ -13,6 +13,7 @@ The test group for ECDSA / sigVer / * is as follows:
|===
| JSON Value | Description | JSON type

| tgId | Numeric identifier for the test group, unique across the entire vector set | integer
| testType | The test operation performed | string
| curve | The curve type used for the test vectors | string
| hashAlg | SHA version used | string
Expand All @@ -21,7 +22,7 @@ The test group for ECDSA / sigVer / * is as follows:
|===

[[ecdsa_sigVer_tvjs]]
==== ECDSA sigVer Test Groups JSON Schema
==== ECDSA sigVer Test Case JSON Schema

Each test group contains an array of one or more test cases. Each test case is a JSON object that represents a single test vector to be processed by the ACVP client. The following table describes the JSON elements for each ECDSA test vector.

Expand Down
3 changes: 2 additions & 1 deletion src/lms/sections/06-lms-keygen-test-vectors.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
[[LMS_keyGen_tgjs]]
==== LMS keyGen Test Groups JSON Schema

The testGroups element at the top level in the test vector JSON object is an array of test groups. Test vectors are grouped into similar test cases to reduce the amount of data transmitted in the vector set. For instance, all test vectors that use the same key size would be grouped together. The Test Group JSON object contains meta data that applies to all test vectors within the group. The following table describes the secure hash JSON elements of the Test Group JSON object.
The testGroups element at the top level in the test vector JSON object is an array of test groups. Test vectors are grouped into similar test cases to reduce the amount of data transmitted in the vector set. For instance, all test vectors that use the same key size would be grouped together. The Test Group JSON object contains meta data that applies to all test vectors within the group. The following table describes the {algo-short-name} JSON elements of the Test Group JSON object.

The test group for LMS / keyGen / 1.0 is as follows:

Expand All @@ -13,6 +13,7 @@ The test group for LMS / keyGen / 1.0 is as follows:
|===
| JSON Value | Description | JSON type

| tgId | Numeric identifier for the test group, unique across the entire vector set | integer
| testType | The test operation performed | string
| lmsMode | The LMS tree structure used | string
| lmOtsMode | The LMOTS tree structure used | string
Expand Down
5 changes: 3 additions & 2 deletions src/lms/sections/06-lms-siggen-test-vectors.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
[[LMS_sigGen_tgjs]]
==== LMS sigGen Test Groups JSON Schema

The testGroups element at the top level in the test vector JSON object is an array of test groups. Test vectors are grouped into similar test cases to reduce the amount of data transmitted in the vector set. For instance, all test vectors that use the same key size would be grouped together. The Test Group JSON object contains meta data that applies to all test vectors within the group. The following table describes the secure hash JSON elements of the Test Group JSON object.
The testGroups element at the top level in the test vector JSON object is an array of test groups. Test vectors are grouped into similar test cases to reduce the amount of data transmitted in the vector set. For instance, all test vectors that use the same key size would be grouped together. The Test Group JSON object contains meta data that applies to all test vectors within the group. The following table describes the {algo-short-name} JSON elements of the Test Group JSON object.

The test group for LMS / sigGen / 1.0 is as follows:

Expand All @@ -13,14 +13,15 @@ The test group for LMS / sigGen / 1.0 is as follows:
|===
| JSON Value | Description | JSON type

| tgId | Numeric identifier for the test group, unique across the entire vector set | integer
| testType | The test operation performed | string
| lmsMode | The LMS tree structure used | string
| lmOtsMode | The LMOTS tree structure used | string
| tests | Array of individual test vector JSON objects, which are defined in <<LMS_sigGen_tvjs>> | array
|===

[[LMS_sigGen_tvjs]]
==== LMS sigGen Test Groups JSON Schema
==== LMS sigGen Test Case JSON Schema

Each test group contains an array of one or more test cases. Each test case is a JSON object that represents a single test vector to be processed by the ACVP client. The following table describes the JSON elements for each LMS test vector.

Expand Down
5 changes: 3 additions & 2 deletions src/lms/sections/06-lms-sigver-test-vectors.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
[[LMS_sigVer_tgjs]]
==== LMS sigVer Test Groups JSON Schema

The testGroups element at the top level in the test vector JSON object is an array of test groups. Test vectors are grouped into similar test cases to reduce the amount of data transmitted in the vector set. For instance, all test vectors that use the same key size would be grouped together. The Test Group JSON object contains meta data that applies to all test vectors within the group. The following table describes the secure hash JSON elements of the Test Group JSON object.
The testGroups element at the top level in the test vector JSON object is an array of test groups. Test vectors are grouped into similar test cases to reduce the amount of data transmitted in the vector set. For instance, all test vectors that use the same key size would be grouped together. The Test Group JSON object contains meta data that applies to all test vectors within the group. The following table describes the {algo-short-name} JSON elements of the Test Group JSON object.

The test group for LMS / sigVer / 1.0 is as follows:

Expand All @@ -13,6 +13,7 @@ The test group for LMS / sigVer / 1.0 is as follows:
|===
| JSON Value | Description | JSON type

| tgId | Numeric identifier for the test group, unique across the entire vector set | integer
| testType | The test operation performed | string
| lmsMode | The LMS tree structure used | string
| lmOtsMode | The LMOTS tree structure used | string
Expand All @@ -21,7 +22,7 @@ The test group for LMS / sigVer / 1.0 is as follows:
|===

[[LMS_sigVer_tvjs]]
==== LMS sigVer Test Groups JSON Schema
==== LMS sigVer Test Case JSON Schema

Each test group contains an array of one or more test cases. Each test case is a JSON object that represents a single test vector to be processed by the ACVP client. The following table describes the JSON elements for each LMS test vector.

Expand Down
Loading

0 comments on commit ff347c3

Please sign in to comment.