@@ -59,7 +59,7 @@ impl ParsecProviderKeyObject {
59
59
}
60
60
}
61
61
62
- // Ec supported curve name
62
+ // Ec supported curve name. This is the only supported curve name.
63
63
const EC_CURVE_NAME : & str = "prime256v1\0 " ;
64
64
/*
65
65
should create a provider side key object. The provider context provctx is passed and may be incorporated
@@ -138,25 +138,28 @@ pub unsafe extern "C" fn parsec_provider_kmgmt_rsa_get_params(
138
138
keydata : VOID_PTR ,
139
139
params : * mut OSSL_PARAM ,
140
140
) -> std:: os:: raw:: c_int {
141
- let result = super :: r#catch ( Some ( || super :: Error :: PROVIDER_KEYMGMT_GET_PARAMS ) , || {
142
- if keydata. is_null ( ) || params. is_null ( ) {
143
- Err ( "Null pointer received as parameter" . into ( ) )
144
- } else {
145
- Arc :: increment_strong_count ( keydata as * const RwLock < ParsecProviderKeyObject > ) ;
146
- let key_data = Arc :: from_raw ( keydata as * const RwLock < ParsecProviderKeyObject > ) ;
147
- let reader_key_data = key_data. read ( ) . unwrap ( ) ;
141
+ let result = super :: r#catch (
142
+ Some ( || super :: Error :: PROVIDER_KEYMGMT_RSA_GET_PARAMS ) ,
143
+ || {
144
+ if keydata. is_null ( ) || params. is_null ( ) {
145
+ Err ( "Null pointer received as parameter" . into ( ) )
146
+ } else {
147
+ Arc :: increment_strong_count ( keydata as * const RwLock < ParsecProviderKeyObject > ) ;
148
+ let key_data = Arc :: from_raw ( keydata as * const RwLock < ParsecProviderKeyObject > ) ;
149
+ let reader_key_data = key_data. read ( ) . unwrap ( ) ;
148
150
149
- if let Some ( public_key) = reader_key_data. get_rsa_key ( ) {
150
- let modulus = public_key. modulus . as_unsigned_bytes_be ( ) ;
151
+ if let Some ( public_key) = reader_key_data. get_rsa_key ( ) {
152
+ let modulus = public_key. modulus . as_unsigned_bytes_be ( ) ;
151
153
152
- locate_and_set_int_param ( OSSL_PKEY_PARAM_BITS , modulus. len ( ) * 8 , params) ?;
153
- locate_and_set_int_param ( OSSL_PKEY_PARAM_SECURITY_BITS , 112 , params) ?;
154
- locate_and_set_int_param ( OSSL_PKEY_PARAM_MAX_SIZE , modulus. len ( ) , params) ?;
155
- }
154
+ locate_and_set_int_param ( OSSL_PKEY_PARAM_BITS , modulus. len ( ) * 8 , params) ?;
155
+ locate_and_set_int_param ( OSSL_PKEY_PARAM_SECURITY_BITS , 112 , params) ?;
156
+ locate_and_set_int_param ( OSSL_PKEY_PARAM_MAX_SIZE , modulus. len ( ) , params) ?;
157
+ }
156
158
157
- Ok ( OPENSSL_SUCCESS )
158
- }
159
- } ) ;
159
+ Ok ( OPENSSL_SUCCESS )
160
+ }
161
+ } ,
162
+ ) ;
160
163
161
164
match result {
162
165
Ok ( result) => result,
@@ -178,55 +181,59 @@ fn get_ec_secbits(bits: usize) -> usize {
178
181
if bits < 512 {
179
182
return 192 ;
180
183
}
181
- return 256 ;
184
+ 256
182
185
}
183
186
184
187
pub unsafe extern "C" fn parsec_provider_ecdsa_kmgmt_get_params (
185
188
keydata : VOID_PTR ,
186
189
params : * mut OSSL_PARAM ,
187
190
) -> std:: os:: raw:: c_int {
188
- let result = super :: r#catch ( Some ( || super :: Error :: PROVIDER_KEYMGMT_GET_PARAMS ) , || {
189
- if keydata. is_null ( ) || params. is_null ( ) {
190
- Err ( "Null pointer received as parameter" . into ( ) )
191
- } else {
192
- Arc :: increment_strong_count ( keydata as * const RwLock < ParsecProviderKeyObject > ) ;
193
- let key_data = Arc :: from_raw ( keydata as * const RwLock < ParsecProviderKeyObject > ) ;
194
- let reader_key_data = key_data. read ( ) . unwrap ( ) ;
191
+ let result = super :: r#catch (
192
+ Some ( || super :: Error :: PROVIDER_KEYMGMT_ECDSA_GET_PARAMS ) ,
193
+ || {
194
+ if keydata. is_null ( ) || params. is_null ( ) {
195
+ Err ( "Null pointer received as parameter" . into ( ) )
196
+ } else {
197
+ Arc :: increment_strong_count ( keydata as * const RwLock < ParsecProviderKeyObject > ) ;
198
+ let key_data = Arc :: from_raw ( keydata as * const RwLock < ParsecProviderKeyObject > ) ;
199
+ let reader_key_data = key_data. read ( ) . unwrap ( ) ;
195
200
196
- let key_name = match reader_key_data. key_name {
197
- None => return Err ( "Key name is not set" . to_string ( ) . into ( ) ) ,
198
- Some ( ref name) => name,
199
- } ;
201
+ let key_name = match reader_key_data. key_name {
202
+ None => return Err ( "Key name is not set" . to_string ( ) . into ( ) ) ,
203
+ Some ( ref name) => name,
204
+ } ;
200
205
201
- let key_attrs = reader_key_data
202
- . provctx
203
- . get_client ( )
204
- . key_attributes ( key_name)
205
- . map_err ( |e| format ! ( "Failed to retrived key attributes: {}" , e) ) ?;
206
-
207
- if let Ok ( ptr) = openssl_returns_nonnull ( openssl_bindings:: OSSL_PARAM_locate (
208
- params,
209
- OSSL_PKEY_PARAM_GROUP_NAME . as_ptr ( ) as * const std:: os:: raw:: c_char ,
210
- ) ) {
211
- let mut s = EC_CURVE_NAME . to_string ( ) ;
212
- ( * ptr) . data_type = OSSL_PARAM_UTF8_STRING ;
213
- ( * ptr) . return_size = s. len ( ) ;
214
- std:: ptr:: copy ( s. as_mut_ptr ( ) as _ , ( * ptr) . data , s. len ( ) ) ;
206
+ let key_attrs = reader_key_data
207
+ . provctx
208
+ . get_client ( )
209
+ . key_attributes ( key_name)
210
+ . map_err ( |e| format ! ( "Failed to retrived key attributes: {}" , e) ) ?;
211
+
212
+ if let Ok ( ptr) = openssl_returns_nonnull ( openssl_bindings:: OSSL_PARAM_locate (
213
+ params,
214
+ OSSL_PKEY_PARAM_GROUP_NAME . as_ptr ( ) as * const std:: os:: raw:: c_char ,
215
+ ) ) {
216
+ // This is the only supported curve name
217
+ let mut s = EC_CURVE_NAME . to_string ( ) ;
218
+ ( * ptr) . data_type = OSSL_PARAM_UTF8_STRING ;
219
+ ( * ptr) . return_size = s. len ( ) ;
220
+ std:: ptr:: copy ( s. as_mut_ptr ( ) as _ , ( * ptr) . data , s. len ( ) ) ;
221
+ }
222
+ let _ = locate_and_set_int_param ( OSSL_PKEY_PARAM_BITS , key_attrs. bits , params) ;
223
+ let _ = locate_and_set_int_param (
224
+ OSSL_PKEY_PARAM_SECURITY_BITS ,
225
+ get_ec_secbits ( key_attrs. bits ) ,
226
+ params,
227
+ ) ;
228
+ let _ = locate_and_set_int_param (
229
+ OSSL_PKEY_PARAM_MAX_SIZE ,
230
+ 3 + ( key_attrs. bits + 4 ) * 2 ,
231
+ params,
232
+ ) ;
233
+ Ok ( OPENSSL_SUCCESS )
215
234
}
216
- let _ = locate_and_set_int_param ( OSSL_PKEY_PARAM_BITS , key_attrs. bits , params) ;
217
- let _ = locate_and_set_int_param (
218
- OSSL_PKEY_PARAM_SECURITY_BITS ,
219
- get_ec_secbits ( key_attrs. bits ) ,
220
- params,
221
- ) ;
222
- let _ = locate_and_set_int_param (
223
- OSSL_PKEY_PARAM_MAX_SIZE ,
224
- ( 3 + ( key_attrs. bits + 4 ) * 2 ) . try_into ( ) . unwrap ( ) ,
225
- params,
226
- ) ;
227
- Ok ( OPENSSL_SUCCESS )
228
- }
229
- } ) ;
235
+ } ,
236
+ ) ;
230
237
231
238
match result {
232
239
Ok ( result) => result,
@@ -458,12 +465,9 @@ pub unsafe extern "C" fn parsec_provider_ecdsa_kmgmt_import(
458
465
. psa_export_public_key (
459
466
std:: str:: from_utf8 ( key_name) . map_err ( |e| format ! ( "{:?}" , e) ) ?,
460
467
)
461
- . map_err ( |e| {
462
- format ! ( "Parsec Client failed to export public key: {:?}" , e)
463
- } ) ?;
468
+ . map_err ( |e| format ! ( "Parsec Client failed to export public key: {:?}" , e) ) ?;
464
469
let mut big_num_context = openssl:: bn:: BigNumContext :: new ( ) ?;
465
- let point =
466
- openssl:: ec:: EcPoint :: from_bytes ( & group, & point, & mut big_num_context) ?;
470
+ let point = openssl:: ec:: EcPoint :: from_bytes ( & group, & point, & mut big_num_context) ?;
467
471
writer_key_data. ecdsa_key = Some ( point) ;
468
472
} else {
469
473
return Err ( "Invalid key name" . to_string ( ) . into ( ) ) ;
@@ -590,9 +594,7 @@ pub unsafe extern "C" fn parsec_provider_ecdsa_kmgmt_import_types(
590
594
static mut IMPORT_TYPES_TABLE : [ OSSL_PARAM ; 1 ] = [ ossl_param ! ( ) ; 1 ] ;
591
595
592
596
ONCE_INIT . call_once ( || {
593
- IMPORT_TYPES_TABLE = [
594
- ossl_param ! ( ) ,
595
- ] ;
597
+ IMPORT_TYPES_TABLE = [ ossl_param ! ( ) ] ;
596
598
} ) ;
597
599
598
600
IMPORT_TYPES_TABLE . as_ptr ( )
@@ -681,13 +683,15 @@ pub unsafe extern "C" fn parsec_provider_ecdsa_kmgmt_match(
681
683
group. set_asn1_flag ( openssl:: ec:: Asn1Flag :: NAMED_CURVE ) ;
682
684
683
685
let mut big_num_context = openssl:: bn:: BigNumContext :: new ( ) ?;
684
- let are_equal = a. eq ( group. as_ref ( ) , b, & mut big_num_context) . map_err ( |e| format ! ( "Failed to match keys: {}" , e) ) ?;
686
+ let are_equal = a
687
+ . eq ( group. as_ref ( ) , b, & mut big_num_context)
688
+ . map_err ( |e| format ! ( "Failed to match keys: {}" , e) ) ?;
685
689
if are_equal {
686
690
Ok ( OPENSSL_SUCCESS )
687
691
} else {
688
692
Err ( "Keys do not match" . into ( ) )
689
693
}
690
- } ,
694
+ }
691
695
_ => Err ( "Keys do not match" . into ( ) ) ,
692
696
}
693
697
} else {
@@ -730,7 +734,7 @@ pub unsafe extern "C" fn parsec_provider_kmgmt_rsa_query_operation_name(
730
734
pub unsafe extern "C" fn parsec_provider_ecdsa_kmgmt_query_operation_name (
731
735
_operation_id : std:: os:: raw:: c_int ,
732
736
) -> * const std:: os:: raw:: c_char {
733
- return PARSEC_PROVIDER_ECDSA_NAME . as_ptr ( ) as * const std:: os:: raw:: c_char ;
737
+ PARSEC_PROVIDER_ECDSA_NAME . as_ptr ( ) as * const std:: os:: raw:: c_char
734
738
}
735
739
736
740
const OSSL_FUNC_KEYMGMT_RSA_QUERY_OPERATION_NAME_PTR : KeyMgmtQueryOperationNamePtr =
@@ -768,7 +772,8 @@ const OSSL_FUNC_KEYMGMT_RSA_IMPORT_TYPES_PTR: KeyMgmtImportTypesPtr =
768
772
const OSSL_FUNC_KEYMGMT_ECDSA_IMPORT_TYPES_PTR : KeyMgmtImportTypesPtr =
769
773
parsec_provider_ecdsa_kmgmt_import_types;
770
774
const OSSL_FUNC_KEYMGMT_SET_PARAMS_PTR : KeyMgmtSetParamsPtr = parsec_provider_kmgmt_set_params;
771
- const OSSL_FUNC_KEYMGMT_RSA_GET_PARAMS_PTR : KeyMgmtGetParamsPtr = parsec_provider_kmgmt_rsa_get_params;
775
+ const OSSL_FUNC_KEYMGMT_RSA_GET_PARAMS_PTR : KeyMgmtGetParamsPtr =
776
+ parsec_provider_kmgmt_rsa_get_params;
772
777
const OSSL_FUNC_KEYMGMT_ECDSA_GET_PARAMS_PTR : KeyMgmtGetParamsPtr =
773
778
parsec_provider_ecdsa_kmgmt_get_params;
774
779
const OSSL_FUNC_KEYMGMT_SETTABLE_PARAMS_PTR : KeyMgmtSettableParamsPtr =
0 commit comments