Skip to content

Commit 0f18612

Browse files
committed
Add support for PKCS#11 Version 3.0
1 parent 124fcf2 commit 0f18612

5 files changed

Lines changed: 929 additions & 6 deletions

File tree

configure.ac

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,16 @@ then
481481
AM_CFLAGS="$AM_CFLAGS -DWOLFPKCS11_DEFAULT_TOKEN_PATH=\"$WOLFPKCS11_DEFAULT_TOKEN_PATH\""
482482
fi
483483

484+
AC_ARG_ENABLE([pkcs11v30],
485+
[AS_HELP_STRING([--enable-pkcs11v30],[Enable PKCS#11 Version 3.0 support (default: enabled)])],
486+
[ ENABLED_PKCS11V3_0=$enableval ],
487+
[ ENABLED_PKCS11V3_0=yes ]
488+
)
489+
if test "$ENABLED_PKCS11V3_0" = "yes"
490+
then
491+
AM_CFLAGS="$AM_CFLAGS -DWOLFPKCS11_PKCS11_V3_0"
492+
fi
493+
484494

485495
AM_CONDITIONAL([BUILD_STATIC],[test "x$enable_shared" = "xno"])
486496

@@ -657,3 +667,4 @@ echo " * ECC: $ENABLED_ECC"
657667
echo " * HKDF: $ENABLED_HKDF"
658668
echo " * NSS modifications: $ENABLED_NSS"
659669
echo " * Default token path: $WOLFPKCS11_DEFAULT_TOKEN_PATH"
670+
echo " * PKCS#11 Version 3.0: $ENABLED_PKCS11V3_0"

src/crypto.c

Lines changed: 348 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7958,3 +7958,351 @@ CK_RV C_GenerateRandom(CK_SESSION_HANDLE hSession,
79587958
WOLFPKCS11_LEAVE("C_GenerateRandom", rv);
79597959
return rv;
79607960
}
7961+
7962+
#if defined (WOLFPKCS11_PKCS11_V3_0)
7963+
7964+
CK_RV C_MessageEncryptInit(CK_SESSION_HANDLE hSession,
7965+
CK_MECHANISM_PTR pMechanism,
7966+
CK_OBJECT_HANDLE hKey)
7967+
{
7968+
if (!WP11_Library_IsInitialized())
7969+
return CKR_CRYPTOKI_NOT_INITIALIZED;
7970+
7971+
(void)hSession;
7972+
(void)pMechanism;
7973+
(void)hKey;
7974+
7975+
return CKR_FUNCTION_NOT_SUPPORTED;
7976+
}
7977+
7978+
CK_RV C_EncryptMessage(CK_SESSION_HANDLE hSession, CK_VOID_PTR pParameter,
7979+
CK_ULONG ulParameterLen, CK_BYTE_PTR pAssociatedData,
7980+
CK_ULONG ulAssociatedDataLen, CK_BYTE_PTR pPlaintext,
7981+
CK_ULONG ulPlaintextLen, CK_BYTE_PTR pCiphertext,
7982+
CK_ULONG_PTR pulCiphertextLen)
7983+
{
7984+
if (!WP11_Library_IsInitialized())
7985+
return CKR_CRYPTOKI_NOT_INITIALIZED;
7986+
7987+
(void)hSession;
7988+
(void)pParameter;
7989+
(void)ulParameterLen;
7990+
(void)pAssociatedData;
7991+
(void)ulAssociatedDataLen;
7992+
(void)pPlaintext;
7993+
(void)ulPlaintextLen;
7994+
(void)pCiphertext;
7995+
(void)pulCiphertextLen;
7996+
7997+
return CKR_FUNCTION_NOT_SUPPORTED;
7998+
}
7999+
8000+
CK_RV C_EncryptMessageBegin(CK_SESSION_HANDLE hSession,
8001+
CK_VOID_PTR pParameter,
8002+
CK_ULONG ulParameterLen,
8003+
CK_BYTE_PTR pAssociatedData,
8004+
CK_ULONG ulAssociatedDataLen)
8005+
{
8006+
if (!WP11_Library_IsInitialized())
8007+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8008+
8009+
(void)hSession;
8010+
(void)pParameter;
8011+
(void)ulParameterLen;
8012+
(void)pAssociatedData;
8013+
(void)ulAssociatedDataLen;
8014+
8015+
return CKR_FUNCTION_NOT_SUPPORTED;
8016+
}
8017+
8018+
CK_RV C_EncryptMessageNext(CK_SESSION_HANDLE hSession,
8019+
CK_VOID_PTR pParameter,
8020+
CK_ULONG ulParameterLen,
8021+
CK_BYTE_PTR pPlaintextPart,
8022+
CK_ULONG ulPlaintextPartLen,
8023+
CK_BYTE_PTR pCiphertextPart,
8024+
CK_ULONG_PTR pulCiphertextPartLen,
8025+
CK_FLAGS flags)
8026+
{
8027+
if (!WP11_Library_IsInitialized())
8028+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8029+
8030+
(void)hSession;
8031+
(void)pParameter;
8032+
(void)ulParameterLen;
8033+
(void)pPlaintextPart;
8034+
(void)ulPlaintextPartLen;
8035+
(void)pCiphertextPart;
8036+
(void)pulCiphertextPartLen;
8037+
(void)flags;
8038+
8039+
return CKR_FUNCTION_NOT_SUPPORTED;
8040+
}
8041+
8042+
CK_RV C_MessageEncryptFinal(CK_SESSION_HANDLE hSession)
8043+
{
8044+
if (!WP11_Library_IsInitialized())
8045+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8046+
8047+
(void)hSession;
8048+
8049+
return CKR_FUNCTION_NOT_SUPPORTED;
8050+
}
8051+
8052+
CK_RV C_MessageDecryptInit(CK_SESSION_HANDLE hSession,
8053+
CK_MECHANISM_PTR pMechanism,
8054+
CK_OBJECT_HANDLE hKey)
8055+
{
8056+
if (!WP11_Library_IsInitialized())
8057+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8058+
8059+
(void)hSession;
8060+
(void)pMechanism;
8061+
(void)hKey;
8062+
8063+
return CKR_FUNCTION_NOT_SUPPORTED;
8064+
}
8065+
8066+
CK_RV C_DecryptMessage(CK_SESSION_HANDLE hSession,
8067+
CK_VOID_PTR pParameter,
8068+
CK_ULONG ulParameterLen,
8069+
CK_BYTE_PTR pAssociatedData,
8070+
CK_ULONG ulAssociatedDataLen,
8071+
CK_BYTE_PTR pCiphertext,
8072+
CK_ULONG ulCiphertextLen,
8073+
CK_BYTE_PTR pPlaintext,
8074+
CK_ULONG_PTR pulPlaintextLen)
8075+
{
8076+
if (!WP11_Library_IsInitialized())
8077+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8078+
8079+
(void)hSession;
8080+
(void)pParameter;
8081+
(void)ulParameterLen;
8082+
(void)pAssociatedData;
8083+
(void)ulAssociatedDataLen;
8084+
(void)pCiphertext;
8085+
(void)ulCiphertextLen;
8086+
(void)pPlaintext;
8087+
(void)pulPlaintextLen;
8088+
8089+
return CKR_FUNCTION_NOT_SUPPORTED;
8090+
}
8091+
8092+
CK_RV C_DecryptMessageBegin(CK_SESSION_HANDLE hSession,
8093+
CK_VOID_PTR pParameter,
8094+
CK_ULONG ulParameterLen,
8095+
CK_BYTE_PTR pAssociatedData,
8096+
CK_ULONG ulAssociatedDataLen)
8097+
{
8098+
if (!WP11_Library_IsInitialized())
8099+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8100+
8101+
(void)hSession;
8102+
(void)pParameter;
8103+
(void)ulParameterLen;
8104+
(void)pAssociatedData;
8105+
(void)ulAssociatedDataLen;
8106+
8107+
return CKR_FUNCTION_NOT_SUPPORTED;
8108+
}
8109+
8110+
CK_RV C_DecryptMessageNext(CK_SESSION_HANDLE hSession,
8111+
CK_VOID_PTR pParameter,
8112+
CK_ULONG ulParameterLen,
8113+
CK_BYTE_PTR pCiphertextPart,
8114+
CK_ULONG ulCiphertextPartLen,
8115+
CK_BYTE_PTR pPlaintextPart,
8116+
CK_ULONG_PTR pulPlaintextPartLen,
8117+
CK_FLAGS flags)
8118+
{
8119+
if (!WP11_Library_IsInitialized())
8120+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8121+
8122+
(void)hSession;
8123+
(void)pParameter;
8124+
(void)ulParameterLen;
8125+
(void)pCiphertextPart;
8126+
(void)ulCiphertextPartLen;
8127+
(void)pPlaintextPart;
8128+
(void)pulPlaintextPartLen;
8129+
(void)flags;
8130+
8131+
return CKR_FUNCTION_NOT_SUPPORTED;
8132+
}
8133+
8134+
CK_RV C_MessageDecryptFinal(CK_SESSION_HANDLE hSession)
8135+
{
8136+
if (!WP11_Library_IsInitialized())
8137+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8138+
8139+
(void)hSession;
8140+
8141+
return CKR_FUNCTION_NOT_SUPPORTED;
8142+
}
8143+
8144+
CK_RV C_MessageSignInit(CK_SESSION_HANDLE hSession,
8145+
CK_MECHANISM_PTR pMechanism,
8146+
CK_OBJECT_HANDLE hKey)
8147+
{
8148+
if (!WP11_Library_IsInitialized())
8149+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8150+
8151+
(void)hSession;
8152+
(void)pMechanism;
8153+
(void)hKey;
8154+
8155+
return CKR_FUNCTION_NOT_SUPPORTED;
8156+
}
8157+
8158+
CK_RV C_SignMessage(CK_SESSION_HANDLE hSession,
8159+
CK_VOID_PTR pParameter,
8160+
CK_ULONG ulParameterLen,
8161+
CK_BYTE_PTR pData,
8162+
CK_ULONG ulDataLen,
8163+
CK_BYTE_PTR pSignature,
8164+
CK_ULONG_PTR pulSignatureLen)
8165+
{
8166+
if (!WP11_Library_IsInitialized())
8167+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8168+
8169+
(void)hSession;
8170+
(void)pParameter;
8171+
(void)ulParameterLen;
8172+
(void)pData;
8173+
(void)ulDataLen;
8174+
(void)pSignature;
8175+
(void)pulSignatureLen;
8176+
8177+
return CKR_FUNCTION_NOT_SUPPORTED;
8178+
}
8179+
8180+
CK_RV C_SignMessageBegin(CK_SESSION_HANDLE hSession,
8181+
CK_VOID_PTR pParameter,
8182+
CK_ULONG ulParameterLen)
8183+
{
8184+
if (!WP11_Library_IsInitialized())
8185+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8186+
8187+
(void)hSession;
8188+
(void)pParameter;
8189+
(void)ulParameterLen;
8190+
8191+
return CKR_FUNCTION_NOT_SUPPORTED;
8192+
}
8193+
8194+
CK_RV C_SignMessageNext(CK_SESSION_HANDLE hSession,
8195+
CK_VOID_PTR pParameter,
8196+
CK_ULONG ulParameterLen,
8197+
CK_BYTE_PTR pData,
8198+
CK_ULONG ulDataLen,
8199+
CK_BYTE_PTR pSignature,
8200+
CK_ULONG_PTR pulSignatureLen)
8201+
{
8202+
if (!WP11_Library_IsInitialized())
8203+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8204+
8205+
(void)hSession;
8206+
(void)pParameter;
8207+
(void)ulParameterLen;
8208+
(void)pData;
8209+
(void)ulDataLen;
8210+
(void)pSignature;
8211+
(void)pulSignatureLen;
8212+
8213+
return CKR_FUNCTION_NOT_SUPPORTED;
8214+
}
8215+
8216+
CK_RV C_MessageSignFinal(CK_SESSION_HANDLE hSession)
8217+
{
8218+
if (!WP11_Library_IsInitialized())
8219+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8220+
8221+
(void)hSession;
8222+
8223+
return CKR_FUNCTION_NOT_SUPPORTED;
8224+
}
8225+
8226+
CK_RV C_MessageVerifyInit(CK_SESSION_HANDLE hSession,
8227+
CK_MECHANISM_PTR pMechanism,
8228+
CK_OBJECT_HANDLE hKey)
8229+
{
8230+
if (!WP11_Library_IsInitialized())
8231+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8232+
8233+
(void)hSession;
8234+
(void)pMechanism;
8235+
(void)hKey;
8236+
8237+
return CKR_FUNCTION_NOT_SUPPORTED;
8238+
}
8239+
8240+
CK_RV C_VerifyMessage(CK_SESSION_HANDLE hSession,
8241+
CK_VOID_PTR pParameter,
8242+
CK_ULONG ulParameterLen,
8243+
CK_BYTE_PTR pData,
8244+
CK_ULONG ulDataLen,
8245+
CK_BYTE_PTR pSignature,
8246+
CK_ULONG ulSignatureLen)
8247+
{
8248+
if (!WP11_Library_IsInitialized())
8249+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8250+
8251+
(void)hSession;
8252+
(void)pParameter;
8253+
(void)ulParameterLen;
8254+
(void)pData;
8255+
(void)ulDataLen;
8256+
(void)pSignature;
8257+
(void)ulSignatureLen;
8258+
8259+
return CKR_FUNCTION_NOT_SUPPORTED;
8260+
}
8261+
8262+
CK_RV C_VerifyMessageBegin(CK_SESSION_HANDLE hSession,
8263+
CK_VOID_PTR pParameter,
8264+
CK_ULONG ulParameterLen)
8265+
{
8266+
if (!WP11_Library_IsInitialized())
8267+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8268+
8269+
(void)hSession;
8270+
(void)pParameter;
8271+
(void)ulParameterLen;
8272+
8273+
return CKR_FUNCTION_NOT_SUPPORTED;
8274+
}
8275+
8276+
CK_RV C_VerifyMessageNext(CK_SESSION_HANDLE hSession,
8277+
CK_VOID_PTR pParameter,
8278+
CK_ULONG ulParameterLen,
8279+
CK_BYTE_PTR pData,
8280+
CK_ULONG ulDataLen,
8281+
CK_BYTE_PTR pSignature,
8282+
CK_ULONG ulSignatureLen)
8283+
{
8284+
if (!WP11_Library_IsInitialized())
8285+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8286+
8287+
(void)hSession;
8288+
(void)pParameter;
8289+
(void)ulParameterLen;
8290+
(void)pData;
8291+
(void)ulDataLen;
8292+
(void)pSignature;
8293+
(void)ulSignatureLen;
8294+
8295+
return CKR_FUNCTION_NOT_SUPPORTED;
8296+
}
8297+
8298+
CK_RV C_MessageVerifyFinal(CK_SESSION_HANDLE hSession)
8299+
{
8300+
if (!WP11_Library_IsInitialized())
8301+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8302+
8303+
(void)hSession;
8304+
8305+
return CKR_FUNCTION_NOT_SUPPORTED;
8306+
}
8307+
8308+
#endif /* defined WOLFPKCS11_PKCS11_V3_0 */

0 commit comments

Comments
 (0)