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

📄 api_interface.c

📁 IBM的Linux上的PKCS#11实现
💻 C
📖 第 1 页 / 共 5 页
字号:
      st_err_log(40, __FILE__, __LINE__);      return CKR_SESSION_HANDLE_INVALID;   }   // Get local pointers to session   slotID = rSession.slotID;   sltp = &(Anchor->SltList[slotID]);   if (sltp->DLLoaded == FALSE ){      st_err_log(50, __FILE__, __LINE__);            return CKR_TOKEN_NOT_PRESENT;   }   if ( (fcn=sltp->FcnList) == NULL ){      st_err_log(50, __FILE__, __LINE__);      return CKR_TOKEN_NOT_PRESENT;   }   if (fcn->ST_DestroyObject){      // Map the Session to the slot session      rv = fcn->ST_DestroyObject(rSession,hObject);      LOGIT(LOG_DEBUG,"Called STDLL rv = 0x%x",rv);   } else {      st_err_log(142, __FILE__, __LINE__, __FUNCTION__);       rv = CKR_FUNCTION_NOT_SUPPORTED;   }   return rv;} // end of C_DestroyObject//------------------------------------------------------------------------// API function C_Digest   //------------------------------------------------------------------------CK_RV CK_ENTRY C_Digest ( CK_SESSION_HANDLE hSession,                 CK_BYTE_PTR       pData,                 CK_ULONG          ulDataLen,                 CK_BYTE_PTR       pDigest,                 CK_ULONG_PTR      pulDigestLen               ){   CK_RV   rv;   API_Slot_t  *sltp;   STDLL_FcnList_t  *fcn;   CK_SLOT_ID        slotID;   Session_Struct_t   *sessp;   ST_SESSION_T rSession;   LOG("C_Digest");   if (API_Initialized() == FALSE ){      st_err_log(72, __FILE__, __LINE__);      return CKR_CRYPTOKI_NOT_INITIALIZED;   }   // Validate Session   if (!Valid_Session((Session_Struct_t *)hSession,&rSession)){      st_err_log(40, __FILE__, __LINE__);      return CKR_SESSION_HANDLE_INVALID;   }   // Null data for digest is bad   if (!pData || !pulDigestLen ) return CKR_ARGUMENTS_BAD;   // Get local pointers to session   slotID = rSession.slotID;   sltp = &(Anchor->SltList[slotID]);   if (sltp->DLLoaded == FALSE ){      st_err_log(50, __FILE__, __LINE__);            return CKR_TOKEN_NOT_PRESENT;   }   if ( (fcn=sltp->FcnList) == NULL ){      st_err_log(50, __FILE__, __LINE__);       return CKR_TOKEN_NOT_PRESENT;   }   if (fcn->ST_Digest){      // Map the Session to the slot session      rv = fcn->ST_Digest(rSession,pData,ulDataLen,pDigest,pulDigestLen);      LOGIT(LOG_DEBUG,"Called STDLL rv = 0x%x",rv);   } else {      st_err_log(142, __FILE__, __LINE__, __FUNCTION__);       rv = CKR_FUNCTION_NOT_SUPPORTED;   }   return rv;}//------------------------------------------------------------------------// API function C_DigestEncryptUpdate   //------------------------------------------------------------------------CK_RV CK_ENTRY C_DigestEncryptUpdate ( CK_SESSION_HANDLE hSession,                              CK_BYTE_PTR       pPart,                              CK_ULONG          ulPartLen,                              CK_BYTE_PTR       pEncryptedPart,                              CK_ULONG_PTR      pulEncryptedPartLen                            ){   CK_RV   rv;   API_Slot_t  *sltp;   STDLL_FcnList_t  *fcn;   CK_SLOT_ID        slotID;   Session_Struct_t   *sessp;   ST_SESSION_T rSession;   LOG("C_DigestEncryptUpdate");   if (API_Initialized() == FALSE ){      st_err_log(72, __FILE__, __LINE__);      return CKR_CRYPTOKI_NOT_INITIALIZED;   }      // May have to pass on through to the STDLL   if (!pPart || !pulEncryptedPartLen ){      st_err_log(5, __FILE__, __LINE__, __FUNCTION__);       return CKR_ARGUMENTS_BAD;   }   // Validate Session   if (!Valid_Session((Session_Struct_t *)hSession,&rSession)){      st_err_log(40, __FILE__, __LINE__);      return CKR_SESSION_HANDLE_INVALID;   }   // Get local pointers to session   slotID = rSession.slotID;   sltp = &(Anchor->SltList[slotID]);   if (sltp->DLLoaded == FALSE ){      st_err_log(50, __FILE__, __LINE__);       return CKR_TOKEN_NOT_PRESENT;   }   if ( (fcn=sltp->FcnList) == NULL ){      st_err_log(50, __FILE__, __LINE__);       return CKR_TOKEN_NOT_PRESENT;   }   if (fcn->ST_DigestEncryptUpdate){      // Map the Session to the slot session      rv = fcn->ST_DigestEncryptUpdate(rSession,pPart,ulPartLen,pEncryptedPart,pulEncryptedPartLen);      LOGIT(LOG_DEBUG,"Called STDLL rv = 0x%x",rv);   } else {      st_err_log(142, __FILE__, __LINE__, __FUNCTION__);       rv = CKR_FUNCTION_NOT_SUPPORTED;   }   return rv;}//------------------------------------------------------------------------// API function C_DigestFinal   //------------------------------------------------------------------------CK_RV CK_ENTRY C_DigestFinal ( CK_SESSION_HANDLE hSession,                      CK_BYTE_PTR       pDigest,                      CK_ULONG_PTR      pulDigestLen                    ){   CK_RV   rv;   API_Slot_t  *sltp;   STDLL_FcnList_t  *fcn;   CK_SLOT_ID        slotID;   Session_Struct_t   *sessp;   ST_SESSION_T rSession;   LOG("C_DigestFinal");   if (API_Initialized() == FALSE ){      st_err_log(72, __FILE__, __LINE__);      return CKR_CRYPTOKI_NOT_INITIALIZED;   }   if (!pulDigestLen ) {      st_err_log(5, __FILE__, __LINE__, __FUNCTION__);       return CKR_ARGUMENTS_BAD;   }   // Validate Session   if (!Valid_Session((Session_Struct_t *)hSession,&rSession)){      st_err_log(40, __FILE__, __LINE__);      return CKR_SESSION_HANDLE_INVALID;   }   // Get local pointers to session   slotID = rSession.slotID;   sltp = &(Anchor->SltList[slotID]);   if (sltp->DLLoaded == FALSE ){      st_err_log(50, __FILE__, __LINE__);             return CKR_TOKEN_NOT_PRESENT;   }   if ( (fcn=sltp->FcnList) == NULL ){      st_err_log(50, __FILE__, __LINE__);       return CKR_TOKEN_NOT_PRESENT;   }   if (fcn->ST_DigestFinal){      // Map the Session to the slot session      rv = fcn->ST_DigestFinal(rSession,pDigest,pulDigestLen);      LOGIT(LOG_DEBUG,"Called STDLL rv = 0x%x",rv);   } else {      st_err_log(142, __FILE__, __LINE__, __FUNCTION__);       rv = CKR_FUNCTION_NOT_SUPPORTED;   }   return rv;   st_err_log(142, __FILE__, __LINE__, __FUNCTION__);    return CKR_FUNCTION_NOT_SUPPORTED;}//------------------------------------------------------------------------// API function C_DigestInit   //------------------------------------------------------------------------CK_RV CK_ENTRY C_DigestInit ( CK_SESSION_HANDLE hSession,                     CK_MECHANISM_PTR  pMechanism                   ){   CK_RV   rv;   API_Slot_t  *sltp;   STDLL_FcnList_t  *fcn;   CK_SLOT_ID        slotID;   Session_Struct_t   *sessp;   ST_SESSION_T rSession;   LOG("C_DigestInit");   if (API_Initialized() == FALSE ){      st_err_log(72, __FILE__, __LINE__);      return CKR_CRYPTOKI_NOT_INITIALIZED;   }   if (!pMechanism ){      st_err_log(28, __FILE__, __LINE__);       return CKR_MECHANISM_INVALID;   }   // Validate Session   if (!Valid_Session((Session_Struct_t *)hSession,&rSession)){      st_err_log(40, __FILE__, __LINE__);      return CKR_SESSION_HANDLE_INVALID;   }   // Get local pointers to session   slotID = rSession.slotID;   sltp = &(Anchor->SltList[slotID]);   if (sltp->DLLoaded == FALSE ){      st_err_log(50, __FILE__, __LINE__);             return CKR_TOKEN_NOT_PRESENT;   }   if ( (fcn=sltp->FcnList) == NULL ){      st_err_log(50, __FILE__, __LINE__);       return CKR_TOKEN_NOT_PRESENT;   }   if (fcn->ST_DigestInit){      // Map the Session to the slot session      rv = fcn->ST_DigestInit(rSession,pMechanism);      LOGIT(LOG_DEBUG,"Called STDLL rv = 0x%x",rv);   } else {       st_err_log(142, __FILE__, __LINE__, __FUNCTION__);       rv = CKR_FUNCTION_NOT_SUPPORTED;   }   return rv;}//------------------------------------------------------------------------// API function C_DigestKey   //------------------------------------------------------------------------CK_RV CK_ENTRY C_DigestKey ( CK_SESSION_HANDLE hSession,                    CK_OBJECT_HANDLE  hKey                  ){   CK_RV   rv;   API_Slot_t  *sltp;   STDLL_FcnList_t  *fcn;   CK_SLOT_ID        slotID;   Session_Struct_t   *sessp;   ST_SESSION_T rSession;   LOG("C_DigestKey");   if (API_Initialized() == FALSE ){      st_err_log(72, __FILE__, __LINE__);      return CKR_CRYPTOKI_NOT_INITIALIZED;   }   // Validate Session   if (!Valid_Session((Session_Struct_t *)hSession,&rSession)){      st_err_log(40, __FILE__, __LINE__);      return CKR_SESSION_HANDLE_INVALID;   }   // Get local pointers to session   slotID = rSession.slotID;   sltp = &(Anchor->SltList[slotID]);   if (sltp->DLLoaded == FALSE ){      st_err_log(50, __FILE__, __LINE__);             return CKR_TOKEN_NOT_PRESENT;   }   if ( (fcn=sltp->FcnList) == NULL ){      st_err_log(50, __FILE__, __LINE__);       return CKR_TOKEN_NOT_PRESENT;   }   if (fcn->ST_DigestKey){      // Map the Session to the slot session      rv = fcn->ST_DigestKey(rSession,hKey);      LOGIT(LOG_DEBUG,"Called STDLL rv = 0x%x",rv);   } else {      st_err_log(142, __FILE__, __LINE__, __FUNCTION__);       rv = CKR_FUNCTION_NOT_SUPPORTED;   }   return rv;}//------------------------------------------------------------------------// API function C_DigestUpdate   //------------------------------------------------------------------------CK_RV CK_ENTRY C_DigestUpdate ( CK_SESSION_HANDLE hSession,                       CK_BYTE_PTR       pPart,                       CK_ULONG          ulPartLen                     ){   CK_RV   rv;   API_Slot_t  *sltp;   STDLL_FcnList_t  *fcn;   CK_SLOT_ID        slotID;   Session_Struct_t   *sessp;   ST_SESSION_T rSession;   LOG("C_DigestUpdate");   if (API_Initialized() == FALSE ){      st_err_log(72, __FILE__, __LINE__);      return CKR_CRYPTOKI_NOT_INITIALIZED;   }   if (!ulPartLen){      st_err_log(5, __FILE__, __LINE__, __FUNCTION__);       return CKR_ARGUMENTS_BAD;   }   // Validate Session   if (!Valid_Session((Session_Struct_t *)hSession,&rSession)){      st_err_log(40, __FILE__, __LINE__);      return CKR_SESSION_HANDLE_INVALID;   }   // Get local pointers to session   slotID = rSession.slotID;   sltp = &(Anchor->SltList[slotID]);   if (sltp->DLLoaded == FALSE ){      st_err_log(50, __FILE__, __LINE__);             return CKR_TOKEN_NOT_PRESENT;   }   if ( (fcn=sltp->FcnList) == NULL ){      st_err_log(50, __FILE__, __LINE__);       return CKR_TOKEN_NOT_PRESENT;   }   if (fcn->ST_DigestUpdate){      // Map the Session to the slot session      rv = fcn->ST_DigestUpdate(rSession,pPart,ulPartLen);      LOGIT(LOG_DEBUG,"Called STDLL rv = 0x%x",rv);   } else {      st_err_log(142, __FILE__, __LINE__, __FUNCTION__);       rv = CKR_FUNCTION_NOT_SUPPORTED;   }   return rv;}//------------------------------------------------------------------------// API function C_Encrypt   //------------------------------------------------------------------------CK_RV CK_ENTRY C_Encrypt ( CK_SESSION_HANDLE hSession,                  CK_BYTE_PTR       pData,                  CK_ULONG          ulDataLen,                  CK_BYTE_PTR       pEncryptedData,                  CK_ULONG_PTR      pulEncryptedDataLen                ){

⌨️ 快捷键说明

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