No, it’s the EncryptedPrivateKeyInfo format and internally the data is PKCS8. I 
can unwrap it with a cipher from SunJCE.

BTW, I made a mistake in my first mail. The config needn’t be sensitive. Then I 
am able to use the key to init a SunJCE cipher.

—Weijun

> On Dec 18, 2024, at 22:02, Mike StJohns <mstjo...@comcast.net> wrote:
> 
> If I had to make a wild guess, I’d guess that the wrapped key doesn’t include 
> the curve info.  If the length of the wrapped data is only 40 bytes, then all 
> you have is the x from the private key.  I’m wondering if the algorithm has 
> to include the curve info.  
> 
> Something like “EC/secp256r1”?  
> 
> If it’s longer than 40 bytes (or 8 plus the length of the private key data 
> for a given curve) then something besides the bare private key has been 
> wrapped.  
> 
> For some unknown reason, the format of the key material being wrapped was not 
> specified by PKCS11.  
> 
> Mike
> 
> Sent from my iPad
> 
>> On Dec 18, 2024, at 19:23, Wei-Jun Wang <weijun.w...@oracle.com> wrote:
>> 
>> Hi, PKCS #11 gurus,
>> 
>>   var sp = KeyPairGenerator.getInstance("EC", 
>> p).generateKeyPair().getPrivate();
>>   var k = KeyGenerator.getInstance("AES", p).generateKey();
>> 
>>   var cipher = Cipher.getInstance("AES/KW/PKCS5Padding", p);
>>   cipher.init(Cipher.WRAP_MODE, k);
>>   var wrapped = cipher.wrap(sp);
>>   cipher.init(Cipher.UNWRAP_MODE, k);
>>   cipher.unwrap(wrapped, "EC", Cipher.PRIVATE_KEY);
>> 
>> Here, p is SunPKCS11-NSS using sensitive config, and the last unwrap method 
>> reports an CKR_TEMPLATE_INCOMPLETE error. It runs fine with RSA.
>> 
>> Thanks,
>> Weijun
>> 
>> 
> 

Reply via email to