summaryrefslogtreecommitdiff
path: root/ckcapi.h
diff options
context:
space:
mode:
Diffstat (limited to 'ckcapi.h')
-rw-r--r--ckcapi.h48
1 files changed, 39 insertions, 9 deletions
diff --git a/ckcapi.h b/ckcapi.h
index d6ee27b..d3ead45 100644
--- a/ckcapi.h
+++ b/ckcapi.h
@@ -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 */