95 lines
3.9 KiB
Zig
95 lines
3.9 KiB
Zig
// ©AngelaMos | 2026
|
|
// main.zig
|
|
|
|
const std = @import("std");
|
|
const ck = @import("ck.zig");
|
|
const general = @import("api/general.zig");
|
|
const slot_token = @import("api/slot_token.zig");
|
|
const session = @import("api/session.zig");
|
|
const object = @import("api/object.zig");
|
|
const crypto_ops = @import("api/crypto_ops.zig");
|
|
const keymgmt = @import("api/keymgmt.zig");
|
|
const random = @import("api/random.zig");
|
|
|
|
comptime {
|
|
std.debug.assert(@sizeOf(ck.CK_FUNCTION_LIST) == 69 * @sizeOf(usize));
|
|
std.debug.assert(@sizeOf(ck.CK_ATTRIBUTE) == 24);
|
|
}
|
|
|
|
export fn C_GetFunctionList(ppFunctionList: *?*ck.CK_FUNCTION_LIST) callconv(.c) ck.CK_RV {
|
|
ppFunctionList.* = &function_list;
|
|
return ck.CKR_OK;
|
|
}
|
|
|
|
var function_list: ck.CK_FUNCTION_LIST = .{
|
|
.version = ck.CK_VERSION{ .major = 2, .minor = 40 },
|
|
.C_Initialize = general.C_Initialize,
|
|
.C_Finalize = general.C_Finalize,
|
|
.C_GetInfo = general.C_GetInfo,
|
|
.C_GetFunctionList = C_GetFunctionList,
|
|
.C_GetSlotList = slot_token.C_GetSlotList,
|
|
.C_GetSlotInfo = slot_token.C_GetSlotInfo,
|
|
.C_GetTokenInfo = slot_token.C_GetTokenInfo,
|
|
.C_GetMechanismList = slot_token.C_GetMechanismList,
|
|
.C_GetMechanismInfo = slot_token.C_GetMechanismInfo,
|
|
.C_InitToken = slot_token.C_InitToken,
|
|
.C_InitPIN = slot_token.C_InitPIN,
|
|
.C_SetPIN = slot_token.C_SetPIN,
|
|
.C_OpenSession = session.C_OpenSession,
|
|
.C_CloseSession = session.C_CloseSession,
|
|
.C_CloseAllSessions = session.C_CloseAllSessions,
|
|
.C_GetSessionInfo = session.C_GetSessionInfo,
|
|
.C_GetOperationState = session.C_GetOperationState,
|
|
.C_SetOperationState = session.C_SetOperationState,
|
|
.C_Login = session.C_Login,
|
|
.C_Logout = session.C_Logout,
|
|
.C_CreateObject = object.C_CreateObject,
|
|
.C_CopyObject = object.C_CopyObject,
|
|
.C_DestroyObject = object.C_DestroyObject,
|
|
.C_GetObjectSize = object.C_GetObjectSize,
|
|
.C_GetAttributeValue = object.C_GetAttributeValue,
|
|
.C_SetAttributeValue = object.C_SetAttributeValue,
|
|
.C_FindObjectsInit = object.C_FindObjectsInit,
|
|
.C_FindObjects = object.C_FindObjects,
|
|
.C_FindObjectsFinal = object.C_FindObjectsFinal,
|
|
.C_EncryptInit = crypto_ops.C_EncryptInit,
|
|
.C_Encrypt = crypto_ops.C_Encrypt,
|
|
.C_EncryptUpdate = crypto_ops.C_EncryptUpdate,
|
|
.C_EncryptFinal = crypto_ops.C_EncryptFinal,
|
|
.C_DecryptInit = crypto_ops.C_DecryptInit,
|
|
.C_Decrypt = crypto_ops.C_Decrypt,
|
|
.C_DecryptUpdate = crypto_ops.C_DecryptUpdate,
|
|
.C_DecryptFinal = crypto_ops.C_DecryptFinal,
|
|
.C_DigestInit = crypto_ops.C_DigestInit,
|
|
.C_Digest = crypto_ops.C_Digest,
|
|
.C_DigestUpdate = crypto_ops.C_DigestUpdate,
|
|
.C_DigestKey = crypto_ops.C_DigestKey,
|
|
.C_DigestFinal = crypto_ops.C_DigestFinal,
|
|
.C_SignInit = crypto_ops.C_SignInit,
|
|
.C_Sign = crypto_ops.C_Sign,
|
|
.C_SignUpdate = crypto_ops.C_SignUpdate,
|
|
.C_SignFinal = crypto_ops.C_SignFinal,
|
|
.C_SignRecoverInit = crypto_ops.C_SignRecoverInit,
|
|
.C_SignRecover = crypto_ops.C_SignRecover,
|
|
.C_VerifyInit = crypto_ops.C_VerifyInit,
|
|
.C_Verify = crypto_ops.C_Verify,
|
|
.C_VerifyUpdate = crypto_ops.C_VerifyUpdate,
|
|
.C_VerifyFinal = crypto_ops.C_VerifyFinal,
|
|
.C_VerifyRecoverInit = crypto_ops.C_VerifyRecoverInit,
|
|
.C_VerifyRecover = crypto_ops.C_VerifyRecover,
|
|
.C_DigestEncryptUpdate = crypto_ops.C_DigestEncryptUpdate,
|
|
.C_DecryptDigestUpdate = crypto_ops.C_DecryptDigestUpdate,
|
|
.C_SignEncryptUpdate = crypto_ops.C_SignEncryptUpdate,
|
|
.C_DecryptVerifyUpdate = crypto_ops.C_DecryptVerifyUpdate,
|
|
.C_GenerateKey = keymgmt.C_GenerateKey,
|
|
.C_GenerateKeyPair = keymgmt.C_GenerateKeyPair,
|
|
.C_WrapKey = keymgmt.C_WrapKey,
|
|
.C_UnwrapKey = keymgmt.C_UnwrapKey,
|
|
.C_DeriveKey = keymgmt.C_DeriveKey,
|
|
.C_SeedRandom = random.C_SeedRandom,
|
|
.C_GenerateRandom = random.C_GenerateRandom,
|
|
.C_GetFunctionStatus = general.C_GetFunctionStatus,
|
|
.C_CancelFunction = general.C_CancelFunction,
|
|
.C_WaitForSlotEvent = general.C_WaitForSlotEvent,
|
|
};
|