Skip to content

Commit acf4640

Browse files
committed
Add support for PKCS#11 Version 3.2
1 parent 0f18612 commit acf4640

5 files changed

Lines changed: 639 additions & 8 deletions

File tree

configure.ac

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,20 @@ then
491491
AM_CFLAGS="$AM_CFLAGS -DWOLFPKCS11_PKCS11_V3_0"
492492
fi
493493

494+
AC_ARG_ENABLE([pkcs11v32],
495+
[AS_HELP_STRING([--enable-pkcs11v32],[Enable PKCS#11 Version 3.2 support (default: disabled)])],
496+
[ ENABLED_PKCS11V3_2=$enableval ],
497+
[ ENABLED_PKCS11V3_2=no ]
498+
)
499+
if test "$ENABLED_PKCS11V3_2" = "yes"
500+
then
501+
if test "$ENABLED_PKCS11V3_0" = "no"
502+
then
503+
ENABLED_PKCS11V3_0=yes
504+
fi
505+
AM_CFLAGS="$AM_CFLAGS -DWOLFPKCS11_PKCS11_V3_2"
506+
fi
507+
494508

495509
AM_CONDITIONAL([BUILD_STATIC],[test "x$enable_shared" = "xno"])
496510

@@ -668,3 +682,4 @@ echo " * HKDF: $ENABLED_HKDF"
668682
echo " * NSS modifications: $ENABLED_NSS"
669683
echo " * Default token path: $WOLFPKCS11_DEFAULT_TOKEN_PATH"
670684
echo " * PKCS#11 Version 3.0: $ENABLED_PKCS11V3_0"
685+
echo " * PKCS#11 Version 3.2: $ENABLED_PKCS11V3_2"

src/crypto.c

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8306,3 +8306,99 @@ CK_RV C_MessageVerifyFinal(CK_SESSION_HANDLE hSession)
83068306
}
83078307

83088308
#endif /* defined WOLFPKCS11_PKCS11_V3_0 */
8309+
8310+
#if defined (WOLFPKCS11_PKCS11_V3_2)
8311+
8312+
CK_RV C_EncapsulateKey(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism,
8313+
CK_OBJECT_HANDLE hPublicKey, CK_ATTRIBUTE_PTR pTemplate,
8314+
CK_ULONG ulAttributeCount, CK_OBJECT_HANDLE_PTR phKey,
8315+
CK_BYTE_PTR pCiphertext, CK_ULONG_PTR pulCiphertextLen)
8316+
{
8317+
if (!WP11_Library_IsInitialized())
8318+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8319+
8320+
(void)hSession;
8321+
(void)pMechanism;
8322+
(void)hPublicKey;
8323+
(void)pTemplate;
8324+
(void)ulAttributeCount;
8325+
(void)phKey;
8326+
(void)pCiphertext;
8327+
(void)pulCiphertextLen;
8328+
8329+
return CKR_FUNCTION_NOT_SUPPORTED;
8330+
}
8331+
8332+
CK_RV C_DecapsulateKey(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism,
8333+
CK_OBJECT_HANDLE hPrivateKey, CK_BYTE_PTR pCiphertext,
8334+
CK_ULONG ulCiphertextLen, CK_ATTRIBUTE_PTR pTemplate,
8335+
CK_ULONG ulAttributeCount, CK_OBJECT_HANDLE_PTR phKey)
8336+
{
8337+
if (!WP11_Library_IsInitialized())
8338+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8339+
8340+
(void)hSession;
8341+
(void)pMechanism;
8342+
(void)hPrivateKey;
8343+
(void)pCiphertext;
8344+
(void)ulCiphertextLen;
8345+
(void)pTemplate;
8346+
(void)ulAttributeCount;
8347+
(void)phKey;
8348+
8349+
return CKR_FUNCTION_NOT_SUPPORTED;
8350+
}
8351+
8352+
CK_RV C_VerifySignatureInit(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism,
8353+
CK_OBJECT_HANDLE hKey, CK_BYTE_PTR pSignature,
8354+
CK_ULONG ulSignatureLen)
8355+
{
8356+
if (!WP11_Library_IsInitialized())
8357+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8358+
8359+
(void)hSession;
8360+
(void)pMechanism;
8361+
(void)hKey;
8362+
(void)pSignature;
8363+
(void)ulSignatureLen;
8364+
8365+
return CKR_FUNCTION_NOT_SUPPORTED;
8366+
}
8367+
8368+
CK_RV C_VerifySignature(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData,
8369+
CK_ULONG ulDataLen)
8370+
{
8371+
if (!WP11_Library_IsInitialized())
8372+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8373+
8374+
(void)hSession;
8375+
(void)pData;
8376+
(void)ulDataLen;
8377+
8378+
return CKR_FUNCTION_NOT_SUPPORTED;
8379+
}
8380+
8381+
CK_RV C_VerifySignatureUpdate(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart,
8382+
CK_ULONG ulPartLen)
8383+
{
8384+
if (!WP11_Library_IsInitialized())
8385+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8386+
8387+
(void)hSession;
8388+
(void)pPart;
8389+
(void)ulPartLen;
8390+
8391+
return CKR_FUNCTION_NOT_SUPPORTED;
8392+
}
8393+
8394+
CK_RV C_VerifySignatureFinal(CK_SESSION_HANDLE hSession)
8395+
{
8396+
if (!WP11_Library_IsInitialized())
8397+
return CKR_CRYPTOKI_NOT_INITIALIZED;
8398+
8399+
(void)hSession;
8400+
8401+
return CKR_FUNCTION_NOT_SUPPORTED;
8402+
}
8403+
8404+
#endif /* defined WOLFPKCS11_PKCS11_V3_2 */

src/slot.c

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2047,3 +2047,61 @@ CK_RV C_SessionCancel(CK_SESSION_HANDLE hSession, CK_FLAGS flags)
20472047
}
20482048

20492049
#endif /* defined WOLFPKCS11_PKCS11_V3_0 */
2050+
2051+
#if defined (WOLFPKCS11_PKCS11_V3_2)
2052+
2053+
CK_RV C_GetSessionValidationFlags(CK_SESSION_HANDLE hSession, CK_ULONG type,
2054+
CK_FLAGS * pFlags)
2055+
{
2056+
if (!WP11_Library_IsInitialized())
2057+
return CKR_CRYPTOKI_NOT_INITIALIZED;
2058+
2059+
(void)hSession;
2060+
(void)type;
2061+
(void)pFlags;
2062+
2063+
return CKR_FUNCTION_NOT_SUPPORTED;
2064+
}
2065+
2066+
CK_RV C_AsyncComplete(CK_SESSION_HANDLE hSession, CK_UTF8CHAR_PTR pFunctionName,
2067+
CK_ASYNC_DATA_PTR pResult)
2068+
{
2069+
if (!WP11_Library_IsInitialized())
2070+
return CKR_CRYPTOKI_NOT_INITIALIZED;
2071+
2072+
(void)hSession;
2073+
(void)pFunctionName;
2074+
(void)pResult;
2075+
2076+
return CKR_FUNCTION_NOT_SUPPORTED;
2077+
}
2078+
2079+
CK_RV C_AsyncGetID(CK_SESSION_HANDLE hSession, CK_UTF8CHAR_PTR pFunctionName,
2080+
CK_ULONG_PTR pulID)
2081+
{
2082+
if (!WP11_Library_IsInitialized())
2083+
return CKR_CRYPTOKI_NOT_INITIALIZED;
2084+
2085+
(void)hSession;
2086+
(void)pFunctionName;
2087+
(void)pulID;
2088+
2089+
return CKR_FUNCTION_NOT_SUPPORTED;
2090+
}
2091+
2092+
CK_RV C_AsyncJoin(CK_SESSION_HANDLE hSession, CK_UTF8CHAR_PTR pFunctionName,
2093+
CK_ULONG ulID, CK_BYTE_PTR pData, CK_ULONG ulData)
2094+
{
2095+
if (!WP11_Library_IsInitialized())
2096+
return CKR_CRYPTOKI_NOT_INITIALIZED;
2097+
2098+
(void)hSession;
2099+
(void)pFunctionName;
2100+
(void)ulID;
2101+
(void)pData;
2102+
(void)ulData;
2103+
2104+
return CKR_FUNCTION_NOT_SUPPORTED;
2105+
}
2106+
2107+
#endif /* defined WOLFPKCS11_PKCS11_V3_2 */

0 commit comments

Comments
 (0)