- From: Ryan Sleevi <sleevi@google.com>
- Date: Thu, 7 Mar 2013 06:21:14 -0800
- To: Harry Halpin <hhalpin@w3.org>
- Cc: Mark Watson <watsonm@netflix.com>, public-webcrypto@w3.org
- Message-ID: <CACvaWvY0a5yRNHNfVRBec2cLS=qxt1LgFfhsgBGztWGSQJo0fw@mail.gmail.com>
On Mar 7, 2013 5:48 AM, "Harry Halpin" <hhalpin@w3.org> wrote: > > On 03/06/2013 09:02 PM, Mark Watson wrote: >> >> On Mar 6, 2013, at 11:41 AM, Ryan Sleevi wrote: >> >>> On Wed, Mar 6, 2013 at 11:33 AM, Mark Watson <watsonm@netflix.com> wrote: >>>> >>>> Our operations are asynchronous. We pass in ArrayBufferView objects. What is the expected behavior if the application changes the ArrayBufferView before the WebCrypto operation completes ? >>>> >>>> If the expectation is that the operation completes normally on the input data as it was when the call was made, then the UA either needs to make a copy of the data when the call is first made or do some fancy lazy copy-on-write thing to ensure the web crypto operation retains access to the original data. >>> >>> Correct. That is what I was trying to express through the description >>> of pending data, but I recognize this needs work, and have been >>> working on rewriting this. >>> >>>> Alternatively, we may say that the behavior is undefined if you modify the ArrayBuffer that you pass in. >>> >>> If there is anything I have learned from C/C++, it's that undefined >>> behaviour is the root of all error. >>> >>>> Are there other async web APIs that accept ArrayBufferView objects that have established a precedent for this ? >>>> >>>> …Mark >>> >>> We can force it to be ArrayBuffer, to make it explicit there's a copy, >>> but the intent of using ABV was to give greater implementation >>> flexibility in optimization, while also allowing easier use for >>> developers. >> >> Ok. Are you aware of anywhere else in the web platform where this problem exists and what solution they've chosen ? > > > Very good question. One option brought up to be to to cast it to an immutable Blob. No, not Blob, Harry. ArrayBuffer. Same notion of copy semantics, but without the requirement of Blobs. I still think the API is fine as is - the only requirement is that its immutable for the duration of the invocation (which is guaranteed through JS being single threaded anyways). Any further copying or optimizations are an implementation option with maximum flexibility. > > The official advice is to bring it up on public-script-coord@w3.org as this may effect how other WGs deal with the question - if they haven't already dealt with it. > > cheers, > harry > >> >> …Mark >> >> >
Received on Thursday, 7 March 2013 14:21:45 UTC