summaryrefslogtreecommitdiff
path: root/usr/src/lib/pkcs11/pkcs11_kernel/common/kernelUtil.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/lib/pkcs11/pkcs11_kernel/common/kernelUtil.c')
-rw-r--r--usr/src/lib/pkcs11/pkcs11_kernel/common/kernelUtil.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/usr/src/lib/pkcs11/pkcs11_kernel/common/kernelUtil.c b/usr/src/lib/pkcs11/pkcs11_kernel/common/kernelUtil.c
index 670a6c7666..7231b62a08 100644
--- a/usr/src/lib/pkcs11/pkcs11_kernel/common/kernelUtil.c
+++ b/usr/src/lib/pkcs11/pkcs11_kernel/common/kernelUtil.c
@@ -1215,3 +1215,18 @@ get_mechanism_info(kernel_slot_t *pslot, CK_MECHANISM_TYPE type,
return (rv);
}
+
+/*
+ * Unfortunately the kernel and PKCS#11 use a slightly different struct to
+ * specify CCM parameters.
+ */
+void
+p11_to_kernel_ccm_params(const CK_CCM_PARAMS *in, CK_AES_CCM_PARAMS *out)
+{
+ out->ulMACSize = in->ulMACLen;
+ out->ulNonceSize = in->ulNonceLen;
+ out->ulAuthDataSize = in->ulAADLen;
+ out->ulDataSize = in->ulDataLen;
+ out->nonce = in->pNonce;
+ out->authData = in->pAAD;
+}