mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-19 13:49:17 +02:00
- Fixed some typos in sha-native.scm - Removed unnecessary structs and unions from sha_context - Used more efficient implementation of hex32 - Made (scheme base) a common import in (chibi crypto sha2)
24 lines
833 B
Scheme
24 lines
833 B
Scheme
;; sha2-native.scm -- SHA-2 digest algorithms native interface
|
|
;; Copyright (c) 2015 Alexei Lozovsky. All rights reserved.
|
|
;; BSD-style license: http://synthcode.com/license.txt
|
|
|
|
(define (process-sha-data! context src)
|
|
(cond ((or (bytevector? src) (string? src))
|
|
(add-sha-data! context src))
|
|
((input-port? src)
|
|
(let lp ((chunk (read-bytevector 1024 src)))
|
|
(unless (eof-object? chunk)
|
|
(add-sha-data! context chunk)
|
|
(lp (read-bytevector 1024 src)))))
|
|
(else
|
|
(error "unknown digest source: " src))))
|
|
|
|
(define (sha-224 src)
|
|
(let ((context (start-sha type-sha-224)))
|
|
(process-sha-data! context src)
|
|
(get-sha context)))
|
|
|
|
(define (sha-256 src)
|
|
(let ((context (start-sha type-sha-256)))
|
|
(process-sha-data! context src)
|
|
(get-sha context)))
|