Description | uses | Classes, Interfaces, Objects and Records | Functions and Procedures | Types | Constants | Variables |
OpenSSL support
This unit is Pascal interface to OpenSSL library (used by ssl_openssl unit). OpenSSL is loaded dynamicly on-demand. If this library is not found in system, requested OpenSSL function just return errorcode.
Name | Description |
---|---|
packed record des_ks_struct |
function SslGetError(s: PSSL; ret_code: Integer):Integer; |
function SslLibraryInit:Integer; |
procedure SslLoadErrorStrings; |
function SslCtxSetCipherList(arg0: PSSL_CTX; var str: AnsiString):Integer; |
function SslCtxNew(meth: PSSL_METHOD):PSSL_CTX; |
procedure SslCtxFree(arg0: PSSL_CTX); |
function SslSetFd(s: PSSL; fd: Integer):Integer; |
function SslMethodV2:PSSL_METHOD; |
function SslMethodV3:PSSL_METHOD; |
function SslMethodTLSV1:PSSL_METHOD; |
function SslMethodV23:PSSL_METHOD; |
function SslCtxUsePrivateKey(ctx: PSSL_CTX; pkey: SslPtr):Integer; |
function SslCtxUsePrivateKeyASN1(pk: integer; ctx: PSSL_CTX; d: AnsiString; len: integer):Integer; |
function SslCtxUsePrivateKeyFile(ctx: PSSL_CTX; const _file: AnsiString; _type: Integer):Integer; |
function SslCtxUseCertificate(ctx: PSSL_CTX; x: SslPtr):Integer; |
function SslCtxUseCertificateASN1(ctx: PSSL_CTX; len: integer; d: AnsiString):Integer; |
function SslCtxUseCertificateFile(ctx: PSSL_CTX; const _file: AnsiString; _type: Integer):Integer; |
function SslCtxUseCertificateChainFile(ctx: PSSL_CTX; const _file: AnsiString):Integer; |
function SslCtxCheckPrivateKeyFile(ctx: PSSL_CTX):Integer; |
procedure SslCtxSetDefaultPasswdCb(ctx: PSSL_CTX; cb: PPasswdCb); |
procedure SslCtxSetDefaultPasswdCbUserdata(ctx: PSSL_CTX; u: SslPtr); |
function SslCtxLoadVerifyLocations(ctx: PSSL_CTX; const CAfile: AnsiString; const CApath: AnsiString):Integer; |
function SslCtxCtrl(ctx: PSSL_CTX; cmd: integer; larg: integer; parg: SslPtr): integer; |
function SslNew(ctx: PSSL_CTX):PSSL; |
procedure SslFree(ssl: PSSL); |
function SslAccept(ssl: PSSL):Integer; |
function SslConnect(ssl: PSSL):Integer; |
function SslShutdown(ssl: PSSL):Integer; |
function SslRead(ssl: PSSL; buf: SslPtr; num: Integer):Integer; |
function SslPeek(ssl: PSSL; buf: SslPtr; num: Integer):Integer; |
function SslWrite(ssl: PSSL; buf: SslPtr; num: Integer):Integer; |
function SslPending(ssl: PSSL):Integer; |
function SslGetVersion(ssl: PSSL):AnsiString; |
function SslGetPeerCertificate(ssl: PSSL):PX509; |
procedure SslCtxSetVerify(ctx: PSSL_CTX; mode: Integer; arg2: PFunction); |
function SSLGetCurrentCipher(s: PSSL):SslPtr; |
function SSLCipherGetName(c: SslPtr): AnsiString; |
function SSLCipherGetBits(c: SslPtr; var alg_bits: Integer):Integer; |
function SSLGetVerifyResult(ssl: PSSL):Integer; |
function SSLCtrl(ssl: PSSL; cmd: integer; larg: integer; parg: SslPtr):Integer; |
function X509New: PX509; |
procedure X509Free(x: PX509); |
function X509NameOneline(a: PX509_NAME; var buf: AnsiString; size: Integer):AnsiString; |
function X509GetSubjectName(a: PX509):PX509_NAME; |
function X509GetIssuerName(a: PX509):PX509_NAME; |
function X509NameHash(x: PX509_NAME):Cardinal; |
function X509Digest(data: PX509; _type: PEVP_MD; md: AnsiString; var len: Integer):Integer; |
function X509print(b: PBIO; a: PX509): integer; |
function X509SetVersion(x: PX509; version: integer): integer; |
function X509SetPubkey(x: PX509; pkey: EVP_PKEY): integer; |
function X509SetIssuerName(x: PX509; name: PX509_NAME): integer; |
function X509NameAddEntryByTxt(name: PX509_NAME; field: Ansistring; _type: integer; bytes: Ansistring; len, loc, _set: integer): integer; |
function X509Sign(x: PX509; pkey: EVP_PKEY; const md: PEVP_MD): integer; |
function X509GmtimeAdj(s: PASN1_UTCTIME; adj: integer): PASN1_UTCTIME; |
function X509SetNotBefore(x: PX509; tm: PASN1_UTCTIME): integer; |
function X509SetNotAfter(x: PX509; tm: PASN1_UTCTIME): integer; |
function X509GetSerialNumber(x: PX509): PASN1_INTEGER; |
function EvpPkeyNew: EVP_PKEY; |
procedure EvpPkeyFree(pk: EVP_PKEY); |
function EvpPkeyAssign(pkey: EVP_PKEY; _type: integer; key: Prsa): integer; |
function EvpGetDigestByName(Name: AnsiString): PEVP_MD; |
procedure EVPcleanup; |
function SSLeayversion(t: integer): Ansistring; |
procedure ErrErrorString(e: integer; var buf: Ansistring; len: integer); |
function ErrGetError: integer; |
procedure ErrClearError; |
procedure ErrFreeStrings; |
procedure ErrRemoveState(pid: integer); |
procedure OPENSSLaddallalgorithms; |
procedure CRYPTOcleanupAllExData; |
procedure RandScreen; |
function BioNew(b: PBIO_METHOD): PBIO; |
procedure BioFreeAll(b: PBIO); |
function BioSMem: PBIO_METHOD; |
function BioCtrlPending(b: PBIO): integer; |
function BioRead(b: PBIO; var Buf: AnsiString; Len: integer): integer; |
function BioWrite(b: PBIO; Buf: AnsiString; Len: integer): integer; |
function d2iPKCS12bio(b:PBIO; Pkcs12: SslPtr): SslPtr; |
function PKCS12parse(p12: SslPtr; pass: Ansistring; var pkey, cert, ca: SslPtr): integer; |
procedure PKCS12free(p12: SslPtr); |
function RsaGenerateKey(bits, e: integer; callback: PFunction; cb_arg: SslPtr): PRSA; |
function Asn1UtctimeNew: PASN1_UTCTIME; |
procedure Asn1UtctimeFree(a: PASN1_UTCTIME); |
function Asn1IntegerSet(a: PASN1_INTEGER; v: integer): integer; |
function Asn1IntegerGet(a: PASN1_INTEGER): integer; |
function i2dX509bio(b: PBIO; x: PX509): integer; |
function d2iX509bio(b:PBIO; x:PX509): PX509; |
function PEMReadBioX509(b:PBIO; x:PSslPtr; callback:PFunction; cb_arg: SslPtr): PX509; |
procedure SkX509PopFree(st: PSTACK; func: TSkPopFreeFunc); |
function i2dPrivateKeyBio(b: PBIO; pkey: EVP_PKEY): integer; |
procedure DESsetoddparity(Key: des_cblock); |
function DESsetkeychecked(key: des_cblock; schedule: des_key_schedule): Integer; |
procedure DESecbencrypt(Input: des_cblock; output: des_cblock; ks: des_key_schedule; enc: Integer); |
function IsSSLloaded: Boolean; |
function InitSSLInterface: Boolean; |
function DestroySSLInterface: Boolean; |
SslPtr = Pointer; |
PSslPtr = ˆSslPtr; |
PSSL_CTX = SslPtr; |
PSSL = SslPtr; |
PSSL_METHOD = SslPtr; |
PX509 = SslPtr; |
PX509_NAME = SslPtr; |
PEVP_MD = SslPtr; |
PInteger = ˆInteger; |
PBIO_METHOD = SslPtr; |
PBIO = SslPtr; |
EVP_PKEY = SslPtr; |
PRSA = SslPtr; |
PASN1_UTCTIME = SslPtr; |
PASN1_INTEGER = SslPtr; |
PPasswdCb = SslPtr; |
PFunction = procedure; |
PSTACK = SslPtr; |
TSkPopFreeFunc = procedure(p:SslPtr); cdecl; |
TX509Free = procedure(x: PX509); cdecl; |
DES_cblock = array[0..7] of Byte; |
PDES_cblock = ˆDES_cblock; |
des_key_schedule = array[1..16] of des_ks_struct; |
DLLSSLName: string = 'ssleay32.dll'; |
DLLSSLName2: string = 'libssl32.dll'; |
DLLUtilName: string = 'libeay32.dll'; |
SSLLibHandle: TLibHandle = 0; |
SSLUtilHandle: TLibHandle = 0; |
SSLLibFile: string = ''; |
SSLUtilFile: string = ''; |
_X509Free: TX509Free = nil; |
function SslGetError(s: PSSL; ret_code: Integer):Integer; |
function SslLibraryInit:Integer; |
procedure SslLoadErrorStrings; |
function SslCtxSetCipherList(arg0: PSSL_CTX; var str: AnsiString):Integer; |
function SslCtxNew(meth: PSSL_METHOD):PSSL_CTX; |
procedure SslCtxFree(arg0: PSSL_CTX); |
function SslSetFd(s: PSSL; fd: Integer):Integer; |
function SslMethodV2:PSSL_METHOD; |
function SslMethodV3:PSSL_METHOD; |
function SslMethodTLSV1:PSSL_METHOD; |
function SslMethodV23:PSSL_METHOD; |
function SslCtxUsePrivateKey(ctx: PSSL_CTX; pkey: SslPtr):Integer; |
function SslCtxUsePrivateKeyASN1(pk: integer; ctx: PSSL_CTX; d: AnsiString; len: integer):Integer; |
function SslCtxUsePrivateKeyFile(ctx: PSSL_CTX; const _file: AnsiString; _type: Integer):Integer; |
function SslCtxUseCertificate(ctx: PSSL_CTX; x: SslPtr):Integer; |
function SslCtxUseCertificateASN1(ctx: PSSL_CTX; len: integer; d: AnsiString):Integer; |
function SslCtxUseCertificateFile(ctx: PSSL_CTX; const _file: AnsiString; _type: Integer):Integer; |
function SslCtxUseCertificateChainFile(ctx: PSSL_CTX; const _file: AnsiString):Integer; |
function SslCtxCheckPrivateKeyFile(ctx: PSSL_CTX):Integer; |
procedure SslCtxSetDefaultPasswdCb(ctx: PSSL_CTX; cb: PPasswdCb); |
procedure SslCtxSetDefaultPasswdCbUserdata(ctx: PSSL_CTX; u: SslPtr); |
function SslCtxLoadVerifyLocations(ctx: PSSL_CTX; const CAfile: AnsiString; const CApath: AnsiString):Integer; |
function SslCtxCtrl(ctx: PSSL_CTX; cmd: integer; larg: integer; parg: SslPtr): integer; |
function SslNew(ctx: PSSL_CTX):PSSL; |
procedure SslFree(ssl: PSSL); |
function SslAccept(ssl: PSSL):Integer; |
function SslConnect(ssl: PSSL):Integer; |
function SslShutdown(ssl: PSSL):Integer; |
function SslRead(ssl: PSSL; buf: SslPtr; num: Integer):Integer; |
function SslPeek(ssl: PSSL; buf: SslPtr; num: Integer):Integer; |
function SslWrite(ssl: PSSL; buf: SslPtr; num: Integer):Integer; |
function SslPending(ssl: PSSL):Integer; |
function SslGetVersion(ssl: PSSL):AnsiString; |
function SslGetPeerCertificate(ssl: PSSL):PX509; |
procedure SslCtxSetVerify(ctx: PSSL_CTX; mode: Integer; arg2: PFunction); |
function SSLGetCurrentCipher(s: PSSL):SslPtr; |
function SSLCipherGetName(c: SslPtr): AnsiString; |
function SSLCipherGetBits(c: SslPtr; var alg_bits: Integer):Integer; |
function SSLGetVerifyResult(ssl: PSSL):Integer; |
function SSLCtrl(ssl: PSSL; cmd: integer; larg: integer; parg: SslPtr):Integer; |
function X509New: PX509; |
procedure X509Free(x: PX509); |
function X509NameOneline(a: PX509_NAME; var buf: AnsiString; size: Integer):AnsiString; |
function X509GetSubjectName(a: PX509):PX509_NAME; |
function X509GetIssuerName(a: PX509):PX509_NAME; |
function X509NameHash(x: PX509_NAME):Cardinal; |
function X509Digest(data: PX509; _type: PEVP_MD; md: AnsiString; var len: Integer):Integer; |
function X509print(b: PBIO; a: PX509): integer; |
function X509SetVersion(x: PX509; version: integer): integer; |
function X509SetPubkey(x: PX509; pkey: EVP_PKEY): integer; |
function X509SetIssuerName(x: PX509; name: PX509_NAME): integer; |
function X509NameAddEntryByTxt(name: PX509_NAME; field: Ansistring; _type: integer; bytes: Ansistring; len, loc, _set: integer): integer; |
function X509Sign(x: PX509; pkey: EVP_PKEY; const md: PEVP_MD): integer; |
function X509GmtimeAdj(s: PASN1_UTCTIME; adj: integer): PASN1_UTCTIME; |
function X509SetNotBefore(x: PX509; tm: PASN1_UTCTIME): integer; |
function X509SetNotAfter(x: PX509; tm: PASN1_UTCTIME): integer; |
function X509GetSerialNumber(x: PX509): PASN1_INTEGER; |
function EvpPkeyNew: EVP_PKEY; |
procedure EvpPkeyFree(pk: EVP_PKEY); |
function EvpPkeyAssign(pkey: EVP_PKEY; _type: integer; key: Prsa): integer; |
function EvpGetDigestByName(Name: AnsiString): PEVP_MD; |
procedure EVPcleanup; |
function SSLeayversion(t: integer): Ansistring; |
procedure ErrErrorString(e: integer; var buf: Ansistring; len: integer); |
function ErrGetError: integer; |
procedure ErrClearError; |
procedure ErrFreeStrings; |
procedure ErrRemoveState(pid: integer); |
procedure OPENSSLaddallalgorithms; |
procedure CRYPTOcleanupAllExData; |
procedure RandScreen; |
function BioNew(b: PBIO_METHOD): PBIO; |
procedure BioFreeAll(b: PBIO); |
function BioSMem: PBIO_METHOD; |
function BioCtrlPending(b: PBIO): integer; |
function BioRead(b: PBIO; var Buf: AnsiString; Len: integer): integer; |
function BioWrite(b: PBIO; Buf: AnsiString; Len: integer): integer; |
function d2iPKCS12bio(b:PBIO; Pkcs12: SslPtr): SslPtr; |
function PKCS12parse(p12: SslPtr; pass: Ansistring; var pkey, cert, ca: SslPtr): integer; |
procedure PKCS12free(p12: SslPtr); |
function RsaGenerateKey(bits, e: integer; callback: PFunction; cb_arg: SslPtr): PRSA; |
function Asn1UtctimeNew: PASN1_UTCTIME; |
procedure Asn1UtctimeFree(a: PASN1_UTCTIME); |
function Asn1IntegerSet(a: PASN1_INTEGER; v: integer): integer; |
function Asn1IntegerGet(a: PASN1_INTEGER): integer; |
function i2dX509bio(b: PBIO; x: PX509): integer; |
function d2iX509bio(b:PBIO; x:PX509): PX509; |
function PEMReadBioX509(b:PBIO; x:PSslPtr; callback:PFunction; cb_arg: SslPtr): PX509; |
procedure SkX509PopFree(st: PSTACK; func: TSkPopFreeFunc); |
function i2dPrivateKeyBio(b: PBIO; pkey: EVP_PKEY): integer; |
procedure DESsetoddparity(Key: des_cblock); |
function DESsetkeychecked(key: des_cblock; schedule: des_key_schedule): Integer; |
procedure DESecbencrypt(Input: des_cblock; output: des_cblock; ks: des_key_schedule; enc: Integer); |
function IsSSLloaded: Boolean; |
function InitSSLInterface: Boolean; |
function DestroySSLInterface: Boolean; |
SslPtr = Pointer; |
PSslPtr = ˆSslPtr; |
PSSL_CTX = SslPtr; |
PSSL = SslPtr; |
PSSL_METHOD = SslPtr; |
PX509 = SslPtr; |
PX509_NAME = SslPtr; |
PEVP_MD = SslPtr; |
PInteger = ˆInteger; |
PBIO_METHOD = SslPtr; |
PBIO = SslPtr; |
EVP_PKEY = SslPtr; |
PRSA = SslPtr; |
PASN1_UTCTIME = SslPtr; |
PASN1_INTEGER = SslPtr; |
PPasswdCb = SslPtr; |
PFunction = procedure; |
PSTACK = SslPtr; |
TSkPopFreeFunc = procedure(p:SslPtr); cdecl; |
TX509Free = procedure(x: PX509); cdecl; |
DES_cblock = array[0..7] of Byte; |
PDES_cblock = ˆDES_cblock; |
des_key_schedule = array[1..16] of des_ks_struct; |
EVP_MAX_MD_SIZE = 16 + 20; |
SSL_ERROR_NONE = 0; |
SSL_ERROR_SSL = 1; |
SSL_ERROR_WANT_READ = 2; |
SSL_ERROR_WANT_WRITE = 3; |
SSL_ERROR_WANT_X509_LOOKUP = 4; |
SSL_ERROR_SYSCALL = 5; |
SSL_ERROR_ZERO_RETURN = 6; |
SSL_ERROR_WANT_CONNECT = 7; |
SSL_ERROR_WANT_ACCEPT = 8; |
SSL_OP_NO_SSLv2 = $01000000; |
SSL_OP_NO_SSLv3 = $02000000; |
SSL_OP_NO_TLSv1 = $04000000; |
SSL_OP_ALL = $000FFFFF; |
SSL_VERIFY_NONE = $00; |
SSL_VERIFY_PEER = $01; |
OPENSSL_DES_DECRYPT = 0; |
OPENSSL_DES_ENCRYPT = 1; |
X509_V_OK = 0; |
X509_V_ILLEGAL = 1; |
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_APPLICATION_VERIFICATION = 50; |
SSL_FILETYPE_ASN1 = 2; |
SSL_FILETYPE_PEM = 1; |
EVP_PKEY_RSA = 6; |
SSL_CTRL_SET_TLSEXT_HOSTNAME = 55; |
TLSEXT_NAMETYPE_host_name = 0; |
DLLSSLName: string = 'ssleay32.dll'; |
DLLSSLName2: string = 'libssl32.dll'; |
DLLUtilName: string = 'libeay32.dll'; |
SSLLibHandle: TLibHandle = 0; |
SSLUtilHandle: TLibHandle = 0; |
SSLLibFile: string = ''; |
SSLUtilFile: string = ''; |
_X509Free: TX509Free = nil; |