Utility to Import external RSA pem key into TPM
[aaf/sshsm.git] / tpm-util / import / util.c
diff --git a/tpm-util/import/util.c b/tpm-util/import/util.c
new file mode 100644 (file)
index 0000000..a0038a5
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ * Copyright 2018 Intel Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *     Unless required by applicable law or agreed to in writing, software
+ *     distributed under the License is distributed on an "AS IS" BASIS,
+ *     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *     See the License for the specific language governing permissions and
+ *     limitations under the License.
+ */
+// Author: Arun Kumar Sekar
+
+
+#include "tpm_wrapper.h"
+
+int saveDataToFile(const char *fileName, UINT8 *buf, UINT16 size)
+{
+    FILE *f;
+    UINT16 count = 1;
+    if( fileName == NULL || buf == NULL || size == 0 )
+        return -1;
+
+    f = fopen(fileName, "wb+");
+    if( f == NULL ) {
+        printf("File(%s) open error.\n", fileName);
+        return -2;
+    }
+
+    while( size > 0 && count > 0 ) {
+        count = fwrite(buf, 1, size, f);
+        size -= count;
+        buf += count;
+    }
+
+    if( size > 0 ) {
+        printf("File write error\n");
+        fclose(f);
+        return -3;
+    }
+
+    fclose(f);
+    return 0;
+}
+
+int loadDataFromFile(const char *fileName, UINT8 *buf, UINT16 *size)
+{
+    UINT16 count = 1, left;
+    FILE *f;
+    if ( size == NULL || buf == NULL || fileName == NULL )
+        return -1;
+
+    f = fopen(fileName, "rb+");
+    if( f == NULL ) {
+        printf("File(%s) open error.\n", fileName);
+        return -2;
+    }
+
+    left = *size;
+    *size = 0;
+    while( left > 0 && count > 0 ) {
+        count = fread(buf, 1, left, f);
+        *size += count;
+        left -= count;
+        buf += count;
+    }
+
+    if( *size == 0 ) {
+        printf("File read error\n");
+        fclose(f);
+        return -3;
+    }
+    fclose(f);
+    return 0;
+}
+
+void hex_log(UINT8 *pData, UINT32 numBytes, const char* caption)
+{
+    int i = 0;
+
+    if(NULL == pData)
+    {
+        return;
+    }
+    if(caption != NULL)
+    {
+        printf("\n=== %s ===\n", caption);
+    }
+    printf("size: %d \n", numBytes);
+
+    for(i = 0; i < numBytes; i++)
+    {
+        printf("%02X ", pData[i]);
+
+        if (!((i + 1) % 16))
+          printf("\n");
+    }
+    printf("\n");
+}
+