I'm debating the two possible solutions to this, since the original use case 
was encryption of form submitted data, it would be valid to return null object 
for a resource that can't be modified. However, I could see the potential for 
having a resource provider that contains encrypted information. Which would 
mean effectively returning a read only version, and throwing an 
UnsupportedOperationException on the methods that modify the underlying 
resource. 

I'm leaning towards the read only version. But open to feedback.

-----Original Message-----
From: Konrad Windszus [mailto:konra...@gmx.de] 
Sent: Friday, November 10, 2017 4:28 PM
To: dev@sling.apache.org
Subject: Re: value level encryption

EXTERNAL

Also EncryptionMapAdapterFactory.getAdapter() should be able to deal with 
resource providers not providing write access (i.e. 
adaptTo(ModifiableValueMap.class) returns null).

> Am 10.11.2017 um 22:21 schrieb Konrad Windszus <konra...@gmx.de>:
>
> Hi Jason, in general this looks good. But please add nullability annotations 
> to CipherProvider. Also using @CheckForNull on methods returning void is 
> useless.
> Konrad
>
>> Am 10.11.2017 um 21:53 schrieb Jason Bailey <jason.bai...@sas.com>:
>>
>> Wanted to give a heads up in the direction I'm going with this.
>>
>> https://github.com/JEBailey/sling-encrypt
>>
>> CipherProvider is a service interface to provide pre-initialized Cipher 
>> Objects for encoding and decoding content.
>> EncryptionValueMap encompasses the functionality to encrypt and decrypt 
>> specific fields, currently focusing on String and String[] value types. Put 
>> and Get methods not implemented yet.
>> EncryptionValueMapDecorator to wrap a map.
>>
>> For the EncryptionValueMap, I'm recording the properties that are encrypted 
>> in a separate property field, so that accessing those fields can be done 
>> seamlessly from any place that you are instantiate the EncryptionValueMap.
>>
>> Feedback appreciated.
>>
>> -----Original Message-----
>> From: Justin Edelson [mailto:jus...@justinedelson.com]
>> Sent: Friday, November 03, 2017 3:37 PM
>> To: dev@sling.apache.org
>> Subject: Re: value level encryption
>>
>> EXTERNAL
>>
>> In AEM, posting encrypted properties to /etc/cloudservices is historically 
>> the primary use case for @Encrypted, but the PostProcessor applies to all 
>> post requests.
>>
>> I think this would be a useful addition to Sling. We may want to have some 
>> kind of SPI to support different encryption schemes, but that's an 
>> implementation detail.
>>
>> Regards,
>> Justin
>>
>>
>>> On Fri, Nov 3, 2017 at 2:48 PM Jason Bailey <jason.bai...@sas.com> wrote:
>>>
>>> They only docs I can find on that, assuming we're talking AEM, 
>>> mentions it only works for posting things into /etc/cloudservices. So 
>>> that's out.
>>> It's been a while, but I'm under the impression that all 
>>> implementations of the java platform now come with a certain level 
>>> of crypto
>>>
>>> https://docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html
>>>
>>> I'd probably add a configuration so you could define the level of 
>>> cryptography, and then that would allow people who needed a higher 
>>> level to install their own providers. Is this something that Sling 
>>> would be interested in? Since I'm going to be writing this, if 
>>> you're interested, I'd rather write it with the intent of directly donating 
>>> it.
>>>
>>>
>>>
>>> -----Original Message-----
>>> From: Justin Edelson [mailto:jus...@justinedelson.com]
>>> Sent: Friday, November 03, 2017 1:35 PM
>>> To: dev@sling.apache.org
>>> Subject: Re: value level encryption
>>>
>>> EXTERNAL
>>>
>>> We have this in our commercial product. At a high level, the way it 
>>> works is that there is a PostProcessor which looks for an @Encrypted 
>>> postfixed property and, if that is present, the corresponding 
>>> property is stored in an encrypted fashion. Decryption is all done 
>>> manually, although personally the idea of an EncryptionValueMap seems 
>>> really cool to me.
>>>
>>> I believe the challenge in bringing this into Sling relates to the 
>>> encryption libraries.
>>>
>>>> On Fri, Nov 3, 2017 at 8:45 AM Jason Bailey <jason.bai...@sas.com> wrote:
>>>>
>>>> Here's the use case
>>>>
>>>> My organization has decided that to conform to the GDPR, any 
>>>> sensitive data should be encrypted while at rest. From a Sling 
>>>> perspective that is a challenge since we've empowered the authors 
>>>> to create forms the way they want. So to be on the safe side, we're 
>>>> looking at encrypting all form fields as they are persisted, and 
>>>> then decrypting the values from the resource  when we need to processes 
>>>> them.
>>>>
>>>> Now I'm thinking of an EncryptionValueMap that will simplify this 
>>>> process and encapsulate the functionality. You guys are usually 
>>>> ahead of me when I come up with this stuff and I don't like 
>>>> replicating effort. So is there any functionality currently or 
>>>> planned to handle encryption of resource values?
>>>>
>>>> Thanks
>>>> Jason
>>>>
>>>
>

Reply via email to