The updated webrev looks fine.

Would prefer to have importPublicKey and importECPublicKey methods merged as other methods do. But not a deal breaker as it does not affect functionality.

Also, would be nice to use a http URL for the EC public key blob format.

Thanks,
Valerie


On 12/12/2018 4:55 PM, Weijun Wang wrote:
Hi Valerie,

The updated webrev is at

    https://cr.openjdk.java.net/~weijun/8213010/webrev.01/

I haven't merged importPublicKey and importECPublicKey because the content is 
so different and we expect someday to remove the CAPI method at all.

The interdiff.patch has some problem since I haven't really changed 
SunMSCAPI.java. Maybe a bug of the interdiff tool.

Thanks
Max

On Dec 12, 2018, at 9:18 AM, Weijun Wang <weijun.w...@oracle.com> wrote:

Hi Valerie,

On Dec 12, 2018, at 6:21 AM, Valerie Peng <valerie.p...@oracle.com> wrote:

Hi Max,

<CSignature.java>

- Comments (line 60-63) missed SHA224withECDSA?
Oops.

- Line 430: should be "ECPublicKey"
Oops again.

- Line 919, 922: is it really necessary to have two methods with algorithm name 
argument? It seems they are functionally the same but one calls CAPI vs CNG. 
Can they be merged?
Yes.

<CKey.java>

- generateECBlob() method (line 110-148), is the extra 1 due to the sign bit added by the 
BigInteger.toByteArray()? I recall BigInteger adds an extra 00 byte sometimes to indicate 
the positive value, but why is there an extra 1? Are the bytes for x, y, bs longer than 
the allocated "keyLen" length?
You're right. I was thinking about the sign bit but got it wrong.

<security.cpp>

- line 627, shouldn't 'C' be at buffer[1]? If not, what is at buffer[1]? len 
value is not checked, not sure how useful it is.
It's a Unicode algorithm name, so buffer[1] is zero. I didn't check len because 
32 is always enough for an algorithm name and there are at least 3 bytes there.

Thanks,
Max

Thanks,

Valerie

On 12/3/2018 7:14 AM, Weijun Wang wrote:
Please take a review at

https://cr.openjdk.java.net/~weijun/8213010/webrev.00/

A Windows keystore is now able to load EC keys and uses them in signing and verifying 
with SHA<n>withECDSA.

Not supported:

1. No EC KeyPairGenerator yet.

2. Cannot store a EC key (from SunEC) into a Windows keystore. I still haven't 
figured out how to call NCryptImportKey, NCryptCreatePersistedKey and 
CertAddCertificateContextToStore together correctly to associate a EC private 
key to a cert and store them.

3. SHA<n>withECDSAinP1363Format not supported, but it's easy to add them.

4. NONEwithECDSA not supported.

Currently I can only use certmgr.exe to import a pkcs12 file and then run a 
manual test with it. Therefore no automatic test is included. Like RSA support 
in SunMSCAPI, Signature::initSign only support native keys. 
Signature::initVerify supports both native and SunEC keys. That said, since we 
do not have EC KeyPairGenerator yet you won't meet a real native EC public key.

Thanks
Max

Reply via email to