Yes, |<span class="Apple-style-span" style="font-family: monospace; font-size: 13px; line-height: 13px; white-space: pre; ">localStorage.setItem(AES.encrypt("username", key), AES.encrypt("Nicholas", key));</span>| is a bit ugly, but many things in the web platform are.  And honestly, it's not _that_ ugly or _that_ many extra characters.  And this is the type of problem JS libraries often solve.<div>

<br></div><div>I'd suggest you talk to various libraries (or write your own) about adding a compatibility layer that includes JS crypto and in parallel talk to browser vendors about adding a crypto API.<br><div><br></div>

<div>Anyhow, I can say with a fairly high level of certainty that we (Chromium) are not interested in implementing this.  But maybe others (Mozilla?) are.  So I'm going to withdraw myself from this discussion since I don't seem to be adding any new information to it and I think everyone knows where I stand.  :-)</div>

<div><br></div><div>J<br><br><div class="gmail_quote">On Wed, Apr 14, 2010 at 5:23 PM, Nicholas Zakas <span dir="ltr"><<a href="mailto:nzakas@yahoo-inc.com">nzakas@yahoo-inc.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">












<div lang="EN-US" link="blue" vlink="blue">

<div>

<p class="MsoNormal"><font size="2" color="navy" face="Arial"><span style="font-size:10.0pt;font-family:Arial;color:navy">I tried to articulate some of my thoughts
as to why a generate purpose crypto isn’t enough to be useful and why
trying to tack onto local storage could get messy:</span></font></p>

<p class="MsoNormal"><font size="2" color="navy" face="Arial"><span style="font-size:10.0pt;font-family:Arial;color:navy"><a href="http://www.nczonline.net/blog/2010/04/13/towards-more-secure-client-side-data-storage/" target="_blank">http://www.nczonline.net/blog/2010/04/13/towards-more-secure-client-side-data-storage/</a></span></font></p>

<div class="im">

<p class="MsoNormal"><font size="2" color="navy" face="Arial"><span style="font-size:10.0pt;font-family:Arial;color:navy"> </span></font></p>

<p class="MsoNormal"><font size="2" color="navy" face="Arial"><span style="font-size:10.0pt;font-family:Arial;color:navy"> </span></font></p>

<div>

<p class="MsoNormal"><font size="2" color="navy" face="Arial"><span style="font-size:10.0pt;font-family:Arial;color:navy">-Nicholas</span></font><font color="navy"><span style="color:navy"></span></font></p>

<p class="MsoNormal"><font size="3" color="navy" face="Times New Roman"><span style="font-size:12.0pt;color:navy"> </span></font></p>

<p class="MsoNormal"><font size="2" color="navy" face="Arial"><span style="font-size:10.0pt;font-family:Arial;color:navy">______________________________________________</span></font><font color="navy"><span style="color:navy"></span></font></p>



<p class="MsoNormal"><font size="2" color="navy" face="Arial"><span style="font-size:10.0pt;font-family:Arial;color:navy">Commander Lock: "Damnit Morpheus, not
everyone believes what you believe!"</span></font><font color="navy"><span style="color:navy"></span></font></p>

<p class="MsoNormal"><font size="2" color="navy" face="Arial"><span style="font-size:10.0pt;font-family:Arial;color:navy">Morpheus: "My beliefs do not require
them to."</span></font></p>

</div>

</div><div>

<div class="MsoNormal" align="center" style="text-align:center"><font size="3" face="Times New Roman"><span style="font-size:12.0pt">

<hr size="2" width="100%" align="center">

</span></font></div>

<p class="MsoNormal"><b><font size="2" face="Tahoma"><span style="font-size:10.0pt;font-family:Tahoma;font-weight:bold">From:</span></font></b><font size="2" face="Tahoma"><span style="font-size:10.0pt;font-family:Tahoma">
<a href="mailto:whatwg-bounces@lists.whatwg.org" target="_blank">whatwg-bounces@lists.whatwg.org</a> [mailto:<a href="mailto:whatwg-bounces@lists.whatwg.org" target="_blank">whatwg-bounces@lists.whatwg.org</a>] <b><span style="font-weight:bold">On Behalf Of </span></b>Jeremy Orlow<br>


<b><span style="font-weight:bold">Sent:</span></b> Thursday, April 08, 2010
3:14 AM<br>
<b><span style="font-weight:bold">To:</span></b> Jonas Sicking<br>
<b><span style="font-weight:bold">Cc:</span></b> <a href="mailto:whatwg@lists.whatwg.org" target="_blank">whatwg@lists.whatwg.org</a>; Dirk
Pranke; Nicholas Zakas; Eric Uhrhane</span></font></p><font size="2" face="Tahoma"><div class="im"><br>
<b><span style="font-weight:bold">Subject:</span></b> Re: [whatwg] Proposal for
secure key-value data stores</div></font><p></p>

</div>

<p class="MsoNormal"><font size="3" face="Times New Roman"><span style="font-size:12.0pt"> </span></font></p>

<div>

<p class="MsoNormal"><font size="3" face="Times New Roman"><span style="font-size:12.0pt">On Thu, Apr 8, 2010 at 2:10 AM, Jonas Sicking <jonas@sicking.cc>
wrote:</span></font></p><div><div></div><div class="h5">

<div>

<p class="MsoNormal"><font size="3" face="Times New Roman"><span style="font-size:12.0pt">On Wed, Apr 7, 2010 at 5:44 PM, Jeremy Orlow <<a href="mailto:jorlow@chromium.org" target="_blank">jorlow@chromium.org</a>> wrote:<br>


>> I don't think this is enough of a<br>
>> problem to kill the feature though.<br>
><br>
> I think this is a good feature to try and integrate into existing APIs if<br>
> it's possible to do so cleanly.  I don't think it's worth creating
yet<br>
> another persistent storage API over, though.</span></font></p>

</div>

<p class="MsoNormal"><font size="3" face="Times New Roman"><span style="font-size:12.0pt">...</span></font></p>

<div>

<p class="MsoNormal" style="margin-bottom:12.0pt"><font size="3" face="Times New Roman"><span style="font-size:12.0pt">> For<br>
> localStorage, we could add a origin-wide setting or add an optional param
to<br>
> setItem.</span></font></p>

</div>

<p class="MsoNormal"><font size="3" face="Times New Roman"><span style="font-size:12.0pt">Well, it seems harsh to require that *all* data on a domain is either<br>
security sensitive, and thus need expiration, or not security<br>
sensitive and thus need none. I think it makes a lot of sense to be<br>
able to let the page have several storage areas, some which expire and<br>
some which don't.<br>
<br>
Think <a href="http://mail.google.com" target="_blank">mail.google.com</a>
where storing my emails would count as sensitive<br>
and should have expiration, but storing my drafts might be worth doing<br>
longer to prevent dataloss.</span></font></p>

<div>

<p class="MsoNormal"><font size="3" face="Times New Roman"><span style="font-size:12.0pt"> </span></font></p>

</div>

<div>

<p class="MsoNormal"><font size="3" face="Times New Roman"><span style="font-size:12.0pt">Local storage is not a good API for more complex applications like
gmail.  That's why I suggested integrating into IndexedDB and
WebSQLDatabase (which is what I meant when I said "databases").
 Note that I also suggested that it could be an optional parameter to
setItem which would make it a per-item setting and still be backwards
compatible with LocalStorage.  (Like I said, creating another
LocalStorage-like API just for this feature is really not an option.)</span></font></p>

</div>

<div>

<p class="MsoNormal"><font size="3" face="Times New Roman"><span style="font-size:12.0pt"> </span></font></p>

</div>

<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">

<p class="MsoNormal"><font size="3" face="Times New Roman"><span style="font-size:12.0pt">I just thought of an alternative approach to this whole situation<br>
though. We could add crypto and expiration functionality to IndexDB. I<br>
know the crypto stuff has come up before and there was some hesitation<br>
though. (Though I guess the same thing could be said for<br>
crypto+localStorage)</span></font></p>

</blockquote>

<div>

<p class="MsoNormal"><font size="3" face="Times New Roman"><span style="font-size:12.0pt"> </span></font></p>

</div>

<div>

<p class="MsoNormal"><font size="3" face="Times New Roman"><span style="font-size:12.0pt">Nikunj has already said no more major features for v1 of IndexedDB.
 I think we might be able to sneak in an expiration parameter, but
encryption 1) is not practical for v1 and  2) we're really jumping the gun
on this encryption thing.  One person proposed it.  We haven't seen
any evidence this is a widely sought after feature.  If _anything_ the
right way to go is to make encryption fast and allow developers and authors of
libraries to layer the two.  If there's compelling demand, THEN we should
talk about adding it to individual APIs.</span></font></p>

</div>

<div>

<p class="MsoNormal"><font size="3" face="Times New Roman"><span style="font-size:12.0pt"> </span></font></p>

</div>

<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">

<div>

<p class="MsoNormal" style="margin-bottom:12.0pt"><font size="3" face="Times New Roman"><span style="font-size:12.0pt">> It seems as though
expiration policies could be added to the creation of<br>
> databases and the new FileWriter/FileSystem APIs pretty easily.</span></font></p>

</div>

<p class="MsoNormal"><font size="3" face="Times New Roman"><span style="font-size:12.0pt">I don't understand the usecase of expiring files. Isn't the whole<br>
point of saving to the file system so that the user gets better access<br>
to it and so that things like iPhoto can index any stored images?</span></font></p>

<div>

<p class="MsoNormal" style="margin-bottom:12.0pt"><font size="3" face="Times New Roman"><span style="font-size:12.0pt"><br>
> But still....we need some use cases.  :-)</span></font></p>

</div>

<p class="MsoNormal"><font size="3" face="Times New Roman"><span style="font-size:12.0pt">I'm all for use cases. Though Nicholas did say that he'd want<br>
encryption and expiration on essentially all privacy sensitive<br>
information stored. Which I think I can understand.</span></font></p>

</blockquote>

<div>

<p class="MsoNormal"><font size="3" face="Times New Roman"><span style="font-size:12.0pt"> </span></font></p>

</div>

<div>

<p class="MsoNormal"><font size="3" face="Times New Roman"><span style="font-size:12.0pt">As stated, a more general purpose crypto API should be enough
to satisfy this use case and others (like someone wanting to encrypt it client
side before sending it to the server).  That is the direction these
discussions should be headed, not taking one
particular persistent storage API and finding a way to tack
encryption onto it.</span></font></p>

</div>

</div></div></div>

</div>

</div>


</blockquote></div><br></div></div>