Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Thales HSM does not work since libp11-0.4.11 #489

Open
marckleinebudde opened this issue Mar 22, 2023 · 1 comment
Open

Thales HSM does not work since libp11-0.4.11 #489

marckleinebudde opened this issue Mar 22, 2023 · 1 comment

Comments

@marckleinebudde
Copy link

marckleinebudde commented Mar 22, 2023

Hello,

we're using 2 network HSMs by Thales, they come with the libcknfast.so PKCS#11 library. For redundancy reasons the keys are deployed to both HSMs.

With this setup, loading a public key (using ENGINE_load_public_key()) doesn't work with the latest release nor the current git master (89ccb1f ("Change bool attribute true/false names to _true/_false"))

The application fails with:

Found uninitialized token
Specified object not found
Found uninitialized token
Specified object not found
PKCS11_load_public_key returned NULL
At main.c:126:
- SSL error:FFFFFFFF80068065:pkcs11 engine:ctx_load_pubkey:object not found:
eng_back.c:954
- SSL error:26097081:engine routines:ENGINE_load_public_key:failed loading
public key: crypto/engine/eng_pkey.c:108

In the good case the output looks like this:

Found uninitialized token

...and continues to work with the extracted key.

We've bisected the problem down to commit 85a91f4 ("eng_back: Search objects in all matching tokens"). BTW: bisecting worked like charm, thanks for keeping the tree compilable!

As URL (serial, id, object redacted) we're using:

pkcs11:id=%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55;object=2222_ccc-development

Even with the full URL, it doesn't work:

pkcs11:model=;manufacturer=nCipher%55Corp.%55Ltd;serial=aaaa-aaaa-aaaa;token=accelerator;id=%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55;object=2222_ccc-development

Here some p11tool output:

$ p11tool --provider=/opt/nfast/toolkits/pkcs11/libcknfast.so --list-tokens
Token 0:
        URL: pkcs11:model=;manufacturer=nCipher%55Corp.%55Ltd;serial=aaaa-aaaa-aaaa;token=accelerator
        Label: accelerator
        Type: Hardware token
        Manufacturer: nCipher Corp. Ltd
        Model: 
        Serial: aaaa-aaaa-aaaa
        Module: (null)

Token 1:
        URL: pkcs11:model=;manufacturer=nCipher%55Corp.%55Ltd;serial=bbbb-bbbb-bbbb;token=accelerator
        Label: accelerator
        Type: Hardware token
        Manufacturer: nCipher Corp. Ltd
        Model: 
        Serial: bbbb-bbbb-bbbb
        Module: (null)

$ p11tool --provider=/opt/nfast/toolkits/pkcs11/libcknfast.so --list-all "pkcs11:model=;manufacturer=nCipher%55Corp.%55Ltd;serial=aaaa-aaaa-aaaa;token=accelerator" | grep URL 
        URL: pkcs11:model=;manufacturer=nCipher%55Corp.%55Ltd;serial=aaaa-aaaa-aaaa;token=accelerator;id=%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55;object=2222_ccc-development;type=private
        URL: pkcs11:model=;manufacturer=nCipher%55Corp.%55Ltd;serial=aaaa-aaaa-aaaa;token=accelerator;id=%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55;object=2222_ccc-development;type=public

$ p11tool --provider=/opt/nfast/toolkits/pkcs11/libcknfast.so --list-all "pkcs11:model=;manufacturer=nCipher%55Corp.%55Ltd;serial=bbbb-bbbb-bbbb;token=accelerator" | grep URL
        URL: pkcs11:model=;manufacturer=nCipher%55Corp.%55Ltd;serial=bbbb-bbbb-bbbb;token=accelerator;id=%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55;object=2222_ccc-development;type=private
        URL: pkcs11:model=;manufacturer=nCipher%55Corp.%55Ltd;serial=bbbb-bbbb-bbbb;token=accelerator;id=%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55;object=2222_ccc-development;type=public

regards,
Marc

@marckleinebudde
Copy link
Author

Here more debug output in verbose mode:

good:

PKCS#11: Initializing the engine
Found 4 slots
Loading public key "pkcs11:id=%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55;object=2222_ccc-development"
Looking in slot -1 for key: id=5555555555555555555555555555555555555555 label=2222_ccc-development
[492971157] aaaa-aaaa-aaaa Rt1         uninitialized     (accelerator)
[492971158] aaaa-aaaa-aaaa Rt1 slot 0  no tok          
[492971159] bbbb-bbbb-bbbb Rt2         uninitialized     (accelerator)
[492971160] bbbb-bbbb-bbbb Rt2 slot 0  no tok          
Found uninitialized token
Found slot:  bbbb-bbbb-bbbb Rt2
Found token: accelerator
Found 22 public keys:
   1    id=...
   2    id=...
   3    id=...
   4    id=...
   5    id=...
   6    id=...
   7    id=...
   8    id=5555555555555555555555555555555555555555 label=2222_ccc-development
   9    id=...
  10    id=...
  11    id=...
  12    id=...
  13    id=...
  14    id=...
  15    id=...
  16    id=...
  17    id=...
  18    id=...
  19    id=...
  20    id=...
  21    id=...
  22    id=...

bad:

PKCS#11: Initializing the engine
Found 4 slots
Loading public key "pkcs11:id=%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55;object=2222_ccc-development"
Looking in slot -1 for key: id=5555555555555555555555555555555555555555 label=2222_ccc-development
[492971157] aaaa-aaaa-aaaa Rt1         uninitialized     (accelerator)
Found uninitialized token
[492971158] aaaa-aaaa-aaaa Rt1 slot 0  no tok          
[492971159] bbbb-bbbb-bbbb Rt2         uninitialized     (accelerator)
Found uninitialized token
[492971160] bbbb-bbbb-bbbb Rt2 slot 0  no tok          
Specified object not found
Loading public key "pkcs11:id=%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55%55;object=2222_ccc-development"
Looking in slot -1 for key: id=5555555555555555555555555555555555555555 label=2222_ccc-development
[492971157] aaaa-aaaa-aaaa Rt1         uninitialized     (accelerator)
Found uninitialized token
[492971158] aaaa-aaaa-aaaa Rt1 slot 0  no tok          
[492971159] bbbb-bbbb-bbbb Rt2         uninitialized     (accelerator)
Found uninitialized token
[492971160] bbbb-bbbb-bbbb Rt2 slot 0  no tok          
Specified object not found
PKCS11_load_public_key returned NULL
At main.c:136:
- SSL error:FFFFFFFF80068065:pkcs11 engine:ctx_load_pubkey:object not found: eng_back.c:954
- SSL error:26097081:engine routines:ENGINE_load_public_key:failed loading public key: crypto/engine/eng_pkey.c:108

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant