> On Jun 4, 2019, at 1:34 AM, Michael StJohns <mstjo...@comcast.net> wrote:
> 
> On 6/3/2019 11:05 AM, Weijun Wang wrote:
>> The storepass and the keypass are usually the same but they are independent. 
>> If the Mac is there and a non-null storepass is provided at loading, then 
>> integrity checking is performed. We do allow storepass being null in 
>> KeyStore::load and the method spec says:
>> 
>> * @param password the password used to check the integrity of
>> * the keystore, the password used to unlock the keystore,
>> * or {@code null}
>> 
>> And now we support password-less pkcs12, i.e. key is protected, by cert is 
>> not, and there is no Mac.
> 
> Right - and compare and contrast to PKCS11, you don't generally have a 
> password on the private key entry, but you do on the key store.  Hmm...
> 
> Rather than change the API for KeyStore, or maybe in addition to changing the 
> API,  you do:
> 
> If you pass in a null password  (0 length password, known password 
> 'attributesonly'?) in a PasswordProtection class in getEntry() for a PKCS12 
> key store,  you (optionally) get a KeyStore.Entry of an internal concrete 
> type that contains only the attributes.

This looks a little too hackish to me. We'll need to describe how 
PrivateKeyEntry::getPrivateKey behaves and apps would need to check for the 
result, etc. 

> 
> This allows you not to have to retrofit other KeyStore implementations to 
> support a getAttributes() method.
> 
> And I *think* that works well with PKCS11.

It always works. The Entry::getAttributes will still be there.

Thanks,
Max

> 
> Mike
> 
> 
> 
>> 
>> --Max
>> 
>>> On Jun 3, 2019, at 10:53 PM, Michael StJohns <mstjo...@comcast.net> wrote:
>>> 
>>> On 6/3/2019 10:18 AM, Sean Mullan wrote:
>>>> On 6/2/19 10:28 PM, Weijun Wang wrote:
>>>>> I am playing with KeyStore.Entry.Attribute and found out it's only 
>>>>> retrievable with Entry::getAttributes. This means for a PrivateKeyEntry 
>>>>> that is protected with a password, you will have to provide that password 
>>>>> to get the entry first to get the attributes.
>>>>> 
>>>>> Is this by design? So there is no way to add public attributes to these 
>>>>> entries? If I read PKCS12 correctly, the attributes is out of the bag 
>>>>> value. Therefore even if I cannot decrypt a pkcs8ShroudedKeyBag, the 
>>>>> attributes are still visible.
>>>>> 
>>>>> Or am I missing something?
>>>> Probably not. Maybe we need something like a KeyStore.getAttributes(String 
>>>> alias) method?
>>>> 
>>>> --Sean
>>> From what I remember, the whole thing of the PKCS12 is protected by a MAC 
>>> which is calculated from the PKCS12 password which is generally the same as 
>>> the PKCS8 password for the entry.   This is somewhat the same model that 
>>> was in place for the JKS version of the key store.    Is it possible that 
>>> the password is necessary to validate the attribute integrity and that's 
>>> why it's there?
>>> 
>>> Mike
>>> 
>>> 
> 

Reply via email to