| @@ -1 +1,268 @@ | ||
| /* ssl/dtls1.h */ | ||
| /* | ||
| * DTLS implementation written by Nagendra Modadugu | ||
| * (nagendra@cs.stanford.edu) for the OpenSSL project 2005. | ||
| */ | ||
| /* ==================================================================== | ||
| * Copyright (c) 1999-2005 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). | ||
| * | ||
| */ | ||
|
|
||
| #ifndef HEADER_DTLS1_H | ||
| # define HEADER_DTLS1_H | ||
|
|
||
| # include <openssl/buffer.h> | ||
| # include <openssl/pqueue.h> | ||
| # ifdef OPENSSL_SYS_VMS | ||
| # include <resource.h> | ||
| # include <sys/timeb.h> | ||
| # endif | ||
| # ifdef OPENSSL_SYS_WIN32 | ||
| /* Needed for struct timeval */ | ||
| # include <winsock.h> | ||
| # elif defined(OPENSSL_SYS_NETWARE) && !defined(_WINSOCK2API_) | ||
| # include <sys/timeval.h> | ||
| # else | ||
| # if defined(OPENSSL_SYS_VXWORKS) | ||
| # include <sys/times.h> | ||
| # else | ||
| # include <sys/time.h> | ||
| # endif | ||
| # endif | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| # define DTLS1_VERSION 0xFEFF | ||
| # define DTLS_MAX_VERSION DTLS1_VERSION | ||
| # define DTLS1_VERSION_MAJOR 0xFE | ||
|
|
||
| # define DTLS1_BAD_VER 0x0100 | ||
|
|
||
| # if 0 | ||
| /* this alert description is not specified anywhere... */ | ||
| # define DTLS1_AD_MISSING_HANDSHAKE_MESSAGE 110 | ||
| # endif | ||
|
|
||
| /* lengths of messages */ | ||
| # define DTLS1_COOKIE_LENGTH 256 | ||
|
|
||
| # define DTLS1_RT_HEADER_LENGTH 13 | ||
|
|
||
| # define DTLS1_HM_HEADER_LENGTH 12 | ||
|
|
||
| # define DTLS1_HM_BAD_FRAGMENT -2 | ||
| # define DTLS1_HM_FRAGMENT_RETRY -3 | ||
|
|
||
| # define DTLS1_CCS_HEADER_LENGTH 1 | ||
|
|
||
| # ifdef DTLS1_AD_MISSING_HANDSHAKE_MESSAGE | ||
| # define DTLS1_AL_HEADER_LENGTH 7 | ||
| # else | ||
| # define DTLS1_AL_HEADER_LENGTH 2 | ||
| # endif | ||
|
|
||
| # ifndef OPENSSL_NO_SSL_INTERN | ||
|
|
||
| # ifndef OPENSSL_NO_SCTP | ||
| # define DTLS1_SCTP_AUTH_LABEL "EXPORTER_DTLS_OVER_SCTP" | ||
| # endif | ||
|
|
||
| /* Max MTU overhead we know about so far is 40 for IPv6 + 8 for UDP */ | ||
| # define DTLS1_MAX_MTU_OVERHEAD 48 | ||
|
|
||
| typedef struct dtls1_bitmap_st { | ||
| unsigned long map; /* track 32 packets on 32-bit systems and 64 | ||
| * - on 64-bit systems */ | ||
| unsigned char max_seq_num[8]; /* max record number seen so far, 64-bit | ||
| * value in big-endian encoding */ | ||
| } DTLS1_BITMAP; | ||
|
|
||
| struct dtls1_retransmit_state { | ||
| EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ | ||
| EVP_MD_CTX *write_hash; /* used for mac generation */ | ||
| # ifndef OPENSSL_NO_COMP | ||
| COMP_CTX *compress; /* compression */ | ||
| # else | ||
| char *compress; | ||
| # endif | ||
| SSL_SESSION *session; | ||
| unsigned short epoch; | ||
| }; | ||
|
|
||
| struct hm_header_st { | ||
| unsigned char type; | ||
| unsigned long msg_len; | ||
| unsigned short seq; | ||
| unsigned long frag_off; | ||
| unsigned long frag_len; | ||
| unsigned int is_ccs; | ||
| struct dtls1_retransmit_state saved_retransmit_state; | ||
| }; | ||
|
|
||
| struct ccs_header_st { | ||
| unsigned char type; | ||
| unsigned short seq; | ||
| }; | ||
|
|
||
| struct dtls1_timeout_st { | ||
| /* Number of read timeouts so far */ | ||
| unsigned int read_timeouts; | ||
| /* Number of write timeouts so far */ | ||
| unsigned int write_timeouts; | ||
| /* Number of alerts received so far */ | ||
| unsigned int num_alerts; | ||
| }; | ||
|
|
||
| typedef struct record_pqueue_st { | ||
| unsigned short epoch; | ||
| pqueue q; | ||
| } record_pqueue; | ||
|
|
||
| typedef struct hm_fragment_st { | ||
| struct hm_header_st msg_header; | ||
| unsigned char *fragment; | ||
| unsigned char *reassembly; | ||
| } hm_fragment; | ||
|
|
||
| typedef struct dtls1_state_st { | ||
| unsigned int send_cookie; | ||
| unsigned char cookie[DTLS1_COOKIE_LENGTH]; | ||
| unsigned char rcvd_cookie[DTLS1_COOKIE_LENGTH]; | ||
| unsigned int cookie_len; | ||
| /* | ||
| * The current data and handshake epoch. This is initially | ||
| * undefined, and starts at zero once the initial handshake is | ||
| * completed | ||
| */ | ||
| unsigned short r_epoch; | ||
| unsigned short w_epoch; | ||
| /* records being received in the current epoch */ | ||
| DTLS1_BITMAP bitmap; | ||
| /* renegotiation starts a new set of sequence numbers */ | ||
| DTLS1_BITMAP next_bitmap; | ||
| /* handshake message numbers */ | ||
| unsigned short handshake_write_seq; | ||
| unsigned short next_handshake_write_seq; | ||
| unsigned short handshake_read_seq; | ||
| /* save last sequence number for retransmissions */ | ||
| unsigned char last_write_sequence[8]; | ||
| /* Received handshake records (processed and unprocessed) */ | ||
| record_pqueue unprocessed_rcds; | ||
| record_pqueue processed_rcds; | ||
| /* Buffered handshake messages */ | ||
| pqueue buffered_messages; | ||
| /* Buffered (sent) handshake records */ | ||
| pqueue sent_messages; | ||
| /* | ||
| * Buffered application records. Only for records between CCS and | ||
| * Finished to prevent either protocol violation or unnecessary message | ||
| * loss. | ||
| */ | ||
| record_pqueue buffered_app_data; | ||
| /* Is set when listening for new connections with dtls1_listen() */ | ||
| unsigned int listen; | ||
| unsigned int link_mtu; /* max on-the-wire DTLS packet size */ | ||
| unsigned int mtu; /* max DTLS packet size */ | ||
| struct hm_header_st w_msg_hdr; | ||
| struct hm_header_st r_msg_hdr; | ||
| struct dtls1_timeout_st timeout; | ||
| /* | ||
| * Indicates when the last handshake msg or heartbeat sent will timeout | ||
| */ | ||
| struct timeval next_timeout; | ||
| /* Timeout duration */ | ||
| unsigned short timeout_duration; | ||
| /* | ||
| * storage for Alert/Handshake protocol data received but not yet | ||
| * processed by ssl3_read_bytes: | ||
| */ | ||
| unsigned char alert_fragment[DTLS1_AL_HEADER_LENGTH]; | ||
| unsigned int alert_fragment_len; | ||
| unsigned char handshake_fragment[DTLS1_HM_HEADER_LENGTH]; | ||
| unsigned int handshake_fragment_len; | ||
| unsigned int retransmitting; | ||
| /* | ||
| * Set when the handshake is ready to process peer's ChangeCipherSpec message. | ||
| * Cleared after the message has been processed. | ||
| */ | ||
| unsigned int change_cipher_spec_ok; | ||
| # ifndef OPENSSL_NO_SCTP | ||
| /* used when SSL_ST_XX_FLUSH is entered */ | ||
| int next_state; | ||
| int shutdown_received; | ||
| # endif | ||
| } DTLS1_STATE; | ||
|
|
||
| typedef struct dtls1_record_data_st { | ||
| unsigned char *packet; | ||
| unsigned int packet_length; | ||
| SSL3_BUFFER rbuf; | ||
| SSL3_RECORD rrec; | ||
| # ifndef OPENSSL_NO_SCTP | ||
| struct bio_dgram_sctp_rcvinfo recordinfo; | ||
| # endif | ||
| } DTLS1_RECORD_DATA; | ||
|
|
||
| # endif | ||
|
|
||
| /* Timeout multipliers (timeout slice is defined in apps/timeouts.h */ | ||
| # define DTLS1_TMO_READ_COUNT 2 | ||
| # define DTLS1_TMO_WRITE_COUNT 2 | ||
|
|
||
| # define DTLS1_TMO_ALERT_COUNT 12 | ||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
| #endif |
| @@ -1 +1,328 @@ | ||
| /* e_os2.h */ | ||
| /* ==================================================================== | ||
| * Copyright (c) 1998-2000 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). | ||
| * | ||
| */ | ||
|
|
||
| #include <openssl/opensslconf.h> | ||
|
|
||
| #ifndef HEADER_E_OS2_H | ||
| # define HEADER_E_OS2_H | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| /****************************************************************************** | ||
| * Detect operating systems. This probably needs completing. | ||
| * The result is that at least one OPENSSL_SYS_os macro should be defined. | ||
| * However, if none is defined, Unix is assumed. | ||
| **/ | ||
|
|
||
| # define OPENSSL_SYS_UNIX | ||
|
|
||
| /* ---------------------- Macintosh, before MacOS X ----------------------- */ | ||
| # if defined(__MWERKS__) && defined(macintosh) || defined(OPENSSL_SYSNAME_MAC) | ||
| # undef OPENSSL_SYS_UNIX | ||
| # define OPENSSL_SYS_MACINTOSH_CLASSIC | ||
| # endif | ||
|
|
||
| /* ---------------------- NetWare ----------------------------------------- */ | ||
| # if defined(NETWARE) || defined(OPENSSL_SYSNAME_NETWARE) | ||
| # undef OPENSSL_SYS_UNIX | ||
| # define OPENSSL_SYS_NETWARE | ||
| # endif | ||
|
|
||
| /* --------------------- Microsoft operating systems ---------------------- */ | ||
|
|
||
| /* | ||
| * Note that MSDOS actually denotes 32-bit environments running on top of | ||
| * MS-DOS, such as DJGPP one. | ||
| */ | ||
| # if defined(OPENSSL_SYSNAME_MSDOS) | ||
| # undef OPENSSL_SYS_UNIX | ||
| # define OPENSSL_SYS_MSDOS | ||
| # endif | ||
|
|
||
| /* | ||
| * For 32 bit environment, there seems to be the CygWin environment and then | ||
| * all the others that try to do the same thing Microsoft does... | ||
| */ | ||
| # if defined(OPENSSL_SYSNAME_UWIN) | ||
| # undef OPENSSL_SYS_UNIX | ||
| # define OPENSSL_SYS_WIN32_UWIN | ||
| # else | ||
| # if defined(__CYGWIN32__) || defined(OPENSSL_SYSNAME_CYGWIN32) | ||
| # undef OPENSSL_SYS_UNIX | ||
| # define OPENSSL_SYS_WIN32_CYGWIN | ||
| # else | ||
| # if defined(_WIN32) || defined(OPENSSL_SYSNAME_WIN32) | ||
| # undef OPENSSL_SYS_UNIX | ||
| # define OPENSSL_SYS_WIN32 | ||
| # endif | ||
| # if defined(_WIN64) || defined(OPENSSL_SYSNAME_WIN64) | ||
| # undef OPENSSL_SYS_UNIX | ||
| # if !defined(OPENSSL_SYS_WIN64) | ||
| # define OPENSSL_SYS_WIN64 | ||
| # endif | ||
| # endif | ||
| # if defined(OPENSSL_SYSNAME_WINNT) | ||
| # undef OPENSSL_SYS_UNIX | ||
| # define OPENSSL_SYS_WINNT | ||
| # endif | ||
| # if defined(OPENSSL_SYSNAME_WINCE) | ||
| # undef OPENSSL_SYS_UNIX | ||
| # define OPENSSL_SYS_WINCE | ||
| # endif | ||
| # endif | ||
| # endif | ||
|
|
||
| /* Anything that tries to look like Microsoft is "Windows" */ | ||
| # if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_WIN64) || defined(OPENSSL_SYS_WINNT) || defined(OPENSSL_SYS_WINCE) | ||
| # undef OPENSSL_SYS_UNIX | ||
| # define OPENSSL_SYS_WINDOWS | ||
| # ifndef OPENSSL_SYS_MSDOS | ||
| # define OPENSSL_SYS_MSDOS | ||
| # endif | ||
| # endif | ||
|
|
||
| /* | ||
| * DLL settings. This part is a bit tough, because it's up to the | ||
| * application implementor how he or she will link the application, so it | ||
| * requires some macro to be used. | ||
| */ | ||
| # ifdef OPENSSL_SYS_WINDOWS | ||
| # ifndef OPENSSL_OPT_WINDLL | ||
| # if defined(_WINDLL) /* This is used when building OpenSSL to | ||
| * indicate that DLL linkage should be used */ | ||
| # define OPENSSL_OPT_WINDLL | ||
| # endif | ||
| # endif | ||
| # endif | ||
|
|
||
| /* ------------------------------- OpenVMS -------------------------------- */ | ||
| # if defined(__VMS) || defined(VMS) || defined(OPENSSL_SYSNAME_VMS) | ||
| # undef OPENSSL_SYS_UNIX | ||
| # define OPENSSL_SYS_VMS | ||
| # if defined(__DECC) | ||
| # define OPENSSL_SYS_VMS_DECC | ||
| # elif defined(__DECCXX) | ||
| # define OPENSSL_SYS_VMS_DECC | ||
| # define OPENSSL_SYS_VMS_DECCXX | ||
| # else | ||
| # define OPENSSL_SYS_VMS_NODECC | ||
| # endif | ||
| # endif | ||
|
|
||
| /* -------------------------------- OS/2 ---------------------------------- */ | ||
| # if defined(__EMX__) || defined(__OS2__) | ||
| # undef OPENSSL_SYS_UNIX | ||
| # define OPENSSL_SYS_OS2 | ||
| # endif | ||
|
|
||
| /* -------------------------------- Unix ---------------------------------- */ | ||
| # ifdef OPENSSL_SYS_UNIX | ||
| # if defined(linux) || defined(__linux__) || defined(OPENSSL_SYSNAME_LINUX) | ||
| # define OPENSSL_SYS_LINUX | ||
| # endif | ||
| # ifdef OPENSSL_SYSNAME_MPE | ||
| # define OPENSSL_SYS_MPE | ||
| # endif | ||
| # ifdef OPENSSL_SYSNAME_SNI | ||
| # define OPENSSL_SYS_SNI | ||
| # endif | ||
| # ifdef OPENSSL_SYSNAME_ULTRASPARC | ||
| # define OPENSSL_SYS_ULTRASPARC | ||
| # endif | ||
| # ifdef OPENSSL_SYSNAME_NEWS4 | ||
| # define OPENSSL_SYS_NEWS4 | ||
| # endif | ||
| # ifdef OPENSSL_SYSNAME_MACOSX | ||
| # define OPENSSL_SYS_MACOSX | ||
| # endif | ||
| # ifdef OPENSSL_SYSNAME_MACOSX_RHAPSODY | ||
| # define OPENSSL_SYS_MACOSX_RHAPSODY | ||
| # define OPENSSL_SYS_MACOSX | ||
| # endif | ||
| # ifdef OPENSSL_SYSNAME_SUNOS | ||
| # define OPENSSL_SYS_SUNOS | ||
| # endif | ||
| # if defined(_CRAY) || defined(OPENSSL_SYSNAME_CRAY) | ||
| # define OPENSSL_SYS_CRAY | ||
| # endif | ||
| # if defined(_AIX) || defined(OPENSSL_SYSNAME_AIX) | ||
| # define OPENSSL_SYS_AIX | ||
| # endif | ||
| # endif | ||
|
|
||
| /* -------------------------------- VOS ----------------------------------- */ | ||
| # if defined(__VOS__) || defined(OPENSSL_SYSNAME_VOS) | ||
| # define OPENSSL_SYS_VOS | ||
| # ifdef __HPPA__ | ||
| # define OPENSSL_SYS_VOS_HPPA | ||
| # endif | ||
| # ifdef __IA32__ | ||
| # define OPENSSL_SYS_VOS_IA32 | ||
| # endif | ||
| # endif | ||
|
|
||
| /* ------------------------------ VxWorks --------------------------------- */ | ||
| # ifdef OPENSSL_SYSNAME_VXWORKS | ||
| # define OPENSSL_SYS_VXWORKS | ||
| # endif | ||
|
|
||
| /* -------------------------------- BeOS ---------------------------------- */ | ||
| # if defined(__BEOS__) | ||
| # define OPENSSL_SYS_BEOS | ||
| # include <sys/socket.h> | ||
| # if defined(BONE_VERSION) | ||
| # define OPENSSL_SYS_BEOS_BONE | ||
| # else | ||
| # define OPENSSL_SYS_BEOS_R5 | ||
| # endif | ||
| # endif | ||
|
|
||
| /** | ||
| * That's it for OS-specific stuff | ||
| *****************************************************************************/ | ||
|
|
||
| /* Specials for I/O an exit */ | ||
| # ifdef OPENSSL_SYS_MSDOS | ||
| # define OPENSSL_UNISTD_IO <io.h> | ||
| # define OPENSSL_DECLARE_EXIT extern void exit(int); | ||
| # else | ||
| # define OPENSSL_UNISTD_IO OPENSSL_UNISTD | ||
| # define OPENSSL_DECLARE_EXIT /* declared in unistd.h */ | ||
| # endif | ||
|
|
||
| /*- | ||
| * Definitions of OPENSSL_GLOBAL and OPENSSL_EXTERN, to define and declare | ||
| * certain global symbols that, with some compilers under VMS, have to be | ||
| * defined and declared explicitely with globaldef and globalref. | ||
| * Definitions of OPENSSL_EXPORT and OPENSSL_IMPORT, to define and declare | ||
| * DLL exports and imports for compilers under Win32. These are a little | ||
| * more complicated to use. Basically, for any library that exports some | ||
| * global variables, the following code must be present in the header file | ||
| * that declares them, before OPENSSL_EXTERN is used: | ||
| * | ||
| * #ifdef SOME_BUILD_FLAG_MACRO | ||
| * # undef OPENSSL_EXTERN | ||
| * # define OPENSSL_EXTERN OPENSSL_EXPORT | ||
| * #endif | ||
| * | ||
| * The default is to have OPENSSL_EXPORT, OPENSSL_IMPORT and OPENSSL_GLOBAL | ||
| * have some generally sensible values, and for OPENSSL_EXTERN to have the | ||
| * value OPENSSL_IMPORT. | ||
| */ | ||
|
|
||
| # if defined(OPENSSL_SYS_VMS_NODECC) | ||
| # define OPENSSL_EXPORT globalref | ||
| # define OPENSSL_IMPORT globalref | ||
| # define OPENSSL_GLOBAL globaldef | ||
| # elif defined(OPENSSL_SYS_WINDOWS) && defined(OPENSSL_OPT_WINDLL) | ||
| # define OPENSSL_EXPORT extern __declspec(dllexport) | ||
| # define OPENSSL_IMPORT extern __declspec(dllimport) | ||
| # define OPENSSL_GLOBAL | ||
| # else | ||
| # define OPENSSL_EXPORT extern | ||
| # define OPENSSL_IMPORT extern | ||
| # define OPENSSL_GLOBAL | ||
| # endif | ||
| # define OPENSSL_EXTERN OPENSSL_IMPORT | ||
|
|
||
| /*- | ||
| * Macros to allow global variables to be reached through function calls when | ||
| * required (if a shared library version requires it, for example. | ||
| * The way it's done allows definitions like this: | ||
| * | ||
| * // in foobar.c | ||
| * OPENSSL_IMPLEMENT_GLOBAL(int,foobar,0) | ||
| * // in foobar.h | ||
| * OPENSSL_DECLARE_GLOBAL(int,foobar); | ||
| * #define foobar OPENSSL_GLOBAL_REF(foobar) | ||
| */ | ||
| # ifdef OPENSSL_EXPORT_VAR_AS_FUNCTION | ||
| # define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) \ | ||
| type *_shadow_##name(void) \ | ||
| { static type _hide_##name=value; return &_hide_##name; } | ||
| # define OPENSSL_DECLARE_GLOBAL(type,name) type *_shadow_##name(void) | ||
| # define OPENSSL_GLOBAL_REF(name) (*(_shadow_##name())) | ||
| # else | ||
| # define OPENSSL_IMPLEMENT_GLOBAL(type,name,value) OPENSSL_GLOBAL type _shadow_##name=value; | ||
| # define OPENSSL_DECLARE_GLOBAL(type,name) OPENSSL_EXPORT type _shadow_##name | ||
| # define OPENSSL_GLOBAL_REF(name) _shadow_##name | ||
| # endif | ||
|
|
||
| # if defined(OPENSSL_SYS_MACINTOSH_CLASSIC) && macintosh==1 && !defined(MAC_OS_GUSI_SOURCE) | ||
| # define ossl_ssize_t long | ||
| # endif | ||
|
|
||
| # ifdef OPENSSL_SYS_MSDOS | ||
| # define ossl_ssize_t long | ||
| # endif | ||
|
|
||
| # if defined(NeXT) || defined(OPENSSL_SYS_NEWS4) || defined(OPENSSL_SYS_SUNOS) | ||
| # define ssize_t int | ||
| # endif | ||
|
|
||
| # if defined(__ultrix) && !defined(ssize_t) | ||
| # define ossl_ssize_t int | ||
| # endif | ||
|
|
||
| # ifndef ossl_ssize_t | ||
| # define ossl_ssize_t ssize_t | ||
| # endif | ||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
| #endif |
| @@ -1 +1,26 @@ | ||
| /* crypto/ebcdic.h */ | ||
|
|
||
| #ifndef HEADER_EBCDIC_H | ||
| # define HEADER_EBCDIC_H | ||
|
|
||
| # include <sys/types.h> | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| /* Avoid name clashes with other applications */ | ||
| # define os_toascii _openssl_os_toascii | ||
| # define os_toebcdic _openssl_os_toebcdic | ||
| # define ebcdic2ascii _openssl_ebcdic2ascii | ||
| # define ascii2ebcdic _openssl_ascii2ebcdic | ||
|
|
||
| extern const unsigned char os_toascii[256]; | ||
| extern const unsigned char os_toebcdic[256]; | ||
| void *ebcdic2ascii(void *dest, const void *srce, size_t count); | ||
| void *ascii2ebcdic(void *dest, const void *srce, size_t count); | ||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
| #endif |
| @@ -1 +1,127 @@ | ||
| /* crypto/ecdh/ecdh.h */ | ||
| /* ==================================================================== | ||
| * Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED. | ||
| * | ||
| * The Elliptic Curve Public-Key Crypto Library (ECC Code) included | ||
| * herein is developed by SUN MICROSYSTEMS, INC., and is contributed | ||
| * to the OpenSSL project. | ||
| * | ||
| * The ECC Code is licensed pursuant to the OpenSSL open source | ||
| * license provided below. | ||
| * | ||
| * The ECDH software is originally written by Douglas Stebila of | ||
| * Sun Microsystems Laboratories. | ||
| * | ||
| */ | ||
| /* ==================================================================== | ||
| * Copyright (c) 2000-2002 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 | ||
| * licensing@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). | ||
| * | ||
| */ | ||
| #ifndef HEADER_ECDH_H | ||
| # define HEADER_ECDH_H | ||
|
|
||
| # include <openssl/opensslconf.h> | ||
|
|
||
| # ifdef OPENSSL_NO_ECDH | ||
| # error ECDH is disabled. | ||
| # endif | ||
|
|
||
| # include <openssl/ec.h> | ||
| # include <openssl/ossl_typ.h> | ||
| # ifndef OPENSSL_NO_DEPRECATED | ||
| # include <openssl/bn.h> | ||
| # endif | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| const ECDH_METHOD *ECDH_OpenSSL(void); | ||
|
|
||
| void ECDH_set_default_method(const ECDH_METHOD *); | ||
| const ECDH_METHOD *ECDH_get_default_method(void); | ||
| int ECDH_set_method(EC_KEY *, const ECDH_METHOD *); | ||
|
|
||
| int ECDH_compute_key(void *out, size_t outlen, const EC_POINT *pub_key, | ||
| EC_KEY *ecdh, void *(*KDF) (const void *in, size_t inlen, | ||
| void *out, size_t *outlen)); | ||
|
|
||
| int ECDH_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new | ||
| *new_func, CRYPTO_EX_dup *dup_func, | ||
| CRYPTO_EX_free *free_func); | ||
| int ECDH_set_ex_data(EC_KEY *d, int idx, void *arg); | ||
| void *ECDH_get_ex_data(EC_KEY *d, int idx); | ||
|
|
||
| /* BEGIN ERROR CODES */ | ||
| /* | ||
| * The following lines are auto generated by the script mkerr.pl. Any changes | ||
| * made after this point may be overwritten when the script is next run. | ||
| */ | ||
| void ERR_load_ECDH_strings(void); | ||
|
|
||
| /* Error codes for the ECDH functions. */ | ||
|
|
||
| /* Function codes. */ | ||
| # define ECDH_F_ECDH_CHECK 102 | ||
| # define ECDH_F_ECDH_COMPUTE_KEY 100 | ||
| # define ECDH_F_ECDH_DATA_NEW_METHOD 101 | ||
|
|
||
| /* Reason codes. */ | ||
| # define ECDH_R_KDF_FAILED 102 | ||
| # define ECDH_R_NON_FIPS_METHOD 103 | ||
| # define ECDH_R_NO_PRIVATE_VALUE 100 | ||
| # define ECDH_R_POINT_ARITHMETIC_FAILURE 101 | ||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
| #endif |
| @@ -1 +1,260 @@ | ||
| /* crypto/ecdsa/ecdsa.h */ | ||
| /** | ||
| * \file crypto/ecdsa/ecdsa.h Include file for the OpenSSL ECDSA functions | ||
| * \author Written by Nils Larsch for the OpenSSL project | ||
| */ | ||
| /* ==================================================================== | ||
| * Copyright (c) 2000-2005 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 | ||
| * licensing@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). | ||
| * | ||
| */ | ||
| #ifndef HEADER_ECDSA_H | ||
| # define HEADER_ECDSA_H | ||
|
|
||
| # include <openssl/opensslconf.h> | ||
|
|
||
| # ifdef OPENSSL_NO_ECDSA | ||
| # error ECDSA is disabled. | ||
| # endif | ||
|
|
||
| # include <openssl/ec.h> | ||
| # include <openssl/ossl_typ.h> | ||
| # ifndef OPENSSL_NO_DEPRECATED | ||
| # include <openssl/bn.h> | ||
| # endif | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| typedef struct ECDSA_SIG_st { | ||
| BIGNUM *r; | ||
| BIGNUM *s; | ||
| } ECDSA_SIG; | ||
|
|
||
| /** Allocates and initialize a ECDSA_SIG structure | ||
| * \return pointer to a ECDSA_SIG structure or NULL if an error occurred | ||
| */ | ||
| ECDSA_SIG *ECDSA_SIG_new(void); | ||
|
|
||
| /** frees a ECDSA_SIG structure | ||
| * \param sig pointer to the ECDSA_SIG structure | ||
| */ | ||
| void ECDSA_SIG_free(ECDSA_SIG *sig); | ||
|
|
||
| /** DER encode content of ECDSA_SIG object (note: this function modifies *pp | ||
| * (*pp += length of the DER encoded signature)). | ||
| * \param sig pointer to the ECDSA_SIG object | ||
| * \param pp pointer to a unsigned char pointer for the output or NULL | ||
| * \return the length of the DER encoded ECDSA_SIG object or 0 | ||
| */ | ||
| int i2d_ECDSA_SIG(const ECDSA_SIG *sig, unsigned char **pp); | ||
|
|
||
| /** Decodes a DER encoded ECDSA signature (note: this function changes *pp | ||
| * (*pp += len)). | ||
| * \param sig pointer to ECDSA_SIG pointer (may be NULL) | ||
| * \param pp memory buffer with the DER encoded signature | ||
| * \param len length of the buffer | ||
| * \return pointer to the decoded ECDSA_SIG structure (or NULL) | ||
| */ | ||
| ECDSA_SIG *d2i_ECDSA_SIG(ECDSA_SIG **sig, const unsigned char **pp, long len); | ||
|
|
||
| /** Computes the ECDSA signature of the given hash value using | ||
| * the supplied private key and returns the created signature. | ||
| * \param dgst pointer to the hash value | ||
| * \param dgst_len length of the hash value | ||
| * \param eckey EC_KEY object containing a private EC key | ||
| * \return pointer to a ECDSA_SIG structure or NULL if an error occurred | ||
| */ | ||
| ECDSA_SIG *ECDSA_do_sign(const unsigned char *dgst, int dgst_len, | ||
| EC_KEY *eckey); | ||
|
|
||
| /** Computes ECDSA signature of a given hash value using the supplied | ||
| * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). | ||
| * \param dgst pointer to the hash value to sign | ||
| * \param dgstlen length of the hash value | ||
| * \param kinv BIGNUM with a pre-computed inverse k (optional) | ||
| * \param rp BIGNUM with a pre-computed rp value (optioanl), | ||
| * see ECDSA_sign_setup | ||
| * \param eckey EC_KEY object containing a private EC key | ||
| * \return pointer to a ECDSA_SIG structure or NULL if an error occurred | ||
| */ | ||
| ECDSA_SIG *ECDSA_do_sign_ex(const unsigned char *dgst, int dgstlen, | ||
| const BIGNUM *kinv, const BIGNUM *rp, | ||
| EC_KEY *eckey); | ||
|
|
||
| /** Verifies that the supplied signature is a valid ECDSA | ||
| * signature of the supplied hash value using the supplied public key. | ||
| * \param dgst pointer to the hash value | ||
| * \param dgst_len length of the hash value | ||
| * \param sig ECDSA_SIG structure | ||
| * \param eckey EC_KEY object containing a public EC key | ||
| * \return 1 if the signature is valid, 0 if the signature is invalid | ||
| * and -1 on error | ||
| */ | ||
| int ECDSA_do_verify(const unsigned char *dgst, int dgst_len, | ||
| const ECDSA_SIG *sig, EC_KEY *eckey); | ||
|
|
||
| const ECDSA_METHOD *ECDSA_OpenSSL(void); | ||
|
|
||
| /** Sets the default ECDSA method | ||
| * \param meth new default ECDSA_METHOD | ||
| */ | ||
| void ECDSA_set_default_method(const ECDSA_METHOD *meth); | ||
|
|
||
| /** Returns the default ECDSA method | ||
| * \return pointer to ECDSA_METHOD structure containing the default method | ||
| */ | ||
| const ECDSA_METHOD *ECDSA_get_default_method(void); | ||
|
|
||
| /** Sets method to be used for the ECDSA operations | ||
| * \param eckey EC_KEY object | ||
| * \param meth new method | ||
| * \return 1 on success and 0 otherwise | ||
| */ | ||
| int ECDSA_set_method(EC_KEY *eckey, const ECDSA_METHOD *meth); | ||
|
|
||
| /** Returns the maximum length of the DER encoded signature | ||
| * \param eckey EC_KEY object | ||
| * \return numbers of bytes required for the DER encoded signature | ||
| */ | ||
| int ECDSA_size(const EC_KEY *eckey); | ||
|
|
||
| /** Precompute parts of the signing operation | ||
| * \param eckey EC_KEY object containing a private EC key | ||
| * \param ctx BN_CTX object (optional) | ||
| * \param kinv BIGNUM pointer for the inverse of k | ||
| * \param rp BIGNUM pointer for x coordinate of k * generator | ||
| * \return 1 on success and 0 otherwise | ||
| */ | ||
| int ECDSA_sign_setup(EC_KEY *eckey, BN_CTX *ctx, BIGNUM **kinv, BIGNUM **rp); | ||
|
|
||
| /** Computes ECDSA signature of a given hash value using the supplied | ||
| * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). | ||
| * \param type this parameter is ignored | ||
| * \param dgst pointer to the hash value to sign | ||
| * \param dgstlen length of the hash value | ||
| * \param sig memory for the DER encoded created signature | ||
| * \param siglen pointer to the length of the returned signature | ||
| * \param eckey EC_KEY object containing a private EC key | ||
| * \return 1 on success and 0 otherwise | ||
| */ | ||
| int ECDSA_sign(int type, const unsigned char *dgst, int dgstlen, | ||
| unsigned char *sig, unsigned int *siglen, EC_KEY *eckey); | ||
|
|
||
| /** Computes ECDSA signature of a given hash value using the supplied | ||
| * private key (note: sig must point to ECDSA_size(eckey) bytes of memory). | ||
| * \param type this parameter is ignored | ||
| * \param dgst pointer to the hash value to sign | ||
| * \param dgstlen length of the hash value | ||
| * \param sig buffer to hold the DER encoded signature | ||
| * \param siglen pointer to the length of the returned signature | ||
| * \param kinv BIGNUM with a pre-computed inverse k (optional) | ||
| * \param rp BIGNUM with a pre-computed rp value (optioanl), | ||
| * see ECDSA_sign_setup | ||
| * \param eckey EC_KEY object containing a private EC key | ||
| * \return 1 on success and 0 otherwise | ||
| */ | ||
| int ECDSA_sign_ex(int type, const unsigned char *dgst, int dgstlen, | ||
| unsigned char *sig, unsigned int *siglen, | ||
| const BIGNUM *kinv, const BIGNUM *rp, EC_KEY *eckey); | ||
|
|
||
| /** Verifies that the given signature is valid ECDSA signature | ||
| * of the supplied hash value using the specified public key. | ||
| * \param type this parameter is ignored | ||
| * \param dgst pointer to the hash value | ||
| * \param dgstlen length of the hash value | ||
| * \param sig pointer to the DER encoded signature | ||
| * \param siglen length of the DER encoded signature | ||
| * \param eckey EC_KEY object containing a public EC key | ||
| * \return 1 if the signature is valid, 0 if the signature is invalid | ||
| * and -1 on error | ||
| */ | ||
| int ECDSA_verify(int type, const unsigned char *dgst, int dgstlen, | ||
| const unsigned char *sig, int siglen, EC_KEY *eckey); | ||
|
|
||
| /* the standard ex_data functions */ | ||
| int ECDSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new | ||
| *new_func, CRYPTO_EX_dup *dup_func, | ||
| CRYPTO_EX_free *free_func); | ||
| int ECDSA_set_ex_data(EC_KEY *d, int idx, void *arg); | ||
| void *ECDSA_get_ex_data(EC_KEY *d, int idx); | ||
|
|
||
| /* BEGIN ERROR CODES */ | ||
| /* | ||
| * The following lines are auto generated by the script mkerr.pl. Any changes | ||
| * made after this point may be overwritten when the script is next run. | ||
| */ | ||
| void ERR_load_ECDSA_strings(void); | ||
|
|
||
| /* Error codes for the ECDSA functions. */ | ||
|
|
||
| /* Function codes. */ | ||
| # define ECDSA_F_ECDSA_CHECK 104 | ||
| # define ECDSA_F_ECDSA_DATA_NEW_METHOD 100 | ||
| # define ECDSA_F_ECDSA_DO_SIGN 101 | ||
| # define ECDSA_F_ECDSA_DO_VERIFY 102 | ||
| # define ECDSA_F_ECDSA_SIGN_SETUP 103 | ||
|
|
||
| /* Reason codes. */ | ||
| # define ECDSA_R_BAD_SIGNATURE 100 | ||
| # define ECDSA_R_DATA_TOO_LARGE_FOR_KEY_SIZE 101 | ||
| # define ECDSA_R_ERR_EC_LIB 102 | ||
| # define ECDSA_R_MISSING_PARAMETERS 103 | ||
| # define ECDSA_R_NEED_NEW_SETUP_VALUES 106 | ||
| # define ECDSA_R_NON_FIPS_METHOD 107 | ||
| # define ECDSA_R_RANDOM_NUMBER_GENERATION_FAILED 104 | ||
| # define ECDSA_R_SIGNATURE_MALLOC_FAILED 105 | ||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
| #endif |
| @@ -1 +1,109 @@ | ||
| /* crypto/hmac/hmac.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.] | ||
| */ | ||
| #ifndef HEADER_HMAC_H | ||
| # define HEADER_HMAC_H | ||
|
|
||
| # include <openssl/opensslconf.h> | ||
|
|
||
| # ifdef OPENSSL_NO_HMAC | ||
| # error HMAC is disabled. | ||
| # endif | ||
|
|
||
| # include <openssl/evp.h> | ||
|
|
||
| # define HMAC_MAX_MD_CBLOCK 128/* largest known is SHA512 */ | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| typedef struct hmac_ctx_st { | ||
| const EVP_MD *md; | ||
| EVP_MD_CTX md_ctx; | ||
| EVP_MD_CTX i_ctx; | ||
| EVP_MD_CTX o_ctx; | ||
| unsigned int key_length; | ||
| unsigned char key[HMAC_MAX_MD_CBLOCK]; | ||
| } HMAC_CTX; | ||
|
|
||
| # define HMAC_size(e) (EVP_MD_size((e)->md)) | ||
|
|
||
| void HMAC_CTX_init(HMAC_CTX *ctx); | ||
| void HMAC_CTX_cleanup(HMAC_CTX *ctx); | ||
|
|
||
| /* deprecated */ | ||
| # define HMAC_cleanup(ctx) HMAC_CTX_cleanup(ctx) | ||
|
|
||
| /* deprecated */ | ||
| int HMAC_Init(HMAC_CTX *ctx, const void *key, int len, const EVP_MD *md); | ||
| int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, int len, | ||
| const EVP_MD *md, ENGINE *impl); | ||
| int HMAC_Update(HMAC_CTX *ctx, const unsigned char *data, size_t len); | ||
| int HMAC_Final(HMAC_CTX *ctx, unsigned char *md, unsigned int *len); | ||
| unsigned char *HMAC(const EVP_MD *evp_md, const void *key, int key_len, | ||
| const unsigned char *d, size_t n, unsigned char *md, | ||
| unsigned int *md_len); | ||
| int HMAC_CTX_copy(HMAC_CTX *dctx, HMAC_CTX *sctx); | ||
|
|
||
| void HMAC_CTX_set_flags(HMAC_CTX *ctx, unsigned long flags); | ||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
|
|
||
| #endif |
| @@ -1 +1,105 @@ | ||
| /* crypto/idea/idea.h */ | ||
| /* Copyright (C) 1995-1997 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.] | ||
| */ | ||
|
|
||
| #ifndef HEADER_IDEA_H | ||
| # define HEADER_IDEA_H | ||
|
|
||
| # include <openssl/opensslconf.h>/* IDEA_INT, OPENSSL_NO_IDEA */ | ||
|
|
||
| # ifdef OPENSSL_NO_IDEA | ||
| # error IDEA is disabled. | ||
| # endif | ||
|
|
||
| # define IDEA_ENCRYPT 1 | ||
| # define IDEA_DECRYPT 0 | ||
|
|
||
| # define IDEA_BLOCK 8 | ||
| # define IDEA_KEY_LENGTH 16 | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| typedef struct idea_key_st { | ||
| IDEA_INT data[9][6]; | ||
| } IDEA_KEY_SCHEDULE; | ||
|
|
||
| const char *idea_options(void); | ||
| void idea_ecb_encrypt(const unsigned char *in, unsigned char *out, | ||
| IDEA_KEY_SCHEDULE *ks); | ||
| # ifdef OPENSSL_FIPS | ||
| void private_idea_set_encrypt_key(const unsigned char *key, | ||
| IDEA_KEY_SCHEDULE *ks); | ||
| # endif | ||
| void idea_set_encrypt_key(const unsigned char *key, IDEA_KEY_SCHEDULE *ks); | ||
| void idea_set_decrypt_key(IDEA_KEY_SCHEDULE *ek, IDEA_KEY_SCHEDULE *dk); | ||
| void idea_cbc_encrypt(const unsigned char *in, unsigned char *out, | ||
| long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, | ||
| int enc); | ||
| void idea_cfb64_encrypt(const unsigned char *in, unsigned char *out, | ||
| long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, | ||
| int *num, int enc); | ||
| void idea_ofb64_encrypt(const unsigned char *in, unsigned char *out, | ||
| long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv, | ||
| int *num); | ||
| void idea_encrypt(unsigned long *in, IDEA_KEY_SCHEDULE *ks); | ||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
|
|
||
| #endif |
| @@ -1 +1,240 @@ | ||
| /* krb5_asn.h */ | ||
| /* | ||
| * Written by Vern Staats <staatsvr@asc.hpc.mil> for the OpenSSL project, ** | ||
| * using ocsp/{*.h,*asn*.c} as a starting point | ||
| */ | ||
|
|
||
| /* ==================================================================== | ||
| * Copyright (c) 1998-2000 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). | ||
| * | ||
| */ | ||
|
|
||
| #ifndef HEADER_KRB5_ASN_H | ||
| # define HEADER_KRB5_ASN_H | ||
|
|
||
| /* | ||
| * #include <krb5.h> | ||
| */ | ||
| # include <openssl/safestack.h> | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| /* | ||
| * ASN.1 from Kerberos RFC 1510 | ||
| */ | ||
|
|
||
| /*- EncryptedData ::= SEQUENCE { | ||
| * etype[0] INTEGER, -- EncryptionType | ||
| * kvno[1] INTEGER OPTIONAL, | ||
| * cipher[2] OCTET STRING -- ciphertext | ||
| * } | ||
| */ | ||
| typedef struct krb5_encdata_st { | ||
| ASN1_INTEGER *etype; | ||
| ASN1_INTEGER *kvno; | ||
| ASN1_OCTET_STRING *cipher; | ||
| } KRB5_ENCDATA; | ||
|
|
||
| DECLARE_STACK_OF(KRB5_ENCDATA) | ||
|
|
||
| /*- PrincipalName ::= SEQUENCE { | ||
| * name-type[0] INTEGER, | ||
| * name-string[1] SEQUENCE OF GeneralString | ||
| * } | ||
| */ | ||
| typedef struct krb5_princname_st { | ||
| ASN1_INTEGER *nametype; | ||
| STACK_OF(ASN1_GENERALSTRING) *namestring; | ||
| } KRB5_PRINCNAME; | ||
|
|
||
| DECLARE_STACK_OF(KRB5_PRINCNAME) | ||
|
|
||
| /*- Ticket ::= [APPLICATION 1] SEQUENCE { | ||
| * tkt-vno[0] INTEGER, | ||
| * realm[1] Realm, | ||
| * sname[2] PrincipalName, | ||
| * enc-part[3] EncryptedData | ||
| * } | ||
| */ | ||
| typedef struct krb5_tktbody_st { | ||
| ASN1_INTEGER *tktvno; | ||
| ASN1_GENERALSTRING *realm; | ||
| KRB5_PRINCNAME *sname; | ||
| KRB5_ENCDATA *encdata; | ||
| } KRB5_TKTBODY; | ||
|
|
||
| typedef STACK_OF(KRB5_TKTBODY) KRB5_TICKET; | ||
| DECLARE_STACK_OF(KRB5_TKTBODY) | ||
|
|
||
| /*- AP-REQ ::= [APPLICATION 14] SEQUENCE { | ||
| * pvno[0] INTEGER, | ||
| * msg-type[1] INTEGER, | ||
| * ap-options[2] APOptions, | ||
| * ticket[3] Ticket, | ||
| * authenticator[4] EncryptedData | ||
| * } | ||
| * | ||
| * APOptions ::= BIT STRING { | ||
| * reserved(0), use-session-key(1), mutual-required(2) } | ||
| */ | ||
| typedef struct krb5_ap_req_st { | ||
| ASN1_INTEGER *pvno; | ||
| ASN1_INTEGER *msgtype; | ||
| ASN1_BIT_STRING *apoptions; | ||
| KRB5_TICKET *ticket; | ||
| KRB5_ENCDATA *authenticator; | ||
| } KRB5_APREQBODY; | ||
|
|
||
| typedef STACK_OF(KRB5_APREQBODY) KRB5_APREQ; | ||
| DECLARE_STACK_OF(KRB5_APREQBODY) | ||
|
|
||
| /* Authenticator Stuff */ | ||
|
|
||
| /*- Checksum ::= SEQUENCE { | ||
| * cksumtype[0] INTEGER, | ||
| * checksum[1] OCTET STRING | ||
| * } | ||
| */ | ||
| typedef struct krb5_checksum_st { | ||
| ASN1_INTEGER *ctype; | ||
| ASN1_OCTET_STRING *checksum; | ||
| } KRB5_CHECKSUM; | ||
|
|
||
| DECLARE_STACK_OF(KRB5_CHECKSUM) | ||
|
|
||
| /*- EncryptionKey ::= SEQUENCE { | ||
| * keytype[0] INTEGER, | ||
| * keyvalue[1] OCTET STRING | ||
| * } | ||
| */ | ||
| typedef struct krb5_encryptionkey_st { | ||
| ASN1_INTEGER *ktype; | ||
| ASN1_OCTET_STRING *keyvalue; | ||
| } KRB5_ENCKEY; | ||
|
|
||
| DECLARE_STACK_OF(KRB5_ENCKEY) | ||
|
|
||
| /*- AuthorizationData ::= SEQUENCE OF SEQUENCE { | ||
| * ad-type[0] INTEGER, | ||
| * ad-data[1] OCTET STRING | ||
| * } | ||
| */ | ||
| typedef struct krb5_authorization_st { | ||
| ASN1_INTEGER *adtype; | ||
| ASN1_OCTET_STRING *addata; | ||
| } KRB5_AUTHDATA; | ||
|
|
||
| DECLARE_STACK_OF(KRB5_AUTHDATA) | ||
|
|
||
| /*- -- Unencrypted authenticator | ||
| * Authenticator ::= [APPLICATION 2] SEQUENCE { | ||
| * authenticator-vno[0] INTEGER, | ||
| * crealm[1] Realm, | ||
| * cname[2] PrincipalName, | ||
| * cksum[3] Checksum OPTIONAL, | ||
| * cusec[4] INTEGER, | ||
| * ctime[5] KerberosTime, | ||
| * subkey[6] EncryptionKey OPTIONAL, | ||
| * seq-number[7] INTEGER OPTIONAL, | ||
| * authorization-data[8] AuthorizationData OPTIONAL | ||
| * } | ||
| */ | ||
| typedef struct krb5_authenticator_st { | ||
| ASN1_INTEGER *avno; | ||
| ASN1_GENERALSTRING *crealm; | ||
| KRB5_PRINCNAME *cname; | ||
| KRB5_CHECKSUM *cksum; | ||
| ASN1_INTEGER *cusec; | ||
| ASN1_GENERALIZEDTIME *ctime; | ||
| KRB5_ENCKEY *subkey; | ||
| ASN1_INTEGER *seqnum; | ||
| KRB5_AUTHDATA *authorization; | ||
| } KRB5_AUTHENTBODY; | ||
|
|
||
| typedef STACK_OF(KRB5_AUTHENTBODY) KRB5_AUTHENT; | ||
| DECLARE_STACK_OF(KRB5_AUTHENTBODY) | ||
|
|
||
| /*- DECLARE_ASN1_FUNCTIONS(type) = DECLARE_ASN1_FUNCTIONS_name(type, type) = | ||
| * type *name##_new(void); | ||
| * void name##_free(type *a); | ||
| * DECLARE_ASN1_ENCODE_FUNCTIONS(type, name, name) = | ||
| * DECLARE_ASN1_ENCODE_FUNCTIONS(type, itname, name) = | ||
| * type *d2i_##name(type **a, const unsigned char **in, long len); | ||
| * int i2d_##name(type *a, unsigned char **out); | ||
| * DECLARE_ASN1_ITEM(itname) = OPENSSL_EXTERN const ASN1_ITEM itname##_it | ||
| */ | ||
|
|
||
| DECLARE_ASN1_FUNCTIONS(KRB5_ENCDATA) | ||
| DECLARE_ASN1_FUNCTIONS(KRB5_PRINCNAME) | ||
| DECLARE_ASN1_FUNCTIONS(KRB5_TKTBODY) | ||
| DECLARE_ASN1_FUNCTIONS(KRB5_APREQBODY) | ||
| DECLARE_ASN1_FUNCTIONS(KRB5_TICKET) | ||
| DECLARE_ASN1_FUNCTIONS(KRB5_APREQ) | ||
|
|
||
| DECLARE_ASN1_FUNCTIONS(KRB5_CHECKSUM) | ||
| DECLARE_ASN1_FUNCTIONS(KRB5_ENCKEY) | ||
| DECLARE_ASN1_FUNCTIONS(KRB5_AUTHDATA) | ||
| DECLARE_ASN1_FUNCTIONS(KRB5_AUTHENTBODY) | ||
| DECLARE_ASN1_FUNCTIONS(KRB5_AUTHENT) | ||
|
|
||
| /* BEGIN ERROR CODES */ | ||
| /* | ||
| * The following lines are auto generated by the script mkerr.pl. Any changes | ||
| * made after this point may be overwritten when the script is next run. | ||
| */ | ||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
| #endif |
| @@ -1 +1,197 @@ | ||
| /* ssl/kssl.h -*- mode: C; c-file-style: "eay" -*- */ | ||
| /* | ||
| * Written by Vern Staats <staatsvr@asc.hpc.mil> for the OpenSSL project | ||
| * 2000. project 2000. | ||
| */ | ||
| /* ==================================================================== | ||
| * Copyright (c) 2000 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 | ||
| * licensing@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). | ||
| * | ||
| */ | ||
|
|
||
| /* | ||
| ** 19990701 VRS Started. | ||
| */ | ||
|
|
||
| #ifndef KSSL_H | ||
| # define KSSL_H | ||
|
|
||
| # include <openssl/opensslconf.h> | ||
|
|
||
| # ifndef OPENSSL_NO_KRB5 | ||
|
|
||
| # include <stdio.h> | ||
| # include <ctype.h> | ||
| # include <krb5.h> | ||
| # ifdef OPENSSL_SYS_WIN32 | ||
| /* | ||
| * These can sometimes get redefined indirectly by krb5 header files after | ||
| * they get undefed in ossl_typ.h | ||
| */ | ||
| # undef X509_NAME | ||
| # undef X509_EXTENSIONS | ||
| # undef OCSP_REQUEST | ||
| # undef OCSP_RESPONSE | ||
| # endif | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| /* | ||
| * Depending on which KRB5 implementation used, some types from | ||
| * the other may be missing. Resolve that here and now | ||
| */ | ||
| # ifdef KRB5_HEIMDAL | ||
| typedef unsigned char krb5_octet; | ||
| # define FAR | ||
| # else | ||
|
|
||
| # ifndef FAR | ||
| # define FAR | ||
| # endif | ||
|
|
||
| # endif | ||
|
|
||
| /*- | ||
| * Uncomment this to debug kssl problems or | ||
| * to trace usage of the Kerberos session key | ||
| * | ||
| * #define KSSL_DEBUG | ||
| */ | ||
|
|
||
| # ifndef KRB5SVC | ||
| # define KRB5SVC "host" | ||
| # endif | ||
|
|
||
| # ifndef KRB5KEYTAB | ||
| # define KRB5KEYTAB "/etc/krb5.keytab" | ||
| # endif | ||
|
|
||
| # ifndef KRB5SENDAUTH | ||
| # define KRB5SENDAUTH 1 | ||
| # endif | ||
|
|
||
| # ifndef KRB5CHECKAUTH | ||
| # define KRB5CHECKAUTH 1 | ||
| # endif | ||
|
|
||
| # ifndef KSSL_CLOCKSKEW | ||
| # define KSSL_CLOCKSKEW 300; | ||
| # endif | ||
|
|
||
| # define KSSL_ERR_MAX 255 | ||
| typedef struct kssl_err_st { | ||
| int reason; | ||
| char text[KSSL_ERR_MAX + 1]; | ||
| } KSSL_ERR; | ||
|
|
||
| /*- Context for passing | ||
| * (1) Kerberos session key to SSL, and | ||
| * (2) Config data between application and SSL lib | ||
| */ | ||
| typedef struct kssl_ctx_st { | ||
| /* used by: disposition: */ | ||
| char *service_name; /* C,S default ok (kssl) */ | ||
| char *service_host; /* C input, REQUIRED */ | ||
| char *client_princ; /* S output from krb5 ticket */ | ||
| char *keytab_file; /* S NULL (/etc/krb5.keytab) */ | ||
| char *cred_cache; /* C NULL (default) */ | ||
| krb5_enctype enctype; | ||
| int length; | ||
| krb5_octet FAR *key; | ||
| } KSSL_CTX; | ||
|
|
||
| # define KSSL_CLIENT 1 | ||
| # define KSSL_SERVER 2 | ||
| # define KSSL_SERVICE 3 | ||
| # define KSSL_KEYTAB 4 | ||
|
|
||
| # define KSSL_CTX_OK 0 | ||
| # define KSSL_CTX_ERR 1 | ||
| # define KSSL_NOMEM 2 | ||
|
|
||
| /* Public (for use by applications that use OpenSSL with Kerberos 5 support */ | ||
| krb5_error_code kssl_ctx_setstring(KSSL_CTX *kssl_ctx, int which, char *text); | ||
| KSSL_CTX *kssl_ctx_new(void); | ||
| KSSL_CTX *kssl_ctx_free(KSSL_CTX *kssl_ctx); | ||
| void kssl_ctx_show(KSSL_CTX *kssl_ctx); | ||
| krb5_error_code kssl_ctx_setprinc(KSSL_CTX *kssl_ctx, int which, | ||
| krb5_data *realm, krb5_data *entity, | ||
| int nentities); | ||
| krb5_error_code kssl_cget_tkt(KSSL_CTX *kssl_ctx, krb5_data **enc_tktp, | ||
| krb5_data *authenp, KSSL_ERR *kssl_err); | ||
| krb5_error_code kssl_sget_tkt(KSSL_CTX *kssl_ctx, krb5_data *indata, | ||
| krb5_ticket_times *ttimes, KSSL_ERR *kssl_err); | ||
| krb5_error_code kssl_ctx_setkey(KSSL_CTX *kssl_ctx, krb5_keyblock *session); | ||
| void kssl_err_set(KSSL_ERR *kssl_err, int reason, char *text); | ||
| void kssl_krb5_free_data_contents(krb5_context context, krb5_data *data); | ||
| krb5_error_code kssl_build_principal_2(krb5_context context, | ||
| krb5_principal *princ, int rlen, | ||
| const char *realm, int slen, | ||
| const char *svc, int hlen, | ||
| const char *host); | ||
| krb5_error_code kssl_validate_times(krb5_timestamp atime, | ||
| krb5_ticket_times *ttimes); | ||
| krb5_error_code kssl_check_authent(KSSL_CTX *kssl_ctx, krb5_data *authentp, | ||
| krb5_timestamp *atimep, | ||
| KSSL_ERR *kssl_err); | ||
| unsigned char *kssl_skip_confound(krb5_enctype enctype, unsigned char *authn); | ||
|
|
||
| void SSL_set0_kssl_ctx(SSL *s, KSSL_CTX *kctx); | ||
| KSSL_CTX *SSL_get0_kssl_ctx(SSL *s); | ||
| char *kssl_ctx_get0_client_princ(KSSL_CTX *kctx); | ||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
| # endif /* OPENSSL_NO_KRB5 */ | ||
| #endif /* KSSL_H */ |
| @@ -1 +1,240 @@ | ||
| /* crypto/lhash/lhash.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.] | ||
| */ | ||
|
|
||
| /* | ||
| * Header for dynamic hash table routines Author - Eric Young | ||
| */ | ||
|
|
||
| #ifndef HEADER_LHASH_H | ||
| # define HEADER_LHASH_H | ||
|
|
||
| # include <openssl/e_os2.h> | ||
| # ifndef OPENSSL_NO_FP_API | ||
| # include <stdio.h> | ||
| # endif | ||
|
|
||
| # ifndef OPENSSL_NO_BIO | ||
| # include <openssl/bio.h> | ||
| # endif | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| typedef struct lhash_node_st { | ||
| void *data; | ||
| struct lhash_node_st *next; | ||
| # ifndef OPENSSL_NO_HASH_COMP | ||
| unsigned long hash; | ||
| # endif | ||
| } LHASH_NODE; | ||
|
|
||
| typedef int (*LHASH_COMP_FN_TYPE) (const void *, const void *); | ||
| typedef unsigned long (*LHASH_HASH_FN_TYPE) (const void *); | ||
| typedef void (*LHASH_DOALL_FN_TYPE) (void *); | ||
| typedef void (*LHASH_DOALL_ARG_FN_TYPE) (void *, void *); | ||
|
|
||
| /* | ||
| * Macros for declaring and implementing type-safe wrappers for LHASH | ||
| * callbacks. This way, callbacks can be provided to LHASH structures without | ||
| * function pointer casting and the macro-defined callbacks provide | ||
| * per-variable casting before deferring to the underlying type-specific | ||
| * callbacks. NB: It is possible to place a "static" in front of both the | ||
| * DECLARE and IMPLEMENT macros if the functions are strictly internal. | ||
| */ | ||
|
|
||
| /* First: "hash" functions */ | ||
| # define DECLARE_LHASH_HASH_FN(name, o_type) \ | ||
| unsigned long name##_LHASH_HASH(const void *); | ||
| # define IMPLEMENT_LHASH_HASH_FN(name, o_type) \ | ||
| unsigned long name##_LHASH_HASH(const void *arg) { \ | ||
| const o_type *a = arg; \ | ||
| return name##_hash(a); } | ||
| # define LHASH_HASH_FN(name) name##_LHASH_HASH | ||
|
|
||
| /* Second: "compare" functions */ | ||
| # define DECLARE_LHASH_COMP_FN(name, o_type) \ | ||
| int name##_LHASH_COMP(const void *, const void *); | ||
| # define IMPLEMENT_LHASH_COMP_FN(name, o_type) \ | ||
| int name##_LHASH_COMP(const void *arg1, const void *arg2) { \ | ||
| const o_type *a = arg1; \ | ||
| const o_type *b = arg2; \ | ||
| return name##_cmp(a,b); } | ||
| # define LHASH_COMP_FN(name) name##_LHASH_COMP | ||
|
|
||
| /* Third: "doall" functions */ | ||
| # define DECLARE_LHASH_DOALL_FN(name, o_type) \ | ||
| void name##_LHASH_DOALL(void *); | ||
| # define IMPLEMENT_LHASH_DOALL_FN(name, o_type) \ | ||
| void name##_LHASH_DOALL(void *arg) { \ | ||
| o_type *a = arg; \ | ||
| name##_doall(a); } | ||
| # define LHASH_DOALL_FN(name) name##_LHASH_DOALL | ||
|
|
||
| /* Fourth: "doall_arg" functions */ | ||
| # define DECLARE_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ | ||
| void name##_LHASH_DOALL_ARG(void *, void *); | ||
| # define IMPLEMENT_LHASH_DOALL_ARG_FN(name, o_type, a_type) \ | ||
| void name##_LHASH_DOALL_ARG(void *arg1, void *arg2) { \ | ||
| o_type *a = arg1; \ | ||
| a_type *b = arg2; \ | ||
| name##_doall_arg(a, b); } | ||
| # define LHASH_DOALL_ARG_FN(name) name##_LHASH_DOALL_ARG | ||
|
|
||
| typedef struct lhash_st { | ||
| LHASH_NODE **b; | ||
| LHASH_COMP_FN_TYPE comp; | ||
| LHASH_HASH_FN_TYPE hash; | ||
| unsigned int num_nodes; | ||
| unsigned int num_alloc_nodes; | ||
| unsigned int p; | ||
| unsigned int pmax; | ||
| unsigned long up_load; /* load times 256 */ | ||
| unsigned long down_load; /* load times 256 */ | ||
| unsigned long num_items; | ||
| unsigned long num_expands; | ||
| unsigned long num_expand_reallocs; | ||
| unsigned long num_contracts; | ||
| unsigned long num_contract_reallocs; | ||
| unsigned long num_hash_calls; | ||
| unsigned long num_comp_calls; | ||
| unsigned long num_insert; | ||
| unsigned long num_replace; | ||
| unsigned long num_delete; | ||
| unsigned long num_no_delete; | ||
| unsigned long num_retrieve; | ||
| unsigned long num_retrieve_miss; | ||
| unsigned long num_hash_comps; | ||
| int error; | ||
| } _LHASH; /* Do not use _LHASH directly, use LHASH_OF | ||
| * and friends */ | ||
|
|
||
| # define LH_LOAD_MULT 256 | ||
|
|
||
| /* | ||
| * Indicates a malloc() error in the last call, this is only bad in | ||
| * lh_insert(). | ||
| */ | ||
| # define lh_error(lh) ((lh)->error) | ||
|
|
||
| _LHASH *lh_new(LHASH_HASH_FN_TYPE h, LHASH_COMP_FN_TYPE c); | ||
| void lh_free(_LHASH *lh); | ||
| void *lh_insert(_LHASH *lh, void *data); | ||
| void *lh_delete(_LHASH *lh, const void *data); | ||
| void *lh_retrieve(_LHASH *lh, const void *data); | ||
| void lh_doall(_LHASH *lh, LHASH_DOALL_FN_TYPE func); | ||
| void lh_doall_arg(_LHASH *lh, LHASH_DOALL_ARG_FN_TYPE func, void *arg); | ||
| unsigned long lh_strhash(const char *c); | ||
| unsigned long lh_num_items(const _LHASH *lh); | ||
|
|
||
| # ifndef OPENSSL_NO_FP_API | ||
| void lh_stats(const _LHASH *lh, FILE *out); | ||
| void lh_node_stats(const _LHASH *lh, FILE *out); | ||
| void lh_node_usage_stats(const _LHASH *lh, FILE *out); | ||
| # endif | ||
|
|
||
| # ifndef OPENSSL_NO_BIO | ||
| void lh_stats_bio(const _LHASH *lh, BIO *out); | ||
| void lh_node_stats_bio(const _LHASH *lh, BIO *out); | ||
| void lh_node_usage_stats_bio(const _LHASH *lh, BIO *out); | ||
| # endif | ||
|
|
||
| /* Type checking... */ | ||
|
|
||
| # define LHASH_OF(type) struct lhash_st_##type | ||
|
|
||
| # define DECLARE_LHASH_OF(type) LHASH_OF(type) { int dummy; } | ||
|
|
||
| # define CHECKED_LHASH_OF(type,lh) \ | ||
| ((_LHASH *)CHECKED_PTR_OF(LHASH_OF(type),lh)) | ||
|
|
||
| /* Define wrapper functions. */ | ||
| # define LHM_lh_new(type, name) \ | ||
| ((LHASH_OF(type) *)lh_new(LHASH_HASH_FN(name), LHASH_COMP_FN(name))) | ||
| # define LHM_lh_error(type, lh) \ | ||
| lh_error(CHECKED_LHASH_OF(type,lh)) | ||
| # define LHM_lh_insert(type, lh, inst) \ | ||
| ((type *)lh_insert(CHECKED_LHASH_OF(type, lh), \ | ||
| CHECKED_PTR_OF(type, inst))) | ||
| # define LHM_lh_retrieve(type, lh, inst) \ | ||
| ((type *)lh_retrieve(CHECKED_LHASH_OF(type, lh), \ | ||
| CHECKED_PTR_OF(type, inst))) | ||
| # define LHM_lh_delete(type, lh, inst) \ | ||
| ((type *)lh_delete(CHECKED_LHASH_OF(type, lh), \ | ||
| CHECKED_PTR_OF(type, inst))) | ||
| # define LHM_lh_doall(type, lh,fn) lh_doall(CHECKED_LHASH_OF(type, lh), fn) | ||
| # define LHM_lh_doall_arg(type, lh, fn, arg_type, arg) \ | ||
| lh_doall_arg(CHECKED_LHASH_OF(type, lh), fn, CHECKED_PTR_OF(arg_type, arg)) | ||
| # define LHM_lh_num_items(type, lh) lh_num_items(CHECKED_LHASH_OF(type, lh)) | ||
| # define LHM_lh_down_load(type, lh) (CHECKED_LHASH_OF(type, lh)->down_load) | ||
| # define LHM_lh_node_stats_bio(type, lh, out) \ | ||
| lh_node_stats_bio(CHECKED_LHASH_OF(type, lh), out) | ||
| # define LHM_lh_node_usage_stats_bio(type, lh, out) \ | ||
| lh_node_usage_stats_bio(CHECKED_LHASH_OF(type, lh), out) | ||
| # define LHM_lh_stats_bio(type, lh, out) \ | ||
| lh_stats_bio(CHECKED_LHASH_OF(type, lh), out) | ||
| # define LHM_lh_free(type, lh) lh_free(CHECKED_LHASH_OF(type, lh)) | ||
|
|
||
| DECLARE_LHASH_OF(OPENSSL_STRING); | ||
| DECLARE_LHASH_OF(OPENSSL_CSTRING); | ||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
|
|
||
| #endif |
| @@ -1 +1,119 @@ | ||
| /* crypto/md4/md4.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.] | ||
| */ | ||
|
|
||
| #ifndef HEADER_MD4_H | ||
| # define HEADER_MD4_H | ||
|
|
||
| # include <openssl/e_os2.h> | ||
| # include <stddef.h> | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| # ifdef OPENSSL_NO_MD4 | ||
| # error MD4 is disabled. | ||
| # endif | ||
|
|
||
| /*- | ||
| * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| * ! MD4_LONG has to be at least 32 bits wide. If it's wider, then ! | ||
| * ! MD4_LONG_LOG2 has to be defined along. ! | ||
| * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| */ | ||
|
|
||
| # if defined(__LP32__) | ||
| # define MD4_LONG unsigned long | ||
| # elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__) | ||
| # define MD4_LONG unsigned long | ||
| # define MD4_LONG_LOG2 3 | ||
| /* | ||
| * _CRAY note. I could declare short, but I have no idea what impact | ||
| * does it have on performance on none-T3E machines. I could declare | ||
| * int, but at least on C90 sizeof(int) can be chosen at compile time. | ||
| * So I've chosen long... | ||
| * <appro@fy.chalmers.se> | ||
| */ | ||
| # else | ||
| # define MD4_LONG unsigned int | ||
| # endif | ||
|
|
||
| # define MD4_CBLOCK 64 | ||
| # define MD4_LBLOCK (MD4_CBLOCK/4) | ||
| # define MD4_DIGEST_LENGTH 16 | ||
|
|
||
| typedef struct MD4state_st { | ||
| MD4_LONG A, B, C, D; | ||
| MD4_LONG Nl, Nh; | ||
| MD4_LONG data[MD4_LBLOCK]; | ||
| unsigned int num; | ||
| } MD4_CTX; | ||
|
|
||
| # ifdef OPENSSL_FIPS | ||
| int private_MD4_Init(MD4_CTX *c); | ||
| # endif | ||
| int MD4_Init(MD4_CTX *c); | ||
| int MD4_Update(MD4_CTX *c, const void *data, size_t len); | ||
| int MD4_Final(unsigned char *md, MD4_CTX *c); | ||
| unsigned char *MD4(const unsigned char *d, size_t n, unsigned char *md); | ||
| void MD4_Transform(MD4_CTX *c, const unsigned char *b); | ||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
|
|
||
| #endif |
| @@ -1 +1,119 @@ | ||
| /* crypto/md5/md5.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.] | ||
| */ | ||
|
|
||
| #ifndef HEADER_MD5_H | ||
| # define HEADER_MD5_H | ||
|
|
||
| # include <openssl/e_os2.h> | ||
| # include <stddef.h> | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| # ifdef OPENSSL_NO_MD5 | ||
| # error MD5 is disabled. | ||
| # endif | ||
|
|
||
| /* | ||
| * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| * ! MD5_LONG has to be at least 32 bits wide. If it's wider, then ! | ||
| * ! MD5_LONG_LOG2 has to be defined along. ! | ||
| * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| */ | ||
|
|
||
| # if defined(__LP32__) | ||
| # define MD5_LONG unsigned long | ||
| # elif defined(OPENSSL_SYS_CRAY) || defined(__ILP64__) | ||
| # define MD5_LONG unsigned long | ||
| # define MD5_LONG_LOG2 3 | ||
| /* | ||
| * _CRAY note. I could declare short, but I have no idea what impact | ||
| * does it have on performance on none-T3E machines. I could declare | ||
| * int, but at least on C90 sizeof(int) can be chosen at compile time. | ||
| * So I've chosen long... | ||
| * <appro@fy.chalmers.se> | ||
| */ | ||
| # else | ||
| # define MD5_LONG unsigned int | ||
| # endif | ||
|
|
||
| # define MD5_CBLOCK 64 | ||
| # define MD5_LBLOCK (MD5_CBLOCK/4) | ||
| # define MD5_DIGEST_LENGTH 16 | ||
|
|
||
| typedef struct MD5state_st { | ||
| MD5_LONG A, B, C, D; | ||
| MD5_LONG Nl, Nh; | ||
| MD5_LONG data[MD5_LBLOCK]; | ||
| unsigned int num; | ||
| } MD5_CTX; | ||
|
|
||
| # ifdef OPENSSL_FIPS | ||
| int private_MD5_Init(MD5_CTX *c); | ||
| # endif | ||
| int MD5_Init(MD5_CTX *c); | ||
| int MD5_Update(MD5_CTX *c, const void *data, size_t len); | ||
| int MD5_Final(unsigned char *md, MD5_CTX *c); | ||
| unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md); | ||
| void MD5_Transform(MD5_CTX *c, const unsigned char *b); | ||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
|
|
||
| #endif |
| @@ -1 +1,94 @@ | ||
| /* crypto/mdc2/mdc2.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.] | ||
| */ | ||
|
|
||
| #ifndef HEADER_MDC2_H | ||
| # define HEADER_MDC2_H | ||
|
|
||
| # include <openssl/des.h> | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
|
|
||
| # ifdef OPENSSL_NO_MDC2 | ||
| # error MDC2 is disabled. | ||
| # endif | ||
|
|
||
| # define MDC2_BLOCK 8 | ||
| # define MDC2_DIGEST_LENGTH 16 | ||
|
|
||
| typedef struct mdc2_ctx_st { | ||
| unsigned int num; | ||
| unsigned char data[MDC2_BLOCK]; | ||
| DES_cblock h, hh; | ||
| int pad_type; /* either 1 or 2, default 1 */ | ||
| } MDC2_CTX; | ||
|
|
||
| # ifdef OPENSSL_FIPS | ||
| int private_MDC2_Init(MDC2_CTX *c); | ||
| # endif | ||
| int MDC2_Init(MDC2_CTX *c); | ||
| int MDC2_Update(MDC2_CTX *c, const unsigned char *data, size_t len); | ||
| int MDC2_Final(unsigned char *md, MDC2_CTX *c); | ||
| unsigned char *MDC2(const unsigned char *d, size_t n, unsigned char *md); | ||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif | ||
|
|
||
| #endif |
| @@ -1 +1,153 @@ | ||
| /* ==================================================================== | ||
| * Copyright (c) 2008 The OpenSSL Project. All rights reserved. | ||
| * | ||
| * Rights for redistribution and usage in source and binary | ||
| * forms are granted according to the OpenSSL license. | ||
| */ | ||
|
|
||
| #include <stddef.h> | ||
|
|
||
| #ifdef __cplusplus | ||
| extern "C" { | ||
| #endif | ||
| typedef void (*block128_f) (const unsigned char in[16], | ||
| unsigned char out[16], const void *key); | ||
|
|
||
| typedef void (*cbc128_f) (const unsigned char *in, unsigned char *out, | ||
| size_t len, const void *key, | ||
| unsigned char ivec[16], int enc); | ||
|
|
||
| typedef void (*ctr128_f) (const unsigned char *in, unsigned char *out, | ||
| size_t blocks, const void *key, | ||
| const unsigned char ivec[16]); | ||
|
|
||
| typedef void (*ccm128_f) (const unsigned char *in, unsigned char *out, | ||
| size_t blocks, const void *key, | ||
| const unsigned char ivec[16], | ||
| unsigned char cmac[16]); | ||
|
|
||
| void CRYPTO_cbc128_encrypt(const unsigned char *in, unsigned char *out, | ||
| size_t len, const void *key, | ||
| unsigned char ivec[16], block128_f block); | ||
| void CRYPTO_cbc128_decrypt(const unsigned char *in, unsigned char *out, | ||
| size_t len, const void *key, | ||
| unsigned char ivec[16], block128_f block); | ||
|
|
||
| void CRYPTO_ctr128_encrypt(const unsigned char *in, unsigned char *out, | ||
| size_t len, const void *key, | ||
| unsigned char ivec[16], | ||
| unsigned char ecount_buf[16], unsigned int *num, | ||
| block128_f block); | ||
|
|
||
| void CRYPTO_ctr128_encrypt_ctr32(const unsigned char *in, unsigned char *out, | ||
| size_t len, const void *key, | ||
| unsigned char ivec[16], | ||
| unsigned char ecount_buf[16], | ||
| unsigned int *num, ctr128_f ctr); | ||
|
|
||
| void CRYPTO_ofb128_encrypt(const unsigned char *in, unsigned char *out, | ||
| size_t len, const void *key, | ||
| unsigned char ivec[16], int *num, | ||
| block128_f block); | ||
|
|
||
| void CRYPTO_cfb128_encrypt(const unsigned char *in, unsigned char *out, | ||
| size_t len, const void *key, | ||
| unsigned char ivec[16], int *num, | ||
| int enc, block128_f block); | ||
| void CRYPTO_cfb128_8_encrypt(const unsigned char *in, unsigned char *out, | ||
| size_t length, const void *key, | ||
| unsigned char ivec[16], int *num, | ||
| int enc, block128_f block); | ||
| void CRYPTO_cfb128_1_encrypt(const unsigned char *in, unsigned char *out, | ||
| size_t bits, const void *key, | ||
| unsigned char ivec[16], int *num, | ||
| int enc, block128_f block); | ||
|
|
||
| size_t CRYPTO_cts128_encrypt_block(const unsigned char *in, | ||
| unsigned char *out, size_t len, | ||
| const void *key, unsigned char ivec[16], | ||
| block128_f block); | ||
| size_t CRYPTO_cts128_encrypt(const unsigned char *in, unsigned char *out, | ||
| size_t len, const void *key, | ||
| unsigned char ivec[16], cbc128_f cbc); | ||
| size_t CRYPTO_cts128_decrypt_block(const unsigned char *in, | ||
| unsigned char *out, size_t len, | ||
| const void *key, unsigned char ivec[16], | ||
| block128_f block); | ||
| size_t CRYPTO_cts128_decrypt(const unsigned char *in, unsigned char *out, | ||
| size_t len, const void *key, | ||
| unsigned char ivec[16], cbc128_f cbc); | ||
|
|
||
| size_t CRYPTO_nistcts128_encrypt_block(const unsigned char *in, | ||
| unsigned char *out, size_t len, | ||
| const void *key, | ||
| unsigned char ivec[16], | ||
| block128_f block); | ||
| size_t CRYPTO_nistcts128_encrypt(const unsigned char *in, unsigned char *out, | ||
| size_t len, const void *key, | ||
| unsigned char ivec[16], cbc128_f cbc); | ||
| size_t CRYPTO_nistcts128_decrypt_block(const unsigned char *in, | ||
| unsigned char *out, size_t len, | ||
| const void *key, | ||
| unsigned char ivec[16], | ||
| block128_f block); | ||
| size_t CRYPTO_nistcts128_decrypt(const unsigned char *in, unsigned char *out, | ||
| size_t len, const void *key, | ||
| unsigned char ivec[16], cbc128_f cbc); | ||
|
|
||
| typedef struct gcm128_context GCM128_CONTEXT; | ||
|
|
||
| GCM128_CONTEXT *CRYPTO_gcm128_new(void *key, block128_f block); | ||
| void CRYPTO_gcm128_init(GCM128_CONTEXT *ctx, void *key, block128_f block); | ||
| void CRYPTO_gcm128_setiv(GCM128_CONTEXT *ctx, const unsigned char *iv, | ||
| size_t len); | ||
| int CRYPTO_gcm128_aad(GCM128_CONTEXT *ctx, const unsigned char *aad, | ||
| size_t len); | ||
| int CRYPTO_gcm128_encrypt(GCM128_CONTEXT *ctx, | ||
| const unsigned char *in, unsigned char *out, | ||
| size_t len); | ||
| int CRYPTO_gcm128_decrypt(GCM128_CONTEXT *ctx, | ||
| const unsigned char *in, unsigned char *out, | ||
| size_t len); | ||
| int CRYPTO_gcm128_encrypt_ctr32(GCM128_CONTEXT *ctx, | ||
| const unsigned char *in, unsigned char *out, | ||
| size_t len, ctr128_f stream); | ||
| int CRYPTO_gcm128_decrypt_ctr32(GCM128_CONTEXT *ctx, | ||
| const unsigned char *in, unsigned char *out, | ||
| size_t len, ctr128_f stream); | ||
| int CRYPTO_gcm128_finish(GCM128_CONTEXT *ctx, const unsigned char *tag, | ||
| size_t len); | ||
| void CRYPTO_gcm128_tag(GCM128_CONTEXT *ctx, unsigned char *tag, size_t len); | ||
| void CRYPTO_gcm128_release(GCM128_CONTEXT *ctx); | ||
|
|
||
| typedef struct ccm128_context CCM128_CONTEXT; | ||
|
|
||
| void CRYPTO_ccm128_init(CCM128_CONTEXT *ctx, | ||
| unsigned int M, unsigned int L, void *key, | ||
| block128_f block); | ||
| int CRYPTO_ccm128_setiv(CCM128_CONTEXT *ctx, const unsigned char *nonce, | ||
| size_t nlen, size_t mlen); | ||
| void CRYPTO_ccm128_aad(CCM128_CONTEXT *ctx, const unsigned char *aad, | ||
| size_t alen); | ||
| int CRYPTO_ccm128_encrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, | ||
| unsigned char *out, size_t len); | ||
| int CRYPTO_ccm128_decrypt(CCM128_CONTEXT *ctx, const unsigned char *inp, | ||
| unsigned char *out, size_t len); | ||
| int CRYPTO_ccm128_encrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, | ||
| unsigned char *out, size_t len, | ||
| ccm128_f stream); | ||
| int CRYPTO_ccm128_decrypt_ccm64(CCM128_CONTEXT *ctx, const unsigned char *inp, | ||
| unsigned char *out, size_t len, | ||
| ccm128_f stream); | ||
| size_t CRYPTO_ccm128_tag(CCM128_CONTEXT *ctx, unsigned char *tag, size_t len); | ||
|
|
||
| typedef struct xts128_context XTS128_CONTEXT; | ||
|
|
||
| int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, | ||
| const unsigned char iv[16], | ||
| const unsigned char *inp, unsigned char *out, | ||
| size_t len, int enc); | ||
|
|
||
| #ifdef __cplusplus | ||
| } | ||
| #endif |