;;;; message-digest-item.scm -*- Scheme -*- ;;;; Kon Lovett, Jul '18 ;;;; Kon Lovett, Aug '17 ;;;; Kon Lovett, Apr '12 ;;;; Kon Lovett, May '10 (message-digest.scm) ;;;; Kon Lovett, Jan '06 (message-digest.scm) (module message-digest-item (;export ; message-digest-object message-digest-file message-digest-port ; message-digest-object! message-digest-file! message-digest-port!) (import scheme (chicken base) (chicken type) message-digest-type message-digest-update-item) ;;; ;; (include "message-digest-types") ;;; Single Source API ;; (: message-digest-object (message-digest-primitive * #!rest -> message-digest-result-type)) ; (define (message-digest-object mdp obj . opts) (let-optionals* opts ( (restyp (message-digest-result-form)) (start 0) (end #f) ) (let ((md (initialize-message-digest mdp))) (message-digest-update-object md obj start end) (finalize-message-digest md restyp) ) ) ) (: message-digest-file (message-digest-primitive pathname #!rest -> message-digest-result-type)) ; (define (message-digest-file mdp flnm . opts) (let-optionals* opts ( (restyp (message-digest-result-form)) ) (let ( (md (initialize-message-digest mdp)) ) (message-digest-update-file md flnm) (finalize-message-digest md restyp) ) ) ) (: message-digest-port (message-digest-primitive output-port #!rest -> message-digest-result-type)) ; (define (message-digest-port mdp port . opts) (let-optionals* opts ( (restyp (message-digest-result-form)) ) (let ( (md (initialize-message-digest mdp)) ) (message-digest-update-port md port) (finalize-message-digest md restyp) ) ) ) ;; (: message-digest-object! (message-digest-primitive * message-digest-buffer #!rest -> message-digest-result-type)) ; (define (message-digest-object! mdp obj buf . opts) (let-optionals* opts ( (start 0) (end #f) ) (let ( (md (initialize-message-digest mdp)) ) (message-digest-update-object md obj start end) (finalize-message-digest! md buf) ) ) ) (: message-digest-file! (message-digest-primitive pathname message-digest-buffer -> message-digest-result-type)) ; (define (message-digest-file! mdp flnm buf) (let ( (md (initialize-message-digest mdp)) ) (message-digest-update-file md flnm) (finalize-message-digest! md buf) ) ) (: message-digest-port! (message-digest-primitive output-port message-digest-buffer -> message-digest-result-type)) ; (define (message-digest-port! mdp port buf) (let ( (md (initialize-message-digest mdp)) ) (message-digest-update-port md port) (finalize-message-digest! md buf) ) ) ) ;module message-digest-item