Skip to content

Commit 7c43303

Browse files
tgonzalezorlandoarmgowthamsk-arm
authored andcommitted
Add unit test for OSSL_FUNC_KEYMGMT_IMPORT
Signed-off-by: Tomás González <tomasagustin.gonzalezorlando@arm.com>
1 parent f092e50 commit 7c43303

File tree

1 file changed

+57
-0
lines changed
  • parsec-openssl-provider/src/keymgmt

1 file changed

+57
-0
lines changed

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

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -624,3 +624,60 @@ fn test_kmgmt_match() {
624624
parsec_provider_teardown(provctx as *const OSSL_PROVIDER);
625625
}
626626
}
627+
628+
#[test]
629+
fn test_kmgmt_import() {
630+
use crate::{parsec_provider_provider_init, parsec_provider_teardown};
631+
632+
let out: *const OSSL_DISPATCH = std::ptr::null();
633+
let mut provctx: types::VOID_PTR = std::ptr::null_mut();
634+
635+
// Initialize the provider
636+
let result: Result<(), parsec_openssl2::Error> = unsafe {
637+
parsec_provider_provider_init(
638+
std::ptr::null(),
639+
std::ptr::null(),
640+
&out as *const _ as *mut _,
641+
&mut provctx as *mut VOID_PTR,
642+
)
643+
};
644+
assert!(result.is_ok());
645+
646+
let keyctx = unsafe { parsec_provider_kmgmt_new(provctx) };
647+
648+
// Check that import fails with "bad" data
649+
let bad_key_name = "BAD-NAME".to_string();
650+
let mut bad_params = [
651+
ossl_param!(PARSEC_PROVIDER_KEY_NAME, OSSL_PARAM_UTF8_PTR, bad_key_name),
652+
ossl_param!(),
653+
];
654+
let bad_import_res = unsafe {
655+
parsec_provider_kmgmt_import(
656+
keyctx,
657+
OSSL_KEYMGMT_SELECT_OTHER_PARAMETERS as i32,
658+
&mut bad_params as _,
659+
)
660+
};
661+
assert_eq!(bad_import_res, OPENSSL_ERROR);
662+
663+
// Check that import succeeds with "good" data
664+
let good_key_name = "PARSEC_TEST_KEYNAME".to_string();
665+
let mut good_params = [
666+
ossl_param!(PARSEC_PROVIDER_KEY_NAME, OSSL_PARAM_UTF8_PTR, good_key_name),
667+
ossl_param!(),
668+
];
669+
670+
let good_import_res = unsafe {
671+
parsec_provider_kmgmt_import(
672+
keyctx,
673+
OSSL_KEYMGMT_SELECT_OTHER_PARAMETERS as i32,
674+
&mut good_params as _,
675+
)
676+
};
677+
assert_eq!(good_import_res, OPENSSL_SUCCESS);
678+
679+
unsafe {
680+
parsec_provider_kmgmt_free(keyctx);
681+
parsec_provider_teardown(provctx as *const OSSL_PROVIDER);
682+
}
683+
}

0 commit comments

Comments
 (0)