Added 3 more TPM2 Plugin APIs
[aaf/sshsm.git] / TPM2-Plugin / lib / include / tpm2_plugin_api.h
index 2a0ace0..d96d2f9 100644 (file)
@@ -141,51 +141,67 @@ typedef struct {
     int       version;
 } common_opts_t;
 
+#define MAX_DATA_SIGNUPDATE  0x2000
+#define MAX_SESSIONS  0x1000
+
+typedef struct concatenate_data_signupdate {
+    unsigned long int session_handle;
+    unsigned char data_signupdate[MAX_DATA_SIGNUPDATE];
+    int data_length;
+}CONCATENATE_DATA_SIGNUPDATE_t;
+
 int tpm2_plugin_init();
 int tpm2_plugin_uninit();
 int tpm2_plugin_activate(SSHSM_HW_PLUGIN_ACTIVATE_LOAD_IN_INFO_t *activate_in_info);
 int tpm2_plugin_load_key(
            SSHSM_HW_PLUGIN_ACTIVATE_LOAD_IN_INFO_t *loadkey_in_info,
-           void **keyHandle
+           void **keyHandle,
+           SSHSM_HW_PLUGIN_IMPORT_PUBLIC_KEY_INFO_t *importkey_info
         );
 
-int tpm2_rsa_create_object(
-                        unsigned long appHandle,
-                        //DhsmWPKRSAFormat* wpk,
-                        void *wpk,
-                        unsigned char* swk,
-                        int swk_len,
-                        unsigned char* iv,
-                        int iv_len,
-                        int tag_len,
-                        void **cb_object);
-
-int tpm2_rsa_delete_object(
-                        void *cb_object);
-
 int tpm2_plugin_rsa_sign_init(
         void *keyHandle,
         unsigned long mechanism,
         void *param,
-        int len);
+        int len,
+        void **plugin_data_ref
+        );
 
 int tpm2_plugin_rsa_sign(
         void *keyHandle,
         unsigned long mechanism,
         unsigned char *msg,
         int msg_len,
+        void *plugin_data_ref,
         unsigned char *sig,
-        int *sig_len);
+        int *sig_len
+        );
+
+int tpm2_plugin_rsa_sign_update(
+        void *keyHandle,
+        unsigned long mechnaism,
+        unsigned char *msg,
+        int msg_len,
+        void *plugin_data_ref
+        );
+
+int tpm2_plugin_rsa_sign_final(
+        void *keyHandle,
+        unsigned long mechnaism,
+        void *plugin_data_ref,
+        unsigned char *outsig,
+        int *outsiglen
+        );
 
+/** This function is called by SSHSM only if there sign_final function is not called.
+If sign_final function is called, it is assumed that plugin would have cleaned this up.
+***/
 
-int tpm2_import_object(
-        unsigned long appHandle,
-        unsigned char* tlvbuffer,
-        int buflen,
-        unsigned char* iv,
-        int iv_len,
-        unsigned char* tpm_pwd,
-        int tpm_pwd_len);
+typedef int (*sshsm_hw_plugin_rsa_sign_cleanup)(
+        void *keyHandle,
+        unsigned long mechnaism,
+        void *plugin_data_ref
+        );
 
 
 #ifdef __cplusplus