! Copyright (C) 2007 Elie CHAFTARI ! Portions copyright (C) 2008 Slava Pestov ! See http://factorcode.org/license.txt for BSD license. USING: alien alien.c-types alien.destructors alien.libraries alien.parser alien.syntax assocs classes.struct combinators kernel lexer literals namespaces openssl.libcrypto parser quotations sequences system words ; IN: openssl.libssl << "libssl" { { [ os windows? ] [ "libssl-38.dll" ] } { [ os macosx? ] [ "libssl.dylib" ] } { [ os unix? ] [ "libssl.so" ] } } cond cdecl add-library >> CONSTANT: X509_FILETYPE_PEM 1 CONSTANT: X509_FILETYPE_ASN1 2 CONSTANT: X509_FILETYPE_DEFAULT 3 ALIAS: SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1 ALIAS: SSL_FILETYPE_PEM X509_FILETYPE_PEM CONSTANT: SSL_CTRL_NEED_TMP_RSA 1 CONSTANT: SSL_CTRL_SET_TMP_RSA 2 CONSTANT: SSL_CTRL_SET_TMP_DH 3 CONSTANT: SSL_CTRL_SET_TMP_RSA_CB 4 CONSTANT: SSL_CTRL_SET_TMP_DH_CB 5 CONSTANT: SSL_CTRL_GET_SESSION_REUSED 6 CONSTANT: SSL_CTRL_GET_CLIENT_CERT_REQUEST 7 CONSTANT: SSL_CTRL_GET_NUM_RENEGOTIATIONS 8 CONSTANT: SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 9 CONSTANT: SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 10 CONSTANT: SSL_CTRL_GET_FLAGS 11 CONSTANT: SSL_CTRL_EXTRA_CHAIN_CERT 12 CONSTANT: SSL_CTRL_SET_MSG_CALLBACK 13 CONSTANT: SSL_CTRL_SET_MSG_CALLBACK_ARG 14 CONSTANT: SSL_CTRL_SESS_NUMBER 20 CONSTANT: SSL_CTRL_SESS_CONNECT 21 CONSTANT: SSL_CTRL_SESS_CONNECT_GOOD 22 CONSTANT: SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23 CONSTANT: SSL_CTRL_SESS_ACCEPT 24 CONSTANT: SSL_CTRL_SESS_ACCEPT_GOOD 25 CONSTANT: SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26 CONSTANT: SSL_CTRL_SESS_HIT 27 CONSTANT: SSL_CTRL_SESS_CB_HIT 28 CONSTANT: SSL_CTRL_SESS_MISSES 29 CONSTANT: SSL_CTRL_SESS_TIMEOUTS 30 CONSTANT: SSL_CTRL_SESS_CACHE_FULL 31 CONSTANT: SSL_CTRL_OPTIONS 32 CONSTANT: SSL_CTRL_MODE 33 CONSTANT: SSL_CTRL_GET_READ_AHEAD 40 CONSTANT: SSL_CTRL_SET_READ_AHEAD 41 CONSTANT: SSL_CTRL_SET_SESS_CACHE_SIZE 42 CONSTANT: SSL_CTRL_GET_SESS_CACHE_SIZE 43 CONSTANT: SSL_CTRL_SET_SESS_CACHE_MODE 44 CONSTANT: SSL_CTRL_GET_SESS_CACHE_MODE 45 CONSTANT: SSL_CTRL_GET_MAX_CERT_LIST 50 CONSTANT: SSL_CTRL_SET_MAX_CERT_LIST 51 CONSTANT: SSL_CTRL_SET_MAX_SEND_FRAGMENT 52 CONSTANT: SSL_CTRL_SET_TLSEXT_SERVERNAME_CB 53 CONSTANT: SSL_CTRL_SET_TLSEXT_SERVERNAME_ARG 54 CONSTANT: SSL_CTRL_SET_TLSEXT_HOSTNAME 55 CONSTANT: SSL_CTRL_SET_TLSEXT_DEBUG_CB 56 CONSTANT: SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57 CONSTANT: SSL_CTRL_GET_TLSEXT_TICKET_KEYS 58 CONSTANT: SSL_CTRL_SET_TLSEXT_TICKET_KEYS 59 CONSTANT: SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB 61 CONSTANT: SSL_CTRL_SET_TLSEXT_OPAQUE_PRF_INPUT_CB_ARG 62 CONSTANT: SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63 CONSTANT: SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64 CONSTANT: SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65 CONSTANT: SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66 CONSTANT: SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67 CONSTANT: SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68 CONSTANT: SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69 CONSTANT: SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70 CONSTANT: SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71 CONSTANT: SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 CONSTANT: SSL_CTRL_SET_TLS_EXT_SRP_USERNAME_CB 75 CONSTANT: SSL_CTRL_SET_SRP_VERIFY_PARAM_CB 76 CONSTANT: SSL_CTRL_SET_SRP_GIVE_CLIENT_PWD_CB 77 CONSTANT: SSL_CTRL_SET_SRP_ARG 78 CONSTANT: SSL_CTRL_SET_TLS_EXT_SRP_USERNAME 79 CONSTANT: SSL_CTRL_SET_TLS_EXT_SRP_STRENGTH 80 CONSTANT: SSL_CTRL_SET_TLS_EXT_SRP_PASSWORD 81 CONSTANT: SSL_CTRL_TLS_EXT_SEND_HEARTBEAT 85 CONSTANT: SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING 86 CONSTANT: SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS 87 CONSTANT: SSL_CTRL_CHAIN 88 CONSTANT: SSL_CTRL_CHAIN_CERT 89 CONSTANT: SSL_CTRL_GET_CURVES 90 CONSTANT: SSL_CTRL_SET_CURVES 91 CONSTANT: SSL_CTRL_SET_CURVES_LIST 92 CONSTANT: SSL_CTRL_GET_SHARED_CURVE 93 CONSTANT: SSL_CTRL_SET_ECDH_AUTO 94 CONSTANT: SSL_CTRL_SET_SIGALGS 97 CONSTANT: SSL_CTRL_SET_SIGALGS_LIST 98 CONSTANT: SSL_CTRL_CERT_FLAGS 99 CONSTANT: SSL_CTRL_CLEAR_CERT_FLAGS 100 CONSTANT: SSL_CTRL_SET_CLIENT_SIGALGS 101 CONSTANT: SSL_CTRL_SET_CLIENT_SIGALGS_LIST 102 CONSTANT: SSL_CTRL_GET_CLIENT_CERT_TYPES 103 CONSTANT: SSL_CTRL_SET_CLIENT_CERT_TYPES 104 CONSTANT: SSL_CTRL_BUILD_CERT_CHAIN 105 CONSTANT: SSL_CTRL_SET_VERIFY_CERT_STORE 106 CONSTANT: SSL_CTRL_SET_CHAIN_CERT_STORE 107 CONSTANT: SSL_CTRL_GET_PEER_SIGNATURE_NID 108 CONSTANT: SSL_CTRL_GET_SERVER_TMP_KEY 109 CONSTANT: SSL_CTRL_GET_RAW_CIPHERLIST 110 CONSTANT: SSL_CTRL_GET_EC_POINT_FORMATS 111 CONSTANT: SSL_CTRL_GET_CHAIN_CERTS 115 CONSTANT: SSL_CTRL_SELECT_CURRENT_CERT 116 CONSTANT: SSL_CTRL_SET_CURRENT_CERT 117 CONSTANT: SSL_CTRL_CHECK_PROTO_VERSION 119 CONSTANT: DTLS_CTRL_SET_LINK_MTU 120 CONSTANT: DTLS_CTRL_GET_LINK_MIN_MTU 121 CONSTANT: TLSEXT_NAMETYPE_host_name 0 CONSTANT: TLSEXT_STATUSTYPE_ocsp 1 CONSTANT: TLSEXT_ECPOINTFORMAT_first 0 CONSTANT: TLSEXT_ECPOINTFORMAT_uncompressed 0 CONSTANT: TLSEXT_ECPOINTFORMAT_ansiX962_compressed_prime 1 CONSTANT: TLSEXT_ECPOINTFORMAT_ansiX962_compressed_char2 2 CONSTANT: TLSEXT_ECPOINTFORMAT_last 2 CONSTANT: TLSEXT_signature_anonymous 0 CONSTANT: TLSEXT_signature_rsa 1 CONSTANT: TLSEXT_signature_dsa 2 CONSTANT: TLSEXT_signature_ecdsa 3 CONSTANT: TLSEXT_signature_num 4 CONSTANT: TLSEXT_hash_none 0 CONSTANT: TLSEXT_hash_md5 1 CONSTANT: TLSEXT_hash_sha1 2 CONSTANT: TLSEXT_hash_sha224 3 CONSTANT: TLSEXT_hash_sha256 4 CONSTANT: TLSEXT_hash_sha384 5 CONSTANT: TLSEXT_hash_sha512 6 CONSTANT: TLSEXT_hash_num 7 CONSTANT: TLSEXT_nid_unknown 0x1000000 CONSTANT: SSL_OP_NO_SSLv2 0x01000000 CONSTANT: SSL_OP_NO_SSLv3 0x02000000 CONSTANT: SSL_OP_NO_TLSv1 0x04000000 CONSTANT: SSL_OP_NO_TLSv1_2 0x08000000 CONSTANT: SSL_OP_NO_TLSv1_1 0x10000000 CONSTANT: SSL_ERROR_NONE 0 CONSTANT: SSL_ERROR_SSL 1 CONSTANT: SSL_ERROR_WANT_READ 2 CONSTANT: SSL_ERROR_WANT_WRITE 3 CONSTANT: SSL_ERROR_WANT_X509_LOOKUP 4 CONSTANT: SSL_ERROR_SYSCALL 5 ! consult errno for details CONSTANT: SSL_ERROR_ZERO_RETURN 6 CONSTANT: SSL_ERROR_WANT_CONNECT 7 CONSTANT: SSL_ERROR_WANT_ACCEPT 8 ! Error messages table : error-messages ( -- hash ) H{ { 0 "SSL_ERROR_NONE" } { 1 "SSL_ERROR_SSL" } { 2 "SSL_ERROR_WANT_READ" } { 3 "SSL_ERROR_WANT_WRITE" } { 4 "SSL_ERROR_WANT_X509_LOOKUP" } { 5 "SSL_ERROR_SYSCALL" } { 6 "SSL_ERROR_ZERO_RETURN" } { 7 "SSL_ERROR_WANT_CONNECT" } { 8 "SSL_ERROR_WANT_ACCEPT" } } ; C-TYPE: SSL_CTX C-TYPE: SSL_SESSION LIBRARY: libssl ! =============================================== ! stack.h ! =============================================== STRUCT: stack_st { num int } { data char** } { sorted int } { num_alloc int } { comp void* } ; TYPEDEF: stack_st _STACK ! =============================================== ! asn1t.h ! =============================================== C-TYPE: ASN1_ITEM ! =============================================== ! asn1.h ! =============================================== C-TYPE: ASN1_VALUE TYPEDEF: ASN1_ITEM ASN1_ITEM_EXP STRUCT: ASN1_STRING { length int } { type int } { data uchar* } { flags long } ; FUNCTION: int ASN1_STRING_cmp ( ASN1_STRING *a, ASN1_STRING *b ) FUNCTION: ASN1_VALUE* ASN1_item_d2i ( ASN1_VALUE** val, uchar **in, long len, ASN1_ITEM *it ) ! =============================================== ! ossl_typ.h ! =============================================== TYPEDEF: ASN1_STRING ASN1_OCTET_STRING ! =============================================== ! x509.h ! =============================================== STRUCT: X509_EXTENSION { object void* } { critical void* } { value ASN1_OCTET_STRING* } ; C-TYPE: X509_NAME C-TYPE: X509 ! =============================================== ! x509v3.h ! =============================================== STRUCT: X509V3_EXT_METHOD { ext_nid int } { ext_flags int } { it void* } ; FUNCTION: X509V3_EXT_METHOD* X509V3_EXT_get ( X509_EXTENSION* ext ) UNION-STRUCT: GENERAL_NAME_st_d { ptr char* } { otherName void* } { rfc822Name void* } { dNSName ASN1_STRING* } ; STRUCT: GENERAL_NAME_st { type int } { d GENERAL_NAME_st_d } ; CONSTANT: GEN_OTHERNAME 0 CONSTANT: GEN_EMAIL 1 CONSTANT: GEN_DNS 2 CONSTANT: GEN_X400 3 CONSTANT: GEN_DIRNAME 4 CONSTANT: GEN_EDIPARTY 5 CONSTANT: GEN_URI 6 CONSTANT: GEN_IPADD 7 CONSTANT: GEN_RID 8 ! =============================================== ! ssl.h ! =============================================== STRUCT: ssl_method_st { version int } { ssl_new void* } { ssl_clear void* } { ssl_free void* } { ssl_accept void* } { ssl_connect void* } { ssl_read void* } { ssl_peek void* } { ssl_write void* } { ssl_shutdown void* } { ssl_renegotiate void* } { ssl_renegotiate_check void* } { ssl_get_message void* } { ssl_read_bytes void* } { ssl_write_bytes void* } { ssl_dispatch_alert void* } { ssl_ctrl void* } { ssl_ctx_ctrl void* } { get_cipher_by_char void* } { put_cipher_by_char void* } { ssl_pending void* } { num_ciphers void* } { get_cipher void* } { get_ssl_method void* } { get_timeout void* } { ssl3_enc void* } { ssl_version void* } { ssl_callback_ctrl void* } { ssl_ctx_callback_ctrl void* } ; TYPEDEF: ssl_method_st* ssl-method STRUCT: ssl_st { version int } { type int } { method ssl_method_st* } { rbio BIO* } { wbio BIO* } { bbio BIO* } { rwstate int } { in_handshake int } { handshake_func void* } { server int } { new_session int } { quiet_shutdown int } { shutdown int } { state int } { rstate int } { init_buf void* } { init_msg void* } { init_num int } { init_off int } { packet void* } { packet_length int } { s2 void* } { s3 void* } { d1 void* } { read_ahead int } { msg_callback void* } { msg_callback_arg void* } { hit int } { param void* } { cipher_list void* } { cipher_list_by_id void* } { mac_flags int } { enc_read_ctx void* } { read_hash void* } { expand void* } { enc_write_ctx void* } { write_hash void* } { compress void* } { cert void* } { sid_ctx_length uint } { sid_ctx void* } { session SSL_SESSION* } { generate_session_id void* } { verify_mode int } { verify_callback void* } { info_callback void* } { error int } { error_code int } { kssl_ctx void* } { psk_client_callback void* } { psk_server_callback void* } { ctx SSL_CTX* } ; TYPEDEF: ssl_st SSL FUNCTION: c-string SSL_get_version ( SSL* ssl ) ! Maps OpenSSL errors to strings FUNCTION: void SSL_load_error_strings ( ) FUNCTION: c-string SSL_state_string ( SSL* ssl ) FUNCTION: c-string SSL_rstate_string ( SSL* ssl ) FUNCTION: c-string SSL_state_string_long ( SSL* ssl ) FUNCTION: c-string SSL_rstate_string_long ( SSL* ssl ) ! Must be called before any other action takes place FUNCTION: int SSL_library_init ( ) ! Sets the default SSL version FUNCTION: ssl-method SSLv2_client_method ( ) FUNCTION: ssl-method SSLv23_client_method ( ) FUNCTION: ssl-method SSLv23_server_method ( ) FUNCTION: ssl-method SSLv23_method ( ) ! SSLv3 but can rollback to v2 FUNCTION: ssl-method SSLv3_client_method ( ) FUNCTION: ssl-method SSLv3_server_method ( ) FUNCTION: ssl-method SSLv3_method ( ) FUNCTION: ssl-method TLSv1_client_method ( ) FUNCTION: ssl-method TLSv1_server_method ( ) FUNCTION: ssl-method TLSv1_method ( ) FUNCTION: ssl-method TLSv1_1_method ( ) FUNCTION: ssl-method TLSv1_2_method ( ) ! Creates the context FUNCTION: SSL_CTX* SSL_CTX_new ( ssl-method method ) ! Load the certificates and private keys into the SSL_CTX FUNCTION: int SSL_CTX_use_certificate_chain_file ( SSL_CTX* ctx, c-string file ) ! PEM type FUNCTION: int SSL_CTX_use_certificate ( SSL_CTX* ctx, X509* x ) FUNCTION: SSL* SSL_new ( SSL_CTX* ctx ) FUNCTION: int SSL_set_fd ( SSL* ssl, int fd ) FUNCTION: void SSL_set_bio ( SSL* ssl, void* rbio, void* wbio ) FUNCTION: int SSL_set_session ( SSL* to, SSL_SESSION* session ) FUNCTION: SSL_SESSION* SSL_get_session ( SSL* to ) FUNCTION: SSL_SESSION* SSL_get1_session ( SSL* ssl ) FUNCTION: int SSL_get_error ( SSL* ssl, int ret ) FUNCTION: void SSL_set_connect_state ( SSL* ssl ) FUNCTION: void SSL_set_accept_state ( SSL* ssl ) FUNCTION: void SSL_free ( SSL* ssl ) FUNCTION: int SSL_accept ( SSL* ssl ) FUNCTION: int SSL_connect ( SSL* ssl ) FUNCTION: int SSL_read ( SSL* ssl, void* buf, int num ) FUNCTION: int SSL_write ( SSL* ssl, void* buf, int num ) FUNCTION: long SSL_ctrl ( SSL* ssl, int cmd, long larg, void* parg ) FUNCTION: int SSL_shutdown ( SSL* ssl ) CONSTANT: SSL_SENT_SHUTDOWN 1 CONSTANT: SSL_RECEIVED_SHUTDOWN 2 FUNCTION: int SSL_get_shutdown ( SSL* ssl ) FUNCTION: int SSL_CTX_set_session_id_context ( SSL_CTX* ctx, c-string sid_ctx, uint len ) FUNCTION: void SSL_SESSION_free ( SSL_SESSION* ses ) FUNCTION: int SSL_want ( SSL* ssl ) CONSTANT: SSL_NOTHING 1 CONSTANT: SSL_WRITING 2 CONSTANT: SSL_READING 3 CONSTANT: SSL_X509_LOOKUP 4 FUNCTION: long SSL_get_verify_result ( SSL* ssl ) FUNCTION: X509* SSL_get_peer_certificate ( SSL* s ) FUNCTION: void SSL_CTX_free ( SSL_CTX* ctx ) FUNCTION: void RAND_seed ( void* buf, int num ) FUNCTION: int SSL_set_cipher_list ( SSL* ssl, c-string str ) FUNCTION: int SSL_use_RSAPrivateKey_file ( SSL* ssl, c-string str ) FUNCTION: int SSL_CTX_use_RSAPrivateKey_file ( SSL_CTX* ctx, int type ) FUNCTION: int SSL_use_certificate_file ( SSL* ssl, c-string str, int type ) FUNCTION: int SSL_CTX_load_verify_locations ( SSL_CTX* ctx, c-string CAfile, c-string CApath ) FUNCTION: int SSL_CTX_set_default_verify_paths ( SSL_CTX* ctx ) CONSTANT: SSL_VERIFY_NONE 0 CONSTANT: SSL_VERIFY_PEER 1 CONSTANT: SSL_VERIFY_FAIL_IF_NO_PEER_CERT 2 CONSTANT: SSL_VERIFY_CLIENT_ONCE 4 FUNCTION: void SSL_CTX_set_verify ( SSL_CTX* ctx, int mode, void* callback ) FUNCTION: void SSL_CTX_set_client_CA_list ( SSL_CTX* ctx, SSL* list ) FUNCTION: SSL* SSL_load_client_CA_file ( c-string file ) ! Used to manipulate settings of the SSL_CTX and SSL objects. ! This function should never be called directly FUNCTION: long SSL_CTX_ctrl ( SSL_CTX* ctx, int cmd, long larg, void* parg ) FUNCTION: void SSL_CTX_set_default_passwd_cb ( SSL_CTX* ctx, void* cb ) FUNCTION: void SSL_CTX_set_default_passwd_cb_userdata ( SSL_CTX* ctx, void* u ) FUNCTION: int SSL_CTX_use_PrivateKey_file ( SSL_CTX* ctx, c-string file, int type ) ! Sets the maximum depth for the allowed ctx certificate chain verification FUNCTION: void SSL_CTX_set_verify_depth ( SSL_CTX* ctx, int depth ) ! Sets DH parameters to be used to be dh. ! The key is inherited by all ssl objects created from ctx FUNCTION: void SSL_CTX_set_tmp_dh_callback ( SSL_CTX* ctx, void* dh ) FUNCTION: void SSL_CTX_set_tmp_rsa_callback ( SSL_CTX* ctx, void* rsa ) FUNCTION: void* BIO_f_ssl ( ) : SSL_set_tlsext_host_name ( ctx hostname -- n ) [ SSL_CTRL_SET_TLSEXT_HOSTNAME TLSEXT_NAMETYPE_host_name ] dip SSL_ctrl ; : SSL_CTX_need_tmp_rsa ( ctx -- n ) SSL_CTRL_NEED_TMP_RSA 0 f SSL_CTX_ctrl ; : SSL_CTX_set_tmp_rsa ( ctx rsa -- n ) [ SSL_CTRL_SET_TMP_RSA 0 ] dip SSL_CTX_ctrl ; : SSL_CTX_set_tmp_dh ( ctx dh -- n ) [ SSL_CTRL_SET_TMP_DH 0 ] dip SSL_CTX_ctrl ; : SSL_CTX_set_session_cache_mode ( ctx mode -- n ) [ SSL_CTRL_SET_SESS_CACHE_MODE ] dip f SSL_CTX_ctrl ; CONSTANT: SSL_SESS_CACHE_OFF 0x0000 CONSTANT: SSL_SESS_CACHE_CLIENT 0x0001 CONSTANT: SSL_SESS_CACHE_SERVER 0x0002 CONSTANT: SSL_SESS_CACHE_BOTH flags{ SSL_SESS_CACHE_CLIENT SSL_SESS_CACHE_SERVER } CONSTANT: SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080 CONSTANT: SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100 CONSTANT: SSL_SESS_CACHE_NO_INTERNAL_STORE 0x0200 CONSTANT: SSL_SESS_CACHE_NO_INTERNAL flags{ SSL_SESS_CACHE_NO_INTERNAL_LOOKUP SSL_SESS_CACHE_NO_INTERNAL_STORE } ! =============================================== ! x509_vfy.h ! =============================================== << SYMBOL: verify-messages H{ } clone verify-messages set-global : verify-message ( n -- word ) verify-messages get-global at ; SYNTAX: X509_V_: scan-token "X509_V_" prepend create-word-in scan-number [ 1quotation ( -- value ) define-inline ] [ verify-messages get set-at ] 2bi ; >> X509_V_: OK 0 X509_V_: ERR_UNABLE_TO_GET_ISSUER_CERT 2 X509_V_: ERR_UNABLE_TO_GET_CRL 3 X509_V_: ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4 X509_V_: ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5 X509_V_: ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6 X509_V_: ERR_CERT_SIGNATURE_FAILURE 7 X509_V_: ERR_CRL_SIGNATURE_FAILURE 8 X509_V_: ERR_CERT_NOT_YET_VALID 9 X509_V_: ERR_CERT_HAS_EXPIRED 10 X509_V_: ERR_CRL_NOT_YET_VALID 11 X509_V_: ERR_CRL_HAS_EXPIRED 12 X509_V_: ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13 X509_V_: ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14 X509_V_: ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15 X509_V_: ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16 X509_V_: ERR_OUT_OF_MEM 17 X509_V_: ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18 X509_V_: ERR_SELF_SIGNED_CERT_IN_CHAIN 19 X509_V_: ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20 X509_V_: ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21 X509_V_: ERR_CERT_CHAIN_TOO_LONG 22 X509_V_: ERR_CERT_REVOKED 23 X509_V_: ERR_INVALID_CA 24 X509_V_: ERR_PATH_LENGTH_EXCEEDED 25 X509_V_: ERR_INVALID_PURPOSE 26 X509_V_: ERR_CERT_UNTRUSTED 27 X509_V_: ERR_CERT_REJECTED 28 X509_V_: ERR_SUBJECT_ISSUER_MISMATCH 29 X509_V_: ERR_AKID_SKID_MISMATCH 30 X509_V_: ERR_AKID_ISSUER_SERIAL_MISMATCH 31 X509_V_: ERR_KEYUSAGE_NO_CERTSIGN 32 X509_V_: ERR_UNABLE_TO_GET_CRL_ISSUER 33 X509_V_: ERR_UNHANDLED_CRITICAL_EXTENSION 34 X509_V_: ERR_KEYUSAGE_NO_CRL_SIGN 35 X509_V_: ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36 X509_V_: ERR_INVALID_NON_CA 37 X509_V_: ERR_PROXY_PATH_LENGTH_EXCEEDED 38 X509_V_: ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39 X509_V_: ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40 X509_V_: ERR_APPLICATION_VERIFICATION 50 ! =============================================== ! obj_mac.h ! =============================================== CONSTANT: NID_commonName 13 CONSTANT: NID_subject_alt_name 85 CONSTANT: NID_issuer_alt_name 86 ! =============================================== ! On Windows, some of the functions making up libressl ! are placed in libcrypto-37.dll ! =============================================== << os windows? [ "libssl-windows" [ "libcrypto-37.dll" cdecl add-library ] [ current-library set ] bi ] when >> ! x509.h FUNCTION: int X509_NAME_get_text_by_NID ( X509_NAME* name, int nid, void* buf, int len ) FUNCTION: int X509_get_ext_by_NID ( X509* a, int nid, int lastpos ) FUNCTION: void* X509_get_ext_d2i ( X509 *a, int nid, int* crit, int* idx ) FUNCTION: X509_NAME* X509_get_issuer_name ( X509* a ) FUNCTION: X509_NAME* X509_get_subject_name ( X509* a ) FUNCTION: int X509_check_trust ( X509* a, int id, int flags ) FUNCTION: X509_EXTENSION* X509_get_ext ( X509* a, int loc ) FUNCTION: void X509_free ( X509 *a ) DESTRUCTOR: X509_free C-TYPE: X509_STORE FUNCTION: X509_STORE* X509_STORE_new ( ) CONSTANT: X509_R_CERT_ALREADY_IN_HASH_TABLE 101 FUNCTION: int X509_STORE_add_cert ( X509_STORE* ctx, X509* x ) ! X509_NAME_oneline could return c-string but needs to be freed with OPENSSL_free FUNCTION: char* X509_NAME_oneline ( X509_NAME* a, char* buf, int size ) FUNCTION: X509* d2i_X509 ( X509** px, uchar** in, int len ) FUNCTION: int i2d_X509 ( X509* x, uchar** out ) ! FUNCTION: X509* d2i_X509_bio ( BIO* bp, X509** x ) ! FUNCTION: X509* d2i_X509_fp ( FILE* fp, X509** x ) ! FUNCTION: int i2d_X509_bio ( BIO* bp, X509* x ) ! FUNCTION: int i2d_X509_fp ( FILE* fp, X509* x ) FUNCTION: int i2d_re_X509_tbs ( X509* x, uchar** out ) ! stack.h FUNCTION: int sk_num ( _STACK *s ) FUNCTION: void* sk_value ( _STACK *s, int v )