diff options
Diffstat (limited to 'ckcapi.h')
-rw-r--r-- | ckcapi.h | 48 |
1 files changed, 39 insertions, 9 deletions
@@ -21,6 +21,9 @@ struct _CkCapiSession; typedef struct _CkCapiObject CkCapiObject; typedef struct _CkCapiSession CkCapiSession; +/* Represents 'any' class in searches */ +#define CKO_ANY CK_INVALID_HANDLE + /* ------------------------------------------------------------------ * cryptoki-capi.c */ @@ -33,6 +36,9 @@ void ckcapi_lock_global(void); void ckcapi_unlock_global(void); CK_RV ckcapi_winerr_to_ckr (DWORD werr); +CK_RV ckcapi_return_data(CK_VOID_PTR dst, CK_ULONG_PTR dlen, + CK_VOID_PTR src, DWORD slen); + /* object data ------------------- */ typedef CK_RV (*CkCapiGetAttribute)(void* obj, CK_ATTRIBUTE_TYPE type, @@ -126,16 +132,18 @@ void ckcapi_session_enum_object_data (CkCapiSession* sess, CkCapiEnumObjectData * ckcapi-object.c */ -/* For operation_type in CkCapiSession */ +/* Used internally to guarantee uniqueness between object types */ enum { OBJECT_CERT = 1, - OBJECT_BUILTIN = 2 + OBJECT_BUILTIN = 2, + OBJECT_TRUST = 3 }; typedef CK_RV (*CkCapiPurge)(struct _CkCapiObject* obj); -typedef CK_RV (*CkCapiLoadData)(struct _CkCapiObject* obj, CkCapiObjectData* objdata); +typedef CK_RV (*CkCapiLoadData)(CkCapiSession* sess, struct _CkCapiObject* obj, + CkCapiObjectData* objdata); typedef struct _CkCapiObjectVtable { @@ -176,6 +184,8 @@ struct _CkCapiObject #define DBGO(obj, msg) \ ckcapi_debug("O%d: %s", (obj) ? (obj)->id : 0, (msg)) +#define DBGOD(objdata, msg) \ + ckcapi_debug("O%d: %s", (objdata) ? (objdata)->obj : 0, (msg)) CK_OBJECT_HANDLE ckcapi_object_get_max_handle (void); @@ -199,18 +209,38 @@ CK_RV ckcapi_object_data_get_attrs (CkCapiObjectData* objdata, CK_ATTRIBUTE_P * ckcapi-cert.c */ -CK_RV ckcapi_cert_find_all (CkCapiSession* sess, CK_ATTRIBUTE_PTR match, - CK_ULONG count, CkCapiArray* arr); +CK_RV ckcapi_cert_find (CkCapiSession* sess, CK_OBJECT_CLASS cls, + CK_ATTRIBUTE_PTR match, CK_ULONG count, + CkCapiArray* arr); -CK_RV ckcapi_cert_find_in_store (CkCapiSession* sess, const char* store_name, - CK_ATTRIBUTE_PTR match, CK_ULONG count, CkCapiArray* arr); +CK_RV ckcapi_cert_find_specific (CkCapiSession* sess, CK_OBJECT_CLASS cls, + CK_ATTRIBUTE_PTR issuer, CK_ATTRIBUTE_PTR serial, + CK_OBJECT_HANDLE_PTR obj); + +/* Called by trust stuff */ +CK_RV ckcapi_cert_get_bytes_attribute (void* cert, CK_ATTRIBUTE_TYPE type, + CK_VOID_PTR data, CK_ULONG_PTR len); /* ------------------------------------------------------------------- * ckcapi-builtin.c */ -CK_RV ckcapi_builtin_find_all (CkCapiSession* sess, CK_ATTRIBUTE_PTR match, - CK_ULONG count, CkCapiArray* arr); +CK_RV ckcapi_builtin_find (CkCapiSession* sess, CK_OBJECT_CLASS cls, + CK_ATTRIBUTE_PTR match, CK_ULONG count, + CkCapiArray* arr); + +/* ------------------------------------------------------------------- + * ckcapi-trust.c + */ + +CK_RV ckcapi_trust_find (CkCapiSession* sess, CK_OBJECT_CLASS cls, + CK_ATTRIBUTE_PTR match, CK_ULONG count, + CkCapiArray* arr); + +CK_RV ckcapi_trust_find_specific (CkCapiSession* sess, CK_OBJECT_CLASS cls, + CK_ATTRIBUTE_PTR issuer, CK_ATTRIBUTE_PTR serial, + CK_OBJECT_HANDLE_PTR obj); + #endif /* CRYPTOKI_CAPI_H */ |