split off common certificate-adding code

This commit is contained in:
Ryan Culpepper 2012-11-29 15:40:26 -05:00
parent 993cd40208
commit f2621a5ea9
2 changed files with 39 additions and 27 deletions

View File

@ -0,0 +1,37 @@
#lang racket/base
(require ffi/unsafe
ffi/unsafe/define
ffi/unsafe/alloc
"../libssl.rkt"
"../libcrypto.rkt")
(provide (protect-out
(except-out (all-defined-out)
define-crypto
define-ssl)))
;; -- libcrypto
(define-ffi-definer define-crypto libcrypto
#:default-make-fail make-not-available)
(define-cpointer-type _X509*)
(define-cpointer-type _X509_STORE*)
;; FIXME: refcounting?
(define-crypto d2i_X509
(_fun (buf) ::
(_pointer = #f)
((_ptr i _pointer) = buf)
(_int32 = (bytes-length buf))
-> _X509*))
(define-crypto X509_STORE_add_cert
(_fun _X509_STORE* _X509* -> _int))
;; -- libssl
(define-ffi-definer define-ssl libssl
#:default-make-fail make-not-available)
(define _SSL_CTX* _pointer)
(define-ssl SSL_CTX_get_cert_store
(_fun _SSL_CTX* -> _X509_STORE*))

View File

@ -5,35 +5,10 @@
ffi/unsafe/define
ffi/unsafe/alloc
"../libssl.rkt"
"../libcrypto.rkt")
"../libcrypto.rkt"
"add-cert.rkt")
(provide load-win32-root-certificates)
;; -- libcrypto
(define-ffi-definer define-crypto libcrypto
#:default-make-fail make-not-available)
(define-cpointer-type _X509*)
(define-cpointer-type _X509_STORE*)
;; FIXME: refcounting?
(define-crypto d2i_X509
(_fun (buf) ::
(_pointer = #f)
((_ptr i _pointer) = buf)
(_int32 = (bytes-length buf))
-> _X509*))
(define-crypto X509_STORE_add_cert
(_fun _X509_STORE* _X509* -> _int))
;; -- libssl
(define-ffi-definer define-ssl libssl
#:default-make-fail make-not-available)
(define _SSL_CTX* _pointer)
(define-ssl SSL_CTX_get_cert_store
(_fun _SSL_CTX* -> _X509_STORE*))
;; -- Windows CryptoAPI
(define crypt-lib