changeset 698: | 96958d3eb5b0 |
parent: | c2f4e7ee921b |
author: | Richard Westhaver <ellis@rwest.io> |
date: | Fri, 04 Oct 2024 22:04:59 -0400 |
permissions: | -rw-r--r-- |
description: | fixes |
51 | 1 | ;;; blake3.lisp --- low-level bindings to CBLAKE3 |
2 | ||
3 | ;;; Commentary: |
|
4 | ||
5 | ;;; Code: |
|
6 | (defpackage :blake3/pkg |
|
7 | (:nicknames :blake3) |
|
96 | 8 | (:use :cl :std :sb-alien) |
51 | 9 | (:export |
685
ebe3315b7add
evdev/kbd fully operational, rustls and blake3 cleanups
Richard Westhaver <ellis@rwest.io>
parents:
443
diff
changeset
|
10 | :load-blake3 |
51 | 11 | :+blake3-key-len+ |
12 | :+blake3-out-len+ |
|
13 | :+blake3-block-len+ |
|
14 | :+blake3-chunk-len+ |
|
15 | :+blake3-max-depth+ |
|
16 | :blake3-version |
|
17 | :blake3-chunk-state |
|
18 | :blake3-hasher |
|
19 | :blake3-hasher-init |
|
20 | :blake3-hasher-init-keyed |
|
21 | :blake3-hasher-init-derive-key |
|
22 | :blake3-hasher-init-derive-key-raw |
|
23 | :blake3-hasher-update |
|
24 | :blake3-hasher-finalize |
|
25 | :blake3-hasher-finalize-seek |
|
687 | 26 | :blake3-hasher-reset |
27 | :with-blake3-hasher)) |
|
51 | 28 | |
29 | (in-package :blake3) |
|
30 | ||
685
ebe3315b7add
evdev/kbd fully operational, rustls and blake3 cleanups
Richard Westhaver <ellis@rwest.io>
parents:
443
diff
changeset
|
31 | (define-alien-loader "blake3") |
51 | 32 | |
33 | (define-alien-routine blake3-version c-string) |
|
34 | ||
35 | (define-alien-type blake3-chunk-state |
|
36 | (struct blake3-chunk-state |
|
37 | (key (array unsigned-int 8)) |
|
38 | (chunk-counter unsigned-long) |
|
39 | (buf (array (unsigned 8) 64)) |
|
40 | (buf-len (unsigned 8)) |
|
41 | (blocks-compressed (unsigned 8)) |
|
42 | (flags (unsigned 8)))) |
|
43 | ||
44 | (define-alien-type blake3-hasher |
|
45 | (struct blake3-hasher |
|
46 | (key (array unsigned-int 8)) |
|
47 | (chunk blake3-chunk-state) |
|
48 | (cv-stack-len (unsigned 8)) |
|
49 | (cv-stack (array (unsigned 8) 1760)))) |
|
50 | ||
51 | (define-alien-routine blake3-hasher-init void (self (* blake3-hasher))) |
|
52 | ||
53 | (define-alien-routine blake3-hasher-init-keyed void |
|
54 | (self (* blake3-hasher)) |
|
55 | (key (array (unsigned 8) 32))) |
|
56 | ||
57 | (define-alien-routine blake3-hasher-init-derive-key void |
|
58 | (self (* blake3-hasher)) |
|
687 | 59 | (context c-string)) |
51 | 60 | |
61 | (define-alien-routine blake3-hasher-init-derive-key-raw void |
|
62 | (self (* blake3-hasher)) |
|
63 | (context (* t)) |
|
64 | (context-len size-t)) |
|
65 | ||
66 | (define-alien-routine blake3-hasher-update void |
|
67 | (self (* blake3-hasher)) |
|
68 | (input (* t)) |
|
69 | (input-len size-t)) |
|
70 | ||
71 | (define-alien-routine blake3-hasher-finalize void |
|
72 | (self (* blake3-hasher)) |
|
73 | (out (* (unsigned 8))) |
|
74 | (out-len size-t)) |
|
75 | ||
76 | (define-alien-routine blake3-hasher-finalize-seek void |
|
77 | (self (* blake3-hasher)) |
|
78 | (seek (unsigned 64)) |
|
687 | 79 | (out (* unsigned-char)) |
51 | 80 | (out-len size-t)) |
81 | ||
82 | (define-alien-routine blake3-hasher-reset void (self (* blake3-hasher))) |
|
687 | 83 | |
84 | (defmacro with-blake3-hasher (hvar &body body) |
|
85 | `(with-alien ((,hvar blake3-hasher)) |
|
86 | (blake3-hasher-init ,hvar) |
|
87 | ,@body)) |