From e59bf7ee08f4467b526a6689d9cad4118ffdfce9 Mon Sep 17 00:00:00 2001 From: Lars Persson Date: Tue, 3 Sep 2024 15:25:20 +0200 Subject: [PATCH 1/3] Support vendor extensions for CK_USER_TYPE Some HSM vendors have more user types than the standard CKU_SO and CKU_USER. For example a Thales Luna uses the value 0x80000001 to represent the unprivileged Crypto User. Signed-off-by: Lars Persson --- cryptoki/src/session/mod.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cryptoki/src/session/mod.rs b/cryptoki/src/session/mod.rs index c301a0d5..56f4d1ad 100644 --- a/cryptoki/src/session/mod.rs +++ b/cryptoki/src/session/mod.rs @@ -90,6 +90,8 @@ pub enum UserType { User, /// Context Specific ContextSpecific, + /// Vendor extension + VendorExtension(u32) } impl From for CK_USER_TYPE { @@ -98,6 +100,7 @@ impl From for CK_USER_TYPE { UserType::So => CKU_SO, UserType::User => CKU_USER, UserType::ContextSpecific => CKU_CONTEXT_SPECIFIC, + UserType::VendorExtension(n) => n as CK_USER_TYPE } } } From 3df67b4932d48aa00977869f1ab70740bea0c5f8 Mon Sep 17 00:00:00 2001 From: Lars Persson Date: Wed, 4 Sep 2024 08:33:23 +0200 Subject: [PATCH 2/3] Fix formatting Signed-off-by: Lars Persson --- cryptoki/src/session/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cryptoki/src/session/mod.rs b/cryptoki/src/session/mod.rs index 56f4d1ad..233f42ce 100644 --- a/cryptoki/src/session/mod.rs +++ b/cryptoki/src/session/mod.rs @@ -91,7 +91,7 @@ pub enum UserType { /// Context Specific ContextSpecific, /// Vendor extension - VendorExtension(u32) + VendorExtension(u32), } impl From for CK_USER_TYPE { @@ -100,7 +100,7 @@ impl From for CK_USER_TYPE { UserType::So => CKU_SO, UserType::User => CKU_USER, UserType::ContextSpecific => CKU_CONTEXT_SPECIFIC, - UserType::VendorExtension(n) => n as CK_USER_TYPE + UserType::VendorExtension(n) => n as CK_USER_TYPE, } } } From 283c1bbf32ceb95f5e806518f44df610d57aca2f Mon Sep 17 00:00:00 2001 From: Lars Persson Date: Wed, 4 Sep 2024 08:57:50 +0200 Subject: [PATCH 3/3] Fix trivial numeric cast lint Signed-off-by: Lars Persson --- cryptoki/src/session/mod.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cryptoki/src/session/mod.rs b/cryptoki/src/session/mod.rs index 233f42ce..77d9f790 100644 --- a/cryptoki/src/session/mod.rs +++ b/cryptoki/src/session/mod.rs @@ -95,12 +95,14 @@ pub enum UserType { } impl From for CK_USER_TYPE { + // Mask lint for n.into() on 32-bit systems. + #![allow(clippy::useless_conversion)] fn from(user_type: UserType) -> CK_USER_TYPE { match user_type { UserType::So => CKU_SO, UserType::User => CKU_USER, UserType::ContextSpecific => CKU_CONTEXT_SPECIFIC, - UserType::VendorExtension(n) => n as CK_USER_TYPE, + UserType::VendorExtension(n) => n.into(), } } }