Le 07/11/2013 10:21, Takeshi Yoshino a écrit :
On Thu, Nov 7, 2013 at 6:05 PM, Aymeric Vitte <[email protected]
<mailto:[email protected]>> wrote:
stop/resume:
Indeed as I mentioned this is related to WebCrypto Issue22 but I
don't think this is a unique case. Issue22 was closed because of
lack of proposals to solve it, apparently I was the only one to
care about it (but I saw recently some other messages that seem to
be related), and finally this would involve a public clone method
with associated security concerns.
But with Streams it could be different, the application will
internally clone the state of the operation probably eliminating
the security issues, as simple as that.
To describe simply the use case, let's take a progressive hash
computing 4 bytes by 4 bytes:
incoming stream: ABCDE bytes
hash operation: process ABCD, keep E for the next computation
incoming stream: FGHI bytes + STOP-EOF
hash operation: process EFGH, process STOP-EOF: clone the state of
the hash, close the operation: digest hash with I
So, here, partial hash for ABCDEFGH is output
No, you get the digest for ABCDEFGHI and you get a cloned operation
which will restart from ABCDEFGH
resume:
incoming stream: JKLF
hash operation (clone): process IJKL, keep F for next computation
etc...
and if we close the stream here we'll get a hash for ABCDEFGHIJKLFPPP
(P is padding). Right?
If you close the stream here you get the digest for ABCDEFGHIJKLF
So you do not restart the operation as if it was the first time it
was receiving data, you just continue it from the state it was
when stop was received.
That's not so unusual to do this, it has been requested many times
in node.
--
Peersm : http://www.peersm.com
node-Tor : https://www.github.com/Ayms/node-Tor
GitHub : https://www.github.com/Ayms