96 lines
3.1 KiB
Zig
96 lines
3.1 KiB
Zig
// ©AngelaMos | 2026
|
|
// config.zig
|
|
|
|
const ck = @import("ck.zig");
|
|
|
|
pub const cryptoki_version: ck.CK_VERSION = .{ .major = 2, .minor = 40 };
|
|
pub const library_version: ck.CK_VERSION = .{ .major = 0, .minor = 1 };
|
|
pub const hardware_version: ck.CK_VERSION = .{ .major = 1, .minor = 0 };
|
|
pub const firmware_version: ck.CK_VERSION = .{ .major = 0, .minor = 1 };
|
|
|
|
pub const manufacturer_id = "Angelamos";
|
|
pub const library_description = "Zig HSM Emulator";
|
|
pub const slot_description = "AngelaMos HSM Emulator Slot 0";
|
|
pub const token_label = "AngelaMos-HSM";
|
|
pub const token_model = "hsm-emu";
|
|
pub const token_serial = "0000000000000001";
|
|
|
|
pub const slot_id: ck.CK_SLOT_ID = 0;
|
|
pub const slot_count: ck.CK_ULONG = 1;
|
|
pub const max_sessions: ck.CK_ULONG = 64;
|
|
|
|
pub const min_pin_len: ck.CK_ULONG = 4;
|
|
pub const max_pin_len: ck.CK_ULONG = 255;
|
|
|
|
pub const aes_min_key_bytes: ck.CK_ULONG = 16;
|
|
pub const aes_max_key_bytes: ck.CK_ULONG = 32;
|
|
pub const rsa_min_key_bits: ck.CK_ULONG = 2048;
|
|
pub const rsa_max_key_bits: ck.CK_ULONG = 4096;
|
|
pub const ec_min_key_bits: ck.CK_ULONG = 256;
|
|
pub const ec_max_key_bits: ck.CK_ULONG = 384;
|
|
pub const ec_keygen_max_attempts: usize = 8;
|
|
pub const hmac_min_key_bytes: ck.CK_ULONG = 32;
|
|
pub const hmac_max_key_bytes: ck.CK_ULONG = 64;
|
|
|
|
pub const pin_kdf_t: u32 = 3;
|
|
pub const pin_kdf_m_kib: u32 = 65536;
|
|
pub const pin_kdf_p: u24 = 1;
|
|
pub const pin_salt_len: usize = 16;
|
|
pub const pin_hash_len: usize = 32;
|
|
|
|
pub const login_max_attempts: ck.CK_ULONG = 3;
|
|
|
|
pub const token_path_env = "ANGELAMOS_HSM_TOKEN";
|
|
pub const token_path_default = ".angelamos-hsm-token";
|
|
pub const token_record_magic: u32 = 0x484D5331;
|
|
pub const token_record_version: u32 = 2;
|
|
pub const path_buf_len: usize = 4096;
|
|
pub const token_read_limit: usize = 512;
|
|
pub const label_len: usize = 32;
|
|
|
|
pub const object_path_env = "ANGELAMOS_HSM_OBJECTS";
|
|
pub const object_path_default = ".angelamos-hsm-objects";
|
|
pub const object_record_magic: u32 = 0x484D4F31;
|
|
pub const object_record_version: u32 = 2;
|
|
pub const object_read_limit: usize = 4 * 1024 * 1024;
|
|
pub const max_objects: usize = 256;
|
|
pub const max_attributes_per_object: usize = 64;
|
|
pub const max_attr_value_len: usize = 64 * 1024;
|
|
|
|
pub const aes_block_len: usize = 16;
|
|
pub const gcm_iv_len: usize = 12;
|
|
pub const gcm_iv_bits: ck.CK_ULONG = 96;
|
|
pub const gcm_tag_len: usize = 16;
|
|
pub const gcm_tag_bits: ck.CK_ULONG = 128;
|
|
pub const max_gcm_aad_len: usize = 256;
|
|
pub const max_gcm_stream_len: usize = 16 * 1024 * 1024;
|
|
|
|
pub const master_key_len: usize = 32;
|
|
|
|
pub const op_state_version: u8 = 1;
|
|
pub const op_state_header_len: usize = 2;
|
|
|
|
pub const supported_mechanisms = [_]ck.CK_MECHANISM_TYPE{
|
|
ck.CKM_SHA256,
|
|
ck.CKM_SHA384,
|
|
ck.CKM_SHA512,
|
|
ck.CKM_SHA256_HMAC,
|
|
ck.CKM_SHA384_HMAC,
|
|
ck.CKM_SHA512_HMAC,
|
|
ck.CKM_AES_KEY_GEN,
|
|
ck.CKM_AES_CBC,
|
|
ck.CKM_AES_CBC_PAD,
|
|
ck.CKM_AES_GCM,
|
|
ck.CKM_EC_KEY_PAIR_GEN,
|
|
ck.CKM_ECDSA,
|
|
ck.CKM_ECDSA_SHA256,
|
|
ck.CKM_ECDH1_DERIVE,
|
|
ck.CKM_RSA_PKCS_KEY_PAIR_GEN,
|
|
ck.CKM_RSA_PKCS,
|
|
ck.CKM_SHA256_RSA_PKCS,
|
|
ck.CKM_RSA_PKCS_PSS,
|
|
ck.CKM_SHA256_RSA_PKCS_PSS,
|
|
ck.CKM_RSA_PKCS_OAEP,
|
|
ck.CKM_AES_KEY_WRAP,
|
|
};
|