1.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2+++ b/lisp/ffi/rustls/rustls.lisp Thu May 23 18:23:38 2024 -0400
1.3@@ -0,0 +1,268 @@
1.4+;;; rustls/rustls.lisp --- Rustls Alien Routines
1.5+
1.6+;;
1.7+
1.8+;;; Code:
1.9+(in-package :rustls)
1.10+
1.11+(define-alien-routine rustls-version c-string)
1.12+
1.13+(define-alien-routine rustls-acceptor-new (* rustls-acceptor))
1.14+
1.15+(define-alien-routine rustls-acceptor-free void (acceptor (* rustls-acceptor)))
1.16+
1.17+(define-alien-routine rustls-acceptor-read-tls rustls-io-result
1.18+ (acceptor (* rustls-acceptor))
1.19+ (callback #+nil rustls-read-callback (* t))
1.20+ (userdata (* t))
1.21+ (out-n (* size-t)))
1.22+
1.23+(define-alien-routine rustls-acceptor-accept rustls-result
1.24+ (acceptor (* rustls-acceptor))
1.25+ (out-accepted (* (* rustls-accepted)))
1.26+ (out-alert (* (* rustls-accepted-alert))))
1.27+
1.28+(define-alien-routine rustls-accepted-server-name c-string
1.29+ (accepted (* rustls-accepted)))
1.30+
1.31+(define-alien-routine rustls-accepted-signature-scheme (unsigned 16)
1.32+ (accepted (* rustls-accepted))
1.33+ (i size-t))
1.34+
1.35+(define-alien-routine rustls-accepted-cipher-scheme (unsigned 16)
1.36+ (accepted (* rustls-accepted))
1.37+ (i size-t))
1.38+
1.39+(define-alien-routine rustls-accepted-alpn rustls-slice-bytes
1.40+ (accepted (* rustls-accepted))
1.41+ (i size-t))
1.42+
1.43+(define-alien-routine rustls-accepted-into-connection rustls-result
1.44+ (accepted (* rustls-accepted))
1.45+ (config (* rustls-server-config))
1.46+ (out-conn (* (* rustls-connection)))
1.47+ (out-alert (* (* rustls-accepted-alert))))
1.48+
1.49+(define-alien-routine rustls-accepted-free void (accepted (* rustls-accepted)))
1.50+
1.51+(define-alien-routine rustls-accepted-alert-write-tls rustls-io-result
1.52+ (accepted-alert (* rustls-accepted-alert))
1.53+ (callback rustls-write-callback)
1.54+ (userdata (* t))
1.55+ (out-n (* size-t)))
1.56+
1.57+(define-alien-routine rustls-accepted-alert-free void
1.58+ (accepted-alert (* rustls-accepted-alert)))
1.59+
1.60+(define-alien-routine rustls-certificate-get-der rustls-result
1.61+ (cert (* rustls-certificate))
1.62+ (out-der-data (* (* (unsigned 8))))
1.63+ (out-der-len (* size-t)))
1.64+
1.65+(define-alien-routine rustls-supported-ciphersuite-get-suite (unsigned 16)
1.66+ (supported-ciphersuite (* rustls-supported-ciphersuite)))
1.67+
1.68+(define-alien-routine rustls-supported-ciphersuite-get-name c-string
1.69+ (supported-ciphersuite (* rustls-supported-ciphersuite)))
1.70+
1.71+(define-alien-routine rustls-all-ciphersuites-len size-t)
1.72+
1.73+(define-alien-routine rustls-all-ciphersuites-get-entry (* rustls-supported-ciphersuite)
1.74+ (i size-t))
1.75+
1.76+(define-alien-routine rustls-default-ciphersuites-len size-t)
1.77+
1.78+(define-alien-routine rustls-default-ciphersuites-get-entry (* rustls-supported-ciphersuite)
1.79+ (i size-t))
1.80+
1.81+(define-alien-routine rustls-certified-key-build rustls-result
1.82+ (cert-chain (array (unsigned 8)))
1.83+ (cert-chain-len size-t)
1.84+ (private-key (array (unsigned 8)))
1.85+ (private-key-len size-t)
1.86+ (certified-key-out (* (* rustls-certified-key))))
1.87+
1.88+(define-alien-routine rustls-certified-key-get-certificate (* rustls-certificate)
1.89+ (certified-key (* rustls-certified-key))
1.90+ (i size-t))
1.91+
1.92+(define-alien-routine rustls-certified-key-clone-with-ocsp rustls-result
1.93+ (certified-key (* rustls-certified-key))
1.94+ (ocsp-response (* rustls-slice-bytes))
1.95+ (clone-key-out (* (* rustls-certified-key))))
1.96+
1.97+(define-alien-routine rustls-certified-key-free void (key (* rustls-certified-key)))
1.98+
1.99+;; (define-alien-routine rustls-root-cert-store-builder-new (* rustls-root-cert-store-builder))
1.100+
1.101+(define-alien-routine rustls-root-cert-store-builder-add-pem rustls-result
1.102+ (builder (* rustls-root-cert-store-builder))
1.103+ (pem (array (unsigned 8)))
1.104+ (pem-len size-t)
1.105+ (strict boolean))
1.106+
1.107+(define-alien-routine rustls-root-cert-store-builder-load-roots-from-file rustls-result
1.108+ (builder (* rustls-root-cert-store-builder))
1.109+ (filename c-string)
1.110+ (strict boolean))
1.111+
1.112+(define-alien-routine rustls-root-cert-store-builder-build rustls-result
1.113+ (builder (* rustls-root-cert-store-builder))
1.114+ (root-cert-store-out (* (* rustls-root-cert-store))))
1.115+
1.116+(define-alien-routine rustls-root-cert-store-builder-free void
1.117+ (builder (* rustls-root-cert-store-builder)))
1.118+
1.119+(define-alien-routine rustls-root-cert-store-free void
1.120+ (storer (* rustls-root-cert-store)))
1.121+
1.122+(define-alien-routine rustls-client-cert-verifier-free void
1.123+ (verifier (* rustls-client-cert-verifier)))
1.124+
1.125+(define-alien-routine rustls-web-pki-client-cert-verifier-builder-new (* rustls-web-pki-client-cert-verifier-builder)
1.126+ (store (* rustls-root-cert-store)))
1.127+
1.128+(define-alien-routine rustls-web-pki-client-cert-verifier-builder-add-crl rustls-result
1.129+ (builder (* rustls-web-pki-client-cert-verifier-builder))
1.130+ (crl-pem (array (unsigned 8)))
1.131+ (crl-pem-len size-t))
1.132+
1.133+(define-alien-routine rustls-web-pki-client-cert-verifier-only-check-end-entity-revocation rustls-result
1.134+ (builder (* rustls-web-pki-client-cert-verifier-builder)))
1.135+
1.136+(define-alien-routine rustls-web-pki-client-cert-verifier-allow-unknown-revocation-status rustls-result
1.137+ (builder (* rustls-web-pki-client-cert-verifier-builder)))
1.138+
1.139+(define-alien-routine rustls-web-pki-client-cert-verifier-allow-unauthenticated rustls-result
1.140+ (builder (* rustls-web-pki-client-cert-verifier-builder)))
1.141+
1.142+(define-alien-routine rustls-web-pki-client-cert-verifier-clear-root-hint-subjects rustls-result
1.143+ (builder (* rustls-web-pki-client-cert-verifier-builder)))
1.144+
1.145+(define-alien-routine rustls-web-pki-client-cert-verifier-add-root-hint-subjects rustls-result
1.146+ (builder (* rustls-web-pki-client-cert-verifier-builder))
1.147+ (store (* rustls-root-cert-store)))
1.148+
1.149+(define-alien-routine rustls-web-pki-client-cert-verifier-builder-build rustls-result
1.150+ (builder (* rustls-web-pki-client-cert-verifier-builder))
1.151+ (verifier-out (* (* rustls-client-cert-verifier))))
1.152+
1.153+(define-alien-routine rustls-web-pki-client-cert-verifier-builder-free void
1.154+ (builder (* rustls-web-pki-client-cert-verifier-builder)))
1.155+
1.156+;;; rustls_web_pki_server_cert_verifier
1.157+
1.158+;;; rustls_client_config
1.159+
1.160+;;; rustls_client_connection
1.161+(define-alien-routine rustls-client-connection-new rustls-result
1.162+ (config (* rustls-client-config))
1.163+ (server-name c-string)
1.164+ (conn-out (* (* rustls-connection))))
1.165+
1.166+(define-alien-routine rustls-connection-set-userdata void
1.167+ (conn (* rustls-connection))
1.168+ (userdata (* t)))
1.169+
1.170+(define-alien-routine rustls-connection-set-log-callback void
1.171+ (conn (* rustls-connection))
1.172+ (cb rustls-log-callback))
1.173+
1.174+(define-alien-routine rustls-connection-read-tls rustls-io-result
1.175+ (conn (* rustls-connection))
1.176+ (callback rustls-read-callback)
1.177+ (userdata (* t))
1.178+ (out-n (* size-t)))
1.179+
1.180+(define-alien-routine rustls-connection-write-tls rustls-io-result
1.181+ (conn (* rustls-connection))
1.182+ (callback rustls-write-callback)
1.183+ (userdata (* t))
1.184+ (out-n (* size-t)))
1.185+
1.186+(define-alien-routine rustls-connection-write-tls-vectored rustls-io-result
1.187+ (conn (* rustls-connection))
1.188+ (callback rustls-write-vectored-callback)
1.189+ (userdata (* t))
1.190+ (out-n (* size-t)))
1.191+
1.192+(define-alien-routine rustls-connection-process-new-packets rustls-result
1.193+ (conn (* rustls-connection)))
1.194+
1.195+(define-alien-routine rustls-connection-wants-read boolean
1.196+ (conn (* rustls-connection)))
1.197+
1.198+(define-alien-routine rustls-connection-wants-write boolean
1.199+ (conn (* rustls-connection)))
1.200+
1.201+(define-alien-routine rustls-connection-is-handshaking boolean
1.202+ (conn (* rustls-connection)))
1.203+
1.204+(define-alien-routine rustls-connection-set-buffer-limit void
1.205+ (conn (* rustls-connection))
1.206+ (n size-t))
1.207+
1.208+(define-alien-routine rustls-connection-send-close-notify void
1.209+ (conn (* rustls-connection)))
1.210+
1.211+(define-alien-routine rustls-connection-get-peer-certificate (* rustls-certificate)
1.212+ (conn (* rustls-connection))
1.213+ (i size-t))
1.214+
1.215+(define-alien-routine rustls-connection-get-alpn-protocol void
1.216+ (conn (* rustls-connection))
1.217+ (protocol-out (* (array (unsigned 8))))
1.218+ (protocol-out-len (* size-t)))
1.219+
1.220+(define-alien-routine rustls-connection-get-protocol-version (unsigned 16)
1.221+ (conn (* rustls-connection)))
1.222+
1.223+(define-alien-routine rustls-connection-get-negotiated-ciphersuite (* rustls-supported-ciphersuite)
1.224+ (conn (* rustls-connection)))
1.225+
1.226+(define-alien-routine rustls-connection-write rustls-result
1.227+ (conn (* rustls-connection))
1.228+ (buf (array (unsigned 8)))
1.229+ (count size-t)
1.230+ (out-n (* size-t)))
1.231+
1.232+(define-alien-routine rustls-connection-read rustls-result
1.233+ (conn (* rustls-connection))
1.234+ (buf (array (unsigned 8)))
1.235+ (count size-t)
1.236+ (out-n (* size-t)))
1.237+
1.238+(define-alien-routine rustl-connection-free void (* rustls-connection))
1.239+
1.240+(define-alien-routine rustls-error void (result rustls-result) (len size-t) (out-n (* size-t)))
1.241+
1.242+(define-alien-routine rustls-result-is-cert-errorerror boolean (result rustls-result))
1.243+
1.244+(define-alien-routine rustls-log-level-str c-string (level rustls-log-level))
1.245+
1.246+(define-alien-routine rustls-slice-slice-bytes-len size-t
1.247+ (input (* rustls-slice-slice-bytes)))
1.248+
1.249+(define-alien-routine rustls-slice-slice-bytes-get rustls-slice-bytes
1.250+ (input (* rustls-slice-slice-bytes))
1.251+ (n size-t))
1.252+
1.253+(define-alien-routine rustls-slice-str-len size-t
1.254+ (input (* rustls-slice-str)))
1.255+
1.256+(define-alien-routine rustls-slice-str-get c-string
1.257+ (input (* rustls-slice-str))
1.258+ (n size-t))
1.259+
1.260+;;; rustls_server_config
1.261+(define-alien-routine rustls-server-config-builder-new (* rustls-server-config-builder))
1.262+
1.263+(define-alien-routine rustls-server-config-builder-free void (config (* rustls-server-config-builder)))
1.264+
1.265+(define-alien-routine rustls-server-config-builder-build (* rustls-server-config) (* rustls-server-config-builder))
1.266+
1.267+(define-alien-routine rustls-server-config-free void (config (* rustls-server-config)))
1.268+
1.269+(define-alien-routine rustls-server-connection-new rustls-result
1.270+ (config (* rustls-server-config))
1.271+ (conn-out (* (* rustls-connection))))