Files
Odin/core/crypto/_mldsa/constants.odin
2026-05-19 19:32:50 +09:00

73 lines
1.4 KiB
Odin

#+private
package _mldsa
CRHBYTES :: 64
TRBYTES :: 64
N :: 256
Q :: 8380417
D :: 13
K_MAX :: 8
L_MAX :: 7
POLYZ_PACKEDBYTES_MAX :: 640
POLYT1_PACKEDBYTES :: 320
POLYT0_PACKEDBYTES :: 416
POLYVECT1_PACKEDBYTES_MAX :: K_MAX * POLYT1_PACKEDBYTES
POLYW1_PACKEDBYTES_MAX :: 192
CTILDBYTES_MAX :: 64
@(require_results)
polyeta_packedbytes :: #force_inline proc "contextless" (params: ^Params) -> int {
POLYETA_PACKEDBYTES_2 :: 96
POLYETA_PACKEDBYTES_4 :: 128
switch params.eta {
case 2:
return POLYETA_PACKEDBYTES_2
case 4:
return POLYETA_PACKEDBYTES_4
case:
unreachable()
}
}
@(require_results)
polyz_packedbytes :: #force_inline proc "contextless" (params: ^Params) -> int {
POLYZ_PACKEDBYTES_GAMMA1_17 :: 576
POLYZ_PACKEDBYTES_GAMMA1_19 :: 640
switch params.gamma1 {
case 1 << 17:
return POLYZ_PACKEDBYTES_GAMMA1_17
case 1 << 19:
return POLYZ_PACKEDBYTES_GAMMA1_19
case:
unreachable()
}
}
@(require_results)
polyw1_packedbytes :: #force_inline proc "contextless" (params: ^Params) -> int {
POLYW1_PACKEDBYTES_GAMMA2_95232 :: 192
POLYW1_PACKEDBYTES_GAMMA2_261888 :: 128
switch params.gamma2 {
case (Q-1)/88:
return POLYW1_PACKEDBYTES_GAMMA2_95232
case (Q-1)/32:
return POLYW1_PACKEDBYTES_GAMMA2_261888
case:
unreachable()
}
}
@(require_results)
polyvech_packedbytes :: #force_inline proc "contextless" (params: ^Params) -> int {
return params.omega + params.k
}