@@ -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