changelog shortlog graph tags branches changeset files file revisions raw help

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

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
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
1
 ;;; blake3.lisp --- low-level bindings to CBLAKE3
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
2
 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
3
 ;;; Commentary:
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
4
 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
5
 ;;; Code:
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
6
 (defpackage :blake3/pkg
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
7
   (:nicknames :blake3)
96
301fd45bbe73 big refactor of lisp code
ellis <ellis@rwest.io>
parents: 51
diff changeset
8
   (:use :cl :std :sb-alien)
51
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
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
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
11
    :+blake3-key-len+
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
12
    :+blake3-out-len+
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
13
    :+blake3-block-len+
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
14
    :+blake3-chunk-len+
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
15
    :+blake3-max-depth+
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
16
    :blake3-version
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
17
    :blake3-chunk-state
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
18
    :blake3-hasher
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
19
    :blake3-hasher-init
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
20
    :blake3-hasher-init-keyed
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
21
    :blake3-hasher-init-derive-key
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
22
    :blake3-hasher-init-derive-key-raw
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
23
    :blake3-hasher-update
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
24
    :blake3-hasher-finalize
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
25
    :blake3-hasher-finalize-seek
687
Richard Westhaver <ellis@rwest.io>
parents: 685
diff changeset
26
    :blake3-hasher-reset
Richard Westhaver <ellis@rwest.io>
parents: 685
diff changeset
27
    :with-blake3-hasher))
51
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
28
 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
29
 (in-package :blake3)
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
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
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
32
 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
33
 (define-alien-routine blake3-version c-string)
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
34
 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
35
 (define-alien-type blake3-chunk-state
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
36
     (struct blake3-chunk-state
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
37
             (key (array unsigned-int 8))
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
38
             (chunk-counter unsigned-long)
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
39
             (buf (array (unsigned 8) 64))
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
40
             (buf-len (unsigned 8))
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
41
             (blocks-compressed (unsigned 8))
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
42
             (flags (unsigned 8))))
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
43
 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
44
 (define-alien-type blake3-hasher
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
45
   (struct blake3-hasher
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
46
           (key (array unsigned-int 8))
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
47
           (chunk blake3-chunk-state)
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
48
           (cv-stack-len (unsigned 8))
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
49
           (cv-stack (array (unsigned 8) 1760))))
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
50
 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
51
 (define-alien-routine blake3-hasher-init void (self (* blake3-hasher)))
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
52
 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
53
 (define-alien-routine blake3-hasher-init-keyed void 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
54
   (self (* blake3-hasher))
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
55
   (key (array (unsigned 8) 32)))
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
56
 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
57
 (define-alien-routine blake3-hasher-init-derive-key void 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
58
   (self (* blake3-hasher))
687
Richard Westhaver <ellis@rwest.io>
parents: 685
diff changeset
59
   (context c-string))
51
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
60
 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
61
 (define-alien-routine blake3-hasher-init-derive-key-raw void 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
62
   (self (* blake3-hasher))
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
63
   (context (* t))
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
64
   (context-len size-t))
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
65
 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
66
 (define-alien-routine blake3-hasher-update void
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
67
   (self (* blake3-hasher)) 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
68
   (input (* t))
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
69
   (input-len size-t))
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
70
 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
71
 (define-alien-routine blake3-hasher-finalize void 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
72
   (self (* blake3-hasher)) 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
73
   (out (* (unsigned 8))) 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
74
   (out-len size-t))
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
75
 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
76
 (define-alien-routine blake3-hasher-finalize-seek void 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
77
   (self (* blake3-hasher)) 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
78
   (seek (unsigned 64)) 
687
Richard Westhaver <ellis@rwest.io>
parents: 685
diff changeset
79
   (out (* unsigned-char))
51
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
80
   (out-len size-t))
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
81
 
4a1ba333114b app/tz and blake3
ellis <ellis@rwest.io>
parents:
diff changeset
82
 (define-alien-routine blake3-hasher-reset void (self (* blake3-hasher)))
687
Richard Westhaver <ellis@rwest.io>
parents: 685
diff changeset
83
 
Richard Westhaver <ellis@rwest.io>
parents: 685
diff changeset
84
 (defmacro with-blake3-hasher (hvar &body body)
Richard Westhaver <ellis@rwest.io>
parents: 685
diff changeset
85
   `(with-alien ((,hvar blake3-hasher))
Richard Westhaver <ellis@rwest.io>
parents: 685
diff changeset
86
      (blake3-hasher-init ,hvar)
Richard Westhaver <ellis@rwest.io>
parents: 685
diff changeset
87
      ,@body))