changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > core / lisp/ffi/rustls/rustls.lisp

changeset 698: 96958d3eb5b0
parent: ebe3315b7add
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 04 Oct 2024 22:04:59 -0400
permissions: -rw-r--r--
description: fixes
1 ;;; rustls/rustls.lisp --- Rustls Alien Routines
2 
3 ;;
4 
5 ;;; Code:
6 (in-package :rustls)
7 
8 (define-alien-routine rustls-version c-string)
9 
10 (define-alien-routine rustls-acceptor-new (* rustls-acceptor))
11 
12 (define-alien-routine rustls-acceptor-free void (acceptor (* rustls-acceptor)))
13 
14 (define-alien-routine rustls-acceptor-read-tls rustls-io-result
15  (acceptor (* rustls-acceptor))
16  (callback #+nil rustls-read-callback (* t))
17  (userdata (* t))
18  (out-n (* size-t)))
19 
20 (define-alien-routine rustls-acceptor-accept rustls-result
21  (acceptor (* rustls-acceptor))
22  (out-accepted (* (* rustls-accepted)))
23  (out-alert (* (* rustls-accepted-alert))))
24 
25 (define-alien-routine rustls-accepted-server-name c-string
26  (accepted (* rustls-accepted)))
27 
28 (define-alien-routine rustls-accepted-signature-scheme (unsigned 16)
29  (accepted (* rustls-accepted))
30  (i size-t))
31 
32 (define-alien-routine rustls-accepted-cipher-scheme (unsigned 16)
33  (accepted (* rustls-accepted))
34  (i size-t))
35 
36 ;; (define-alien-routine rustls-accepted-alpn rustls-slice-bytes
37 ;; (accepted (* rustls-accepted))
38 ;; (i size-t))
39 
40 (define-alien-routine rustls-accepted-into-connection rustls-result
41  (accepted (* rustls-accepted))
42  (config (* rustls-server-config))
43  (out-conn (* (* rustls-connection)))
44  (out-alert (* (* rustls-accepted-alert))))
45 
46 (define-alien-routine rustls-accepted-free void (accepted (* rustls-accepted)))
47 
48 (define-alien-routine rustls-accepted-alert-write-tls rustls-io-result
49  (accepted-alert (* rustls-accepted-alert))
50  (callback rustls-write-callback)
51  (userdata (* t))
52  (out-n (* size-t)))
53 
54 (define-alien-routine rustls-accepted-alert-free void
55  (accepted-alert (* rustls-accepted-alert)))
56 
57 (define-alien-routine rustls-certificate-get-der rustls-result
58  (cert (* rustls-certificate))
59  (out-der-data (* (* (unsigned 8))))
60  (out-der-len (* size-t)))
61 
62 (define-alien-routine rustls-supported-ciphersuite-get-suite (unsigned 16)
63  (supported-ciphersuite (* rustls-supported-ciphersuite)))
64 
65 (define-alien-routine rustls-supported-ciphersuite-get-name c-string
66  (supported-ciphersuite (* rustls-supported-ciphersuite)))
67 
68 (define-alien-routine rustls-all-ciphersuites-len size-t)
69 
70 (define-alien-routine rustls-all-ciphersuites-get-entry (* rustls-supported-ciphersuite)
71  (i size-t))
72 
73 (define-alien-routine rustls-default-ciphersuites-len size-t)
74 
75 (define-alien-routine rustls-default-ciphersuites-get-entry (* rustls-supported-ciphersuite)
76  (i size-t))
77 
78 (define-alien-routine rustls-certified-key-build rustls-result
79  (cert-chain (array (unsigned 8)))
80  (cert-chain-len size-t)
81  (private-key (array (unsigned 8)))
82  (private-key-len size-t)
83  (certified-key-out (* (* rustls-certified-key))))
84 
85 (define-alien-routine rustls-certified-key-get-certificate (* rustls-certificate)
86  (certified-key (* rustls-certified-key))
87  (i size-t))
88 
89 (define-alien-routine rustls-certified-key-clone-with-ocsp rustls-result
90  (certified-key (* rustls-certified-key))
91  (ocsp-response (* rustls-slice-bytes))
92  (clone-key-out (* (* rustls-certified-key))))
93 
94 (define-alien-routine rustls-certified-key-free void (key (* rustls-certified-key)))
95 
96 ;; (define-alien-routine rustls-root-cert-store-builder-new (* rustls-root-cert-store-builder))
97 
98 (define-alien-routine rustls-root-cert-store-builder-add-pem rustls-result
99  (builder (* rustls-root-cert-store-builder))
100  (pem (array (unsigned 8)))
101  (pem-len size-t)
102  (strict boolean))
103 
104 (define-alien-routine rustls-root-cert-store-builder-load-roots-from-file rustls-result
105  (builder (* rustls-root-cert-store-builder))
106  (filename c-string)
107  (strict boolean))
108 
109 (define-alien-routine rustls-root-cert-store-builder-build rustls-result
110  (builder (* rustls-root-cert-store-builder))
111  (root-cert-store-out (* (* rustls-root-cert-store))))
112 
113 (define-alien-routine rustls-root-cert-store-builder-free void
114  (builder (* rustls-root-cert-store-builder)))
115 
116 (define-alien-routine rustls-root-cert-store-free void
117  (storer (* rustls-root-cert-store)))
118 
119 (define-alien-routine rustls-client-cert-verifier-free void
120  (verifier (* rustls-client-cert-verifier)))
121 
122 (define-alien-routine rustls-web-pki-client-cert-verifier-builder-new (* rustls-web-pki-client-cert-verifier-builder)
123  (store (* rustls-root-cert-store)))
124 
125 (define-alien-routine rustls-web-pki-client-cert-verifier-builder-add-crl rustls-result
126  (builder (* rustls-web-pki-client-cert-verifier-builder))
127  (crl-pem (array (unsigned 8)))
128  (crl-pem-len size-t))
129 
130 (define-alien-routine rustls-web-pki-client-cert-verifier-only-check-end-entity-revocation rustls-result
131  (builder (* rustls-web-pki-client-cert-verifier-builder)))
132 
133 (define-alien-routine rustls-web-pki-client-cert-verifier-allow-unknown-revocation-status rustls-result
134  (builder (* rustls-web-pki-client-cert-verifier-builder)))
135 
136 (define-alien-routine rustls-web-pki-client-cert-verifier-allow-unauthenticated rustls-result
137  (builder (* rustls-web-pki-client-cert-verifier-builder)))
138 
139 (define-alien-routine rustls-web-pki-client-cert-verifier-clear-root-hint-subjects rustls-result
140  (builder (* rustls-web-pki-client-cert-verifier-builder)))
141 
142 (define-alien-routine rustls-web-pki-client-cert-verifier-add-root-hint-subjects rustls-result
143  (builder (* rustls-web-pki-client-cert-verifier-builder))
144  (store (* rustls-root-cert-store)))
145 
146 (define-alien-routine rustls-web-pki-client-cert-verifier-builder-build rustls-result
147  (builder (* rustls-web-pki-client-cert-verifier-builder))
148  (verifier-out (* (* rustls-client-cert-verifier))))
149 
150 (define-alien-routine rustls-web-pki-client-cert-verifier-builder-free void
151  (builder (* rustls-web-pki-client-cert-verifier-builder)))
152 
153 ;;; rustls_web_pki_server_cert_verifier
154 
155 ;;; rustls_client_config
156 
157 ;;; rustls_client_connection
158 (define-alien-routine rustls-client-connection-new rustls-result
159  (config (* rustls-client-config))
160  (server-name c-string)
161  (conn-out (* (* rustls-connection))))
162 
163 (define-alien-routine rustls-connection-set-userdata void
164  (conn (* rustls-connection))
165  (userdata (* t)))
166 
167 (define-alien-routine rustls-connection-set-log-callback void
168  (conn (* rustls-connection))
169  (cb rustls-log-callback))
170 
171 (define-alien-routine rustls-connection-read-tls rustls-io-result
172  (conn (* rustls-connection))
173  (callback rustls-read-callback)
174  (userdata (* t))
175  (out-n (* size-t)))
176 
177 (define-alien-routine rustls-connection-write-tls rustls-io-result
178  (conn (* rustls-connection))
179  (callback rustls-write-callback)
180  (userdata (* t))
181  (out-n (* size-t)))
182 
183 (define-alien-routine rustls-connection-write-tls-vectored rustls-io-result
184  (conn (* rustls-connection))
185  (callback rustls-write-vectored-callback)
186  (userdata (* t))
187  (out-n (* size-t)))
188 
189 (define-alien-routine rustls-connection-process-new-packets rustls-result
190  (conn (* rustls-connection)))
191 
192 (define-alien-routine rustls-connection-wants-read boolean
193  (conn (* rustls-connection)))
194 
195 (define-alien-routine rustls-connection-wants-write boolean
196  (conn (* rustls-connection)))
197 
198 (define-alien-routine rustls-connection-is-handshaking boolean
199  (conn (* rustls-connection)))
200 
201 (define-alien-routine rustls-connection-set-buffer-limit void
202  (conn (* rustls-connection))
203  (n size-t))
204 
205 (define-alien-routine rustls-connection-send-close-notify void
206  (conn (* rustls-connection)))
207 
208 (define-alien-routine rustls-connection-get-peer-certificate (* rustls-certificate)
209  (conn (* rustls-connection))
210  (i size-t))
211 
212 (define-alien-routine rustls-connection-get-alpn-protocol void
213  (conn (* rustls-connection))
214  (protocol-out (* (array (unsigned 8))))
215  (protocol-out-len (* size-t)))
216 
217 (define-alien-routine rustls-connection-get-protocol-version (unsigned 16)
218  (conn (* rustls-connection)))
219 
220 (define-alien-routine rustls-connection-get-negotiated-ciphersuite (* rustls-supported-ciphersuite)
221  (conn (* rustls-connection)))
222 
223 (define-alien-routine rustls-connection-write rustls-result
224  (conn (* rustls-connection))
225  (buf (array (unsigned 8)))
226  (count size-t)
227  (out-n (* size-t)))
228 
229 (define-alien-routine rustls-connection-read rustls-result
230  (conn (* rustls-connection))
231  (buf (array (unsigned 8)))
232  (count size-t)
233  (out-n (* size-t)))
234 
235 (define-alien-routine rustl-connection-free void (conn (* rustls-connection)))
236 
237 (define-alien-routine rustls-error void (result rustls-result) (len size-t) (out-n (* size-t)))
238 
239 (define-alien-routine rustls-result-is-cert-errorerror boolean (result rustls-result))
240 
241 (define-alien-routine rustls-log-level-str c-string (level rustls-log-level))
242 
243 (define-alien-routine rustls-slice-slice-bytes-len size-t
244  (input (* rustls-slice-slice-bytes)))
245 
246 ;; (define-alien-routine rustls-slice-slice-bytes-get rustls-slice-bytes
247 ;; (input (* rustls-slice-slice-bytes))
248 ;; (n size-t))
249 
250 (define-alien-routine rustls-slice-str-len size-t
251  (input (* rustls-slice-str)))
252 
253 (define-alien-routine rustls-slice-str-get c-string
254  (input (* rustls-slice-str))
255  (n size-t))
256 
257 ;;; rustls_server_config
258 (define-alien-routine rustls-server-config-builder-new (* rustls-server-config-builder))
259 
260 (define-alien-routine rustls-server-config-builder-free void (config (* rustls-server-config-builder)))
261 
262 (define-alien-routine rustls-server-config-builder-build (* rustls-server-config) (builder (* rustls-server-config-builder)))
263 
264 (define-alien-routine rustls-server-config-free void (config (* rustls-server-config)))
265 
266 (define-alien-routine rustls-server-connection-new rustls-result
267  (config (* rustls-server-config))
268  (conn-out (* (* rustls-connection))))
269 
270 (define-alien-routine rustls-server-connection-get-server-name rustls-result
271  (conn (* rustls-connection))
272  (buf (* unsigned-char))
273  (count size-t)
274  (out-n (* size-t)))
275 
276 (define-alien-routine rustls-server-config-builder-set-hello-callback rustls-result
277  (builder (* rustls-server-config-builder))
278  (callback rustls-client-hello-callback))
279 
280 (define-alien-routine rustls-client-hello-select-certified-key rustls-result
281  (hello (* rustls-client-hello))
282  (certified-keys (* (* rustls-certified-key)))
283  (certified-keys-len size-t)
284  (out-key (* (* rustls-certified-key))))
285 
286 (define-alien-routine rustls-server-config-builder-set-persistence rustls-result
287  (builder (* rustls-server-config-builder))
288  (get-cb rustls-session-store-get-callback)
289  (put-cb rustls-session-store-put-callback))