1 |
commit: 057e5f51ae4cd402a9a80105aa1dcd8993055a77 |
2 |
Author: André Erdmann <dywi <AT> mailerd <DOT> de> |
3 |
AuthorDate: Wed Aug 1 07:25:51 2012 +0000 |
4 |
Commit: André Erdmann <dywi <AT> mailerd <DOT> de> |
5 |
CommitDate: Wed Aug 1 07:25:51 2012 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=057e5f51 |
7 |
|
8 |
digest.py |
9 |
|
10 |
--- |
11 |
roverlay/digest.py | 35 +++++++++++++++++++++++++++++++++++ |
12 |
1 files changed, 35 insertions(+), 0 deletions(-) |
13 |
|
14 |
diff --git a/roverlay/digest.py b/roverlay/digest.py |
15 |
new file mode 100644 |
16 |
index 0000000..4ccbca2 |
17 |
--- /dev/null |
18 |
+++ b/roverlay/digest.py |
19 |
@@ -0,0 +1,35 @@ |
20 |
+import hashlib |
21 |
+ |
22 |
+def md5sum_file ( fh, binary_digest=False ): |
23 |
+ """Returns the md5 sum for an already opened file.""" |
24 |
+ md5 = hashlib.md5() |
25 |
+ blocksize = 16384 |
26 |
+ |
27 |
+ block = fh.read ( blocksize ) |
28 |
+ while block: |
29 |
+ md5.update ( block ) |
30 |
+ block = fh.read ( blocksize ) |
31 |
+ |
32 |
+ return md5.digest() if binary_digest else md5.hexdigest() |
33 |
+# --- end of md5sum_file (...) --- |
34 |
+ |
35 |
+ |
36 |
+_DIGEST_MAP = dict ( |
37 |
+ md5 = md5sum_file, |
38 |
+) |
39 |
+ |
40 |
+def digest_supported ( digest_type ): |
41 |
+ """Returns True if the given digest type is supported, else False.""" |
42 |
+ return digest_type in _DIGEST_MAP |
43 |
+# --- digest_supported (...) --- |
44 |
+ |
45 |
+def dodigest_file ( _file, digest_type, binary_digest=False ): |
46 |
+ ret = None |
47 |
+ with open ( _file, mode='rb' ) as fh: |
48 |
+ ret = _DIGEST_MAP [digest_type] ( fh, binary_digest=binary_digest ) |
49 |
+ return ret |
50 |
+# --- end of dodigest_file (...) --- |
51 |
+ |
52 |
+def digest_compare ( _file, digest, digest_type, binary_digest=False ): |
53 |
+ return digest == dodigest_file ( _file, digest_type, binary_digest ) |
54 |
+# --- end of digest_compare (...) --- |