Hi Wei-Jun,

As far as I know, public and private keys are different PKCS#11 objects, 
each one with a different CK_OBJECT_HANDLE. See for example how 
C_GenerateKeyPair [1] has two output parameters: CK_OBJECT_HANDLE_PTR 
phPublicKey amd CK_OBJECT_HANDLE_PTR phPrivateKey.

NSS uses CKA_PUBLIC_KEY_INFO only when wrapping [2] / unwrapping [3] 
(C_WrapKey / C_UnwrapKey) RSA-PSS keys (where it stores an ASN1-encoded 
SubjectPublicKeyInfo with the algorithm OID and the DER encoding of the 
public key).

Here [4] is how SunPKCS11 proceeds after calling C_GenerateKeyPair, by 
creating two P11Key objects for each handle (P11PublicKey and 
P11PrivateKey).

[1] 
https://docs.oasis-open.org/pkcs11/pkcs11-base/v3.0/pkcs11-base-v3.0.html#_Toc29976704
[2] 
https://github.com/nss-dev/nss/blob/NSS_3_101_RTM/lib/softoken/pkcs11c.c#L6038-L6039
[3] 
https://github.com/nss-dev/nss/blob/NSS_3_101_RTM/lib/softoken/pkcs11c.c#L6604-L6605
[4] 
https://github.com/openjdk/jdk/blob/jdk-25+1/src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11KeyPairGenerator.java#L424-L431

Regards,
-- 
Francisco

On 12/10/24 01:43, Wei-Jun Wang wrote:
> Daniel suggested CKA_PUBLIC_KEY_INFO but it’s not available in NSS 3.101.
> 
>> On Dec 9, 2024, at 08:07, Wei-Jun Wang <weijun.w...@oracle.com> wrote:
>>
>> Hi PKCS #11 gurus,
>>
>> DHKEM [1] requires a function
>>
>>  Pk(skX): The KEM public key corresponding to the KEM private key skX.
>>
>> "The notation pk(skX), depending on its use and the KEM and its 
>> implementation, is either the computation of the public key using the 
>> private key, or just syntax expressing the retrieval of the public 
>> key, assuming it is stored along with the private key object."
>>
>> For the software side, I can calculate the public key [2] from the 
>> private key. How can I do this in PKCS #11?
>>
>> Thanks,
>> Weijun
>>
>> [1] https://www.rfc-editor.org/rfc/rfc9180.html#name-notation
>> [2] https://github.com/openjdk/jdk/blob/ 
>> adca97b659d725b0dd320322297dcbd1b443a047/src/java.base/share/classes/ 
>> sun/security/ec/ECPrivateKeyImpl.java#L209
>>
> 

Reply via email to