source: project/release/4/message-digest/trunk/message-digest-srfi-4.scm @ 35044

Last change on this file since 35044 was 35044, checked in by kon, 11 months ago

why did i care ?

File size: 2.7 KB
Line 
1;;;; message-digest-srfi-4.scm
2;;;; Kon Lovett, Jan '06 (message-digest.scm)
3;;;; Kon Lovett, May '10 (message-digest.scm)
4;;;; Kon Lovett, Apr '12
5;;;; Kon Lovett, Aug '17
6
7;; Issues
8;;
9;; - Passes u8vector to update phase as a blob.
10
11(module message-digest-srfi-4
12
13(;export
14  message-digest-update-u8vector
15  message-digest-update-packed-vector
16  message-digest-u8vector message-digest-u8vector!
17  ;DEPRECATED
18  message-digest-update-bytevector
19  message-digest-update-subu8vector
20  )
21
22(import scheme chicken)
23
24(use
25  data-structures
26  srfi-4
27  (only lolevel number-of-bytes)
28  (only srfi-4-checks check-u8vector)
29  (only type-errors error-argument-type)
30  message-digest-primitive
31  message-digest-type
32  message-digest-support
33  message-digest-bv)
34
35;;; Support
36
37;;
38
39(define (get-bytevector-object loc obj)
40        (cond
41                ((string? obj)
42                  (string->blob obj) )
43                ((blob? obj)
44                  obj )
45                ((packed-vector->blob/shared obj)
46                  )
47                (else
48        (error-argument-type loc obj "string, blob, or SRFI 4 vector" obj) ) ) )
49
50;;; Update API
51
52;;
53
54(define (message-digest-update-u8vector md u8vec
55            #!optional
56            (start 0) (end (u8vector-length u8vec)))
57  (message-digest-update-blob md
58    (u8vector->blob/shared (u8vector/slice u8vec start end))) )
59
60;;; Single Source API
61
62(define (message-digest-u8vector mdp u8vec
63            #!optional
64            (result-type (message-digest-result-form))
65            (start 0) (end (u8vector-length u8vec)))
66  (let ((md (initialize-message-digest mdp)))
67    (message-digest-update-u8vector md u8vec start end)
68    (finalize-message-digest md result-type) ) )
69
70(define (message-digest-u8vector! mdp u8vec buffer
71            #!optional
72            (start 0) (end (u8vector-length u8vec)))
73  (let ((md (initialize-message-digest mdp)))
74    (message-digest-update-u8vector md u8vec start end)
75    (finalize-message-digest! md buffer) ) )
76
77;;;
78
79;;
80
81;DEPRECATED
82(define (message-digest-update-subu8vector md u8vec start end)
83  (message-digest-update-blob md (u8vector->blob/shared (subu8vector u8vec start end))) )
84
85;;
86
87;DEPRECATED
88(define (message-digest-update-packed-vector md pkdvec)
89  (let ((blb (packed-vector->blob/shared pkdvec)))
90    (if blb
91      (message-digest-update-blob md blb)
92      (error-argument-type 'message-digest-update-packed-vector pkdvec "SRFI 4 vector") ) ) )
93
94;;
95
96;DEPRECATED
97(define (message-digest-update-bytevector md bv #!optional (len (number-of-bytes bv)))
98  (check-message-digest 'message-digest-update-bytevector md)
99  (let ((mdp (message-digest-algorithm md))
100        (ctx (message-digest-context md)) )
101    ((message-digest-primitive-update mdp)
102        ctx
103        (get-bytevector-object 'message-digest-update-bytevector bv)
104        len) ) )
105
106) ;module message-digest-srfi-4
Note: See TracBrowser for help on using the repository browser.