61 lines
2.3 KiB
Rust
61 lines
2.3 KiB
Rust
|
|
#![allow(non_snake_case)]
|
||
|
|
|
||
|
|
use libc::{c_int, size_t};
|
||
|
|
|
||
|
|
// [C-1] EXEMPT — FFI boundary constants.
|
||
|
|
//
|
||
|
|
// mt-crypto-native — sub-FFI crate которым пользуется mt-crypto. Чтобы избежать
|
||
|
|
// циклической зависимости (mt-crypto уже импортирует mt-crypto-native), эти
|
||
|
|
// размеры дублируются здесь как primary FFI contract значения. Authoritative
|
||
|
|
// SSOT для остального workspace остаётся mt_crypto::{PUBLIC_KEY_SIZE,
|
||
|
|
// SECRET_KEY_SIZE, SIGNATURE_SIZE, KEYPAIR_SEED_SIZE, MLKEM_*}.
|
||
|
|
//
|
||
|
|
// Sync проверяется regression-тестом mt_crypto_native_consts_match в
|
||
|
|
// crates/mt-crypto/tests/native_consts_sync.rs — расхождение даёт failing
|
||
|
|
// build.
|
||
|
|
pub const MLDSA65_PUBKEY_SIZE: usize = 1952;
|
||
|
|
pub const MLDSA65_SECRETKEY_SIZE: usize = 4032;
|
||
|
|
pub const MLDSA65_SIGNATURE_SIZE: usize = 3309;
|
||
|
|
pub const MLDSA65_SEED_SIZE: usize = 32;
|
||
|
|
|
||
|
|
pub const MLKEM768_PUBKEY_SIZE: usize = 1184;
|
||
|
|
pub const MLKEM768_SECRETKEY_SIZE: usize = 2400;
|
||
|
|
pub const MLKEM768_SEED_SIZE: usize = 64;
|
||
|
|
|
||
|
|
pub const MT_OK: c_int = 0;
|
||
|
|
pub const MT_ERR_INVALID_INPUT: c_int = 1;
|
||
|
|
pub const MT_ERR_OPENSSL_INIT: c_int = 2;
|
||
|
|
pub const MT_ERR_KEYGEN_FAILED: c_int = 3;
|
||
|
|
pub const MT_ERR_SIGN_FAILED: c_int = 4;
|
||
|
|
pub const MT_ERR_VERIFY_FAILED: c_int = 5;
|
||
|
|
pub const MT_ERR_KAT_MISMATCH: c_int = 6;
|
||
|
|
pub const MT_ERR_PARAM_QUERY_FAILED: c_int = 7;
|
||
|
|
pub const MT_ERR_PARAM_SIZE_MISMATCH: c_int = 8;
|
||
|
|
pub const MT_ERR_PARAM_FETCH_FAILED: c_int = 9;
|
||
|
|
pub const MT_ERR_INVALID_SECRET_KEY: c_int = 10;
|
||
|
|
pub const MT_ERR_INVALID_PUBLIC_KEY: c_int = 11;
|
||
|
|
pub const MT_ERR_SIGN_LENGTH_MISMATCH: c_int = 12;
|
||
|
|
|
||
|
|
extern "C" {
|
||
|
|
pub fn mt_keypair_from_seed_mldsa(seed: *const u8, pk_out: *mut u8, sk_out: *mut u8) -> c_int;
|
||
|
|
|
||
|
|
pub fn mt_keypair_from_seed_mlkem(seed: *const u8, pk_out: *mut u8, sk_out: *mut u8) -> c_int;
|
||
|
|
|
||
|
|
pub fn mt_sign_mldsa(sk: *const u8, msg: *const u8, msg_len: size_t, sig_out: *mut u8)
|
||
|
|
-> c_int;
|
||
|
|
|
||
|
|
pub fn mt_sign_mldsa_ctx(
|
||
|
|
sk: *const u8,
|
||
|
|
msg: *const u8,
|
||
|
|
msg_len: size_t,
|
||
|
|
ctx: *const u8,
|
||
|
|
ctx_len: size_t,
|
||
|
|
sig_out: *mut u8,
|
||
|
|
) -> c_int;
|
||
|
|
|
||
|
|
pub fn mt_verify_mldsa(pk: *const u8, msg: *const u8, msg_len: size_t, sig: *const u8)
|
||
|
|
-> c_int;
|
||
|
|
|
||
|
|
pub fn mt_self_test() -> c_int;
|
||
|
|
}
|