Re: PKCS#11 keys

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

 



You are partially right.
The rsa_idx, and ec_key_idx should not be set to 0, but should be set
using RSA_get_ex_new_index() as is done later in:
https://github.com/openssh/openssh-portable/blame/1bb130ed34721d46452529d094d9bbf045607d79/ssh-pkcs11.c#L471

rsa_idx = RSA_get_ex_new_index(0, "ssh-pkcs11-rsa",

This then allows for multiple components to store data in a key.
The index is not of the key, but of extra data that can be stored in a key.
Thus every key can have its own "ssh-pkcs11-rsa" with different data.

The ec_key_idx is set in:
https://github.com/openssh/openssh-portable/blame/1bb130ed34721d46452529d094d9bbf045607d79/ssh-pkcs11.c#L587


https://www.openssl.org/docs/man1.1.1/man3/RSA_get_ex_new_index.html
and is also in OpenSSL-1.0.2.

OpenSC/libp11 examples start here:
https://github.com/OpenSC/libp11/blob/master/src/p11_rsa.c#L399

https://github.com/OpenSC/libp11/blob/master/src/p11_ec.c#L155


On 2/13/2021 8:22 AM, Dmitry Belyavskiy wrote:
Dear Douglas,

Everything is fine with methods. But I'm speaking about the variables rsa_idx and ec_key_idx, sorry for being unclear.
They serve as handles in a global OpenSSL table and identify a pkcs11_data associated with a particular key, don't they?

On Sat, Feb 13, 2021 at 3:07 PM Douglas E Engert <deengert@xxxxxxxxx <mailto:deengert@xxxxxxxxx>> wrote:

    These lines are for METHODS, i.e. RSA_METHOD and EC_KEY_METHOD. RSA keys can share an RSA_METHOD,
    and EC keys can share an EC_KEY_METHOD.  A method can be copied, for example an OpenSSL engine
    for using PKCS11, would then provide the routines in the method to not use the default software version
    of RSA signature or decrypting operations, but use PKCS11 to have these operations done on the token or smart card.
    So for RSA keys on the token, all these keys would share a copied and modified RSA_METHOD PKCS11 method
    where the rsa_idx in these keys is used to point to key specific data such as PkCS11 slot and KeyIDs.



    On 2/12/2021 10:31 AM, Dmitry Belyavskiy wrote:
     > Hello,
     >
     > Do I correctly understand that there can't be more than one key of each
     > type of PKCS#11?
     >
     > The lines
     > https://github.com/openssh/openssh-portable/blame/1bb130ed34721d46452529d094d9bbf045607d79/ssh-pkcs11.c#L191-L196
    <https://github.com/openssh/openssh-portable/blame/1bb130ed34721d46452529d094d9bbf045607d79/ssh-pkcs11.c#L191-L196>
     > seem to use the global variables for RSA/ECDSA pkcs11-related data
     > structures.
     >
     > Many thanks!
     >

--
       Douglas E. Engert  <DEEngert@xxxxxxxxx <mailto:DEEngert@xxxxxxxxx>>

    _______________________________________________
    openssh-unix-dev mailing list
    openssh-unix-dev@xxxxxxxxxxx <mailto:openssh-unix-dev@xxxxxxxxxxx>
    https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev <https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev>



--
Dmitry Belyavskiy

--

 Douglas E. Engert  <DEEngert@xxxxxxxxx>

_______________________________________________
openssh-unix-dev mailing list
openssh-unix-dev@xxxxxxxxxxx
https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev




[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux