TEST(SKF_CONTAINER_MANAGE,SKF_ImportCertificate_Test) { ULONG result; LPSTR containerName; ULONG containerType; SKF_ImportCertificate skf_importCertificate = SKF_ImportCertificate(GetProcAddress(hmodule,"SKF_ImportCertificate")); result = skf_importCertificate(hContainer,FALSE,NULL,0); EXPECT_EQ(0,(int)result); }
DWORD WINAPI ThreadFuncSKFImportCerts(LPVOID aThisClass) { CClassCommon * thisClass = (CClassCommon*)aThisClass; char szDevNameLists[BUFFER_LEN_1K] = {0}; char szAppNameLists[BUFFER_LEN_1K] = {0}; char szConNameLists[BUFFER_LEN_1K]; ULONG ulDevNameLists = BUFFER_LEN_1K; ULONG ulAppNameLists = BUFFER_LEN_1K; ULONG ulConNameLists = BUFFER_LEN_1K; HANDLE hDevSKF = NULL; HANDLE hConSKF = NULL; HANDLE hAppSKF = NULL; // 枚举设备 thisClass->ulResult = SKF_EnumDev(TRUE,szDevNameLists,&ulDevNameLists); if(thisClass->ulResult) { goto err; } if(ulDevNameLists < 2) { thisClass->ulResult = OPE_ERR_NO_DEV; goto err; } // 打开设备 thisClass->ulResult = SKF_ConnectDev(szDevNameLists,&hDevSKF); if(ulDevNameLists < 2) { goto err; } thisClass->ulResult = SKF_EnumApplication(hDevSKF,szAppNameLists, &ulAppNameLists); // 设备认证或者打开一个应用 if (ulAppNameLists < 2) { thisClass->ulResult = FuncSKF_DevAuth(hDevSKF,&hAppSKF,(thisClass->m_szPIN),8); } else { thisClass->ulResult = SKF_OpenApplication(hDevSKF, szAppNameLists,&hAppSKF); } // 验证密码 thisClass->ulResult = SKF_VerifyPIN(hAppSKF, 1, (thisClass->m_szPIN),&(thisClass->m_ulRetry)); if(thisClass->ulResult) { goto err; } // 枚举容器 thisClass->ulResult = SKF_EnumContainer(hAppSKF,szConNameLists,&ulConNameLists); if(thisClass->ulResult) { goto err; } // 创建或打开容器 if (ulConNameLists < 2) { thisClass->ulResult = SKF_CreateContainer(hAppSKF, DEFAULT_CONTAINER, &hConSKF); } else { thisClass->ulResult = SKF_OpenContainer(hAppSKF, szConNameLists, &hConSKF); } if(thisClass->ulResult) { goto err; } // 导入证书 thisClass->ulResult = SKF_ImportCertificate(hConSKF, 1, thisClass->m_szCertSIGN,thisClass->m_iCertSIGNLen); if(thisClass->ulResult) { goto err; } // 导入证书 thisClass->ulResult = SKF_ImportCertificate(hConSKF, 0, thisClass->m_szCertEX,thisClass->m_iCertEXLen); if(thisClass->ulResult) { goto err; } // 拷贝签名公钥 memcpy(thisClass->m_szPublicKeyEX, thisClass->m_stEnvelopedKeyBlobEX.PubKey.XCoordinate + SM2_BYTES_LEN, SM2_BYTES_LEN); memcpy(thisClass->m_szPublicKeyEX+SM2_BYTES_LEN, thisClass->m_stEnvelopedKeyBlobEX.PubKey.YCoordinate + SM2_BYTES_LEN, SM2_BYTES_LEN); FILE_LOG_FMT(file_log_name, "%s %d %d", __FUNCTION__, __LINE__, 1); FILE_LOG_HEX(file_log_name,thisClass->m_szPublicKeyEX,SM2_BYTES_LEN * 2); err: if (hConSKF) { SKF_CloseContainer(hConSKF); } if (hAppSKF) { SKF_CloseApplication(hAppSKF); } if (hDevSKF) { SKF_DisConnectDev(hDevSKF); } return 0; }