I cannot init_token with my HSM using cryptoki in my Rust application.
However, it works with SoftHSM2.
I also manage to init a token using my HSM client binary (not my Rust application).
Context
I'm using an HSM with a PIN Entry Device (PED) (see what is a PED).
It's a device, linked to the HSM, that requires to plug dongle (USB stick) for authentification.
To connect as SO, it's not possible to set a PIN. It is mandatory to use the PED.
So instead of entering a PIN on my PC, I plug a dongle on the PED to login.
For example, if I want to open a session I use this line :
let session = pkcs11.open_rw_session(slot)?;
session.login(UserType::So, None)?
NOTE: I use None to indiacte to use the protected authentication path, in this case, it's the PED.NOTE2: However, to login as UserType::User, I am allowed to set a PIN, in order to avoid using the PED. In this case, I use Some(&pin) to login as a User.
How to reproduce
If I use SoftHSM2, I indicate a pin I set beforehand (eg. "1234") and it works perfectly. But if I use my HSM, there's not pin set for the SO, so I indicate en empty pin (eg. "").
let slot = pkcs11.get_slots_with_initialized_token()?[0];
let pin = AuthPin::new(String::from(""));
pkcs11.init_token(slot, &pin, "reinitialized")?;
init_token raises a CryptokiError(Pkcs11(GeneralError)).
Expected behaviour
Indicate "" (empty) pin and init the token successfully (that's what I'm doing using the HSM client binary), or using None, like in login().
Issue
I cannot
init_token
with my HSM usingcryptoki
in my Rust application. However, it works with SoftHSM2. I also manage to init a token using my HSM client binary (not my Rust application).Context
I'm using an HSM with a PIN Entry Device (PED) (see what is a PED).
It's a device, linked to the HSM, that requires to plug dongle (USB stick) for authentification. To connect as SO, it's not possible to set a PIN. It is mandatory to use the PED. So instead of entering a PIN on my PC, I plug a dongle on the PED to login.
For example, if I want to open a session I use this line :
NOTE: I use
None
to indiacte to use the protected authentication path, in this case, it's the PED. NOTE2: However, to login asUserType::User
, I am allowed to set a PIN, in order to avoid using the PED. In this case, I useSome(&pin)
tologin
as aUser
.How to reproduce
If I use SoftHSM2, I indicate a pin I set beforehand (eg.
"1234"
) and it works perfectly. But if I use my HSM, there's not pin set for theSO
, so I indicate en empty pin (eg.""
).init_token
raises aCryptokiError(Pkcs11(GeneralError))
.Expected behaviour
Indicate
""
(empty) pin and init the token successfully (that's what I'm doing using the HSM client binary), or usingNone
, like inlogin()
.