⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 digest_func.c

📁 IBM的Linux上的PKCS#11实现
💻 C
📖 第 1 页 / 共 5 页
字号:
         return FALSE;      }   }   // test 2   //   {      CK_OBJECT_HANDLE  h_key;      CK_OBJECT_CLASS   key_class  = CKO_SECRET_KEY;      CK_KEY_TYPE       key_type   = CKK_GENERIC_SECRET;      CK_BBOOL          false      = FALSE;      CK_BYTE           hash[MD5_HASH_LEN];      CK_BYTE           data[40];      CK_BYTE           expect[] = { 0x75, 0x0c, 0x78, 0x3e, 0x6a, 0xb0, 0xb5,                                     0x03, 0xea, 0xa8, 0x6e, 0x31, 0x0a, 0x5d,                                     0xb7, 0x38 };      CK_BYTE           key_data[] = { 'J', 'e', 'f', 'e' };      CK_ULONG          hash_len;      CK_ULONG          data_len;      CK_ATTRIBUTE      key_attribs[] =      {          {CKA_CLASS,       &key_class,        sizeof(key_class)    },          {CKA_KEY_TYPE,    &key_type,         sizeof(key_type)     },          {CKA_TOKEN,       &false,            sizeof(false)        },          {CKA_VALUE,       &key_data,         sizeof(key_data)     }      };      memcpy( data, "what do ya want for nothing?", 28 );      data_len = 28;      rc = funcs->C_CreateObject( session, key_attribs, 4, &h_key );      if (rc != CKR_OK) {         show_error("   C_CreateObject #2", rc );         return FALSE;      }      rc = funcs->C_SignInit( session, &mech, h_key );      if (rc != CKR_OK) {         show_error("   C_SignInit #2", rc );         return FALSE;      }      hash_len = sizeof(hash);      rc = funcs->C_Sign( session, data, data_len, hash, &hash_len );      if (rc != CKR_OK) {         show_error("  C_Sign #2", rc );         return FALSE;      }      if (hash_len != MD5_HASH_LEN) {         printf("   Error:  C_Sign #2 generated bad HMAC length\n");         return FALSE;      }      if (memcmp(hash, expect, hash_len) != 0) {         printf("   Error:  C_Sign #2 generated bad HMAC\n");         return FALSE;      }      rc = funcs->C_VerifyInit( session, &mech, h_key );      if (rc != CKR_OK) {         show_error("   C_VerifyInit #2", rc );         return FALSE;      }      rc = funcs->C_Verify( session, data, data_len, hash, hash_len );      if (rc != CKR_OK) {         show_error("   C_Verify #2", rc );         return FALSE;      }      rc = funcs->C_DestroyObject( session, h_key );      if (rc != CKR_OK) {         show_error("   C_DestroyObject #2", rc );         return FALSE;      }   }   // test 3   //   {      CK_OBJECT_HANDLE  h_key;      CK_OBJECT_CLASS   key_class  = CKO_SECRET_KEY;      CK_KEY_TYPE       key_type   = CKK_GENERIC_SECRET;      CK_BBOOL          false      = FALSE;      CK_BYTE           hash[MD5_HASH_LEN];      CK_BYTE           data[50];      CK_BYTE           expect[] = { 0x56, 0xbe, 0x34, 0x52, 0x1d, 0x14, 0x4c,                                     0x88, 0xdb, 0xb8, 0xc7, 0x33, 0xf0, 0xe8,                                     0xb3, 0xf6 };      CK_BYTE           key_data[] = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa };      CK_ULONG          hash_len;      CK_ULONG          data_len;      CK_ATTRIBUTE      key_attribs[] =      {          {CKA_CLASS,       &key_class,        sizeof(key_class)    },          {CKA_KEY_TYPE,    &key_type,         sizeof(key_type)     },          {CKA_TOKEN,       &false,            sizeof(false)        },          {CKA_VALUE,       &key_data,         sizeof(key_data)     }      };      memset( data, 0xDD, 50 );      data_len = 50;      rc = funcs->C_CreateObject( session, key_attribs, 4, &h_key );      if (rc != CKR_OK) {         show_error("   C_CreateObject #3", rc );         return FALSE;      }      rc = funcs->C_SignInit( session, &mech, h_key );      if (rc != CKR_OK) {         show_error("   C_SignInit #3", rc );         return FALSE;      }      hash_len = sizeof(hash);      rc = funcs->C_Sign( session, data, data_len, hash, &hash_len );      if (rc != CKR_OK) {         show_error("  C_Sign #3", rc );         return FALSE;      }      if (hash_len != MD5_HASH_LEN) {         printf("   Error:  C_Sign #3 generated bad HMAC length\n");         return FALSE;      }      if (memcmp(hash, expect, hash_len) != 0) {         printf("   Error:  C_Sign #3 generated bad HMAC\n");         return FALSE;      }      rc = funcs->C_VerifyInit( session, &mech, h_key );      if (rc != CKR_OK) {         show_error("   C_VerifyInit #3", rc );         return FALSE;      }      rc = funcs->C_Verify( session, data, data_len, hash, hash_len );      if (rc != CKR_OK) {         show_error("   C_Verify #3", rc );         return FALSE;      }      rc = funcs->C_DestroyObject( session, h_key );      if (rc != CKR_OK) {         show_error("   C_DestroyObject #3", rc );         return FALSE;      }   }   // test 4   //   {      CK_OBJECT_HANDLE  h_key;      CK_OBJECT_CLASS   key_class  = CKO_SECRET_KEY;      CK_KEY_TYPE       key_type   = CKK_GENERIC_SECRET;      CK_BBOOL          false      = FALSE;      CK_BYTE           hash[MD5_HASH_LEN];      CK_BYTE           data[50];      CK_BYTE           expect[] = { 0x69, 0x7e, 0xaf, 0x0a, 0xca, 0x3a, 0x3a,                                     0xea, 0x3a, 0x75, 0x16, 0x47, 0x46, 0xff,                                     0xaa, 0x79 };      CK_BYTE           key_data[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,                                       0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,                                       0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15,                                       0x16, 0x17, 0x18, 0x19 };      CK_ULONG          hash_len;      CK_ULONG          data_len;      CK_ATTRIBUTE      key_attribs[] =      {          {CKA_CLASS,       &key_class,        sizeof(key_class)    },          {CKA_KEY_TYPE,    &key_type,         sizeof(key_type)     },          {CKA_TOKEN,       &false,            sizeof(false)        },          {CKA_VALUE,       &key_data,         sizeof(key_data)     }      };      memset( data, 0xCD, 50 );      data_len = 50;      rc = funcs->C_CreateObject( session, key_attribs, 4, &h_key );      if (rc != CKR_OK) {         show_error("   C_CreateObject #4", rc );         return FALSE;      }      rc = funcs->C_SignInit( session, &mech, h_key );      if (rc != CKR_OK) {         show_error("   C_SignInit #4", rc );         return FALSE;      }      hash_len = sizeof(hash);      rc = funcs->C_Sign( session, data, data_len, hash, &hash_len );      if (rc != CKR_OK) {         show_error("  C_Sign #4", rc );         return FALSE;      }      if (hash_len != MD5_HASH_LEN) {         printf("   Error:  C_Sign #4 generated bad HMAC length\n");         return FALSE;      }      if (memcmp(hash, expect, hash_len) != 0) {         printf("   Error:  C_Sign #4 generated bad HMAC\n");         return FALSE;      }      rc = funcs->C_VerifyInit( session, &mech, h_key );      if (rc != CKR_OK) {         show_error("   C_VerifyInit #4", rc );         return FALSE;      }      rc = funcs->C_Verify( session, data, data_len, hash, hash_len );      if (rc != CKR_OK) {         show_error("   C_Verify #4", rc );         return FALSE;      }      rc = funcs->C_DestroyObject( session, h_key );      if (rc != CKR_OK) {         show_error("   C_DestroyObject #4", rc );         return FALSE;      }   }   // test 5   //   {      CK_OBJECT_HANDLE  h_key;      CK_OBJECT_CLASS   key_class  = CKO_SECRET_KEY;      CK_KEY_TYPE       key_type   = CKK_GENERIC_SECRET;      CK_BBOOL          false      = FALSE;      CK_BYTE           hash[MD5_HASH_LEN];      CK_BYTE           data[50];      CK_BYTE           expect[] = { 0x56, 0x46, 0x1e, 0xf2, 0x34, 0x2e, 0xdc,                                     0x00, 0xf9, 0xba, 0xb9, 0x95, 0x69, 0x0e,                                     0xfd, 0x4c };      CK_BYTE           key_data[] = { 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,                                       0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,                                       0x0c, 0x0c };      CK_ULONG          hash_len;      CK_ULONG          data_len;      CK_ATTRIBUTE      key_attribs[] =      {          {CKA_CLASS,       &key_class,        sizeof(key_class)    },          {CKA_KEY_TYPE,    &key_type,         sizeof(key_type)     },          {CKA_TOKEN,       &false,            sizeof(false)        },          {CKA_VALUE,       &key_data,         sizeof(key_data)     }      };      strcpy( data, "Test With Truncation" );      data_len = 20;      rc = funcs->C_CreateObject( session, key_attribs, 4, &h_key );      if (rc != CKR_OK) {         show_error("   C_CreateObject #5", rc );         return FALSE;      }      rc = funcs->C_SignInit( session, &mech, h_key );      if (rc != CKR_OK) {         show_error("   C_SignInit #5", rc );         return FALSE;      }      hash_len = sizeof(hash);      rc = funcs->C_Sign( session, data, data_len, hash, &hash_len );      if (rc != CKR_OK) {         show_error("  C_Sign #5", rc );         return FALSE;      }      if (hash_len != MD5_HASH_LEN) {         printf("   Error:  C_Sign #5 generated bad HMAC length\n");         return FALSE;      }      if (memcmp(hash, expect, hash_len) != 0) {         printf("   Error:  C_Sign #5 generated bad HMAC\n");         return FALSE;      }      rc = funcs->C_VerifyInit( session, &mech, h_key );      if (rc != CKR_OK) {         show_error("   C_VerifyInit #5", rc );         return FALSE;      }      rc = funcs->C_Verify( session, data, data_len, hash, hash_len );      if (rc != CKR_OK) {         show_error("   C_Verify #5", rc );         return FALSE;      }      rc = funcs->C_DestroyObject( session, h_key );      if (rc != CKR_OK) {         show_error("   C_DestroyObject #5", rc );         return FALSE;      }   }   // test 6   //   {      CK_OBJECT_HANDLE  h_key;      CK_OBJECT_CLASS   key_class  = CKO_SECRET_KEY;      CK_KEY_TYPE       key_type   = CKK_GENERIC_SECRET;      CK_BBOOL          false      = FALSE;      CK_BYTE           hash[MD5_HASH_LEN];      CK_BYTE           data[60];      CK_BYTE           expect[] = { 0x6b, 0x1a, 0xb7, 0xfe, 0x4b, 0xd7, 0xbf, 0x8f,                                     0x0b, 0x62, 0xe6, 0xce, 0x61, 0xb9, 0xd0, 0xcd };      CK_BYTE           key_data[] = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa };      CK_ULONG          hash_len;      CK_ULONG          data_len;      CK_ATTRIBUTE      key_attribs[] =      {          {CKA_CLASS,       &key_class,        sizeof(key_class)    },          {CKA_KEY_TYPE,    &key_type,         sizeof(key_type)     },          {CKA_TOKEN,       &false,            sizeof(false)        },          {CKA_VALUE,       &key_data,         sizeof(key_data)     }      };      strcpy( data, "Test Using Larger Than Block-Size Key - Hash Key First" );      data_len = 54;      rc = funcs->C_CreateObject( session, key_attribs, 4, &h_key );      if (rc != CKR_OK) {         show_error("   C_CreateObject #6", rc );         return FALSE;      }      rc = funcs->C_SignInit( session, &mech, h_key );      if (rc != CKR_OK) {         show_error("   C_SignInit #6", rc );         return FALSE;      }      hash_len = sizeof(hash);      rc = funcs->C_Sign( session, data, data_len, hash, &hash_len );      if (rc != CKR_OK) {         show_error("  C_Sign #6", rc );         return FALSE;      }      if (hash_len != MD5_HASH_LEN) {         printf("   Error:  C_Sign #6 generated bad HMAC length\n");         return FALSE;      }      if (memcmp(hash, expect, hash_len) != 0) {         printf("   Error:  C_Sign #6 generated bad HMAC\n");         return FALSE;      }      rc = funcs->C_VerifyInit( session, &mech, h_key );      if (rc != CKR_OK) {         show_error("   C_VerifyInit #6", rc );         return FALSE;      }      rc = funcs->C_Verify( session, data, data_len, hash, hash_len );      if (rc != CKR_OK) {         show_error("   C_Verify #6", rc );         return FALSE;      }      rc = funcs->C_DestroyObject( session, h_key );      if (rc != CKR_OK) {         show_error("   C_DestroyObject #6", rc );         return FALSE;      }   }   // test 7   //   {      CK_OBJECT_HANDLE  h_key;      CK_OBJECT_CLASS   key_class  = CKO_SECRET_KEY;      CK_KEY_TYPE       key_type   = CKK_GENERIC_SECRET;      CK_BBOOL          false      = FALSE;      CK_BYTE           hash[MD5_HASH_LEN];      CK_BYTE           data[80];      CK_BYTE           expect[] = { 0x6f, 0x63, 0x0f, 0xad, 0x67, 0xcd, 0xa0, 0xee,                                     0x1f, 0xb1, 0xf5, 0x62, 0xdb, 0x3a, 0xa5, 0x3e };      CK_BYTE           key_data[] = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,                                       0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa };      CK_ULONG          hash_len;      CK_ULONG          data_len;      CK_ATTRIBUTE      key_attribs[] =      {          {CKA_CLASS,       &key_class,        sizeof(key_class)    },          {CKA_KEY_TYPE,    &key_type,         sizeof(key_type)     },          {CKA_TOKEN,       &false,            sizeof(false)        },          {CKA_VALUE,       &key_data,         sizeof(key_data)     }      };      strcpy( data, "Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data" );      data_len = 73;      rc = funcs->C_CreateObject( session, key_attribs, 4, &h_key );      if (rc != CKR_OK) {         show_error("   C_CreateObject #7", rc );         return FALSE;      }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -