From 00418e173cf7217616045795eaae95e1f37c8cc6 Mon Sep 17 00:00:00 2001 From: Zach Beane Date: Tue, 26 Apr 2016 15:37:06 -0400 Subject: [PATCH] Add some SHA256 utility functions. --- crypto.lisp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/crypto.lisp b/crypto.lisp index 98a923c..8030aca 100644 --- a/crypto.lisp +++ b/crypto.lisp @@ -29,6 +29,10 @@ (in-package #:zs3) +(defparameter *empty-string-sha256* + (ironclad:byte-array-to-hex-string + (ironclad:digest-sequence :sha256 (make-array 0 :element-type 'octet)))) + (defclass digester () ((hmac :initarg :hmac @@ -45,8 +49,8 @@ :newline (make-array 1 :element-type '(unsigned-byte 8) :initial-element 10))) -(defun make-digester (key) - (let ((hmac (ironclad:make-hmac (string-octets key) :sha1))) +(defun make-digester (key &key (digest-algorithm :sha1)) + (let ((hmac (ironclad:make-hmac (string-octets key) digest-algorithm))) (make-instance 'digester :hmac hmac))) @@ -79,6 +83,18 @@ (defun file-md5/hex (file) (ironclad:byte-array-to-hex-string (file-md5 file))) +(defun file-sha256 (file) + (ironclad:digest-file :sha256 file)) + +(defun file-sha256/hex (file) + (ironclad:byte-array-to-hex-string (file-sha256 file))) + +(defun vector-sha256 (vector) + (ironclad:digest-sequence :sha256 vector)) + +(defun vector-sha256/hex (vector) + (ironclad:byte-array-to-hex-string (vector-sha256 vector))) + (defun vector-md5/b64 (vector) (base64:usb8-array-to-base64-string (ironclad:digest-sequence :md5 vector))) -- 2.11.4.GIT