@@ -44,6 +44,17 @@ macro_rules! check_fn {
44
44
} } ;
45
45
}
46
46
47
+ macro_rules! check_30_fn {
48
+ ( $pkcs11: expr, $func_name: ident) => { {
49
+ let func = paste! { $pkcs11
50
+ . impl_
51
+ . function_list_30
52
+ . map( |f| f. [ <C_ $func_name>] )
53
+ } ;
54
+ func. is_some( )
55
+ } } ;
56
+ }
57
+
47
58
#[ allow( missing_docs) ]
48
59
#[ derive( Debug , Copy , Clone ) ]
49
60
/// Enumeration of all functions defined by the PKCS11 spec
@@ -116,6 +127,30 @@ pub enum Function {
116
127
GetFunctionStatus ,
117
128
CancelFunction ,
118
129
WaitForSlotEvent ,
130
+ GetInterfaceList ,
131
+ GetInterface ,
132
+ LoginUser ,
133
+ SessionCancel ,
134
+ MessageEncryptInit ,
135
+ EncryptMessage ,
136
+ EncryptMessageBegin ,
137
+ EncryptMessageNext ,
138
+ MessageEncryptFinal ,
139
+ MessageDecryptInit ,
140
+ DecryptMessage ,
141
+ DecryptMessageBegin ,
142
+ DecryptMessageNext ,
143
+ MessageDecryptFinal ,
144
+ MessageSignInit ,
145
+ SignMessage ,
146
+ SignMessageBegin ,
147
+ SignMessageNext ,
148
+ MessageSignFinal ,
149
+ MessageVerifyInit ,
150
+ VerifyMessage ,
151
+ VerifyMessageBegin ,
152
+ VerifyMessageNext ,
153
+ MessageVerifyFinal ,
119
154
}
120
155
121
156
impl Display for Function {
@@ -195,5 +230,29 @@ pub(super) fn is_fn_supported(ctx: &Pkcs11, function: Function) -> bool {
195
230
Function :: GetFunctionStatus => check_fn ! ( ctx, GetFunctionStatus ) ,
196
231
Function :: CancelFunction => check_fn ! ( ctx, CancelFunction ) ,
197
232
Function :: WaitForSlotEvent => check_fn ! ( ctx, WaitForSlotEvent ) ,
233
+ Function :: GetInterfaceList => check_30_fn ! ( ctx, GetInterfaceList ) ,
234
+ Function :: GetInterface => check_30_fn ! ( ctx, GetInterface ) ,
235
+ Function :: LoginUser => check_30_fn ! ( ctx, LoginUser ) ,
236
+ Function :: SessionCancel => check_30_fn ! ( ctx, SessionCancel ) ,
237
+ Function :: MessageEncryptInit => check_30_fn ! ( ctx, MessageEncryptInit ) ,
238
+ Function :: EncryptMessage => check_30_fn ! ( ctx, EncryptMessage ) ,
239
+ Function :: EncryptMessageBegin => check_30_fn ! ( ctx, EncryptMessageBegin ) ,
240
+ Function :: EncryptMessageNext => check_30_fn ! ( ctx, EncryptMessageNext ) ,
241
+ Function :: MessageEncryptFinal => check_30_fn ! ( ctx, MessageEncryptFinal ) ,
242
+ Function :: MessageDecryptInit => check_30_fn ! ( ctx, MessageDecryptInit ) ,
243
+ Function :: DecryptMessage => check_30_fn ! ( ctx, DecryptMessage ) ,
244
+ Function :: DecryptMessageBegin => check_30_fn ! ( ctx, DecryptMessageBegin ) ,
245
+ Function :: DecryptMessageNext => check_30_fn ! ( ctx, DecryptMessageNext ) ,
246
+ Function :: MessageDecryptFinal => check_30_fn ! ( ctx, MessageDecryptFinal ) ,
247
+ Function :: MessageSignInit => check_30_fn ! ( ctx, MessageSignInit ) ,
248
+ Function :: SignMessage => check_30_fn ! ( ctx, SignMessage ) ,
249
+ Function :: SignMessageBegin => check_30_fn ! ( ctx, SignMessageBegin ) ,
250
+ Function :: SignMessageNext => check_30_fn ! ( ctx, SignMessageNext ) ,
251
+ Function :: MessageSignFinal => check_30_fn ! ( ctx, MessageSignFinal ) ,
252
+ Function :: MessageVerifyInit => check_30_fn ! ( ctx, MessageVerifyInit ) ,
253
+ Function :: VerifyMessage => check_30_fn ! ( ctx, VerifyMessage ) ,
254
+ Function :: VerifyMessageBegin => check_30_fn ! ( ctx, VerifyMessageBegin ) ,
255
+ Function :: VerifyMessageNext => check_30_fn ! ( ctx, VerifyMessageNext ) ,
256
+ Function :: MessageVerifyFinal => check_30_fn ! ( ctx, MessageVerifyFinal ) ,
198
257
}
199
258
}
0 commit comments