Skip to content

Commit d298800

Browse files
keymgmt: ECDSA OSSL_FUNC_KEYMGMT_SETTABLE/GETTABLE_PARAMS
Signed-off-by: Tomás González <tomasagustin.gonzalezorlando@arm.com>
1 parent c3df296 commit d298800

File tree

2 files changed

+63
-6
lines changed

2 files changed

+63
-6
lines changed

parsec-openssl-provider/src/keymgmt/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,14 @@ pub unsafe extern "C" fn parsec_provider_kmgmt_gettable_params(
115115
_provctx: VOID_PTR,
116116
) -> *const OSSL_PARAM {
117117
static ONCE_INIT: std::sync::Once = std::sync::Once::new();
118-
static mut KEYMGMT_GETTABLE_TABLE: [OSSL_PARAM; 4] = [ossl_param!(); 4];
118+
static mut KEYMGMT_GETTABLE_TABLE: [OSSL_PARAM; 5] = [ossl_param!(); 5];
119119

120120
ONCE_INIT.call_once(|| {
121121
KEYMGMT_GETTABLE_TABLE = [
122122
ossl_param!(OSSL_PKEY_PARAM_BITS, OSSL_PARAM_INTEGER),
123123
ossl_param!(OSSL_PKEY_PARAM_SECURITY_BITS, OSSL_PARAM_INTEGER),
124124
ossl_param!(OSSL_PKEY_PARAM_MAX_SIZE, OSSL_PARAM_INTEGER),
125+
ossl_param!(OSSL_PKEY_PARAM_GROUP_NAME, OSSL_PARAM_UTF8_STRING),
125126
ossl_param!(),
126127
];
127128
});

parsec-openssl-provider/src/signature/mod.rs

Lines changed: 61 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -220,16 +220,39 @@ unsafe extern "C" fn parsec_provider_signature_settable_params(
220220
_provkey: VOID_PTR,
221221
) -> *const OSSL_PARAM {
222222
static ONCE_INIT: std::sync::Once = std::sync::Once::new();
223-
static mut SIGCTX_GETTABLE_TABLE: [OSSL_PARAM; 3] = [ossl_param!(); 3];
223+
static mut SIGCTX_SETTABLE_TABLE: [OSSL_PARAM; 3] = [ossl_param!(); 3];
224224

225225
ONCE_INIT.call_once(|| {
226-
SIGCTX_GETTABLE_TABLE = [
226+
SIGCTX_SETTABLE_TABLE = [
227227
ossl_param!(OSSL_SIGNATURE_PARAM_PAD_MODE, OSSL_PARAM_UTF8_STRING),
228228
ossl_param!(OSSL_SIGNATURE_PARAM_PSS_SALTLEN, OSSL_PARAM_UTF8_STRING),
229229
ossl_param!(),
230230
];
231231
});
232-
SIGCTX_GETTABLE_TABLE.as_ptr() as _
232+
SIGCTX_SETTABLE_TABLE.as_ptr() as _
233+
}
234+
235+
unsafe extern "C" fn parsec_provider_signature_ecdsa_settable_params(
236+
_ctx: VOID_PTR,
237+
_provkey: VOID_PTR,
238+
) -> *const OSSL_PARAM {
239+
static ONCE_INIT: std::sync::Once = std::sync::Once::new();
240+
static mut SIGCTX_SETTABLE_TABLE: [OSSL_PARAM; 1] = [ossl_param!(); 1];
241+
242+
ONCE_INIT.call_once(|| {
243+
SIGCTX_SETTABLE_TABLE = [ossl_param!()];
244+
});
245+
SIGCTX_SETTABLE_TABLE.as_ptr() as _
246+
}
247+
248+
/*
249+
Sets the context parameters for ECDSA signature
250+
*/
251+
pub unsafe extern "C" fn parsec_provider_signature_ecdsa_set_params(
252+
_keydata: VOID_PTR,
253+
_params: *const OSSL_PARAM,
254+
) -> std::os::raw::c_int {
255+
OPENSSL_SUCCESS
233256
}
234257

235258
/*
@@ -309,9 +332,12 @@ pub type SignatureDigestSignInitPtr = unsafe extern "C" fn(
309332

310333
const OSSL_FUNC_SIGNATURE_SETTABLE_PARAMS_PTR: SignatureSettableParamsPtr =
311334
parsec_provider_signature_settable_params;
312-
335+
const OSSL_FUNC_SIGNATURE_ECDSA_SETTABLE_PARAMS_PTR: SignatureSettableParamsPtr =
336+
parsec_provider_signature_ecdsa_settable_params;
313337
const OSSL_FUNC_SIGNATURE_SET_PARAMS_PTR: SignatureSetParamsPtr =
314338
parsec_provider_signature_set_params;
339+
const OSSL_FUNC_SIGNATURE_ECDSA_SET_PARAMS_PTR: SignatureSetParamsPtr =
340+
parsec_provider_signature_ecdsa_set_params;
315341
pub type SignatureSettableParamsPtr = unsafe extern "C" fn(VOID_PTR, VOID_PTR) -> *const OSSL_PARAM;
316342

317343
pub type SignatureSetParamsPtr =
@@ -355,11 +381,41 @@ const PARSEC_PROVIDER_SIGN_IMPL: [OSSL_DISPATCH; 7] = [
355381
ossl_dispatch!(),
356382
];
357383

384+
const PARSEC_PROVIDER_SIGN_ECDSA_IMPL: [OSSL_DISPATCH; 7] = [
385+
unsafe { ossl_dispatch!(OSSL_FUNC_SIGNATURE_NEWCTX, OSSL_FUNC_SIGNATURE_NEWCTX_PTR) },
386+
unsafe { ossl_dispatch!(OSSL_FUNC_SIGNATURE_FREECTX, OSSL_FUNC_SIGNATURE_FREECTX_PTR) },
387+
unsafe {
388+
ossl_dispatch!(
389+
OSSL_FUNC_SIGNATURE_DIGEST_SIGN,
390+
OSSL_FUNC_SIGNATURE_DIGEST_SIGN_PTR
391+
)
392+
},
393+
unsafe {
394+
ossl_dispatch!(
395+
OSSL_FUNC_SIGNATURE_DIGEST_SIGN_INIT,
396+
OSSL_FUNC_SIGNATURE_DIGEST_SIGN_INIT_PTR
397+
)
398+
},
399+
unsafe {
400+
ossl_dispatch!(
401+
OSSL_FUNC_SIGNATURE_SETTABLE_CTX_PARAMS,
402+
OSSL_FUNC_SIGNATURE_ECDSA_SETTABLE_PARAMS_PTR
403+
)
404+
},
405+
unsafe {
406+
ossl_dispatch!(
407+
OSSL_FUNC_SIGNATURE_SET_CTX_PARAMS,
408+
OSSL_FUNC_SIGNATURE_ECDSA_SET_PARAMS_PTR
409+
)
410+
},
411+
ossl_dispatch!(),
412+
];
413+
358414
pub const PARSEC_PROVIDER_SIGNATURE: [OSSL_ALGORITHM; 3] = [
359415
ossl_algorithm!(
360416
PARSEC_PROVIDER_ECDSA_NAME,
361417
PARSEC_PROVIDER_DFLT_PROPERTIES,
362-
PARSEC_PROVIDER_SIGN_IMPL,
418+
PARSEC_PROVIDER_SIGN_ECDSA_IMPL,
363419
PARSEC_PROVIDER_DESCRIPTION_ECDSA
364420
),
365421
ossl_algorithm!(

0 commit comments

Comments
 (0)