[openssl-dev] openssl pkeyutl unable to use keys on a PKCS11 token?
Blumenthal, Uri - 0553 - MITLL
uri at ll.mit.edu
Thu Dec 10 16:59:04 UTC 2015
I want to add that apparently some openssl commands work OK with this
token and pkcs11 engine:
$ openssl version
OpenSSL 1.0.2e 3 Dec 2015
$ openssl dgst -engine pkcs11 -keyform engine -sign
"pkcs11:object=SIGN%20key;object-type=private;pin-value=123456" -sha256
-out t.sig < config.h
engine "pkcs11" set.
$ ll t.sig
-rw-r--r-- 1 ur20980 MITLL\Domain Users 256 Dec 10 11:52 t.sig
$ openssl dgst -verify pub.key -keyform PEM -signature t.sig -sha256 <
config.h
Verified OK
$
But I need to also be able to use “encrypt” (well, “decrypt” to be precise
:) and “derive” (for ECDH key)…
Thanks!
--
Regards,
Uri Blumenthal
On 12/10/15, 10:38 , "openssl-dev on behalf of Blumenthal, Uri - 0553 -
MITLL" <openssl-dev-bounces at openssl.org on behalf of uri at ll.mit.edu> wrote:
>On 12/10/15, 3:39 , "openssl-dev on behalf of Richard Levitte"
><openssl-dev-bounces at openssl.org on behalf of levitte at openssl.org> wrote:
>
>>This is an odity with 'openssl pkeyutl'. Try this option order:
>
>I see!
>
>>LOAD_CERT_CTRL=true VERBOSE=7 openssl pkeyutl -engine pkcs11 -sign
>>-keyform engine -inkey
>>"pkcs11:object=SIGN%20key;object-type=private;pin-value=123456" -out
>>config.status.sig -in config.status.hash
>
>Much better now - but at this time I hit “unsupported algorithm”. The key
>in question is RSA-2048, with SHA256.
>
>$ LOAD_CERT_CTRL=true VERBOSE=7 openssl pkeyutl -engine pkcs11 -sign
>-keyform engine -inkey
>"pkcs11:object=SIGN%20key;object-type=private;pin-value=123456" -out
>config.status.sig -in config.status.hash
>engine "pkcs11" set.
>Error initializing context
>140735296230224:error:260C0065:engine
>routines:ENGINE_get_pkey_meth:unimplemented public key
>method:tb_pkmeth.c:128:
>140735296230224:error:0609D09C:digital envelope
>routines:INT_CTX_NEW:unsupported algorithm:pmeth_lib.c:164:
>Usage: pkeyutl [options]
>-in file input file
>-out file output file
>-sigfile file signature file (verify operation only)
>-inkey file input key
>-keyform arg private key format - default PEM
>-pubin input is a public key
>-certin input is a certificate carrying a public key
>-pkeyopt X:Y public key options
>-sign sign with private key
>-verify verify with public key
>-verifyrecover verify with public key, recover original data
>-encrypt encrypt with public key
>-decrypt decrypt with private key
>-derive derive shared secret
>-hexdump hex dump output
>-engine e use engine e, possibly a hardware device.
>-passin arg pass phrase source
>$
>
>
>I observed exactly the same happening with the decryption key.
>
>In case it helps:
>
>$ pkcs15-tool -k
>Using reader with a card: Yubico Yubikey NEO OTP+U2F+CCID
>Private RSA Key [PIV AUTH key]
> Object Flags : [0x1], private
> Usage : [0x2E], decrypt, sign, signRecover, unwrap
> Access Flags : [0x1D], sensitive, alwaysSensitive, neverExtract, local
> ModLength : 2048
> Key ref : 154 (0x9A)
> Native : yes
> Auth ID : 01
> ID : 01
> MD:guid :
>0x'30316562353835613063343662663535643834323364393639623233646562370000000
>0
>00000000'
>
>
>Private RSA Key [SIGN key]
> Object Flags : [0x1], private
> Usage : [0x20E], decrypt, sign, signRecover, nonRepudiation
> Access Flags : [0x1D], sensitive, alwaysSensitive, neverExtract, local
> ModLength : 2048
> Key ref : 156 (0x9C)
> Native : yes
> Auth ID : 01
> ID : 02
> MD:guid :
>0x'30326562353835613063343662663535643834323364393639623233646562370000000
>0
>00000000'
>
>
>Private RSA Key [KEY MAN key]
> Object Flags : [0x1], private
> Usage : [0x22], decrypt, unwrap
> Access Flags : [0x1D], sensitive, alwaysSensitive, neverExtract, local
> ModLength : 2048
> Key ref : 157 (0x9D)
> Native : yes
> Auth ID : 01
> ID : 03
> MD:guid :
>0x'30336562353835613063343662663535643834323364393639623233646562370000000
>0
>00000000'
>
>
>Private RSA Key [CARD AUTH key]
> Object Flags : [0x0]
> Usage : [0xC], sign, signRecover
> Access Flags : [0x1D], sensitive, alwaysSensitive, neverExtract, local
> ModLength : 2048
> Key ref : 158 (0x9E)
> Native : yes
> ID : 04
> MD:guid :
>0x'30346562353835613063343662663535643834323364393639623233646562370000000
>0
>00000000'
>
>
>
>>The reason for this is that pkeyutl (as opposed to most other openssl
>>subcommands) tries to load the key while parsing the options, so if
>>'-keyform engine' comes after '-inkey ...', it will try to load the
>>key before having seen that it should be loaded from engine.
>>
>>I think a bugfix for this is in order...
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4308 bytes
Desc: not available
URL: <http://mta.openssl.org/pipermail/openssl-dev/attachments/20151210/70dab1e1/attachment.bin>
More information about the openssl-dev
mailing list