📄 api_interface.c
字号:
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 + -