ircbot/deimos/openssl/err.d

392 lines
17 KiB
D

/* crypto/err/err.h */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young (eay@cryptsoft.com).
* The implementation was written so as to conform with Netscapes SSL.
*
* This library is free for commercial and non-commercial use as long as
* the following conditions are aheared to. The following conditions
* apply to all code found in this distribution, be it the RC4, RSA,
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
* included with this distribution is covered by the same copyright terms
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
*
* Copyright remains Eric Young's, and as such any Copyright notices in
* the code are not to be removed.
* If this package is used in a product, Eric Young should be given attribution
* as the author of the parts of the library used.
* This can be in the form of a textual message at program startup or
* in documentation (online or textual) provided with the package.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* "This product includes cryptographic software written by
* Eric Young (eay@cryptsoft.com)"
* The word 'cryptographic' can be left out if the rouines from the library
* being used are not cryptographic related :-).
* 4. If you include any Windows specific code (or a derivative thereof) from
* the apps directory (application code) you must include an acknowledgement:
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
*
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* The licence and distribution terms for any publically available version or
* derivative of this code cannot be changed. i.e. this code cannot simply be
* copied and put under another distribution licence
* [including the GNU Public Licence.]
*/
/* ====================================================================
* Copyright (c) 1998-2006 The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. All advertising materials mentioning features or use of this
* software must display the following acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
*
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
* endorse or promote products derived from this software without
* prior written permission. For written permission, please contact
* openssl-core@openssl.org.
*
* 5. Products derived from this software may not be called "OpenSSL"
* nor may "OpenSSL" appear in their names without prior written
* permission of the OpenSSL Project.
*
* 6. Redistributions of any form whatsoever must retain the following
* acknowledgment:
* "This product includes software developed by the OpenSSL Project
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
*
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
* ====================================================================
*
* This product includes cryptographic software written by Eric Young
* (eay@cryptsoft.com). This product includes software written by Tim
* Hudson (tjh@cryptsoft.com).
*
*/
module deimos.openssl.err;
import deimos.openssl._d_util;
public import deimos.openssl.e_os2;
version(OPENSSL_NO_FP_API) {} else {
import core.stdc.stdio;
import core.stdc.stdlib;
}
public import deimos.openssl.ossl_typ;
version(OPENSSL_NO_BIO) {} else {
public import deimos.openssl.bio;
}
version(OPENSSL_NO_LHASH) {} else {
public import deimos.openssl.lhash;
}
import core.vararg : va_list;
extern (C):
nothrow:
// #ifndef OPENSSL_NO_ERR
// #define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,d,e)
// #else
// #define ERR_PUT_error(a,b,c,d,e) ERR_put_error(a,b,c,NULL,0)
// #endif
version (OPENSSL_NO_ERR) {
void ERR_PUT_error()(int a, int b,int c,const(char)* d,int e) {
ERR_put_error(a,b,c,null,0);
}
} else {
alias ERR_put_error ERR_PUT_error;
}
// #include <errno.h>
enum ERR_TXT_MALLOCED = 0x01;
enum ERR_TXT_STRING = 0x02;
enum ERR_FLAG_MARK = 0x01;
enum ERR_NUM_ERRORS = 16;
struct err_state_st {
CRYPTO_THREADID tid;
int[ERR_NUM_ERRORS] err_flags;
c_ulong[ERR_NUM_ERRORS] err_buffer;
char*[ERR_NUM_ERRORS] err_data;
int[ERR_NUM_ERRORS] err_data_flags;
const(char)*[ERR_NUM_ERRORS] err_file;
int[ERR_NUM_ERRORS] err_line;
int top,bottom;
}
alias err_state_st ERR_STATE;
/* library */
enum ERR_LIB_NONE = 1;
enum ERR_LIB_SYS = 2;
enum ERR_LIB_BN = 3;
enum ERR_LIB_RSA = 4;
enum ERR_LIB_DH = 5;
enum ERR_LIB_EVP = 6;
enum ERR_LIB_BUF = 7;
enum ERR_LIB_OBJ = 8;
enum ERR_LIB_PEM = 9;
enum ERR_LIB_DSA = 10;
enum ERR_LIB_X509 = 11;
/* enum ERR_LIB_METH = 12; */
enum ERR_LIB_ASN1 = 13;
enum ERR_LIB_CONF = 14;
enum ERR_LIB_CRYPTO = 15;
enum ERR_LIB_EC = 16;
enum ERR_LIB_SSL = 20;
/* enum ERR_LIB_SSL23 = 21; */
/* enum ERR_LIB_SSL2 = 22; */
/* enum ERR_LIB_SSL3 = 23; */
/* enum ERR_LIB_RSAREF = 30; */
/* enum ERR_LIB_PROXY = 31; */
enum ERR_LIB_BIO = 32;
enum ERR_LIB_PKCS7 = 33;
enum ERR_LIB_X509V3 = 34;
enum ERR_LIB_PKCS12 = 35;
enum ERR_LIB_RAND = 36;
enum ERR_LIB_DSO = 37;
enum ERR_LIB_ENGINE = 38;
enum ERR_LIB_OCSP = 39;
enum ERR_LIB_UI = 40;
enum ERR_LIB_COMP = 41;
enum ERR_LIB_ECDSA = 42;
enum ERR_LIB_ECDH = 43;
enum ERR_LIB_STORE = 44;
enum ERR_LIB_FIPS = 45;
enum ERR_LIB_CMS = 46;
enum ERR_LIB_TS = 47;
enum ERR_LIB_HMAC = 48;
enum ERR_LIB_JPAKE = 49;
enum ERR_LIB_USER = 128;
void SYSerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_SYS,f,r,file,line); }
void BNerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_BN,f,r,file,line); }
void RSAerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_RSA,f,r,file,line); }
void DHerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_DH,f,r,file,line); }
void EVPerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_EVP,f,r,file,line); }
void BUFerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_BUF,f,r,file,line); }
void OBJerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_OBJ,f,r,file,line); }
void PEMerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_PEM,f,r,file,line); }
void DSAerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_DSA,f,r,file,line); }
void X509err_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_X509,f,r,file,line); }
void ASN1err_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_ASN1,f,r,file,line); }
void CONFerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_CONF,f,r,file,line); }
void CRYPTOerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_CRYPTO,f,r,file,line); }
void ECerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_EC,f,r,file,line); }
void SSLerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_SSL,f,r,file,line); }
void BIOerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_BIO,f,r,file,line); }
void PKCS7err_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_PKCS7,f,r,file,line); }
void X509V3err_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_X509V3,f,r,file,line); }
void PKCS12err_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_PKCS12,f,r,file,line); }
void RANDerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_RAND,f,r,file,line); }
void DSOerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_DSO,f,r,file,line); }
void ENGINEerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_ENGINE,f,r,file,line); }
void OCSPerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_OCSP,f,r,file,line); }
void UIerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_UI,f,r,file,line); }
void COMPerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_COMP,f,r,file,line); }
void ECDSAerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_ECDSA,f,r,file,line); }
void ECDHerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_ECDH,f,r,file,line); }
void STOREerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_STORE,f,r,file,line); }
void FIPSerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_FIPS,f,r,file,line); }
void CMSerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_CMS,f,r,file,line); }
void TSerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_TS,f,r,file,line); }
void HMACerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_HMAC,f,r,file,line); }
void JPAKEerr_err(string file = __FILE__, size_t line = __LINE__)(int f, int r){ ERR_PUT_error(ERR_LIB_JPAKE,f,r,file,line); }
/* Borland C seems too stupid to be able to shift and do longs in
* the pre-processor :-( */
auto ERR_PACK()(c_ulong l, c_ulong f, c_ulong r) {
return ((((l)&0xffL)*0x1000000)|
(((f)&0xfffL)*0x1000)|
(((r)&0xfffL)));
}
auto ERR_GET_LIB()(c_ulong l) { return cast(int)(((l)>>24L)&0xffL); }
auto ERR_GET_FUNC()(c_ulong l) { return cast(int)(((l)>>12L)&0xfffL); }
auto ERR_GET_REASON()(c_ulong l) { return cast(int)((l)&0xfffL); }
auto ERR_FATAL_ERROR()(c_ulong l) { return cast(int)((l)&ERR_R_FATAL); }
/* OS functions */
enum SYS_F_FOPEN = 1;
enum SYS_F_CONNECT = 2;
enum SYS_F_GETSERVBYNAME = 3;
enum SYS_F_SOCKET = 4;
enum SYS_F_IOCTLSOCKET = 5;
enum SYS_F_BIND = 6;
enum SYS_F_LISTEN = 7;
enum SYS_F_ACCEPT = 8;
enum SYS_F_WSASTARTUP = 9; /* Winsock stuff */
enum SYS_F_OPENDIR = 10;
enum SYS_F_FREAD = 11;
/* reasons */
alias ERR_LIB_SYS ERR_R_SYS_LIB ; /* 2 */
alias ERR_LIB_BN ERR_R_BN_LIB ; /* 3 */
alias ERR_LIB_RSA ERR_R_RSA_LIB ; /* 4 */
alias ERR_LIB_DH ERR_R_DH_LIB ; /* 5 */
alias ERR_LIB_EVP ERR_R_EVP_LIB ; /* 6 */
alias ERR_LIB_BUF ERR_R_BUF_LIB ; /* 7 */
alias ERR_LIB_OBJ ERR_R_OBJ_LIB ; /* 8 */
alias ERR_LIB_PEM ERR_R_PEM_LIB ; /* 9 */
alias ERR_LIB_DSA ERR_R_DSA_LIB ; /* 10 */
alias ERR_LIB_X509 ERR_R_X509_LIB ; /* 11 */
alias ERR_LIB_ASN1 ERR_R_ASN1_LIB ; /* 13 */
alias ERR_LIB_CONF ERR_R_CONF_LIB ; /* 14 */
alias ERR_LIB_CRYPTO ERR_R_CRYPTO_LIB ; /* 15 */
alias ERR_LIB_EC ERR_R_EC_LIB ; /* 16 */
alias ERR_LIB_SSL ERR_R_SSL_LIB ; /* 20 */
alias ERR_LIB_BIO ERR_R_BIO_LIB ; /* 32 */
alias ERR_LIB_PKCS7 ERR_R_PKCS7_LIB ; /* 33 */
alias ERR_LIB_X509V3 ERR_R_X509V3_LIB ; /* 34 */
alias ERR_LIB_PKCS12 ERR_R_PKCS12_LIB ; /* 35 */
alias ERR_LIB_RAND ERR_R_RAND_LIB ; /* 36 */
alias ERR_LIB_DSO ERR_R_DSO_LIB ; /* 37 */
alias ERR_LIB_ENGINE ERR_R_ENGINE_LIB ; /* 38 */
alias ERR_LIB_OCSP ERR_R_OCSP_LIB ; /* 39 */
alias ERR_LIB_UI ERR_R_UI_LIB ; /* 40 */
alias ERR_LIB_COMP ERR_R_COMP_LIB ; /* 41 */
alias ERR_LIB_ECDSA ERR_R_ECDSA_LIB ; /* 42 */
alias ERR_LIB_ECDH ERR_R_ECDH_LIB ; /* 43 */
alias ERR_LIB_STORE ERR_R_STORE_LIB ; /* 44 */
alias ERR_LIB_TS ERR_R_TS_LIB ; /* 45 */
enum ERR_R_NESTED_ASN1_ERROR = 58;
enum ERR_R_BAD_ASN1_OBJECT_HEADER = 59;
enum ERR_R_BAD_GET_ASN1_OBJECT_CALL = 60;
enum ERR_R_EXPECTING_AN_ASN1_SEQUENCE = 61;
enum ERR_R_ASN1_LENGTH_MISMATCH = 62;
enum ERR_R_MISSING_ASN1_EOS = 63;
/* fatal error */
enum ERR_R_FATAL = 64;
enum ERR_R_MALLOC_FAILURE = (1|ERR_R_FATAL);
enum ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED = (2|ERR_R_FATAL);
enum ERR_R_PASSED_NULL_PARAMETER = (3|ERR_R_FATAL);
enum ERR_R_INTERNAL_ERROR = (4|ERR_R_FATAL);
enum ERR_R_DISABLED = (5|ERR_R_FATAL);
/* 99 is the maximum possible ERR_R_... code, higher values
* are reserved for the individual libraries */
struct ERR_string_data_st {
c_ulong error;
const(char)* string;
}
alias ERR_string_data_st ERR_STRING_DATA;
void ERR_put_error(int lib, int func,int reason,const(char)* file,int line);
void ERR_set_error_data(char* data,int flags);
c_ulong ERR_get_error();
c_ulong ERR_get_error_line(const(char)** file,int* line);
c_ulong ERR_get_error_line_data(const(char)** file,int* line,
const(char)** data, int* flags);
c_ulong ERR_peek_error();
c_ulong ERR_peek_error_line(const(char)** file,int* line);
c_ulong ERR_peek_error_line_data(const(char)** file,int* line,
const(char)** data,int* flags);
c_ulong ERR_peek_last_error();
c_ulong ERR_peek_last_error_line(const(char)** file,int* line);
c_ulong ERR_peek_last_error_line_data(const(char)** file,int* line,
const(char)** data,int* flags);
void ERR_clear_error();
char* ERR_error_string(c_ulong e,char* buf);
void ERR_error_string_n(c_ulong e, char* buf, size_t len);
const(char)* ERR_lib_error_string(c_ulong e);
const(char)* ERR_func_error_string(c_ulong e);
const(char)* ERR_reason_error_string(c_ulong e);
void ERR_print_errors_cb(ExternC!(int function(const(char)* str, size_t len, void* u)) cb,
void* u);
version(OPENSSL_NO_FP_API) {} else {
void ERR_print_errors_fp(FILE* fp);
}
version(OPENSSL_NO_BIO) {} else {
void ERR_print_errors(BIO* bp);
}
void ERR_add_error_data(int num, ...);
void ERR_add_error_vdata(int num, va_list args);
void ERR_load_strings(int lib,ERR_STRING_DATA[] str);
void ERR_unload_strings(int lib,ERR_STRING_DATA[] str);
void ERR_load_ERR_strings();
void ERR_load_crypto_strings();
void ERR_free_strings();
void ERR_remove_thread_state(const(CRYPTO_THREADID)* tid);
version(OPENSSL_NO_DEPRECATED) {} else {
void ERR_remove_state(c_ulong pid); /* if zero we look it up */
}
ERR_STATE* ERR_get_state();
version(OPENSSL_NO_LHASH) {} else {
LHASH_OF!(ERR_STRING_DATA) *ERR_get_string_table();
LHASH_OF!(ERR_STATE) *ERR_get_err_state_table();
void ERR_release_err_state_table(LHASH_OF!(ERR_STATE) **hash);
}
int ERR_get_next_error_library();
int ERR_set_mark();
int ERR_pop_to_mark();
/* Already defined in ossl_typ.h */
/* typedef st_ERR_FNS ERR_FNS; */
/* An application can use this function and provide the return value to loaded
* modules that should use the application's ERR state/functionality */
const(ERR_FNS)* ERR_get_implementation();
/* A loaded module should call this function prior to any ERR operations using
* the application's "ERR_FNS". */
int ERR_set_implementation(const(ERR_FNS)* fns);