22// SPDX-License-Identifier: Apache-2.0
33mod common;
44
5- use crate :: common:: { get_pkcs11, is_softhsm, SO_PIN , USER_PIN } ;
5+ use crate :: common:: { get_pkcs11, is_softhsm, is_softokn , SO_PIN , USER_PIN } ;
66use common:: init_pins;
77use cryptoki:: context:: Function ;
88use cryptoki:: error:: { Error , RvError } ;
@@ -1086,7 +1086,11 @@ fn get_session_info_test() -> TestResult {
10861086 if let Err ( cryptoki:: error:: Error :: Pkcs11 ( rv_error, _) ) =
10871087 session. login ( UserType :: So , Some ( & AuthPin :: new ( SO_PIN . into ( ) ) ) )
10881088 {
1089- assert_eq ! ( rv_error, RvError :: SessionReadOnlyExists )
1089+ if is_softokn ( ) {
1090+ assert_eq ! ( rv_error, RvError :: UserTypeInvalid )
1091+ } else {
1092+ assert_eq ! ( rv_error, RvError :: SessionReadOnlyExists )
1093+ }
10901094 } else {
10911095 panic ! ( "Should error when attempting to log in as CKU_SO on a read-only session" ) ;
10921096 }
@@ -1107,14 +1111,16 @@ fn get_session_info_test() -> TestResult {
11071111 assert_eq ! ( session_info. slot_id( ) , slot) ;
11081112 assert ! ( matches!( session_info. session_state( ) , SessionState :: RwUser , ) ) ;
11091113 session. logout ( ) ?;
1110- session. login ( UserType :: So , Some ( & AuthPin :: new ( SO_PIN . into ( ) ) ) ) ?;
1111- let session_info = session. get_session_info ( ) ?;
1112- assert ! ( session_info. read_write( ) ) ;
1113- assert_eq ! ( session_info. slot_id( ) , slot) ;
1114- assert ! ( matches!(
1115- session_info. session_state( ) ,
1116- SessionState :: RwSecurityOfficer
1117- ) ) ;
1114+ if !is_softokn ( ) {
1115+ session. login ( UserType :: So , Some ( & AuthPin :: new ( SO_PIN . into ( ) ) ) ) ?;
1116+ let session_info = session. get_session_info ( ) ?;
1117+ assert ! ( session_info. read_write( ) ) ;
1118+ assert_eq ! ( session_info. slot_id( ) , slot) ;
1119+ assert ! ( matches!(
1120+ session_info. session_state( ) ,
1121+ SessionState :: RwSecurityOfficer
1122+ ) ) ;
1123+ }
11181124
11191125 Ok ( ( ) )
11201126}
0 commit comments