@@ -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