you can still use the dynamic libs on linux but rather than using prototypes just use ImportC, I'm currently on windows but this should find the installed version. I will check it later.
Code: Select all
; /* $OpenBSD: tls.h,v 1.58 2020/01/22 06:44:02 beck Exp $ */
; /*
; * Copyright (c) 2014 Joel Sing <jsing@openbsd.org>
; *
; * Permission To use, copy, modify, And distribute this software For any
; * purpose With Or without fee is hereby granted, provided that the above
; * copyright notice And this permission notice appear in all copies.
; *
; * THE SOFTWARE IS PROVIDED "AS IS" And THE AUTHOR DISCLAIMS ALL WARRANTIES
; * With REGARD To THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
; * MERCHANTABILITY And FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE For
; * ANY SPECIAL, DIRECT, INDIRECT, Or CONSEQUENTIAL DAMAGES Or ANY DAMAGES
; * WHATSOEVER RESULTING FROM LOSS OF USE, Data Or PROFITS, WHETHER IN AN
; * ACTION OF CONTRACT, NEGLIGENCE Or OTHER TORTIOUS ACTION, ARISING OUT OF
; * Or IN CONNECTION With THE USE Or PERFORMANCE OF THIS SOFTWARE.
; */
Macro const : string : EndMacro
#TLS_API= 20200120
#TLS_PROTOCOL_TLSv1_0= (1 << 1)
#TLS_PROTOCOL_TLSv1_1= (1 << 2)
#TLS_PROTOCOL_TLSv1_2= (1 << 3)
#TLS_PROTOCOL_TLSv1_3= (1 << 4)
#TLS_PROTOCOL_TLSv1= #TLS_PROTOCOL_TLSv1_0 | #TLS_PROTOCOL_TLSv1_1 | #TLS_PROTOCOL_TLSv1_2 | #TLS_PROTOCOL_TLSv1_3
#TLS_PROTOCOLS_ALL= #TLS_PROTOCOL_TLSv1
#TLS_PROTOCOLS_DEFAULT= (#TLS_PROTOCOL_TLSv1_2|#TLS_PROTOCOL_TLSv1_3)
#TLS_WANT_POLLIN= -2
#TLS_WANT_POLLOUT= -3
;/* RFC 6960 Section 2.3 */
#TLS_OCSP_RESPONSE_SUCCESSFUL= 0
#TLS_OCSP_RESPONSE_MALFORMED= 1
#TLS_OCSP_RESPONSE_INTERNALERROR= 2
#TLS_OCSP_RESPONSE_TRYLATER= 3
#TLS_OCSP_RESPONSE_SIGREQUIRED= 4
#TLS_OCSP_RESPONSE_UNAUTHORIZED= 5
;/* RFC 6960 Section 2.2 */
#TLS_OCSP_CERT_GOOD= 0
#TLS_OCSP_CERT_REVOKED= 1
#TLS_OCSP_CERT_UNKNOWN= 2
;/* RFC 5280 Section 5.3.1 */
#TLS_CRL_REASON_UNSPECIFIED= 0
#TLS_CRL_REASON_KEY_COMPROMISE= 1
#TLS_CRL_REASON_CA_COMPROMISE= 2
#TLS_CRL_REASON_AFFILIATION_CHANGED= 3
#TLS_CRL_REASON_SUPERSEDED= 4
#TLS_CRL_REASON_CESSATION_OF_OPERATION= 5
#TLS_CRL_REASON_CERTIFICATE_HOLD= 6
#TLS_CRL_REASON_REMOVE_FROM_CRL= 8
#TLS_CRL_REASON_PRIVILEGE_WITHDRAWN= 9
#TLS_CRL_REASON_AA_COMPROMISE= 10
#TLS_MAX_SESSION_ID_LENGTH= 32
#TLS_TICKET_KEY_SIZE= 48
PrototypeC tls_read_cb(*_ctx,*_buf,_buflen,*_cb_arg);
PrototypeC tls_write_cb(*_ctx,*_buf,_buflen,*_cb_arg);
ImportC "-ltls"
tls_init() ;
tls_config_error(*config) ;
tls_error(*ctx) ;
tls_config_new() ;
tls_config_free(*config) ;
tls_default_ca_cert_file() ;
tls_config_add_keypair_file(*config,*_cert_file.const,*_key_file.const) ;
tls_config_add_keypair_mem(*config,*_cert.const,_cert_len.i,*_key.const,_key_len.i) ;
tls_config_add_keypair_ocsp_file(*config,*_cert_file.const,*_key_file.const,*_ocsp_staple_file.const);
tls_config_add_keypair_ocsp_mem(*config,*_cert.const,_cert_len.i,*_key.const,_key_len.i,*_staple.const,_staple_len.i);
tls_config_set_alpn(*config,*_alpn.const) ;
tls_config_set_ca_file(*config,*_ca_file.const) ;
tls_config_set_ca_path(*config,*_ca_path.const) ;
tls_config_set_ca_mem(*config,*_ca.const,_len.i) ;
tls_config_set_cert_file(*config,*_cert_file.const) ;
tls_config_set_cert_mem(*config,*_cert.const,_len.i) ;
tls_config_set_ciphers(*config,*_ciphers.const) ;
tls_config_set_crl_file(*config,*_crl_file.const) ;
tls_config_set_crl_mem(*config,*_crl.const,_len.i) ;
tls_config_set_dheparams(*config,*_params.const) ;
tls_config_set_ecdhecurve(*config,*_curve.const) ;
tls_config_set_ecdhecurves(*config,*_curves.const) ;
tls_config_set_key_file(*config,*_key_file.const) ;
tls_config_set_key_mem(*config,*_key.const,_len.i) ;
tls_config_set_keypair_file(*config,*_cert_file.const,*_key_file.const) ;
tls_config_set_keypair_mem(*config,*_cert.const,_cert_len.i,*_key.const,_key_len.i) ;
tls_config_set_keypair_ocsp_file(*config,*_cert_file.const,*_key_file.const,*_staple_file.const) ;
tls_config_set_keypair_ocsp_mem(*config,*_cert.const,_cert_len.i,*_key.const,_key_len.i,*_staple.const,staple_len.i) ;
tls_config_set_ocsp_staple_mem(*config,*_staple.const,_len.i) ;
tls_config_set_ocsp_staple_file(*config,*_staple_file.const) ;
tls_config_set_protocols(*config,_protocols.l) ;
tls_config_set_session_fd(*config,_session_fd.l) ;
tls_config_set_verify_depth(*config,_verify_depth.l) ;
tls_config_prefer_ciphers_client(*config) ;
tls_config_prefer_ciphers_server(*config) ;
tls_config_insecure_noverifycert(*config) ;
tls_config_insecure_noverifyname(*config) ;
tls_config_insecure_noverifytime(*config) ;
tls_config_verify(*config) ;
tls_config_ocsp_require_stapling(*config) ;
tls_config_verify_client(*config) ;
tls_config_verify_client_optional(*config) ;
tls_config_clear_keys(*config) ;
tls_config_parse_protocols(*_protocols,*_protostr.const) ;
tls_config_set_session_id(*config,*_session_id.const,_len.i) ;
tls_config_set_session_lifetime(*config,_lifetime.l) ;
tls_config_add_ticket_key(*config,_keyrev.i,*_key,_keylen.i) ;
tls_client() ;
tls_server() ;
tls_configure(*ctx,*config) ;
tls_reset(*ctx) ;
tls_free(*ctx) ;
tls_accept_fds(*ctx,*_cctx,_fd_read.l,_fd_write.l) ;
tls_accept_socket(*ctx,*_cctx,_socket.l) ;
tls_accept_cbs(*ctx,*_cctx,*_read_cb.tls_read_cb,*_write_cb.tls_write_cb,*_cb_arg) ;
tls_connect(*ctx,*_host.const,*_port.const) ;
tls_connect_fds(*ctx,_fd_read.l,_fd_write.l,*_servername.const) ;
tls_connect_servername(*ctx,*_host.const,*_port.const,*_servername.const) ;
tls_connect_socket(*ctx,_s.l,*_servername.const) ;
tls_connect_cbs(*ctx,*_read_cb.tls_read_cb,*_write_cb.tls_write_cb,*_cb_arg,*_servername.const) ;
tls_handshake(*ctx) ;
tls_read(*ctx,*_buf,_buflen.i) ;
tls_write(*ctx,*_buf.const,_buflen.i) ;
tls_close(*ctx) ;
tls_peer_cert_provided(*ctx) ;
tls_peer_cert_contains_name(*ctx,*_name.const) ;
tls_peer_cert_hash(*ctx) ;
tls_peer_cert_issuer(*ctx) ;
tls_peer_cert_subject(*ctx) ;
tls_peer_cert_notbefore(*ctx) ;
tls_peer_cert_notafter(*ctx) ;
tls_peer_cert_chain_pem(*ctx,*_len) ;
tls_conn_alpn_selected(*ctx) ;
tls_conn_cipher(*ctx) ;
tls_conn_cipher_strength(*ctx) ;
tls_conn_servername(*ctx) ;
tls_conn_session_resumed(*ctx) ;
tls_conn_version(*ctx) ;
tls_load_file(*_file.const,*_len,*_password) ;
tls_unload_file(*_buf,len.i) ;
tls_ocsp_process_response(*ctx,*_response.const,_size.i) ;
tls_peer_ocsp_cert_status(*ctx) ;
tls_peer_ocsp_crl_reason(*ctx) ;
tls_peer_ocsp_next_update(*ctx) ;
tls_peer_ocsp_response_status(*ctx) ;
tls_peer_ocsp_result(*ctx) ;
tls_peer_ocsp_revocation_time(*ctx) ;
tls_peer_ocsp_this_update(*ctx) ;
tls_peer_ocsp_url(*ctx) ;
EndImport
If tls_init() = 0
Debug "ok"
EndIf