Files
harbour-core/contrib/hbssl/hbssl.ch
Przemysław Czerpak 41b8ecb6c7 2015-08-26 15:51 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* include/hbsocket.h
  * src/rtl/hbsockhb.c
    + added socket filters to standard socket API.
      At C level hb_sockex*() function with PHB_SOCKEX handler can be
      used to operate on socket filters. At PRG level standard hb_socket*()
      functions can be used.
      The following things has been changed in PRG hb_socket*() functions:
      hb_socketErorrString() can accept <pSocket> as 1-st or 2-nd parameter
      and redirect call to socket filter errorStr() method.
      hb_socketClose() executes automatically shutdown() for connected
      sockets - it is important in windows only where without explicit
      call to shutdown() before close transmitted data can be lost.
      hb_socketSend() and hb_socketRecv() can be redirected to filter
      streams if filter set such redirection. If filter does not redirect
      them then they operate on raw sockets. If hb_socketSend() is
      redirected then sent data is flushed automatically.
      The following new PRG functions has been added:
      Add/replace socket filter:
         hb_socketSetFilter( <pSocket>, [<cFilterName>], [<hParams>] )
               -> <pSocket> | NIL
            <cFilterName> is filter name, It's possible to set many filters
            in single hb_socketSetFilter() call separating filter names
            with "|" character, i.e.:
               pSock := hb_socketSetFilter( pSock, "ZSOCK|BFSOCK", hParams )
            <hParams> is hash array with initialization parameters used by
            given socket filter. The core implementation recognize the
            following settings:
               "readahead" - numeric value with size of read ahead buffer
               "flush" - numeric value with auto flush parameter (for more
                         information look at hb_socketAutoFlush() below)
               "redir" - logical value which can be use to enable/disable
                         hb_socketSend() and hb_socketRecv() redirection
                         to filter stream.
      Return filter name used by socket:
         hb_socketGetFilter( <pSocket> ) -> <cFilterName>
      Read from socket stream:
         hb_socketRead( <pSocket>, @<cData>, [<nLen> = Len( cData )],
                        [<nTimeout> = FOREVER] ) -> <nRead>
         this function is similar to hb_socketRecv() but is always
         redirected to socket stream filters.
      Write to socket stream:
         hb_socketWrite( <pSocket>, <cData>, [<nLen> = Len( cData )],
                         [<nTimeout> = FOREVER] ) -> <nWritten>
         this function is similar to hb_socketSend() but it is always
         redirected to socket stream filters. Written data is not flushed
         by default and it should be flushed explicitly by hb_socketFlush().
         Automatic flushing can be enabled by hb_socketAutoFlush() function.
      Flush data written to socket:
         hb_socketFlush( <pSocket>, [<nTimeout> = FOREVER], [<lSync>] )
                     -> <nNotFlushed>
            <lSync> parameter is logical value which can be used to force
            special synchronization method in some filters. Usually users
            do not have to use it in normal code.
      Enable/disable automatic flushing of written data.
         hb_socketAutoFlush( <pSocket>, [ <nTimeout> ] ) -> <nTimeout>
            <nTimeout> is timeout for automatic flush operation on written
            data in milliseconds. <nTimeout> = -1 means wait forever and
            <nTimeout> = 0 disables auto flush.
         automatic flushing can help in adopting existing code anyhow it
         may strongly reduce the performance in some filters, i.e.
         compression filters like ZSOCK have to add special data to the
         stream after each flush operation so it's suggested to call
         flush explicitly when we want to force delivering written data
         to the peer.

  * include/hbznet.h
  * src/rtl/hbznet.c
    + added ZNET socket filter - compressed and encrypted streams are
      compatible with hb_znet*() streams. The old hb_znet*() interface
      is obsolete for pure socket communication and if not used as
      hb_inet*() filter then should be replaced by hb_sockex*() in
      user programs.
      ZNET socket filter can be created by new PRG functions:
         hb_socketNewZNet( <pSocket>, [<cPass>], [<nCompressionLevel>], ;
                           [<nStrategy>] ) -> <pSocket> | NIL
      or by standard socket API with "ZNET" as filter name.
      ZNET filter recognize the following settings in initialization
      hash array:
         "key" or "pass" - string with encryption password
         "zlib" - numeric compression level (HB_ZLIB_COMPRESSION_*)
         "zs" - numeric ZLIB compression strategy (HB_ZLIB_STRATEGY_*)
      ZNET filter always disables any other filters and operates on raw
      socket.
      Please remember that it's optional module. If programmer does not
      use hb_socketNewZNet() explicitly and prefers using hb_socketNew()
      then he should force linking this module by REQUEST hb_socketNewZNet

    + added fSync parameter to hb_znetFlush()
      [INCOMPATIBLE]

  * src/rtl/hbinet.c
    * call flush filter function before socket is closed

  * src/rtl/Makefile
  + src/rtl/hbzsock.c
    + added ZSOCK socket filter - ZLIB and GZIP compression for socket
      streams.
      ZSOCK socket filter can be created by new PRG functions:
         hb_socketNewZSock( <pSocket>, [<hParams>] ) -> <pSocket> | NIL
      or by standard socket API with "ZSOCK" as filter name.
      Programmers using hb_socketNew() can force linking this module by
         REQUEST hb_socketNewZSock
      ZSOCK filter can be used with other filters.
      ZSOCK filter recognize the following settings in initialization
      hash array:
         "zlib" - numeric compression level (HB_ZLIB_COMPRESSION_*)
         "zs" - numeric ZLIB compression strategy (HB_ZLIB_STRATEGY_*)
         "zin" - logical value which allow to enable/disable ZLIB
                 decompression on input stream (default)
         "gzin" - logical value which allow to enable/disable GZIP
                  decompression on input stream - it's possible to
                  enable both ZLIB and GZIP decompression together
                  so both streams can be decompress
         "zout" - logical value which allow to enable/disable ZLIB
                  compression on output stream (default)
         "gzout" - logical value which allow to enable/disable GZIP
                   compression on output stream - if both "zout" and
                   "gzout" are enabled GZIP compression is used.

  * src/rtl/Makefile
  + src/rtl/hbbfsock.c
    + added BFSOCK socket filter - BlowFish input and output stream
      encryption in CTR mode.
      BFSOCK socket filter can be created by new PRG functions:
         hb_socketNewBFSock( <pSocket>, [<hParams>] ) -> <pSocket> | NIL
      or by standard socket API with "BFSOCK" as filter name.
      Programmers using hb_socketNew() can force linking this module by
         REQUEST hb_socketNewBFSock
      BFSOCK filter can be used with other filters, i.e. with ZSOCK.
      Please only remember that good encryption algorithms have to
      generate data which cannot be compressed so using "BFSOCK|ZSOCK"
      only wastes resources and correct filter order is "ZSOCK|BFSOCK".
      BFSOCK filter recognize the following settings in initialization
      hash array:
         "key" or "pass" - string with encryption password
         "iv" - string with initialization vector for CTR mode

  * contrib/hbssl/hbssl.ch
  * contrib/hbssl/hbssl.h
  * contrib/hbssl/hbssl.hbm
  * contrib/hbssl/hbssl.hbx
  * contrib/hbssl/ssl.c
  * contrib/hbssl/ssl_inet.c
  + contrib/hbssl/ssl_sock.c
    + added SSL socket filter
      SSL socket filter can be created by new PRG functions:
         hb_socketNewSSL_connect( <pSocket>, <pSSL> [, <nTimeout> ] )
               -> <pSocketSSL> | NIL
         hb_socketNewSSL_accept( <pSocket>, <pSSL> [, <nTimeout> ] )
               -> <pSocketSSL> | NIL
      or by standard socket API with "SSL" as filter name.
      Programmers using hb_socketNew() can force linking this module by
         REQUEST hb_socketNewSSL_connect
      or
         REQUEST hb_socketNewSSL_accept
      SSL filter always disables any other filters and operates on raw
      socket.
      SSL filter recognize the following settings in initialization hash
      array:
         "ctx" or "key" - pointer SSL item <pSSL>
         "timeout" - timeout (numeric)
         "client" - logical value indicating client mode (SSL_connect())
         "server" - logical value indicating server mode (SSL_accept())

  * contrib/hbssl/tests/inetssl.prg
    ! cleaned typo in local function name

  * contrib/hbnetio/netiocli.c
  * contrib/hbnetio/netiosrv.c
    * use new Harbour extended socket API (hb_sockex*()) instead of
      raw sockets and hb_znet*()

  * contrib/hbtcpio/tcpio.c
    * use new Harbour extended socket API (hb_sockex*()) instead of
      raw sockets
    + implemented hb_fileFlush()
2015-08-26 15:51:35 +02:00

313 lines
18 KiB
Plaintext

/*
* Harbour Project source code:
* OpenSSL API - Harbour header.
*
* Copyright 2009 Viktor Szakats (vszakats.net/harbour)
* www - http://harbour-project.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this software; see the file COPYING.txt. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
*
* As a special exception, the Harbour Project gives permission for
* additional uses of the text contained in its release of Harbour.
*
* The exception is that, if you link the Harbour libraries with other
* files to produce an executable, this does not by itself cause the
* resulting executable to be covered by the GNU General Public License.
* Your use of that executable is in no way restricted on account of
* linking the Harbour library code into it.
*
* This exception does not however invalidate any other reasons why
* the executable file might be covered by the GNU General Public License.
*
* This exception applies only to the code released by the Harbour
* Project under the name Harbour. If you copy code from other
* Harbour Project or Free Software Foundation releases into a copy of
* Harbour, as the General Public License permits, the exception does
* not apply to the code that you add in this way. To avoid misleading
* anyone as to the status of such modified files, you must delete
* this exception notice from them.
*
* If you write modifications of your own for Harbour, it is your choice
* whether to permit this exception to apply to your modifications.
* If you do not wish that, delete this exception notice.
*
*/
#ifndef HBSSL_CH_
#define HBSSL_CH_
/* NOTE: This file is also used by C code. */
#define HB_SSL_CTX_NEW_METHOD_UNKNOWN ( -2 )
#define HB_SSL_CTX_NEW_METHOD_DEFAULT ( -1 )
#define HB_SSL_CTX_NEW_METHOD_SSLV2 0
#define HB_SSL_CTX_NEW_METHOD_SSLV2_SERVER 1
#define HB_SSL_CTX_NEW_METHOD_SSLV2_CLIENT 2
#define HB_SSL_CTX_NEW_METHOD_SSLV3 3
#define HB_SSL_CTX_NEW_METHOD_SSLV3_SERVER 4
#define HB_SSL_CTX_NEW_METHOD_SSLV3_CLIENT 5
#define HB_SSL_CTX_NEW_METHOD_TLSV1 6
#define HB_SSL_CTX_NEW_METHOD_TLSV1_SERVER 7
#define HB_SSL_CTX_NEW_METHOD_TLSV1_CLIENT 8
#define HB_SSL_CTX_NEW_METHOD_SSLV23 9
#define HB_SSL_CTX_NEW_METHOD_SSLV23_SERVER 10
#define HB_SSL_CTX_NEW_METHOD_SSLV23_CLIENT 11
#define HB_SSLEAY_VERSION 0
#define HB_SSLEAY_CFLAGS 1
#define HB_SSLEAY_BUILT_ON 2
#define HB_SSLEAY_PLATFORM 3
#define HB_SSLEAY_DIR 4
#define HB_SSL_ERROR_NONE 0
#define HB_SSL_ERROR_SSL 1
#define HB_SSL_ERROR_WANT_READ 2
#define HB_SSL_ERROR_WANT_WRITE 3
#define HB_SSL_ERROR_WANT_X509_LOOKUP 4
#define HB_SSL_ERROR_SYSCALL 5
#define HB_SSL_ERROR_ZERO_RETURN 6
#define HB_SSL_ERROR_WANT_CONNECT 7
#define HB_SSL_ERROR_WANT_ACCEPT 8
#define HB_SSL_SOCK_ERROR_BASE 100
#define HB_SSL_OP_MICROSOFT_SESS_ID_BUG 0x00000001
#define HB_SSL_OP_NETSCAPE_CHALLENGE_BUG 0x00000002
#define HB_SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x00000008
#define HB_SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x00000010
#define HB_SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x00000020
#define HB_SSL_OP_MSIE_SSLV2_RSA_PADDING 0x00000040
#define HB_SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x00000080
#define HB_SSL_OP_TLS_D5_BUG 0x00000100
#define HB_SSL_OP_TLS_BLOCK_PADDING_BUG 0x00000200
#define HB_SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS 0x00000800
#define HB_SSL_OP_ALL 0x00000FFF
#define HB_SSL_OP_NO_QUERY_MTU 0x00001000
#define HB_SSL_OP_COOKIE_EXCHANGE 0x00002000
#define HB_SSL_OP_NO_TICKET 0x00004000
#define HB_SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION 0x00010000
#define HB_SSL_OP_SINGLE_ECDH_USE 0x00080000
#define HB_SSL_OP_SINGLE_DH_USE 0x00100000
#define HB_SSL_OP_EPHEMERAL_RSA 0x00200000
#define HB_SSL_OP_CIPHER_SERVER_PREFERENCE 0x00400000
#define HB_SSL_OP_TLS_ROLLBACK_BUG 0x00800000
#define HB_SSL_OP_NO_SSLv2 0x01000000
#define HB_SSL_OP_NO_SSLv3 0x02000000
#define HB_SSL_OP_NO_TLSv1 0x04000000
#define HB_SSL_OP_PKCS1_CHECK_1 0x08000000
#define HB_SSL_OP_PKCS1_CHECK_2 0x10000000
#define HB_SSL_OP_NETSCAPE_CA_DN_BUG 0x20000000
#define HB_SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x40000000
#define HB_SSL_MODE_ENABLE_PARTIAL_WRITE 1
#define HB_SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER 2
#define HB_SSL_MODE_AUTO_RETRY 4
#define HB_SSL_MODE_NO_AUTO_CHAIN 8
#define HB_SSL_SENT_SHUTDOWN 1
#define HB_SSL_RECEIVED_SHUTDOWN 2
#define HB_SSL_FILETYPE_PEM 1
#define HB_SSL_FILETYPE_ASN1 2
#define HB_BIO_NOCLOSE 0x00
#define HB_BIO_CLOSE 0x01
#define HB_X509_V_OK 0
#define HB_X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT 2
#define HB_X509_V_ERR_UNABLE_TO_GET_CRL 3
#define HB_X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE 4
#define HB_X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE 5
#define HB_X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY 6
#define HB_X509_V_ERR_CERT_SIGNATURE_FAILURE 7
#define HB_X509_V_ERR_CRL_SIGNATURE_FAILURE 8
#define HB_X509_V_ERR_CERT_NOT_YET_VALID 9
#define HB_X509_V_ERR_CERT_HAS_EXPIRED 10
#define HB_X509_V_ERR_CRL_NOT_YET_VALID 11
#define HB_X509_V_ERR_CRL_HAS_EXPIRED 12
#define HB_X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD 13
#define HB_X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD 14
#define HB_X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD 15
#define HB_X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD 16
#define HB_X509_V_ERR_OUT_OF_MEM 17
#define HB_X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT 18
#define HB_X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN 19
#define HB_X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY 20
#define HB_X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE 21
#define HB_X509_V_ERR_CERT_CHAIN_TOO_LONG 22
#define HB_X509_V_ERR_CERT_REVOKED 23
#define HB_X509_V_ERR_INVALID_CA 24
#define HB_X509_V_ERR_PATH_LENGTH_EXCEEDED 25
#define HB_X509_V_ERR_INVALID_PURPOSE 26
#define HB_X509_V_ERR_CERT_UNTRUSTED 27
#define HB_X509_V_ERR_CERT_REJECTED 28
#define HB_X509_V_ERR_SUBJECT_ISSUER_MISMATCH 29
#define HB_X509_V_ERR_AKID_SKID_MISMATCH 30
#define HB_X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH 31
#define HB_X509_V_ERR_KEYUSAGE_NO_CERTSIGN 32
#define HB_X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER 33
#define HB_X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION 34
#define HB_X509_V_ERR_KEYUSAGE_NO_CRL_SIGN 35
#define HB_X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION 36
#define HB_X509_V_ERR_INVALID_NON_CA 37
#define HB_X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED 38
#define HB_X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE 39
#define HB_X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED 40
#define HB_X509_V_ERR_INVALID_EXTENSION 41
#define HB_X509_V_ERR_INVALID_POLICY_EXTENSION 42
#define HB_X509_V_ERR_NO_EXPLICIT_POLICY 43
#define HB_X509_V_ERR_UNNESTED_RESOURCE 44
#define HB_X509_V_ERR_APPLICATION_VERIFICATION 50
#define HB_EVP_MD_UNSUPPORTED ( -1 )
#define HB_EVP_MD_MD_NULL 0
#define HB_EVP_MD_MD2 1
#define HB_EVP_MD_MD4 2
#define HB_EVP_MD_MD5 3
#define HB_EVP_MD_SHA 4
#define HB_EVP_MD_SHA1 5
#define HB_EVP_MD_DSS 6
#define HB_EVP_MD_DSS1 7
#define HB_EVP_MD_ECDSA 8
#define HB_EVP_MD_SHA224 9
#define HB_EVP_MD_SHA256 10
#define HB_EVP_MD_SHA384 11
#define HB_EVP_MD_SHA512 12
#define HB_EVP_MD_MDC2 13
#define HB_EVP_MD_RIPEMD160 14
#define HB_EVP_CIPHER_UNSUPPORTED ( -1 )
#define HB_EVP_CIPHER_ENC_NULL 0
#define HB_EVP_CIPHER_DES_ECB 1
#define HB_EVP_CIPHER_DES_EDE 2
#define HB_EVP_CIPHER_DES_EDE3 3
#define HB_EVP_CIPHER_DES_EDE_ECB 4
#define HB_EVP_CIPHER_DES_EDE3_ECB 5
#define HB_EVP_CIPHER_DES_CFB64 6
#define HB_EVP_CIPHER_DES_CFB 7
#define HB_EVP_CIPHER_DES_CFB1 8
#define HB_EVP_CIPHER_DES_CFB8 9
#define HB_EVP_CIPHER_DES_EDE_CFB64 10
#define HB_EVP_CIPHER_DES_EDE_CFB 11
#define HB_EVP_CIPHER_DES_EDE3_CFB64 12
#define HB_EVP_CIPHER_DES_EDE3_CFB 13
#define HB_EVP_CIPHER_DES_EDE3_CFB1 14
#define HB_EVP_CIPHER_DES_EDE3_CFB8 15
#define HB_EVP_CIPHER_DES_OFB 16
#define HB_EVP_CIPHER_DES_EDE_OFB 17
#define HB_EVP_CIPHER_DES_EDE3_OFB 18
#define HB_EVP_CIPHER_DES_CBC 19
#define HB_EVP_CIPHER_DES_EDE_CBC 20
#define HB_EVP_CIPHER_DES_EDE3_CBC 21
#define HB_EVP_CIPHER_DESX_CBC 22
#define HB_EVP_CIPHER_RC4 23
#define HB_EVP_CIPHER_RC4_40 24
#define HB_EVP_CIPHER_IDEA_ECB 25
#define HB_EVP_CIPHER_IDEA_CFB64 26
#define HB_EVP_CIPHER_IDEA_CFB 27
#define HB_EVP_CIPHER_IDEA_OFB 28
#define HB_EVP_CIPHER_IDEA_CBC 29
#define HB_EVP_CIPHER_RC2_ECB 30
#define HB_EVP_CIPHER_RC2_CBC 31
#define HB_EVP_CIPHER_RC2_40_CBC 32
#define HB_EVP_CIPHER_RC2_64_CBC 33
#define HB_EVP_CIPHER_RC2_CFB64 34
#define HB_EVP_CIPHER_RC2_CFB 35
#define HB_EVP_CIPHER_RC2_OFB 36
#define HB_EVP_CIPHER_BF_ECB 37
#define HB_EVP_CIPHER_BF_CBC 38
#define HB_EVP_CIPHER_BF_CFB64 39
#define HB_EVP_CIPHER_BF_CFB 40
#define HB_EVP_CIPHER_BF_OFB 41
#define HB_EVP_CIPHER_CAST5_ECB 42
#define HB_EVP_CIPHER_CAST5_CBC 43
#define HB_EVP_CIPHER_CAST5_CFB64 44
#define HB_EVP_CIPHER_CAST5_CFB 45
#define HB_EVP_CIPHER_CAST5_OFB 46
#define HB_EVP_CIPHER_RC5_32_12_16_CBC 47
#define HB_EVP_CIPHER_RC5_32_12_16_ECB 48
#define HB_EVP_CIPHER_RC5_32_12_16_CFB64 49
#define HB_EVP_CIPHER_RC5_32_12_16_CFB 50
#define HB_EVP_CIPHER_RC5_32_12_16_OFB 51
#define HB_EVP_CIPHER_AES_128_GCM 99
#define HB_EVP_CIPHER_AES_128_ECB 52
#define HB_EVP_CIPHER_AES_128_CBC 53
#define HB_EVP_CIPHER_AES_128_CFB1 54
#define HB_EVP_CIPHER_AES_128_CFB8 55
#define HB_EVP_CIPHER_AES_128_CFB128 56
#define HB_EVP_CIPHER_AES_128_CFB 57
#define HB_EVP_CIPHER_AES_128_OFB 58
#define HB_EVP_CIPHER_AES_192_GCM 100
#define HB_EVP_CIPHER_AES_192_ECB 59
#define HB_EVP_CIPHER_AES_192_CBC 60
#define HB_EVP_CIPHER_AES_192_CFB1 61
#define HB_EVP_CIPHER_AES_192_CFB8 62
#define HB_EVP_CIPHER_AES_192_CFB128 63
#define HB_EVP_CIPHER_AES_192_CFB 64
#define HB_EVP_CIPHER_AES_192_OFB 65
#define HB_EVP_CIPHER_AES_256_ECB 66
#define HB_EVP_CIPHER_AES_256_GCM 101 /* highest */
#define HB_EVP_CIPHER_AES_256_CBC 67
#define HB_EVP_CIPHER_AES_256_CFB1 68
#define HB_EVP_CIPHER_AES_256_CFB8 69
#define HB_EVP_CIPHER_AES_256_CFB128 70
#define HB_EVP_CIPHER_AES_256_CFB 71
#define HB_EVP_CIPHER_AES_256_OFB 72
#define HB_EVP_CIPHER_CAMELLIA_128_ECB 73
#define HB_EVP_CIPHER_CAMELLIA_128_CBC 74
#define HB_EVP_CIPHER_CAMELLIA_128_CFB1 75
#define HB_EVP_CIPHER_CAMELLIA_128_CFB8 76
#define HB_EVP_CIPHER_CAMELLIA_128_CFB128 77
#define HB_EVP_CIPHER_CAMELLIA_128_CFB 78
#define HB_EVP_CIPHER_CAMELLIA_128_OFB 79
#define HB_EVP_CIPHER_CAMELLIA_192_ECB 80
#define HB_EVP_CIPHER_CAMELLIA_192_CBC 81
#define HB_EVP_CIPHER_CAMELLIA_192_CFB1 82
#define HB_EVP_CIPHER_CAMELLIA_192_CFB8 83
#define HB_EVP_CIPHER_CAMELLIA_192_CFB128 84
#define HB_EVP_CIPHER_CAMELLIA_192_CFB 85
#define HB_EVP_CIPHER_CAMELLIA_192_OFB 86
#define HB_EVP_CIPHER_CAMELLIA_256_ECB 87
#define HB_EVP_CIPHER_CAMELLIA_256_CBC 88
#define HB_EVP_CIPHER_CAMELLIA_256_CFB1 89
#define HB_EVP_CIPHER_CAMELLIA_256_CFB8 90
#define HB_EVP_CIPHER_CAMELLIA_256_CFB128 91
#define HB_EVP_CIPHER_CAMELLIA_256_CFB 92
#define HB_EVP_CIPHER_CAMELLIA_256_OFB 93
#define HB_EVP_CIPHER_SEED_ECB 94
#define HB_EVP_CIPHER_SEED_CBC 95
#define HB_EVP_CIPHER_SEED_CFB128 96
#define HB_EVP_CIPHER_SEED_CFB 97
#define HB_EVP_CIPHER_SEED_OFB 98
#define HB_BIO_METHOD_UNSUPPORTED ( -1 )
#define HB_BIO_METHOD_S_NULL 0
#define HB_BIO_METHOD_S_FILE 1
#define HB_BIO_METHOD_S_MEM 2
#define HB_BIO_METHOD_S_SOCKET 3
#define HB_BIO_METHOD_S_CONNECT 4
#define HB_BIO_METHOD_S_ACCEPT 5
#define HB_BIO_METHOD_S_FD 6
#define HB_BIO_METHOD_S_LOG 7
#define HB_BIO_METHOD_S_BIO 8
#define HB_BIO_METHOD_S_DATAGRAM 10
#define HB_BIO_METHOD_F_NULL 50
#define HB_BIO_METHOD_F_BUFFER 51
#define HB_BIO_METHOD_F_LINEBUFFER 52
#define HB_BIO_METHOD_F_NBIO_TEST 53
#endif /* HBSSL_CH_ */