Skip to content

Commit 9748470

Browse files
committed
fixup! feat: add Hybrid KEMs
1 parent 3bba590 commit 9748470

1 file changed

Lines changed: 31 additions & 4 deletions

File tree

‎index.html‎

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7651,9 +7651,21 @@ <h5>Generate Key</h5>
76517651
</section>
76527652
<section id="hybrid-kems-operations-import-key">
76537653
<h5>Import Key</h5>
7654-
<div class=note>
7654+
<div class=issue>
76557655
<p>
7656-
TODO: {{KeyFormat/"pkcs8"}}.
7656+
{{KeyFormat/"pkcs8"}} import is so far unspecified.
7657+
[[draft-ietf-lamps-pq-composite-kem]] defines
7658+
`OneAsymmetricKey.privateKey` as an `OCTET STRING` containing
7659+
`mlkemSeed || tradSK`, where `mlkemSeed` is the 64-byte ML-KEM
7660+
`d || z` seed and |tradSK| is the traditional private key encoding.
7661+
</p>
7662+
<p>
7663+
Importing this representation would produce a usable decapsulation
7664+
key, but we cannot recover the 32-byte seed used by
7665+
{{KeyFormat/"raw-seed"}} and {{KeyFormat/"jwk"}}.
7666+
We could require |extractable| to be `false` which would remove those
7667+
cases, or otherwise define that seed-based export formats fail for keys
7668+
that are not backed by a 32-byte seed.
76577669
</p>
76587670
</div>
76597671
<ol>
@@ -8096,9 +8108,24 @@ <h5>Import Key</h5>
80968108
</section>
80978109
<section id="hybrid-kems-operations-export-key">
80988110
<h5>Export Key</h5>
8099-
<div class=note>
8111+
<div class=issue>
8112+
<p>
8113+
{{KeyFormat/"pkcs8"}} export is so far unspecified.
8114+
[[draft-ietf-lamps-pq-composite-kem]] defines
8115+
`OneAsymmetricKey.privateKey` as an `OCTET STRING` containing
8116+
`mlkemSeed || tradSK`, where `mlkemSeed` is the 64-byte ML-KEM
8117+
`d || z` seed and |tradSK| is the traditional private key encoding.
8118+
</p>
81008119
<p>
8101-
TODO: {{KeyFormat/"pkcs8"}}.
8120+
Exporting this format can work for generated keys, or keys imported
8121+
with the 32-byte seed used by {{KeyFormat/"raw-seed"}} and
8122+
{{KeyFormat/"jwk"}}, provided the implementation can derive and
8123+
serialize the component private keys. For keys imported from
8124+
{{KeyFormat/"pkcs8"}}, we only have the LAMPS component
8125+
private-key representation. That representation is sufficient for
8126+
decapsulation and for {{KeyFormat/"pkcs8"}} re-export, but we cannot
8127+
export it as {{KeyFormat/"raw-seed"}} or {{KeyFormat/"jwk"}} unless
8128+
the key is backed by a 32-byte seed.
81028129
</p>
81038130
</div>
81048131
<ol>

0 commit comments

Comments
 (0)