aboutsummaryrefslogtreecommitdiff
path: root/docs/wipy
diff options
context:
space:
mode:
authorPaul Sokolovsky2017-04-09 00:57:16 +0300
committerPaul Sokolovsky2017-04-09 00:57:54 +0300
commitb87432b8fb8332548be11b63c9139065ce565f91 (patch)
tree6186a61ac0fa88acdbfa5807f590556de6671e38 /docs/wipy
parent2e58474580fe459c03e52c7662d28786f3885fdf (diff)
docs/uhashlib: Deconditionalize.
Notes on WiPy incompatibilities with the standard module API are moved under "Known issues" to its documentation.
Diffstat (limited to 'docs/wipy')
-rw-r--r--docs/wipy/general.rst20
1 files changed, 20 insertions, 0 deletions
diff --git a/docs/wipy/general.rst b/docs/wipy/general.rst
index 9b3f54df2..eca9bbe45 100644
--- a/docs/wipy/general.rst
+++ b/docs/wipy/general.rst
@@ -253,3 +253,23 @@ SSL sockets need to be created the following way before wrapping them with.
import ssl
s = socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_SEC)
ss = ssl.wrap_socket(s)
+
+Incompatibilities in uhashlib module
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Due to hardware implementation details of the WiPy, data must be buffered before being
+digested, which would make it impossible to calculate the hash of big blocks of data that
+do not fit in RAM. In this case, since most likely the total size of the data is known
+in advance, the size can be passed to the constructor and hence the HASH hardware engine
+of the WiPy can be properly initialized without needing buffering. If ``block_size`` is
+to be given, an initial chunk of ``data`` must be passed as well. **When using this extension,
+care must be taken to make sure that the length of all intermediate chunks (including the
+initial one) is a multiple of 4 bytes.** The last chunk may be of any length.
+
+Example::
+
+ hash = uhashlib.sha1('abcd1234', 1001) # length of the initial piece is multiple of 4 bytes
+ hash.update('1234') # also multiple of 4 bytes
+ ...
+ hash.update('12345') # last chunk may be of any length
+ hash.digest()