Changeset 35339 in project for release/4/message-digest
- Timestamp:
- 03/25/18 07:42:09 (3 years ago)
- Location:
- release/4/message-digest/trunk
- Files:
-
- 1 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
release/4/message-digest/trunk/message-digest-bv.scm
r35044 r35339 21 21 22 22 (import scheme chicken) 23 24 23 (use 25 24 (only srfi-13 substring/shared) … … 28 27 message-digest-primitive 29 28 message-digest-type 30 message-digest-support) 29 message-digest-support 30 typed-define) 31 31 32 (declare 33 (bound-to-procedure ##sys#substring)) 32 ;;; Support 33 34 ;; 35 36 (include "message-digest-types") 34 37 35 38 ;;; Message Digest API … … 65 68 (result-type (message-digest-result-form)) 66 69 (start 0) (end (blob-size blb))) 67 (let ((md (initialize-message-digest mdp))) 70 (let ( 71 (md (initialize-message-digest mdp)) ) 68 72 (message-digest-update-blob md blb start end) 69 73 (finalize-message-digest md result-type) ) ) … … 73 77 (result-type (message-digest-result-form)) 74 78 (start 0) (end (string-length str))) 75 (let ((md (initialize-message-digest mdp))) 79 (let ( 80 (md (initialize-message-digest mdp)) ) 76 81 (message-digest-update-string md str start end) 77 82 (finalize-message-digest md result-type) ) ) … … 80 85 #!optional 81 86 (start 0) (end (blob-size blb))) 82 (let ((md (initialize-message-digest mdp))) 87 (let ( 88 (md (initialize-message-digest mdp)) ) 83 89 (message-digest-update-blob md blb start end) 84 90 (finalize-message-digest! md result-buffer) ) ) … … 87 93 #!optional 88 94 (start 0) (end (string-length str))) 89 (let ((md (initialize-message-digest mdp))) 95 (let ( 96 (md (initialize-message-digest mdp)) ) 90 97 (message-digest-update-string md str start end) 91 98 (finalize-message-digest! md result-buffer) ) ) … … 94 101 95 102 (define (check-blob/slice loc blb start end) 96 (check-blob loc blb)97 103 (check-fixnum-range loc start end) 98 (blob/slice blbstart end) )104 (blob/slice (check-blob loc blb) start end) ) 99 105 100 106 (define (check-string/slice loc str start end) 101 (check-string loc str)102 107 (check-fixnum-range loc start end) 103 (string/slice strstart end) )108 (string/slice (check-string loc str) start end) ) 104 109 105 110 (define (check-fixnum-range loc start end) -
release/4/message-digest/trunk/message-digest-chunk.scm
r35044 r35339 24 24 25 25 (import scheme chicken) 26 27 26 (use 28 27 (only posix file-size) … … 30 29 u8vector->blob/shared subu8vector 31 30 read-u8vector! make-u8vector) 32 miscmacros) 31 miscmacros 32 fx-utils 33 typed-define) 34 35 ;;; Support 36 37 ;; 38 39 (include "message-digest-types") 33 40 34 41 ;;; Update Phase Helpers 35 42 36 ;;37 38 (define (positive-fixnum? obj)39 (and (fixnum? obj) (positive? obj)) )40 41 ;;42 43 43 (define (default-chunk-port-read-maker in #!optional (size (message-digest-chunk-size))) 44 (let ((u8buf (make-u8vector size))) 44 (let ( 45 (u8buf (make-u8vector size)) ) 45 46 (lambda () 46 (let ((len (read-u8vector! size u8buf in))) 47 (let ( 48 (len (read-u8vector! size u8buf in)) ) 47 49 (and 48 50 (positive? len) 49 (let ((u8buf (if (fx= len size) u8buf (subu8vector u8buf 0 len)))) 51 (let ( 52 (u8buf 53 (if (fx= len size) 54 u8buf 55 (subu8vector u8buf 0 len))) ) 50 56 (u8vector->blob/shared u8buf) ) ) ) ) ) ) 51 57 … … 61 67 (lambda () 62 68 #f ) 63 (let-values (((buffer cleanup) 64 (mapped-buffer 'default-chunk-fileno-read-maker fd size))) 65 (let ((chunk (make-message-digest-raw-chunk buffer size 0))) 69 (let-values ( 70 ((buffer cleanup) 71 (mapped-buffer 'default-chunk-fileno-read-maker fd size)) ) 72 (let ( 73 (chunk (make-message-digest-raw-chunk buffer size 0)) ) 66 74 (lambda () 67 75 (if buffer … … 74 82 75 83 (cond-expand 84 76 85 ((and windows (not cygwin)) 86 77 87 (import (only lolevel allocate free)) 78 88 (require-library lolevel) 89 79 90 (begin 91 80 92 (define read-into-buffer 81 93 (foreign-lambda* bool ((int fd) (c-pointer buffer) (integer size)) 82 94 "C_return(read(fd, buffer, size) == size);") ) 95 83 96 (define (mapped-buffer loc fd size) 84 (let* ((buffer (allocate size)) 85 (finalize (cut free buffer)) ) 97 (let* ( 98 (buffer (allocate size)) 99 (finalize (cut free buffer)) ) 86 100 (unless (read-into-buffer fd buffer size) 87 101 (finalize) 88 102 (error loc "cannot read file") ) 89 103 (values buffer finalize) ) ) ) ) 104 90 105 (else 106 91 107 (import 92 108 (only posix … … 96 112 prot/read)) 97 113 (require-library posix) 114 98 115 (define (mapped-buffer loc fd size) 99 (let* ((mmap (map-file-to-memory #f size prot/read map/shared fd)) 100 (ptr (memory-mapped-file-pointer mmap)) 101 (finalize (cut unmap-file-from-memory mmap)) ) 116 (let* ( 117 (mmap (map-file-to-memory #f size prot/read map/shared fd)) 118 (ptr (memory-mapped-file-pointer mmap)) 119 (finalize (cut unmap-file-from-memory mmap)) ) 102 120 (values ptr finalize) ) ) ) ) 103 121 … … 113 131 (lambda (x) 114 132 (cond 115 (( positive-fixnum? x) x)116 ((not x) DEFAULT-CHUNK-SIZE)133 ((fxpositive? x) x) 134 ((not x) DEFAULT-CHUNK-SIZE) 117 135 (else 118 136 (warning 'message-digest-chunk-size "invalid positive-fixnum" x) … … 124 142 (lambda (x) 125 143 (cond 126 ((procedure? x) x 127 ((not x) default-chunk-port-read-maker 144 ((procedure? x) x) 145 ((not x) default-chunk-port-read-maker) 128 146 (else 129 147 (warning 'message-digest-chunk-port-read-maker "invalid procedure" x) … … 137 155 (lambda (x) 138 156 (cond 139 ((procedure? x) x 140 ((not x) default-chunk-fileno-read-maker 157 ((procedure? x) x) 158 ((not x) default-chunk-fileno-read-maker) 141 159 (else 142 160 (warning 'message-digest-chunk-fileno-read-maker "invalid procedure" x) -
release/4/message-digest/trunk/message-digest-int.scm
r35338 r35339 26 26 27 27 (import scheme chicken) 28 29 28 (use 30 29 (only type-checks … … 41 40 ;; 42 41 43 ( define-type message-digest (struct message-digest))42 (include "message-digest-types") 44 43 45 44 ;; -
release/4/message-digest/trunk/message-digest-item.scm
r35338 r35339 27 27 ;;; 28 28 29 (define-type pathname string) 29 ;; 30 30 31 (define-type message-digest-primitive (struct message-digest-primitive)) 32 33 (define-type message-digest-buffer (or string blob u8vector)) 34 35 (define-type message-digest-result-form (or string blob u8vector)) 31 (include "message-digest-types") 36 32 37 33 ;;; Single Source API -
release/4/message-digest/trunk/message-digest-old.scm
r35044 r35339 19 19 20 20 (import scheme chicken) 21 22 21 (use 23 22 (only string-hexadecimal string->hex) … … 31 30 ;;; Old API 32 31 33 ;; 32 ;;DEPRECATED 34 33 35 ;DEPRECATED 34 (: message-digest-primitive-apply deprecated) 36 35 (define (message-digest-primitive-apply mdp src . args) 37 36 (message-digest-object mdp src 'string) ) 38 37 39 ;; 40 41 ;DEPRECATED 38 (: make-binary-message-digest deprecated) 42 39 (define (make-binary-message-digest src ctx-info digest-len init update final 43 40 #!optional (name 'make-binary-message-digest)) 44 41 (message-digest-object 45 42 (make-message-digest-primitive ctx-info digest-len init update final name) … … 47 44 'string) ) 48 45 49 ;; 50 51 ;DEPRECATED 46 (: make-message-digest deprecated) 52 47 (define (make-message-digest src ctx-info digest-len init update final 53 48 #!optional (name 'make-message-digest)) 54 49 (message-digest-object 55 50 (make-message-digest-primitive ctx-info digest-len init update final name) -
release/4/message-digest/trunk/message-digest-port.scm
r35044 r35339 18 18 19 19 (import scheme chicken) 20 21 20 (use 22 21 (only data-structures ->string) … … 27 26 message-digest-primitive 28 27 message-digest-type 29 message-digest-bv) 28 message-digest-bv 29 fx-utils 30 typed-define) 30 31 31 ;;; Message Digest Output Port API 32 (declare 33 (bound-to-procedure ##sys#slot ##sys#setslot)) 32 34 33 ; 34 (define (%port-type p) (##sys#slot p 7)) 35 (define (%port-type-set! p t) (##sys#setslot p 7 t)) 35 ;;; Support 36 36 37 ; 38 (define (%port-name p) (##sys#slot p 3)) 39 (define (%port-name-set! p s) (##sys#setslot p 3 s)) 37 ;; 40 38 41 ; 39 (include "message-digest-types") 40 41 ;; 42 43 (define (%port-type p) 44 (##sys#slot p 7) ) 45 46 (define (%port-type-set! p t) 47 (##sys#setslot p 7 t) ) 48 49 (define (%port-name p) 50 (##sys#slot p 3) ) 51 52 (define (%port-name-set! p s) 53 (##sys#setslot p 3 s) ) 54 42 55 (define (check-open-port loc obj #!optional argnam) 43 56 (if (port-closed? obj) … … 45 58 obj ) ) 46 59 47 ;48 60 (define (check-open-digest-output-port loc obj #!optional argnam) 49 (let ((pt (%port-type (check-open-port loc (check-output-port loc obj argnam) argnam)))) 61 (let ( 62 (pt (%port-type (check-open-port loc (check-output-port loc obj argnam) argnam))) ) 50 63 (unless (eq? 'digest pt) 51 64 (signal-type-error loc (make-error-type-message 'digest-output-port) obj argnam) ) ) … … 54 67 ; Synthesize a port-name from a primitive-name 55 68 (define (make-digest-port-name mdp) 56 (let* ((nam (->string (or (message-digest-primitive-name mdp) 'digest)) ) 57 (remlen (string-suffix-length-ci nam "-primitive") ) ) 69 (let* ( 70 (nam (->string (or (message-digest-primitive-name mdp) 'md))) 71 ;strip trailing (why ?) 72 (remlen (string-suffix-length-ci nam "-primitive")) 73 (remlen (if (fxpositive? remlen) remlen (string-suffix-length-ci nam "p"))) ) 58 74 (string-append 59 75 "(" 60 (if ( positive? remlen)76 (if (fxpositive? remlen) 61 77 (substring nam 0 (fx- (string-length nam) remlen)) 62 78 nam ) 63 79 ")") ) ) 64 80 81 ;;; Message Digest Output Port API 82 65 83 ;; Returns a digest-output-port for the MDP 66 84 67 85 (define (open-output-digest mdp) 68 (let* ((md (initialize-message-digest mdp) ) 69 (writer 70 (lambda (obj) 71 ;it will only ever be a string for now 72 (if (string? obj) 73 (message-digest-update-string md obj) 74 (message-digest-update-blob md obj))) ) 75 (port (make-output-port writer void) ) ) ;use default close behavior 86 (let* ( 87 (md 88 (initialize-message-digest mdp)) 89 (writer 90 (lambda (obj) 91 ;it will only ever be a string for now 92 (if (string? obj) 93 (message-digest-update-string md obj) 94 (message-digest-update-blob md obj)))) 95 ;use default close behavior 96 (port 97 (make-output-port writer void)) ) 76 98 (##sys#set-port-data! port md) 77 99 (%port-type-set! port 'digest) … … 92 114 93 115 (define (*close-output-digest loc digest-port result-type) 94 (let ((res 95 (finalize-message-digest 96 (##sys#port-data (check-open-digest-output-port loc digest-port 'digest-port)) 97 result-type))) 116 (let ( 117 (res 118 (finalize-message-digest 119 (##sys#port-data (check-open-digest-output-port loc digest-port 'digest-port)) 120 result-type)) ) 98 121 (close-output-port digest-port) 99 122 res ) ) … … 108 131 109 132 (define (call-with-output-digest mdp proc #!optional (result-type (message-digest-result-form))) 110 (let ((port (open-output-digest mdp))) 133 (let ( 134 (port (open-output-digest mdp)) ) 111 135 (proc port) 112 136 (*close-output-digest 'call-with-output-digest port result-type) ) ) -
release/4/message-digest/trunk/message-digest-srfi-4.scm
r35044 r35339 21 21 22 22 (import scheme chicken) 23 24 23 (use 25 24 data-structures … … 31 30 message-digest-type 32 31 message-digest-support 33 message-digest-bv) 32 message-digest-bv 33 typed-define) 34 34 35 35 ;;; Support … … 37 37 ;; 38 38 39 (define (get-bytevector-object loc obj) 39 (include "message-digest-types") 40 41 ;; 42 43 (define: (get-bytevector-object (loc symbol) (obj *)) -> blob 40 44 (cond 41 45 ((string? obj) … … 43 47 ((blob? obj) 44 48 obj ) 45 ((packed-vector->blob/shared obj) 46 ) 49 ((packed-vector->blob/shared obj) ) 47 50 (else 48 51 (error-argument-type loc obj "string, blob, or SRFI 4 vector" obj) ) ) ) … … 52 55 ;; 53 56 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))) ) 57 (define: (message-digest-update-u8vector (md message-digest) (u8vec u8vector) . (opts list)) -> void 58 (let-optionals* opts ( 59 (start 0) 60 (end (u8vector-length u8vec)) ) 61 (message-digest-update-blob md 62 (u8vector->blob/shared (u8vector/slice u8vec start end))) ) ) 59 63 60 64 ;;; Single Source API 61 65 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) ) ) 66 (define: (message-digest-u8vector (mdp message-digest-primitive) (u8vec u8vector) . (opts list)) -> message-digest-result-form 67 (let-optionals* opts ( 68 (result-type (message-digest-result-form)) 69 (start 0) 70 (end (u8vector-length u8vec)) ) 71 (let ((md (initialize-message-digest mdp))) 72 (message-digest-update-u8vector md u8vec start end) 73 (finalize-message-digest md result-type) ) ) ) 69 74 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) ) ) 75 (define: (message-digest-u8vector! (mdp message-digest-primitive) (u8vec u8vector) (buffer message-digest-buffer) . (opts list)) -> message-digest-result-form 76 (let-optionals* opts ( 77 (start 0) 78 (end (u8vector-length u8vec)) ) 79 (let ((md (initialize-message-digest mdp))) 80 (message-digest-update-u8vector md u8vec start end) 81 (finalize-message-digest! md buffer) ) ) ) 76 82 77 ;; ;83 ;;DEPRECATED 78 84 79 ;; 80 81 ;DEPRECATED 85 (: message-digest-update-subu8vector deprecated) 82 86 (define (message-digest-update-subu8vector md u8vec start end) 83 87 (message-digest-update-blob md (u8vector->blob/shared (subu8vector u8vec start end))) ) 84 88 85 ;; 86 87 ;DEPRECATED 89 (: message-digest-update-packed-vector deprecated) 88 90 (define (message-digest-update-packed-vector md pkdvec) 89 91 (let ((blb (packed-vector->blob/shared pkdvec))) … … 92 94 (error-argument-type 'message-digest-update-packed-vector pkdvec "SRFI 4 vector") ) ) ) 93 95 94 ;; 95 96 ;DEPRECATED 96 (: message-digest-update-bytevector deprecated) 97 97 (define (message-digest-update-bytevector md bv #!optional (len (number-of-bytes bv))) 98 98 (check-message-digest 'message-digest-update-bytevector md) -
release/4/message-digest/trunk/message-digest-support.scm
r35338 r35339 24 24 25 25 (import scheme chicken) 26 27 26 (use 28 27 (only lolevel number-of-bytes) … … 58 57 ;; 59 58 60 (define-type srfi4vector (or u8vector s8vector u16vector s16vector u32vector s32vector f32vector f64vector)) 61 62 (define-type message-digest (struct message-digest)) 59 (include "message-digest-types") 63 60 64 61 ;; -
release/4/message-digest/trunk/message-digest-type.scm
r35338 r35339 42 42 ;;; Support 43 43 44 ;; 45 46 (include "message-digest-types") 47 48 ;; 49 44 50 (define-constant MINIMUM-BUFFER-SIZE 8) 45 51 … … 47 53 (define-constant DEFAULT-RESULT-TYPE 'hex-string) 48 54 55 ;-> * 49 56 (define (error-result-form loc obj) 50 57 (error-argument-type loc obj "symbol in {string hex blob u8vector}" 'result-form) ) … … 52 59 ;perform any conversion necessary for final result representation 53 60 ;assumes blob 'res' may not be of result size 61 62 (define: (get-result-form (loc symbol) (res blob) (rt symbol)) -> message-digest-result-form 63 (case (canonical-result-name rt) 64 ((blob) res ) 65 ((byte-string) (blob->string res) ) 66 ((hex-string) (blob->hex res) ) 67 ((u8vector) (blob->u8vector/shared res) ) 68 (else 69 (error-result-form loc rt) ) ) ) 70 54 71 #; 55 (define (get-result-form loc res rt len)72 (define: (get-result-form (loc symbol) (res blob) (rt symbol)) -> message-digest-result-form 56 73 (case rt 57 74 ((blob) … … 71 88 (error-result-form loc rt) ) ) ) 72 89 73 ;perform any conversion necessary for final result representation 74 ;assumes blob 'res' is of result size 75 (define (get-result-form loc res rt) 76 (case (canonical-result-name rt) 77 ((blob) res ) 78 ((byte-string) (blob->string res) ) 79 ((hex-string) (blob->hex res) ) 80 ((u8vector) (blob->u8vector/shared res) ) 81 (else 82 (error-result-form loc rt) ) ) ) 83 84 (define (canonical-result-name x) 90 (define: (canonical-result-name (x symbol)) -> (or boolean symbol) 85 91 (case x 86 92 ((blob) 'blob ) … … 91 97 #f ) ) ) 92 98 93 (define (check-result-type loc mdp obj)99 (define: (check-result-type (loc symbol) (mdp message-digest-primitive) (obj message-digest-result-form)) -> message-digest-result-form 94 100 (let ( 95 101 (siz … … 113 119 ;; 114 120 121 (: message-digest-result-form (#!optional symbol -> symbol)) 122 ; 115 123 (define-parameter message-digest-result-form #;DEFAULT-RESULT-TYPE 'hex-string 116 124 (lambda (x) … … 123 131 124 132 ;; 125 126 (define-type srfi4vector (or u8vector s8vector u16vector s16vector u32vector s32vector f32vector f64vector))127 128 ;(define-type message-digest-buffer (or string blob srfi4vector procedure input-port pointer))129 (define-type message-digest-buffer (or string blob u8vector))130 131 (define-type message-digest-result-form (or string blob u8vector))132 133 (define-type message-digest-context (or fixnum procedure))134 135 (define-type message-digest-primitive (struct message-digest-primitive))136 133 137 134 (define:-record-type message-digest -
release/4/message-digest/trunk/message-digest.meta
r35338 r35339 17 17 (test-depends test) 18 18 (files 19 "message-digest.meta" "message-digest.setup" "message-digest.release-info" 20 "message-digest-types.scm" 19 21 "message-digest.scm" 20 22 "message-digest-basic.scm" … … 29 31 "message-digest-item.scm" 30 32 "message-digest-srfi-4.scm" 31 "message-digest.meta" "message-digest.setup" "message-digest.release-info" 32 "tests/run.scm" "tests/alpha.txt" 33 "tests/run.scm" "tests/message-digest-test.scm" "tests/alpha.txt" 33 34 ;DEPRECATED 34 35 "message-digest-parameters.scm") )
Note: See TracChangeset
for help on using the changeset viewer.