if errHKDF != nil {
panic(errHKDF)
}
+ ck, errHKDF = hkdf.Expand(
+ blake2bHash, ck, "cm/encrypted/xchapoly-krkc/kr", CEKLen)
+ if errHKDF != nil {
+ panic(errHKDF)
+ }
}
}()
blobChunkLen := ChunkLen + chacha20poly1305.Overhead + CommitmentLen
H = Streebog-512
CK0 = CEK
- 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, len=8, info="cm/encrypted/kuznechik-ctr-hmac-kr/iv")
+ CKi = HKDF-Expand(H,
+ prk=HKDF-Extract(H, salt="", ikm=CK{i-1}),
+ info="cm/encrypted/kuznechik-ctr-hmac-kr/kr")
+ Kenc = HKDF-Expand(H, prk=CKi,
+ info="cm/encrypted/kuznechik-ctr-hmac-kr/enc")
+ IV = HKDF-Expand(H, len=8, prk=CKi,
+ info="cm/encrypted/kuznechik-ctr-hmac-kr/iv")
Kauth || KauthTail = HKDF-Expand(H, prk=CKi,
info="cm/encrypted/kuznechik-ctr-hmac-kr/auth")
CIPHERTEXT = Kuznechik-CTR(key=Kenc, ctr=IV, data=chunk)
H = BLAKE2b
CK0, prMACx0 = CEK || prMACx
- CKi = HKDF-Extract(H, salt="", ikm=CK{i-1})
- prMACxi = HKDF-Extract(H, salt="", ikm=prMACx{i-1})
+ CKi = HKDF-Expand(H,
+ prk=HKDF-Extract(H, salt="", ikm=CK{i-1}),
+ info="cm/encrypted/xchacha-krmr/kr")
+ prMACxi = HKDF-Expand(H,
+ prk=HKDF-Extract(H, salt="", ikm=prMACx{i-1}),
+ info="cm/encrypted/xchacha-krmr/mr")
KEY = HKDF-Expand(H, prk=CKi, info="cm/encrypted/xchacha-krmr/key")
IV = HKDF-Expand(H, prk=CKi, info="cm/encrypted/xchacha-krmr/iv", len=24)
if {last chunk} then { IV[23] |= 0x01 } else { IV[23] &= 0xFE }
H = BLAKE2b
CK0 = CEK
- CKi = HKDF-Extract(H, salt="", ikm=CK{i-1})
+ CKi = HKDF-Expand(H,
+ prk=HKDF-Extract(H, salt="", ikm=CK{i-1}),
+ info="cm/encrypted/xchapoly-krkc/kr")
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} then { IV[23] |= 0x01 } else { IV[23] &= 0xFE }
DH(sk, pk) = GOSTR3410-VKO(prv=sk, pub=pk, ukm=UKM)
PRK = HKDF-Extract(H, salt="", ikm=DH(e, s))
if {specified sender}
+ PRK = HKDF-Expand(H, prk=PRK, info="cm/encrypted/gost3410-hkdf/auth")
PRK = HKDF-Extract(H, salt=PRK, ikm=DH(s, s))
KEK = HKDF-Expand(H, prk=PRK, info="cm/encrypted/gost3410-hkdf" || /id)
if {specified sender}
ss-x25519-shared-key = X25519(s-x25519-sender-private-key,
s-x25519-recipient-public-key)
+ PRK = HKDF-Expand(H, prk=PRK,
+ info="cm/encrypted/mceliece6960119-x25519-hkdf-shake256/auth")
PRK = HKDF-Extract(H, salt=PRK, ikm=
ss-x25519-shared-key || s-x25519-sender-public-key)
KEK = HKDF-Expand(H, prk=PRK,
H(sntrup761-sender-ciphertext || e-x25519-sender-public-key) ||
H(sntrup761-recipient-public-key || s-x25519-recipient-public-key))
if {specified sender}
+ PRK = HKDF-Expand(H, prk=PRK,
+ info="cm/encrypted/sntrup761-x25519-hkdf-blake2b/auth")
PRK = HKDF-Extract(H, salt=PRK, ikm=
ss-x25519-shared-key ||
s-x25519-sender-public-key ||