Coverage report: /home/ellis/comp/core/ffi/blake3/pkg.lisp

KindCoveredAll%
expression316 18.8
branch00nil
Key
Not instrumented
Conditionalized out
Executed
Not executed
 
Both branches taken
One branch taken
Neither branch taken
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
    :with-blake3-hasher))
28
 
29
 (in-package :blake3)
30
 
31
 (define-alien-loader blake3)
32
 
33
 (defar 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
 (defar blake3-hasher-init void (self (* blake3-hasher)))
52
 
53
 (defar blake3-hasher-init-keyed void 
54
   (self (* blake3-hasher))
55
   (key (array (unsigned 8) 32)))
56
 
57
 (defar blake3-hasher-init-derive-key void 
58
   (self (* blake3-hasher))
59
   (context c-string))
60
 
61
 (defar blake3-hasher-init-derive-key-raw void 
62
   (self (* blake3-hasher))
63
   (context (* t))
64
   (context-len size-t))
65
 
66
 (defar blake3-hasher-update void
67
   (self (* blake3-hasher)) 
68
   (input (* unsigned-char))
69
   (input-len size-t))
70
 
71
 (defar blake3-hasher-finalize void 
72
   (self (* blake3-hasher)) 
73
   (out (* unsigned-char)) 
74
   (out-len size-t))
75
 
76
 (defar blake3-hasher-finalize-seek void 
77
   (self (* blake3-hasher)) 
78
   (seek (unsigned 64)) 
79
   (out (* unsigned-char))
80
   (out-len size-t))
81
 
82
 (defar blake3-hasher-reset void (self (* blake3-hasher)))
83
 
84
 (defmacro with-blake3-hasher (hvar &body body)
85
   `(with-alien ((,hvar blake3-hasher))
86
      (blake3-hasher-init (addr ,hvar))
87
      ,@body))