]> Cypherpunks repositories - keks.git/commitdiff
Move hash to variable for easier reading
authorSergey Matveev <stargrave@stargrave.org>
Mon, 21 Apr 2025 13:15:39 +0000 (16:15 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Mon, 21 Apr 2025 13:27:43 +0000 (16:27 +0300)
spec/cm/dem-kuznechik-ctr-hmac-kr.texi
spec/cm/dem-xchapoly-krkc.texi
spec/cm/kem-balloon-blake2b-hkdf.texi
spec/cm/kem-gost3410-hkdf.texi
spec/cm/kem-mceliece6960119-x25519-hkdf-shake256.texi
spec/cm/kem-sntrup4591761-x25519-hkdf-blake2b.texi

index 08f3052ec6735bbd9c763bf20ae3538ba1609ea3e7326814ba184728aaa29e58..b9e2fb07b44586db99ef54986733a803edca36bbb57a688e9652b09f098ec4b7 100644 (file)
@@ -9,16 +9,13 @@ CEK is 64 bytes long.
 Data is split on 128 KiB chunks, each of which is encrypted the following way:
 
 @verbatim
+H = Streebog-512
 CK0 = CEK
-CKi = HKDF-Extract(Streebog-512, salt="", ikm=CK{i-1})
-Kenc = HKDF-Expand(Streebog-512, prk=CKi,
-    info="cm/encrypted/kuznechik-ctr-hmac-kr/enc")
-IV = HKDF-Expand(Streebog-512, prk=CKi,
-    info="cm/encrypted/kuznechik-ctr-hmac-kr/iv", len=8)
-Kauth || KauthTail = HKDF-Expand(Streebog-512, prk=CKi,
-    info="cm/encrypted/kuznechik-ctr-hmac-kr/auth")
-KauthTail = HKDF-Expand(Streebog-512, prk=CKi,
-    info="cm/encrypted/kuznechik-ctr-hmac-kr/authTail")
+CKi = HKDF-Extract(H, salt="", ikm=CK{i-1})
+Kenc = HKDF-Expand(H, prk=CKi, info="cm/encrypted/kuznechik-ctr-hmac-kr/enc")
+IV = HKDF-Expand(H, prk=CKi, info="cm/encrypted/kuznechik-ctr-hmac-kr/iv", len=8)
+Kauth || KauthTail = HKDF-Expand(H, prk=CKi, info="cm/encrypted/kuznechik-ctr-hmac-kr/auth")
+KauthTail = HKDF-Expand(H, prk=CKi, info="cm/encrypted/kuznechik-ctr-hmac-kr/authTail")
 CT = Kuznechik-CTR(key=Kenc, ctr=IV, data=chunk)
 CT || HMAC(Streebog-256, key={Kauth|KauthTail}, data=CT)
 @end verbatim
index b0ecb553ae0339dffb4415a3d9312f041c5c25fcb1e618be4df6ce67f2a39227..ae3e520681578e2cf32806008d7e99e7c9ac8aca01d6bce69a6edc3d476d8e06 100644 (file)
@@ -9,10 +9,11 @@ CEK is 64 bytes long.
 Data is split on 128 KiB chunks, each of which is encrypted the following way:
 
 @verbatim
+H = BLAKE2b
 CK0 = CEK
-CKi = HKDF-Extract(BLAKE2b, salt="", ikm=CK{i-1})
-KEY = HKDF-Expand(BLAKE2b, prk=CKi, info="cm/encrypted/xchapoly-krkc/key")
-IV = HKDF-Expand(BLAKE2b, prk=CKi, info="cm/encrypted/xchapoly-krkc/iv", len=24)
+CKi = HKDF-Extract(H, salt="", ikm=CK{i-1})
+KEY = HKDF-Expand(H, prk=CKi, info="cm/encrypted/xchapoly-krkc/key")
+IV = HKDF-Expand(H, prk=CKi, info="cm/encrypted/xchapoly-krkc/iv", len=24)
 if last chunk { IV[23] |= 0x01 } else { IV[23] &= 0xFE }
 CIPHERTEXT || TAG = XChaCha20-Poly1305(key=KEY, ad="", nonce=IV, data=chunk)
 COMMITMENT = BLAKE2b-256(KEY || IV || TAG)
index 42461106edd132825ccb95f72d84707dc3bdba94ed1ab5d8fbcb14379d337e46..c6e8c50670d148373d975aed5cb1a567bb9aa6a309f99e1dcc2d07b8a15713b2 100644 (file)
@@ -9,8 +9,9 @@
 password hasher must be used with BLAKE2b hash.
 
 @verbatim
-KEK = HKDF-Expand(BLAKE2b,
-    prk=balloon(BLAKE2b, passphrase, /kem/salt, s, t, p),
+H = BLAKE2b
+KEK = HKDF-Expand(H,
+    prk=balloon(H, passphrase, /kem/salt, s, t, p),
     info="cm/encrypted/balloon-blake2b-hkdf" || /id)
 @end verbatim
 
index e9e3057f465f2b09b90c904220f8cd6788481b811655f91c54088e7a72990ae6..7f77fb393618f8c31e0c1a6d41084a70bdbe4c3b2033b3ec5c89eb63ff835d97 100644 (file)
@@ -10,8 +10,9 @@ 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, used in HKDF below:
 
 @verbatim
-PRK = HKDF-Extract(Streebog-512, salt="", ikm=VKO(..., ukm=UKM))
-KEK = HKDF-Expand(Streebog-512, prk=PRK, info="cm/encrypted/gost3410-hkdf" || /id)
+H = Streebog-512
+PRK = HKDF-Extract(H, salt="", ikm=VKO(..., ukm=UKM))
+KEK = HKDF-Expand(H, prk=PRK, info="cm/encrypted/gost3410-hkdf" || /id)
 @end verbatim
 
 @code{/kem/*/cek} is wrapped with @ref{keywrap-kexp15} mechanism.
index 5ddee7931e65bf894385c3de185cf2dbbc2a067db8d1affde7e0bb14e88acce2..db507dd1eb972bcb2cb350253029785c29ae4deb240935ec084ddfaec369052e 100644 (file)
@@ -19,11 +19,12 @@ derive/decapsulate two 32-byte shared keys. Then it combines
 them to get the KEK decryption key of the CEK.
 
 @verbatim
-PRK = HKDF-Extract(SHAKE256, salt="", ikm=
+H = SHAKE256
+PRK = HKDF-Extract(H, salt="", ikm=
     mceliece6960119-shared-key || x25519-shared-key ||
-    SHAKE256(mceliece6960119-sender-ciphertext || x25519-sender-public-key) ||
-    SHAKE256(mceliece6960119-recipient-public-key || x25519-recipient-public-key))
-KEK = HKDF-Expand(SHAKE256, prk=PRK,
+    H(mceliece6960119-sender-ciphertext || x25519-sender-public-key) ||
+    H(mceliece6960119-recipient-public-key || x25519-recipient-public-key))
+KEK = HKDF-Expand(H, prk=PRK,
     info="cm/encrypted/mceliece6960119-x25519-hkdf-shake256" || /salt)
 @end verbatim
 
index cd8d89cec77a31e81eafa3f72aa0fbf1504287c0922eb6c4185692d70b5db90a..3d5e0d4b63c6e5c615cd149ad30411aee6ca14c779fa682b5526779055bca83d 100644 (file)
@@ -19,12 +19,12 @@ two 32-byte shared keys. Then it combines them to get the KEK decryption
 key of the CEK.
 
 @verbatim
-PRK = HKDF-Extract(BLAKE2b, salt="", ikm=
+H = BLAKE2b
+PRK = HKDF-Extract(H, salt="", ikm=
     sntrup4591761-shared-key || x25519-shared-key ||
-    BLAKE2b(sntrup4591761-sender-ciphertext || x25519-sender-public-key) ||
-    BLAKE2b(sntrup4591761-recipient-public-key || x25519-recipient-public-key))
-KEK = HKDF-Expand(BLAKE2b, prk=PRK,
-    info="cm/encrypted/sntrup4591761-x25519-hkdf-blake2b" || /id)
+    H(sntrup4591761-sender-ciphertext || x25519-sender-public-key) ||
+    H(sntrup4591761-recipient-public-key || x25519-recipient-public-key))
+KEK = HKDF-Expand(H, prk=PRK, info="cm/encrypted/sntrup4591761-x25519-hkdf-blake2b" || /id)
 @end verbatim
 
 @code{/kem/*/cek} is wrapped with @ref{keywrap-xchapoly} mechanism.