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

Last change on this file since 33166 was 33166, checked in by Kon Lovett, 4 years ago

fix check-u8vector ref

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