changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > core / lisp/ffi/blake3/pkg.lisp

changeset 685: ebe3315b7add
parent: d3acc811998c
child: c2f4e7ee921b
author: Richard Westhaver <ellis@rwest.io>
date: Sun, 29 Sep 2024 22:44:52 -0400
permissions: -rw-r--r--
description: evdev/kbd fully operational, rustls and blake3 cleanups
1 ;;; blake3.lisp --- low-level bindings to CBLAKE3
2 
3 ;;; Commentary:
4 
5 ;;; Code:
6 (defpackage :blake3/pkg
7  (:nicknames :blake3)
8  (:use :cl :std :sb-alien)
9  (:export
10  :load-blake3
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
26  :blake3-hasher-reset))
27 
28 (in-package :blake3)
29 
30 (define-alien-loader "blake3")
31 
32 (define-alien-routine blake3-version c-string)
33 
34 (define-alien-type blake3-chunk-state
35  (struct blake3-chunk-state
36  (key (array unsigned-int 8))
37  (chunk-counter unsigned-long)
38  (buf (array (unsigned 8) 64))
39  (buf-len (unsigned 8))
40  (blocks-compressed (unsigned 8))
41  (flags (unsigned 8))))
42 
43 (define-alien-type blake3-hasher
44  (struct blake3-hasher
45  (key (array unsigned-int 8))
46  (chunk blake3-chunk-state)
47  (cv-stack-len (unsigned 8))
48  (cv-stack (array (unsigned 8) 1760))))
49 
50 (define-alien-routine blake3-hasher-init void (self (* blake3-hasher)))
51 
52 (define-alien-routine blake3-hasher-init-keyed void
53  (self (* blake3-hasher))
54  (key (array (unsigned 8) 32)))
55 
56 (define-alien-routine blake3-hasher-init-derive-key void
57  (self (* blake3-hasher))
58  (context (* char)))
59 
60 (define-alien-routine blake3-hasher-init-derive-key-raw void
61  (self (* blake3-hasher))
62  (context (* t))
63  (context-len size-t))
64 
65 (define-alien-routine blake3-hasher-update void
66  (self (* blake3-hasher))
67  (input (* t))
68  (input-len size-t))
69 
70 (define-alien-routine blake3-hasher-finalize void
71  (self (* blake3-hasher))
72  (out (* (unsigned 8)))
73  (out-len size-t))
74 
75 (define-alien-routine blake3-hasher-finalize-seek void
76  (self (* blake3-hasher))
77  (seek (unsigned 64))
78  (out (* (unsigned 8)))
79  (out-len size-t))
80 
81 (define-alien-routine blake3-hasher-reset void (self (* blake3-hasher)))