Skip to content

Commit

Permalink
Update draft-ietf-lamps-pq-composite-sigs.md
Browse files Browse the repository at this point in the history
  • Loading branch information
johngray-dev authored Nov 25, 2024
1 parent f5eb207 commit 2008dc0
Showing 1 changed file with 49 additions and 0 deletions.
49 changes: 49 additions & 0 deletions draft-ietf-lamps-pq-composite-sigs.md
Original file line number Diff line number Diff line change
Expand Up @@ -706,6 +706,55 @@ Serialization Process:

Deserialization reverses this process, raising an error in the event that the input is malformed.

~~~
Composite-ML-DSA.DeserializeKey(bytes) -> pk

Explicit Input:

bytes An encoded public key or private key

Implicit inputs:

ML-DSA A placeholder for the specific ML-DSA algorithm and
parameter set to use, for example, could be "ML-DSA-65".

Trad A placeholder for the specific traditional algorithm and
parameter set to use, for example "RSA" or "ECDSA".

Output:

key The composite ML-DSA public key or private key

Deserialization Process:

1. Validate the length of the the input byte string

if bytes is not the correct length:
output "Deserialization error"

2. Parse each constituent encoded key.
The first 3 bytes encodes the length of mldsaEncodedKey, which MAY
be used to separate the mldsaEncodedKey and tradEncodedKey, and then
is to be discarded.

(mldsaEncodedKey, tradEncodedKey) = bytes

3. Deserialize the constituent public or private keys

mldsaKey = MLDSA.DeserializeKey(mldsaEncodedKey)
tradKey = Trad.DeserializeKey(tradEncodedKey)

4. If either ML-DSA.DeserializeKey() or
Trad.DeserializeKey() return an error,
then this process must return an error.

if NOT mldsaKey or NOT tradKey:
output "Deserialization error"

5. Output the composite ML-DSA public key

output (mldsaPK, tradPK)
~~~

# Composite Key Structures {#sec-composite-structs}

Expand Down

0 comments on commit 2008dc0

Please sign in to comment.