ChaCha20-Poly1305(data=16*0x00 || CEK, key=KEK, nonce=12*0x00, ad="")
@end verbatim
-@node enveloped-data-gost3410-kexp15
-@subsection enveloped-data-gost3410-kexp15
+@node enveloped-data-gost3410-hkdf-kexp15
+@subsection enveloped-data-gost3410-hkdf-kexp15
-@code{/kem/*/a} equals to "gost3410-kexp15".
+@code{/kem/*/a} equals to "gost3410-hkdf-kexp15".
Recipient map must also contain additional fields:
@table @code
8-byte initialisation vector for KExp15.
@end table
-ГОСТ Р 34.10-2012 VKO 512-bit parameter set C ("gost3410-512C") must be
-used for DH operation, with UKM taken from the structure. Its 512-bit
-output result is used for KExp15 (Р 1323565.1.017) key wrapping algorithm:
+ГОСТ Р 34.10-2012 VKO parameter set A/C ("gost3410-256A", "gost3410-512C")
+must be used for DH operation, with UKM taken from the structure. VKO's
+output is 512- or 1024-bit @code{BE(X)||BE(Y)} point. It is used in HKDF
+and KExp15 (Р 1323565.1.017) key wrapping algorithm:
@verbatim
-KExp15(Kenc, Kauth, IV, CEK):
+KEKenv, KEKauth = HKDF-Extract(Streebog-512,
+ salt="keks/enveloped-data/gost3410-hkdf-kexp15",
+ secret=bind || VKO(...))
+KExp15(KEKenc, KEKauth, IV, CEK):
return CTR(Kenc, CEK+CMAC(Kauth, IV+CEK), IV=IV)
@end verbatim
@item argon2id-hkdf-blake2b
@item balloon-blake2b-hkdf
@code{@ref{enveloped-data-balloon-blake2b-hkdf}}
-@item gost3410-kexp15
- @code{@ref{enveloped-data-gost3410-kexp15}}
+@item gost3410-hkdf-kexp15
+ @code{@ref{enveloped-data-gost3410-hkdf-kexp15}}
@item mlkem768-x25519
@item sntrup761-x25519
@item sntrup4591761-x25519