diff options
| author | auth <[email protected]> | 2020-07-17 00:32:35 +0200 |
|---|---|---|
| committer | auth <[email protected]> | 2020-07-17 00:32:35 +0200 |
| commit | 3c7fc3621a15df87eaadea767af2a30f123341b3 (patch) | |
| tree | 189acf79b8a1506444c110d87e97c2d3cda838c7 /client | |
| parent | Added windows support on client. (diff) | |
| download | loader-3c7fc3621a15df87eaadea767af2a30f123341b3.tar.xz loader-3c7fc3621a15df87eaadea767af2a30f123341b3.zip | |
Removed un
Diffstat (limited to 'client')
165 files changed, 0 insertions, 45282 deletions
diff --git a/client/wolfssl/wolfssl/callbacks.h b/client/wolfssl/wolfssl/callbacks.h deleted file mode 100644 index eed2729..0000000 --- a/client/wolfssl/wolfssl/callbacks.h +++ /dev/null @@ -1,93 +0,0 @@ -/* callbacks.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -#ifndef WOLFSSL_CALLBACKS_H -#define WOLFSSL_CALLBACKS_H - -#include <wolfssl/wolfcrypt/wc_port.h> - -#ifdef __cplusplus - extern "C" { -#endif - - -enum { /* CALLBACK CONSTANTS */ - MAX_PACKETNAME_SZ = 24, - MAX_CIPHERNAME_SZ = 24, - MAX_TIMEOUT_NAME_SZ = 24, - MAX_PACKETS_HANDSHAKE = 14, /* 12 for client auth plus 2 alerts */ - MAX_VALUE_SZ = 128, /* all handshake packets but Cert should - fit here */ -}; - -struct WOLFSSL; - -typedef struct handShakeInfo_st { - struct WOLFSSL* ssl; - char cipherName[MAX_CIPHERNAME_SZ + 1]; /* negotiated cipher */ - char packetNames[MAX_PACKETS_HANDSHAKE][MAX_PACKETNAME_SZ + 1]; - /* SSL packet names */ - int numberPackets; /* actual # of packets */ - int negotiationError; /* cipher/parameter err */ -} HandShakeInfo; - - -#if defined(HAVE_SYS_TIME_H) && !defined(NO_TIMEVAL) - typedef struct timeval WOLFSSL_TIMEVAL; -#else /* HAVE_SYS_TIME_H */ - /* Define the timeval explicitly. */ - typedef struct { - long tv_sec; /* Seconds. */ - long tv_usec; /* Microseconds. */ - } WOLFSSL_TIMEVAL; -#endif /* HAVE_SYS_TIME_H */ -#if !defined(NO_OLD_TIMEVAL_NAME) - #define Timeval WOLFSSL_TIMEVAL -#endif - -typedef struct packetInfo_st { - char packetName[MAX_PACKETNAME_SZ + 1]; /* SSL packet name */ - WOLFSSL_TIMEVAL timestamp; /* when it occurred */ - unsigned char value[MAX_VALUE_SZ]; /* if fits, it's here */ - unsigned char* bufferValue; /* otherwise here (non 0) */ - int valueSz; /* sz of value or buffer */ -} PacketInfo; - - -typedef struct timeoutInfo_st { - char timeoutName[MAX_TIMEOUT_NAME_SZ + 1]; /* timeout Name */ - int flags; /* for future use */ - int numberPackets; /* actual # of packets */ - PacketInfo packets[MAX_PACKETS_HANDSHAKE]; /* list of all packets */ - WOLFSSL_TIMEVAL timeoutValue; /* timer that caused it */ -} TimeoutInfo; - - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* WOLFSSL_CALLBACKS_H */ - diff --git a/client/wolfssl/wolfssl/certs_test.h b/client/wolfssl/wolfssl/certs_test.h deleted file mode 100644 index 6562e9f..0000000 --- a/client/wolfssl/wolfssl/certs_test.h +++ /dev/null @@ -1,4148 +0,0 @@ -/* certs_test.h */ - -#ifndef WOLFSSL_CERTS_TEST_H -#define WOLFSSL_CERTS_TEST_H - -#ifdef USE_CERT_BUFFERS_1024 - -/* ./certs/1024/client-key.der, 1024-bit */ -static const unsigned char client_key_der_1024[] = -{ - 0x30, 0x82, 0x02, 0x5C, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, - 0x00, 0xBC, 0x73, 0x0E, 0xA8, 0x49, 0xF3, 0x74, 0xA2, 0xA9, - 0xEF, 0x18, 0xA5, 0xDA, 0x55, 0x99, 0x21, 0xF9, 0xC8, 0xEC, - 0xB3, 0x6D, 0x48, 0xE5, 0x35, 0x35, 0x75, 0x77, 0x37, 0xEC, - 0xD1, 0x61, 0x90, 0x5F, 0x3E, 0xD9, 0xE4, 0xD5, 0xDF, 0x94, - 0xCA, 0xC1, 0xA9, 0xD7, 0x19, 0xDA, 0x86, 0xC9, 0xE8, 0x4D, - 0xC4, 0x61, 0x36, 0x82, 0xFE, 0xAB, 0xAD, 0x7E, 0x77, 0x25, - 0xBB, 0x8D, 0x11, 0xA5, 0xBC, 0x62, 0x3A, 0xA8, 0x38, 0xCC, - 0x39, 0xA2, 0x04, 0x66, 0xB4, 0xF7, 0xF7, 0xF3, 0xAA, 0xDA, - 0x4D, 0x02, 0x0E, 0xBB, 0x5E, 0x8D, 0x69, 0x48, 0xDC, 0x77, - 0xC9, 0x28, 0x0E, 0x22, 0xE9, 0x6B, 0xA4, 0x26, 0xBA, 0x4C, - 0xE8, 0xC1, 0xFD, 0x4A, 0x6F, 0x2B, 0x1F, 0xEF, 0x8A, 0xAE, - 0xF6, 0x90, 0x62, 0xE5, 0x64, 0x1E, 0xEB, 0x2B, 0x3C, 0x67, - 0xC8, 0xDC, 0x27, 0x00, 0xF6, 0x91, 0x68, 0x65, 0xA9, 0x02, - 0x03, 0x01, 0x00, 0x01, 0x02, 0x81, 0x80, 0x13, 0x97, 0xEA, - 0xE8, 0x38, 0x78, 0x25, 0xA2, 0x5C, 0x04, 0xCE, 0x0D, 0x40, - 0x7C, 0x31, 0xE5, 0xC4, 0x70, 0xCD, 0x9B, 0x82, 0x3B, 0x58, - 0x09, 0x86, 0x3B, 0x66, 0x5F, 0xDC, 0x31, 0x90, 0xF1, 0x4F, - 0xD5, 0xDB, 0x15, 0xDD, 0xDE, 0xD7, 0x3B, 0x95, 0x93, 0x31, - 0x18, 0x31, 0x0E, 0x5E, 0xA3, 0xD6, 0xA2, 0x1A, 0x71, 0x6E, - 0x81, 0x48, 0x1C, 0x4B, 0xCF, 0xDB, 0x8E, 0x7A, 0x86, 0x61, - 0x32, 0xDC, 0xFB, 0x55, 0xC1, 0x16, 0x6D, 0x27, 0x92, 0x24, - 0x45, 0x8B, 0xF1, 0xB8, 0x48, 0xB1, 0x4B, 0x1D, 0xAC, 0xDE, - 0xDA, 0xDD, 0x8E, 0x2F, 0xC2, 0x91, 0xFB, 0xA5, 0xA9, 0x6E, - 0xF8, 0x3A, 0x6A, 0xF1, 0xFD, 0x50, 0x18, 0xEF, 0x9F, 0xE7, - 0xC3, 0xCA, 0x78, 0xEA, 0x56, 0xD3, 0xD3, 0x72, 0x5B, 0x96, - 0xDD, 0x4E, 0x06, 0x4E, 0x3A, 0xC3, 0xD9, 0xBE, 0x72, 0xB6, - 0x65, 0x07, 0x07, 0x4C, 0x01, 0x02, 0x41, 0x00, 0xFA, 0x47, - 0xD4, 0x7A, 0x7C, 0x92, 0x3C, 0x55, 0xEF, 0x81, 0xF0, 0x41, - 0x30, 0x2D, 0xA3, 0xCF, 0x8F, 0x1C, 0xE6, 0x87, 0x27, 0x05, - 0x70, 0x0D, 0xDF, 0x98, 0x35, 0xD6, 0xF1, 0x8B, 0x38, 0x2F, - 0x24, 0xB5, 0xD0, 0x84, 0xB6, 0x79, 0x4F, 0x71, 0x29, 0x94, - 0x5A, 0xF0, 0x64, 0x6A, 0xAC, 0xE7, 0x72, 0xC6, 0xED, 0x4D, - 0x59, 0x98, 0x3E, 0x67, 0x3A, 0xF3, 0x74, 0x2C, 0xF9, 0x61, - 0x17, 0x69, 0x02, 0x41, 0x00, 0xC0, 0xC1, 0x82, 0x0D, 0x0C, - 0xEB, 0xC6, 0x2F, 0xDC, 0x92, 0xF9, 0x9D, 0x82, 0x1A, 0x31, - 0xE9, 0xE9, 0xF7, 0x4B, 0xF2, 0x82, 0x87, 0x1C, 0xEE, 0x16, - 0x6A, 0xD1, 0x1D, 0x18, 0x82, 0x70, 0xF3, 0xC0, 0xB6, 0x2F, - 0xF6, 0xF3, 0xF7, 0x1D, 0xF1, 0x86, 0x23, 0xC8, 0x4E, 0xEB, - 0x8F, 0x56, 0x8E, 0x8F, 0xF5, 0xBF, 0xF1, 0xF7, 0x2B, 0xB5, - 0xCC, 0x3D, 0xC6, 0x57, 0x39, 0x0C, 0x1B, 0x54, 0x41, 0x02, - 0x41, 0x00, 0x9D, 0x7E, 0x05, 0xDE, 0xED, 0xF4, 0xB7, 0xB2, - 0xFB, 0xFC, 0x30, 0x4B, 0x55, 0x1D, 0xE3, 0x2F, 0x01, 0x47, - 0x96, 0x69, 0x05, 0xCD, 0x0E, 0x2E, 0x2C, 0xBD, 0x83, 0x63, - 0xB6, 0xAB, 0x7C, 0xB7, 0x6D, 0xCA, 0x5B, 0x64, 0xA7, 0xCE, - 0xBE, 0x86, 0xDF, 0x3B, 0x53, 0xDE, 0x61, 0xD2, 0x1E, 0xEB, - 0xA5, 0xF6, 0x37, 0xED, 0xAC, 0xAB, 0x78, 0xD9, 0x4C, 0xE7, - 0x55, 0xFB, 0xD7, 0x11, 0x99, 0xC1, 0x02, 0x40, 0x18, 0x98, - 0x18, 0x29, 0xE6, 0x1E, 0x27, 0x39, 0x70, 0x21, 0x68, 0xAC, - 0x0A, 0x2F, 0xA1, 0x72, 0xC1, 0x21, 0x86, 0x95, 0x38, 0xC6, - 0x58, 0x90, 0xA0, 0x57, 0x9C, 0xBA, 0xE3, 0xA7, 0xB1, 0x15, - 0xC8, 0xDE, 0xF6, 0x1B, 0xC2, 0x61, 0x23, 0x76, 0xEF, 0xB0, - 0x9D, 0x1C, 0x44, 0xBE, 0x13, 0x43, 0x39, 0x67, 0x17, 0xC8, - 0x9D, 0xCA, 0xFB, 0xF5, 0x45, 0x64, 0x8B, 0x38, 0x82, 0x2C, - 0xF2, 0x81, 0x02, 0x40, 0x39, 0x89, 0xE5, 0x9C, 0x19, 0x55, - 0x30, 0xBA, 0xB7, 0x48, 0x8C, 0x48, 0x14, 0x0E, 0xF4, 0x9F, - 0x7E, 0x77, 0x97, 0x43, 0xE1, 0xB4, 0x19, 0x35, 0x31, 0x23, - 0x75, 0x9C, 0x3B, 0x44, 0xAD, 0x69, 0x12, 0x56, 0xEE, 0x00, - 0x61, 0x64, 0x16, 0x66, 0xD3, 0x7C, 0x74, 0x2B, 0x15, 0xB4, - 0xA2, 0xFE, 0xBF, 0x08, 0x6B, 0x1A, 0x5D, 0x3F, 0x90, 0x12, - 0xB1, 0x05, 0x86, 0x31, 0x29, 0xDB, 0xD9, 0xE2 -}; -static const int sizeof_client_key_der_1024 = sizeof(client_key_der_1024); - -/* ./certs/1024/client-keyPub.der, 1024-bit */ -static const unsigned char client_keypub_der_1024[] = -{ - 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, - 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, - 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xBC, - 0x73, 0x0E, 0xA8, 0x49, 0xF3, 0x74, 0xA2, 0xA9, 0xEF, 0x18, - 0xA5, 0xDA, 0x55, 0x99, 0x21, 0xF9, 0xC8, 0xEC, 0xB3, 0x6D, - 0x48, 0xE5, 0x35, 0x35, 0x75, 0x77, 0x37, 0xEC, 0xD1, 0x61, - 0x90, 0x5F, 0x3E, 0xD9, 0xE4, 0xD5, 0xDF, 0x94, 0xCA, 0xC1, - 0xA9, 0xD7, 0x19, 0xDA, 0x86, 0xC9, 0xE8, 0x4D, 0xC4, 0x61, - 0x36, 0x82, 0xFE, 0xAB, 0xAD, 0x7E, 0x77, 0x25, 0xBB, 0x8D, - 0x11, 0xA5, 0xBC, 0x62, 0x3A, 0xA8, 0x38, 0xCC, 0x39, 0xA2, - 0x04, 0x66, 0xB4, 0xF7, 0xF7, 0xF3, 0xAA, 0xDA, 0x4D, 0x02, - 0x0E, 0xBB, 0x5E, 0x8D, 0x69, 0x48, 0xDC, 0x77, 0xC9, 0x28, - 0x0E, 0x22, 0xE9, 0x6B, 0xA4, 0x26, 0xBA, 0x4C, 0xE8, 0xC1, - 0xFD, 0x4A, 0x6F, 0x2B, 0x1F, 0xEF, 0x8A, 0xAE, 0xF6, 0x90, - 0x62, 0xE5, 0x64, 0x1E, 0xEB, 0x2B, 0x3C, 0x67, 0xC8, 0xDC, - 0x27, 0x00, 0xF6, 0x91, 0x68, 0x65, 0xA9, 0x02, 0x03, 0x01, - 0x00, 0x01 -}; -static const int sizeof_client_keypub_der_1024 = sizeof(client_keypub_der_1024); - -/* ./certs/1024/client-cert.der, 1024-bit */ -static const unsigned char client_cert_der_1024[] = -{ - 0x30, 0x82, 0x03, 0xC5, 0x30, 0x82, 0x03, 0x2E, 0xA0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0xBB, 0xD3, 0x10, 0x03, - 0xE6, 0x9D, 0x28, 0x03, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x30, - 0x81, 0x9E, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, - 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, - 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, - 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, - 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, - 0x6E, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, - 0x0C, 0x0C, 0x77, 0x6F, 0x6C, 0x66, 0x53, 0x53, 0x4C, 0x5F, - 0x31, 0x30, 0x32, 0x34, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, - 0x55, 0x04, 0x0B, 0x0C, 0x10, 0x50, 0x72, 0x6F, 0x67, 0x72, - 0x61, 0x6D, 0x6D, 0x69, 0x6E, 0x67, 0x2D, 0x31, 0x30, 0x32, - 0x34, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, - 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, - 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, - 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, - 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, - 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, - 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30, 0x34, 0x31, 0x33, - 0x31, 0x35, 0x32, 0x33, 0x30, 0x39, 0x5A, 0x17, 0x0D, 0x32, - 0x31, 0x30, 0x31, 0x30, 0x37, 0x31, 0x35, 0x32, 0x33, 0x30, - 0x39, 0x5A, 0x30, 0x81, 0x9E, 0x31, 0x0B, 0x30, 0x09, 0x06, - 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, - 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, - 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, - 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, - 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, - 0x55, 0x04, 0x0A, 0x0C, 0x0C, 0x77, 0x6F, 0x6C, 0x66, 0x53, - 0x53, 0x4C, 0x5F, 0x31, 0x30, 0x32, 0x34, 0x31, 0x19, 0x30, - 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x10, 0x50, 0x72, - 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x69, 0x6E, 0x67, 0x2D, - 0x31, 0x30, 0x32, 0x34, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, - 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, - 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, - 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, - 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, - 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, - 0x63, 0x6F, 0x6D, 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, - 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, - 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, - 0x81, 0x00, 0xBC, 0x73, 0x0E, 0xA8, 0x49, 0xF3, 0x74, 0xA2, - 0xA9, 0xEF, 0x18, 0xA5, 0xDA, 0x55, 0x99, 0x21, 0xF9, 0xC8, - 0xEC, 0xB3, 0x6D, 0x48, 0xE5, 0x35, 0x35, 0x75, 0x77, 0x37, - 0xEC, 0xD1, 0x61, 0x90, 0x5F, 0x3E, 0xD9, 0xE4, 0xD5, 0xDF, - 0x94, 0xCA, 0xC1, 0xA9, 0xD7, 0x19, 0xDA, 0x86, 0xC9, 0xE8, - 0x4D, 0xC4, 0x61, 0x36, 0x82, 0xFE, 0xAB, 0xAD, 0x7E, 0x77, - 0x25, 0xBB, 0x8D, 0x11, 0xA5, 0xBC, 0x62, 0x3A, 0xA8, 0x38, - 0xCC, 0x39, 0xA2, 0x04, 0x66, 0xB4, 0xF7, 0xF7, 0xF3, 0xAA, - 0xDA, 0x4D, 0x02, 0x0E, 0xBB, 0x5E, 0x8D, 0x69, 0x48, 0xDC, - 0x77, 0xC9, 0x28, 0x0E, 0x22, 0xE9, 0x6B, 0xA4, 0x26, 0xBA, - 0x4C, 0xE8, 0xC1, 0xFD, 0x4A, 0x6F, 0x2B, 0x1F, 0xEF, 0x8A, - 0xAE, 0xF6, 0x90, 0x62, 0xE5, 0x64, 0x1E, 0xEB, 0x2B, 0x3C, - 0x67, 0xC8, 0xDC, 0x27, 0x00, 0xF6, 0x91, 0x68, 0x65, 0xA9, - 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, 0x07, 0x30, - 0x82, 0x01, 0x03, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, - 0x04, 0x16, 0x04, 0x14, 0x81, 0x69, 0x0F, 0xF8, 0xDF, 0xDD, - 0xCF, 0x34, 0x29, 0xD5, 0x67, 0x75, 0x71, 0x85, 0xC7, 0x75, - 0x10, 0x69, 0x59, 0xEC, 0x30, 0x81, 0xD3, 0x06, 0x03, 0x55, - 0x1D, 0x23, 0x04, 0x81, 0xCB, 0x30, 0x81, 0xC8, 0x80, 0x14, - 0x81, 0x69, 0x0F, 0xF8, 0xDF, 0xDD, 0xCF, 0x34, 0x29, 0xD5, - 0x67, 0x75, 0x71, 0x85, 0xC7, 0x75, 0x10, 0x69, 0x59, 0xEC, - 0xA1, 0x81, 0xA4, 0xA4, 0x81, 0xA1, 0x30, 0x81, 0x9E, 0x31, - 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, - 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, - 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, - 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, - 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x15, - 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x0C, 0x77, - 0x6F, 0x6C, 0x66, 0x53, 0x53, 0x4C, 0x5F, 0x31, 0x30, 0x32, - 0x34, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, - 0x0C, 0x10, 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, - 0x69, 0x6E, 0x67, 0x2D, 0x31, 0x30, 0x32, 0x34, 0x31, 0x18, - 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, - 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, - 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, - 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, - 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, - 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x82, 0x09, 0x00, - 0xBB, 0xD3, 0x10, 0x03, 0xE6, 0x9D, 0x28, 0x03, 0x30, 0x0C, - 0x06, 0x03, 0x55, 0x1D, 0x13, 0x04, 0x05, 0x30, 0x03, 0x01, - 0x01, 0xFF, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, - 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03, 0x81, 0x81, - 0x00, 0x84, 0x99, 0xD9, 0xE5, 0x37, 0xC4, 0x44, 0x7D, 0xCE, - 0x29, 0xB8, 0xB6, 0x80, 0x0E, 0xEA, 0xA3, 0xE2, 0xFA, 0xA2, - 0x2F, 0x5C, 0xD2, 0x4A, 0x85, 0x67, 0xB9, 0x8B, 0xFA, 0x9F, - 0x7D, 0xDA, 0x6D, 0x85, 0x2A, 0xC2, 0x20, 0xF3, 0x18, 0xC8, - 0xD4, 0x6B, 0x26, 0xB2, 0x7A, 0x68, 0xE7, 0x82, 0x52, 0x87, - 0xE7, 0x0C, 0x5B, 0x08, 0x47, 0x7A, 0x55, 0xA5, 0x0D, 0xFA, - 0x72, 0xCE, 0x6B, 0xA1, 0xB2, 0xAE, 0x5A, 0xA1, 0x63, 0xFF, - 0x68, 0xDB, 0xE5, 0x49, 0xEF, 0xF1, 0x0E, 0x98, 0x96, 0x09, - 0xB5, 0x04, 0x5F, 0xD4, 0x0A, 0x9B, 0x8A, 0xAF, 0xD2, 0x31, - 0x1F, 0x95, 0xE5, 0x0F, 0xA8, 0xCD, 0xBB, 0xA1, 0x2D, 0x64, - 0xB0, 0xB7, 0xEE, 0x47, 0xA7, 0x58, 0xD9, 0xC7, 0xDB, 0xB0, - 0x92, 0xBB, 0xAA, 0xCF, 0xB8, 0x8A, 0x04, 0x5B, 0x0F, 0x9F, - 0x3E, 0xE0, 0xD2, 0x42, 0x52, 0xBD, 0x5D, 0xA7, 0x48 -}; -static const int sizeof_client_cert_der_1024 = sizeof(client_cert_der_1024); - -/* ./certs/1024/dh1024.der, 1024-bit */ -static const unsigned char dh_key_der_1024[] = -{ - 0x30, 0x81, 0x87, 0x02, 0x81, 0x81, 0x00, 0xA4, 0xD2, 0xB8, - 0x6E, 0x78, 0xF5, 0xD9, 0xED, 0x2D, 0x7C, 0xDD, 0xB6, 0x16, - 0x86, 0x5A, 0x4B, 0x05, 0x76, 0x90, 0xDD, 0x66, 0x61, 0xB9, - 0x6D, 0x52, 0xA7, 0x1C, 0xAF, 0x62, 0xC6, 0x69, 0x47, 0x7B, - 0x39, 0xF2, 0xFB, 0x94, 0xEC, 0xBC, 0x79, 0xFF, 0x24, 0x5E, - 0xEF, 0x79, 0xBB, 0x59, 0xB2, 0xFC, 0xCA, 0x07, 0xD6, 0xF4, - 0xE9, 0x34, 0xF7, 0xE8, 0x38, 0xE7, 0xD7, 0x33, 0x44, 0x1D, - 0xA3, 0x64, 0x76, 0x1A, 0x84, 0x97, 0x54, 0x74, 0x40, 0x84, - 0x1F, 0x15, 0xFE, 0x7C, 0x25, 0x2A, 0x2B, 0x25, 0xFD, 0x9E, - 0xC1, 0x89, 0x33, 0x8C, 0x39, 0x25, 0x2B, 0x40, 0xE6, 0xCD, - 0xF8, 0xA8, 0xA1, 0x8A, 0x53, 0xC6, 0x47, 0xB2, 0xA0, 0xD7, - 0x8F, 0xEB, 0x2E, 0x60, 0x0A, 0x0D, 0x4B, 0xF8, 0xB4, 0x94, - 0x8C, 0x63, 0x0A, 0xAD, 0xC7, 0x10, 0xEA, 0xC7, 0xA1, 0xB9, - 0x9D, 0xF2, 0xA8, 0x37, 0x73, 0x02, 0x01, 0x02 -}; -static const int sizeof_dh_key_der_1024 = sizeof(dh_key_der_1024); - -/* ./certs/1024/dsa1024.der, 1024-bit */ -static const unsigned char dsa_key_der_1024[] = -{ - 0x30, 0x82, 0x01, 0xBC, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, - 0x00, 0xF7, 0x4B, 0xF9, 0xBB, 0x15, 0x98, 0xEB, 0xDD, 0xDE, - 0x1E, 0x4E, 0x71, 0x88, 0x85, 0xF2, 0xB7, 0xBA, 0xE2, 0x4A, - 0xDA, 0x76, 0x40, 0xCD, 0x69, 0x48, 0x9E, 0x83, 0x7C, 0x11, - 0xF7, 0x65, 0x31, 0x78, 0xF5, 0x25, 0x2D, 0xF7, 0xB7, 0xF8, - 0x52, 0x3F, 0xBE, 0xD8, 0xB6, 0xC5, 0xFE, 0x18, 0x15, 0x5B, - 0xB9, 0xD5, 0x92, 0x86, 0xBC, 0xB2, 0x17, 0x7C, 0xD8, 0xB0, - 0xBE, 0xA0, 0x7C, 0xF2, 0xD5, 0x73, 0x7A, 0x58, 0x8F, 0x8D, - 0xE5, 0x4A, 0x00, 0x99, 0x83, 0x4A, 0xC0, 0x9E, 0x16, 0x09, - 0xA1, 0x10, 0x34, 0xD5, 0x19, 0xBB, 0x63, 0xE3, 0xDD, 0x83, - 0x74, 0x7F, 0x10, 0xCA, 0x73, 0x75, 0xEE, 0x31, 0x4A, 0xDD, - 0x9F, 0xE0, 0x02, 0x6A, 0x9D, 0xEE, 0xB2, 0x4B, 0xA7, 0x6B, - 0x2A, 0x6C, 0xC7, 0x86, 0x77, 0xE8, 0x04, 0x15, 0xDC, 0x92, - 0xB4, 0x7A, 0x29, 0x1F, 0x4E, 0x83, 0x63, 0x85, 0x55, 0x02, - 0x15, 0x00, 0xD2, 0x05, 0xE4, 0x73, 0xFB, 0xC1, 0x99, 0xC5, - 0xDC, 0x68, 0xA4, 0x8D, 0x92, 0x27, 0x3D, 0xE2, 0x52, 0x5F, - 0x89, 0x8B, 0x02, 0x81, 0x81, 0x00, 0xAA, 0x21, 0x02, 0x09, - 0x43, 0x6E, 0xFB, 0xA2, 0x54, 0x14, 0x85, 0x0A, 0xF4, 0x28, - 0x7C, 0xCB, 0xCC, 0xDB, 0xF5, 0x1E, 0xA2, 0x18, 0xA9, 0x21, - 0xDE, 0x88, 0x88, 0x33, 0x8C, 0x2E, 0xEB, 0x8D, 0xA3, 0xF0, - 0x1D, 0xC8, 0x8F, 0xF6, 0x7E, 0xF8, 0xCF, 0x12, 0xF5, 0xB4, - 0xA1, 0x11, 0x6F, 0x0C, 0xD4, 0xF0, 0x06, 0xAD, 0xC4, 0xFC, - 0x14, 0x45, 0xC7, 0x94, 0x15, 0xBC, 0x19, 0x4B, 0xAE, 0xEF, - 0x93, 0x6A, 0x4F, 0xCC, 0x14, 0xD8, 0x47, 0x8B, 0x39, 0x66, - 0x87, 0x02, 0xD4, 0x28, 0x0A, 0xB8, 0xEE, 0x09, 0x37, 0xF4, - 0x00, 0xA0, 0x04, 0xA7, 0x79, 0xA7, 0xD2, 0x3C, 0xF7, 0x34, - 0x43, 0x56, 0x8E, 0xD0, 0x7C, 0xC2, 0xD8, 0x4D, 0x0F, 0x89, - 0xED, 0x14, 0xC1, 0x2C, 0x9C, 0x4C, 0x19, 0x9B, 0x9E, 0xDC, - 0x53, 0x09, 0x9F, 0xDF, 0x2D, 0xF0, 0x0C, 0x27, 0x54, 0x3A, - 0x77, 0x14, 0x2D, 0xDE, 0x02, 0x81, 0x81, 0x00, 0xE8, 0x1F, - 0x7C, 0xB7, 0xC0, 0x54, 0x51, 0xA7, 0x28, 0x2D, 0x58, 0x7C, - 0xDE, 0xD4, 0x5C, 0xDD, 0xD5, 0x76, 0x84, 0x3C, 0x36, 0x20, - 0xC0, 0xC3, 0x25, 0xD7, 0x3A, 0x38, 0xE1, 0x54, 0xC8, 0xFD, - 0x40, 0x68, 0x1A, 0x21, 0x54, 0x26, 0x39, 0x14, 0xBF, 0xF6, - 0xA3, 0x9C, 0x5E, 0xD9, 0x2B, 0xF7, 0xC9, 0x25, 0xBA, 0x00, - 0x09, 0xCB, 0x7F, 0x0C, 0x4A, 0x24, 0xFD, 0x15, 0x16, 0x15, - 0x48, 0xCD, 0x0B, 0x52, 0x44, 0x40, 0x7B, 0x90, 0x63, 0x2B, - 0x90, 0x22, 0xC5, 0x18, 0x05, 0x80, 0x53, 0xAF, 0x83, 0x1F, - 0x54, 0xE2, 0xB0, 0xA2, 0x0B, 0x5A, 0x92, 0x24, 0xE1, 0x62, - 0x28, 0x3F, 0xB7, 0xCA, 0xB9, 0x89, 0xD6, 0xA0, 0xB7, 0xAD, - 0xAE, 0x05, 0xE1, 0xC1, 0x59, 0x40, 0xED, 0x4A, 0x1B, 0x68, - 0xA7, 0x7B, 0xFB, 0xC3, 0x20, 0x81, 0xEF, 0x4B, 0xF3, 0x69, - 0x91, 0xB0, 0xCE, 0x3A, 0xB0, 0x38, 0x02, 0x14, 0x25, 0x38, - 0x3B, 0xA1, 0x19, 0x75, 0xDF, 0x9B, 0xF5, 0x72, 0x53, 0x4F, - 0x39, 0xE1, 0x1C, 0xEC, 0x13, 0x84, 0x82, 0x18 -}; -static const int sizeof_dsa_key_der_1024 = sizeof(dsa_key_der_1024); - -/* ./certs/1024/rsa1024.der, 1024-bit */ -static const unsigned char rsa_key_der_1024[] = -{ - 0x30, 0x82, 0x02, 0x5D, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, - 0x00, 0xBE, 0x70, 0x70, 0xB8, 0x04, 0x18, 0xE5, 0x28, 0xFE, - 0x66, 0xD8, 0x90, 0x88, 0xE0, 0xF1, 0xB7, 0xC3, 0xD0, 0xD2, - 0x3E, 0xE6, 0x4B, 0x94, 0x74, 0xB0, 0xFF, 0xB0, 0xF7, 0x63, - 0xA5, 0xAB, 0x7E, 0xAF, 0xB6, 0x2B, 0xB7, 0x38, 0x16, 0x1A, - 0x50, 0xBF, 0xF1, 0xCA, 0x87, 0x3A, 0xD5, 0xB0, 0xDA, 0xF8, - 0x43, 0x7A, 0x15, 0xB9, 0x7E, 0xEA, 0x2A, 0x80, 0xD2, 0x51, - 0xB0, 0x35, 0xAF, 0x07, 0xF3, 0xF2, 0x5D, 0x24, 0x3A, 0x4B, - 0x87, 0x56, 0x48, 0x1B, 0x3C, 0x24, 0x9A, 0xDA, 0x70, 0x80, - 0xBD, 0x3C, 0x8B, 0x03, 0x4A, 0x0C, 0x83, 0x71, 0xDE, 0xE3, - 0x03, 0x70, 0xA2, 0xB7, 0x60, 0x09, 0x1B, 0x5E, 0xC7, 0x3D, - 0xA0, 0x64, 0x60, 0xE3, 0xA9, 0x06, 0x8D, 0xD3, 0xFF, 0x42, - 0xBB, 0x0A, 0x94, 0x27, 0x2D, 0x57, 0x42, 0x0D, 0xB0, 0x2D, - 0xE0, 0xBA, 0x18, 0x25, 0x60, 0x92, 0x11, 0x92, 0xF3, 0x02, - 0x03, 0x01, 0x00, 0x01, 0x02, 0x81, 0x80, 0x0E, 0xEE, 0x1D, - 0xC8, 0x2F, 0x7A, 0x0C, 0x2D, 0x44, 0x94, 0xA7, 0x91, 0xDD, - 0x49, 0x55, 0x6A, 0x04, 0xCE, 0x10, 0x4D, 0xA2, 0x1C, 0x76, - 0xCD, 0x17, 0x3B, 0x54, 0x92, 0x70, 0x9B, 0x82, 0x70, 0x72, - 0x32, 0x24, 0x07, 0x3F, 0x3C, 0x6C, 0x5F, 0xBC, 0x4C, 0xA6, - 0x86, 0x27, 0x94, 0xAD, 0x42, 0xDD, 0x87, 0xDC, 0xC0, 0x6B, - 0x44, 0x89, 0xF3, 0x3F, 0x1A, 0x3E, 0x11, 0x44, 0x84, 0x2E, - 0x69, 0x4C, 0xBB, 0x4A, 0x71, 0x1A, 0xBB, 0x9A, 0x52, 0x3C, - 0x6B, 0xDE, 0xBC, 0xB2, 0x7C, 0x51, 0xEF, 0x4F, 0x8F, 0x3A, - 0xDC, 0x50, 0x04, 0x4E, 0xB6, 0x31, 0x66, 0xA8, 0x8E, 0x06, - 0x3B, 0x51, 0xA9, 0xC1, 0x8A, 0xCB, 0xC4, 0x81, 0xCA, 0x2D, - 0x69, 0xEC, 0x88, 0xFC, 0x33, 0x88, 0xD1, 0xD4, 0x29, 0x47, - 0x87, 0x37, 0xF9, 0x6A, 0x22, 0x69, 0xB9, 0xC9, 0xFE, 0xEB, - 0x8C, 0xC5, 0x21, 0x41, 0x71, 0x02, 0x41, 0x00, 0xFD, 0x17, - 0x98, 0x42, 0x54, 0x1C, 0x23, 0xF8, 0xD7, 0x5D, 0xEF, 0x49, - 0x4F, 0xAF, 0xD9, 0x35, 0x6F, 0x08, 0xC6, 0xC7, 0x40, 0x5C, - 0x7E, 0x58, 0x86, 0xC2, 0xB2, 0x16, 0x39, 0x24, 0xC5, 0x06, - 0xB0, 0x3D, 0xAF, 0x02, 0xD2, 0x87, 0x77, 0xD2, 0x76, 0xBA, - 0xE3, 0x59, 0x60, 0x42, 0xF1, 0x16, 0xEF, 0x33, 0x0B, 0xF2, - 0x0B, 0xBA, 0x99, 0xCC, 0xB6, 0x4C, 0x46, 0x3F, 0x33, 0xE4, - 0xD4, 0x67, 0x02, 0x41, 0x00, 0xC0, 0xA0, 0x91, 0x6D, 0xFE, - 0x28, 0xE0, 0x81, 0x5A, 0x15, 0xA7, 0xC9, 0xA8, 0x98, 0xC6, - 0x0A, 0xAB, 0x00, 0xC5, 0x40, 0xC9, 0x21, 0xBB, 0xB2, 0x33, - 0x5A, 0xA7, 0xCB, 0x6E, 0xB8, 0x08, 0x56, 0x4A, 0x76, 0x28, - 0xE8, 0x6D, 0xBD, 0xF5, 0x26, 0x7B, 0xBF, 0xC5, 0x46, 0x45, - 0x0D, 0xEC, 0x7D, 0xEE, 0x82, 0xD6, 0xCA, 0x5F, 0x3D, 0x6E, - 0xCC, 0x94, 0x73, 0xCD, 0xCE, 0x86, 0x6E, 0x95, 0x95, 0x02, - 0x40, 0x38, 0xFD, 0x28, 0x1E, 0xBF, 0x5B, 0xBA, 0xC9, 0xDC, - 0x8C, 0xDD, 0x45, 0xAF, 0xB8, 0xD3, 0xFB, 0x11, 0x2E, 0x73, - 0xBC, 0x08, 0x05, 0x0B, 0xBA, 0x19, 0x56, 0x1B, 0xCD, 0x9F, - 0x3E, 0x65, 0x53, 0x15, 0x3A, 0x3E, 0x7F, 0x2F, 0x32, 0xAB, - 0xCB, 0x6B, 0x4A, 0xB7, 0xC8, 0xB7, 0x41, 0x3B, 0x92, 0x43, - 0x78, 0x46, 0x17, 0x51, 0x86, 0xC9, 0xFC, 0xEB, 0x8B, 0x8F, - 0x41, 0xCA, 0x08, 0x9B, 0xBF, 0x02, 0x41, 0x00, 0xAD, 0x9B, - 0x89, 0xB6, 0xF2, 0x8C, 0x70, 0xDA, 0xE4, 0x10, 0x04, 0x6B, - 0x11, 0x92, 0xAF, 0x5A, 0xCA, 0x08, 0x25, 0xBF, 0x60, 0x07, - 0x11, 0x1D, 0x68, 0x7F, 0x5A, 0x1F, 0x55, 0x28, 0x74, 0x0B, - 0x21, 0x8D, 0x21, 0x0D, 0x6A, 0x6A, 0xFB, 0xD9, 0xB5, 0x4A, - 0x7F, 0x47, 0xF7, 0xD0, 0xB6, 0xC6, 0x41, 0x02, 0x97, 0x07, - 0x49, 0x93, 0x1A, 0x9B, 0x33, 0x68, 0xB3, 0xA2, 0x61, 0x32, - 0xA5, 0x89, 0x02, 0x41, 0x00, 0x8F, 0xEF, 0xAD, 0xB5, 0xB0, - 0xB0, 0x7E, 0x86, 0x03, 0x43, 0x93, 0x6E, 0xDD, 0x3C, 0x2D, - 0x9B, 0x6A, 0x55, 0xFF, 0x6F, 0x3E, 0x70, 0x2A, 0xD4, 0xBF, - 0x1F, 0x8C, 0x93, 0x60, 0x9E, 0x6D, 0x2F, 0x18, 0x6C, 0x11, - 0x36, 0x98, 0x3F, 0x10, 0x78, 0xE8, 0x3E, 0x8F, 0xFE, 0x55, - 0xB9, 0x9E, 0xD5, 0x5B, 0x2E, 0x87, 0x1C, 0x58, 0xD0, 0x37, - 0x89, 0x96, 0xEC, 0x48, 0x54, 0xF5, 0x9F, 0x0F, 0xB3 -}; -static const int sizeof_rsa_key_der_1024 = sizeof(rsa_key_der_1024); - -/* ./certs/1024/ca-key.der, 1024-bit */ -static const unsigned char ca_key_der_1024[] = -{ - 0x30, 0x82, 0x02, 0x5E, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, - 0x00, 0xCD, 0xAC, 0xDD, 0x47, 0xEC, 0xBE, 0xB7, 0x24, 0xC3, - 0x63, 0x1B, 0x54, 0x98, 0x79, 0xE1, 0xC7, 0x31, 0x16, 0x59, - 0xD6, 0x9D, 0x77, 0x9D, 0x8D, 0xE2, 0x8B, 0xED, 0x04, 0x17, - 0xB2, 0xC6, 0xEB, 0xE4, 0x9B, 0x91, 0xBE, 0x31, 0x50, 0x62, - 0x97, 0x58, 0xB5, 0x7F, 0x29, 0xDE, 0xB3, 0x71, 0x24, 0x0B, - 0xBF, 0x97, 0x09, 0x7F, 0x26, 0xDC, 0x2D, 0xEC, 0xA8, 0x2E, - 0xB2, 0x64, 0x2B, 0x7A, 0x2B, 0x35, 0x19, 0x2D, 0xA2, 0x80, - 0xCB, 0x99, 0xFD, 0x94, 0x71, 0x1B, 0x23, 0x8D, 0x54, 0xDB, - 0x2E, 0x62, 0x8D, 0x81, 0x08, 0x2D, 0xF4, 0x24, 0x72, 0x27, - 0x6C, 0xF9, 0xC9, 0x8E, 0xDB, 0x4C, 0x75, 0xBA, 0x9B, 0x01, - 0xF8, 0x3F, 0x18, 0xF4, 0xE6, 0x7F, 0xFB, 0x57, 0x94, 0x92, - 0xCC, 0x88, 0xC4, 0xB4, 0x00, 0xC2, 0xAA, 0xD4, 0xE5, 0x88, - 0x18, 0xB3, 0x11, 0x2F, 0x73, 0xC0, 0xD6, 0x29, 0x09, 0x02, - 0x03, 0x01, 0x00, 0x01, 0x02, 0x81, 0x80, 0x52, 0x35, 0x3D, - 0x01, 0x29, 0xA4, 0x95, 0x29, 0x71, 0x9B, 0x64, 0x6A, 0x2C, - 0xC3, 0xD2, 0xB5, 0xBE, 0x6E, 0x13, 0x9C, 0x8F, 0xB6, 0x26, - 0xD8, 0x76, 0x6B, 0xBD, 0x61, 0xBC, 0x63, 0x2D, 0xD5, 0x4D, - 0xBB, 0xCC, 0xC6, 0x3B, 0x89, 0xC8, 0xCE, 0x7B, 0x9B, 0x97, - 0xE7, 0x51, 0x67, 0x61, 0xDA, 0xA9, 0x83, 0x7B, 0xC8, 0x44, - 0xF5, 0x70, 0x5E, 0x3E, 0xD0, 0x7E, 0x51, 0xB9, 0x6E, 0x13, - 0x57, 0x08, 0x5C, 0xE1, 0x67, 0x4F, 0x61, 0x5E, 0xA5, 0x09, - 0xEC, 0x11, 0xDD, 0xE4, 0xB8, 0xB4, 0xF4, 0xE0, 0x63, 0x34, - 0x4C, 0xDA, 0x32, 0x20, 0x1F, 0x85, 0x41, 0x5D, 0xBC, 0xDB, - 0x24, 0xC5, 0xAF, 0xBE, 0x02, 0x5F, 0x22, 0xF1, 0x7C, 0xCC, - 0x05, 0x56, 0xA6, 0xA6, 0x37, 0x9A, 0xEB, 0xFF, 0x52, 0x2D, - 0xBF, 0x30, 0x4B, 0x9A, 0x1D, 0xEE, 0xAB, 0x9C, 0x2C, 0xE2, - 0xC1, 0xB8, 0x9D, 0xC9, 0x31, 0x02, 0x41, 0x00, 0xE9, 0x89, - 0x16, 0xCD, 0xAC, 0x2E, 0xF2, 0x4D, 0x66, 0x17, 0xBD, 0x78, - 0x12, 0x12, 0x8D, 0x8E, 0x84, 0x24, 0xDE, 0x2D, 0x50, 0x41, - 0x85, 0x8C, 0x34, 0x09, 0xFA, 0xFB, 0x6D, 0x87, 0x51, 0x4C, - 0x13, 0x28, 0xF0, 0x60, 0x11, 0x86, 0x3D, 0xC2, 0xA4, 0xCF, - 0x5E, 0xC5, 0x6F, 0x5B, 0x11, 0x32, 0x0A, 0xB5, 0x28, 0xD0, - 0x82, 0x47, 0x44, 0x26, 0x92, 0xE2, 0x78, 0x59, 0xB4, 0x08, - 0xB3, 0xFD, 0x02, 0x41, 0x00, 0xE1, 0x75, 0xB4, 0x6A, 0xB5, - 0x8C, 0x11, 0xFB, 0xCC, 0x42, 0x02, 0xC5, 0xDA, 0x48, 0xCE, - 0x29, 0x43, 0x14, 0x01, 0x9A, 0x2C, 0xB3, 0xA4, 0xCB, 0x73, - 0xEB, 0xA1, 0x35, 0x57, 0xAD, 0xB5, 0x16, 0x17, 0x80, 0x03, - 0x5F, 0x32, 0x37, 0xBE, 0xA2, 0x6F, 0xF9, 0x31, 0x84, 0xBF, - 0x00, 0x6E, 0x8D, 0x03, 0x0E, 0x30, 0x1C, 0xD0, 0x2F, 0x37, - 0xF0, 0x7E, 0xC2, 0x64, 0xBF, 0xEE, 0x4B, 0xE8, 0xFD, 0x02, - 0x41, 0x00, 0xE1, 0x99, 0x8B, 0x2B, 0xD8, 0x9F, 0xE9, 0x76, - 0x97, 0x9F, 0x6B, 0x6B, 0x28, 0x9A, 0x3F, 0xA1, 0x63, 0x4A, - 0x72, 0x4E, 0xF7, 0xEE, 0xB3, 0xE2, 0x43, 0x0B, 0x39, 0x27, - 0xD6, 0x21, 0x18, 0x8A, 0x13, 0x20, 0x43, 0x45, 0xAA, 0xE8, - 0x31, 0x95, 0x6C, 0xBC, 0xDE, 0xE2, 0x7F, 0xB6, 0x4B, 0xA0, - 0x39, 0xF3, 0xD3, 0x9F, 0xC9, 0x9A, 0xAA, 0xDD, 0x50, 0x9B, - 0xF2, 0x83, 0x45, 0x85, 0xFA, 0xC9, 0x02, 0x41, 0x00, 0xAF, - 0xB0, 0xC7, 0x7C, 0xF8, 0x28, 0x44, 0xC3, 0x50, 0xF2, 0x87, - 0xB2, 0xA2, 0x5D, 0x65, 0xBA, 0x25, 0xB9, 0x6B, 0x5E, 0x37, - 0x43, 0x6E, 0x41, 0xD4, 0xFD, 0x63, 0x4C, 0x6C, 0x1C, 0xC3, - 0x26, 0x89, 0xFD, 0x89, 0xA3, 0x1F, 0x40, 0xED, 0x5F, 0x2B, - 0x9E, 0xA6, 0x85, 0xE9, 0x49, 0x6E, 0xDC, 0x97, 0xEA, 0xF0, - 0x77, 0x23, 0x8C, 0x08, 0x2D, 0x72, 0xBA, 0x0D, 0x44, 0xBB, - 0x6F, 0x90, 0x09, 0x02, 0x41, 0x00, 0x91, 0xE4, 0x2E, 0xCA, - 0x8C, 0x0A, 0x69, 0x2F, 0x62, 0xE2, 0x62, 0x3B, 0xA5, 0x8D, - 0x5A, 0x2C, 0x56, 0x3E, 0x7F, 0x67, 0x42, 0x92, 0x12, 0x92, - 0x5F, 0xF3, 0x97, 0xDD, 0xE1, 0xA9, 0x7F, 0xAD, 0x2E, 0x2D, - 0xF4, 0x4A, 0x57, 0xB3, 0x7A, 0x10, 0xBD, 0xD7, 0xE4, 0xEC, - 0x6A, 0x08, 0x21, 0xE9, 0xF2, 0x46, 0x49, 0xD2, 0x69, 0x47, - 0x8A, 0x20, 0x4B, 0xF2, 0xB1, 0x52, 0x83, 0xAB, 0x6F, 0x10 - -}; -static const int sizeof_ca_key_der_1024 = sizeof(ca_key_der_1024); - -/* ./certs/1024/ca-cert.der, 1024-bit */ -static const unsigned char ca_cert_der_1024[] = -{ - 0x30, 0x82, 0x03, 0xB5, 0x30, 0x82, 0x03, 0x1E, 0xA0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0xDA, 0xFB, 0x6A, 0x0D, - 0xFE, 0xCF, 0x9B, 0x47, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x30, - 0x81, 0x99, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, - 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, - 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, - 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, - 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, - 0x6E, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x0A, - 0x0C, 0x08, 0x53, 0x61, 0x77, 0x74, 0x6F, 0x6F, 0x74, 0x68, - 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, - 0x0F, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, - 0x67, 0x5F, 0x31, 0x30, 0x32, 0x34, 0x31, 0x18, 0x30, 0x16, - 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, - 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, - 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, - 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, - 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x1E, 0x17, 0x0D, 0x31, - 0x38, 0x30, 0x34, 0x31, 0x33, 0x31, 0x35, 0x32, 0x33, 0x31, - 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x31, 0x30, 0x31, 0x30, 0x37, - 0x31, 0x35, 0x32, 0x33, 0x31, 0x30, 0x5A, 0x30, 0x81, 0x99, - 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, - 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, - 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, - 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, - 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, - 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x08, - 0x53, 0x61, 0x77, 0x74, 0x6F, 0x6F, 0x74, 0x68, 0x31, 0x18, - 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x0F, 0x43, - 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x5F, - 0x31, 0x30, 0x32, 0x34, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, - 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, - 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, - 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, - 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, - 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, - 0x63, 0x6F, 0x6D, 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, - 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, - 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, - 0x81, 0x00, 0xCD, 0xAC, 0xDD, 0x47, 0xEC, 0xBE, 0xB7, 0x24, - 0xC3, 0x63, 0x1B, 0x54, 0x98, 0x79, 0xE1, 0xC7, 0x31, 0x16, - 0x59, 0xD6, 0x9D, 0x77, 0x9D, 0x8D, 0xE2, 0x8B, 0xED, 0x04, - 0x17, 0xB2, 0xC6, 0xEB, 0xE4, 0x9B, 0x91, 0xBE, 0x31, 0x50, - 0x62, 0x97, 0x58, 0xB5, 0x7F, 0x29, 0xDE, 0xB3, 0x71, 0x24, - 0x0B, 0xBF, 0x97, 0x09, 0x7F, 0x26, 0xDC, 0x2D, 0xEC, 0xA8, - 0x2E, 0xB2, 0x64, 0x2B, 0x7A, 0x2B, 0x35, 0x19, 0x2D, 0xA2, - 0x80, 0xCB, 0x99, 0xFD, 0x94, 0x71, 0x1B, 0x23, 0x8D, 0x54, - 0xDB, 0x2E, 0x62, 0x8D, 0x81, 0x08, 0x2D, 0xF4, 0x24, 0x72, - 0x27, 0x6C, 0xF9, 0xC9, 0x8E, 0xDB, 0x4C, 0x75, 0xBA, 0x9B, - 0x01, 0xF8, 0x3F, 0x18, 0xF4, 0xE6, 0x7F, 0xFB, 0x57, 0x94, - 0x92, 0xCC, 0x88, 0xC4, 0xB4, 0x00, 0xC2, 0xAA, 0xD4, 0xE5, - 0x88, 0x18, 0xB3, 0x11, 0x2F, 0x73, 0xC0, 0xD6, 0x29, 0x09, - 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, 0x01, 0x30, - 0x81, 0xFE, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, - 0x16, 0x04, 0x14, 0xD3, 0x22, 0x8F, 0x28, 0x2C, 0xE0, 0x05, - 0xEE, 0xD3, 0xED, 0xC3, 0x71, 0x3D, 0xC9, 0xB2, 0x36, 0x3A, - 0x1D, 0xBF, 0xA8, 0x30, 0x81, 0xCE, 0x06, 0x03, 0x55, 0x1D, - 0x23, 0x04, 0x81, 0xC6, 0x30, 0x81, 0xC3, 0x80, 0x14, 0xD3, - 0x22, 0x8F, 0x28, 0x2C, 0xE0, 0x05, 0xEE, 0xD3, 0xED, 0xC3, - 0x71, 0x3D, 0xC9, 0xB2, 0x36, 0x3A, 0x1D, 0xBF, 0xA8, 0xA1, - 0x81, 0x9F, 0xA4, 0x81, 0x9C, 0x30, 0x81, 0x99, 0x31, 0x0B, - 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, - 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, - 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, - 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, - 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x11, 0x30, - 0x0F, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x08, 0x53, 0x61, - 0x77, 0x74, 0x6F, 0x6F, 0x74, 0x68, 0x31, 0x18, 0x30, 0x16, - 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x0F, 0x43, 0x6F, 0x6E, - 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x5F, 0x31, 0x30, - 0x32, 0x34, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, - 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, - 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, - 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, - 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, - 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, - 0x6D, 0x82, 0x09, 0x00, 0xDA, 0xFB, 0x6A, 0x0D, 0xFE, 0xCF, - 0x9B, 0x47, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x04, - 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x0D, 0x06, 0x09, - 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, - 0x00, 0x03, 0x81, 0x81, 0x00, 0x1D, 0x48, 0xF6, 0x40, 0x41, - 0x04, 0x06, 0xF2, 0xE4, 0x72, 0x2F, 0xEA, 0xFF, 0xC1, 0x67, - 0x6B, 0x15, 0xBB, 0x0A, 0x28, 0x23, 0x28, 0x07, 0xC6, 0xD7, - 0x13, 0x2C, 0xBE, 0x00, 0x00, 0xAC, 0x1D, 0xF7, 0xF4, 0x92, - 0xD3, 0x2B, 0xAF, 0x23, 0xEB, 0x9F, 0x1A, 0xE2, 0x11, 0x3C, - 0x2D, 0x97, 0xF2, 0x0F, 0xAC, 0xAE, 0x97, 0x86, 0x0A, 0xFB, - 0xA8, 0x4F, 0x74, 0x1B, 0xDE, 0x19, 0x51, 0xDB, 0xCD, 0xE2, - 0x11, 0x38, 0xC1, 0xA4, 0x9D, 0x56, 0xAB, 0x47, 0x5C, 0xDE, - 0xBA, 0xEB, 0x27, 0xDF, 0x6D, 0xC8, 0x7E, 0x3A, 0xBD, 0x2E, - 0x9B, 0x2A, 0xAD, 0x22, 0x3B, 0x95, 0xA9, 0xF2, 0x28, 0x03, - 0xBC, 0xE5, 0xEC, 0xCC, 0xF2, 0x08, 0xD4, 0xC8, 0x2F, 0xDB, - 0xEA, 0xFB, 0x2E, 0x52, 0x16, 0x8C, 0x42, 0x02, 0xA4, 0x59, - 0x6D, 0x4C, 0x33, 0xB4, 0x9A, 0xD2, 0x73, 0x4A, 0x1E, 0x9F, - 0xD9, 0xC8, 0x83 -}; -static const int sizeof_ca_cert_der_1024 = sizeof(ca_cert_der_1024); - -/* ./certs/1024/server-key.der, 1024-bit */ -static const unsigned char server_key_der_1024[] = -{ - 0x30, 0x82, 0x02, 0x5D, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, - 0x00, 0xAA, 0x3E, 0xA5, 0x9C, 0xD3, 0x17, 0x49, 0x65, 0x43, - 0xDE, 0xD0, 0xF3, 0x4B, 0x1C, 0xDB, 0x49, 0x0C, 0xFC, 0x7A, - 0x65, 0x05, 0x6D, 0xDE, 0x6A, 0xC4, 0xE4, 0x73, 0x2C, 0x8A, - 0x96, 0x82, 0x8F, 0x23, 0xA5, 0x06, 0x71, 0x1C, 0x06, 0x3E, - 0x2F, 0x92, 0x8D, 0x0B, 0x29, 0x34, 0x45, 0x59, 0xE9, 0xA9, - 0xBC, 0x61, 0xD7, 0x24, 0x37, 0x5D, 0xB5, 0xC4, 0x37, 0x8D, - 0xBA, 0x67, 0xB2, 0xEF, 0x03, 0x27, 0xFA, 0xC1, 0xB4, 0xCD, - 0x6B, 0x00, 0x66, 0xB4, 0xD6, 0x73, 0x70, 0x1F, 0x08, 0x3A, - 0xCC, 0x77, 0xAD, 0xE9, 0xF9, 0x34, 0xD4, 0xF3, 0xA0, 0x2D, - 0xA9, 0xE7, 0x58, 0xA9, 0xC0, 0x61, 0x84, 0xB6, 0xEC, 0x3D, - 0x0A, 0xAD, 0xFD, 0x5C, 0x86, 0x73, 0xAA, 0x6B, 0x47, 0xD8, - 0x8B, 0x2E, 0x58, 0x4B, 0x69, 0x12, 0x82, 0x26, 0x55, 0xE6, - 0x14, 0xBF, 0x55, 0x70, 0x88, 0xFE, 0xF9, 0x75, 0xE1, 0x02, - 0x03, 0x01, 0x00, 0x01, 0x02, 0x81, 0x80, 0x0A, 0x4C, 0xC1, - 0xFE, 0x4B, 0xF3, 0x23, 0xB8, 0xA1, 0xB3, 0x90, 0x56, 0xB7, - 0xDB, 0xA6, 0x14, 0xB4, 0x59, 0x6E, 0x1A, 0x40, 0x8A, 0xD6, - 0x23, 0x05, 0x88, 0x80, 0xC3, 0x58, 0x1B, 0x25, 0x08, 0xFD, - 0xF2, 0x15, 0x02, 0xB0, 0xDC, 0x5B, 0xD4, 0xCA, 0xFC, 0x07, - 0x89, 0xD5, 0xA4, 0xC0, 0x7C, 0xD7, 0x8D, 0x13, 0x2A, 0x4E, - 0x01, 0x9F, 0x84, 0xC8, 0xBB, 0x47, 0xB2, 0xD8, 0x65, 0x45, - 0xFA, 0x84, 0x9F, 0x88, 0xD0, 0xF4, 0xF5, 0x22, 0x35, 0x77, - 0x11, 0x67, 0x1C, 0xDE, 0x5F, 0x85, 0x6D, 0x55, 0xD8, 0xA7, - 0x07, 0x15, 0x8C, 0xE1, 0xB0, 0xA7, 0x79, 0xB4, 0x47, 0x9D, - 0x70, 0xB3, 0xD2, 0xF1, 0x1F, 0x41, 0x4C, 0x65, 0x72, 0x26, - 0xEB, 0x66, 0xC8, 0x95, 0xF6, 0x6D, 0x87, 0x35, 0x53, 0xFE, - 0xB1, 0x52, 0x4D, 0x76, 0x5B, 0x61, 0x53, 0x89, 0xB1, 0x20, - 0x1A, 0x8B, 0xE4, 0x7D, 0xF1, 0x02, 0x41, 0x00, 0xD9, 0x6E, - 0xE1, 0xD9, 0x06, 0x56, 0xA1, 0xF6, 0xDF, 0x54, 0x45, 0xC5, - 0xEC, 0x6A, 0xC8, 0x2A, 0x38, 0x4E, 0x6B, 0xC6, 0xE8, 0xEA, - 0xFB, 0x6F, 0x65, 0x2D, 0xBA, 0xDE, 0x27, 0x63, 0x37, 0x21, - 0x2E, 0xA4, 0x55, 0xAB, 0xE7, 0xDB, 0xCE, 0x71, 0xE1, 0x08, - 0xFC, 0xF2, 0xCA, 0x52, 0x33, 0x55, 0xE8, 0x39, 0xB3, 0xDA, - 0xC5, 0xB0, 0x69, 0x84, 0x6E, 0xE3, 0xCF, 0x47, 0x80, 0xA6, - 0xB6, 0x85, 0x02, 0x41, 0x00, 0xC8, 0x71, 0x0D, 0x37, 0x47, - 0xE1, 0x7B, 0x21, 0x2D, 0x11, 0x2D, 0x95, 0x2E, 0xC7, 0xD0, - 0xB6, 0xD3, 0x7C, 0x5C, 0x93, 0x3C, 0x5B, 0x22, 0xE5, 0xE0, - 0x8B, 0x6D, 0x47, 0xF9, 0x14, 0x0F, 0x9E, 0x08, 0x1B, 0x53, - 0xAB, 0x0A, 0xA9, 0xE4, 0x7F, 0x40, 0xD3, 0xDF, 0x62, 0x74, - 0x10, 0xA2, 0xFE, 0x83, 0x1F, 0xCF, 0x55, 0x66, 0xEB, 0x5D, - 0xC5, 0x83, 0xBA, 0xEC, 0x9F, 0xD2, 0xB5, 0x06, 0xAD, 0x02, - 0x41, 0x00, 0xB7, 0x68, 0x19, 0xA7, 0xC7, 0xF9, 0xF1, 0x9A, - 0xDD, 0x5D, 0x27, 0x91, 0xC1, 0x4F, 0x7D, 0x52, 0x67, 0xB6, - 0x76, 0xA1, 0x0D, 0x3D, 0x91, 0x23, 0xB0, 0xB3, 0xF7, 0x49, - 0x86, 0xED, 0xE0, 0xC5, 0xE3, 0xA3, 0x09, 0x04, 0xFD, 0x89, - 0xE2, 0xC5, 0x1A, 0x6E, 0x4B, 0x77, 0xBD, 0x03, 0xC3, 0x7B, - 0xB6, 0x6C, 0x5D, 0xF2, 0xAF, 0x08, 0x94, 0xA8, 0xFA, 0x24, - 0xBD, 0x66, 0x71, 0xF5, 0xAE, 0x45, 0x02, 0x40, 0x15, 0x52, - 0xD1, 0x91, 0x1B, 0xF8, 0x84, 0xDC, 0xD6, 0xAA, 0x89, 0x2A, - 0xE1, 0xBB, 0x28, 0x1D, 0x0B, 0x0A, 0xA3, 0xDE, 0x96, 0x01, - 0x2C, 0x09, 0x40, 0x86, 0x14, 0xAE, 0x1F, 0x75, 0x5E, 0xE3, - 0xF5, 0x00, 0xD3, 0x39, 0xD2, 0xFC, 0x97, 0xEE, 0x61, 0xBB, - 0x28, 0x7C, 0x94, 0xD4, 0x60, 0x42, 0xAB, 0x38, 0x6B, 0x1A, - 0x2E, 0xC4, 0xC3, 0x49, 0x0B, 0xE6, 0x8A, 0xDD, 0xC5, 0xD0, - 0xB4, 0x51, 0x02, 0x41, 0x00, 0xA9, 0x8B, 0xA7, 0xA9, 0xEE, - 0xAE, 0xBB, 0x17, 0xCB, 0x72, 0xF2, 0x50, 0x22, 0x9D, 0xB3, - 0xDF, 0xE0, 0x40, 0x37, 0x08, 0xD5, 0x7F, 0x19, 0x58, 0x80, - 0x70, 0x79, 0x69, 0x99, 0xDF, 0x62, 0x0D, 0x21, 0xAB, 0xDD, - 0xB2, 0xCE, 0x68, 0xB3, 0x9F, 0x87, 0xAF, 0x55, 0xF4, 0xAA, - 0xE1, 0x00, 0x72, 0xBE, 0x6E, 0xC3, 0x94, 0x49, 0xDC, 0xBB, - 0x8E, 0x1A, 0x78, 0xE5, 0x49, 0x1F, 0x55, 0x41, 0xA1 -}; -static const int sizeof_server_key_der_1024 = sizeof(server_key_der_1024); - -/* ./certs/1024/server-cert.der, 1024-bit */ -static const unsigned char server_cert_der_1024[] = -{ - 0x30, 0x82, 0x03, 0xA9, 0x30, 0x82, 0x03, 0x12, 0xA0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x01, 0x01, 0x30, 0x0D, 0x06, 0x09, - 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, - 0x00, 0x30, 0x81, 0x99, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, - 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, - 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, - 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, - 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, - 0x6D, 0x61, 0x6E, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, - 0x04, 0x0A, 0x0C, 0x08, 0x53, 0x61, 0x77, 0x74, 0x6F, 0x6F, - 0x74, 0x68, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, - 0x0B, 0x0C, 0x0F, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, - 0x69, 0x6E, 0x67, 0x5F, 0x31, 0x30, 0x32, 0x34, 0x31, 0x18, - 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, - 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, - 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, - 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, - 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, - 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x1E, 0x17, - 0x0D, 0x31, 0x38, 0x30, 0x34, 0x31, 0x33, 0x31, 0x35, 0x32, - 0x33, 0x31, 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x31, 0x30, 0x31, - 0x30, 0x37, 0x31, 0x35, 0x32, 0x33, 0x31, 0x30, 0x5A, 0x30, - 0x81, 0x95, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, - 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, - 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, - 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, - 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, - 0x6E, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0A, - 0x0C, 0x07, 0x77, 0x6F, 0x6C, 0x66, 0x53, 0x53, 0x4C, 0x31, - 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x0C, - 0x53, 0x75, 0x70, 0x70, 0x6F, 0x72, 0x74, 0x5F, 0x31, 0x30, - 0x32, 0x34, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, - 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, - 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, - 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, - 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, - 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, - 0x6D, 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, - 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, - 0xAA, 0x3E, 0xA5, 0x9C, 0xD3, 0x17, 0x49, 0x65, 0x43, 0xDE, - 0xD0, 0xF3, 0x4B, 0x1C, 0xDB, 0x49, 0x0C, 0xFC, 0x7A, 0x65, - 0x05, 0x6D, 0xDE, 0x6A, 0xC4, 0xE4, 0x73, 0x2C, 0x8A, 0x96, - 0x82, 0x8F, 0x23, 0xA5, 0x06, 0x71, 0x1C, 0x06, 0x3E, 0x2F, - 0x92, 0x8D, 0x0B, 0x29, 0x34, 0x45, 0x59, 0xE9, 0xA9, 0xBC, - 0x61, 0xD7, 0x24, 0x37, 0x5D, 0xB5, 0xC4, 0x37, 0x8D, 0xBA, - 0x67, 0xB2, 0xEF, 0x03, 0x27, 0xFA, 0xC1, 0xB4, 0xCD, 0x6B, - 0x00, 0x66, 0xB4, 0xD6, 0x73, 0x70, 0x1F, 0x08, 0x3A, 0xCC, - 0x77, 0xAD, 0xE9, 0xF9, 0x34, 0xD4, 0xF3, 0xA0, 0x2D, 0xA9, - 0xE7, 0x58, 0xA9, 0xC0, 0x61, 0x84, 0xB6, 0xEC, 0x3D, 0x0A, - 0xAD, 0xFD, 0x5C, 0x86, 0x73, 0xAA, 0x6B, 0x47, 0xD8, 0x8B, - 0x2E, 0x58, 0x4B, 0x69, 0x12, 0x82, 0x26, 0x55, 0xE6, 0x14, - 0xBF, 0x55, 0x70, 0x88, 0xFE, 0xF9, 0x75, 0xE1, 0x02, 0x03, - 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, 0x01, 0x30, 0x81, 0xFE, - 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, - 0x14, 0xD9, 0x3C, 0x35, 0xEA, 0x74, 0x0E, 0x23, 0xBE, 0x9C, - 0xFC, 0xFA, 0x29, 0x90, 0x09, 0xC1, 0xE7, 0x84, 0x16, 0x9F, - 0x7C, 0x30, 0x81, 0xCE, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, - 0x81, 0xC6, 0x30, 0x81, 0xC3, 0x80, 0x14, 0xD3, 0x22, 0x8F, - 0x28, 0x2C, 0xE0, 0x05, 0xEE, 0xD3, 0xED, 0xC3, 0x71, 0x3D, - 0xC9, 0xB2, 0x36, 0x3A, 0x1D, 0xBF, 0xA8, 0xA1, 0x81, 0x9F, - 0xA4, 0x81, 0x9C, 0x30, 0x81, 0x99, 0x31, 0x0B, 0x30, 0x09, - 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, - 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, - 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, - 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, - 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x11, 0x30, 0x0F, 0x06, - 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x08, 0x53, 0x61, 0x77, 0x74, - 0x6F, 0x6F, 0x74, 0x68, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, - 0x55, 0x04, 0x0B, 0x0C, 0x0F, 0x43, 0x6F, 0x6E, 0x73, 0x75, - 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x5F, 0x31, 0x30, 0x32, 0x34, - 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, - 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, - 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, - 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, - 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, - 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x82, - 0x09, 0x00, 0xDA, 0xFB, 0x6A, 0x0D, 0xFE, 0xCF, 0x9B, 0x47, - 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x04, 0x05, 0x30, - 0x03, 0x01, 0x01, 0xFF, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03, - 0x81, 0x81, 0x00, 0x0B, 0xC3, 0xAF, 0x43, 0x85, 0x64, 0x61, - 0xE7, 0xAB, 0x5A, 0x2A, 0x1B, 0xB2, 0x29, 0xD5, 0x66, 0x68, - 0x44, 0x1A, 0x6D, 0x66, 0xFC, 0x3D, 0xB1, 0x88, 0xEC, 0xA5, - 0x41, 0x18, 0x67, 0x62, 0x34, 0xA4, 0x5E, 0xC9, 0x69, 0xCD, - 0x40, 0xC8, 0x56, 0x7E, 0xBF, 0xEB, 0xBC, 0x61, 0x1F, 0x33, - 0x34, 0x58, 0xBE, 0x57, 0xFD, 0xE6, 0x98, 0xDD, 0x51, 0x27, - 0x7C, 0xB7, 0x2C, 0xBC, 0xC9, 0x39, 0xE5, 0xE5, 0x95, 0x82, - 0xE1, 0x3F, 0xD9, 0xB9, 0x97, 0x30, 0x4E, 0x33, 0x2C, 0xEF, - 0xF8, 0xDB, 0xB4, 0xEE, 0x35, 0x75, 0x9E, 0x7A, 0x3F, 0x22, - 0x8F, 0xA5, 0x71, 0xD4, 0x01, 0x64, 0x6C, 0xF2, 0x85, 0xF7, - 0x72, 0x99, 0x2C, 0x80, 0x0F, 0xA4, 0x31, 0x1D, 0xD4, 0x0B, - 0x1E, 0xA5, 0x0F, 0xE7, 0x53, 0x0A, 0xDE, 0x15, 0x0D, 0xB2, - 0xD0, 0x6B, 0xF4, 0xD6, 0x2F, 0xE2, 0x0B, 0xA3, 0x8A, 0x5A, - 0x6E -}; -static const int sizeof_server_cert_der_1024 = sizeof(server_cert_der_1024); - -#endif /* USE_CERT_BUFFERS_1024 */ - -#ifdef USE_CERT_BUFFERS_2048 - -/* ./certs/client-key.der, 2048-bit */ -static const unsigned char client_key_der_2048[] = -{ - 0x30, 0x82, 0x04, 0xA4, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, - 0x01, 0x00, 0xC3, 0x03, 0xD1, 0x2B, 0xFE, 0x39, 0xA4, 0x32, - 0x45, 0x3B, 0x53, 0xC8, 0x84, 0x2B, 0x2A, 0x7C, 0x74, 0x9A, - 0xBD, 0xAA, 0x2A, 0x52, 0x07, 0x47, 0xD6, 0xA6, 0x36, 0xB2, - 0x07, 0x32, 0x8E, 0xD0, 0xBA, 0x69, 0x7B, 0xC6, 0xC3, 0x44, - 0x9E, 0xD4, 0x81, 0x48, 0xFD, 0x2D, 0x68, 0xA2, 0x8B, 0x67, - 0xBB, 0xA1, 0x75, 0xC8, 0x36, 0x2C, 0x4A, 0xD2, 0x1B, 0xF7, - 0x8B, 0xBA, 0xCF, 0x0D, 0xF9, 0xEF, 0xEC, 0xF1, 0x81, 0x1E, - 0x7B, 0x9B, 0x03, 0x47, 0x9A, 0xBF, 0x65, 0xCC, 0x7F, 0x65, - 0x24, 0x69, 0xA6, 0xE8, 0x14, 0x89, 0x5B, 0xE4, 0x34, 0xF7, - 0xC5, 0xB0, 0x14, 0x93, 0xF5, 0x67, 0x7B, 0x3A, 0x7A, 0x78, - 0xE1, 0x01, 0x56, 0x56, 0x91, 0xA6, 0x13, 0x42, 0x8D, 0xD2, - 0x3C, 0x40, 0x9C, 0x4C, 0xEF, 0xD1, 0x86, 0xDF, 0x37, 0x51, - 0x1B, 0x0C, 0xA1, 0x3B, 0xF5, 0xF1, 0xA3, 0x4A, 0x35, 0xE4, - 0xE1, 0xCE, 0x96, 0xDF, 0x1B, 0x7E, 0xBF, 0x4E, 0x97, 0xD0, - 0x10, 0xE8, 0xA8, 0x08, 0x30, 0x81, 0xAF, 0x20, 0x0B, 0x43, - 0x14, 0xC5, 0x74, 0x67, 0xB4, 0x32, 0x82, 0x6F, 0x8D, 0x86, - 0xC2, 0x88, 0x40, 0x99, 0x36, 0x83, 0xBA, 0x1E, 0x40, 0x72, - 0x22, 0x17, 0xD7, 0x52, 0x65, 0x24, 0x73, 0xB0, 0xCE, 0xEF, - 0x19, 0xCD, 0xAE, 0xFF, 0x78, 0x6C, 0x7B, 0xC0, 0x12, 0x03, - 0xD4, 0x4E, 0x72, 0x0D, 0x50, 0x6D, 0x3B, 0xA3, 0x3B, 0xA3, - 0x99, 0x5E, 0x9D, 0xC8, 0xD9, 0x0C, 0x85, 0xB3, 0xD9, 0x8A, - 0xD9, 0x54, 0x26, 0xDB, 0x6D, 0xFA, 0xAC, 0xBB, 0xFF, 0x25, - 0x4C, 0xC4, 0xD1, 0x79, 0xF4, 0x71, 0xD3, 0x86, 0x40, 0x18, - 0x13, 0xB0, 0x63, 0xB5, 0x72, 0x4E, 0x30, 0xC4, 0x97, 0x84, - 0x86, 0x2D, 0x56, 0x2F, 0xD7, 0x15, 0xF7, 0x7F, 0xC0, 0xAE, - 0xF5, 0xFC, 0x5B, 0xE5, 0xFB, 0xA1, 0xBA, 0xD3, 0x02, 0x03, - 0x01, 0x00, 0x01, 0x02, 0x82, 0x01, 0x01, 0x00, 0xA2, 0xE6, - 0xD8, 0x5F, 0x10, 0x71, 0x64, 0x08, 0x9E, 0x2E, 0x6D, 0xD1, - 0x6D, 0x1E, 0x85, 0xD2, 0x0A, 0xB1, 0x8C, 0x47, 0xCE, 0x2C, - 0x51, 0x6A, 0xA0, 0x12, 0x9E, 0x53, 0xDE, 0x91, 0x4C, 0x1D, - 0x6D, 0xEA, 0x59, 0x7B, 0xF2, 0x77, 0xAA, 0xD9, 0xC6, 0xD9, - 0x8A, 0xAB, 0xD8, 0xE1, 0x16, 0xE4, 0x63, 0x26, 0xFF, 0xB5, - 0x6C, 0x13, 0x59, 0xB8, 0xE3, 0xA5, 0xC8, 0x72, 0x17, 0x2E, - 0x0C, 0x9F, 0x6F, 0xE5, 0x59, 0x3F, 0x76, 0x6F, 0x49, 0xB1, - 0x11, 0xC2, 0x5A, 0x2E, 0x16, 0x29, 0x0D, 0xDE, 0xB7, 0x8E, - 0xDC, 0x40, 0xD5, 0xA2, 0xEE, 0xE0, 0x1E, 0xA1, 0xF4, 0xBE, - 0x97, 0xDB, 0x86, 0x63, 0x96, 0x14, 0xCD, 0x98, 0x09, 0x60, - 0x2D, 0x30, 0x76, 0x9C, 0x3C, 0xCD, 0xE6, 0x88, 0xEE, 0x47, - 0x92, 0x79, 0x0B, 0x5A, 0x00, 0xE2, 0x5E, 0x5F, 0x11, 0x7C, - 0x7D, 0xF9, 0x08, 0xB7, 0x20, 0x06, 0x89, 0x2A, 0x5D, 0xFD, - 0x00, 0xAB, 0x22, 0xE1, 0xF0, 0xB3, 0xBC, 0x24, 0xA9, 0x5E, - 0x26, 0x0E, 0x1F, 0x00, 0x2D, 0xFE, 0x21, 0x9A, 0x53, 0x5B, - 0x6D, 0xD3, 0x2B, 0xAB, 0x94, 0x82, 0x68, 0x43, 0x36, 0xD8, - 0xF6, 0x2F, 0xC6, 0x22, 0xFC, 0xB5, 0x41, 0x5D, 0x0D, 0x33, - 0x60, 0xEA, 0xA4, 0x7D, 0x7E, 0xE8, 0x4B, 0x55, 0x91, 0x56, - 0xD3, 0x5C, 0x57, 0x8F, 0x1F, 0x94, 0x17, 0x2F, 0xAA, 0xDE, - 0xE9, 0x9E, 0xA8, 0xF4, 0xCF, 0x8A, 0x4C, 0x8E, 0xA0, 0xE4, - 0x56, 0x73, 0xB2, 0xCF, 0x4F, 0x86, 0xC5, 0x69, 0x3C, 0xF3, - 0x24, 0x20, 0x8B, 0x5C, 0x96, 0x0C, 0xFA, 0x6B, 0x12, 0x3B, - 0x9A, 0x67, 0xC1, 0xDF, 0xC6, 0x96, 0xB2, 0xA5, 0xD5, 0x92, - 0x0D, 0x9B, 0x09, 0x42, 0x68, 0x24, 0x10, 0x45, 0xD4, 0x50, - 0xE4, 0x17, 0x39, 0x48, 0xD0, 0x35, 0x8B, 0x94, 0x6D, 0x11, - 0xDE, 0x8F, 0xCA, 0x59, 0x02, 0x81, 0x81, 0x00, 0xEA, 0x24, - 0xA7, 0xF9, 0x69, 0x33, 0xE9, 0x71, 0xDC, 0x52, 0x7D, 0x88, - 0x21, 0x28, 0x2F, 0x49, 0xDE, 0xBA, 0x72, 0x16, 0xE9, 0xCC, - 0x47, 0x7A, 0x88, 0x0D, 0x94, 0x57, 0x84, 0x58, 0x16, 0x3A, - 0x81, 0xB0, 0x3F, 0xA2, 0xCF, 0xA6, 0x6C, 0x1E, 0xB0, 0x06, - 0x29, 0x00, 0x8F, 0xE7, 0x77, 0x76, 0xAC, 0xDB, 0xCA, 0xC7, - 0xD9, 0x5E, 0x9B, 0x3F, 0x26, 0x90, 0x52, 0xAE, 0xFC, 0x38, - 0x90, 0x00, 0x14, 0xBB, 0xB4, 0x0F, 0x58, 0x94, 0xE7, 0x2F, - 0x6A, 0x7E, 0x1C, 0x4F, 0x41, 0x21, 0xD4, 0x31, 0x59, 0x1F, - 0x4E, 0x8A, 0x1A, 0x8D, 0xA7, 0x57, 0x6C, 0x22, 0xD8, 0xE5, - 0xF4, 0x7E, 0x32, 0xA6, 0x10, 0xCB, 0x64, 0xA5, 0x55, 0x03, - 0x87, 0xA6, 0x27, 0x05, 0x8C, 0xC3, 0xD7, 0xB6, 0x27, 0xB2, - 0x4D, 0xBA, 0x30, 0xDA, 0x47, 0x8F, 0x54, 0xD3, 0x3D, 0x8B, - 0x84, 0x8D, 0x94, 0x98, 0x58, 0xA5, 0x02, 0x81, 0x81, 0x00, - 0xD5, 0x38, 0x1B, 0xC3, 0x8F, 0xC5, 0x93, 0x0C, 0x47, 0x0B, - 0x6F, 0x35, 0x92, 0xC5, 0xB0, 0x8D, 0x46, 0xC8, 0x92, 0x18, - 0x8F, 0xF5, 0x80, 0x0A, 0xF7, 0xEF, 0xA1, 0xFE, 0x80, 0xB9, - 0xB5, 0x2A, 0xBA, 0xCA, 0x18, 0xB0, 0x5D, 0xA5, 0x07, 0xD0, - 0x93, 0x8D, 0xD8, 0x9C, 0x04, 0x1C, 0xD4, 0x62, 0x8E, 0xA6, - 0x26, 0x81, 0x01, 0xFF, 0xCE, 0x8A, 0x2A, 0x63, 0x34, 0x35, - 0x40, 0xAA, 0x6D, 0x80, 0xDE, 0x89, 0x23, 0x6A, 0x57, 0x4D, - 0x9E, 0x6E, 0xAD, 0x93, 0x4E, 0x56, 0x90, 0x0B, 0x6D, 0x9D, - 0x73, 0x8B, 0x0C, 0xAE, 0x27, 0x3D, 0xDE, 0x4E, 0xF0, 0xAA, - 0xC5, 0x6C, 0x78, 0x67, 0x6C, 0x94, 0x52, 0x9C, 0x37, 0x67, - 0x6C, 0x2D, 0xEF, 0xBB, 0xAF, 0xDF, 0xA6, 0x90, 0x3C, 0xC4, - 0x47, 0xCF, 0x8D, 0x96, 0x9E, 0x98, 0xA9, 0xB4, 0x9F, 0xC5, - 0xA6, 0x50, 0xDC, 0xB3, 0xF0, 0xFB, 0x74, 0x17, 0x02, 0x81, - 0x80, 0x5E, 0x83, 0x09, 0x62, 0xBD, 0xBA, 0x7C, 0xA2, 0xBF, - 0x42, 0x74, 0xF5, 0x7C, 0x1C, 0xD2, 0x69, 0xC9, 0x04, 0x0D, - 0x85, 0x7E, 0x3E, 0x3D, 0x24, 0x12, 0xC3, 0x18, 0x7B, 0xF3, - 0x29, 0xF3, 0x5F, 0x0E, 0x76, 0x6C, 0x59, 0x75, 0xE4, 0x41, - 0x84, 0x69, 0x9D, 0x32, 0xF3, 0xCD, 0x22, 0xAB, 0xB0, 0x35, - 0xBA, 0x4A, 0xB2, 0x3C, 0xE5, 0xD9, 0x58, 0xB6, 0x62, 0x4F, - 0x5D, 0xDE, 0xE5, 0x9E, 0x0A, 0xCA, 0x53, 0xB2, 0x2C, 0xF7, - 0x9E, 0xB3, 0x6B, 0x0A, 0x5B, 0x79, 0x65, 0xEC, 0x6E, 0x91, - 0x4E, 0x92, 0x20, 0xF6, 0xFC, 0xFC, 0x16, 0xED, 0xD3, 0x76, - 0x0C, 0xE2, 0xEC, 0x7F, 0xB2, 0x69, 0x13, 0x6B, 0x78, 0x0E, - 0x5A, 0x46, 0x64, 0xB4, 0x5E, 0xB7, 0x25, 0xA0, 0x5A, 0x75, - 0x3A, 0x4B, 0xEF, 0xC7, 0x3C, 0x3E, 0xF7, 0xFD, 0x26, 0xB8, - 0x20, 0xC4, 0x99, 0x0A, 0x9A, 0x73, 0xBE, 0xC3, 0x19, 0x02, - 0x81, 0x81, 0x00, 0xBA, 0x44, 0x93, 0x14, 0xAC, 0x34, 0x19, - 0x3B, 0x5F, 0x91, 0x60, 0xAC, 0xF7, 0xB4, 0xD6, 0x81, 0x05, - 0x36, 0x51, 0x53, 0x3D, 0xE8, 0x65, 0xDC, 0xAF, 0x2E, 0xDC, - 0x61, 0x3E, 0xC9, 0x7D, 0xB8, 0x7F, 0x87, 0xF0, 0x3B, 0x9B, - 0x03, 0x82, 0x29, 0x37, 0xCE, 0x72, 0x4E, 0x11, 0xD5, 0xB1, - 0xC1, 0x0C, 0x07, 0xA0, 0x99, 0x91, 0x4A, 0x8D, 0x7F, 0xEC, - 0x79, 0xCF, 0xF1, 0x39, 0xB5, 0xE9, 0x85, 0xEC, 0x62, 0xF7, - 0xDA, 0x7D, 0xBC, 0x64, 0x4D, 0x22, 0x3C, 0x0E, 0xF2, 0xD6, - 0x51, 0xF5, 0x87, 0xD8, 0x99, 0xC0, 0x11, 0x20, 0x5D, 0x0F, - 0x29, 0xFD, 0x5B, 0xE2, 0xAE, 0xD9, 0x1C, 0xD9, 0x21, 0x56, - 0x6D, 0xFC, 0x84, 0xD0, 0x5F, 0xED, 0x10, 0x15, 0x1C, 0x18, - 0x21, 0xE7, 0xC4, 0x3D, 0x4B, 0xD7, 0xD0, 0x9E, 0x6A, 0x95, - 0xCF, 0x22, 0xC9, 0x03, 0x7B, 0x9E, 0xE3, 0x60, 0x01, 0xFC, - 0x2F, 0x02, 0x81, 0x80, 0x11, 0xD0, 0x4B, 0xCF, 0x1B, 0x67, - 0xB9, 0x9F, 0x10, 0x75, 0x47, 0x86, 0x65, 0xAE, 0x31, 0xC2, - 0xC6, 0x30, 0xAC, 0x59, 0x06, 0x50, 0xD9, 0x0F, 0xB5, 0x70, - 0x06, 0xF7, 0xF0, 0xD3, 0xC8, 0x62, 0x7C, 0xA8, 0xDA, 0x6E, - 0xF6, 0x21, 0x3F, 0xD3, 0x7F, 0x5F, 0xEA, 0x8A, 0xAB, 0x3F, - 0xD9, 0x2A, 0x5E, 0xF3, 0x51, 0xD2, 0xC2, 0x30, 0x37, 0xE3, - 0x2D, 0xA3, 0x75, 0x0D, 0x1E, 0x4D, 0x21, 0x34, 0xD5, 0x57, - 0x70, 0x5C, 0x89, 0xBF, 0x72, 0xEC, 0x4A, 0x6E, 0x68, 0xD5, - 0xCD, 0x18, 0x74, 0x33, 0x4E, 0x8C, 0x3A, 0x45, 0x8F, 0xE6, - 0x96, 0x40, 0xEB, 0x63, 0xF9, 0x19, 0x86, 0x3A, 0x51, 0xDD, - 0x89, 0x4B, 0xB0, 0xF3, 0xF9, 0x9F, 0x5D, 0x28, 0x95, 0x38, - 0xBE, 0x35, 0xAB, 0xCA, 0x5C, 0xE7, 0x93, 0x53, 0x34, 0xA1, - 0x45, 0x5D, 0x13, 0x39, 0x65, 0x42, 0x46, 0xA1, 0x9F, 0xCD, - 0xF5, 0xBF -}; -static const int sizeof_client_key_der_2048 = sizeof(client_key_der_2048); - -/* ./certs/client-keyPub.der, 2048-bit */ -static const unsigned char client_keypub_der_2048[] = -{ - 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, - 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, - 0x01, 0x01, 0x00, 0xC3, 0x03, 0xD1, 0x2B, 0xFE, 0x39, 0xA4, - 0x32, 0x45, 0x3B, 0x53, 0xC8, 0x84, 0x2B, 0x2A, 0x7C, 0x74, - 0x9A, 0xBD, 0xAA, 0x2A, 0x52, 0x07, 0x47, 0xD6, 0xA6, 0x36, - 0xB2, 0x07, 0x32, 0x8E, 0xD0, 0xBA, 0x69, 0x7B, 0xC6, 0xC3, - 0x44, 0x9E, 0xD4, 0x81, 0x48, 0xFD, 0x2D, 0x68, 0xA2, 0x8B, - 0x67, 0xBB, 0xA1, 0x75, 0xC8, 0x36, 0x2C, 0x4A, 0xD2, 0x1B, - 0xF7, 0x8B, 0xBA, 0xCF, 0x0D, 0xF9, 0xEF, 0xEC, 0xF1, 0x81, - 0x1E, 0x7B, 0x9B, 0x03, 0x47, 0x9A, 0xBF, 0x65, 0xCC, 0x7F, - 0x65, 0x24, 0x69, 0xA6, 0xE8, 0x14, 0x89, 0x5B, 0xE4, 0x34, - 0xF7, 0xC5, 0xB0, 0x14, 0x93, 0xF5, 0x67, 0x7B, 0x3A, 0x7A, - 0x78, 0xE1, 0x01, 0x56, 0x56, 0x91, 0xA6, 0x13, 0x42, 0x8D, - 0xD2, 0x3C, 0x40, 0x9C, 0x4C, 0xEF, 0xD1, 0x86, 0xDF, 0x37, - 0x51, 0x1B, 0x0C, 0xA1, 0x3B, 0xF5, 0xF1, 0xA3, 0x4A, 0x35, - 0xE4, 0xE1, 0xCE, 0x96, 0xDF, 0x1B, 0x7E, 0xBF, 0x4E, 0x97, - 0xD0, 0x10, 0xE8, 0xA8, 0x08, 0x30, 0x81, 0xAF, 0x20, 0x0B, - 0x43, 0x14, 0xC5, 0x74, 0x67, 0xB4, 0x32, 0x82, 0x6F, 0x8D, - 0x86, 0xC2, 0x88, 0x40, 0x99, 0x36, 0x83, 0xBA, 0x1E, 0x40, - 0x72, 0x22, 0x17, 0xD7, 0x52, 0x65, 0x24, 0x73, 0xB0, 0xCE, - 0xEF, 0x19, 0xCD, 0xAE, 0xFF, 0x78, 0x6C, 0x7B, 0xC0, 0x12, - 0x03, 0xD4, 0x4E, 0x72, 0x0D, 0x50, 0x6D, 0x3B, 0xA3, 0x3B, - 0xA3, 0x99, 0x5E, 0x9D, 0xC8, 0xD9, 0x0C, 0x85, 0xB3, 0xD9, - 0x8A, 0xD9, 0x54, 0x26, 0xDB, 0x6D, 0xFA, 0xAC, 0xBB, 0xFF, - 0x25, 0x4C, 0xC4, 0xD1, 0x79, 0xF4, 0x71, 0xD3, 0x86, 0x40, - 0x18, 0x13, 0xB0, 0x63, 0xB5, 0x72, 0x4E, 0x30, 0xC4, 0x97, - 0x84, 0x86, 0x2D, 0x56, 0x2F, 0xD7, 0x15, 0xF7, 0x7F, 0xC0, - 0xAE, 0xF5, 0xFC, 0x5B, 0xE5, 0xFB, 0xA1, 0xBA, 0xD3, 0x02, - 0x03, 0x01, 0x00, 0x01 -}; -static const int sizeof_client_keypub_der_2048 = sizeof(client_keypub_der_2048); - -/* ./certs/client-cert.der, 2048-bit */ -static const unsigned char client_cert_der_2048[] = -{ - 0x30, 0x82, 0x04, 0xCA, 0x30, 0x82, 0x03, 0xB2, 0xA0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0xAA, 0xC4, 0xBF, 0x4C, - 0x50, 0xBD, 0x55, 0x77, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x30, - 0x81, 0x9E, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, - 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, - 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, - 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, - 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, - 0x6E, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, - 0x0C, 0x0C, 0x77, 0x6F, 0x6C, 0x66, 0x53, 0x53, 0x4C, 0x5F, - 0x32, 0x30, 0x34, 0x38, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, - 0x55, 0x04, 0x0B, 0x0C, 0x10, 0x50, 0x72, 0x6F, 0x67, 0x72, - 0x61, 0x6D, 0x6D, 0x69, 0x6E, 0x67, 0x2D, 0x32, 0x30, 0x34, - 0x38, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, - 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, - 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, - 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, - 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, - 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, - 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30, 0x34, 0x31, 0x33, - 0x31, 0x35, 0x32, 0x33, 0x30, 0x39, 0x5A, 0x17, 0x0D, 0x32, - 0x31, 0x30, 0x31, 0x30, 0x37, 0x31, 0x35, 0x32, 0x33, 0x30, - 0x39, 0x5A, 0x30, 0x81, 0x9E, 0x31, 0x0B, 0x30, 0x09, 0x06, - 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, - 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, - 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, - 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, - 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, - 0x55, 0x04, 0x0A, 0x0C, 0x0C, 0x77, 0x6F, 0x6C, 0x66, 0x53, - 0x53, 0x4C, 0x5F, 0x32, 0x30, 0x34, 0x38, 0x31, 0x19, 0x30, - 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x10, 0x50, 0x72, - 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x69, 0x6E, 0x67, 0x2D, - 0x32, 0x30, 0x34, 0x38, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, - 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, - 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, - 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, - 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, - 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, - 0x63, 0x6F, 0x6D, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, - 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, - 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, - 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xC3, 0x03, 0xD1, 0x2B, - 0xFE, 0x39, 0xA4, 0x32, 0x45, 0x3B, 0x53, 0xC8, 0x84, 0x2B, - 0x2A, 0x7C, 0x74, 0x9A, 0xBD, 0xAA, 0x2A, 0x52, 0x07, 0x47, - 0xD6, 0xA6, 0x36, 0xB2, 0x07, 0x32, 0x8E, 0xD0, 0xBA, 0x69, - 0x7B, 0xC6, 0xC3, 0x44, 0x9E, 0xD4, 0x81, 0x48, 0xFD, 0x2D, - 0x68, 0xA2, 0x8B, 0x67, 0xBB, 0xA1, 0x75, 0xC8, 0x36, 0x2C, - 0x4A, 0xD2, 0x1B, 0xF7, 0x8B, 0xBA, 0xCF, 0x0D, 0xF9, 0xEF, - 0xEC, 0xF1, 0x81, 0x1E, 0x7B, 0x9B, 0x03, 0x47, 0x9A, 0xBF, - 0x65, 0xCC, 0x7F, 0x65, 0x24, 0x69, 0xA6, 0xE8, 0x14, 0x89, - 0x5B, 0xE4, 0x34, 0xF7, 0xC5, 0xB0, 0x14, 0x93, 0xF5, 0x67, - 0x7B, 0x3A, 0x7A, 0x78, 0xE1, 0x01, 0x56, 0x56, 0x91, 0xA6, - 0x13, 0x42, 0x8D, 0xD2, 0x3C, 0x40, 0x9C, 0x4C, 0xEF, 0xD1, - 0x86, 0xDF, 0x37, 0x51, 0x1B, 0x0C, 0xA1, 0x3B, 0xF5, 0xF1, - 0xA3, 0x4A, 0x35, 0xE4, 0xE1, 0xCE, 0x96, 0xDF, 0x1B, 0x7E, - 0xBF, 0x4E, 0x97, 0xD0, 0x10, 0xE8, 0xA8, 0x08, 0x30, 0x81, - 0xAF, 0x20, 0x0B, 0x43, 0x14, 0xC5, 0x74, 0x67, 0xB4, 0x32, - 0x82, 0x6F, 0x8D, 0x86, 0xC2, 0x88, 0x40, 0x99, 0x36, 0x83, - 0xBA, 0x1E, 0x40, 0x72, 0x22, 0x17, 0xD7, 0x52, 0x65, 0x24, - 0x73, 0xB0, 0xCE, 0xEF, 0x19, 0xCD, 0xAE, 0xFF, 0x78, 0x6C, - 0x7B, 0xC0, 0x12, 0x03, 0xD4, 0x4E, 0x72, 0x0D, 0x50, 0x6D, - 0x3B, 0xA3, 0x3B, 0xA3, 0x99, 0x5E, 0x9D, 0xC8, 0xD9, 0x0C, - 0x85, 0xB3, 0xD9, 0x8A, 0xD9, 0x54, 0x26, 0xDB, 0x6D, 0xFA, - 0xAC, 0xBB, 0xFF, 0x25, 0x4C, 0xC4, 0xD1, 0x79, 0xF4, 0x71, - 0xD3, 0x86, 0x40, 0x18, 0x13, 0xB0, 0x63, 0xB5, 0x72, 0x4E, - 0x30, 0xC4, 0x97, 0x84, 0x86, 0x2D, 0x56, 0x2F, 0xD7, 0x15, - 0xF7, 0x7F, 0xC0, 0xAE, 0xF5, 0xFC, 0x5B, 0xE5, 0xFB, 0xA1, - 0xBA, 0xD3, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, - 0x07, 0x30, 0x82, 0x01, 0x03, 0x30, 0x1D, 0x06, 0x03, 0x55, - 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x33, 0xD8, 0x45, 0x66, - 0xD7, 0x68, 0x87, 0x18, 0x7E, 0x54, 0x0D, 0x70, 0x27, 0x91, - 0xC7, 0x26, 0xD7, 0x85, 0x65, 0xC0, 0x30, 0x81, 0xD3, 0x06, - 0x03, 0x55, 0x1D, 0x23, 0x04, 0x81, 0xCB, 0x30, 0x81, 0xC8, - 0x80, 0x14, 0x33, 0xD8, 0x45, 0x66, 0xD7, 0x68, 0x87, 0x18, - 0x7E, 0x54, 0x0D, 0x70, 0x27, 0x91, 0xC7, 0x26, 0xD7, 0x85, - 0x65, 0xC0, 0xA1, 0x81, 0xA4, 0xA4, 0x81, 0xA1, 0x30, 0x81, - 0x9E, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, - 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, - 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, - 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, - 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, - 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, - 0x0C, 0x77, 0x6F, 0x6C, 0x66, 0x53, 0x53, 0x4C, 0x5F, 0x32, - 0x30, 0x34, 0x38, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, - 0x04, 0x0B, 0x0C, 0x10, 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61, - 0x6D, 0x6D, 0x69, 0x6E, 0x67, 0x2D, 0x32, 0x30, 0x34, 0x38, - 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, - 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, - 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, - 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, - 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, - 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x82, - 0x09, 0x00, 0xAA, 0xC4, 0xBF, 0x4C, 0x50, 0xBD, 0x55, 0x77, - 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x04, 0x05, 0x30, - 0x03, 0x01, 0x01, 0xFF, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03, - 0x82, 0x01, 0x01, 0x00, 0x80, 0x52, 0x54, 0x61, 0x2A, 0x77, - 0x80, 0x53, 0x44, 0xA9, 0x80, 0x6D, 0x45, 0xFF, 0x0D, 0x25, - 0x7D, 0x1A, 0x8F, 0x23, 0x93, 0x53, 0x74, 0x35, 0x12, 0x6F, - 0xF0, 0x2E, 0x20, 0xEA, 0xED, 0x80, 0x63, 0x69, 0x88, 0xE6, - 0x0C, 0xA1, 0x49, 0x30, 0xE0, 0x82, 0xDB, 0x68, 0x0F, 0x7E, - 0x84, 0xAC, 0xFF, 0xFF, 0x7B, 0x42, 0xFA, 0x7E, 0x2F, 0xB2, - 0x52, 0x9F, 0xD2, 0x79, 0x5E, 0x35, 0x12, 0x27, 0x36, 0xBC, - 0xDF, 0x96, 0x58, 0x44, 0x96, 0x55, 0xC8, 0x4A, 0x94, 0x02, - 0x5F, 0x4A, 0x9D, 0xDC, 0xD3, 0x3A, 0xF7, 0x6D, 0xAC, 0x8B, - 0x79, 0x6E, 0xFC, 0xBE, 0x8F, 0x23, 0x58, 0x6A, 0x8A, 0xF5, - 0x38, 0x0A, 0x42, 0xF6, 0x98, 0x74, 0x88, 0x53, 0x2E, 0x02, - 0xAF, 0xE1, 0x0E, 0xBE, 0x6F, 0xCC, 0x74, 0x33, 0x7C, 0xEC, - 0xB4, 0xCB, 0xA7, 0x49, 0x6D, 0x82, 0x42, 0x4F, 0xEB, 0x73, - 0x29, 0xC3, 0x32, 0x00, 0x2B, 0x15, 0xF8, 0x88, 0x7A, 0x8F, - 0x6D, 0x20, 0x1B, 0xAE, 0x65, 0x5F, 0xC5, 0xD0, 0x8A, 0xD1, - 0xE2, 0x64, 0x6D, 0xA3, 0xA8, 0xFE, 0x64, 0xE1, 0xA9, 0x5B, - 0xE6, 0xD0, 0x23, 0xD6, 0x02, 0x72, 0x5A, 0xEC, 0x03, 0x8E, - 0x87, 0x67, 0x19, 0x8D, 0xE4, 0xA8, 0x99, 0x15, 0xC1, 0x3D, - 0x91, 0x48, 0x99, 0x8D, 0xFE, 0xAE, 0x1C, 0xBF, 0xF6, 0x28, - 0x1B, 0x45, 0xBE, 0xAD, 0xEF, 0x72, 0x83, 0x9A, 0xF6, 0xC7, - 0x3B, 0x51, 0xA3, 0x6E, 0x7A, 0x73, 0xBD, 0x83, 0xAA, 0x97, - 0xFD, 0x63, 0xB4, 0xF4, 0x6B, 0x1C, 0x14, 0x81, 0x9A, 0xEF, - 0x14, 0x24, 0xD3, 0xE1, 0x8B, 0xF4, 0x04, 0x04, 0x84, 0x54, - 0x0F, 0x61, 0xA2, 0xA8, 0xF2, 0x50, 0x37, 0x0C, 0x17, 0x0C, - 0xBC, 0xE0, 0xC2, 0x84, 0x85, 0xF4, 0x0B, 0xAE, 0x00, 0xCA, - 0x9F, 0x27, 0xE2, 0x44, 0x4F, 0x15, 0x0B, 0x8B, 0x1D, 0xB4 - -}; -static const int sizeof_client_cert_der_2048 = sizeof(client_cert_der_2048); - -/* ./certs/dh2048.der, 2048-bit */ -static const unsigned char dh_key_der_2048[] = -{ - 0x30, 0x82, 0x01, 0x08, 0x02, 0x82, 0x01, 0x01, 0x00, 0xB0, - 0xA1, 0x08, 0x06, 0x9C, 0x08, 0x13, 0xBA, 0x59, 0x06, 0x3C, - 0xBC, 0x30, 0xD5, 0xF5, 0x00, 0xC1, 0x4F, 0x44, 0xA7, 0xD6, - 0xEF, 0x4A, 0xC6, 0x25, 0x27, 0x1C, 0xE8, 0xD2, 0x96, 0x53, - 0x0A, 0x5C, 0x91, 0xDD, 0xA2, 0xC2, 0x94, 0x84, 0xBF, 0x7D, - 0xB2, 0x44, 0x9F, 0x9B, 0xD2, 0xC1, 0x8A, 0xC5, 0xBE, 0x72, - 0x5C, 0xA7, 0xE7, 0x91, 0xE6, 0xD4, 0x9F, 0x73, 0x07, 0x85, - 0x5B, 0x66, 0x48, 0xC7, 0x70, 0xFA, 0xB4, 0xEE, 0x02, 0xC9, - 0x3D, 0x9A, 0x4A, 0xDA, 0x3D, 0xC1, 0x46, 0x3E, 0x19, 0x69, - 0xD1, 0x17, 0x46, 0x07, 0xA3, 0x4D, 0x9F, 0x2B, 0x96, 0x17, - 0x39, 0x6D, 0x30, 0x8D, 0x2A, 0xF3, 0x94, 0xD3, 0x75, 0xCF, - 0xA0, 0x75, 0xE6, 0xF2, 0x92, 0x1F, 0x1A, 0x70, 0x05, 0xAA, - 0x04, 0x83, 0x57, 0x30, 0xFB, 0xDA, 0x76, 0x93, 0x38, 0x50, - 0xE8, 0x27, 0xFD, 0x63, 0xEE, 0x3C, 0xE5, 0xB7, 0xC8, 0x09, - 0xAE, 0x6F, 0x50, 0x35, 0x8E, 0x84, 0xCE, 0x4A, 0x00, 0xE9, - 0x12, 0x7E, 0x5A, 0x31, 0xD7, 0x33, 0xFC, 0x21, 0x13, 0x76, - 0xCC, 0x16, 0x30, 0xDB, 0x0C, 0xFC, 0xC5, 0x62, 0xA7, 0x35, - 0xB8, 0xEF, 0xB7, 0xB0, 0xAC, 0xC0, 0x36, 0xF6, 0xD9, 0xC9, - 0x46, 0x48, 0xF9, 0x40, 0x90, 0x00, 0x2B, 0x1B, 0xAA, 0x6C, - 0xE3, 0x1A, 0xC3, 0x0B, 0x03, 0x9E, 0x1B, 0xC2, 0x46, 0xE4, - 0x48, 0x4E, 0x22, 0x73, 0x6F, 0xC3, 0x5F, 0xD4, 0x9A, 0xD6, - 0x30, 0x07, 0x48, 0xD6, 0x8C, 0x90, 0xAB, 0xD4, 0xF6, 0xF1, - 0xE3, 0x48, 0xD3, 0x58, 0x4B, 0xA6, 0xB9, 0xCD, 0x29, 0xBF, - 0x68, 0x1F, 0x08, 0x4B, 0x63, 0x86, 0x2F, 0x5C, 0x6B, 0xD6, - 0xB6, 0x06, 0x65, 0xF7, 0xA6, 0xDC, 0x00, 0x67, 0x6B, 0xBB, - 0xC3, 0xA9, 0x41, 0x83, 0xFB, 0xC7, 0xFA, 0xC8, 0xE2, 0x1E, - 0x7E, 0xAF, 0x00, 0x3F, 0x93, 0x02, 0x01, 0x02 -}; -static const int sizeof_dh_key_der_2048 = sizeof(dh_key_der_2048); - -/* ./certs/dsa2048.der, 2048-bit */ -static const unsigned char dsa_key_der_2048[] = -{ - 0x30, 0x82, 0x03, 0x3F, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, - 0x01, 0x00, 0xCC, 0x8E, 0xC9, 0xA0, 0xD5, 0x9A, 0x27, 0x1C, - 0xDA, 0x52, 0xDF, 0xC7, 0xC0, 0xE6, 0x06, 0xA4, 0x3E, 0x8A, - 0x66, 0x49, 0xD0, 0x59, 0x33, 0x51, 0x69, 0xC4, 0x9C, 0x5E, - 0x64, 0x85, 0xC7, 0xF1, 0xAB, 0xD5, 0xD9, 0x62, 0xAC, 0xFD, - 0xA1, 0xE0, 0x1B, 0x57, 0xFF, 0x96, 0xEF, 0x0C, 0x9F, 0xC8, - 0x44, 0x87, 0xEB, 0x5C, 0x91, 0xD0, 0x46, 0x42, 0x09, 0x50, - 0x6A, 0x23, 0xCB, 0x89, 0x6F, 0x55, 0xE9, 0x6A, 0x11, 0xA9, - 0xA8, 0x32, 0xAB, 0x33, 0x0D, 0x51, 0xB5, 0x79, 0x51, 0xB4, - 0xAB, 0xA2, 0x25, 0x11, 0x8D, 0xE5, 0x24, 0xBE, 0xD8, 0xF1, - 0x9D, 0x4E, 0x12, 0x6F, 0xAC, 0x44, 0x54, 0x80, 0xA9, 0xB4, - 0x81, 0x68, 0x4E, 0x44, 0x0E, 0xB8, 0x39, 0xF3, 0xBE, 0x83, - 0x08, 0x74, 0xA2, 0xC6, 0x7A, 0xD7, 0x6A, 0x7D, 0x0A, 0x88, - 0x57, 0x83, 0x48, 0xDC, 0xCF, 0x5E, 0x6F, 0xEE, 0x68, 0x0C, - 0xF7, 0xFF, 0x03, 0x04, 0x90, 0xAA, 0xF7, 0x07, 0x98, 0xF8, - 0x67, 0x5A, 0x83, 0x23, 0x66, 0x47, 0x60, 0xC3, 0x43, 0x6E, - 0x03, 0x91, 0xAC, 0x28, 0x66, 0xCB, 0xF0, 0xD3, 0x05, 0xC8, - 0x09, 0x97, 0xB5, 0xAE, 0x01, 0x5E, 0x80, 0x3B, 0x9D, 0x4F, - 0xDE, 0x3E, 0x94, 0xFE, 0xCB, 0x82, 0xB0, 0xB1, 0xFC, 0x91, - 0x8B, 0x1D, 0x8A, 0xEE, 0xC6, 0x06, 0x1F, 0x37, 0x91, 0x48, - 0xD2, 0xF8, 0x6C, 0x5D, 0x60, 0x13, 0x83, 0xA7, 0x81, 0xAC, - 0xCA, 0x8D, 0xD0, 0x6A, 0x04, 0x0A, 0xEA, 0x3E, 0x22, 0x4E, - 0x13, 0xF1, 0x0D, 0xBB, 0x60, 0x6B, 0xCD, 0xBC, 0x5C, 0x87, - 0xA3, 0x67, 0x2B, 0x42, 0xA1, 0x9F, 0xCD, 0x39, 0x58, 0xBE, - 0x55, 0xB1, 0x93, 0x84, 0xCE, 0xB2, 0x10, 0x4E, 0xE4, 0xC3, - 0x9F, 0xB2, 0x53, 0x61, 0x01, 0x29, 0xAA, 0x96, 0xCB, 0x20, - 0x60, 0x42, 0x1D, 0xBA, 0x75, 0x4B, 0x63, 0xC1, 0x02, 0x15, - 0x00, 0xE7, 0xA5, 0x39, 0xD4, 0x6A, 0x37, 0x5E, 0x95, 0x06, - 0x39, 0x07, 0x77, 0x0A, 0xEB, 0xA0, 0x03, 0xEB, 0x78, 0x82, - 0x9B, 0x02, 0x82, 0x01, 0x01, 0x00, 0x9A, 0xD4, 0x4C, 0x71, - 0x2F, 0xEC, 0xFA, 0x32, 0xB2, 0x80, 0x7E, 0x61, 0x4A, 0x6B, - 0x5F, 0x18, 0x76, 0x43, 0xC3, 0x69, 0xBA, 0x41, 0xC7, 0xA7, - 0x1D, 0x79, 0x01, 0xEC, 0xAF, 0x34, 0x87, 0x67, 0x4F, 0x29, - 0x80, 0xA8, 0x3B, 0x87, 0xF6, 0xE8, 0xA1, 0xE8, 0xCD, 0x1B, - 0x1C, 0x86, 0x38, 0xF6, 0xD1, 0x0C, 0x46, 0x2E, 0xC8, 0xE0, - 0xC9, 0x30, 0x26, 0xD5, 0x2C, 0x7F, 0xC1, 0x08, 0xBF, 0xCC, - 0x5A, 0x82, 0x8E, 0xD4, 0xD4, 0x49, 0xAA, 0xA2, 0xFA, 0xE6, - 0xC1, 0x9D, 0xF0, 0xD9, 0x96, 0xB0, 0xFF, 0x0C, 0x5B, 0x33, - 0x8E, 0x06, 0xDD, 0x9D, 0x28, 0xA9, 0xE9, 0x80, 0x41, 0x3B, - 0xD8, 0x7A, 0x94, 0x21, 0x8F, 0x56, 0xF1, 0xA2, 0xB4, 0x2B, - 0x89, 0x1C, 0x74, 0xFF, 0x7E, 0x91, 0xDC, 0x1F, 0x91, 0x13, - 0x98, 0xAF, 0xC7, 0x06, 0xD2, 0x4C, 0x90, 0xA2, 0xBD, 0xDA, - 0x16, 0xBA, 0x65, 0xB0, 0x2D, 0x68, 0x87, 0x3C, 0x6E, 0x25, - 0x8D, 0x90, 0xC7, 0xBC, 0x0D, 0xA9, 0x43, 0x03, 0xC9, 0xBE, - 0xCF, 0x85, 0x6F, 0xDB, 0x07, 0x7B, 0x8C, 0xF8, 0xB1, 0xC2, - 0x49, 0x10, 0x69, 0x63, 0x56, 0x37, 0xC5, 0x30, 0xD2, 0xFB, - 0x71, 0x9A, 0xE8, 0x82, 0x07, 0x2E, 0x3E, 0x95, 0x50, 0xF3, - 0x73, 0xCF, 0x34, 0x5B, 0xD5, 0xAB, 0x02, 0x15, 0xF2, 0xCC, - 0xD7, 0x52, 0xC5, 0x28, 0xD8, 0x41, 0x19, 0x55, 0x6F, 0xB8, - 0x5F, 0xF1, 0x99, 0xB3, 0xC7, 0xD9, 0xB3, 0x71, 0xF4, 0x2D, - 0xDF, 0x22, 0x59, 0x35, 0x86, 0xDB, 0x39, 0xCA, 0x1B, 0x4D, - 0x35, 0x90, 0x19, 0x6B, 0x31, 0xE3, 0xC8, 0xC6, 0x09, 0xBF, - 0x7C, 0xED, 0x01, 0xB4, 0xB2, 0xF5, 0x6E, 0xDA, 0x63, 0x41, - 0x3C, 0xE6, 0x3A, 0x72, 0x2D, 0x65, 0x48, 0xF6, 0x07, 0xCD, - 0x92, 0x84, 0x8B, 0x1D, 0xA7, 0x31, 0x6B, 0xD6, 0xF0, 0xFB, - 0xD9, 0xF4, 0x02, 0x82, 0x01, 0x00, 0x66, 0x4B, 0xBB, 0xB7, - 0xC9, 0x48, 0x95, 0x0D, 0x5A, 0xA6, 0x2D, 0xA1, 0x7F, 0xDF, - 0x1F, 0x67, 0x6D, 0xED, 0x52, 0x4B, 0x16, 0x6C, 0x17, 0xC6, - 0xAE, 0xF8, 0x6A, 0xC4, 0x57, 0xED, 0x2F, 0xB3, 0xF0, 0x2A, - 0x55, 0xAB, 0xBA, 0xCA, 0xEA, 0x17, 0xE8, 0x35, 0x7C, 0xE5, - 0x31, 0x0D, 0x4A, 0x95, 0xFC, 0x43, 0x6F, 0x97, 0x3C, 0x5C, - 0x67, 0xAC, 0xBE, 0x67, 0x7F, 0xE9, 0x4E, 0xAA, 0x48, 0xB3, - 0x92, 0xA1, 0x76, 0x75, 0xEA, 0x04, 0x34, 0x7F, 0x87, 0x33, - 0x2D, 0x24, 0xB6, 0x29, 0x97, 0xE3, 0x04, 0x77, 0x93, 0x89, - 0x13, 0xDB, 0x1B, 0x93, 0xB8, 0x2C, 0x90, 0x1A, 0x09, 0x3B, - 0x26, 0xD9, 0x59, 0xF3, 0x2A, 0x09, 0x58, 0xDC, 0xAC, 0x25, - 0xB4, 0xA9, 0x45, 0x3B, 0xA2, 0x3A, 0x6C, 0x61, 0x84, 0xBF, - 0x68, 0xD4, 0xEA, 0x9B, 0xC5, 0x29, 0x48, 0x60, 0x15, 0x10, - 0x35, 0x2C, 0x44, 0x1D, 0xB5, 0x9A, 0xEE, 0xAC, 0xC1, 0x68, - 0xE8, 0x47, 0xB7, 0x41, 0x34, 0x39, 0x9A, 0xF8, 0xA5, 0x20, - 0xE9, 0x24, 0xC4, 0x2C, 0x58, 0x3F, 0x4C, 0x41, 0x30, 0x3A, - 0x14, 0x6E, 0x8D, 0xEA, 0xAD, 0xBA, 0x9B, 0x43, 0xD3, 0x98, - 0x2F, 0x83, 0xD8, 0x14, 0x67, 0xE8, 0xF8, 0xD5, 0x4F, 0xAC, - 0xE0, 0x3B, 0xBF, 0xA7, 0x54, 0x16, 0x5E, 0x49, 0x64, 0x26, - 0x54, 0xA4, 0x6B, 0x69, 0x7C, 0xBA, 0x8A, 0x83, 0xD9, 0x2E, - 0x65, 0x0A, 0xA2, 0x27, 0xEF, 0x99, 0x99, 0x08, 0xD7, 0xB5, - 0x9F, 0xA0, 0x01, 0xEF, 0x7E, 0x17, 0xBF, 0x83, 0x6B, 0x2E, - 0xDD, 0xC0, 0x39, 0x38, 0x23, 0x68, 0xB4, 0x76, 0x6B, 0xE5, - 0xCA, 0xF7, 0x7C, 0xEE, 0xC0, 0x52, 0xE2, 0xDD, 0xAD, 0x59, - 0x3A, 0x42, 0x06, 0x45, 0xB0, 0xC7, 0xC1, 0x77, 0x05, 0xB2, - 0x0C, 0x32, 0x40, 0x46, 0xAA, 0xDA, 0x79, 0x77, 0x04, 0x71, - 0xDF, 0x7A, 0x02, 0x15, 0x00, 0x98, 0xEE, 0xB9, 0x51, 0x37, - 0x3E, 0x75, 0x13, 0x13, 0x06, 0x8F, 0x94, 0xD3, 0xE6, 0xE9, - 0x00, 0xCB, 0x62, 0x6D, 0x9A -}; -static const int sizeof_dsa_key_der_2048 = sizeof(dsa_key_der_2048); - -/* ./certs/rsa2048.der, 2048-bit */ -static const unsigned char rsa_key_der_2048[] = -{ - 0x30, 0x82, 0x04, 0xA3, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, - 0x01, 0x00, 0xE9, 0x8A, 0x5D, 0x15, 0xA4, 0xD4, 0x34, 0xB9, - 0x59, 0xA2, 0xDA, 0xAF, 0x74, 0xC8, 0xC9, 0x03, 0x26, 0x38, - 0xFA, 0x48, 0xFC, 0x4D, 0x30, 0x6E, 0xEA, 0x76, 0x89, 0xCE, - 0x4F, 0xF6, 0x87, 0xDE, 0x32, 0x3A, 0x46, 0x6E, 0x38, 0x12, - 0x58, 0x37, 0x22, 0x0D, 0x80, 0xAC, 0x2D, 0xAF, 0x2F, 0x12, - 0x3E, 0x62, 0x73, 0x60, 0x66, 0x68, 0x90, 0xB2, 0x6F, 0x47, - 0x17, 0x04, 0x2B, 0xCA, 0xB7, 0x26, 0xB7, 0x10, 0xC2, 0x13, - 0xF9, 0x7A, 0x62, 0x0A, 0x93, 0x32, 0x90, 0x42, 0x0D, 0x16, - 0x2E, 0xFA, 0xD7, 0x29, 0xD7, 0x9F, 0x54, 0xE4, 0xFC, 0x65, - 0x74, 0xF8, 0xF6, 0x43, 0x6B, 0x4E, 0x9E, 0x34, 0x7F, 0xCB, - 0x6B, 0x1C, 0x1A, 0xDE, 0x82, 0x81, 0xBF, 0x08, 0x5D, 0x3F, - 0xC0, 0xB6, 0xB1, 0xA8, 0xA5, 0x9C, 0x81, 0x70, 0xA7, 0x4E, - 0x32, 0x87, 0x15, 0x1C, 0x78, 0x0E, 0xF0, 0x18, 0xFE, 0xEB, - 0x4B, 0x37, 0x2B, 0xE9, 0xE1, 0xF7, 0xFA, 0x51, 0xC6, 0x58, - 0xB9, 0xD8, 0x06, 0x03, 0xED, 0xC0, 0x03, 0x18, 0x55, 0x8B, - 0x98, 0xFE, 0xB1, 0xF6, 0xD0, 0x3D, 0xFA, 0x63, 0xC0, 0x38, - 0x19, 0xC7, 0x00, 0xEF, 0x4D, 0x99, 0x60, 0xB4, 0xBA, 0xCE, - 0xE3, 0xCE, 0xD9, 0x6B, 0x2D, 0x76, 0x94, 0xFF, 0xFB, 0x77, - 0x18, 0x4A, 0xFE, 0x65, 0xF0, 0x0A, 0x91, 0x5C, 0x3B, 0x22, - 0x94, 0x85, 0xD0, 0x20, 0x18, 0x59, 0x2E, 0xA5, 0x33, 0x03, - 0xAC, 0x1B, 0x5F, 0x78, 0x32, 0x11, 0x25, 0xEE, 0x7F, 0x96, - 0x21, 0xA9, 0xD6, 0x76, 0x97, 0x8D, 0x66, 0x7E, 0xB2, 0x91, - 0xD0, 0x36, 0x2E, 0xA3, 0x1D, 0xBF, 0xF1, 0x85, 0xED, 0xC0, - 0x3E, 0x60, 0xB8, 0x5A, 0x9F, 0xAB, 0x80, 0xE0, 0xEA, 0x5D, - 0x5F, 0x75, 0x56, 0xC7, 0x4D, 0x51, 0x8E, 0xD4, 0x1F, 0x34, - 0xA6, 0x36, 0xF1, 0x30, 0x1F, 0x51, 0x99, 0x2F, 0x02, 0x03, - 0x01, 0x00, 0x01, 0x02, 0x82, 0x01, 0x00, 0x52, 0x11, 0x33, - 0x40, 0xC5, 0xD9, 0x64, 0x65, 0xB5, 0xE0, 0x0A, 0xA5, 0x19, - 0x8E, 0xED, 0x44, 0x54, 0x0C, 0x35, 0xB7, 0xAC, 0x21, 0x9B, - 0xE1, 0x7E, 0x37, 0x05, 0x9A, 0x20, 0x73, 0x6B, 0xAF, 0x63, - 0x4B, 0x23, 0x30, 0xDC, 0x37, 0x66, 0x14, 0x89, 0xBC, 0xE0, - 0xF8, 0xA0, 0x5D, 0x2D, 0x57, 0x65, 0xE0, 0xC6, 0xD6, 0x9B, - 0x66, 0x27, 0x62, 0xEC, 0xC3, 0xB8, 0x8C, 0xD8, 0xAE, 0xB5, - 0xC9, 0xBF, 0x0E, 0xFE, 0x84, 0x72, 0x68, 0xD5, 0x47, 0x0E, - 0x0E, 0xF8, 0xAE, 0x9D, 0x56, 0xAC, 0x4F, 0xAD, 0x88, 0xA0, - 0xA2, 0xF6, 0xFC, 0x38, 0xCD, 0x96, 0x5B, 0x5E, 0x7E, 0xB6, - 0x98, 0xBB, 0xF3, 0x8A, 0xEC, 0xFA, 0xC8, 0xB7, 0x90, 0x75, - 0xA0, 0x0E, 0x77, 0x6B, 0xFD, 0x59, 0x45, 0x5A, 0x0C, 0xFF, - 0x95, 0x8D, 0xCE, 0xFE, 0x9B, 0xF6, 0x19, 0x8E, 0x0B, 0xA1, - 0x0C, 0xEE, 0xC6, 0x79, 0xDD, 0x9D, 0x61, 0x85, 0x5C, 0x19, - 0x6C, 0x47, 0xCC, 0x08, 0xFF, 0xA5, 0x62, 0xDB, 0xE4, 0x2D, - 0x2D, 0xDD, 0x14, 0x67, 0xD6, 0x4A, 0x64, 0x2A, 0x66, 0x49, - 0x54, 0x9C, 0xE3, 0x85, 0x18, 0xE7, 0x31, 0x42, 0xE2, 0xD0, - 0x2C, 0x20, 0xA0, 0x74, 0x0F, 0x1F, 0x20, 0x89, 0xBA, 0xAB, - 0x80, 0xD8, 0x38, 0xD9, 0x46, 0x69, 0xBB, 0xEF, 0xCC, 0x8B, - 0xA1, 0x73, 0xA7, 0xF2, 0xE4, 0x38, 0x5D, 0xD6, 0x75, 0x9F, - 0x88, 0x0E, 0x56, 0xCD, 0xD8, 0x84, 0x59, 0x29, 0x73, 0xF5, - 0xA1, 0x79, 0xDA, 0x7A, 0x1F, 0xBF, 0x73, 0x83, 0xC0, 0x6D, - 0x9F, 0x8B, 0x34, 0x15, 0xC0, 0x6D, 0x69, 0x6A, 0x20, 0xE6, - 0x51, 0xCF, 0x45, 0x6E, 0xCC, 0x05, 0xC4, 0x3A, 0xC0, 0x9E, - 0xAA, 0xC1, 0x06, 0x2F, 0xAB, 0x99, 0x30, 0xE1, 0x6E, 0x9D, - 0x45, 0x7A, 0xFF, 0xA9, 0xCE, 0x70, 0xB8, 0x16, 0x1A, 0x0E, - 0x20, 0xFA, 0xC1, 0x02, 0x81, 0x81, 0x00, 0xFF, 0x30, 0x11, - 0xC2, 0x3C, 0x6B, 0xB4, 0xD6, 0x9E, 0x6B, 0xC1, 0x93, 0xD1, - 0x48, 0xCE, 0x80, 0x2D, 0xBE, 0xAF, 0xF7, 0xBA, 0xB2, 0xD7, - 0xC3, 0xC4, 0x53, 0x6E, 0x15, 0x02, 0xAA, 0x61, 0xB9, 0xEA, - 0x05, 0x9B, 0x79, 0x67, 0x0B, 0xCE, 0xD9, 0xFB, 0x98, 0x8C, - 0x1D, 0x6B, 0xF4, 0x5A, 0xA7, 0xA0, 0x5E, 0x54, 0x18, 0xE9, - 0x31, 0x44, 0x7C, 0xC7, 0x52, 0xD8, 0x6D, 0xA0, 0x3E, 0xD6, - 0x14, 0x2D, 0x7B, 0x15, 0x9D, 0x1E, 0x39, 0x87, 0x96, 0xDD, - 0xA8, 0x33, 0x55, 0x2A, 0x8E, 0x32, 0xC0, 0xC4, 0xE5, 0xB8, - 0xCB, 0xCD, 0x32, 0x8D, 0xAD, 0x7B, 0xE5, 0xC6, 0x7E, 0x4D, - 0x6F, 0xF3, 0xA4, 0xC5, 0xA6, 0x40, 0xBE, 0x90, 0x3A, 0x33, - 0x6A, 0x24, 0xB2, 0x80, 0x81, 0x12, 0xAC, 0xE3, 0x7B, 0x26, - 0x63, 0xCF, 0x88, 0xB9, 0xFF, 0x74, 0x23, 0x37, 0x52, 0xF0, - 0xC4, 0x27, 0x5D, 0x45, 0x1F, 0x02, 0x81, 0x81, 0x00, 0xEA, - 0x48, 0xA7, 0xDD, 0x73, 0x41, 0x56, 0x21, 0x15, 0xF7, 0x42, - 0x45, 0x4D, 0xA9, 0xE1, 0x66, 0x5B, 0xBD, 0x25, 0x7D, 0xF7, - 0xA8, 0x65, 0x13, 0xAE, 0x2D, 0x38, 0x11, 0xCD, 0x93, 0xFC, - 0x30, 0xA3, 0x2C, 0x44, 0xBB, 0xCF, 0xD0, 0x21, 0x8F, 0xFB, - 0xC1, 0xF9, 0xAD, 0x1D, 0xEE, 0x96, 0xCF, 0x97, 0x49, 0x60, - 0x53, 0x80, 0xA5, 0xA2, 0xF8, 0xEE, 0xB9, 0xD5, 0x77, 0x44, - 0xDD, 0xFD, 0x19, 0x2A, 0xF1, 0x81, 0xF4, 0xD9, 0x3C, 0xEC, - 0x73, 0xD0, 0x2A, 0xD8, 0x3C, 0x27, 0x87, 0x79, 0x12, 0x86, - 0xE7, 0x57, 0x0C, 0x59, 0xD1, 0x44, 0x55, 0xAE, 0xC3, 0x4D, - 0x42, 0xAD, 0xA9, 0xB3, 0x28, 0x61, 0xB4, 0x9C, 0xA6, 0x63, - 0xD3, 0x96, 0xB1, 0x75, 0x9F, 0x2A, 0x78, 0x99, 0xE3, 0x1E, - 0x71, 0x47, 0x39, 0xF4, 0x52, 0xE3, 0x66, 0xF1, 0xEB, 0x7F, - 0xEF, 0xC6, 0x81, 0x93, 0x4C, 0x99, 0xF1, 0x02, 0x81, 0x81, - 0x00, 0xC5, 0xB6, 0x20, 0x8C, 0x34, 0xF3, 0xDD, 0xF0, 0x4A, - 0x5D, 0x82, 0x65, 0x5C, 0x48, 0xE4, 0x75, 0x3A, 0xFB, 0xFA, - 0xAA, 0x1C, 0xE4, 0x63, 0x77, 0x31, 0xAC, 0xD2, 0x25, 0x45, - 0x23, 0x6D, 0x03, 0xF5, 0xE4, 0xD2, 0x48, 0x85, 0x26, 0x08, - 0xE5, 0xAA, 0xA0, 0xCE, 0x2E, 0x1D, 0x6D, 0xFC, 0xAE, 0xD2, - 0xF9, 0x42, 0x7E, 0xEA, 0x6D, 0x59, 0x7A, 0xB3, 0x93, 0xE4, - 0x4B, 0x4B, 0x54, 0x63, 0xD8, 0xCE, 0x44, 0x06, 0xC2, 0xEC, - 0x9F, 0xF6, 0x05, 0x55, 0x46, 0xF4, 0x3E, 0x8F, 0xF2, 0x0C, - 0x30, 0x7E, 0x5C, 0xDD, 0x88, 0x49, 0x3B, 0x59, 0xB9, 0x87, - 0xBC, 0xC6, 0xC5, 0x24, 0x8A, 0x10, 0x63, 0x21, 0x1F, 0x66, - 0x1A, 0x3E, 0xF4, 0x58, 0xD1, 0x6C, 0x0D, 0x40, 0xB2, 0xC0, - 0x1D, 0x63, 0x42, 0x0E, 0xC4, 0x56, 0x0E, 0xC0, 0xCC, 0xC2, - 0xD6, 0x66, 0x0E, 0xC4, 0xAB, 0xB5, 0x33, 0xF6, 0x51, 0x02, - 0x81, 0x80, 0x19, 0x7E, 0xE6, 0xA5, 0xB6, 0xD1, 0x39, 0x6A, - 0x48, 0x55, 0xAC, 0x24, 0x96, 0x9B, 0x12, 0x28, 0x6D, 0x7B, - 0x5C, 0x05, 0x25, 0x5A, 0x72, 0x05, 0x7E, 0x42, 0xF5, 0x83, - 0x1A, 0x78, 0x2C, 0x4D, 0xAE, 0xB4, 0x36, 0x96, 0xA9, 0xBA, - 0xE0, 0xAC, 0x26, 0x9D, 0xA9, 0x6A, 0x29, 0x83, 0xB9, 0x6D, - 0xC5, 0xEC, 0xFA, 0x4A, 0x9C, 0x09, 0x6A, 0x7E, 0xE4, 0x9B, - 0xDC, 0x9B, 0x2A, 0x27, 0x6E, 0x4F, 0xBA, 0xD8, 0xA5, 0x67, - 0xDB, 0xEC, 0x41, 0x5F, 0x29, 0x1C, 0x40, 0x83, 0xEB, 0x59, - 0x56, 0xD7, 0xA9, 0x4E, 0xAB, 0xAE, 0x70, 0x67, 0xD1, 0xA3, - 0xF1, 0x6C, 0xD7, 0x8F, 0x96, 0x0E, 0x8D, 0xAC, 0xAB, 0x55, - 0x58, 0x66, 0xD3, 0x1E, 0x47, 0x9B, 0xF0, 0x4C, 0xED, 0xF6, - 0x49, 0xE8, 0xE9, 0x7B, 0x32, 0x61, 0x20, 0x31, 0x95, 0x05, - 0xB2, 0xF6, 0x09, 0xEA, 0x32, 0x14, 0x0F, 0xCF, 0x9A, 0x41, - 0x02, 0x81, 0x80, 0x77, 0x3F, 0xB6, 0x14, 0x8D, 0xC5, 0x13, - 0x08, 0x7E, 0xC9, 0xC4, 0xEA, 0xD4, 0xBA, 0x0D, 0xA4, 0x9E, - 0xB3, 0x6E, 0xDE, 0x1A, 0x7A, 0xF8, 0x89, 0x88, 0xEF, 0x36, - 0x3C, 0x11, 0xBC, 0x83, 0xE8, 0x30, 0x6C, 0x81, 0x7C, 0x47, - 0xF3, 0x4D, 0xCA, 0xEA, 0x56, 0x01, 0x62, 0x55, 0x2E, 0x4B, - 0x89, 0xA9, 0xBD, 0x6F, 0x01, 0xF6, 0x74, 0x02, 0xAA, 0xE3, - 0x84, 0x66, 0x06, 0x95, 0x34, 0xA1, 0xE2, 0xCA, 0x65, 0xFE, - 0xA3, 0x2D, 0x43, 0x97, 0x95, 0x6C, 0x6F, 0xD5, 0xB4, 0x38, - 0xF6, 0xF9, 0x95, 0x30, 0xFA, 0xF8, 0x9C, 0x25, 0x2B, 0xB6, - 0x14, 0x51, 0xCC, 0x2E, 0xB3, 0x5B, 0xD6, 0xDC, 0x1A, 0xEC, - 0x2D, 0x09, 0x5B, 0x3F, 0x3A, 0xD0, 0xB8, 0x4E, 0x27, 0x1F, - 0xDC, 0x2A, 0xEE, 0xAC, 0xA9, 0x59, 0x5D, 0x07, 0x63, 0x11, - 0x83, 0x0B, 0xD4, 0x74, 0x80, 0xB6, 0x7D, 0x62, 0x45, 0xBF, - 0x56 -}; -static const int sizeof_rsa_key_der_2048 = sizeof(rsa_key_der_2048); - -/* ./certs/ca-key.der, 2048-bit */ -static const unsigned char ca_key_der_2048[] = -{ - 0x30, 0x82, 0x04, 0xA4, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, - 0x01, 0x00, 0xBF, 0x0C, 0xCA, 0x2D, 0x14, 0xB2, 0x1E, 0x84, - 0x42, 0x5B, 0xCD, 0x38, 0x1F, 0x4A, 0xF2, 0x4D, 0x75, 0x10, - 0xF1, 0xB6, 0x35, 0x9F, 0xDF, 0xCA, 0x7D, 0x03, 0x98, 0xD3, - 0xAC, 0xDE, 0x03, 0x66, 0xEE, 0x2A, 0xF1, 0xD8, 0xB0, 0x7D, - 0x6E, 0x07, 0x54, 0x0B, 0x10, 0x98, 0x21, 0x4D, 0x80, 0xCB, - 0x12, 0x20, 0xE7, 0xCC, 0x4F, 0xDE, 0x45, 0x7D, 0xC9, 0x72, - 0x77, 0x32, 0xEA, 0xCA, 0x90, 0xBB, 0x69, 0x52, 0x10, 0x03, - 0x2F, 0xA8, 0xF3, 0x95, 0xC5, 0xF1, 0x8B, 0x62, 0x56, 0x1B, - 0xEF, 0x67, 0x6F, 0xA4, 0x10, 0x41, 0x95, 0xAD, 0x0A, 0x9B, - 0xE3, 0xA5, 0xC0, 0xB0, 0xD2, 0x70, 0x76, 0x50, 0x30, 0x5B, - 0xA8, 0xE8, 0x08, 0x2C, 0x7C, 0xED, 0xA7, 0xA2, 0x7A, 0x8D, - 0x38, 0x29, 0x1C, 0xAC, 0xC7, 0xED, 0xF2, 0x7C, 0x95, 0xB0, - 0x95, 0x82, 0x7D, 0x49, 0x5C, 0x38, 0xCD, 0x77, 0x25, 0xEF, - 0xBD, 0x80, 0x75, 0x53, 0x94, 0x3C, 0x3D, 0xCA, 0x63, 0x5B, - 0x9F, 0x15, 0xB5, 0xD3, 0x1D, 0x13, 0x2F, 0x19, 0xD1, 0x3C, - 0xDB, 0x76, 0x3A, 0xCC, 0xB8, 0x7D, 0xC9, 0xE5, 0xC2, 0xD7, - 0xDA, 0x40, 0x6F, 0xD8, 0x21, 0xDC, 0x73, 0x1B, 0x42, 0x2D, - 0x53, 0x9C, 0xFE, 0x1A, 0xFC, 0x7D, 0xAB, 0x7A, 0x36, 0x3F, - 0x98, 0xDE, 0x84, 0x7C, 0x05, 0x67, 0xCE, 0x6A, 0x14, 0x38, - 0x87, 0xA9, 0xF1, 0x8C, 0xB5, 0x68, 0xCB, 0x68, 0x7F, 0x71, - 0x20, 0x2B, 0xF5, 0xA0, 0x63, 0xF5, 0x56, 0x2F, 0xA3, 0x26, - 0xD2, 0xB7, 0x6F, 0xB1, 0x5A, 0x17, 0xD7, 0x38, 0x99, 0x08, - 0xFE, 0x93, 0x58, 0x6F, 0xFE, 0xC3, 0x13, 0x49, 0x08, 0x16, - 0x0B, 0xA7, 0x4D, 0x67, 0x00, 0x52, 0x31, 0x67, 0x23, 0x4E, - 0x98, 0xED, 0x51, 0x45, 0x1D, 0xB9, 0x04, 0xD9, 0x0B, 0xEC, - 0xD8, 0x28, 0xB3, 0x4B, 0xBD, 0xED, 0x36, 0x79, 0x02, 0x03, - 0x01, 0x00, 0x01, 0x02, 0x82, 0x01, 0x00, 0x3D, 0x6E, 0x4E, - 0x60, 0x1A, 0x84, 0x7F, 0x9D, 0x85, 0x7C, 0xE1, 0x4B, 0x07, - 0x7C, 0xE0, 0xD6, 0x99, 0x2A, 0xDE, 0x9D, 0xF9, 0x36, 0x34, - 0x0E, 0x77, 0x0E, 0x3E, 0x08, 0xEA, 0x4F, 0xE5, 0x06, 0x26, - 0xD4, 0xF6, 0x38, 0xF7, 0xDF, 0x0D, 0x0F, 0x1C, 0x2E, 0x06, - 0xA2, 0xF4, 0x2A, 0x68, 0x9C, 0x63, 0x72, 0xE3, 0x35, 0xE6, - 0x04, 0x91, 0x91, 0xB5, 0xC1, 0xB1, 0xA4, 0x54, 0xAC, 0xD7, - 0xC6, 0xFB, 0x41, 0xA0, 0xD6, 0x75, 0x6F, 0xBD, 0x0B, 0x4E, - 0xBF, 0xB1, 0x52, 0xE8, 0x5F, 0x49, 0x26, 0x98, 0x56, 0x47, - 0xC7, 0xDE, 0xE9, 0xEA, 0x3C, 0x60, 0x01, 0xBF, 0x28, 0xDC, - 0x31, 0xBF, 0x49, 0x5F, 0x93, 0x49, 0x87, 0x7A, 0x81, 0x5B, - 0x96, 0x4B, 0x4D, 0xCA, 0x5C, 0x38, 0x4F, 0xB7, 0xE1, 0xB2, - 0xD3, 0xC7, 0x21, 0xDA, 0x3C, 0x12, 0x87, 0x07, 0xE4, 0x1B, - 0xDC, 0x43, 0xEC, 0xE8, 0xEC, 0x54, 0x61, 0xE7, 0xF6, 0xED, - 0xA6, 0x0B, 0x2E, 0xF5, 0xDF, 0x82, 0x7F, 0xC6, 0x1F, 0x61, - 0x19, 0x9C, 0xA4, 0x83, 0x39, 0xDF, 0x21, 0x85, 0x89, 0x6F, - 0x77, 0xAF, 0x86, 0x15, 0x32, 0x08, 0xA2, 0x5A, 0x0B, 0x26, - 0x61, 0xFB, 0x70, 0x0C, 0xCA, 0x9C, 0x38, 0x7D, 0xBC, 0x22, - 0xEE, 0xEB, 0xA3, 0xA8, 0x16, 0x00, 0xF9, 0x8A, 0x80, 0x1E, - 0x00, 0x84, 0xA8, 0x4A, 0x41, 0xF8, 0x84, 0x03, 0x67, 0x2F, - 0x23, 0x5B, 0x2F, 0x9B, 0x6B, 0x26, 0xC3, 0x07, 0x34, 0x94, - 0xA3, 0x03, 0x3B, 0x72, 0xD5, 0x9F, 0x72, 0xE0, 0xAD, 0xCC, - 0x34, 0xAB, 0xBD, 0xC7, 0xD5, 0xF5, 0x26, 0x30, 0x85, 0x0F, - 0x30, 0x23, 0x39, 0x52, 0xFF, 0x3C, 0xCB, 0x99, 0x21, 0x4D, - 0x88, 0xA5, 0xAB, 0xEE, 0x62, 0xB9, 0xC7, 0xE0, 0xBB, 0x47, - 0x87, 0xC1, 0x69, 0xCF, 0x73, 0xF3, 0x30, 0xBE, 0xCE, 0x39, - 0x04, 0x9C, 0xE5, 0x02, 0x81, 0x81, 0x00, 0xE1, 0x76, 0x45, - 0x80, 0x59, 0xB6, 0xD3, 0x49, 0xDF, 0x0A, 0xEF, 0x12, 0xD6, - 0x0F, 0xF0, 0xB7, 0xCB, 0x2A, 0x37, 0xBF, 0xA7, 0xF8, 0xB5, - 0x4D, 0xF5, 0x31, 0x35, 0xAD, 0xE4, 0xA3, 0x94, 0xA1, 0xDB, - 0xF1, 0x96, 0xAD, 0xB5, 0x05, 0x64, 0x85, 0x83, 0xFC, 0x1B, - 0x5B, 0x29, 0xAA, 0xBE, 0xF8, 0x26, 0x3F, 0x76, 0x7E, 0xAD, - 0x1C, 0xF0, 0xCB, 0xD7, 0x26, 0xB4, 0x1B, 0x05, 0x8E, 0x56, - 0x86, 0x7E, 0x08, 0x62, 0x21, 0xC1, 0x86, 0xD6, 0x47, 0x79, - 0x3E, 0xB7, 0x5D, 0xA4, 0xC6, 0x3A, 0xD7, 0xB1, 0x74, 0x20, - 0xF6, 0x50, 0x97, 0x41, 0x04, 0x53, 0xED, 0x3F, 0x26, 0xD6, - 0x6F, 0x91, 0xFA, 0x68, 0x26, 0xEC, 0x2A, 0xDC, 0x9A, 0xF1, - 0xE7, 0xDC, 0xFB, 0x73, 0xF0, 0x79, 0x43, 0x1B, 0x21, 0xA3, - 0x59, 0x04, 0x63, 0x52, 0x07, 0xC9, 0xD7, 0xE6, 0xD1, 0x1B, - 0x5D, 0x5E, 0x96, 0xFA, 0x53, 0x02, 0x81, 0x81, 0x00, 0xD8, - 0xED, 0x4E, 0x64, 0x61, 0x6B, 0x91, 0x0C, 0x61, 0x01, 0xB5, - 0x0F, 0xBB, 0x44, 0x67, 0x53, 0x1E, 0xDC, 0x07, 0xC4, 0x24, - 0x7E, 0x9E, 0x6C, 0x84, 0x23, 0x91, 0x0C, 0xE4, 0x12, 0x04, - 0x16, 0x4D, 0x78, 0x98, 0xCC, 0x96, 0x3D, 0x20, 0x4E, 0x0F, - 0x45, 0x9A, 0xB6, 0xF8, 0xB3, 0x93, 0x0D, 0xB2, 0xA2, 0x1B, - 0x29, 0xF2, 0x26, 0x79, 0xC8, 0xC5, 0xD2, 0x78, 0x7E, 0x5E, - 0x73, 0xF2, 0xD7, 0x70, 0x61, 0xBB, 0x40, 0xCE, 0x61, 0x05, - 0xFE, 0x69, 0x1E, 0x82, 0x29, 0xE6, 0x14, 0xB8, 0xA1, 0xE7, - 0x96, 0xD0, 0x23, 0x3F, 0x05, 0x93, 0x00, 0xF2, 0xE1, 0x4D, - 0x7E, 0xED, 0xB7, 0x96, 0x6C, 0xF7, 0xF0, 0xE4, 0xD1, 0xCF, - 0x01, 0x98, 0x4F, 0xDC, 0x74, 0x54, 0xAA, 0x6D, 0x5E, 0x5A, - 0x41, 0x31, 0xFE, 0xFF, 0x9A, 0xB6, 0xA0, 0x05, 0xDD, 0xA9, - 0x10, 0x54, 0xF8, 0x6B, 0xD0, 0xAA, 0x83, 0x02, 0x81, 0x80, - 0x21, 0xD3, 0x04, 0x8A, 0x44, 0xEB, 0x50, 0xB7, 0x7C, 0x66, - 0xBF, 0x87, 0x2B, 0xE6, 0x28, 0x4E, 0xEA, 0x83, 0xE2, 0xE9, - 0x35, 0xE1, 0xF2, 0x11, 0x47, 0xFF, 0xA1, 0xF5, 0xFC, 0x9F, - 0x2D, 0xE5, 0x3A, 0x81, 0xFC, 0x01, 0x03, 0x6F, 0x53, 0xAD, - 0x54, 0x27, 0xB6, 0x52, 0xEE, 0xE5, 0x56, 0xD1, 0x13, 0xAB, - 0xE1, 0xB3, 0x0F, 0x75, 0x90, 0x0A, 0x84, 0xB4, 0xA1, 0xC0, - 0x8C, 0x0C, 0xD6, 0x9E, 0x46, 0xBA, 0x2B, 0x3E, 0xB5, 0x31, - 0xED, 0x63, 0xBB, 0xA4, 0xD5, 0x0D, 0x8F, 0x72, 0xCD, 0xD1, - 0x1E, 0x26, 0x35, 0xEB, 0xBE, 0x1B, 0x72, 0xFD, 0x9B, 0x39, - 0xB4, 0x87, 0xB7, 0x13, 0xF5, 0xEA, 0x83, 0x45, 0x93, 0x98, - 0xBA, 0x8F, 0xE4, 0x4A, 0xCC, 0xB4, 0x4C, 0xA8, 0x7F, 0x08, - 0xBA, 0x41, 0x49, 0xA8, 0x49, 0x28, 0x3D, 0x5E, 0x3D, 0xC1, - 0xCE, 0x37, 0x00, 0xCB, 0xF9, 0x2C, 0xDD, 0x51, 0x02, 0x81, - 0x81, 0x00, 0xA1, 0x57, 0x9F, 0x3E, 0xB9, 0xD6, 0xAF, 0x83, - 0x6D, 0x83, 0x3F, 0x8F, 0xFB, 0xD0, 0xDC, 0xA8, 0xCE, 0x03, - 0x09, 0x23, 0xB1, 0xA1, 0x1B, 0x63, 0xCA, 0xC4, 0x49, 0x56, - 0x35, 0x2B, 0xD1, 0x2E, 0x65, 0x60, 0x95, 0x05, 0x55, 0x99, - 0x11, 0x35, 0xFD, 0xD5, 0xDF, 0x44, 0xC7, 0xA5, 0x88, 0x72, - 0x5F, 0xB2, 0x82, 0x51, 0xA8, 0x71, 0x45, 0x93, 0x36, 0xCF, - 0x5C, 0x1F, 0x61, 0x51, 0x0C, 0x05, 0x80, 0xE8, 0xAF, 0xC5, - 0x7B, 0xBA, 0x5E, 0x22, 0xE3, 0x3C, 0x75, 0xC3, 0x84, 0x05, - 0x55, 0x6D, 0xD6, 0x3A, 0x2D, 0x84, 0x89, 0x93, 0x33, 0xCB, - 0x38, 0xDA, 0xAA, 0x31, 0x05, 0xCD, 0xCE, 0x6C, 0x2D, 0xDD, - 0x55, 0xD3, 0x57, 0x0B, 0xF0, 0xA5, 0x35, 0x6A, 0xB0, 0xAE, - 0x31, 0xBA, 0x43, 0x96, 0xCA, 0x00, 0xC7, 0x4B, 0xE3, 0x19, - 0x12, 0x43, 0xD3, 0x42, 0xFA, 0x6F, 0xEA, 0x80, 0xC0, 0xD1, - 0x02, 0x81, 0x81, 0x00, 0xB9, 0xDB, 0x89, 0x20, 0x34, 0x27, - 0x70, 0x62, 0x34, 0xEA, 0x5F, 0x25, 0x62, 0x12, 0xF3, 0x9D, - 0x81, 0xBF, 0x48, 0xEE, 0x9A, 0x0E, 0xC1, 0x8D, 0x10, 0xFF, - 0x65, 0x9A, 0x9D, 0x2D, 0x1A, 0x8A, 0x94, 0x5A, 0xC8, 0xC0, - 0xA5, 0xA5, 0x84, 0x61, 0x9E, 0xD4, 0x24, 0xB9, 0xEF, 0xA9, - 0x9D, 0xC9, 0x77, 0x0B, 0xC7, 0x70, 0x66, 0x3D, 0xBA, 0xC8, - 0x54, 0xDF, 0xD2, 0x33, 0xE1, 0xF5, 0x7F, 0xF9, 0x27, 0x61, - 0xBE, 0x57, 0x45, 0xDD, 0xB7, 0x45, 0x17, 0x24, 0xF5, 0x23, - 0xE4, 0x38, 0x0E, 0x91, 0x27, 0xEE, 0xE3, 0x20, 0xD8, 0x14, - 0xC8, 0x94, 0x47, 0x77, 0x40, 0x77, 0x45, 0x18, 0x9E, 0x0D, - 0xCE, 0x79, 0x3F, 0x57, 0x31, 0x56, 0x09, 0x49, 0x67, 0xBE, - 0x94, 0x58, 0x4F, 0xF6, 0xC4, 0xAB, 0xE2, 0x89, 0xE3, 0xE3, - 0x8A, 0xC0, 0x05, 0x55, 0x2C, 0x24, 0xC0, 0x4A, 0x97, 0x04, - 0x27, 0x9A -}; -static const int sizeof_ca_key_der_2048 = sizeof(ca_key_der_2048); - -/* ./certs/ca-cert.der, 2048-bit */ -static const unsigned char ca_cert_der_2048[] = -{ - 0x30, 0x82, 0x04, 0xAA, 0x30, 0x82, 0x03, 0x92, 0xA0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0x86, 0xFF, 0xF5, 0x8E, - 0x10, 0xDE, 0xB8, 0xFB, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x30, - 0x81, 0x94, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, - 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, - 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, - 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, - 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, - 0x6E, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x0A, - 0x0C, 0x08, 0x53, 0x61, 0x77, 0x74, 0x6F, 0x6F, 0x74, 0x68, - 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, - 0x0A, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, - 0x67, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, - 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, - 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, - 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, - 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, - 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, - 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30, 0x34, 0x31, 0x33, - 0x31, 0x35, 0x32, 0x33, 0x30, 0x39, 0x5A, 0x17, 0x0D, 0x32, - 0x31, 0x30, 0x31, 0x30, 0x37, 0x31, 0x35, 0x32, 0x33, 0x30, - 0x39, 0x5A, 0x30, 0x81, 0x94, 0x31, 0x0B, 0x30, 0x09, 0x06, - 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, - 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, - 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, - 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, - 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, - 0x55, 0x04, 0x0A, 0x0C, 0x08, 0x53, 0x61, 0x77, 0x74, 0x6F, - 0x6F, 0x74, 0x68, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, - 0x04, 0x0B, 0x0C, 0x0A, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, - 0x74, 0x69, 0x6E, 0x67, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, - 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, - 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, - 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, - 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, - 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, - 0x63, 0x6F, 0x6D, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, - 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, - 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, - 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xBF, 0x0C, 0xCA, 0x2D, - 0x14, 0xB2, 0x1E, 0x84, 0x42, 0x5B, 0xCD, 0x38, 0x1F, 0x4A, - 0xF2, 0x4D, 0x75, 0x10, 0xF1, 0xB6, 0x35, 0x9F, 0xDF, 0xCA, - 0x7D, 0x03, 0x98, 0xD3, 0xAC, 0xDE, 0x03, 0x66, 0xEE, 0x2A, - 0xF1, 0xD8, 0xB0, 0x7D, 0x6E, 0x07, 0x54, 0x0B, 0x10, 0x98, - 0x21, 0x4D, 0x80, 0xCB, 0x12, 0x20, 0xE7, 0xCC, 0x4F, 0xDE, - 0x45, 0x7D, 0xC9, 0x72, 0x77, 0x32, 0xEA, 0xCA, 0x90, 0xBB, - 0x69, 0x52, 0x10, 0x03, 0x2F, 0xA8, 0xF3, 0x95, 0xC5, 0xF1, - 0x8B, 0x62, 0x56, 0x1B, 0xEF, 0x67, 0x6F, 0xA4, 0x10, 0x41, - 0x95, 0xAD, 0x0A, 0x9B, 0xE3, 0xA5, 0xC0, 0xB0, 0xD2, 0x70, - 0x76, 0x50, 0x30, 0x5B, 0xA8, 0xE8, 0x08, 0x2C, 0x7C, 0xED, - 0xA7, 0xA2, 0x7A, 0x8D, 0x38, 0x29, 0x1C, 0xAC, 0xC7, 0xED, - 0xF2, 0x7C, 0x95, 0xB0, 0x95, 0x82, 0x7D, 0x49, 0x5C, 0x38, - 0xCD, 0x77, 0x25, 0xEF, 0xBD, 0x80, 0x75, 0x53, 0x94, 0x3C, - 0x3D, 0xCA, 0x63, 0x5B, 0x9F, 0x15, 0xB5, 0xD3, 0x1D, 0x13, - 0x2F, 0x19, 0xD1, 0x3C, 0xDB, 0x76, 0x3A, 0xCC, 0xB8, 0x7D, - 0xC9, 0xE5, 0xC2, 0xD7, 0xDA, 0x40, 0x6F, 0xD8, 0x21, 0xDC, - 0x73, 0x1B, 0x42, 0x2D, 0x53, 0x9C, 0xFE, 0x1A, 0xFC, 0x7D, - 0xAB, 0x7A, 0x36, 0x3F, 0x98, 0xDE, 0x84, 0x7C, 0x05, 0x67, - 0xCE, 0x6A, 0x14, 0x38, 0x87, 0xA9, 0xF1, 0x8C, 0xB5, 0x68, - 0xCB, 0x68, 0x7F, 0x71, 0x20, 0x2B, 0xF5, 0xA0, 0x63, 0xF5, - 0x56, 0x2F, 0xA3, 0x26, 0xD2, 0xB7, 0x6F, 0xB1, 0x5A, 0x17, - 0xD7, 0x38, 0x99, 0x08, 0xFE, 0x93, 0x58, 0x6F, 0xFE, 0xC3, - 0x13, 0x49, 0x08, 0x16, 0x0B, 0xA7, 0x4D, 0x67, 0x00, 0x52, - 0x31, 0x67, 0x23, 0x4E, 0x98, 0xED, 0x51, 0x45, 0x1D, 0xB9, - 0x04, 0xD9, 0x0B, 0xEC, 0xD8, 0x28, 0xB3, 0x4B, 0xBD, 0xED, - 0x36, 0x79, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x81, 0xFC, - 0x30, 0x81, 0xF9, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, - 0x04, 0x16, 0x04, 0x14, 0x27, 0x8E, 0x67, 0x11, 0x74, 0xC3, - 0x26, 0x1D, 0x3F, 0xED, 0x33, 0x63, 0xB3, 0xA4, 0xD8, 0x1D, - 0x30, 0xE5, 0xE8, 0xD5, 0x30, 0x81, 0xC9, 0x06, 0x03, 0x55, - 0x1D, 0x23, 0x04, 0x81, 0xC1, 0x30, 0x81, 0xBE, 0x80, 0x14, - 0x27, 0x8E, 0x67, 0x11, 0x74, 0xC3, 0x26, 0x1D, 0x3F, 0xED, - 0x33, 0x63, 0xB3, 0xA4, 0xD8, 0x1D, 0x30, 0xE5, 0xE8, 0xD5, - 0xA1, 0x81, 0x9A, 0xA4, 0x81, 0x97, 0x30, 0x81, 0x94, 0x31, - 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, - 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, - 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, - 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, - 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x11, - 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x08, 0x53, - 0x61, 0x77, 0x74, 0x6F, 0x6F, 0x74, 0x68, 0x31, 0x13, 0x30, - 0x11, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x0A, 0x43, 0x6F, - 0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x31, 0x18, - 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, - 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, - 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, - 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, - 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, - 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x82, 0x09, 0x00, - 0x86, 0xFF, 0xF5, 0x8E, 0x10, 0xDE, 0xB8, 0xFB, 0x30, 0x0C, - 0x06, 0x03, 0x55, 0x1D, 0x13, 0x04, 0x05, 0x30, 0x03, 0x01, - 0x01, 0xFF, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, - 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03, 0x82, 0x01, - 0x01, 0x00, 0x9E, 0x28, 0x88, 0x72, 0x00, 0xCA, 0xE6, 0xE7, - 0x97, 0xCA, 0xC1, 0xF1, 0x1F, 0x9E, 0x12, 0xB2, 0xB8, 0xC7, - 0x51, 0xEA, 0x28, 0xE1, 0x36, 0xB5, 0x2D, 0xE6, 0x2F, 0x08, - 0x23, 0xCB, 0xA9, 0x4A, 0x87, 0x25, 0xC6, 0x5D, 0x89, 0x45, - 0xEA, 0xF5, 0x00, 0x98, 0xAC, 0x76, 0xFB, 0x1B, 0xAF, 0xF0, - 0xCE, 0x64, 0x9E, 0xDA, 0x08, 0xBF, 0xB6, 0xEB, 0xB4, 0xB5, - 0x0C, 0xA0, 0xE7, 0xF6, 0x47, 0x59, 0x1C, 0x61, 0xCF, 0x2E, - 0x0E, 0x58, 0xA4, 0x82, 0xAC, 0x0F, 0x3F, 0xEC, 0xC4, 0xAE, - 0x80, 0xF7, 0xB0, 0x8A, 0x1E, 0x85, 0x41, 0xE8, 0xFF, 0xFE, - 0xFE, 0x4F, 0x1A, 0x24, 0xD5, 0x49, 0xFA, 0xFB, 0xFE, 0x5E, - 0xE5, 0xD3, 0x91, 0x0E, 0x4F, 0x4E, 0x0C, 0x21, 0x51, 0x71, - 0x83, 0x04, 0x6B, 0x62, 0x7B, 0x4F, 0x59, 0x76, 0x48, 0x81, - 0x1E, 0xB4, 0xF7, 0x04, 0x47, 0x8A, 0x91, 0x57, 0xA3, 0x11, - 0xA9, 0xF2, 0x20, 0xB4, 0x78, 0x33, 0x62, 0x3D, 0xB0, 0x5E, - 0x0D, 0xF9, 0x86, 0x38, 0x82, 0xDA, 0xA1, 0x98, 0x8D, 0x19, - 0x06, 0x87, 0x21, 0x39, 0xB7, 0x02, 0xF7, 0xDA, 0x7D, 0x58, - 0xBA, 0x52, 0x15, 0xD8, 0x3B, 0xC9, 0x7B, 0x58, 0x34, 0xA0, - 0xC7, 0xE2, 0x7C, 0xA9, 0x83, 0x13, 0xE1, 0xB6, 0xEC, 0x01, - 0xBF, 0x52, 0x33, 0x0B, 0xC4, 0xFE, 0x43, 0xD3, 0xC6, 0xA4, - 0x8E, 0x2F, 0x87, 0x7F, 0x7A, 0x44, 0xEA, 0xCA, 0x53, 0x6C, - 0x85, 0xED, 0x65, 0x76, 0x73, 0x31, 0x03, 0x4E, 0xEA, 0xBD, - 0x35, 0x54, 0x13, 0xF3, 0x64, 0x87, 0x6B, 0xDF, 0x34, 0xDD, - 0x34, 0xA1, 0x88, 0x3B, 0xDB, 0x4D, 0xAF, 0x1B, 0x64, 0x90, - 0x92, 0x71, 0x30, 0x8E, 0xC8, 0xCC, 0xE5, 0x60, 0x24, 0xAF, - 0x31, 0x16, 0x39, 0x33, 0x91, 0x50, 0xF9, 0xAB, 0x68, 0x42, - 0x74, 0x7A, 0x35, 0xD9, 0xDD, 0xC8, 0xC4, 0x52 -}; -static const int sizeof_ca_cert_der_2048 = sizeof(ca_cert_der_2048); - -/* ./certs/ca-cert-chain.der, 2048-bit */ -static const unsigned char ca_cert_chain_der[] = -{ - 0x30, 0x82, 0x03, 0xB5, 0x30, 0x82, 0x03, 0x1E, 0xA0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0xDA, 0xFB, 0x6A, 0x0D, - 0xFE, 0xCF, 0x9B, 0x47, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x30, - 0x81, 0x99, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, - 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, - 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, - 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, - 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, - 0x6E, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x0A, - 0x0C, 0x08, 0x53, 0x61, 0x77, 0x74, 0x6F, 0x6F, 0x74, 0x68, - 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, - 0x0F, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, - 0x67, 0x5F, 0x31, 0x30, 0x32, 0x34, 0x31, 0x18, 0x30, 0x16, - 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, - 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, - 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, - 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, - 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x1E, 0x17, 0x0D, 0x31, - 0x38, 0x30, 0x34, 0x31, 0x33, 0x31, 0x35, 0x32, 0x33, 0x31, - 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x31, 0x30, 0x31, 0x30, 0x37, - 0x31, 0x35, 0x32, 0x33, 0x31, 0x30, 0x5A, 0x30, 0x81, 0x99, - 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, - 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, - 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, - 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, - 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, - 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x08, - 0x53, 0x61, 0x77, 0x74, 0x6F, 0x6F, 0x74, 0x68, 0x31, 0x18, - 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x0F, 0x43, - 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x5F, - 0x31, 0x30, 0x32, 0x34, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, - 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, - 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, - 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, - 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, - 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, - 0x63, 0x6F, 0x6D, 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, - 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, - 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, - 0x81, 0x00, 0xCD, 0xAC, 0xDD, 0x47, 0xEC, 0xBE, 0xB7, 0x24, - 0xC3, 0x63, 0x1B, 0x54, 0x98, 0x79, 0xE1, 0xC7, 0x31, 0x16, - 0x59, 0xD6, 0x9D, 0x77, 0x9D, 0x8D, 0xE2, 0x8B, 0xED, 0x04, - 0x17, 0xB2, 0xC6, 0xEB, 0xE4, 0x9B, 0x91, 0xBE, 0x31, 0x50, - 0x62, 0x97, 0x58, 0xB5, 0x7F, 0x29, 0xDE, 0xB3, 0x71, 0x24, - 0x0B, 0xBF, 0x97, 0x09, 0x7F, 0x26, 0xDC, 0x2D, 0xEC, 0xA8, - 0x2E, 0xB2, 0x64, 0x2B, 0x7A, 0x2B, 0x35, 0x19, 0x2D, 0xA2, - 0x80, 0xCB, 0x99, 0xFD, 0x94, 0x71, 0x1B, 0x23, 0x8D, 0x54, - 0xDB, 0x2E, 0x62, 0x8D, 0x81, 0x08, 0x2D, 0xF4, 0x24, 0x72, - 0x27, 0x6C, 0xF9, 0xC9, 0x8E, 0xDB, 0x4C, 0x75, 0xBA, 0x9B, - 0x01, 0xF8, 0x3F, 0x18, 0xF4, 0xE6, 0x7F, 0xFB, 0x57, 0x94, - 0x92, 0xCC, 0x88, 0xC4, 0xB4, 0x00, 0xC2, 0xAA, 0xD4, 0xE5, - 0x88, 0x18, 0xB3, 0x11, 0x2F, 0x73, 0xC0, 0xD6, 0x29, 0x09, - 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, 0x01, 0x30, - 0x81, 0xFE, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, - 0x16, 0x04, 0x14, 0xD3, 0x22, 0x8F, 0x28, 0x2C, 0xE0, 0x05, - 0xEE, 0xD3, 0xED, 0xC3, 0x71, 0x3D, 0xC9, 0xB2, 0x36, 0x3A, - 0x1D, 0xBF, 0xA8, 0x30, 0x81, 0xCE, 0x06, 0x03, 0x55, 0x1D, - 0x23, 0x04, 0x81, 0xC6, 0x30, 0x81, 0xC3, 0x80, 0x14, 0xD3, - 0x22, 0x8F, 0x28, 0x2C, 0xE0, 0x05, 0xEE, 0xD3, 0xED, 0xC3, - 0x71, 0x3D, 0xC9, 0xB2, 0x36, 0x3A, 0x1D, 0xBF, 0xA8, 0xA1, - 0x81, 0x9F, 0xA4, 0x81, 0x9C, 0x30, 0x81, 0x99, 0x31, 0x0B, - 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, - 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, - 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, - 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, - 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x11, 0x30, - 0x0F, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x08, 0x53, 0x61, - 0x77, 0x74, 0x6F, 0x6F, 0x74, 0x68, 0x31, 0x18, 0x30, 0x16, - 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x0F, 0x43, 0x6F, 0x6E, - 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x5F, 0x31, 0x30, - 0x32, 0x34, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, - 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, - 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, - 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, - 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, - 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, - 0x6D, 0x82, 0x09, 0x00, 0xDA, 0xFB, 0x6A, 0x0D, 0xFE, 0xCF, - 0x9B, 0x47, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x04, - 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x0D, 0x06, 0x09, - 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, - 0x00, 0x03, 0x81, 0x81, 0x00, 0x1D, 0x48, 0xF6, 0x40, 0x41, - 0x04, 0x06, 0xF2, 0xE4, 0x72, 0x2F, 0xEA, 0xFF, 0xC1, 0x67, - 0x6B, 0x15, 0xBB, 0x0A, 0x28, 0x23, 0x28, 0x07, 0xC6, 0xD7, - 0x13, 0x2C, 0xBE, 0x00, 0x00, 0xAC, 0x1D, 0xF7, 0xF4, 0x92, - 0xD3, 0x2B, 0xAF, 0x23, 0xEB, 0x9F, 0x1A, 0xE2, 0x11, 0x3C, - 0x2D, 0x97, 0xF2, 0x0F, 0xAC, 0xAE, 0x97, 0x86, 0x0A, 0xFB, - 0xA8, 0x4F, 0x74, 0x1B, 0xDE, 0x19, 0x51, 0xDB, 0xCD, 0xE2, - 0x11, 0x38, 0xC1, 0xA4, 0x9D, 0x56, 0xAB, 0x47, 0x5C, 0xDE, - 0xBA, 0xEB, 0x27, 0xDF, 0x6D, 0xC8, 0x7E, 0x3A, 0xBD, 0x2E, - 0x9B, 0x2A, 0xAD, 0x22, 0x3B, 0x95, 0xA9, 0xF2, 0x28, 0x03, - 0xBC, 0xE5, 0xEC, 0xCC, 0xF2, 0x08, 0xD4, 0xC8, 0x2F, 0xDB, - 0xEA, 0xFB, 0x2E, 0x52, 0x16, 0x8C, 0x42, 0x02, 0xA4, 0x59, - 0x6D, 0x4C, 0x33, 0xB4, 0x9A, 0xD2, 0x73, 0x4A, 0x1E, 0x9F, - 0xD9, 0xC8, 0x83, 0x30, 0x82, 0x04, 0xAA, 0x30, 0x82, 0x03, - 0x92, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0x86, - 0xFF, 0xF5, 0x8E, 0x10, 0xDE, 0xB8, 0xFB, 0x30, 0x0D, 0x06, - 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, - 0x05, 0x00, 0x30, 0x81, 0x94, 0x31, 0x0B, 0x30, 0x09, 0x06, - 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, - 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, - 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, - 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, - 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, - 0x55, 0x04, 0x0A, 0x0C, 0x08, 0x53, 0x61, 0x77, 0x74, 0x6F, - 0x6F, 0x74, 0x68, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, - 0x04, 0x0B, 0x0C, 0x0A, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, - 0x74, 0x69, 0x6E, 0x67, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, - 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, - 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, - 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, - 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, - 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, - 0x63, 0x6F, 0x6D, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30, - 0x34, 0x31, 0x33, 0x31, 0x35, 0x32, 0x33, 0x30, 0x39, 0x5A, - 0x17, 0x0D, 0x32, 0x31, 0x30, 0x31, 0x30, 0x37, 0x31, 0x35, - 0x32, 0x33, 0x30, 0x39, 0x5A, 0x30, 0x81, 0x94, 0x31, 0x0B, - 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, - 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, - 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, - 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, - 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x11, 0x30, - 0x0F, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x08, 0x53, 0x61, - 0x77, 0x74, 0x6F, 0x6F, 0x74, 0x68, 0x31, 0x13, 0x30, 0x11, - 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x0A, 0x43, 0x6F, 0x6E, - 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x31, 0x18, 0x30, - 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, - 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, - 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, - 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, - 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x82, 0x01, 0x22, - 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, - 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, - 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xBF, - 0x0C, 0xCA, 0x2D, 0x14, 0xB2, 0x1E, 0x84, 0x42, 0x5B, 0xCD, - 0x38, 0x1F, 0x4A, 0xF2, 0x4D, 0x75, 0x10, 0xF1, 0xB6, 0x35, - 0x9F, 0xDF, 0xCA, 0x7D, 0x03, 0x98, 0xD3, 0xAC, 0xDE, 0x03, - 0x66, 0xEE, 0x2A, 0xF1, 0xD8, 0xB0, 0x7D, 0x6E, 0x07, 0x54, - 0x0B, 0x10, 0x98, 0x21, 0x4D, 0x80, 0xCB, 0x12, 0x20, 0xE7, - 0xCC, 0x4F, 0xDE, 0x45, 0x7D, 0xC9, 0x72, 0x77, 0x32, 0xEA, - 0xCA, 0x90, 0xBB, 0x69, 0x52, 0x10, 0x03, 0x2F, 0xA8, 0xF3, - 0x95, 0xC5, 0xF1, 0x8B, 0x62, 0x56, 0x1B, 0xEF, 0x67, 0x6F, - 0xA4, 0x10, 0x41, 0x95, 0xAD, 0x0A, 0x9B, 0xE3, 0xA5, 0xC0, - 0xB0, 0xD2, 0x70, 0x76, 0x50, 0x30, 0x5B, 0xA8, 0xE8, 0x08, - 0x2C, 0x7C, 0xED, 0xA7, 0xA2, 0x7A, 0x8D, 0x38, 0x29, 0x1C, - 0xAC, 0xC7, 0xED, 0xF2, 0x7C, 0x95, 0xB0, 0x95, 0x82, 0x7D, - 0x49, 0x5C, 0x38, 0xCD, 0x77, 0x25, 0xEF, 0xBD, 0x80, 0x75, - 0x53, 0x94, 0x3C, 0x3D, 0xCA, 0x63, 0x5B, 0x9F, 0x15, 0xB5, - 0xD3, 0x1D, 0x13, 0x2F, 0x19, 0xD1, 0x3C, 0xDB, 0x76, 0x3A, - 0xCC, 0xB8, 0x7D, 0xC9, 0xE5, 0xC2, 0xD7, 0xDA, 0x40, 0x6F, - 0xD8, 0x21, 0xDC, 0x73, 0x1B, 0x42, 0x2D, 0x53, 0x9C, 0xFE, - 0x1A, 0xFC, 0x7D, 0xAB, 0x7A, 0x36, 0x3F, 0x98, 0xDE, 0x84, - 0x7C, 0x05, 0x67, 0xCE, 0x6A, 0x14, 0x38, 0x87, 0xA9, 0xF1, - 0x8C, 0xB5, 0x68, 0xCB, 0x68, 0x7F, 0x71, 0x20, 0x2B, 0xF5, - 0xA0, 0x63, 0xF5, 0x56, 0x2F, 0xA3, 0x26, 0xD2, 0xB7, 0x6F, - 0xB1, 0x5A, 0x17, 0xD7, 0x38, 0x99, 0x08, 0xFE, 0x93, 0x58, - 0x6F, 0xFE, 0xC3, 0x13, 0x49, 0x08, 0x16, 0x0B, 0xA7, 0x4D, - 0x67, 0x00, 0x52, 0x31, 0x67, 0x23, 0x4E, 0x98, 0xED, 0x51, - 0x45, 0x1D, 0xB9, 0x04, 0xD9, 0x0B, 0xEC, 0xD8, 0x28, 0xB3, - 0x4B, 0xBD, 0xED, 0x36, 0x79, 0x02, 0x03, 0x01, 0x00, 0x01, - 0xA3, 0x81, 0xFC, 0x30, 0x81, 0xF9, 0x30, 0x1D, 0x06, 0x03, - 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x27, 0x8E, 0x67, - 0x11, 0x74, 0xC3, 0x26, 0x1D, 0x3F, 0xED, 0x33, 0x63, 0xB3, - 0xA4, 0xD8, 0x1D, 0x30, 0xE5, 0xE8, 0xD5, 0x30, 0x81, 0xC9, - 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x81, 0xC1, 0x30, 0x81, - 0xBE, 0x80, 0x14, 0x27, 0x8E, 0x67, 0x11, 0x74, 0xC3, 0x26, - 0x1D, 0x3F, 0xED, 0x33, 0x63, 0xB3, 0xA4, 0xD8, 0x1D, 0x30, - 0xE5, 0xE8, 0xD5, 0xA1, 0x81, 0x9A, 0xA4, 0x81, 0x97, 0x30, - 0x81, 0x94, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, - 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, - 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, - 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, - 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, - 0x6E, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x0A, - 0x0C, 0x08, 0x53, 0x61, 0x77, 0x74, 0x6F, 0x6F, 0x74, 0x68, - 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, - 0x0A, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, - 0x67, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, - 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, - 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, - 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, - 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, - 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, - 0x82, 0x09, 0x00, 0x86, 0xFF, 0xF5, 0x8E, 0x10, 0xDE, 0xB8, - 0xFB, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x04, 0x05, - 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x0D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, - 0x03, 0x82, 0x01, 0x01, 0x00, 0x9E, 0x28, 0x88, 0x72, 0x00, - 0xCA, 0xE6, 0xE7, 0x97, 0xCA, 0xC1, 0xF1, 0x1F, 0x9E, 0x12, - 0xB2, 0xB8, 0xC7, 0x51, 0xEA, 0x28, 0xE1, 0x36, 0xB5, 0x2D, - 0xE6, 0x2F, 0x08, 0x23, 0xCB, 0xA9, 0x4A, 0x87, 0x25, 0xC6, - 0x5D, 0x89, 0x45, 0xEA, 0xF5, 0x00, 0x98, 0xAC, 0x76, 0xFB, - 0x1B, 0xAF, 0xF0, 0xCE, 0x64, 0x9E, 0xDA, 0x08, 0xBF, 0xB6, - 0xEB, 0xB4, 0xB5, 0x0C, 0xA0, 0xE7, 0xF6, 0x47, 0x59, 0x1C, - 0x61, 0xCF, 0x2E, 0x0E, 0x58, 0xA4, 0x82, 0xAC, 0x0F, 0x3F, - 0xEC, 0xC4, 0xAE, 0x80, 0xF7, 0xB0, 0x8A, 0x1E, 0x85, 0x41, - 0xE8, 0xFF, 0xFE, 0xFE, 0x4F, 0x1A, 0x24, 0xD5, 0x49, 0xFA, - 0xFB, 0xFE, 0x5E, 0xE5, 0xD3, 0x91, 0x0E, 0x4F, 0x4E, 0x0C, - 0x21, 0x51, 0x71, 0x83, 0x04, 0x6B, 0x62, 0x7B, 0x4F, 0x59, - 0x76, 0x48, 0x81, 0x1E, 0xB4, 0xF7, 0x04, 0x47, 0x8A, 0x91, - 0x57, 0xA3, 0x11, 0xA9, 0xF2, 0x20, 0xB4, 0x78, 0x33, 0x62, - 0x3D, 0xB0, 0x5E, 0x0D, 0xF9, 0x86, 0x38, 0x82, 0xDA, 0xA1, - 0x98, 0x8D, 0x19, 0x06, 0x87, 0x21, 0x39, 0xB7, 0x02, 0xF7, - 0xDA, 0x7D, 0x58, 0xBA, 0x52, 0x15, 0xD8, 0x3B, 0xC9, 0x7B, - 0x58, 0x34, 0xA0, 0xC7, 0xE2, 0x7C, 0xA9, 0x83, 0x13, 0xE1, - 0xB6, 0xEC, 0x01, 0xBF, 0x52, 0x33, 0x0B, 0xC4, 0xFE, 0x43, - 0xD3, 0xC6, 0xA4, 0x8E, 0x2F, 0x87, 0x7F, 0x7A, 0x44, 0xEA, - 0xCA, 0x53, 0x6C, 0x85, 0xED, 0x65, 0x76, 0x73, 0x31, 0x03, - 0x4E, 0xEA, 0xBD, 0x35, 0x54, 0x13, 0xF3, 0x64, 0x87, 0x6B, - 0xDF, 0x34, 0xDD, 0x34, 0xA1, 0x88, 0x3B, 0xDB, 0x4D, 0xAF, - 0x1B, 0x64, 0x90, 0x92, 0x71, 0x30, 0x8E, 0xC8, 0xCC, 0xE5, - 0x60, 0x24, 0xAF, 0x31, 0x16, 0x39, 0x33, 0x91, 0x50, 0xF9, - 0xAB, 0x68, 0x42, 0x74, 0x7A, 0x35, 0xD9, 0xDD, 0xC8, 0xC4, - 0x52 -}; -static const int sizeof_ca_cert_chain_der = sizeof(ca_cert_chain_der); - -/* ./certs/server-key.der, 2048-bit */ -static const unsigned char server_key_der_2048[] = -{ - 0x30, 0x82, 0x04, 0xA5, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, - 0x01, 0x00, 0xC0, 0x95, 0x08, 0xE1, 0x57, 0x41, 0xF2, 0x71, - 0x6D, 0xB7, 0xD2, 0x45, 0x41, 0x27, 0x01, 0x65, 0xC6, 0x45, - 0xAE, 0xF2, 0xBC, 0x24, 0x30, 0xB8, 0x95, 0xCE, 0x2F, 0x4E, - 0xD6, 0xF6, 0x1C, 0x88, 0xBC, 0x7C, 0x9F, 0xFB, 0xA8, 0x67, - 0x7F, 0xFE, 0x5C, 0x9C, 0x51, 0x75, 0xF7, 0x8A, 0xCA, 0x07, - 0xE7, 0x35, 0x2F, 0x8F, 0xE1, 0xBD, 0x7B, 0xC0, 0x2F, 0x7C, - 0xAB, 0x64, 0xA8, 0x17, 0xFC, 0xCA, 0x5D, 0x7B, 0xBA, 0xE0, - 0x21, 0xE5, 0x72, 0x2E, 0x6F, 0x2E, 0x86, 0xD8, 0x95, 0x73, - 0xDA, 0xAC, 0x1B, 0x53, 0xB9, 0x5F, 0x3F, 0xD7, 0x19, 0x0D, - 0x25, 0x4F, 0xE1, 0x63, 0x63, 0x51, 0x8B, 0x0B, 0x64, 0x3F, - 0xAD, 0x43, 0xB8, 0xA5, 0x1C, 0x5C, 0x34, 0xB3, 0xAE, 0x00, - 0xA0, 0x63, 0xC5, 0xF6, 0x7F, 0x0B, 0x59, 0x68, 0x78, 0x73, - 0xA6, 0x8C, 0x18, 0xA9, 0x02, 0x6D, 0xAF, 0xC3, 0x19, 0x01, - 0x2E, 0xB8, 0x10, 0xE3, 0xC6, 0xCC, 0x40, 0xB4, 0x69, 0xA3, - 0x46, 0x33, 0x69, 0x87, 0x6E, 0xC4, 0xBB, 0x17, 0xA6, 0xF3, - 0xE8, 0xDD, 0xAD, 0x73, 0xBC, 0x7B, 0x2F, 0x21, 0xB5, 0xFD, - 0x66, 0x51, 0x0C, 0xBD, 0x54, 0xB3, 0xE1, 0x6D, 0x5F, 0x1C, - 0xBC, 0x23, 0x73, 0xD1, 0x09, 0x03, 0x89, 0x14, 0xD2, 0x10, - 0xB9, 0x64, 0xC3, 0x2A, 0xD0, 0xA1, 0x96, 0x4A, 0xBC, 0xE1, - 0xD4, 0x1A, 0x5B, 0xC7, 0xA0, 0xC0, 0xC1, 0x63, 0x78, 0x0F, - 0x44, 0x37, 0x30, 0x32, 0x96, 0x80, 0x32, 0x23, 0x95, 0xA1, - 0x77, 0xBA, 0x13, 0xD2, 0x97, 0x73, 0xE2, 0x5D, 0x25, 0xC9, - 0x6A, 0x0D, 0xC3, 0x39, 0x60, 0xA4, 0xB4, 0xB0, 0x69, 0x42, - 0x42, 0x09, 0xE9, 0xD8, 0x08, 0xBC, 0x33, 0x20, 0xB3, 0x58, - 0x22, 0xA7, 0xAA, 0xEB, 0xC4, 0xE1, 0xE6, 0x61, 0x83, 0xC5, - 0xD2, 0x96, 0xDF, 0xD9, 0xD0, 0x4F, 0xAD, 0xD7, 0x02, 0x03, - 0x01, 0x00, 0x01, 0x02, 0x82, 0x01, 0x01, 0x00, 0x9A, 0xD0, - 0x34, 0x0F, 0x52, 0x62, 0x05, 0x50, 0x01, 0xEF, 0x9F, 0xED, - 0x64, 0x6E, 0xC2, 0xC4, 0xDA, 0x1A, 0xF2, 0x84, 0xD7, 0x92, - 0x10, 0x48, 0x92, 0xC4, 0xE9, 0x6A, 0xEB, 0x8B, 0x75, 0x6C, - 0xC6, 0x79, 0x38, 0xF2, 0xC9, 0x72, 0x4A, 0x86, 0x64, 0x54, - 0x95, 0x77, 0xCB, 0xC3, 0x9A, 0x9D, 0xB7, 0xD4, 0x1D, 0xA4, - 0x00, 0xC8, 0x9E, 0x4E, 0xE4, 0xDD, 0xC7, 0xBA, 0x67, 0x16, - 0xC1, 0x74, 0xBC, 0xA9, 0xD6, 0x94, 0x8F, 0x2B, 0x30, 0x1A, - 0xFB, 0xED, 0xDF, 0x21, 0x05, 0x23, 0xD9, 0x4A, 0x39, 0xBD, - 0x98, 0x6B, 0x65, 0x9A, 0xB8, 0xDC, 0xC4, 0x7D, 0xEE, 0xA6, - 0x43, 0x15, 0x2E, 0x3D, 0xBE, 0x1D, 0x22, 0x60, 0x2A, 0x73, - 0x30, 0xD5, 0x3E, 0xD8, 0xA2, 0xAC, 0x86, 0x43, 0x2E, 0xC4, - 0xF5, 0x64, 0x5E, 0x3F, 0x89, 0x75, 0x0F, 0x11, 0xD8, 0x51, - 0x25, 0x4E, 0x9F, 0xD8, 0xAA, 0xA3, 0xCE, 0x60, 0xB3, 0xE2, - 0x8A, 0xD9, 0x7E, 0x1B, 0xF0, 0x64, 0xCA, 0x9A, 0x5B, 0x05, - 0x0B, 0x5B, 0xAA, 0xCB, 0xE5, 0xE3, 0x3F, 0x6E, 0x32, 0x22, - 0x05, 0xF3, 0xD0, 0xFA, 0xEF, 0x74, 0x52, 0x81, 0xE2, 0x5F, - 0x74, 0xD3, 0xBD, 0xFF, 0x31, 0x83, 0x45, 0x75, 0xFA, 0x63, - 0x7A, 0x97, 0x2E, 0xD6, 0xB6, 0x19, 0xC6, 0x92, 0x26, 0xE4, - 0x28, 0x06, 0x50, 0x50, 0x0E, 0x78, 0x2E, 0xA9, 0x78, 0x0D, - 0x14, 0x97, 0xB4, 0x12, 0xD8, 0x31, 0x40, 0xAB, 0xA1, 0x01, - 0x41, 0xC2, 0x30, 0xF8, 0x07, 0x5F, 0x16, 0xE4, 0x61, 0x77, - 0xD2, 0x60, 0xF2, 0x9F, 0x8D, 0xE8, 0xF4, 0xBA, 0xEB, 0x63, - 0xDE, 0x2A, 0x97, 0x81, 0xEF, 0x4C, 0x6C, 0xE6, 0x55, 0x34, - 0x51, 0x2B, 0x28, 0x34, 0xF4, 0x53, 0x1C, 0xC4, 0x58, 0x0A, - 0x3F, 0xBB, 0xAF, 0xB5, 0xF7, 0x4A, 0x85, 0x43, 0x2D, 0x3C, - 0xF1, 0x58, 0x58, 0x81, 0x02, 0x81, 0x81, 0x00, 0xF2, 0x2C, - 0x54, 0x76, 0x39, 0x23, 0x63, 0xC9, 0x10, 0x32, 0xB7, 0x93, - 0xAD, 0xAF, 0xBE, 0x19, 0x75, 0x96, 0x81, 0x64, 0xE6, 0xB5, - 0xB8, 0x89, 0x42, 0x41, 0xD1, 0x6D, 0xD0, 0x1C, 0x1B, 0xF8, - 0x1B, 0xAC, 0x69, 0xCB, 0x36, 0x3C, 0x64, 0x7D, 0xDC, 0xF4, - 0x19, 0xB8, 0xC3, 0x60, 0xB1, 0x57, 0x48, 0x5F, 0x52, 0x4F, - 0x59, 0x3A, 0x55, 0x7F, 0x32, 0xC0, 0x19, 0x43, 0x50, 0x3F, - 0xAE, 0xCE, 0x6F, 0x17, 0xF3, 0x0E, 0x9F, 0x40, 0xCA, 0x4E, - 0xAD, 0x15, 0x3B, 0xC9, 0x79, 0xE9, 0xC0, 0x59, 0x38, 0x73, - 0x70, 0x9C, 0x0A, 0x7C, 0xC9, 0x3A, 0x48, 0x32, 0xA7, 0xD8, - 0x49, 0x75, 0x0A, 0x85, 0xC2, 0xC2, 0xFD, 0x15, 0x73, 0xDA, - 0x99, 0x09, 0x2A, 0x69, 0x9A, 0x9F, 0x0A, 0x71, 0xBF, 0xB0, - 0x04, 0xA6, 0x8C, 0x7A, 0x5A, 0x6F, 0x48, 0x5A, 0x54, 0x3B, - 0xC6, 0xB1, 0x53, 0x17, 0xDF, 0xE7, 0x02, 0x81, 0x81, 0x00, - 0xCB, 0x93, 0xDE, 0x77, 0x15, 0x5D, 0xB7, 0x5C, 0x5C, 0x7C, - 0xD8, 0x90, 0xA9, 0x98, 0x2D, 0xD6, 0x69, 0x0E, 0x63, 0xB3, - 0xA3, 0xDC, 0xA6, 0xCC, 0x8B, 0x6A, 0xA4, 0xA2, 0x12, 0x8C, - 0x8E, 0x7B, 0x48, 0x2C, 0xB2, 0x4B, 0x37, 0xDC, 0x06, 0x18, - 0x7D, 0xEA, 0xFE, 0x76, 0xA1, 0xD4, 0xA1, 0xE9, 0x3F, 0x0D, - 0xCD, 0x1B, 0x5F, 0xAF, 0x5F, 0x9E, 0x96, 0x5B, 0x5B, 0x0F, - 0xA1, 0x7C, 0xAF, 0xB3, 0x9B, 0x90, 0xDB, 0x57, 0x73, 0x3A, - 0xED, 0xB0, 0x23, 0x44, 0xAE, 0x41, 0x4F, 0x1F, 0x07, 0x42, - 0x13, 0x23, 0x4C, 0xCB, 0xFA, 0xF4, 0x14, 0xA4, 0xD5, 0xF7, - 0x9E, 0x36, 0x7C, 0x5B, 0x9F, 0xA8, 0x3C, 0xC1, 0x85, 0x5F, - 0x74, 0xD2, 0x39, 0x2D, 0xFF, 0xD0, 0x84, 0xDF, 0xFB, 0xB3, - 0x20, 0x7A, 0x2E, 0x9B, 0x17, 0xAE, 0xE6, 0xBA, 0x0B, 0xAE, - 0x5F, 0x53, 0xA4, 0x52, 0xED, 0x1B, 0xC4, 0x91, 0x02, 0x81, - 0x81, 0x00, 0xEC, 0x98, 0xDA, 0xBB, 0xD5, 0xFE, 0xF9, 0x52, - 0x4A, 0x7D, 0x02, 0x55, 0x49, 0x6F, 0x55, 0x6E, 0x52, 0x2F, - 0x84, 0xA3, 0x2B, 0xB3, 0x86, 0x62, 0xB3, 0x54, 0xD2, 0x63, - 0x52, 0xDA, 0xE3, 0x88, 0x76, 0xA0, 0xEF, 0x8B, 0x15, 0xA5, - 0xD3, 0x18, 0x14, 0x72, 0x77, 0x5E, 0xC7, 0xA3, 0x04, 0x1F, - 0x9E, 0x19, 0x62, 0xB5, 0x1B, 0x1B, 0x9E, 0xC3, 0xF2, 0xB5, - 0x32, 0xF9, 0x4C, 0xC1, 0xAA, 0xEB, 0x0C, 0x26, 0x7D, 0xD4, - 0x5F, 0x4A, 0x51, 0x5C, 0xA4, 0x45, 0x06, 0x70, 0x44, 0xA7, - 0x56, 0xC0, 0xD4, 0x22, 0x14, 0x76, 0x9E, 0xD8, 0x63, 0x50, - 0x89, 0x90, 0xD3, 0xE2, 0xBF, 0x81, 0x95, 0x92, 0x31, 0x41, - 0x87, 0x39, 0x1A, 0x43, 0x0B, 0x18, 0xA5, 0x53, 0x1F, 0x39, - 0x1A, 0x5F, 0x1F, 0x43, 0xBC, 0x87, 0x6A, 0xDF, 0x6E, 0xD3, - 0x22, 0x00, 0xFE, 0x22, 0x98, 0x70, 0x4E, 0x1A, 0x19, 0x29, - 0x02, 0x81, 0x81, 0x00, 0x8A, 0x41, 0x56, 0x28, 0x51, 0x9E, - 0x5F, 0xD4, 0x9E, 0x0B, 0x3B, 0x98, 0xA3, 0x54, 0xF2, 0x6C, - 0x56, 0xD4, 0xAA, 0xE9, 0x69, 0x33, 0x85, 0x24, 0x0C, 0xDA, - 0xD4, 0x0C, 0x2D, 0xC4, 0xBF, 0x4F, 0x02, 0x69, 0x38, 0x7C, - 0xD4, 0xE6, 0xDC, 0x4C, 0xED, 0xD7, 0x16, 0x11, 0xC3, 0x3E, - 0x00, 0xE7, 0xC3, 0x26, 0xC0, 0x51, 0x02, 0xDE, 0xBB, 0x75, - 0x9C, 0x6F, 0x56, 0x9C, 0x7A, 0xF3, 0x8E, 0xEF, 0xCF, 0x8A, - 0xC5, 0x2B, 0xD2, 0xDA, 0x06, 0x6A, 0x44, 0xC9, 0x73, 0xFE, - 0x6E, 0x99, 0x87, 0xF8, 0x5B, 0xBE, 0xF1, 0x7C, 0xE6, 0x65, - 0xB5, 0x4F, 0x6C, 0xF0, 0xC9, 0xC5, 0xFF, 0x16, 0xCA, 0x8B, - 0x1B, 0x17, 0xE2, 0x58, 0x3D, 0xA2, 0x37, 0xAB, 0x01, 0xBC, - 0xBF, 0x40, 0xCE, 0x53, 0x8C, 0x8E, 0xED, 0xEF, 0xEE, 0x59, - 0x9D, 0xE0, 0x63, 0xE6, 0x7C, 0x5E, 0xF5, 0x8E, 0x4B, 0xF1, - 0x3B, 0xC1, 0x02, 0x81, 0x80, 0x4D, 0x45, 0xF9, 0x40, 0x8C, - 0xC5, 0x5B, 0xF4, 0x2A, 0x1A, 0x8A, 0xB4, 0xF2, 0x1C, 0xAC, - 0x6B, 0xE9, 0x0C, 0x56, 0x36, 0xB7, 0x4E, 0x72, 0x96, 0xD5, - 0xE5, 0x8A, 0xD2, 0xE2, 0xFF, 0xF1, 0xF1, 0x18, 0x13, 0x3D, - 0x86, 0x09, 0xB8, 0xD8, 0x76, 0xA7, 0xC9, 0x1C, 0x71, 0x52, - 0x94, 0x30, 0x43, 0xE0, 0xF1, 0x78, 0x74, 0xFD, 0x61, 0x1B, - 0x4C, 0x09, 0xCC, 0xE6, 0x68, 0x2A, 0x71, 0xAD, 0x1C, 0xDF, - 0x43, 0xBC, 0x56, 0xDB, 0xA5, 0xA4, 0xBE, 0x35, 0x70, 0xA4, - 0x5E, 0xCF, 0x4F, 0xFC, 0x00, 0x55, 0x99, 0x3A, 0x3D, 0x23, - 0xCF, 0x67, 0x5A, 0xF5, 0x22, 0xF8, 0xB5, 0x29, 0xD0, 0x44, - 0x11, 0xEB, 0x35, 0x2E, 0x46, 0xBE, 0xFD, 0x8E, 0x18, 0xB2, - 0x5F, 0xA8, 0xBF, 0x19, 0x32, 0xA1, 0xF5, 0xDC, 0x03, 0xE6, - 0x7C, 0x9A, 0x1F, 0x0C, 0x7C, 0xA9, 0xB0, 0x0E, 0x21, 0x37, - 0x3B, 0xF1, 0xB0 -}; -static const int sizeof_server_key_der_2048 = sizeof(server_key_der_2048); - -/* ./certs/server-cert.der, 2048-bit */ -static const unsigned char server_cert_der_2048[] = -{ - 0x30, 0x82, 0x04, 0x9E, 0x30, 0x82, 0x03, 0x86, 0xA0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x01, 0x01, 0x30, 0x0D, 0x06, 0x09, - 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, - 0x00, 0x30, 0x81, 0x94, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, - 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, - 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, - 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, - 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, - 0x6D, 0x61, 0x6E, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, - 0x04, 0x0A, 0x0C, 0x08, 0x53, 0x61, 0x77, 0x74, 0x6F, 0x6F, - 0x74, 0x68, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, - 0x0B, 0x0C, 0x0A, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, - 0x69, 0x6E, 0x67, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, - 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, - 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, - 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, - 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, - 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, - 0x6F, 0x6D, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30, 0x34, - 0x31, 0x33, 0x31, 0x35, 0x32, 0x33, 0x31, 0x30, 0x5A, 0x17, - 0x0D, 0x32, 0x31, 0x30, 0x31, 0x30, 0x37, 0x31, 0x35, 0x32, - 0x33, 0x31, 0x30, 0x5A, 0x30, 0x81, 0x90, 0x31, 0x0B, 0x30, - 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, - 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, - 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, - 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, - 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x10, 0x30, 0x0E, - 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x07, 0x77, 0x6F, 0x6C, - 0x66, 0x53, 0x53, 0x4C, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, - 0x55, 0x04, 0x0B, 0x0C, 0x07, 0x53, 0x75, 0x70, 0x70, 0x6F, - 0x72, 0x74, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, - 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, - 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, - 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, - 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, - 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, - 0x6D, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, - 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, - 0x82, 0x01, 0x01, 0x00, 0xC0, 0x95, 0x08, 0xE1, 0x57, 0x41, - 0xF2, 0x71, 0x6D, 0xB7, 0xD2, 0x45, 0x41, 0x27, 0x01, 0x65, - 0xC6, 0x45, 0xAE, 0xF2, 0xBC, 0x24, 0x30, 0xB8, 0x95, 0xCE, - 0x2F, 0x4E, 0xD6, 0xF6, 0x1C, 0x88, 0xBC, 0x7C, 0x9F, 0xFB, - 0xA8, 0x67, 0x7F, 0xFE, 0x5C, 0x9C, 0x51, 0x75, 0xF7, 0x8A, - 0xCA, 0x07, 0xE7, 0x35, 0x2F, 0x8F, 0xE1, 0xBD, 0x7B, 0xC0, - 0x2F, 0x7C, 0xAB, 0x64, 0xA8, 0x17, 0xFC, 0xCA, 0x5D, 0x7B, - 0xBA, 0xE0, 0x21, 0xE5, 0x72, 0x2E, 0x6F, 0x2E, 0x86, 0xD8, - 0x95, 0x73, 0xDA, 0xAC, 0x1B, 0x53, 0xB9, 0x5F, 0x3F, 0xD7, - 0x19, 0x0D, 0x25, 0x4F, 0xE1, 0x63, 0x63, 0x51, 0x8B, 0x0B, - 0x64, 0x3F, 0xAD, 0x43, 0xB8, 0xA5, 0x1C, 0x5C, 0x34, 0xB3, - 0xAE, 0x00, 0xA0, 0x63, 0xC5, 0xF6, 0x7F, 0x0B, 0x59, 0x68, - 0x78, 0x73, 0xA6, 0x8C, 0x18, 0xA9, 0x02, 0x6D, 0xAF, 0xC3, - 0x19, 0x01, 0x2E, 0xB8, 0x10, 0xE3, 0xC6, 0xCC, 0x40, 0xB4, - 0x69, 0xA3, 0x46, 0x33, 0x69, 0x87, 0x6E, 0xC4, 0xBB, 0x17, - 0xA6, 0xF3, 0xE8, 0xDD, 0xAD, 0x73, 0xBC, 0x7B, 0x2F, 0x21, - 0xB5, 0xFD, 0x66, 0x51, 0x0C, 0xBD, 0x54, 0xB3, 0xE1, 0x6D, - 0x5F, 0x1C, 0xBC, 0x23, 0x73, 0xD1, 0x09, 0x03, 0x89, 0x14, - 0xD2, 0x10, 0xB9, 0x64, 0xC3, 0x2A, 0xD0, 0xA1, 0x96, 0x4A, - 0xBC, 0xE1, 0xD4, 0x1A, 0x5B, 0xC7, 0xA0, 0xC0, 0xC1, 0x63, - 0x78, 0x0F, 0x44, 0x37, 0x30, 0x32, 0x96, 0x80, 0x32, 0x23, - 0x95, 0xA1, 0x77, 0xBA, 0x13, 0xD2, 0x97, 0x73, 0xE2, 0x5D, - 0x25, 0xC9, 0x6A, 0x0D, 0xC3, 0x39, 0x60, 0xA4, 0xB4, 0xB0, - 0x69, 0x42, 0x42, 0x09, 0xE9, 0xD8, 0x08, 0xBC, 0x33, 0x20, - 0xB3, 0x58, 0x22, 0xA7, 0xAA, 0xEB, 0xC4, 0xE1, 0xE6, 0x61, - 0x83, 0xC5, 0xD2, 0x96, 0xDF, 0xD9, 0xD0, 0x4F, 0xAD, 0xD7, - 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x81, 0xFC, 0x30, 0x81, - 0xF9, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, - 0x04, 0x14, 0xB3, 0x11, 0x32, 0xC9, 0x92, 0x98, 0x84, 0xE2, - 0xC9, 0xF8, 0xD0, 0x3B, 0x6E, 0x03, 0x42, 0xCA, 0x1F, 0x0E, - 0x8E, 0x3C, 0x30, 0x81, 0xC9, 0x06, 0x03, 0x55, 0x1D, 0x23, - 0x04, 0x81, 0xC1, 0x30, 0x81, 0xBE, 0x80, 0x14, 0x27, 0x8E, - 0x67, 0x11, 0x74, 0xC3, 0x26, 0x1D, 0x3F, 0xED, 0x33, 0x63, - 0xB3, 0xA4, 0xD8, 0x1D, 0x30, 0xE5, 0xE8, 0xD5, 0xA1, 0x81, - 0x9A, 0xA4, 0x81, 0x97, 0x30, 0x81, 0x94, 0x31, 0x0B, 0x30, - 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, - 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, - 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, - 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, - 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x11, 0x30, 0x0F, - 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x08, 0x53, 0x61, 0x77, - 0x74, 0x6F, 0x6F, 0x74, 0x68, 0x31, 0x13, 0x30, 0x11, 0x06, - 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x0A, 0x43, 0x6F, 0x6E, 0x73, - 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x31, 0x18, 0x30, 0x16, - 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, - 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, - 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, - 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, - 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x82, 0x09, 0x00, 0x86, 0xFF, - 0xF5, 0x8E, 0x10, 0xDE, 0xB8, 0xFB, 0x30, 0x0C, 0x06, 0x03, - 0x55, 0x1D, 0x13, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, - 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, - 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, - 0xB4, 0x54, 0x60, 0xAD, 0xA0, 0x03, 0x32, 0xDE, 0x02, 0x7F, - 0x21, 0x4A, 0x81, 0xC6, 0xED, 0xCD, 0xCD, 0xD8, 0x12, 0x8A, - 0xC0, 0xBA, 0x82, 0x5B, 0x75, 0xAD, 0x54, 0xE3, 0x7C, 0x80, - 0x6A, 0xAC, 0x2E, 0x6C, 0x20, 0x4E, 0xBE, 0x4D, 0x82, 0xA7, - 0x47, 0x13, 0x5C, 0xF4, 0xC6, 0x6A, 0x2B, 0x10, 0x99, 0x58, - 0xDE, 0xAB, 0x6B, 0x7C, 0x22, 0x05, 0xC1, 0x83, 0x9D, 0xCB, - 0xFF, 0x3C, 0xE4, 0x2D, 0x57, 0x6A, 0xA6, 0x96, 0xDF, 0xD3, - 0xC1, 0x68, 0xE3, 0xD2, 0xC6, 0x83, 0x4B, 0x97, 0xE2, 0xC6, - 0x32, 0x0E, 0xBE, 0xC4, 0x03, 0xB9, 0x07, 0x8A, 0x5B, 0xB8, - 0x84, 0xBA, 0xC5, 0x39, 0x3F, 0x1C, 0x58, 0xA7, 0x55, 0xD7, - 0xF0, 0x9B, 0xE8, 0xD2, 0x45, 0xB9, 0xE3, 0x83, 0x2E, 0xEE, - 0xB6, 0x71, 0x56, 0xB9, 0x3A, 0xEE, 0x3F, 0x27, 0xD8, 0x77, - 0xE8, 0xFB, 0x44, 0x48, 0x65, 0x27, 0x47, 0x4C, 0xFB, 0xFE, - 0x72, 0xC3, 0xAC, 0x05, 0x7B, 0x1D, 0xCB, 0xEB, 0x5E, 0x65, - 0x9A, 0xAB, 0x02, 0xE4, 0x88, 0x5B, 0x3B, 0x8B, 0x0B, 0xC7, - 0xCC, 0xA9, 0xA6, 0x8B, 0xE1, 0x87, 0xB0, 0x19, 0x1A, 0x0C, - 0x28, 0x58, 0x6F, 0x99, 0x52, 0x7E, 0xED, 0xB0, 0x3A, 0x68, - 0x3B, 0x8C, 0x0A, 0x08, 0x74, 0x72, 0xAB, 0xB9, 0x09, 0xC5, - 0xED, 0x04, 0x7E, 0x6F, 0x0B, 0x1C, 0x09, 0x21, 0xD0, 0xCD, - 0x7F, 0xF9, 0xC4, 0x5E, 0x27, 0x20, 0xE4, 0x85, 0x73, 0x52, - 0x05, 0xD2, 0xBA, 0xF8, 0xD5, 0x8F, 0x41, 0xCC, 0x23, 0x2E, - 0x12, 0x6D, 0xBC, 0x31, 0x98, 0xE7, 0x63, 0xA3, 0x8E, 0x26, - 0xCD, 0xE8, 0x2B, 0x88, 0xEE, 0xE2, 0xFE, 0x3A, 0x74, 0x52, - 0x34, 0x0E, 0xFD, 0x12, 0xE5, 0x5E, 0x69, 0x50, 0x20, 0x31, - 0x34, 0xE4, 0x31, 0xF1, 0xE7, 0xE4, 0x5B, 0x03, 0x13, 0xDA, - 0xAC, 0x41, 0x6C, 0xE7, 0xCF, 0x2B -}; -static const int sizeof_server_cert_der_2048 = sizeof(server_cert_der_2048); - -#endif /* USE_CERT_BUFFERS_2048 */ - -#ifdef USE_CERT_BUFFERS_3072 - -/* ./certs/dh3072.der, 3072-bit */ -static const unsigned char dh_key_der_3072[] = -{ - 0x30, 0x82, 0x01, 0x88, 0x02, 0x82, 0x01, 0x81, 0x00, 0x89, - 0x1B, 0x75, 0x3F, 0x84, 0xB6, 0x11, 0xED, 0x21, 0xF1, 0x08, - 0x0F, 0xB8, 0x06, 0xC9, 0xA3, 0xC9, 0x41, 0xDB, 0x5A, 0xC8, - 0xF8, 0x82, 0x73, 0x0F, 0xEB, 0x89, 0x1E, 0x54, 0x18, 0xBE, - 0xE6, 0x48, 0x41, 0x9E, 0xFA, 0xC2, 0x0C, 0x50, 0x67, 0xC3, - 0x5D, 0xB5, 0xF5, 0x0F, 0x23, 0x6A, 0x43, 0x33, 0x91, 0xD9, - 0x40, 0xF3, 0x66, 0xC6, 0x99, 0xFF, 0x97, 0xB6, 0x7B, 0xAF, - 0x27, 0x72, 0x3B, 0x9F, 0x7E, 0x58, 0x18, 0x14, 0x9F, 0x91, - 0x6E, 0x2B, 0x11, 0xC1, 0x57, 0x49, 0x27, 0x36, 0x78, 0xE1, - 0x09, 0x68, 0x9C, 0x05, 0x5A, 0xAC, 0xE6, 0x00, 0x38, 0xBE, - 0x95, 0x74, 0x81, 0x53, 0x28, 0xF0, 0xAD, 0xDF, 0xB5, 0x87, - 0x1C, 0x72, 0x17, 0x4E, 0xEC, 0x00, 0x91, 0x22, 0xAA, 0xE4, - 0x88, 0xD7, 0xF5, 0x3D, 0x1F, 0x03, 0x13, 0x2D, 0x1C, 0xFB, - 0xDE, 0x59, 0x68, 0xAD, 0xE0, 0x17, 0xA1, 0xEE, 0x8D, 0xCC, - 0xBF, 0xFE, 0xCF, 0x24, 0x42, 0xED, 0x26, 0xDD, 0x29, 0xD0, - 0x4E, 0x62, 0x3C, 0x85, 0x36, 0x1B, 0x5F, 0x6A, 0x47, 0x88, - 0x21, 0xE5, 0x1B, 0x85, 0x0A, 0x2C, 0xE9, 0x2F, 0xE0, 0x20, - 0xFC, 0x1D, 0xCD, 0x55, 0x66, 0xF5, 0xAC, 0x32, 0x00, 0x8E, - 0xA3, 0xE9, 0xED, 0xFB, 0x35, 0xA7, 0xE6, 0x76, 0x53, 0x42, - 0xC6, 0x77, 0x77, 0xAB, 0x90, 0x99, 0x7C, 0xC2, 0xEC, 0xC9, - 0x18, 0x4A, 0x3C, 0xF4, 0x11, 0x75, 0x27, 0x83, 0xBD, 0x9E, - 0xC2, 0x8F, 0x23, 0xAB, 0x52, 0x46, 0xE2, 0x52, 0x5D, 0x9A, - 0x04, 0xC3, 0x15, 0x1F, 0x69, 0x9C, 0x72, 0x69, 0x59, 0x52, - 0xD4, 0x69, 0x3D, 0x19, 0x77, 0x36, 0x25, 0xAF, 0x07, 0x71, - 0x82, 0xDE, 0xB7, 0x24, 0x60, 0x82, 0x6A, 0x72, 0xBB, 0xED, - 0xB6, 0x76, 0xAE, 0x7E, 0xBC, 0x7D, 0x2F, 0x73, 0x4B, 0x04, - 0x16, 0xD5, 0xA4, 0xF3, 0x03, 0x26, 0xFB, 0xF3, 0xCD, 0x7B, - 0x77, 0x7E, 0x7C, 0x8D, 0x65, 0xAE, 0xA5, 0xDC, 0x6C, 0xE3, - 0x70, 0xD2, 0x29, 0x6B, 0xF2, 0xEB, 0x76, 0xC9, 0xE5, 0x46, - 0x18, 0x12, 0x57, 0xB0, 0x55, 0xA5, 0x7C, 0xCD, 0x41, 0x93, - 0x26, 0x99, 0xF7, 0xA5, 0xC5, 0x34, 0xBE, 0x59, 0x79, 0xDE, - 0x0A, 0x57, 0x5F, 0x21, 0xF8, 0x98, 0x52, 0xF0, 0x2F, 0x7B, - 0x57, 0xB6, 0x9D, 0xFC, 0x40, 0xA6, 0x55, 0xFB, 0xAF, 0xD9, - 0x16, 0x9B, 0x20, 0x4F, 0xA8, 0xA3, 0x0B, 0x04, 0x48, 0xE3, - 0x77, 0x22, 0xC4, 0xCC, 0x57, 0x14, 0x33, 0xA2, 0xF0, 0x9A, - 0xE3, 0x12, 0xBD, 0xFF, 0x72, 0x8B, 0xEE, 0x52, 0xF3, 0xC9, - 0x59, 0xC2, 0xA2, 0x6B, 0xA5, 0x75, 0x48, 0x51, 0x82, 0x0E, - 0x7A, 0xFF, 0xFE, 0x41, 0xCD, 0x7C, 0x63, 0xD2, 0x53, 0xA8, - 0x11, 0x03, 0xB9, 0x03, 0x07, 0xFE, 0x66, 0x38, 0x5F, 0xA2, - 0x3E, 0x9C, 0x1B, 0x02, 0x01, 0x02 -}; -static const int sizeof_dh_key_der_3072 = sizeof(dh_key_der_3072); - -/* ./certs/dsa3072.der, 3072-bit */ -static const unsigned char dsa_key_der_3072[] = -{ - 0x30, 0x82, 0x04, 0xD7, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, - 0x81, 0x00, 0xB5, 0xD0, 0x2F, 0x55, 0xC1, 0x27, 0x4C, 0x5B, - 0x28, 0x81, 0x4E, 0xA4, 0x32, 0x0D, 0x73, 0x54, 0x68, 0x4F, - 0x0A, 0x36, 0x68, 0x4A, 0x51, 0xBE, 0xDE, 0x49, 0xD4, 0x9D, - 0xCE, 0xC6, 0xF7, 0x01, 0x70, 0xD2, 0x88, 0x90, 0x1D, 0x60, - 0x30, 0x9B, 0x0A, 0x9C, 0x23, 0xDA, 0xE0, 0x74, 0x46, 0x5B, - 0xC7, 0x41, 0x40, 0x5C, 0xD9, 0x7A, 0xBE, 0x78, 0xCA, 0x49, - 0xF5, 0x2D, 0x7B, 0xD7, 0xBF, 0x67, 0x0D, 0x84, 0x28, 0xBB, - 0x9D, 0xC2, 0xAB, 0x23, 0x06, 0x28, 0x0C, 0x98, 0x46, 0x43, - 0xCE, 0x6F, 0x9E, 0xD0, 0xE9, 0x0E, 0xF3, 0x7E, 0x30, 0x5D, - 0xD3, 0x45, 0x44, 0x7B, 0x0C, 0x7A, 0x73, 0xA6, 0x95, 0x65, - 0xAA, 0x8B, 0xD8, 0x75, 0x6A, 0x11, 0xB3, 0x10, 0x7C, 0x57, - 0xAF, 0xCE, 0xBE, 0x5B, 0xF7, 0xC8, 0xFE, 0x42, 0xA3, 0x77, - 0xB7, 0x0B, 0x3D, 0x66, 0xB5, 0x08, 0x74, 0x22, 0x74, 0x26, - 0xE6, 0xDB, 0x8E, 0xEF, 0xA3, 0x99, 0xAE, 0x0B, 0x42, 0x8C, - 0x5F, 0x7E, 0x48, 0xE9, 0x19, 0x90, 0xA8, 0x35, 0xA9, 0xFC, - 0x48, 0x0D, 0xC8, 0xB8, 0xE4, 0x1A, 0x0C, 0x26, 0xC7, 0x1A, - 0x20, 0x02, 0xEB, 0x72, 0x2E, 0x94, 0xD6, 0x19, 0x34, 0x39, - 0x55, 0x4E, 0xFC, 0x53, 0x48, 0xD8, 0x10, 0x89, 0xA1, 0x6E, - 0x22, 0x39, 0x71, 0x15, 0xA6, 0x13, 0xBC, 0x77, 0x49, 0x53, - 0xCB, 0x16, 0x4B, 0x56, 0x3D, 0x08, 0xA2, 0x71, 0x0E, 0x06, - 0x0C, 0x3A, 0xDE, 0x82, 0xC0, 0xDF, 0xE7, 0x96, 0x57, 0xD7, - 0x3F, 0x6B, 0xF0, 0xAE, 0xD1, 0x38, 0xB8, 0x5B, 0x83, 0x77, - 0x8B, 0xEB, 0x2B, 0xDA, 0x38, 0xC8, 0x4C, 0xA9, 0x48, 0x52, - 0xD8, 0x41, 0x03, 0xD3, 0x11, 0x1C, 0x66, 0x9E, 0xDE, 0xC9, - 0x78, 0x5A, 0xE1, 0x7B, 0xEA, 0x6F, 0xD6, 0xCA, 0x6A, 0x2F, - 0x01, 0xB2, 0x83, 0x37, 0x25, 0xD9, 0x9C, 0xD4, 0xB0, 0x21, - 0xD9, 0x8F, 0xA6, 0xF8, 0xD6, 0x21, 0x82, 0xBB, 0x08, 0x64, - 0x28, 0x0E, 0x0C, 0x26, 0xE6, 0xA5, 0x69, 0xE0, 0x23, 0xE9, - 0xB3, 0xC4, 0xF9, 0xDE, 0xC6, 0xD6, 0x32, 0x00, 0x66, 0x9B, - 0x8A, 0x0B, 0x6F, 0xDE, 0xB8, 0xDD, 0x68, 0x7F, 0x9D, 0x68, - 0x59, 0x6B, 0x55, 0xD9, 0x53, 0x01, 0x7B, 0x1A, 0x1C, 0x8D, - 0xBF, 0xAF, 0xC0, 0xB1, 0x14, 0x9E, 0xC1, 0x8D, 0x3E, 0x1E, - 0xFB, 0x40, 0xF9, 0x6D, 0x48, 0x43, 0xCD, 0x6C, 0xE8, 0xBC, - 0x3C, 0x7C, 0x35, 0x3C, 0x65, 0x6D, 0xA0, 0x25, 0x87, 0xBF, - 0xEC, 0x9B, 0x12, 0x74, 0x48, 0xC8, 0xE4, 0xBF, 0x53, 0x53, - 0x47, 0x78, 0xD9, 0x9B, 0x1A, 0xA5, 0x07, 0x46, 0x15, 0x16, - 0xD2, 0x33, 0x93, 0xCC, 0x41, 0x9B, 0xB7, 0x22, 0xDF, 0x07, - 0xDD, 0x72, 0xC6, 0x1A, 0x9B, 0x92, 0xE7, 0x32, 0x04, 0xAB, - 0x94, 0x80, 0xBD, 0x58, 0xF2, 0x35, 0x02, 0x21, 0x00, 0x9A, - 0xDD, 0x98, 0x1A, 0x6F, 0xEA, 0xB5, 0x8B, 0xC9, 0x68, 0x18, - 0x81, 0xE4, 0x4C, 0xFD, 0x8E, 0x45, 0xCF, 0x5F, 0x0E, 0x62, - 0x1E, 0x7D, 0x2D, 0x4A, 0x4C, 0x5D, 0x7F, 0xF8, 0xD8, 0x52, - 0xD7, 0x02, 0x82, 0x01, 0x81, 0x00, 0x84, 0xDF, 0xAB, 0x91, - 0x61, 0xE4, 0x2B, 0x07, 0x0A, 0x1C, 0xC7, 0x9C, 0xD7, 0xAC, - 0x8D, 0xA5, 0xAA, 0x41, 0x65, 0x9E, 0x4A, 0xED, 0x21, 0x45, - 0x96, 0xF7, 0xF7, 0xCB, 0x7A, 0x88, 0x19, 0x0F, 0x36, 0x80, - 0x25, 0x2F, 0x23, 0x0D, 0xFF, 0x6C, 0x0D, 0x02, 0xBB, 0x6A, - 0x79, 0x6A, 0xCB, 0x05, 0x00, 0x9B, 0x77, 0xED, 0x6B, 0xF3, - 0xC2, 0xEA, 0x1A, 0xDF, 0xB8, 0x15, 0xA8, 0x92, 0x19, 0x5A, - 0x51, 0x3B, 0x76, 0x06, 0x98, 0x47, 0xC7, 0x6F, 0x76, 0x99, - 0xAD, 0x50, 0xC5, 0x98, 0xE7, 0xFF, 0x88, 0xBC, 0x49, 0x77, - 0xEF, 0x96, 0x75, 0xE2, 0x36, 0x66, 0x1F, 0x0C, 0xFA, 0x57, - 0x1E, 0x11, 0xFF, 0x8F, 0x3C, 0xD0, 0xEA, 0x97, 0x25, 0x3F, - 0xFA, 0xD1, 0x4F, 0xBA, 0xDF, 0xE3, 0x35, 0xFB, 0x6E, 0x5C, - 0x65, 0xF9, 0xA2, 0x26, 0x43, 0xF2, 0xF4, 0xE0, 0x05, 0x3D, - 0xC6, 0x5B, 0xC4, 0x21, 0xE7, 0xB1, 0x02, 0xEB, 0xF2, 0xA9, - 0x06, 0x5E, 0xB7, 0x1B, 0xC1, 0xD8, 0x86, 0x34, 0xED, 0x84, - 0x89, 0xCE, 0xCE, 0xC2, 0x63, 0x78, 0x67, 0xF8, 0xC3, 0xAA, - 0x7C, 0x1C, 0x59, 0x32, 0xE4, 0x77, 0xA2, 0x36, 0x31, 0xFE, - 0x4B, 0x9C, 0x98, 0xCE, 0x01, 0x55, 0x61, 0xCE, 0x23, 0xAE, - 0x0F, 0x7E, 0x24, 0x8B, 0x54, 0x8A, 0xE4, 0xCB, 0x8E, 0xDC, - 0x7A, 0x94, 0x4C, 0xF9, 0x3C, 0xF8, 0x67, 0x68, 0x9D, 0x7A, - 0x82, 0xA1, 0xA0, 0x01, 0xC7, 0x1B, 0x8D, 0xA0, 0xC0, 0x53, - 0x1E, 0x93, 0xC7, 0x86, 0x12, 0xD3, 0x16, 0xDC, 0x28, 0xA0, - 0xD1, 0x0D, 0x1E, 0x42, 0x9A, 0xCB, 0x55, 0x8C, 0x22, 0x7F, - 0x41, 0xC3, 0xC9, 0x14, 0xF2, 0xB0, 0x73, 0xA1, 0x4D, 0x72, - 0xFD, 0x88, 0xB6, 0xDE, 0xE5, 0xF0, 0x3C, 0x3A, 0x7E, 0x68, - 0x3E, 0x82, 0x58, 0x60, 0xCD, 0xB4, 0x08, 0x64, 0x18, 0xB2, - 0x24, 0x97, 0x13, 0xA6, 0x07, 0x75, 0xBE, 0xE0, 0x14, 0x92, - 0x9A, 0x98, 0x6C, 0x08, 0x94, 0xD1, 0x0D, 0x48, 0x44, 0xC3, - 0xE3, 0xD5, 0xC0, 0x93, 0x49, 0x79, 0x2F, 0x67, 0x15, 0x76, - 0xD8, 0x90, 0x11, 0xDB, 0xEC, 0xA7, 0xE2, 0xDB, 0xD4, 0x4F, - 0x49, 0x5E, 0xEF, 0xC5, 0xB9, 0x77, 0x69, 0xDA, 0x02, 0xB7, - 0x23, 0xBC, 0xEA, 0xDC, 0x84, 0xD4, 0xA5, 0x5C, 0xA2, 0x6C, - 0xAD, 0x4A, 0x9F, 0xF0, 0x65, 0x48, 0xE9, 0xBF, 0xDF, 0xA5, - 0xB3, 0x99, 0xD6, 0x76, 0x08, 0x87, 0x2C, 0xF2, 0x29, 0x79, - 0xB2, 0x20, 0x7C, 0x6F, 0xC1, 0xC5, 0x3C, 0xB0, 0x50, 0x3F, - 0x72, 0xA5, 0x57, 0xE3, 0xB0, 0x62, 0x18, 0x80, 0x71, 0xB9, - 0x3F, 0x4D, 0x4E, 0x7C, 0xF6, 0x29, 0xDB, 0xB8, 0xAD, 0xF6, - 0x41, 0x69, 0x06, 0x90, 0x45, 0x7B, 0x95, 0x03, 0xE1, 0x9E, - 0xA5, 0xA1, 0x5A, 0xE3, 0x08, 0x26, 0x73, 0xFC, 0x2B, 0x20, - 0x02, 0x82, 0x01, 0x81, 0x00, 0xA5, 0x52, 0x8F, 0x53, 0xF0, - 0xB9, 0x4F, 0x06, 0xB9, 0xC8, 0xB4, 0x50, 0xA4, 0x39, 0xBA, - 0x12, 0x92, 0x75, 0x27, 0x43, 0xA8, 0x30, 0xA9, 0xF2, 0x2A, - 0xC6, 0x93, 0x26, 0x3C, 0x8C, 0x9F, 0xA2, 0x6F, 0x53, 0xD9, - 0x14, 0xAB, 0x3F, 0x00, 0xC6, 0x11, 0x13, 0x90, 0x6A, 0x42, - 0xF2, 0x9D, 0xA3, 0x8F, 0x31, 0x32, 0x46, 0x73, 0xA3, 0x93, - 0x57, 0x5D, 0x76, 0x45, 0x49, 0x6C, 0xBD, 0xEA, 0xAF, 0xAA, - 0xB3, 0x55, 0x25, 0x11, 0x8E, 0xA5, 0x2A, 0xB1, 0xBA, 0xA5, - 0x06, 0x4A, 0x66, 0xAA, 0x78, 0x9E, 0xF6, 0x5C, 0x1E, 0xB1, - 0x4A, 0xCA, 0x5C, 0x3F, 0x1D, 0x33, 0x75, 0x91, 0xF2, 0xF9, - 0x53, 0x14, 0x2F, 0xDC, 0xF0, 0x4C, 0xA4, 0xF4, 0x50, 0x04, - 0x1F, 0xFF, 0xC9, 0x0C, 0xC6, 0x8A, 0x04, 0x8B, 0x80, 0x87, - 0xA7, 0x70, 0x49, 0xD7, 0xE4, 0xE7, 0x83, 0xF1, 0x86, 0x1A, - 0xB0, 0x85, 0x3C, 0x59, 0x04, 0x96, 0xD1, 0x85, 0x47, 0xA1, - 0x57, 0x7D, 0xC6, 0x8E, 0x60, 0x7D, 0xC6, 0xE8, 0x18, 0xB3, - 0x1F, 0xB8, 0x99, 0xF0, 0xC4, 0xE5, 0x1E, 0xBC, 0x34, 0x07, - 0x8E, 0x40, 0x57, 0xA5, 0x8D, 0x3A, 0xA3, 0x88, 0x96, 0xF1, - 0xB3, 0x61, 0xF1, 0x1C, 0x96, 0x8A, 0xA4, 0x9E, 0xCD, 0x21, - 0xA2, 0x94, 0xAE, 0x5E, 0x1F, 0xCD, 0x5B, 0x5B, 0xE3, 0x88, - 0x1E, 0x17, 0x4A, 0x46, 0xAB, 0x9C, 0xE0, 0x59, 0x03, 0x4A, - 0xB8, 0xC8, 0x83, 0xE7, 0xFF, 0x39, 0x27, 0x68, 0x80, 0xA0, - 0x8E, 0xB3, 0xA2, 0x00, 0xC6, 0x2D, 0x2C, 0x76, 0xBA, 0x90, - 0x7C, 0x03, 0x1B, 0x19, 0xC8, 0x33, 0xB2, 0x12, 0x3A, 0xC8, - 0x8D, 0x32, 0xFE, 0xC0, 0xF9, 0xA5, 0x6A, 0x63, 0xE2, 0xA4, - 0x12, 0x43, 0x19, 0xF5, 0x14, 0xF2, 0x27, 0xF8, 0x0B, 0xBD, - 0x1A, 0x22, 0x64, 0x2D, 0xC9, 0x05, 0xFA, 0xD8, 0xDD, 0x11, - 0x1A, 0xD3, 0xF2, 0xBC, 0x99, 0x3A, 0xCD, 0x21, 0xCF, 0x10, - 0x14, 0x36, 0xDF, 0xED, 0x66, 0x02, 0x03, 0x4A, 0x42, 0x70, - 0x71, 0x22, 0xAD, 0xE7, 0x53, 0x91, 0xF4, 0x40, 0x8F, 0x72, - 0x7E, 0x54, 0xA0, 0x5D, 0x58, 0x93, 0xD6, 0xF6, 0xBC, 0x87, - 0x1A, 0x68, 0x0F, 0xAB, 0x94, 0x20, 0x70, 0xC2, 0x11, 0xA1, - 0x14, 0xBC, 0x06, 0xA8, 0x44, 0xB9, 0x1F, 0x04, 0x49, 0x7E, - 0xB3, 0x9A, 0x53, 0x46, 0x05, 0x75, 0x5D, 0x29, 0x77, 0x28, - 0xA9, 0xB1, 0xDC, 0xF1, 0x0D, 0x8A, 0x1C, 0x5E, 0xCD, 0xD7, - 0x4C, 0x16, 0x6F, 0x88, 0xBF, 0xB3, 0x34, 0xE2, 0xAD, 0x9A, - 0xC4, 0x89, 0xE2, 0x2E, 0x5C, 0x20, 0xE1, 0x5F, 0x39, 0xBF, - 0xB7, 0x45, 0xD3, 0x0F, 0x98, 0xB0, 0xD8, 0xC9, 0x18, 0x91, - 0x17, 0x25, 0xBC, 0x53, 0x62, 0xFF, 0x27, 0x85, 0xBD, 0xE2, - 0xE3, 0x9C, 0xA8, 0x06, 0x7A, 0x54, 0xEA, 0xFD, 0xEA, 0x02, - 0x20, 0x4C, 0xAC, 0x69, 0x62, 0x08, 0xE5, 0xCD, 0x14, 0xC8, - 0x2D, 0x4E, 0xDF, 0x1F, 0x60, 0x1D, 0x93, 0x44, 0x86, 0x5D, - 0x73, 0x99, 0x40, 0x1B, 0xDC, 0xA9, 0xBA, 0xC4, 0x1B, 0x12, - 0x6C, 0xFF, 0x53 -}; -static const int sizeof_dsa_key_der_3072 = sizeof(dsa_key_der_3072); - -/* ./certs/rsa3072.der, 3072-bit */ -static const unsigned char rsa_key_der_3072[] = -{ - 0x30, 0x82, 0x06, 0xE4, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, - 0x81, 0x00, 0xBC, 0x6D, 0x68, 0xFF, 0xC0, 0x07, 0x0E, 0x0C, - 0x4A, 0xE6, 0x76, 0x1F, 0x7A, 0x25, 0x3A, 0x75, 0xA7, 0xE2, - 0xF1, 0x17, 0x00, 0xF8, 0x85, 0xE6, 0x8F, 0x59, 0x14, 0xA7, - 0xDE, 0x8C, 0x74, 0x4B, 0xEB, 0x85, 0xEC, 0x49, 0x9B, 0xFF, - 0x4B, 0x43, 0x0A, 0x08, 0xA1, 0xEC, 0x64, 0x58, 0x47, 0x28, - 0xD5, 0xCE, 0x48, 0xE9, 0xCF, 0x34, 0xDF, 0x15, 0x20, 0x37, - 0x99, 0x0E, 0x3C, 0x81, 0xBE, 0x2E, 0xE4, 0x6C, 0xBB, 0xDE, - 0xD1, 0x93, 0xC5, 0xEC, 0x6C, 0xCC, 0x40, 0x0B, 0x46, 0xA1, - 0xE6, 0xCA, 0xA0, 0xD5, 0x3B, 0x44, 0x48, 0x79, 0x67, 0x52, - 0x6F, 0xDA, 0xED, 0x73, 0x8B, 0x7C, 0x33, 0xDA, 0x17, 0x96, - 0xE8, 0xA2, 0x91, 0x3C, 0x57, 0xDD, 0xC9, 0x2E, 0x01, 0x74, - 0x87, 0x33, 0xA0, 0x12, 0x7C, 0xBB, 0xF9, 0x53, 0xF4, 0xC4, - 0x31, 0x48, 0x53, 0xCB, 0xBB, 0x3C, 0x42, 0x43, 0x0C, 0x7A, - 0x7B, 0xB8, 0x2A, 0xFC, 0xDC, 0x70, 0xD5, 0x64, 0x16, 0x74, - 0xA8, 0x80, 0xDE, 0x16, 0xE0, 0xB2, 0x6C, 0x04, 0x47, 0x6C, - 0x25, 0xA6, 0x7F, 0xB4, 0x73, 0x49, 0xBC, 0xF3, 0xAE, 0xE3, - 0x93, 0x36, 0x87, 0x2B, 0xB7, 0x8F, 0xB5, 0x88, 0x88, 0x22, - 0x47, 0xDF, 0xBF, 0x4D, 0x3C, 0x2A, 0xBD, 0x3F, 0x2F, 0x11, - 0x29, 0xCC, 0x1C, 0x33, 0x40, 0x4E, 0x23, 0xF6, 0x25, 0xF0, - 0xAF, 0x02, 0x16, 0x48, 0xED, 0x1C, 0xD8, 0xC9, 0x92, 0x2F, - 0x5B, 0xAF, 0xBA, 0xDB, 0x60, 0x1E, 0x0E, 0xE1, 0x65, 0x91, - 0x96, 0xF8, 0x7D, 0x73, 0x4C, 0x72, 0x23, 0x33, 0xD5, 0x32, - 0x2B, 0x0F, 0x4F, 0xBC, 0x81, 0x45, 0x9E, 0x31, 0x76, 0xEF, - 0xE1, 0x76, 0x2D, 0x3F, 0x8F, 0xC4, 0x19, 0x8F, 0x27, 0x2A, - 0x8F, 0x6E, 0x76, 0xCC, 0xE0, 0x5D, 0xB0, 0x86, 0x66, 0xFE, - 0x72, 0xD9, 0x06, 0x40, 0xB6, 0xCE, 0x85, 0xC6, 0x2D, 0x34, - 0x33, 0xAA, 0x8E, 0xE5, 0x54, 0x8E, 0xB8, 0xBA, 0xEE, 0x92, - 0x07, 0x5D, 0xB5, 0xF1, 0x67, 0xBF, 0xCA, 0xE4, 0xCA, 0xCB, - 0xD9, 0x01, 0x73, 0x22, 0x01, 0x32, 0x39, 0xF4, 0x0A, 0xEC, - 0x5F, 0x4A, 0x00, 0x10, 0x3F, 0x01, 0x3D, 0x15, 0xBB, 0x55, - 0x91, 0x80, 0xBE, 0xD8, 0xD3, 0x59, 0xCC, 0xB0, 0x7C, 0x56, - 0xF7, 0xFF, 0xE0, 0x28, 0x40, 0x02, 0xB3, 0x98, 0x8A, 0x54, - 0x52, 0x60, 0xA5, 0x0B, 0x95, 0x53, 0x86, 0x6B, 0xA4, 0x35, - 0xCA, 0x04, 0xC7, 0xFB, 0x0A, 0xC8, 0x9D, 0x5A, 0x11, 0x40, - 0xF7, 0x60, 0x07, 0xB1, 0xB3, 0x42, 0xB6, 0x80, 0x8F, 0xE4, - 0x25, 0xC9, 0xE8, 0xBC, 0x8E, 0x21, 0x0D, 0x47, 0xCF, 0xB8, - 0x37, 0x09, 0xAF, 0xBF, 0x2C, 0x34, 0x09, 0x22, 0xC2, 0x6E, - 0x0D, 0x06, 0x30, 0x80, 0x1E, 0xA5, 0x8A, 0x46, 0x2D, 0xDC, - 0x57, 0xD4, 0x57, 0x82, 0x6A, 0x11, 0x02, 0x03, 0x01, 0x00, - 0x01, 0x02, 0x82, 0x01, 0x81, 0x00, 0xAD, 0x99, 0xAF, 0xCF, - 0x51, 0x40, 0x2E, 0xB5, 0x2C, 0x9C, 0xBF, 0xDF, 0xA8, 0x4D, - 0x7C, 0x5A, 0xC1, 0xDE, 0xD8, 0x78, 0x75, 0x30, 0x83, 0x4D, - 0x34, 0x6C, 0xC2, 0x17, 0x17, 0x77, 0x17, 0xFE, 0x8A, 0x73, - 0xCC, 0x8A, 0xD4, 0xEA, 0x94, 0x90, 0xA3, 0x41, 0xE8, 0xCD, - 0x3E, 0x76, 0x06, 0xB9, 0x9C, 0xA2, 0x7D, 0x92, 0xCC, 0x90, - 0xCD, 0xA7, 0x4D, 0x13, 0x6C, 0x34, 0x2D, 0x92, 0xEB, 0x81, - 0x90, 0x7A, 0x8D, 0x6C, 0x70, 0x72, 0x51, 0x3B, 0xCD, 0xD1, - 0x30, 0x80, 0x33, 0x07, 0x1E, 0xF7, 0x38, 0xCE, 0xBB, 0xD7, - 0xE1, 0x5D, 0xD8, 0xCF, 0x9E, 0xB6, 0x79, 0x66, 0xA6, 0xF0, - 0x3B, 0x65, 0x87, 0xAE, 0x45, 0x8E, 0xE1, 0x78, 0x53, 0x0B, - 0xC7, 0x3A, 0x57, 0xA4, 0xE0, 0x9B, 0xB3, 0xB2, 0xD4, 0xB0, - 0xEA, 0xB9, 0x6B, 0x1D, 0x06, 0xBA, 0xB8, 0x59, 0x4F, 0x9B, - 0xE9, 0x00, 0x95, 0x12, 0x93, 0xC1, 0xCD, 0xF9, 0x41, 0xAF, - 0xC3, 0x2A, 0x7F, 0x75, 0xE3, 0x79, 0x37, 0x24, 0xA4, 0xC8, - 0x3D, 0xB4, 0x83, 0x89, 0x23, 0xF7, 0x0E, 0x59, 0x56, 0x8E, - 0x6D, 0x43, 0xA5, 0xB1, 0x8E, 0x04, 0x02, 0xED, 0x48, 0x25, - 0x62, 0xFE, 0xF3, 0x4D, 0x82, 0x22, 0xA6, 0xC1, 0xA5, 0xD9, - 0x4A, 0x9A, 0x57, 0xE6, 0xDC, 0x37, 0x6D, 0x13, 0xDA, 0xFF, - 0x23, 0x2A, 0xB9, 0x31, 0xD2, 0x4B, 0x7D, 0xF3, 0x02, 0x90, - 0xF6, 0x28, 0x3D, 0x98, 0x3C, 0xF6, 0x43, 0x45, 0xAE, 0xAB, - 0x91, 0x15, 0xC7, 0xC4, 0x90, 0x9C, 0x3E, 0xDA, 0xD4, 0x20, - 0x12, 0xB2, 0xE1, 0x2B, 0x56, 0xE2, 0x38, 0x32, 0x9C, 0xE6, - 0xA9, 0x1D, 0xFE, 0xA5, 0xEE, 0xD7, 0x52, 0xB4, 0xE3, 0xE4, - 0x65, 0xEA, 0x41, 0x9D, 0xD4, 0x91, 0x83, 0x5D, 0xFF, 0x52, - 0xA7, 0xC3, 0x42, 0x9F, 0x14, 0x70, 0x9F, 0x98, 0x14, 0xB2, - 0x33, 0xEE, 0x4C, 0x5A, 0xC9, 0x5F, 0x16, 0xF6, 0x06, 0xE9, - 0xF3, 0x39, 0xD2, 0xC5, 0x31, 0x53, 0x2A, 0x39, 0xED, 0x3A, - 0x4D, 0x2A, 0xC1, 0x4C, 0x87, 0x82, 0xC6, 0xCA, 0xCF, 0xF5, - 0x9A, 0x71, 0x27, 0xAE, 0xFB, 0xFE, 0xD0, 0x66, 0xDB, 0xAA, - 0x03, 0x16, 0x4B, 0xEF, 0xB4, 0x28, 0xAB, 0xCF, 0xBE, 0x9B, - 0x58, 0xCF, 0xA4, 0x58, 0x82, 0xD2, 0x37, 0x8C, 0xEA, 0x3D, - 0x75, 0x4D, 0x0B, 0x46, 0x7A, 0x04, 0xDE, 0xF1, 0x6E, 0xBB, - 0x03, 0xBF, 0xF7, 0x8E, 0xE6, 0xF4, 0x9A, 0xE1, 0xCA, 0x26, - 0x2C, 0x41, 0x08, 0xAD, 0x21, 0xA7, 0xC2, 0x40, 0xF5, 0x9C, - 0xDD, 0xAB, 0xC5, 0x5A, 0x4C, 0xF4, 0xE6, 0x9A, 0x50, 0xFD, - 0xAA, 0x47, 0xD6, 0xA6, 0x07, 0x25, 0xB2, 0x4B, 0x9C, 0x1D, - 0x90, 0xA2, 0x4A, 0x98, 0xE0, 0x05, 0x8A, 0x5C, 0xD1, 0x2C, - 0xC0, 0x28, 0xD1, 0x84, 0x3C, 0x72, 0xFF, 0x83, 0xEA, 0xB1, - 0x02, 0x81, 0xC1, 0x00, 0xF8, 0xA0, 0x5F, 0x25, 0x2E, 0x23, - 0x73, 0x30, 0xB6, 0x97, 0xAF, 0x08, 0xE7, 0xD2, 0xD8, 0xC3, - 0x95, 0xEA, 0x9D, 0x8E, 0x9F, 0xF1, 0x36, 0x81, 0xD7, 0x7A, - 0x21, 0x2B, 0x90, 0x38, 0x9C, 0xA6, 0x08, 0x40, 0xEA, 0xD2, - 0x6E, 0x29, 0xB5, 0x0B, 0x3E, 0x91, 0xB2, 0x04, 0x92, 0xCF, - 0x94, 0xFF, 0xA6, 0xA7, 0x1A, 0x5F, 0x93, 0x0C, 0x86, 0xE6, - 0x4B, 0x61, 0xD4, 0x5E, 0xD7, 0xE3, 0x66, 0x0B, 0x83, 0xDB, - 0x16, 0x49, 0x27, 0xD5, 0xA3, 0xB3, 0xF5, 0x5D, 0x8F, 0xC9, - 0x48, 0x10, 0xD7, 0x77, 0x1E, 0x7B, 0x01, 0xC4, 0xFD, 0x14, - 0x0C, 0xAB, 0x40, 0xF7, 0x9B, 0x07, 0xDE, 0x55, 0xEF, 0x36, - 0x4C, 0x22, 0x37, 0x37, 0x09, 0x9D, 0x2A, 0x73, 0xA6, 0xA5, - 0xF4, 0xAF, 0x39, 0x2B, 0x87, 0xB4, 0xB2, 0x28, 0x9E, 0x08, - 0xA6, 0xCA, 0xB4, 0x39, 0x5A, 0x3A, 0xFB, 0x41, 0x93, 0xEC, - 0x44, 0xBB, 0xD2, 0x7C, 0x3B, 0x27, 0x3E, 0x26, 0xFD, 0x7B, - 0x20, 0xFC, 0x44, 0x67, 0xC0, 0x84, 0xD1, 0xA0, 0xCC, 0xBB, - 0x26, 0xC7, 0x32, 0x0E, 0x01, 0x9B, 0x2B, 0x1F, 0x58, 0x85, - 0x5A, 0x6C, 0xD0, 0xC1, 0xAC, 0x14, 0x5E, 0x06, 0x07, 0xCA, - 0x69, 0x52, 0xF5, 0xA6, 0x16, 0x75, 0x42, 0x8A, 0xE1, 0xBA, - 0x8B, 0x46, 0x38, 0x17, 0x7B, 0xF1, 0x7D, 0x79, 0x1F, 0x7E, - 0x4C, 0x6A, 0x75, 0xDC, 0xA8, 0x3B, 0x02, 0x81, 0xC1, 0x00, - 0xC2, 0x03, 0xFE, 0x57, 0xDF, 0x26, 0xD8, 0x79, 0xDC, 0x2C, - 0x47, 0x9B, 0x92, 0x9B, 0x53, 0x40, 0x82, 0xEC, 0xBD, 0x0B, - 0xC0, 0x96, 0x89, 0x21, 0xC5, 0x26, 0x7E, 0x7A, 0x59, 0xA7, - 0x85, 0x11, 0xCC, 0x39, 0x33, 0xA7, 0xE6, 0x42, 0x9C, 0x12, - 0x81, 0xA0, 0x87, 0xBC, 0x57, 0x07, 0xC4, 0x51, 0x93, 0x59, - 0xC6, 0xAB, 0x11, 0xCC, 0xCB, 0xC8, 0xC1, 0x40, 0xDF, 0xCB, - 0xE8, 0x45, 0x31, 0x20, 0x91, 0x88, 0x5F, 0x76, 0x76, 0xEE, - 0x30, 0x37, 0xFA, 0xA7, 0x22, 0x72, 0x82, 0x50, 0x31, 0xE9, - 0xA0, 0x44, 0xCA, 0xDD, 0xD6, 0xAC, 0xEC, 0x82, 0xE8, 0x62, - 0xD8, 0x43, 0xFD, 0x77, 0x0F, 0x1C, 0x23, 0x12, 0x91, 0x1C, - 0xFE, 0x93, 0x2C, 0x87, 0x52, 0xBF, 0x96, 0x79, 0x5E, 0x3A, - 0x5A, 0x33, 0x28, 0x27, 0x3F, 0x20, 0x2C, 0xB3, 0x26, 0xE2, - 0x0D, 0x44, 0xA9, 0x2F, 0x39, 0x7B, 0x7B, 0xAD, 0xA3, 0x21, - 0xD2, 0x7F, 0x3C, 0x89, 0x63, 0xDD, 0x13, 0xB1, 0x2E, 0xD6, - 0x34, 0xFB, 0x2A, 0x83, 0x29, 0xE7, 0x8A, 0x88, 0xD7, 0xA3, - 0x38, 0x3C, 0x43, 0x62, 0x8F, 0x69, 0xFA, 0x4B, 0x15, 0xB5, - 0xF6, 0x59, 0x90, 0x62, 0x7D, 0xCF, 0x1D, 0xDD, 0x49, 0x43, - 0x33, 0x96, 0xA9, 0xF7, 0x76, 0x9F, 0xE4, 0x0D, 0x6E, 0x1C, - 0xEA, 0x18, 0x5B, 0xBD, 0x5C, 0x98, 0x90, 0x09, 0xCA, 0x59, - 0x9E, 0x23, 0x02, 0x81, 0xC0, 0x66, 0xFF, 0x99, 0x2A, 0xFF, - 0xF8, 0x33, 0xAA, 0x44, 0x9A, 0x86, 0x2A, 0xBC, 0x4F, 0x3E, - 0xF9, 0x97, 0xCB, 0xC0, 0x45, 0xEB, 0xC0, 0xB4, 0x02, 0x0A, - 0x50, 0x50, 0x19, 0x89, 0xFF, 0xC9, 0xF5, 0x86, 0x89, 0xCE, - 0x3E, 0x2A, 0xE1, 0x20, 0x5D, 0x6E, 0x28, 0x51, 0x85, 0x4F, - 0x84, 0xAB, 0x87, 0x55, 0x74, 0xF8, 0x9A, 0x0B, 0x83, 0x2F, - 0x07, 0x8C, 0xC7, 0x14, 0x81, 0xCE, 0x12, 0x28, 0x9E, 0x30, - 0x9B, 0xBC, 0x99, 0xC5, 0xE4, 0xDD, 0x92, 0x99, 0xDD, 0x8E, - 0xC9, 0xA6, 0x0F, 0x44, 0x13, 0xD7, 0x0E, 0xC2, 0x66, 0xE7, - 0x29, 0x3D, 0x2E, 0x5D, 0x15, 0xB6, 0xA6, 0x05, 0xD7, 0xB7, - 0xE7, 0xD8, 0x96, 0x7C, 0x25, 0x52, 0xD8, 0x47, 0x53, 0xED, - 0xFF, 0xE6, 0x64, 0x08, 0xDD, 0x1D, 0xB5, 0x1F, 0xF1, 0x6F, - 0xB6, 0xC9, 0xD2, 0x43, 0xE3, 0x56, 0x9C, 0x04, 0xA6, 0xE0, - 0x2F, 0x0B, 0x32, 0x7C, 0x3A, 0x77, 0x0F, 0x04, 0xD2, 0x86, - 0x44, 0x52, 0x1F, 0xEF, 0xFE, 0xC3, 0x64, 0xC2, 0xAB, 0x48, - 0xE5, 0x67, 0x65, 0x32, 0x39, 0x57, 0x34, 0xFF, 0x22, 0x57, - 0x3B, 0xB7, 0x80, 0x48, 0xE3, 0x52, 0xF4, 0x85, 0x17, 0x1E, - 0x77, 0x1E, 0x36, 0xFE, 0x09, 0x36, 0x58, 0x91, 0x9E, 0x93, - 0x71, 0x02, 0x6D, 0xAE, 0xA3, 0x1B, 0xF7, 0xA9, 0x31, 0x5A, - 0x78, 0xAA, 0x13, 0x98, 0x8C, 0x37, 0x2D, 0x02, 0x81, 0xC1, - 0x00, 0xBE, 0x01, 0xD9, 0x3A, 0xC7, 0x81, 0xAC, 0xAA, 0x13, - 0x75, 0x8E, 0x1F, 0x8F, 0x41, 0xED, 0x13, 0x95, 0xE5, 0x31, - 0xF3, 0x6B, 0x86, 0x42, 0x00, 0xBF, 0xAA, 0xC6, 0x5D, 0x1E, - 0xA6, 0x90, 0x0C, 0xF1, 0x1B, 0xE8, 0x39, 0xFB, 0xA8, 0xAA, - 0x5E, 0xF9, 0x72, 0x74, 0xDC, 0x7F, 0xC3, 0x4C, 0x81, 0xB3, - 0xB4, 0x4D, 0x7B, 0xC6, 0x2F, 0xF2, 0x37, 0xC7, 0x03, 0xB8, - 0xE9, 0x62, 0xAD, 0x38, 0xC2, 0xB3, 0xA4, 0x82, 0x11, 0x6B, - 0xC2, 0x33, 0x98, 0xEF, 0x32, 0x75, 0xEA, 0xFD, 0x32, 0x7A, - 0xDF, 0x59, 0xA5, 0x65, 0xA4, 0x42, 0x95, 0x11, 0xFF, 0xD6, - 0x84, 0xCF, 0x56, 0x2E, 0xCA, 0x46, 0x13, 0x01, 0x4A, 0x32, - 0xB1, 0xD9, 0xA3, 0xDB, 0x0D, 0x20, 0x7E, 0x1F, 0x68, 0xF7, - 0x5E, 0x60, 0x6E, 0x0F, 0x59, 0xF8, 0x59, 0x93, 0x4D, 0x54, - 0xBC, 0x37, 0xD0, 0x51, 0x7C, 0xBD, 0x67, 0xF0, 0xA5, 0x09, - 0xC9, 0x9A, 0xF4, 0x1F, 0x1E, 0x52, 0x9D, 0xF5, 0xA6, 0x25, - 0xBF, 0x85, 0x1D, 0xA1, 0xF1, 0xD8, 0xBD, 0x39, 0x10, 0x71, - 0x57, 0x19, 0x40, 0xF3, 0xA1, 0x77, 0xE0, 0x8B, 0x4E, 0xB3, - 0x91, 0x84, 0x15, 0x0C, 0xF1, 0x58, 0x52, 0xD9, 0xE5, 0x98, - 0xD5, 0x66, 0x95, 0x9C, 0x19, 0x8D, 0xA4, 0x63, 0x5C, 0xBF, - 0xC5, 0x33, 0x81, 0xED, 0x7E, 0x93, 0x4B, 0x9A, 0x6C, 0xEC, - 0x2E, 0x3E, 0x4F, 0x02, 0x81, 0xC0, 0x34, 0xF8, 0xDF, 0x74, - 0xC6, 0xC1, 0xD9, 0x03, 0x9B, 0x3B, 0x53, 0x19, 0xEB, 0x43, - 0xC4, 0xAA, 0x1E, 0x73, 0xE3, 0x13, 0x25, 0x32, 0x04, 0x22, - 0x79, 0x4A, 0x07, 0xF0, 0x06, 0x38, 0xBD, 0x57, 0xE6, 0x01, - 0x33, 0x8C, 0xF1, 0x02, 0xCC, 0x34, 0x2C, 0x60, 0x32, 0xA4, - 0x22, 0x1D, 0x0E, 0x39, 0x6B, 0xAB, 0xF7, 0xCE, 0xDB, 0xA7, - 0xC3, 0xD8, 0xA2, 0x3B, 0x70, 0x31, 0x91, 0x68, 0xB9, 0xBF, - 0xE0, 0xA1, 0x39, 0x80, 0xFE, 0x47, 0x99, 0x56, 0x6D, 0x76, - 0x90, 0x17, 0xF5, 0x67, 0x41, 0x44, 0x27, 0x10, 0x07, 0x98, - 0x4D, 0x4C, 0x53, 0xD4, 0x15, 0xDC, 0x0A, 0x2F, 0xE0, 0x83, - 0x28, 0x22, 0x8D, 0x61, 0x3B, 0xE4, 0x8E, 0xE5, 0xE7, 0x24, - 0x98, 0x19, 0xA8, 0xA3, 0xED, 0x70, 0x59, 0x06, 0x86, 0x76, - 0xC2, 0x4B, 0xCB, 0x17, 0xC5, 0x77, 0x12, 0x07, 0xB8, 0xAB, - 0x1A, 0x91, 0xFC, 0x72, 0x8E, 0xB7, 0xB1, 0xE6, 0x74, 0xDD, - 0x3D, 0x92, 0xA7, 0xDE, 0x6C, 0x6E, 0xCB, 0x50, 0x44, 0x2F, - 0xAC, 0x99, 0xF7, 0x36, 0x4D, 0x62, 0xC7, 0xAC, 0xCE, 0x7D, - 0x26, 0xC9, 0xD2, 0x4E, 0x49, 0xD7, 0x8E, 0x66, 0x6C, 0xC1, - 0x53, 0xDF, 0x31, 0xAB, 0x25, 0x35, 0xCA, 0xD6, 0xC4, 0xA3, - 0xA6, 0x9F, 0x7E, 0x3D, 0x2D, 0x1A, 0x44, 0x31, 0x3D, 0x81, - 0x91, 0xB8, 0x36, 0x08, 0x27, 0x42, 0x9E, 0x08 -}; -static const int sizeof_rsa_key_der_3072 = sizeof(rsa_key_der_3072); - -/* ./certs/3072/client-key.der, 3072-bit */ -static const unsigned char client_key_der_3072[] = -{ - 0x30, 0x82, 0x06, 0xE4, 0x02, 0x01, 0x00, 0x02, 0x82, 0x01, - 0x81, 0x00, 0xAC, 0x39, 0x50, 0x68, 0x8F, 0x78, 0xF8, 0x10, - 0x9B, 0x68, 0x96, 0xD3, 0xE1, 0x9C, 0x56, 0x68, 0x5A, 0x41, - 0x62, 0xE3, 0xB3, 0x41, 0xB0, 0x55, 0x80, 0x17, 0xB0, 0x88, - 0x16, 0x9B, 0xE0, 0x97, 0x74, 0x5F, 0x42, 0x79, 0x73, 0x42, - 0xDF, 0x93, 0xF3, 0xAA, 0x9D, 0xEE, 0x2D, 0x6F, 0xAA, 0xBC, - 0x27, 0x90, 0x84, 0xC0, 0x5D, 0xC7, 0xEC, 0x49, 0xEA, 0x5C, - 0x66, 0x1D, 0x70, 0x9C, 0x53, 0x5C, 0xBA, 0xA1, 0xB3, 0x58, - 0xC9, 0x3E, 0x8E, 0x9B, 0x72, 0x3D, 0x6E, 0x02, 0x02, 0x00, - 0x9C, 0x65, 0x56, 0x82, 0xA3, 0x22, 0xB4, 0x08, 0x5F, 0x2A, - 0xEF, 0xDF, 0x9A, 0xD0, 0xE7, 0x31, 0x59, 0x26, 0x5B, 0x0B, - 0x1C, 0x63, 0x61, 0xFF, 0xD5, 0x69, 0x32, 0x19, 0x06, 0x7E, - 0x0F, 0x40, 0x3C, 0x7A, 0x1E, 0xC8, 0xFC, 0x58, 0x6C, 0x64, - 0xAE, 0x10, 0x3D, 0xA8, 0x23, 0xFF, 0x8E, 0x1A, 0xCA, 0x6A, - 0x82, 0xE2, 0xF9, 0x01, 0x64, 0x2C, 0x97, 0xA0, 0x1A, 0x89, - 0xA0, 0x74, 0xD3, 0xB6, 0x05, 0x11, 0xF2, 0x62, 0x06, 0x48, - 0x2A, 0xF7, 0x66, 0xCE, 0xC1, 0x85, 0xE1, 0xD2, 0x27, 0xEA, - 0xCA, 0x12, 0xA5, 0x91, 0x97, 0x3E, 0xFC, 0x94, 0x06, 0x59, - 0x51, 0xC0, 0xE7, 0x13, 0xB6, 0x87, 0x7B, 0x5F, 0xD2, 0xC0, - 0x56, 0x2F, 0x5E, 0x1D, 0x02, 0xC3, 0x11, 0x2C, 0xDF, 0xF7, - 0x01, 0xDA, 0xBD, 0x85, 0x54, 0x35, 0x32, 0x5F, 0xC5, 0xC8, - 0xF9, 0x7A, 0x9F, 0x89, 0xF7, 0x03, 0x0E, 0x7E, 0x79, 0x5D, - 0x04, 0x82, 0x35, 0x10, 0xFE, 0x6D, 0x9B, 0xBF, 0xB8, 0xEE, - 0xE2, 0x62, 0x87, 0x26, 0x5E, 0x2F, 0x50, 0x2F, 0x78, 0x0C, - 0xE8, 0x73, 0x4F, 0x88, 0x6A, 0xD6, 0x26, 0xA4, 0xC9, 0xFC, - 0xFA, 0x1E, 0x8A, 0xB0, 0xF4, 0x32, 0xCF, 0x57, 0xCD, 0xA1, - 0x58, 0x8A, 0x49, 0x0F, 0xBB, 0xA9, 0x1D, 0x86, 0xAB, 0xB9, - 0x8F, 0x8D, 0x57, 0x19, 0xB2, 0x5A, 0x7E, 0xA4, 0xEA, 0xCC, - 0xB7, 0x96, 0x7A, 0x3B, 0x38, 0xCD, 0xDE, 0xE0, 0x61, 0xFC, - 0xC9, 0x06, 0x8F, 0x93, 0x5A, 0xCE, 0xAD, 0x2A, 0xE3, 0x2D, - 0x3E, 0x39, 0x5D, 0x41, 0x83, 0x01, 0x1F, 0x0F, 0xE1, 0x7F, - 0x76, 0xC7, 0x28, 0xDA, 0x56, 0xEF, 0xBF, 0xDC, 0x26, 0x35, - 0x40, 0xBE, 0xAD, 0xC7, 0x38, 0xAD, 0xA4, 0x06, 0xAC, 0xCA, - 0xE8, 0x51, 0xEB, 0xC0, 0xF8, 0x68, 0x02, 0x2C, 0x9B, 0xA1, - 0x14, 0xBC, 0xF8, 0x61, 0x86, 0xD7, 0x56, 0xD7, 0x73, 0xF4, - 0xAB, 0xBB, 0x6A, 0x21, 0xD3, 0x88, 0x22, 0xB4, 0xE7, 0x6F, - 0x7F, 0x91, 0xE5, 0x0E, 0xC6, 0x08, 0x49, 0xDE, 0xEA, 0x13, - 0x58, 0x72, 0xA0, 0xAA, 0x3A, 0xF9, 0x36, 0x03, 0x45, 0x57, - 0x5E, 0x87, 0xD2, 0x73, 0x65, 0xC4, 0x8C, 0xA3, 0xEE, 0xC9, - 0xD6, 0x73, 0x7C, 0x96, 0x41, 0x93, 0x02, 0x03, 0x01, 0x00, - 0x01, 0x02, 0x82, 0x01, 0x80, 0x40, 0x19, 0x74, 0xDB, 0xF5, - 0xCA, 0x48, 0x49, 0xA6, 0x0D, 0xDF, 0x55, 0x2C, 0xFB, 0x4B, - 0x0D, 0xBB, 0xC9, 0xEA, 0x4C, 0x65, 0x43, 0x65, 0xA5, 0xEC, - 0xEE, 0xE4, 0x3D, 0x42, 0x6C, 0xF1, 0xC2, 0x6D, 0x05, 0xA7, - 0x70, 0x1C, 0x7E, 0x1F, 0x48, 0xA9, 0xC0, 0x2E, 0xD7, 0x9F, - 0x01, 0x98, 0xC2, 0x3E, 0xD7, 0x83, 0x11, 0x35, 0xD6, 0x5B, - 0x13, 0x87, 0xAE, 0xAC, 0x32, 0xF8, 0xDE, 0xB6, 0x08, 0x25, - 0x4E, 0x59, 0xBA, 0x09, 0xEC, 0xC6, 0x97, 0x04, 0x85, 0xE8, - 0x93, 0xC6, 0xBB, 0x03, 0x7A, 0x94, 0x20, 0x3B, 0x27, 0x87, - 0x6A, 0x36, 0x41, 0x7C, 0xD5, 0xF4, 0x81, 0x1C, 0x0B, 0x39, - 0xEB, 0x14, 0xA7, 0xA6, 0x01, 0x37, 0x50, 0x48, 0xD5, 0xC6, - 0x57, 0x9A, 0x1B, 0x01, 0x02, 0x1F, 0x80, 0x34, 0x45, 0x09, - 0xE6, 0xBF, 0x31, 0x19, 0xB7, 0xE1, 0xBA, 0xDA, 0xEB, 0x1A, - 0xB0, 0xCD, 0xF5, 0xA6, 0x91, 0x63, 0xAC, 0x28, 0xE4, 0x8F, - 0xEA, 0x7E, 0xF6, 0x0A, 0x4A, 0x71, 0x21, 0xA5, 0xF1, 0x70, - 0x0D, 0x1B, 0xD9, 0x70, 0x64, 0x74, 0x57, 0x2F, 0x9F, 0xEC, - 0xD4, 0x93, 0x16, 0xC7, 0xEE, 0xF8, 0xC0, 0x9F, 0x52, 0x4A, - 0x1F, 0xAD, 0xDD, 0x40, 0x98, 0x53, 0x68, 0xFA, 0xDE, 0xA2, - 0x04, 0xA0, 0x24, 0x05, 0xEF, 0xCB, 0x4F, 0x70, 0xDF, 0xB9, - 0x5C, 0xC2, 0x5E, 0xE4, 0xC9, 0xCD, 0x0F, 0x5E, 0x4B, 0x77, - 0xBB, 0x84, 0x69, 0x54, 0x98, 0x41, 0xB7, 0x9C, 0x0E, 0x38, - 0xD8, 0xF7, 0xF3, 0x9F, 0xEF, 0xE5, 0x9B, 0xB6, 0x4B, 0xD6, - 0x7A, 0x65, 0xF5, 0x69, 0xFA, 0xC2, 0x13, 0x70, 0x6C, 0x28, - 0xA4, 0x29, 0xAC, 0xD9, 0xBF, 0xEC, 0x6A, 0x2E, 0xED, 0xE4, - 0xBA, 0xDF, 0xD0, 0xF1, 0xF3, 0x3C, 0x6C, 0x84, 0xDF, 0xB7, - 0x5A, 0x94, 0xCF, 0xD9, 0x2D, 0xEA, 0xEA, 0xB4, 0xD0, 0x91, - 0x2E, 0x77, 0x15, 0x18, 0x0D, 0x6B, 0xBA, 0x2A, 0x0C, 0xF1, - 0x92, 0x9D, 0xD6, 0x04, 0x05, 0xB6, 0x38, 0xC2, 0xE0, 0xA7, - 0x2D, 0x64, 0xF8, 0xDF, 0x0C, 0x3A, 0x93, 0x83, 0xE1, 0x88, - 0x83, 0x5F, 0x67, 0x90, 0x9F, 0x2B, 0xE0, 0x60, 0x8E, 0xCA, - 0x30, 0x13, 0xCA, 0x9F, 0xCF, 0x7B, 0x6D, 0xD8, 0xCD, 0xEE, - 0xF9, 0x96, 0xDD, 0x5E, 0xF4, 0x47, 0xC9, 0x4C, 0xE6, 0x8F, - 0x7F, 0x33, 0x2A, 0x38, 0x30, 0xAF, 0xD5, 0x4A, 0x79, 0x47, - 0x06, 0xCC, 0x96, 0x44, 0x29, 0x8C, 0x60, 0x2B, 0x08, 0xC7, - 0xD0, 0xD3, 0xC3, 0xC5, 0x2C, 0x63, 0x6C, 0x87, 0xD2, 0xAE, - 0x2A, 0xA4, 0x86, 0xE7, 0x76, 0x74, 0x90, 0xD1, 0x04, 0x37, - 0x64, 0x1A, 0xED, 0x08, 0xD9, 0x98, 0x07, 0x1A, 0x98, 0x0B, - 0x89, 0x99, 0xA4, 0xB0, 0x8C, 0x1A, 0x10, 0xEB, 0xEC, 0xF4, - 0xEE, 0x3C, 0xC4, 0x00, 0xCC, 0x30, 0x9C, 0x43, 0x01, 0x02, - 0x81, 0xC1, 0x00, 0xD9, 0x43, 0xF6, 0x2C, 0x78, 0x26, 0xD2, - 0xE7, 0x15, 0xA7, 0x0A, 0x88, 0x5E, 0xDB, 0x2D, 0xAF, 0xC6, - 0xA9, 0x6F, 0x73, 0x88, 0x3B, 0x6A, 0x08, 0x1F, 0xF5, 0x80, - 0xB5, 0x2E, 0x29, 0x8B, 0x72, 0xF8, 0x35, 0xC8, 0x23, 0x18, - 0x1C, 0x0D, 0x0E, 0x38, 0x82, 0xBB, 0x5B, 0x2F, 0xB4, 0x5C, - 0x4E, 0x24, 0x05, 0xA7, 0x4C, 0x79, 0x48, 0x89, 0x8D, 0x1C, - 0x1D, 0x0A, 0x2C, 0xFE, 0xD9, 0x99, 0xDF, 0x25, 0x8A, 0x2D, - 0xF8, 0xEB, 0x2F, 0xDA, 0x1B, 0x63, 0xE1, 0xCD, 0x09, 0x97, - 0x64, 0x14, 0xAB, 0xEA, 0x0B, 0xD8, 0xE2, 0xA8, 0x2A, 0x63, - 0x35, 0x90, 0xEE, 0x7F, 0xEA, 0xCE, 0xA5, 0xEF, 0x7F, 0xAB, - 0x87, 0x47, 0x9B, 0x45, 0x35, 0x9A, 0xDA, 0x8C, 0xF4, 0xD3, - 0x8A, 0x0B, 0x9B, 0xE6, 0xEA, 0x92, 0xBB, 0x05, 0xE1, 0xAC, - 0x3E, 0x35, 0xDB, 0xED, 0x65, 0x1D, 0xB6, 0x92, 0xEB, 0x29, - 0x79, 0xF8, 0x3F, 0xC2, 0x58, 0x40, 0x32, 0x66, 0x87, 0x56, - 0x50, 0xFF, 0xBF, 0x3E, 0xBD, 0xE9, 0x94, 0xBF, 0x31, 0xBE, - 0x87, 0x2D, 0xEF, 0x64, 0x1E, 0x0E, 0x67, 0x3A, 0x9C, 0x94, - 0xDA, 0x5B, 0x0C, 0x8C, 0x3D, 0xEE, 0x9D, 0xCD, 0x92, 0xDE, - 0x40, 0x02, 0x65, 0x36, 0xC9, 0x1B, 0xF5, 0x7E, 0x4E, 0x07, - 0xB4, 0x7F, 0x14, 0x0E, 0x03, 0x2E, 0x86, 0xF0, 0x45, 0x5F, - 0xDC, 0xA2, 0xE8, 0xC7, 0x83, 0x02, 0x81, 0xC1, 0x00, 0xCA, - 0xED, 0xA5, 0x3F, 0x59, 0xAC, 0x4C, 0xAD, 0xAB, 0x23, 0x02, - 0x95, 0x80, 0xA0, 0xAF, 0x35, 0x17, 0xDB, 0xE7, 0x7F, 0x72, - 0x41, 0x2C, 0x5C, 0xB4, 0x43, 0x85, 0x46, 0x73, 0x9F, 0x58, - 0xE9, 0x40, 0x8B, 0xEC, 0xB0, 0xEF, 0x86, 0x4C, 0x31, 0xDE, - 0xC8, 0x6C, 0x74, 0x75, 0xA2, 0xDB, 0x65, 0xF4, 0x50, 0xC6, - 0x99, 0xA2, 0x70, 0xDE, 0xB6, 0x22, 0xC2, 0x01, 0x15, 0x49, - 0x13, 0xA0, 0xE2, 0x20, 0x78, 0x44, 0xEC, 0x1F, 0x42, 0xB3, - 0x25, 0x09, 0xCE, 0x75, 0x13, 0x75, 0x36, 0x11, 0x47, 0x2C, - 0x3C, 0x15, 0x1F, 0xF0, 0x54, 0xD5, 0x18, 0xAE, 0x61, 0x07, - 0xAC, 0x3D, 0x83, 0x46, 0x03, 0x8C, 0xBF, 0x63, 0x26, 0xA8, - 0x19, 0x7C, 0xFF, 0xDE, 0x20, 0x78, 0xD0, 0xDA, 0x70, 0x2E, - 0xBD, 0xFA, 0x96, 0xDD, 0x15, 0x78, 0x9B, 0xEF, 0xED, 0x17, - 0x90, 0x6F, 0x14, 0x35, 0x50, 0x8E, 0x1D, 0x78, 0xB0, 0x8A, - 0xA0, 0x53, 0x10, 0x15, 0x64, 0xCC, 0x47, 0x05, 0xB6, 0xC6, - 0x48, 0xC0, 0x5D, 0xB4, 0x4B, 0x1A, 0x5F, 0xB8, 0x9E, 0x75, - 0xCD, 0xC3, 0x64, 0x66, 0x88, 0x10, 0x9C, 0x8B, 0x87, 0x14, - 0x34, 0xE6, 0x60, 0x3C, 0xA5, 0xB7, 0x81, 0x1D, 0x0B, 0x79, - 0x93, 0x5D, 0x4A, 0x42, 0x7A, 0x7F, 0x33, 0xF0, 0x3E, 0x9E, - 0x63, 0xBD, 0xB6, 0x5F, 0xF9, 0x47, 0xA7, 0x0A, 0x49, 0x70, - 0xB1, 0x02, 0x81, 0xC0, 0x6F, 0xC6, 0xF4, 0x3E, 0xDA, 0xAD, - 0xF6, 0xB1, 0x66, 0xC5, 0x62, 0xB8, 0xD8, 0x3C, 0x61, 0x1B, - 0xDE, 0xD4, 0x4A, 0xFF, 0xA0, 0x66, 0x18, 0xDE, 0x07, 0x3B, - 0x32, 0x35, 0x84, 0x83, 0x61, 0x38, 0x0C, 0x14, 0xF7, 0x5B, - 0x7E, 0xCA, 0xE7, 0xB8, 0x9A, 0x40, 0x40, 0x0D, 0xE0, 0xD4, - 0x24, 0xED, 0x1A, 0xC1, 0x41, 0xDA, 0x29, 0x47, 0xB5, 0x64, - 0xC0, 0xC2, 0xFB, 0xFA, 0x3C, 0x3F, 0x4D, 0x57, 0xAD, 0xA3, - 0x92, 0x95, 0x4E, 0xC2, 0x76, 0xAE, 0xC2, 0xCB, 0x67, 0xC6, - 0x78, 0x79, 0xC7, 0xDC, 0xCE, 0x73, 0xBB, 0xE8, 0x98, 0x65, - 0xFE, 0x56, 0x8F, 0xB2, 0xF4, 0x62, 0xA4, 0x60, 0x60, 0x80, - 0x49, 0x8A, 0x36, 0xBF, 0xDE, 0x72, 0x7E, 0xB1, 0xD3, 0xF5, - 0x1D, 0x64, 0x17, 0x26, 0xE5, 0x3D, 0x67, 0xB2, 0x0A, 0x8B, - 0x99, 0x27, 0x04, 0x64, 0x9A, 0x94, 0xFC, 0x1D, 0x73, 0x26, - 0xC3, 0x56, 0xF9, 0xEE, 0x2B, 0x99, 0x65, 0xA5, 0xC8, 0x73, - 0xF6, 0x67, 0x83, 0xBC, 0x2B, 0x96, 0x5F, 0x36, 0xE4, 0xCA, - 0xBD, 0xE0, 0x24, 0x34, 0xD6, 0x48, 0x54, 0x56, 0xAD, 0xA3, - 0xE3, 0x3D, 0x17, 0xBC, 0xB3, 0xE6, 0x24, 0xFE, 0x50, 0xC6, - 0x2F, 0xCB, 0xB4, 0xAF, 0xC7, 0xE8, 0xDD, 0x96, 0x86, 0x9D, - 0xB4, 0x7F, 0x1B, 0x26, 0x01, 0x33, 0x87, 0xDB, 0x6A, 0x7F, - 0xF6, 0x9A, 0xB7, 0xC1, 0x94, 0xEB, 0x02, 0x81, 0xC1, 0x00, - 0xB0, 0x6D, 0x20, 0x68, 0x0D, 0x7C, 0x81, 0x45, 0xD4, 0x2E, - 0x22, 0x06, 0xFC, 0xC7, 0xB6, 0xCC, 0x40, 0x2C, 0x0D, 0xFE, - 0x7D, 0xC5, 0x2F, 0xDE, 0x81, 0x52, 0xDA, 0xC2, 0x3F, 0xAF, - 0xE0, 0x4B, 0x1A, 0xB5, 0x0C, 0x59, 0x60, 0x45, 0xB0, 0x65, - 0x03, 0x3D, 0xD9, 0x1C, 0xFF, 0x51, 0x51, 0xD2, 0x38, 0x31, - 0x2A, 0x19, 0x54, 0x63, 0x31, 0x1D, 0xC4, 0xE6, 0x4A, 0xAE, - 0xC8, 0xD3, 0xE9, 0xE1, 0xEF, 0x3C, 0xE1, 0x1F, 0x30, 0xA6, - 0x7A, 0xBD, 0xCE, 0xE2, 0xD2, 0x62, 0xD2, 0x5A, 0xE9, 0x76, - 0xA9, 0x7C, 0xAB, 0x19, 0x13, 0x87, 0x8D, 0xA5, 0x61, 0xA6, - 0x36, 0x57, 0x87, 0x3B, 0x64, 0x59, 0x9D, 0xBA, 0x9F, 0x67, - 0x72, 0x6A, 0x86, 0x84, 0xA6, 0x08, 0x31, 0x41, 0xD3, 0x48, - 0x09, 0x3B, 0x5E, 0x6C, 0x5F, 0x56, 0x55, 0x7F, 0xAD, 0x7E, - 0xC2, 0x27, 0xEE, 0x8A, 0xF1, 0x37, 0x51, 0xF7, 0x49, 0x80, - 0xA3, 0x65, 0x74, 0x11, 0xDD, 0xA7, 0xBE, 0xFA, 0x58, 0x7B, - 0x69, 0xB4, 0xC2, 0x9A, 0x35, 0x2F, 0xBE, 0x84, 0x4E, 0x2C, - 0x66, 0x5B, 0x38, 0x6F, 0x47, 0xBD, 0x30, 0x44, 0x0A, 0x02, - 0xAC, 0x8C, 0xB9, 0x66, 0x1E, 0x14, 0x2D, 0x90, 0x71, 0x42, - 0x12, 0xB7, 0x0E, 0x3A, 0x8B, 0xC5, 0x98, 0x65, 0xFD, 0x8F, - 0x53, 0x81, 0x7F, 0xE4, 0xD9, 0x58, 0x0E, 0xF5, 0xA9, 0x39, - 0xE4, 0x61, 0x02, 0x81, 0xC1, 0x00, 0xB3, 0x94, 0x8F, 0x2B, - 0xFD, 0x84, 0x2E, 0x83, 0x42, 0x86, 0x56, 0x7E, 0xB5, 0xF8, - 0x3C, 0xC5, 0x0C, 0xCB, 0xBD, 0x32, 0x0C, 0xD7, 0xAA, 0xA7, - 0xB0, 0xE9, 0xA4, 0x6A, 0xD1, 0x01, 0xDB, 0x87, 0x2A, 0xF7, - 0xDF, 0xEC, 0xC2, 0x03, 0x5D, 0x55, 0xA8, 0x66, 0x73, 0x79, - 0xA9, 0xAB, 0xBD, 0xAF, 0x69, 0x37, 0xFE, 0x41, 0xB5, 0x53, - 0xB3, 0xB2, 0xC0, 0xB1, 0x80, 0x34, 0xE6, 0xE1, 0x7B, 0xAE, - 0x67, 0xC7, 0xF3, 0x57, 0xFE, 0x12, 0xBC, 0x78, 0xAA, 0x75, - 0x0D, 0xAC, 0x79, 0x90, 0x14, 0x49, 0xFE, 0x6B, 0x51, 0xE3, - 0xE4, 0x46, 0xB2, 0x10, 0x4D, 0x05, 0x6A, 0x12, 0x80, 0x2A, - 0x8F, 0x39, 0x42, 0x0E, 0x3B, 0x24, 0x2B, 0x50, 0x5D, 0xF3, - 0xA7, 0x7F, 0x2F, 0x82, 0x89, 0x87, 0x9F, 0xF8, 0x7B, 0x1E, - 0x05, 0x6E, 0x75, 0x83, 0x04, 0x35, 0x66, 0x4A, 0x06, 0x57, - 0x39, 0xAB, 0x21, 0x0B, 0x94, 0x41, 0x6A, 0x2A, 0xC7, 0xDE, - 0x98, 0x45, 0x8F, 0x96, 0x1C, 0xF2, 0xD8, 0xFB, 0x9C, 0x10, - 0x8E, 0x41, 0x7A, 0xDD, 0xDD, 0x1D, 0xEF, 0xA5, 0x67, 0xEC, - 0xFE, 0xA3, 0x2D, 0xA9, 0xFD, 0xF3, 0xEE, 0x35, 0xF4, 0xA7, - 0xBC, 0xF9, 0x71, 0xCC, 0xB9, 0xC0, 0x5F, 0x58, 0x5B, 0xBD, - 0x1A, 0x9E, 0xC7, 0x08, 0x67, 0x7C, 0xC7, 0x51, 0x5B, 0xBE, - 0xE3, 0xF8, 0xBE, 0x1E, 0xC7, 0xD2, 0x28, 0x97 -}; -static const int sizeof_client_key_der_3072 = sizeof(client_key_der_3072); - -/* ./certs/3072/client-keyPub.der, 3072-bit */ -static const unsigned char client_keypub_der_3072[] = -{ - 0x30, 0x82, 0x01, 0xA2, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, - 0x82, 0x01, 0x8F, 0x00, 0x30, 0x82, 0x01, 0x8A, 0x02, 0x82, - 0x01, 0x81, 0x00, 0xAC, 0x39, 0x50, 0x68, 0x8F, 0x78, 0xF8, - 0x10, 0x9B, 0x68, 0x96, 0xD3, 0xE1, 0x9C, 0x56, 0x68, 0x5A, - 0x41, 0x62, 0xE3, 0xB3, 0x41, 0xB0, 0x55, 0x80, 0x17, 0xB0, - 0x88, 0x16, 0x9B, 0xE0, 0x97, 0x74, 0x5F, 0x42, 0x79, 0x73, - 0x42, 0xDF, 0x93, 0xF3, 0xAA, 0x9D, 0xEE, 0x2D, 0x6F, 0xAA, - 0xBC, 0x27, 0x90, 0x84, 0xC0, 0x5D, 0xC7, 0xEC, 0x49, 0xEA, - 0x5C, 0x66, 0x1D, 0x70, 0x9C, 0x53, 0x5C, 0xBA, 0xA1, 0xB3, - 0x58, 0xC9, 0x3E, 0x8E, 0x9B, 0x72, 0x3D, 0x6E, 0x02, 0x02, - 0x00, 0x9C, 0x65, 0x56, 0x82, 0xA3, 0x22, 0xB4, 0x08, 0x5F, - 0x2A, 0xEF, 0xDF, 0x9A, 0xD0, 0xE7, 0x31, 0x59, 0x26, 0x5B, - 0x0B, 0x1C, 0x63, 0x61, 0xFF, 0xD5, 0x69, 0x32, 0x19, 0x06, - 0x7E, 0x0F, 0x40, 0x3C, 0x7A, 0x1E, 0xC8, 0xFC, 0x58, 0x6C, - 0x64, 0xAE, 0x10, 0x3D, 0xA8, 0x23, 0xFF, 0x8E, 0x1A, 0xCA, - 0x6A, 0x82, 0xE2, 0xF9, 0x01, 0x64, 0x2C, 0x97, 0xA0, 0x1A, - 0x89, 0xA0, 0x74, 0xD3, 0xB6, 0x05, 0x11, 0xF2, 0x62, 0x06, - 0x48, 0x2A, 0xF7, 0x66, 0xCE, 0xC1, 0x85, 0xE1, 0xD2, 0x27, - 0xEA, 0xCA, 0x12, 0xA5, 0x91, 0x97, 0x3E, 0xFC, 0x94, 0x06, - 0x59, 0x51, 0xC0, 0xE7, 0x13, 0xB6, 0x87, 0x7B, 0x5F, 0xD2, - 0xC0, 0x56, 0x2F, 0x5E, 0x1D, 0x02, 0xC3, 0x11, 0x2C, 0xDF, - 0xF7, 0x01, 0xDA, 0xBD, 0x85, 0x54, 0x35, 0x32, 0x5F, 0xC5, - 0xC8, 0xF9, 0x7A, 0x9F, 0x89, 0xF7, 0x03, 0x0E, 0x7E, 0x79, - 0x5D, 0x04, 0x82, 0x35, 0x10, 0xFE, 0x6D, 0x9B, 0xBF, 0xB8, - 0xEE, 0xE2, 0x62, 0x87, 0x26, 0x5E, 0x2F, 0x50, 0x2F, 0x78, - 0x0C, 0xE8, 0x73, 0x4F, 0x88, 0x6A, 0xD6, 0x26, 0xA4, 0xC9, - 0xFC, 0xFA, 0x1E, 0x8A, 0xB0, 0xF4, 0x32, 0xCF, 0x57, 0xCD, - 0xA1, 0x58, 0x8A, 0x49, 0x0F, 0xBB, 0xA9, 0x1D, 0x86, 0xAB, - 0xB9, 0x8F, 0x8D, 0x57, 0x19, 0xB2, 0x5A, 0x7E, 0xA4, 0xEA, - 0xCC, 0xB7, 0x96, 0x7A, 0x3B, 0x38, 0xCD, 0xDE, 0xE0, 0x61, - 0xFC, 0xC9, 0x06, 0x8F, 0x93, 0x5A, 0xCE, 0xAD, 0x2A, 0xE3, - 0x2D, 0x3E, 0x39, 0x5D, 0x41, 0x83, 0x01, 0x1F, 0x0F, 0xE1, - 0x7F, 0x76, 0xC7, 0x28, 0xDA, 0x56, 0xEF, 0xBF, 0xDC, 0x26, - 0x35, 0x40, 0xBE, 0xAD, 0xC7, 0x38, 0xAD, 0xA4, 0x06, 0xAC, - 0xCA, 0xE8, 0x51, 0xEB, 0xC0, 0xF8, 0x68, 0x02, 0x2C, 0x9B, - 0xA1, 0x14, 0xBC, 0xF8, 0x61, 0x86, 0xD7, 0x56, 0xD7, 0x73, - 0xF4, 0xAB, 0xBB, 0x6A, 0x21, 0xD3, 0x88, 0x22, 0xB4, 0xE7, - 0x6F, 0x7F, 0x91, 0xE5, 0x0E, 0xC6, 0x08, 0x49, 0xDE, 0xEA, - 0x13, 0x58, 0x72, 0xA0, 0xAA, 0x3A, 0xF9, 0x36, 0x03, 0x45, - 0x57, 0x5E, 0x87, 0xD2, 0x73, 0x65, 0xC4, 0x8C, 0xA3, 0xEE, - 0xC9, 0xD6, 0x73, 0x7C, 0x96, 0x41, 0x93, 0x02, 0x03, 0x01, - 0x00, 0x01 -}; -static const int sizeof_client_keypub_der_3072 = sizeof(client_keypub_der_3072); - -/* ./certs/3072/client-cert.der, 3072-bit */ -static const unsigned char client_cert_der_3072[] = -{ - 0x30, 0x82, 0x05, 0xF8, 0x30, 0x82, 0x04, 0x60, 0xA0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x14, 0x2F, 0x06, 0x07, 0xA8, 0xB6, - 0xF4, 0xEE, 0x10, 0x91, 0x43, 0xDE, 0xE1, 0x46, 0x99, 0xC4, - 0x90, 0x79, 0xE6, 0xF1, 0xD1, 0x30, 0x0D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, - 0x30, 0x81, 0x9E, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, - 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, - 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, - 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, - 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, - 0x61, 0x6E, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, - 0x0A, 0x0C, 0x0C, 0x77, 0x6F, 0x6C, 0x66, 0x53, 0x53, 0x4C, - 0x5F, 0x33, 0x30, 0x37, 0x32, 0x31, 0x19, 0x30, 0x17, 0x06, - 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x10, 0x50, 0x72, 0x6F, 0x67, - 0x72, 0x61, 0x6D, 0x6D, 0x69, 0x6E, 0x67, 0x2D, 0x33, 0x30, - 0x37, 0x32, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, - 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, - 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, - 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, - 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, - 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, - 0x6D, 0x30, 0x1E, 0x17, 0x0D, 0x32, 0x30, 0x30, 0x31, 0x32, - 0x32, 0x30, 0x35, 0x35, 0x31, 0x34, 0x38, 0x5A, 0x17, 0x0D, - 0x32, 0x32, 0x31, 0x30, 0x31, 0x38, 0x30, 0x35, 0x35, 0x31, - 0x34, 0x38, 0x5A, 0x30, 0x81, 0x9E, 0x31, 0x0B, 0x30, 0x09, - 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, - 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, - 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, - 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, - 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x15, 0x30, 0x13, 0x06, - 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x0C, 0x77, 0x6F, 0x6C, 0x66, - 0x53, 0x53, 0x4C, 0x5F, 0x33, 0x30, 0x37, 0x32, 0x31, 0x19, - 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x10, 0x50, - 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x69, 0x6E, 0x67, - 0x2D, 0x33, 0x30, 0x37, 0x32, 0x31, 0x18, 0x30, 0x16, 0x06, - 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, - 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, - 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, - 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, - 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, - 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x82, 0x01, 0xA2, 0x30, 0x0D, - 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, - 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x8F, 0x00, 0x30, 0x82, - 0x01, 0x8A, 0x02, 0x82, 0x01, 0x81, 0x00, 0xAC, 0x39, 0x50, - 0x68, 0x8F, 0x78, 0xF8, 0x10, 0x9B, 0x68, 0x96, 0xD3, 0xE1, - 0x9C, 0x56, 0x68, 0x5A, 0x41, 0x62, 0xE3, 0xB3, 0x41, 0xB0, - 0x55, 0x80, 0x17, 0xB0, 0x88, 0x16, 0x9B, 0xE0, 0x97, 0x74, - 0x5F, 0x42, 0x79, 0x73, 0x42, 0xDF, 0x93, 0xF3, 0xAA, 0x9D, - 0xEE, 0x2D, 0x6F, 0xAA, 0xBC, 0x27, 0x90, 0x84, 0xC0, 0x5D, - 0xC7, 0xEC, 0x49, 0xEA, 0x5C, 0x66, 0x1D, 0x70, 0x9C, 0x53, - 0x5C, 0xBA, 0xA1, 0xB3, 0x58, 0xC9, 0x3E, 0x8E, 0x9B, 0x72, - 0x3D, 0x6E, 0x02, 0x02, 0x00, 0x9C, 0x65, 0x56, 0x82, 0xA3, - 0x22, 0xB4, 0x08, 0x5F, 0x2A, 0xEF, 0xDF, 0x9A, 0xD0, 0xE7, - 0x31, 0x59, 0x26, 0x5B, 0x0B, 0x1C, 0x63, 0x61, 0xFF, 0xD5, - 0x69, 0x32, 0x19, 0x06, 0x7E, 0x0F, 0x40, 0x3C, 0x7A, 0x1E, - 0xC8, 0xFC, 0x58, 0x6C, 0x64, 0xAE, 0x10, 0x3D, 0xA8, 0x23, - 0xFF, 0x8E, 0x1A, 0xCA, 0x6A, 0x82, 0xE2, 0xF9, 0x01, 0x64, - 0x2C, 0x97, 0xA0, 0x1A, 0x89, 0xA0, 0x74, 0xD3, 0xB6, 0x05, - 0x11, 0xF2, 0x62, 0x06, 0x48, 0x2A, 0xF7, 0x66, 0xCE, 0xC1, - 0x85, 0xE1, 0xD2, 0x27, 0xEA, 0xCA, 0x12, 0xA5, 0x91, 0x97, - 0x3E, 0xFC, 0x94, 0x06, 0x59, 0x51, 0xC0, 0xE7, 0x13, 0xB6, - 0x87, 0x7B, 0x5F, 0xD2, 0xC0, 0x56, 0x2F, 0x5E, 0x1D, 0x02, - 0xC3, 0x11, 0x2C, 0xDF, 0xF7, 0x01, 0xDA, 0xBD, 0x85, 0x54, - 0x35, 0x32, 0x5F, 0xC5, 0xC8, 0xF9, 0x7A, 0x9F, 0x89, 0xF7, - 0x03, 0x0E, 0x7E, 0x79, 0x5D, 0x04, 0x82, 0x35, 0x10, 0xFE, - 0x6D, 0x9B, 0xBF, 0xB8, 0xEE, 0xE2, 0x62, 0x87, 0x26, 0x5E, - 0x2F, 0x50, 0x2F, 0x78, 0x0C, 0xE8, 0x73, 0x4F, 0x88, 0x6A, - 0xD6, 0x26, 0xA4, 0xC9, 0xFC, 0xFA, 0x1E, 0x8A, 0xB0, 0xF4, - 0x32, 0xCF, 0x57, 0xCD, 0xA1, 0x58, 0x8A, 0x49, 0x0F, 0xBB, - 0xA9, 0x1D, 0x86, 0xAB, 0xB9, 0x8F, 0x8D, 0x57, 0x19, 0xB2, - 0x5A, 0x7E, 0xA4, 0xEA, 0xCC, 0xB7, 0x96, 0x7A, 0x3B, 0x38, - 0xCD, 0xDE, 0xE0, 0x61, 0xFC, 0xC9, 0x06, 0x8F, 0x93, 0x5A, - 0xCE, 0xAD, 0x2A, 0xE3, 0x2D, 0x3E, 0x39, 0x5D, 0x41, 0x83, - 0x01, 0x1F, 0x0F, 0xE1, 0x7F, 0x76, 0xC7, 0x28, 0xDA, 0x56, - 0xEF, 0xBF, 0xDC, 0x26, 0x35, 0x40, 0xBE, 0xAD, 0xC7, 0x38, - 0xAD, 0xA4, 0x06, 0xAC, 0xCA, 0xE8, 0x51, 0xEB, 0xC0, 0xF8, - 0x68, 0x02, 0x2C, 0x9B, 0xA1, 0x14, 0xBC, 0xF8, 0x61, 0x86, - 0xD7, 0x56, 0xD7, 0x73, 0xF4, 0xAB, 0xBB, 0x6A, 0x21, 0xD3, - 0x88, 0x22, 0xB4, 0xE7, 0x6F, 0x7F, 0x91, 0xE5, 0x0E, 0xC6, - 0x08, 0x49, 0xDE, 0xEA, 0x13, 0x58, 0x72, 0xA0, 0xAA, 0x3A, - 0xF9, 0x36, 0x03, 0x45, 0x57, 0x5E, 0x87, 0xD2, 0x73, 0x65, - 0xC4, 0x8C, 0xA3, 0xEE, 0xC9, 0xD6, 0x73, 0x7C, 0x96, 0x41, - 0x93, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, 0x2A, - 0x30, 0x82, 0x01, 0x26, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, - 0x0E, 0x04, 0x16, 0x04, 0x14, 0x3D, 0xD1, 0x84, 0xC2, 0xAF, - 0xB0, 0x20, 0x49, 0xBC, 0x74, 0x87, 0x41, 0x38, 0xAB, 0xBA, - 0xD2, 0xD4, 0x0C, 0xA3, 0xA8, 0x30, 0x81, 0xDE, 0x06, 0x03, - 0x55, 0x1D, 0x23, 0x04, 0x81, 0xD6, 0x30, 0x81, 0xD3, 0x80, - 0x14, 0x3D, 0xD1, 0x84, 0xC2, 0xAF, 0xB0, 0x20, 0x49, 0xBC, - 0x74, 0x87, 0x41, 0x38, 0xAB, 0xBA, 0xD2, 0xD4, 0x0C, 0xA3, - 0xA8, 0xA1, 0x81, 0xA4, 0xA4, 0x81, 0xA1, 0x30, 0x81, 0x9E, - 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, - 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, - 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, - 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, - 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, - 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x0C, - 0x77, 0x6F, 0x6C, 0x66, 0x53, 0x53, 0x4C, 0x5F, 0x33, 0x30, - 0x37, 0x32, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, - 0x0B, 0x0C, 0x10, 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, - 0x6D, 0x69, 0x6E, 0x67, 0x2D, 0x33, 0x30, 0x37, 0x32, 0x31, - 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, - 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, - 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, - 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, - 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, - 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x82, 0x14, - 0x2F, 0x06, 0x07, 0xA8, 0xB6, 0xF4, 0xEE, 0x10, 0x91, 0x43, - 0xDE, 0xE1, 0x46, 0x99, 0xC4, 0x90, 0x79, 0xE6, 0xF1, 0xD1, - 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x04, 0x05, 0x30, - 0x03, 0x01, 0x01, 0xFF, 0x30, 0x16, 0x06, 0x03, 0x55, 0x1D, - 0x11, 0x04, 0x0F, 0x30, 0x0D, 0x82, 0x0B, 0x65, 0x78, 0x61, - 0x6D, 0x70, 0x6C, 0x65, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x0D, - 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, - 0x0B, 0x05, 0x00, 0x03, 0x82, 0x01, 0x81, 0x00, 0x04, 0xF5, - 0xE0, 0xE5, 0x75, 0x6B, 0xCF, 0xEE, 0x19, 0xEF, 0x3C, 0xB5, - 0xB6, 0x78, 0xCE, 0xB2, 0xC3, 0xF2, 0x3E, 0x0D, 0x3F, 0xB7, - 0x6D, 0x59, 0x7D, 0xB6, 0x7E, 0x6A, 0x91, 0x0F, 0x85, 0xAC, - 0xCA, 0x56, 0x30, 0x3C, 0x3F, 0x5D, 0x30, 0x10, 0x7C, 0x5E, - 0x7F, 0x98, 0xB2, 0x9D, 0x95, 0x04, 0xE1, 0xEE, 0xC0, 0x9E, - 0x1B, 0x01, 0x39, 0xCB, 0x02, 0x05, 0xB9, 0x9B, 0x02, 0x88, - 0xEB, 0xD0, 0xAD, 0x06, 0xD5, 0x39, 0x2D, 0x24, 0xE6, 0xDC, - 0x4E, 0xCE, 0x8C, 0x36, 0x7D, 0xB6, 0x8E, 0x1D, 0xE8, 0xB7, - 0xEF, 0xFF, 0xB4, 0x17, 0xC1, 0xA5, 0xD8, 0xFA, 0x34, 0xDD, - 0x99, 0x3D, 0x30, 0x4B, 0x45, 0xA2, 0x14, 0x6A, 0x88, 0x93, - 0xCA, 0x25, 0xE2, 0x5C, 0xD5, 0xBA, 0xE8, 0x9D, 0xEF, 0xD7, - 0x68, 0x76, 0x05, 0x92, 0x48, 0x19, 0x92, 0x11, 0x79, 0xC2, - 0xFE, 0x11, 0x49, 0x4D, 0xD6, 0xD1, 0x8F, 0x32, 0x1C, 0x5F, - 0x3B, 0x41, 0x2C, 0x08, 0xB2, 0x72, 0x65, 0x1C, 0xE5, 0x86, - 0x02, 0x94, 0xB3, 0x9D, 0x30, 0xDA, 0x59, 0x42, 0xA1, 0xB0, - 0x1E, 0x00, 0x92, 0x93, 0x6E, 0x0D, 0x27, 0xCF, 0xDF, 0xD8, - 0xCF, 0x2B, 0xCD, 0xCB, 0x8C, 0xFF, 0xB5, 0x6F, 0x83, 0x92, - 0x27, 0x00, 0x58, 0x59, 0xA2, 0x0B, 0x91, 0xB0, 0x39, 0xCA, - 0xA8, 0x78, 0xFD, 0x83, 0x56, 0x4F, 0xA1, 0x6E, 0xC3, 0xE0, - 0x2B, 0xAE, 0xEF, 0x3C, 0x09, 0x04, 0xF0, 0x9B, 0x5B, 0x00, - 0xD3, 0xED, 0xB6, 0x06, 0xF6, 0x9C, 0xDA, 0xAF, 0x61, 0x68, - 0x8F, 0xE3, 0x2A, 0xC3, 0x85, 0x20, 0x66, 0x2C, 0xAC, 0xDD, - 0x65, 0x37, 0x36, 0xC2, 0x2F, 0xBA, 0xB8, 0x90, 0x66, 0x6E, - 0x9E, 0x58, 0xA2, 0x4B, 0xD6, 0xA7, 0x30, 0xC8, 0xC9, 0x6C, - 0xBD, 0x13, 0x40, 0xA0, 0xCA, 0x59, 0x7C, 0xC5, 0x86, 0x9C, - 0x55, 0xC5, 0x68, 0xC7, 0x0C, 0x7F, 0x94, 0x73, 0xA5, 0x4B, - 0xEB, 0xF1, 0x27, 0x96, 0xB5, 0xF9, 0x69, 0x6B, 0x2B, 0xB6, - 0x62, 0xD7, 0x3A, 0x0D, 0x40, 0x65, 0xF0, 0x0D, 0xDE, 0x91, - 0x77, 0xD4, 0xF6, 0xBB, 0x13, 0x7B, 0x4A, 0x55, 0x8F, 0x7E, - 0x49, 0x65, 0x89, 0x37, 0x46, 0x05, 0x2F, 0x90, 0x14, 0x73, - 0x0D, 0x2D, 0x1E, 0xA4, 0xD4, 0xBB, 0x4E, 0x6D, 0x29, 0xDA, - 0x79, 0x6E, 0x73, 0x08, 0xDE, 0x5F, 0x27, 0xDC, 0x23, 0x14, - 0xDB, 0x7B, 0xE7, 0x02, 0x13, 0x2E, 0xC7, 0x94, 0x19, 0xF3, - 0x7D, 0x2E, 0xC4, 0x8A, 0x69, 0xBA, 0xF5, 0xBA, 0x62, 0xC2, - 0x88, 0xB5, 0xCB, 0xC7, 0x92, 0xA2, 0x8A, 0xE3, 0x69, 0x10, - 0x6E, 0xC5, 0xB8, 0xB2, 0x10, 0x7E, 0xB6, 0x0C, 0x71, 0x2A, - 0xC3, 0xE9, 0x71, 0x0C, 0xA2, 0x8B, 0x9A, 0x1D, 0x2C, 0x4E, - 0x21, 0x68, 0x53, 0x51, 0x6D, 0x0C, 0xD2, 0xB4, 0x4B, 0x50, - 0x4B, 0x0A -}; -static const int sizeof_client_cert_der_3072 = sizeof(client_cert_der_3072); - -#endif /* USE_CERT_BUFFERS_3072 */ - -#ifdef USE_CERT_BUFFERS_4096 - -/* ./certs/4096/client-key.der, 4096-bit */ -static const unsigned char client_key_der_4096[] = -{ - 0x30, 0x82, 0x09, 0x28, 0x02, 0x01, 0x00, 0x02, 0x82, 0x02, - 0x01, 0x00, 0xF5, 0xD0, 0x31, 0xE4, 0x71, 0x59, 0x58, 0xB3, - 0x07, 0x50, 0xDD, 0x16, 0x79, 0xFC, 0xC6, 0x95, 0x50, 0xFC, - 0x46, 0x0E, 0x57, 0x12, 0x86, 0x71, 0x8D, 0xE3, 0x9B, 0x4A, - 0x33, 0xEA, 0x4F, 0xD9, 0x17, 0x13, 0x6D, 0x48, 0x69, 0xDF, - 0x59, 0x11, 0x08, 0x02, 0x9D, 0xAF, 0x2B, 0xC7, 0x30, 0xBE, - 0x0C, 0xDC, 0x87, 0xD4, 0x5A, 0x12, 0x09, 0x23, 0x5D, 0xE1, - 0x76, 0x5A, 0x62, 0x37, 0x46, 0x74, 0xEF, 0x03, 0x05, 0xBB, - 0x1E, 0x6D, 0x29, 0x75, 0x6C, 0x2E, 0x9D, 0x87, 0x0D, 0x8F, - 0x87, 0xCB, 0x14, 0x95, 0x9B, 0xBE, 0x17, 0x6B, 0x51, 0xD1, - 0x4C, 0xDA, 0xD7, 0x91, 0x66, 0xC5, 0x36, 0xEB, 0xE0, 0x07, - 0x1A, 0x76, 0x4D, 0xB0, 0xFB, 0xC1, 0xF5, 0x5E, 0x05, 0xDB, - 0xBA, 0xCB, 0x25, 0xD9, 0x99, 0x13, 0x1C, 0xC0, 0x35, 0xDC, - 0x40, 0xE9, 0x36, 0xCD, 0xC4, 0xD5, 0x7A, 0x41, 0x70, 0x0F, - 0x36, 0xEB, 0xA5, 0x4E, 0x17, 0x05, 0xD5, 0x75, 0x1B, 0x64, - 0x62, 0x7A, 0x3F, 0x0D, 0x28, 0x48, 0x6A, 0xE3, 0xAC, 0x9C, - 0xA8, 0x8F, 0xE9, 0xED, 0xF7, 0xCD, 0x24, 0xA0, 0xB1, 0xA0, - 0x03, 0xAC, 0xE3, 0x03, 0xF5, 0x3F, 0xD1, 0x96, 0xFF, 0x2A, - 0x7E, 0x08, 0xB1, 0xD3, 0xE0, 0x18, 0x14, 0xEC, 0x65, 0x37, - 0x50, 0x43, 0xC2, 0x6A, 0x8C, 0xF4, 0x5B, 0xFE, 0xC4, 0xCB, - 0x8D, 0x3F, 0x81, 0x02, 0xF7, 0xC2, 0xDD, 0xE4, 0xC1, 0x8E, - 0x80, 0x0C, 0x04, 0x25, 0x2D, 0x80, 0x5A, 0x2E, 0x0F, 0x22, - 0x35, 0x4A, 0xF4, 0x85, 0xED, 0x51, 0xD8, 0xAB, 0x6D, 0x8F, - 0xA2, 0x3B, 0x24, 0x00, 0x6E, 0x81, 0xE2, 0x1E, 0x76, 0xD6, - 0xAC, 0x31, 0x12, 0xDB, 0xF3, 0x8E, 0x07, 0xA1, 0xDE, 0x89, - 0x4A, 0x39, 0x60, 0x77, 0xC5, 0xAA, 0xF1, 0x51, 0xE6, 0x06, - 0xF1, 0x95, 0x56, 0x2A, 0xE1, 0x8E, 0x92, 0x30, 0x9F, 0xFE, - 0x58, 0x44, 0xAC, 0x46, 0xF2, 0xFD, 0x9A, 0xFC, 0xA8, 0x1D, - 0xA1, 0xD3, 0x55, 0x37, 0x4A, 0x8B, 0xFC, 0x9C, 0x33, 0xF8, - 0xA7, 0x61, 0x48, 0x41, 0x7C, 0x9C, 0x77, 0x3F, 0xF5, 0x80, - 0x23, 0x7D, 0x43, 0xB4, 0xD5, 0x88, 0x0A, 0xC9, 0x75, 0xD7, - 0x44, 0x19, 0x4D, 0x77, 0x6C, 0x0B, 0x0A, 0x49, 0xAA, 0x1C, - 0x2F, 0xD6, 0x5A, 0x44, 0xA6, 0x47, 0x4D, 0xE5, 0x36, 0x96, - 0x40, 0x99, 0x2C, 0x56, 0x26, 0xB1, 0xF2, 0x92, 0x31, 0x59, - 0xD7, 0x2C, 0xD4, 0xB4, 0x21, 0xD6, 0x65, 0x13, 0x0B, 0x3E, - 0xFB, 0xFF, 0x04, 0xEB, 0xB9, 0x85, 0xB9, 0xD8, 0xD8, 0x28, - 0x4F, 0x5C, 0x17, 0x96, 0xA3, 0x51, 0xBE, 0xFE, 0x7D, 0x0B, - 0x1B, 0x48, 0x40, 0x25, 0x76, 0x94, 0xDC, 0x41, 0xFB, 0xBF, - 0x73, 0x76, 0xDA, 0xEB, 0xB3, 0x62, 0xE7, 0xC1, 0xC8, 0x54, - 0x6A, 0x93, 0xE1, 0x8D, 0x31, 0xE8, 0x3E, 0x3E, 0xDF, 0xBC, - 0x87, 0x02, 0x30, 0x22, 0x57, 0xC4, 0xE0, 0x18, 0x7A, 0xD3, - 0xAE, 0xE4, 0x02, 0x9B, 0xAA, 0xBD, 0x4E, 0x49, 0x47, 0x72, - 0xE9, 0x8D, 0x13, 0x2D, 0x54, 0x9B, 0x00, 0xA7, 0x91, 0x61, - 0x71, 0xC9, 0xCC, 0x48, 0x4F, 0xEE, 0xDF, 0x5E, 0x1B, 0x1A, - 0xDF, 0x67, 0xD3, 0x20, 0xE6, 0x44, 0x45, 0x98, 0x7E, 0xE7, - 0x0E, 0x63, 0x16, 0x83, 0xC9, 0x26, 0x5D, 0x90, 0xC1, 0xE5, - 0x2A, 0x5C, 0x45, 0x54, 0x13, 0xB2, 0x81, 0x18, 0x06, 0x20, - 0x2E, 0x2E, 0x66, 0x5A, 0xB5, 0x7B, 0x6E, 0xD6, 0x0C, 0x4E, - 0x89, 0x01, 0x56, 0x70, 0xBB, 0xAE, 0xDE, 0xE9, 0x99, 0x5E, - 0xD1, 0xB9, 0x3A, 0xB7, 0x6C, 0x17, 0xB6, 0x03, 0xA9, 0x08, - 0xDD, 0x9C, 0xF4, 0x14, 0xC9, 0xC9, 0x59, 0x39, 0x72, 0xD4, - 0x7E, 0x02, 0x37, 0x31, 0xCD, 0x0E, 0xA7, 0x3D, 0xF8, 0xF2, - 0xCF, 0x6B, 0x15, 0xAB, 0x02, 0x03, 0x01, 0x00, 0x01, 0x02, - 0x82, 0x02, 0x01, 0x00, 0xC5, 0x76, 0x57, 0x7D, 0xF1, 0x68, - 0x1A, 0x8E, 0xC6, 0x63, 0xB9, 0x16, 0xA3, 0x2B, 0xE1, 0xC2, - 0x74, 0xEA, 0x12, 0xC4, 0xD6, 0x41, 0x75, 0x6A, 0xA6, 0xD6, - 0x9E, 0x1A, 0x7F, 0x95, 0xCC, 0x4A, 0xD1, 0xF4, 0xB3, 0x27, - 0x26, 0x95, 0x5A, 0x91, 0x09, 0xE4, 0x40, 0x13, 0x45, 0x91, - 0x9F, 0xA0, 0x2B, 0xE8, 0xC3, 0xDC, 0x5B, 0xF6, 0x7D, 0x0C, - 0xC2, 0x0F, 0xA9, 0xE9, 0x75, 0x58, 0x7D, 0xEA, 0xD5, 0x4D, - 0x92, 0x3E, 0xFC, 0x74, 0x28, 0x87, 0xC1, 0x3D, 0xB9, 0x21, - 0x92, 0x4D, 0x28, 0x82, 0x84, 0xA8, 0xA2, 0x11, 0x93, 0xF2, - 0x8C, 0x29, 0x1C, 0x19, 0xF8, 0x6D, 0x3F, 0x27, 0x51, 0xB5, - 0x2D, 0xA3, 0xC7, 0x28, 0x1D, 0xC4, 0xFC, 0x98, 0x94, 0xA8, - 0xD0, 0xFF, 0xF0, 0x0F, 0xDC, 0xF9, 0xED, 0xB3, 0xA2, 0xB6, - 0xED, 0x0D, 0x5F, 0xBF, 0x78, 0x5C, 0xD7, 0xAF, 0xBD, 0xA3, - 0xEF, 0x86, 0xE9, 0x51, 0x66, 0xDB, 0x52, 0x37, 0x47, 0x7F, - 0xE9, 0x5F, 0x3C, 0x94, 0x83, 0x2D, 0xE8, 0x9C, 0x33, 0xF1, - 0x6C, 0xE9, 0xF3, 0xA6, 0x97, 0xFE, 0xA7, 0xBF, 0x4D, 0x9B, - 0x20, 0xD5, 0x2F, 0xDE, 0xA4, 0x06, 0xBB, 0xEE, 0x66, 0x49, - 0x6B, 0xF5, 0x10, 0x85, 0x9F, 0x84, 0x5A, 0x52, 0x3E, 0x0C, - 0xA0, 0x4A, 0x4C, 0xDA, 0x01, 0xC5, 0x62, 0x31, 0xB1, 0xEC, - 0xF8, 0xDD, 0xA3, 0x3B, 0xCE, 0x41, 0x3A, 0x12, 0x79, 0xF9, - 0x97, 0x5B, 0x07, 0x95, 0x9F, 0x86, 0xD6, 0x04, 0x73, 0x6C, - 0xE8, 0x8F, 0x4C, 0x4C, 0x48, 0x1D, 0x85, 0xC4, 0xE7, 0xCE, - 0xDE, 0x16, 0x31, 0xF6, 0x5C, 0x37, 0x54, 0x8E, 0x55, 0xBC, - 0xAF, 0x2E, 0x47, 0xE8, 0xAC, 0x03, 0xB0, 0xA4, 0xF9, 0x90, - 0x98, 0x99, 0xA4, 0xDC, 0x6E, 0x98, 0x08, 0x5C, 0x07, 0xBB, - 0x08, 0x93, 0xAF, 0x61, 0x8D, 0x74, 0xA8, 0xF8, 0xC4, 0x89, - 0x64, 0x10, 0xE1, 0xE6, 0xC0, 0xCD, 0x1D, 0x39, 0x20, 0xD6, - 0x5A, 0x89, 0x83, 0xFC, 0x37, 0xE2, 0x12, 0x66, 0xA8, 0x12, - 0xCC, 0x72, 0xBB, 0x1E, 0xFB, 0x6A, 0xE3, 0x7C, 0x71, 0x7E, - 0xB9, 0x2E, 0x8E, 0x84, 0x66, 0xE1, 0xB9, 0xD0, 0x25, 0x9A, - 0x6F, 0x9D, 0x19, 0xE6, 0x7E, 0xE8, 0xD8, 0xF0, 0xC5, 0x23, - 0x16, 0x9A, 0x68, 0x2C, 0x1D, 0x55, 0xAE, 0x8E, 0x90, 0xEE, - 0x8E, 0xEC, 0x5E, 0x46, 0x9D, 0x60, 0x52, 0x32, 0x17, 0x28, - 0x59, 0xC4, 0x49, 0x2A, 0x20, 0x3E, 0x95, 0xC5, 0xDF, 0xF6, - 0x3D, 0xF7, 0xC5, 0xCF, 0xB1, 0xC2, 0xC9, 0x76, 0xF8, 0x3D, - 0xBE, 0xF4, 0x63, 0xFC, 0x2A, 0x00, 0x6F, 0x99, 0xA6, 0xB6, - 0xAD, 0x35, 0xEE, 0xDE, 0xC5, 0xE0, 0x97, 0xC6, 0x73, 0xEE, - 0x33, 0xA0, 0xA8, 0xFC, 0x4C, 0x8F, 0xF2, 0x8C, 0x61, 0xFB, - 0x03, 0x19, 0xA1, 0xE8, 0x17, 0x4E, 0xE3, 0x21, 0x58, 0xCE, - 0xFE, 0xF2, 0x5F, 0xBB, 0xDD, 0x4F, 0xF7, 0x18, 0xCB, 0x35, - 0x57, 0xDD, 0xE5, 0x50, 0x2A, 0x7B, 0x1A, 0xE9, 0x12, 0xF2, - 0x7A, 0x11, 0xB1, 0x43, 0xB9, 0x70, 0x07, 0x0C, 0x8F, 0x69, - 0xB9, 0xE5, 0xA5, 0xC9, 0xE2, 0x1B, 0x96, 0x74, 0x11, 0xF5, - 0x95, 0xB9, 0x58, 0xC0, 0xBD, 0x37, 0xFB, 0x28, 0x2A, 0xBD, - 0x84, 0xB1, 0x2B, 0x67, 0x42, 0x82, 0xC3, 0x95, 0x55, 0x45, - 0xD5, 0xEA, 0xC3, 0x8A, 0x42, 0x3A, 0x43, 0x17, 0x5E, 0xCD, - 0xD2, 0xEA, 0xFC, 0xDF, 0x67, 0xEC, 0xE1, 0x6C, 0xA8, 0x03, - 0x19, 0xB2, 0x1D, 0x4A, 0x5F, 0x4F, 0xE7, 0xD3, 0xE0, 0x86, - 0xC5, 0x1A, 0x10, 0xC3, 0x08, 0xD2, 0xED, 0x85, 0x93, 0x08, - 0x51, 0x05, 0xA6, 0x37, 0x15, 0x32, 0xBD, 0x6C, 0x73, 0x63, - 0x01, 0x5D, 0x5B, 0x4F, 0x6A, 0xDC, 0x6D, 0x1D, 0x55, 0x91, - 0x21, 0xE4, 0x8E, 0xB7, 0xF0, 0x81, 0x02, 0x82, 0x01, 0x01, - 0x00, 0xFD, 0x27, 0xC8, 0xFE, 0x76, 0x5C, 0x89, 0x32, 0xCB, - 0x8A, 0x22, 0x87, 0x61, 0x48, 0x91, 0x4A, 0x05, 0xAD, 0xA4, - 0x5C, 0x8A, 0xCA, 0x5C, 0x02, 0x88, 0x7E, 0x51, 0xC5, 0x66, - 0x90, 0x2C, 0xA3, 0xED, 0xA7, 0x43, 0x19, 0x0B, 0xA2, 0x42, - 0xB4, 0xE0, 0xE0, 0x45, 0xBF, 0xFE, 0xA0, 0xF2, 0x75, 0x0B, - 0x8E, 0x7D, 0x9D, 0x73, 0x67, 0xD3, 0x10, 0x09, 0xC5, 0xD9, - 0x8C, 0xAD, 0x3A, 0x64, 0x72, 0xAD, 0x96, 0x35, 0x91, 0x0F, - 0x4B, 0xC9, 0xBD, 0x4F, 0x65, 0x47, 0xA6, 0x2D, 0xEB, 0x3F, - 0xE2, 0x99, 0x72, 0x66, 0x12, 0xED, 0xEB, 0xD2, 0x7C, 0xFF, - 0x3A, 0x20, 0x37, 0x2A, 0xD3, 0x65, 0x51, 0x9B, 0xC3, 0xAA, - 0x18, 0xB1, 0x1F, 0x6E, 0x9D, 0x40, 0x47, 0xA4, 0x1F, 0x82, - 0x9B, 0xDB, 0x50, 0x6B, 0x86, 0x2F, 0xFB, 0x3F, 0x31, 0xB9, - 0x81, 0x11, 0x04, 0x14, 0x63, 0x86, 0x4F, 0x40, 0x2A, 0xF5, - 0xF9, 0x7C, 0xA1, 0x78, 0x19, 0x13, 0xD0, 0x51, 0x51, 0x0F, - 0x79, 0x88, 0x8D, 0x14, 0xA3, 0xDE, 0xB6, 0x33, 0x29, 0x42, - 0xB9, 0xE8, 0x59, 0x76, 0xF7, 0x43, 0x1A, 0xB6, 0xA6, 0xDF, - 0x0A, 0xC1, 0x42, 0xC7, 0x3F, 0x1C, 0x7E, 0x5C, 0x2C, 0x91, - 0x4B, 0x1E, 0xF8, 0x46, 0x91, 0x1F, 0xEE, 0x56, 0xB3, 0x0E, - 0xC8, 0xD0, 0x31, 0xD3, 0x3D, 0xED, 0x3D, 0xD9, 0xC5, 0x30, - 0x0C, 0x58, 0xD8, 0xB7, 0xB5, 0xEC, 0x14, 0xAC, 0x41, 0x64, - 0x6D, 0xE4, 0xC6, 0x59, 0xFD, 0x14, 0x05, 0x60, 0x65, 0xD8, - 0xC4, 0x84, 0x44, 0x7E, 0x1B, 0xB4, 0xA4, 0x16, 0x75, 0xC1, - 0x27, 0x96, 0xB2, 0x19, 0xD6, 0x39, 0x54, 0xC0, 0x93, 0xF3, - 0xD7, 0x1F, 0xCD, 0x1B, 0xDF, 0xF8, 0x12, 0x88, 0x14, 0x9F, - 0x98, 0x05, 0x47, 0x46, 0x71, 0x81, 0x6C, 0xDF, 0x91, 0xEF, - 0x53, 0xE3, 0xC5, 0xB1, 0x89, 0x2F, 0xE1, 0x02, 0x82, 0x01, - 0x01, 0x00, 0xF8, 0x93, 0x4A, 0x28, 0x77, 0x94, 0xEF, 0xE9, - 0xC4, 0x0A, 0xC3, 0xE8, 0x52, 0x59, 0xB6, 0x1D, 0x8D, 0xCE, - 0x14, 0xE7, 0x43, 0xC6, 0xED, 0x09, 0x27, 0x5D, 0xF3, 0x8E, - 0x08, 0x6A, 0x19, 0x6B, 0x2C, 0x97, 0x9B, 0x88, 0x53, 0x2B, - 0xDA, 0xFE, 0x4B, 0x94, 0x66, 0x84, 0xD5, 0xA9, 0xCE, 0xA5, - 0x43, 0x70, 0xFB, 0x01, 0x5A, 0x6F, 0xCD, 0xF7, 0xD1, 0x9D, - 0x51, 0xEE, 0xA0, 0xDC, 0x46, 0xF5, 0x7D, 0xA7, 0xEE, 0xA0, - 0x86, 0xB7, 0x83, 0xFF, 0x21, 0x8B, 0x76, 0x05, 0x7D, 0xDE, - 0xC4, 0x26, 0x36, 0xBC, 0xB4, 0x8A, 0x48, 0xC3, 0x06, 0x90, - 0x97, 0xE5, 0xA6, 0x38, 0xC3, 0xE6, 0x7C, 0xD0, 0xF8, 0x23, - 0xD2, 0x33, 0x1F, 0x81, 0xC3, 0xE3, 0x7D, 0x85, 0x5A, 0x38, - 0x10, 0x03, 0xE6, 0x88, 0xDB, 0xC8, 0x4C, 0xD0, 0xF7, 0xB2, - 0x4D, 0x27, 0x33, 0x85, 0xCD, 0x3A, 0x74, 0x83, 0x6B, 0x82, - 0x58, 0xD9, 0xDF, 0xEE, 0xF5, 0xD3, 0xE9, 0xFE, 0x1C, 0xEF, - 0x06, 0x12, 0x16, 0xD1, 0x4C, 0xAE, 0x54, 0x4B, 0x0D, 0x1A, - 0xBD, 0xE2, 0xCF, 0x56, 0xB3, 0x74, 0xBE, 0x44, 0x4F, 0xA4, - 0x73, 0x0A, 0x98, 0x8D, 0x61, 0x84, 0x38, 0x46, 0xDC, 0x95, - 0xCF, 0x3F, 0x6B, 0xE7, 0x65, 0x87, 0x02, 0xBF, 0x4B, 0x57, - 0xE2, 0x3D, 0xC4, 0x2B, 0x1C, 0x82, 0x1D, 0xCC, 0x13, 0x7F, - 0xC0, 0x06, 0x12, 0x8C, 0x6F, 0x97, 0x50, 0x7B, 0x8C, 0x81, - 0xC3, 0x23, 0x15, 0xEB, 0x70, 0x07, 0x8E, 0xA1, 0x07, 0x1E, - 0x59, 0xFA, 0x10, 0xCA, 0x7E, 0x0F, 0xE2, 0xBB, 0xEE, 0x86, - 0x26, 0x1E, 0x55, 0xB9, 0x98, 0x66, 0x85, 0xEC, 0x27, 0xC5, - 0xD9, 0x63, 0x8D, 0x51, 0x77, 0xAA, 0xA0, 0x36, 0x55, 0x33, - 0x10, 0x21, 0x5E, 0xEC, 0x47, 0x67, 0x71, 0xD1, 0xAF, 0xFC, - 0x3E, 0x50, 0xF5, 0xBE, 0xD6, 0x92, 0xE7, 0x0B, 0x02, 0x82, - 0x01, 0x00, 0x21, 0x7C, 0x8A, 0xC4, 0xC6, 0x29, 0x55, 0x68, - 0xA7, 0xAD, 0xDD, 0x05, 0x65, 0x63, 0xF0, 0xFC, 0x06, 0xA6, - 0x42, 0x70, 0x8F, 0x57, 0x57, 0x36, 0x6A, 0x91, 0xB3, 0x05, - 0x56, 0x9C, 0xC9, 0x9A, 0xE1, 0x8B, 0xD7, 0x7F, 0x4F, 0x9F, - 0xA6, 0x0D, 0x41, 0x15, 0xC9, 0x84, 0x2D, 0x0D, 0x63, 0x25, - 0x02, 0x63, 0x55, 0xD0, 0x66, 0xFC, 0x9B, 0xD9, 0xAA, 0x41, - 0x46, 0x96, 0xAA, 0x2F, 0x68, 0x2C, 0x17, 0x34, 0x20, 0x5F, - 0xD0, 0xD3, 0x28, 0x9B, 0x67, 0x0E, 0x31, 0x9D, 0x14, 0xC3, - 0xE2, 0x8E, 0x79, 0xD7, 0xBD, 0x12, 0xD1, 0xEF, 0xF8, 0xC6, - 0xDA, 0x07, 0xF9, 0x4C, 0xF2, 0xD8, 0x45, 0xB5, 0xB6, 0xD1, - 0xFA, 0x05, 0x0C, 0x20, 0xE9, 0x43, 0xD9, 0xC5, 0xE0, 0x3A, - 0xDE, 0xCE, 0xF9, 0x02, 0xB9, 0x46, 0x65, 0xC0, 0x69, 0x4A, - 0x8D, 0x8C, 0x3A, 0x10, 0xFD, 0x15, 0x71, 0x25, 0xB8, 0x8A, - 0x36, 0x41, 0x4B, 0x30, 0x1C, 0xAF, 0xCC, 0x84, 0x28, 0xCD, - 0x7D, 0x2B, 0x89, 0x59, 0x88, 0x1A, 0x69, 0x12, 0x56, 0xD0, - 0x25, 0x68, 0x6C, 0x08, 0xB1, 0x88, 0xE1, 0x92, 0x7E, 0x08, - 0xB2, 0xC6, 0x3C, 0x6C, 0x35, 0xE8, 0xEE, 0x3E, 0xF4, 0xB8, - 0x5C, 0x7B, 0xC0, 0x5B, 0xFD, 0x11, 0xA3, 0x54, 0xA6, 0x99, - 0x46, 0xE2, 0x5F, 0x4F, 0xC7, 0xEE, 0x90, 0x1C, 0x37, 0x5B, - 0x33, 0x10, 0xDF, 0x0B, 0xC3, 0xB9, 0x47, 0xC2, 0x30, 0x4A, - 0xF2, 0x1A, 0xEB, 0x41, 0x25, 0x94, 0x29, 0x7A, 0xD0, 0x96, - 0x88, 0x46, 0xEE, 0x6C, 0x14, 0xF6, 0x5B, 0x3D, 0xBD, 0x4E, - 0xD4, 0x3F, 0x05, 0x5B, 0x07, 0xB9, 0xE3, 0x99, 0x87, 0x63, - 0xCA, 0xC4, 0x71, 0x0B, 0x73, 0x9D, 0x7B, 0xB6, 0x0F, 0xD4, - 0x12, 0x8C, 0x4C, 0x5E, 0x72, 0x3D, 0xFF, 0x6D, 0xC4, 0x61, - 0x0C, 0x74, 0x5F, 0x53, 0xBE, 0x39, 0x34, 0x61, 0x02, 0x82, - 0x01, 0x00, 0x5F, 0xF2, 0xF2, 0xB0, 0x16, 0x20, 0x8E, 0x4E, - 0xCC, 0x96, 0x5F, 0x32, 0x80, 0xFF, 0x11, 0xF5, 0xEC, 0x73, - 0xBC, 0xCB, 0xDB, 0xF4, 0xA0, 0x30, 0x65, 0x5A, 0xB5, 0x95, - 0x80, 0x97, 0xFB, 0xC1, 0xCB, 0xCF, 0xA5, 0x80, 0x84, 0xA2, - 0x2C, 0x00, 0xF6, 0x89, 0x8C, 0xDC, 0xFF, 0x60, 0x71, 0x5C, - 0x87, 0x60, 0xC7, 0xF2, 0xA8, 0xC6, 0xF9, 0x59, 0x0C, 0x37, - 0x4E, 0x95, 0xEE, 0xCF, 0xB8, 0x30, 0x30, 0x55, 0xAF, 0x1D, - 0x95, 0x82, 0xA6, 0xD7, 0xC7, 0x49, 0xFE, 0xBF, 0x75, 0xEB, - 0x94, 0x09, 0x30, 0x1D, 0xBD, 0x0E, 0x97, 0xB1, 0x78, 0x0A, - 0x3E, 0x27, 0xAD, 0xF6, 0xC1, 0x5F, 0x69, 0x94, 0x7C, 0x03, - 0xCF, 0xB2, 0x5E, 0x1A, 0x07, 0xD3, 0xFA, 0xF2, 0x8B, 0x75, - 0x92, 0x70, 0xFE, 0xFE, 0x9A, 0xDF, 0x81, 0x0F, 0x34, 0x5D, - 0x45, 0xBC, 0xB8, 0xFD, 0x8F, 0xCF, 0x5D, 0x84, 0x10, 0xEE, - 0x9A, 0x7F, 0x57, 0x19, 0xF5, 0x17, 0xDC, 0x7D, 0x73, 0x0B, - 0xAC, 0x6B, 0x35, 0x15, 0x8B, 0x24, 0xCB, 0x72, 0xC0, 0xD7, - 0x2E, 0xAE, 0xAA, 0xDB, 0xCB, 0x9F, 0x67, 0x86, 0x14, 0xBB, - 0xE4, 0x90, 0x15, 0x7C, 0x95, 0x44, 0xA5, 0x38, 0x6D, 0x13, - 0x02, 0x91, 0x77, 0x84, 0x35, 0x43, 0x5D, 0x03, 0x1C, 0x01, - 0x0B, 0x5A, 0x4E, 0x2B, 0x59, 0xF0, 0xBB, 0xB1, 0xB7, 0x61, - 0x1B, 0x6C, 0xFC, 0xA1, 0xEA, 0xBD, 0x1C, 0x9A, 0xE4, 0x0C, - 0x7E, 0x97, 0x3F, 0x71, 0xC6, 0xA7, 0x94, 0x1D, 0x82, 0x12, - 0xEC, 0x26, 0x43, 0x6E, 0xF6, 0x24, 0x09, 0xA0, 0x03, 0x1D, - 0x12, 0xFF, 0xA8, 0x95, 0x60, 0x47, 0x4A, 0xB0, 0x72, 0x55, - 0xC3, 0x68, 0xD2, 0xF6, 0xBC, 0x5B, 0x47, 0x46, 0x51, 0xB2, - 0xC9, 0x2A, 0x28, 0x6A, 0xC9, 0xD1, 0x1B, 0x35, 0x16, 0x5A, - 0x26, 0x6F, 0xB7, 0xBB, 0xF7, 0x35, 0x73, 0x2B, 0x02, 0x82, - 0x01, 0x00, 0x56, 0xBA, 0xD8, 0x02, 0xD7, 0x4B, 0x30, 0x5E, - 0x1B, 0x1E, 0x2F, 0xF3, 0x0D, 0xBC, 0xF1, 0x05, 0x6A, 0x68, - 0x4A, 0xE1, 0xEA, 0xB3, 0xDE, 0x61, 0x8C, 0x89, 0x44, 0xBA, - 0x63, 0x5E, 0xDF, 0x05, 0x24, 0x32, 0x71, 0x65, 0x1A, 0x36, - 0x2F, 0xBC, 0x07, 0x75, 0xA3, 0xCE, 0x9E, 0x52, 0x92, 0x95, - 0x4D, 0x3F, 0xC9, 0x06, 0xBC, 0xA1, 0x14, 0x33, 0x37, 0x95, - 0xAB, 0x9A, 0xEB, 0x04, 0xF6, 0x15, 0xC3, 0x9B, 0x10, 0x56, - 0x53, 0xA2, 0x28, 0xF2, 0x68, 0xDA, 0x7D, 0x97, 0x52, 0x63, - 0xAC, 0x9B, 0x56, 0xA9, 0xAB, 0x2E, 0x1E, 0x9E, 0x01, 0x70, - 0xFF, 0x2B, 0x6D, 0x0C, 0x4B, 0xA6, 0xC3, 0x3A, 0xB3, 0xD1, - 0xA7, 0x4B, 0x5E, 0x49, 0x2E, 0x95, 0xD6, 0x6A, 0xAE, 0x58, - 0x13, 0x66, 0x8F, 0x2F, 0x93, 0xE4, 0x6E, 0x8B, 0xFA, 0x94, - 0x30, 0x3E, 0xEC, 0x96, 0xAB, 0x46, 0x20, 0x3E, 0xC5, 0x30, - 0xB4, 0xEB, 0x41, 0x00, 0x39, 0x60, 0x1D, 0xE1, 0x20, 0xCE, - 0x31, 0x70, 0x17, 0x39, 0xCB, 0x76, 0x56, 0x6C, 0x55, 0x7B, - 0x90, 0x20, 0xBC, 0x39, 0xB2, 0x5B, 0xD1, 0x28, 0x6F, 0x0C, - 0x4F, 0x45, 0x6B, 0x82, 0xC4, 0x57, 0x23, 0x0C, 0x3F, 0x3F, - 0x2D, 0x83, 0xB3, 0x3D, 0x8E, 0xF9, 0x1A, 0xDA, 0x77, 0x54, - 0x2E, 0xFE, 0x16, 0x2E, 0xBA, 0x99, 0xDD, 0xCA, 0xB3, 0xD1, - 0xD8, 0xBB, 0x87, 0xE1, 0xD0, 0xA9, 0xD4, 0xE6, 0x8F, 0xE8, - 0x00, 0x3E, 0x49, 0x8A, 0xDD, 0xA6, 0x32, 0x91, 0x00, 0x31, - 0x31, 0x21, 0x98, 0x18, 0x94, 0xC9, 0x2D, 0x27, 0x05, 0xB7, - 0x9B, 0x09, 0x2E, 0xBB, 0x5D, 0xBF, 0x67, 0xE8, 0x0E, 0xD1, - 0x44, 0x75, 0x80, 0x1D, 0x0A, 0x21, 0x8F, 0x95, 0x76, 0xB0, - 0xFC, 0x19, 0x3C, 0xFF, 0x92, 0xEA, 0x01, 0x45, 0x89, 0xD1, - 0x4E, 0xFE, 0x4D, 0x2B, 0x4B, 0x18, 0xE6, 0xCE -}; -static const int sizeof_client_key_der_4096 = sizeof(client_key_der_4096); - -/* ./certs/4096/client-keyPub.der, 4096-bit */ -static const unsigned char client_keypub_der_4096[] = -{ - 0x30, 0x82, 0x02, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, - 0x82, 0x02, 0x0F, 0x00, 0x30, 0x82, 0x02, 0x0A, 0x02, 0x82, - 0x02, 0x01, 0x00, 0xF5, 0xD0, 0x31, 0xE4, 0x71, 0x59, 0x58, - 0xB3, 0x07, 0x50, 0xDD, 0x16, 0x79, 0xFC, 0xC6, 0x95, 0x50, - 0xFC, 0x46, 0x0E, 0x57, 0x12, 0x86, 0x71, 0x8D, 0xE3, 0x9B, - 0x4A, 0x33, 0xEA, 0x4F, 0xD9, 0x17, 0x13, 0x6D, 0x48, 0x69, - 0xDF, 0x59, 0x11, 0x08, 0x02, 0x9D, 0xAF, 0x2B, 0xC7, 0x30, - 0xBE, 0x0C, 0xDC, 0x87, 0xD4, 0x5A, 0x12, 0x09, 0x23, 0x5D, - 0xE1, 0x76, 0x5A, 0x62, 0x37, 0x46, 0x74, 0xEF, 0x03, 0x05, - 0xBB, 0x1E, 0x6D, 0x29, 0x75, 0x6C, 0x2E, 0x9D, 0x87, 0x0D, - 0x8F, 0x87, 0xCB, 0x14, 0x95, 0x9B, 0xBE, 0x17, 0x6B, 0x51, - 0xD1, 0x4C, 0xDA, 0xD7, 0x91, 0x66, 0xC5, 0x36, 0xEB, 0xE0, - 0x07, 0x1A, 0x76, 0x4D, 0xB0, 0xFB, 0xC1, 0xF5, 0x5E, 0x05, - 0xDB, 0xBA, 0xCB, 0x25, 0xD9, 0x99, 0x13, 0x1C, 0xC0, 0x35, - 0xDC, 0x40, 0xE9, 0x36, 0xCD, 0xC4, 0xD5, 0x7A, 0x41, 0x70, - 0x0F, 0x36, 0xEB, 0xA5, 0x4E, 0x17, 0x05, 0xD5, 0x75, 0x1B, - 0x64, 0x62, 0x7A, 0x3F, 0x0D, 0x28, 0x48, 0x6A, 0xE3, 0xAC, - 0x9C, 0xA8, 0x8F, 0xE9, 0xED, 0xF7, 0xCD, 0x24, 0xA0, 0xB1, - 0xA0, 0x03, 0xAC, 0xE3, 0x03, 0xF5, 0x3F, 0xD1, 0x96, 0xFF, - 0x2A, 0x7E, 0x08, 0xB1, 0xD3, 0xE0, 0x18, 0x14, 0xEC, 0x65, - 0x37, 0x50, 0x43, 0xC2, 0x6A, 0x8C, 0xF4, 0x5B, 0xFE, 0xC4, - 0xCB, 0x8D, 0x3F, 0x81, 0x02, 0xF7, 0xC2, 0xDD, 0xE4, 0xC1, - 0x8E, 0x80, 0x0C, 0x04, 0x25, 0x2D, 0x80, 0x5A, 0x2E, 0x0F, - 0x22, 0x35, 0x4A, 0xF4, 0x85, 0xED, 0x51, 0xD8, 0xAB, 0x6D, - 0x8F, 0xA2, 0x3B, 0x24, 0x00, 0x6E, 0x81, 0xE2, 0x1E, 0x76, - 0xD6, 0xAC, 0x31, 0x12, 0xDB, 0xF3, 0x8E, 0x07, 0xA1, 0xDE, - 0x89, 0x4A, 0x39, 0x60, 0x77, 0xC5, 0xAA, 0xF1, 0x51, 0xE6, - 0x06, 0xF1, 0x95, 0x56, 0x2A, 0xE1, 0x8E, 0x92, 0x30, 0x9F, - 0xFE, 0x58, 0x44, 0xAC, 0x46, 0xF2, 0xFD, 0x9A, 0xFC, 0xA8, - 0x1D, 0xA1, 0xD3, 0x55, 0x37, 0x4A, 0x8B, 0xFC, 0x9C, 0x33, - 0xF8, 0xA7, 0x61, 0x48, 0x41, 0x7C, 0x9C, 0x77, 0x3F, 0xF5, - 0x80, 0x23, 0x7D, 0x43, 0xB4, 0xD5, 0x88, 0x0A, 0xC9, 0x75, - 0xD7, 0x44, 0x19, 0x4D, 0x77, 0x6C, 0x0B, 0x0A, 0x49, 0xAA, - 0x1C, 0x2F, 0xD6, 0x5A, 0x44, 0xA6, 0x47, 0x4D, 0xE5, 0x36, - 0x96, 0x40, 0x99, 0x2C, 0x56, 0x26, 0xB1, 0xF2, 0x92, 0x31, - 0x59, 0xD7, 0x2C, 0xD4, 0xB4, 0x21, 0xD6, 0x65, 0x13, 0x0B, - 0x3E, 0xFB, 0xFF, 0x04, 0xEB, 0xB9, 0x85, 0xB9, 0xD8, 0xD8, - 0x28, 0x4F, 0x5C, 0x17, 0x96, 0xA3, 0x51, 0xBE, 0xFE, 0x7D, - 0x0B, 0x1B, 0x48, 0x40, 0x25, 0x76, 0x94, 0xDC, 0x41, 0xFB, - 0xBF, 0x73, 0x76, 0xDA, 0xEB, 0xB3, 0x62, 0xE7, 0xC1, 0xC8, - 0x54, 0x6A, 0x93, 0xE1, 0x8D, 0x31, 0xE8, 0x3E, 0x3E, 0xDF, - 0xBC, 0x87, 0x02, 0x30, 0x22, 0x57, 0xC4, 0xE0, 0x18, 0x7A, - 0xD3, 0xAE, 0xE4, 0x02, 0x9B, 0xAA, 0xBD, 0x4E, 0x49, 0x47, - 0x72, 0xE9, 0x8D, 0x13, 0x2D, 0x54, 0x9B, 0x00, 0xA7, 0x91, - 0x61, 0x71, 0xC9, 0xCC, 0x48, 0x4F, 0xEE, 0xDF, 0x5E, 0x1B, - 0x1A, 0xDF, 0x67, 0xD3, 0x20, 0xE6, 0x44, 0x45, 0x98, 0x7E, - 0xE7, 0x0E, 0x63, 0x16, 0x83, 0xC9, 0x26, 0x5D, 0x90, 0xC1, - 0xE5, 0x2A, 0x5C, 0x45, 0x54, 0x13, 0xB2, 0x81, 0x18, 0x06, - 0x20, 0x2E, 0x2E, 0x66, 0x5A, 0xB5, 0x7B, 0x6E, 0xD6, 0x0C, - 0x4E, 0x89, 0x01, 0x56, 0x70, 0xBB, 0xAE, 0xDE, 0xE9, 0x99, - 0x5E, 0xD1, 0xB9, 0x3A, 0xB7, 0x6C, 0x17, 0xB6, 0x03, 0xA9, - 0x08, 0xDD, 0x9C, 0xF4, 0x14, 0xC9, 0xC9, 0x59, 0x39, 0x72, - 0xD4, 0x7E, 0x02, 0x37, 0x31, 0xCD, 0x0E, 0xA7, 0x3D, 0xF8, - 0xF2, 0xCF, 0x6B, 0x15, 0xAB, 0x02, 0x03, 0x01, 0x00, 0x01 - -}; -static const int sizeof_client_keypub_der_4096 = sizeof(client_keypub_der_4096); - -/* ./certs/4096/client-cert.der, 4096-bit */ -static const unsigned char client_cert_der_4096[] = -{ - 0x30, 0x82, 0x06, 0xE0, 0x30, 0x82, 0x04, 0xC8, 0xA0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x14, 0x2F, 0x0F, 0xAB, 0x23, 0xBC, - 0xA3, 0x14, 0x07, 0x91, 0x06, 0x55, 0x35, 0x01, 0x63, 0x7F, - 0x42, 0xBD, 0xFB, 0xF2, 0x43, 0x30, 0x0D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, - 0x30, 0x81, 0x9E, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, - 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, - 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, - 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, - 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, - 0x61, 0x6E, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, - 0x0A, 0x0C, 0x0C, 0x77, 0x6F, 0x6C, 0x66, 0x53, 0x53, 0x4C, - 0x5F, 0x34, 0x30, 0x39, 0x36, 0x31, 0x19, 0x30, 0x17, 0x06, - 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x10, 0x50, 0x72, 0x6F, 0x67, - 0x72, 0x61, 0x6D, 0x6D, 0x69, 0x6E, 0x67, 0x2D, 0x34, 0x30, - 0x39, 0x36, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, - 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, - 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, - 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, - 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, - 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, - 0x6D, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x39, 0x30, 0x37, 0x30, - 0x39, 0x30, 0x33, 0x30, 0x36, 0x30, 0x32, 0x5A, 0x17, 0x0D, - 0x32, 0x32, 0x30, 0x34, 0x30, 0x34, 0x30, 0x33, 0x30, 0x36, - 0x30, 0x32, 0x5A, 0x30, 0x81, 0x9E, 0x31, 0x0B, 0x30, 0x09, - 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, - 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, - 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, - 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, - 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x15, 0x30, 0x13, 0x06, - 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x0C, 0x77, 0x6F, 0x6C, 0x66, - 0x53, 0x53, 0x4C, 0x5F, 0x34, 0x30, 0x39, 0x36, 0x31, 0x19, - 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x10, 0x50, - 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x69, 0x6E, 0x67, - 0x2D, 0x34, 0x30, 0x39, 0x36, 0x31, 0x18, 0x30, 0x16, 0x06, - 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, - 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, - 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, - 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, - 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, - 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x82, 0x02, 0x22, 0x30, 0x0D, - 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, - 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0F, 0x00, 0x30, 0x82, - 0x02, 0x0A, 0x02, 0x82, 0x02, 0x01, 0x00, 0xF5, 0xD0, 0x31, - 0xE4, 0x71, 0x59, 0x58, 0xB3, 0x07, 0x50, 0xDD, 0x16, 0x79, - 0xFC, 0xC6, 0x95, 0x50, 0xFC, 0x46, 0x0E, 0x57, 0x12, 0x86, - 0x71, 0x8D, 0xE3, 0x9B, 0x4A, 0x33, 0xEA, 0x4F, 0xD9, 0x17, - 0x13, 0x6D, 0x48, 0x69, 0xDF, 0x59, 0x11, 0x08, 0x02, 0x9D, - 0xAF, 0x2B, 0xC7, 0x30, 0xBE, 0x0C, 0xDC, 0x87, 0xD4, 0x5A, - 0x12, 0x09, 0x23, 0x5D, 0xE1, 0x76, 0x5A, 0x62, 0x37, 0x46, - 0x74, 0xEF, 0x03, 0x05, 0xBB, 0x1E, 0x6D, 0x29, 0x75, 0x6C, - 0x2E, 0x9D, 0x87, 0x0D, 0x8F, 0x87, 0xCB, 0x14, 0x95, 0x9B, - 0xBE, 0x17, 0x6B, 0x51, 0xD1, 0x4C, 0xDA, 0xD7, 0x91, 0x66, - 0xC5, 0x36, 0xEB, 0xE0, 0x07, 0x1A, 0x76, 0x4D, 0xB0, 0xFB, - 0xC1, 0xF5, 0x5E, 0x05, 0xDB, 0xBA, 0xCB, 0x25, 0xD9, 0x99, - 0x13, 0x1C, 0xC0, 0x35, 0xDC, 0x40, 0xE9, 0x36, 0xCD, 0xC4, - 0xD5, 0x7A, 0x41, 0x70, 0x0F, 0x36, 0xEB, 0xA5, 0x4E, 0x17, - 0x05, 0xD5, 0x75, 0x1B, 0x64, 0x62, 0x7A, 0x3F, 0x0D, 0x28, - 0x48, 0x6A, 0xE3, 0xAC, 0x9C, 0xA8, 0x8F, 0xE9, 0xED, 0xF7, - 0xCD, 0x24, 0xA0, 0xB1, 0xA0, 0x03, 0xAC, 0xE3, 0x03, 0xF5, - 0x3F, 0xD1, 0x96, 0xFF, 0x2A, 0x7E, 0x08, 0xB1, 0xD3, 0xE0, - 0x18, 0x14, 0xEC, 0x65, 0x37, 0x50, 0x43, 0xC2, 0x6A, 0x8C, - 0xF4, 0x5B, 0xFE, 0xC4, 0xCB, 0x8D, 0x3F, 0x81, 0x02, 0xF7, - 0xC2, 0xDD, 0xE4, 0xC1, 0x8E, 0x80, 0x0C, 0x04, 0x25, 0x2D, - 0x80, 0x5A, 0x2E, 0x0F, 0x22, 0x35, 0x4A, 0xF4, 0x85, 0xED, - 0x51, 0xD8, 0xAB, 0x6D, 0x8F, 0xA2, 0x3B, 0x24, 0x00, 0x6E, - 0x81, 0xE2, 0x1E, 0x76, 0xD6, 0xAC, 0x31, 0x12, 0xDB, 0xF3, - 0x8E, 0x07, 0xA1, 0xDE, 0x89, 0x4A, 0x39, 0x60, 0x77, 0xC5, - 0xAA, 0xF1, 0x51, 0xE6, 0x06, 0xF1, 0x95, 0x56, 0x2A, 0xE1, - 0x8E, 0x92, 0x30, 0x9F, 0xFE, 0x58, 0x44, 0xAC, 0x46, 0xF2, - 0xFD, 0x9A, 0xFC, 0xA8, 0x1D, 0xA1, 0xD3, 0x55, 0x37, 0x4A, - 0x8B, 0xFC, 0x9C, 0x33, 0xF8, 0xA7, 0x61, 0x48, 0x41, 0x7C, - 0x9C, 0x77, 0x3F, 0xF5, 0x80, 0x23, 0x7D, 0x43, 0xB4, 0xD5, - 0x88, 0x0A, 0xC9, 0x75, 0xD7, 0x44, 0x19, 0x4D, 0x77, 0x6C, - 0x0B, 0x0A, 0x49, 0xAA, 0x1C, 0x2F, 0xD6, 0x5A, 0x44, 0xA6, - 0x47, 0x4D, 0xE5, 0x36, 0x96, 0x40, 0x99, 0x2C, 0x56, 0x26, - 0xB1, 0xF2, 0x92, 0x31, 0x59, 0xD7, 0x2C, 0xD4, 0xB4, 0x21, - 0xD6, 0x65, 0x13, 0x0B, 0x3E, 0xFB, 0xFF, 0x04, 0xEB, 0xB9, - 0x85, 0xB9, 0xD8, 0xD8, 0x28, 0x4F, 0x5C, 0x17, 0x96, 0xA3, - 0x51, 0xBE, 0xFE, 0x7D, 0x0B, 0x1B, 0x48, 0x40, 0x25, 0x76, - 0x94, 0xDC, 0x41, 0xFB, 0xBF, 0x73, 0x76, 0xDA, 0xEB, 0xB3, - 0x62, 0xE7, 0xC1, 0xC8, 0x54, 0x6A, 0x93, 0xE1, 0x8D, 0x31, - 0xE8, 0x3E, 0x3E, 0xDF, 0xBC, 0x87, 0x02, 0x30, 0x22, 0x57, - 0xC4, 0xE0, 0x18, 0x7A, 0xD3, 0xAE, 0xE4, 0x02, 0x9B, 0xAA, - 0xBD, 0x4E, 0x49, 0x47, 0x72, 0xE9, 0x8D, 0x13, 0x2D, 0x54, - 0x9B, 0x00, 0xA7, 0x91, 0x61, 0x71, 0xC9, 0xCC, 0x48, 0x4F, - 0xEE, 0xDF, 0x5E, 0x1B, 0x1A, 0xDF, 0x67, 0xD3, 0x20, 0xE6, - 0x44, 0x45, 0x98, 0x7E, 0xE7, 0x0E, 0x63, 0x16, 0x83, 0xC9, - 0x26, 0x5D, 0x90, 0xC1, 0xE5, 0x2A, 0x5C, 0x45, 0x54, 0x13, - 0xB2, 0x81, 0x18, 0x06, 0x20, 0x2E, 0x2E, 0x66, 0x5A, 0xB5, - 0x7B, 0x6E, 0xD6, 0x0C, 0x4E, 0x89, 0x01, 0x56, 0x70, 0xBB, - 0xAE, 0xDE, 0xE9, 0x99, 0x5E, 0xD1, 0xB9, 0x3A, 0xB7, 0x6C, - 0x17, 0xB6, 0x03, 0xA9, 0x08, 0xDD, 0x9C, 0xF4, 0x14, 0xC9, - 0xC9, 0x59, 0x39, 0x72, 0xD4, 0x7E, 0x02, 0x37, 0x31, 0xCD, - 0x0E, 0xA7, 0x3D, 0xF8, 0xF2, 0xCF, 0x6B, 0x15, 0xAB, 0x02, - 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, 0x12, 0x30, 0x82, - 0x01, 0x0E, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, - 0x16, 0x04, 0x14, 0xFA, 0x54, 0x89, 0x67, 0xE5, 0x5F, 0xB7, - 0x31, 0x40, 0xEA, 0xFD, 0xE7, 0xF6, 0xA3, 0xC6, 0x5A, 0x56, - 0x16, 0xA5, 0x6E, 0x30, 0x81, 0xDE, 0x06, 0x03, 0x55, 0x1D, - 0x23, 0x04, 0x81, 0xD6, 0x30, 0x81, 0xD3, 0x80, 0x14, 0xFA, - 0x54, 0x89, 0x67, 0xE5, 0x5F, 0xB7, 0x31, 0x40, 0xEA, 0xFD, - 0xE7, 0xF6, 0xA3, 0xC6, 0x5A, 0x56, 0x16, 0xA5, 0x6E, 0xA1, - 0x81, 0xA4, 0xA4, 0x81, 0xA1, 0x30, 0x81, 0x9E, 0x31, 0x0B, - 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, - 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, - 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, - 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, - 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x15, 0x30, - 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x0C, 0x77, 0x6F, - 0x6C, 0x66, 0x53, 0x53, 0x4C, 0x5F, 0x34, 0x30, 0x39, 0x36, - 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, - 0x10, 0x50, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x6D, 0x69, - 0x6E, 0x67, 0x2D, 0x34, 0x30, 0x39, 0x36, 0x31, 0x18, 0x30, - 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, - 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, - 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, - 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, - 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x82, 0x14, 0x2F, 0x0F, - 0xAB, 0x23, 0xBC, 0xA3, 0x14, 0x07, 0x91, 0x06, 0x55, 0x35, - 0x01, 0x63, 0x7F, 0x42, 0xBD, 0xFB, 0xF2, 0x43, 0x30, 0x0C, - 0x06, 0x03, 0x55, 0x1D, 0x13, 0x04, 0x05, 0x30, 0x03, 0x01, - 0x01, 0xFF, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, - 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03, 0x82, 0x02, - 0x01, 0x00, 0x57, 0x0D, 0x97, 0x98, 0x78, 0xBF, 0x2A, 0x31, - 0x9A, 0x39, 0x41, 0x38, 0x33, 0x46, 0xD5, 0x50, 0x47, 0xE8, - 0x19, 0x62, 0xA8, 0x36, 0x1E, 0xB7, 0xFD, 0xD1, 0xBC, 0x50, - 0x5C, 0x3A, 0xEB, 0x96, 0x1A, 0x9B, 0x43, 0xB0, 0x67, 0x5D, - 0xF4, 0x51, 0x77, 0x87, 0x33, 0x0B, 0x90, 0x6F, 0xE8, 0xD3, - 0x82, 0x4D, 0x1A, 0xAA, 0x93, 0x5F, 0x7D, 0x78, 0xB1, 0xE0, - 0x7B, 0xEE, 0x88, 0x01, 0xE7, 0xB3, 0xFA, 0x7E, 0x0B, 0x76, - 0x9C, 0x9E, 0x81, 0x36, 0xE4, 0xA3, 0xC1, 0x41, 0x62, 0xA4, - 0x0A, 0x7E, 0x24, 0xD0, 0xAB, 0x9F, 0xBA, 0xD8, 0x1E, 0x38, - 0xAD, 0xF1, 0x12, 0x52, 0x0D, 0xF2, 0x96, 0x8A, 0x0B, 0x25, - 0xA2, 0x49, 0x3F, 0x88, 0x5B, 0xEA, 0x23, 0x87, 0x26, 0x22, - 0x7A, 0xB9, 0x60, 0x6B, 0xD6, 0x7A, 0x88, 0x37, 0xAC, 0x64, - 0x9B, 0x18, 0x51, 0x07, 0xEA, 0xDF, 0x00, 0x96, 0x70, 0x95, - 0x88, 0x9D, 0x8F, 0xAF, 0xBE, 0x3C, 0x4E, 0xC7, 0x5E, 0x55, - 0x15, 0x3D, 0x1F, 0xE4, 0x2D, 0xDC, 0xC9, 0xA3, 0xAE, 0xAF, - 0xFA, 0x44, 0xA8, 0xE2, 0xF4, 0xDF, 0x8E, 0xCD, 0xF9, 0x10, - 0x7F, 0x8B, 0x86, 0xCC, 0x6D, 0x45, 0x91, 0x91, 0x4F, 0xE3, - 0xD0, 0xA7, 0xD2, 0xD9, 0x8E, 0x09, 0xC6, 0xF8, 0xEB, 0xE7, - 0xBD, 0x17, 0x19, 0xD6, 0xE7, 0x1A, 0xB8, 0xCA, 0x4D, 0xEC, - 0x34, 0x07, 0x7D, 0x2D, 0xE8, 0x23, 0x9D, 0x82, 0xE9, 0xF7, - 0x47, 0x03, 0xAB, 0x5F, 0x7C, 0xF5, 0x41, 0x6F, 0x70, 0x11, - 0xCB, 0x24, 0xD8, 0x23, 0xC2, 0x65, 0x31, 0xB7, 0x0B, 0x8F, - 0x0A, 0x26, 0x5B, 0x0F, 0xF6, 0x9B, 0x11, 0x7F, 0x9A, 0x8D, - 0x94, 0x6D, 0x5A, 0x9C, 0x5E, 0x73, 0x35, 0x15, 0x7B, 0xE3, - 0x09, 0xE8, 0x08, 0xD0, 0x3F, 0xB4, 0xE5, 0x29, 0x2C, 0xF6, - 0x3E, 0x71, 0x6E, 0xF4, 0x1B, 0x20, 0x55, 0x34, 0x40, 0x2F, - 0xB0, 0x9B, 0xDD, 0xF1, 0xDC, 0xBF, 0x17, 0x1D, 0xA7, 0x2D, - 0x85, 0x01, 0xD6, 0xD2, 0xB2, 0x56, 0x56, 0x98, 0x33, 0x85, - 0xED, 0xF6, 0xA3, 0xF6, 0x3E, 0x7B, 0xF4, 0x03, 0xA4, 0x58, - 0x8E, 0xC5, 0x5B, 0xAB, 0x66, 0xE8, 0x0F, 0x34, 0x17, 0x2D, - 0x33, 0x36, 0x71, 0x0C, 0xB8, 0xD9, 0x78, 0xE7, 0x06, 0xFC, - 0xDA, 0x4F, 0xA1, 0xFA, 0xDB, 0x74, 0xCE, 0xEA, 0x85, 0x27, - 0xF9, 0x75, 0xA9, 0xAD, 0x50, 0x86, 0x6E, 0xEA, 0x01, 0x01, - 0x19, 0x0D, 0x28, 0x4A, 0xED, 0x06, 0xBE, 0x65, 0x70, 0xB2, - 0x06, 0x46, 0x2E, 0x16, 0x57, 0xDF, 0x55, 0xC7, 0x8E, 0xCD, - 0x5B, 0xAD, 0x66, 0x28, 0xB8, 0x74, 0x87, 0xBF, 0xC4, 0xC7, - 0x08, 0x3F, 0x37, 0xA3, 0x23, 0x84, 0x9F, 0x4E, 0xE8, 0x48, - 0x6C, 0x8D, 0x54, 0x9F, 0xFB, 0xE0, 0xFB, 0x53, 0xA3, 0x41, - 0xE1, 0x68, 0x8A, 0x94, 0xC9, 0xF5, 0xEE, 0x3E, 0x15, 0x46, - 0xD2, 0x62, 0x33, 0x86, 0x86, 0x06, 0x34, 0xB4, 0xE4, 0x2F, - 0xDA, 0x28, 0x2E, 0x2F, 0xC0, 0xBD, 0x75, 0xE8, 0x2C, 0x3F, - 0xE2, 0xA5, 0x43, 0x7D, 0x02, 0xEB, 0x25, 0xB9, 0xEF, 0x87, - 0x8A, 0xD7, 0x57, 0x61, 0x16, 0xE8, 0x9E, 0x83, 0x65, 0xF9, - 0x10, 0xF4, 0x5E, 0x5F, 0x1C, 0x7A, 0x25, 0xD6, 0x47, 0xBD, - 0x29, 0xC5, 0x4F, 0x8B, 0xB9, 0x6A, 0x48, 0x7A, 0x9B, 0x1E, - 0x6D, 0x77, 0x8E, 0x72, 0x6C, 0x0C, 0x07, 0xFE, 0x4C, 0xC5, - 0xCF, 0x55, 0x0E, 0xCB, 0x4B, 0xAD, 0x16, 0xE1, 0xE2, 0x54, - 0xB8, 0x9D, 0x34, 0x03, 0xD1, 0x8D, 0xB7, 0x37, 0x9B, 0xE3, - 0x5A, 0x32, 0x60, 0x03, 0x7F, 0x61, 0x0F, 0x50, 0x0B, 0x72, - 0x54, 0x8B, 0x0D, 0xC7, 0x97, 0x7E, 0xBB, 0x9B, 0xB2, 0xF7, - 0x73, 0x47, 0x71, 0x7B, 0x78, 0x65, 0x36, 0xDF, 0x57, 0x72, - 0x9E, 0x42, 0x9C, 0x8A -}; -static const int sizeof_client_cert_der_4096 = sizeof(client_cert_der_4096); - -/* ./certs/dh4096.der, 4096-bit */ -static const unsigned char dh_key_der_4096[] = -{ - 0x30, 0x82, 0x02, 0x08, 0x02, 0x82, 0x02, 0x01, 0x00, 0xE9, - 0x0E, 0x3E, 0x79, 0x4F, 0xC9, 0xB2, 0xA0, 0xB1, 0xDB, 0x2F, - 0x1E, 0x24, 0x21, 0x90, 0x5C, 0x50, 0xA4, 0x34, 0xDB, 0x99, - 0x90, 0xAC, 0xF7, 0xBF, 0x2F, 0x01, 0x4B, 0xAC, 0x87, 0x70, - 0xBA, 0xEC, 0xD1, 0x64, 0xDE, 0x04, 0xCA, 0xFC, 0xF9, 0x51, - 0x69, 0x1E, 0xB7, 0x99, 0xE2, 0xB4, 0x0D, 0xDB, 0x5D, 0x78, - 0x38, 0x38, 0x41, 0x05, 0xE8, 0x67, 0x48, 0x65, 0x54, 0x71, - 0xCC, 0xC9, 0xAA, 0x95, 0x1E, 0xD4, 0xBF, 0xBC, 0xCA, 0x5D, - 0xC2, 0x9C, 0x9E, 0x7E, 0x5E, 0x94, 0x5B, 0x2F, 0x60, 0x72, - 0xED, 0xEB, 0x54, 0x0C, 0x48, 0x2B, 0x21, 0x74, 0x4D, 0x37, - 0x04, 0x5A, 0x2F, 0x8B, 0x24, 0x4A, 0xDB, 0xEE, 0xFA, 0xA9, - 0x94, 0x13, 0x8F, 0x52, 0x4A, 0x1B, 0xAE, 0xE6, 0xC8, 0x7F, - 0x99, 0x09, 0x23, 0x84, 0x89, 0xE9, 0xA6, 0x53, 0x82, 0xB6, - 0x03, 0x6D, 0x38, 0x5D, 0x2E, 0xEB, 0x0B, 0xF0, 0xE6, 0xAA, - 0xB1, 0x8B, 0x51, 0xFC, 0xD6, 0x13, 0xFB, 0x20, 0xCB, 0xDF, - 0x79, 0x97, 0xDB, 0x55, 0x74, 0xC2, 0x21, 0xE8, 0xDB, 0x8C, - 0x6A, 0x95, 0x2D, 0x51, 0x91, 0xA7, 0xA1, 0x3C, 0x9B, 0xEF, - 0xF5, 0x43, 0xAC, 0xA6, 0x69, 0xCE, 0x66, 0x5C, 0xD5, 0xB1, - 0xF8, 0xBA, 0xD4, 0x86, 0x25, 0x29, 0x2E, 0x0E, 0x23, 0x05, - 0xDA, 0x7C, 0x7C, 0xC2, 0x7B, 0xC8, 0xB5, 0x79, 0x84, 0x6D, - 0x68, 0x2D, 0x82, 0x4A, 0x35, 0x9F, 0xDC, 0x0E, 0x63, 0x2B, - 0x58, 0x5F, 0x34, 0x7E, 0xA8, 0x73, 0xCE, 0x44, 0x53, 0x11, - 0xE3, 0xDB, 0x46, 0xFA, 0x3A, 0xC3, 0xDA, 0x63, 0xA5, 0x65, - 0x56, 0x99, 0xA5, 0x91, 0x27, 0xD6, 0xE7, 0xDF, 0x2D, 0xEF, - 0xA0, 0x81, 0xB6, 0x07, 0x3A, 0xC6, 0xC1, 0x2B, 0xA1, 0x3A, - 0x74, 0xB4, 0xE9, 0xE1, 0x2F, 0x6B, 0x2B, 0xE4, 0xF0, 0x98, - 0xBE, 0x6F, 0xCB, 0xBB, 0xAE, 0x8D, 0xD2, 0x7E, 0x1B, 0x6F, - 0xBA, 0xF2, 0xB2, 0xB8, 0xB1, 0x5D, 0x9E, 0x79, 0x19, 0xF7, - 0x94, 0xB2, 0xC1, 0x17, 0x5E, 0x9B, 0xB3, 0x05, 0x67, 0x6D, - 0x5C, 0x62, 0x64, 0xA8, 0x2B, 0xB0, 0x36, 0x3D, 0xF9, 0x4C, - 0x65, 0x53, 0xEE, 0x2E, 0x55, 0x69, 0xCC, 0x1C, 0xF5, 0x96, - 0xDC, 0xBE, 0x60, 0x5E, 0x37, 0xEE, 0xD4, 0x63, 0x96, 0x51, - 0x97, 0x96, 0x14, 0x3C, 0x61, 0xBF, 0x53, 0xAA, 0x24, 0xB5, - 0x24, 0x5B, 0x26, 0x67, 0xAD, 0x02, 0x67, 0xB8, 0xD3, 0x05, - 0x6E, 0xA4, 0x8F, 0x46, 0x91, 0x9D, 0x84, 0xA6, 0x2C, 0x44, - 0x9F, 0x2D, 0x18, 0x2F, 0x73, 0xA5, 0xE5, 0xC4, 0xD9, 0x4F, - 0xD9, 0x9F, 0xF5, 0xC0, 0xC5, 0x48, 0xE8, 0x23, 0x32, 0xC4, - 0x4A, 0xCE, 0xFF, 0x3B, 0x16, 0x87, 0x85, 0xA5, 0x1F, 0x22, - 0xA8, 0x0B, 0x91, 0x97, 0x24, 0x95, 0x07, 0xC8, 0x73, 0xD2, - 0xB0, 0x01, 0xF8, 0x20, 0xA9, 0xAB, 0x6B, 0x71, 0x79, 0x24, - 0xF3, 0x79, 0xB5, 0x9B, 0x00, 0xF5, 0xF9, 0xAE, 0x23, 0xAC, - 0xEA, 0xE1, 0x48, 0x88, 0x28, 0x53, 0xE0, 0xC8, 0x76, 0x29, - 0xAE, 0x3E, 0x25, 0x9F, 0x1C, 0xC5, 0x8A, 0x86, 0x33, 0x02, - 0x21, 0xAB, 0xA5, 0x10, 0xF0, 0x07, 0x1B, 0x56, 0x8F, 0xCD, - 0xFC, 0x87, 0x9E, 0x2E, 0xD0, 0x44, 0x98, 0x44, 0x99, 0xB3, - 0xC2, 0x14, 0xCE, 0xD8, 0x93, 0xEA, 0xD1, 0x82, 0x3C, 0x1B, - 0x49, 0xE8, 0x6F, 0x04, 0xB2, 0xF5, 0xAF, 0x9B, 0x37, 0x7D, - 0xE5, 0xE0, 0x56, 0xE9, 0xEE, 0x00, 0x58, 0x25, 0x16, 0x23, - 0xC3, 0x8E, 0xF0, 0xB9, 0xE2, 0x98, 0x5D, 0xF2, 0x4F, 0x5C, - 0xC3, 0x27, 0x2A, 0x67, 0x7D, 0x43, 0xF6, 0x36, 0x76, 0xD4, - 0x2C, 0x7E, 0x16, 0x80, 0xCB, 0xF1, 0x07, 0xDC, 0xB9, 0xF5, - 0xF3, 0x56, 0xBD, 0xF0, 0xFC, 0x00, 0x78, 0x00, 0x56, 0xB4, - 0x3B, 0x02, 0x01, 0x02 -}; -static const int sizeof_dh_key_der_4096 = sizeof(dh_key_der_4096); - -#endif /* USE_CERT_BUFFERS_4096 */ - -#if defined(HAVE_ECC) && defined(USE_CERT_BUFFERS_256) - -/* ./certs/ecc-client-key.der, ECC */ -static const unsigned char ecc_clikey_der_256[] = -{ - 0x30, 0x77, 0x02, 0x01, 0x01, 0x04, 0x20, 0xF8, 0xCF, 0x92, - 0x6B, 0xBD, 0x1E, 0x28, 0xF1, 0xA8, 0xAB, 0xA1, 0x23, 0x4F, - 0x32, 0x74, 0x18, 0x88, 0x50, 0xAD, 0x7E, 0xC7, 0xEC, 0x92, - 0xF8, 0x8F, 0x97, 0x4D, 0xAF, 0x56, 0x89, 0x65, 0xC7, 0xA0, - 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, - 0x07, 0xA1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x55, 0xBF, 0xF4, - 0x0F, 0x44, 0x50, 0x9A, 0x3D, 0xCE, 0x9B, 0xB7, 0xF0, 0xC5, - 0x4D, 0xF5, 0x70, 0x7B, 0xD4, 0xEC, 0x24, 0x8E, 0x19, 0x80, - 0xEC, 0x5A, 0x4C, 0xA2, 0x24, 0x03, 0x62, 0x2C, 0x9B, 0xDA, - 0xEF, 0xA2, 0x35, 0x12, 0x43, 0x84, 0x76, 0x16, 0xC6, 0x56, - 0x95, 0x06, 0xCC, 0x01, 0xA9, 0xBD, 0xF6, 0x75, 0x1A, 0x42, - 0xF7, 0xBD, 0xA9, 0xB2, 0x36, 0x22, 0x5F, 0xC7, 0x5D, 0x7F, - 0xB4 -}; -static const int sizeof_ecc_clikey_der_256 = sizeof(ecc_clikey_der_256); - -/* ./certs/ecc-client-keyPub.der, ECC */ -static const unsigned char ecc_clikeypub_der_256[] = -{ - 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, - 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, - 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0x55, 0xBF, 0xF4, - 0x0F, 0x44, 0x50, 0x9A, 0x3D, 0xCE, 0x9B, 0xB7, 0xF0, 0xC5, - 0x4D, 0xF5, 0x70, 0x7B, 0xD4, 0xEC, 0x24, 0x8E, 0x19, 0x80, - 0xEC, 0x5A, 0x4C, 0xA2, 0x24, 0x03, 0x62, 0x2C, 0x9B, 0xDA, - 0xEF, 0xA2, 0x35, 0x12, 0x43, 0x84, 0x76, 0x16, 0xC6, 0x56, - 0x95, 0x06, 0xCC, 0x01, 0xA9, 0xBD, 0xF6, 0x75, 0x1A, 0x42, - 0xF7, 0xBD, 0xA9, 0xB2, 0x36, 0x22, 0x5F, 0xC7, 0x5D, 0x7F, - 0xB4 -}; -static const int sizeof_ecc_clikeypub_der_256 = sizeof(ecc_clikeypub_der_256); - -/* ./certs/client-ecc-cert.der, ECC */ -static const unsigned char cliecc_cert_der_256[] = -{ - 0x30, 0x82, 0x03, 0x08, 0x30, 0x82, 0x02, 0xAF, 0xA0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0x93, 0xBF, 0x6A, 0xDE, - 0x9B, 0x41, 0x9D, 0xAD, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, - 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x30, 0x81, 0x8D, 0x31, - 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, - 0x55, 0x53, 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, 0x55, 0x04, - 0x08, 0x0C, 0x06, 0x4F, 0x72, 0x65, 0x67, 0x6F, 0x6E, 0x31, - 0x0E, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x05, - 0x53, 0x61, 0x6C, 0x65, 0x6D, 0x31, 0x13, 0x30, 0x11, 0x06, - 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x0A, 0x43, 0x6C, 0x69, 0x65, - 0x6E, 0x74, 0x20, 0x45, 0x43, 0x43, 0x31, 0x0D, 0x30, 0x0B, - 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x04, 0x46, 0x61, 0x73, - 0x74, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, - 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, - 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, - 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, - 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, - 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, - 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30, 0x34, 0x31, 0x33, - 0x31, 0x35, 0x32, 0x33, 0x31, 0x30, 0x5A, 0x17, 0x0D, 0x32, - 0x31, 0x30, 0x31, 0x30, 0x37, 0x31, 0x35, 0x32, 0x33, 0x31, - 0x30, 0x5A, 0x30, 0x81, 0x8D, 0x31, 0x0B, 0x30, 0x09, 0x06, - 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0F, - 0x30, 0x0D, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x06, 0x4F, - 0x72, 0x65, 0x67, 0x6F, 0x6E, 0x31, 0x0E, 0x30, 0x0C, 0x06, - 0x03, 0x55, 0x04, 0x07, 0x0C, 0x05, 0x53, 0x61, 0x6C, 0x65, - 0x6D, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x0A, - 0x0C, 0x0A, 0x43, 0x6C, 0x69, 0x65, 0x6E, 0x74, 0x20, 0x45, - 0x43, 0x43, 0x31, 0x0D, 0x30, 0x0B, 0x06, 0x03, 0x55, 0x04, - 0x0B, 0x0C, 0x04, 0x46, 0x61, 0x73, 0x74, 0x31, 0x18, 0x30, - 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, - 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, - 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, - 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, - 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x59, 0x30, 0x13, - 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, - 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07, 0x03, - 0x42, 0x00, 0x04, 0x55, 0xBF, 0xF4, 0x0F, 0x44, 0x50, 0x9A, - 0x3D, 0xCE, 0x9B, 0xB7, 0xF0, 0xC5, 0x4D, 0xF5, 0x70, 0x7B, - 0xD4, 0xEC, 0x24, 0x8E, 0x19, 0x80, 0xEC, 0x5A, 0x4C, 0xA2, - 0x24, 0x03, 0x62, 0x2C, 0x9B, 0xDA, 0xEF, 0xA2, 0x35, 0x12, - 0x43, 0x84, 0x76, 0x16, 0xC6, 0x56, 0x95, 0x06, 0xCC, 0x01, - 0xA9, 0xBD, 0xF6, 0x75, 0x1A, 0x42, 0xF7, 0xBD, 0xA9, 0xB2, - 0x36, 0x22, 0x5F, 0xC7, 0x5D, 0x7F, 0xB4, 0xA3, 0x81, 0xF5, - 0x30, 0x81, 0xF2, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, - 0x04, 0x16, 0x04, 0x14, 0xEB, 0xD4, 0x4B, 0x59, 0x6B, 0x95, - 0x61, 0x3F, 0x51, 0x57, 0xB6, 0x04, 0x4D, 0x89, 0x41, 0x88, - 0x44, 0x5C, 0xAB, 0xF2, 0x30, 0x81, 0xC2, 0x06, 0x03, 0x55, - 0x1D, 0x23, 0x04, 0x81, 0xBA, 0x30, 0x81, 0xB7, 0x80, 0x14, - 0xEB, 0xD4, 0x4B, 0x59, 0x6B, 0x95, 0x61, 0x3F, 0x51, 0x57, - 0xB6, 0x04, 0x4D, 0x89, 0x41, 0x88, 0x44, 0x5C, 0xAB, 0xF2, - 0xA1, 0x81, 0x93, 0xA4, 0x81, 0x90, 0x30, 0x81, 0x8D, 0x31, - 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, - 0x55, 0x53, 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, 0x55, 0x04, - 0x08, 0x0C, 0x06, 0x4F, 0x72, 0x65, 0x67, 0x6F, 0x6E, 0x31, - 0x0E, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x05, - 0x53, 0x61, 0x6C, 0x65, 0x6D, 0x31, 0x13, 0x30, 0x11, 0x06, - 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x0A, 0x43, 0x6C, 0x69, 0x65, - 0x6E, 0x74, 0x20, 0x45, 0x43, 0x43, 0x31, 0x0D, 0x30, 0x0B, - 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x04, 0x46, 0x61, 0x73, - 0x74, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, - 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, - 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, - 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, - 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, - 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, - 0x82, 0x09, 0x00, 0x93, 0xBF, 0x6A, 0xDE, 0x9B, 0x41, 0x9D, - 0xAD, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x04, 0x05, - 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x0A, 0x06, 0x08, 0x2A, - 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x03, 0x47, 0x00, - 0x30, 0x44, 0x02, 0x20, 0x61, 0xBC, 0x9D, 0x4D, 0x88, 0x64, - 0x86, 0xB8, 0x71, 0xAA, 0x35, 0x59, 0x68, 0xB8, 0xEE, 0x2C, - 0xF3, 0x23, 0xB5, 0x1A, 0xB9, 0xBA, 0x41, 0x50, 0xA8, 0xC6, - 0xC3, 0x58, 0xEB, 0x58, 0xBD, 0x60, 0x02, 0x20, 0x61, 0xAA, - 0xEB, 0xB5, 0x73, 0x0D, 0x01, 0xDB, 0x69, 0x8F, 0x52, 0xF5, - 0x72, 0x6D, 0x37, 0x42, 0xB5, 0xFD, 0x94, 0xB6, 0x6E, 0xB1, - 0xC4, 0x25, 0x2E, 0x96, 0x96, 0xF3, 0x39, 0xB2, 0x5D, 0xEA - -}; -static const int sizeof_cliecc_cert_der_256 = sizeof(cliecc_cert_der_256); - -/* ./certs/ecc-key.der, ECC */ -static const unsigned char ecc_key_der_256[] = -{ - 0x30, 0x77, 0x02, 0x01, 0x01, 0x04, 0x20, 0x45, 0xB6, 0x69, - 0x02, 0x73, 0x9C, 0x6C, 0x85, 0xA1, 0x38, 0x5B, 0x72, 0xE8, - 0xE8, 0xC7, 0xAC, 0xC4, 0x03, 0x8D, 0x53, 0x35, 0x04, 0xFA, - 0x6C, 0x28, 0xDC, 0x34, 0x8D, 0xE1, 0xA8, 0x09, 0x8C, 0xA0, - 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, - 0x07, 0xA1, 0x44, 0x03, 0x42, 0x00, 0x04, 0xBB, 0x33, 0xAC, - 0x4C, 0x27, 0x50, 0x4A, 0xC6, 0x4A, 0xA5, 0x04, 0xC3, 0x3C, - 0xDE, 0x9F, 0x36, 0xDB, 0x72, 0x2D, 0xCE, 0x94, 0xEA, 0x2B, - 0xFA, 0xCB, 0x20, 0x09, 0x39, 0x2C, 0x16, 0xE8, 0x61, 0x02, - 0xE9, 0xAF, 0x4D, 0xD3, 0x02, 0x93, 0x9A, 0x31, 0x5B, 0x97, - 0x92, 0x21, 0x7F, 0xF0, 0xCF, 0x18, 0xDA, 0x91, 0x11, 0x02, - 0x34, 0x86, 0xE8, 0x20, 0x58, 0x33, 0x0B, 0x80, 0x34, 0x89, - 0xD8 -}; -static const int sizeof_ecc_key_der_256 = sizeof(ecc_key_der_256); - -/* ./certs/ecc-keyPub.der, ECC */ -static const unsigned char ecc_key_pub_der_256[] = -{ - 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, - 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, - 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xBB, 0x33, 0xAC, - 0x4C, 0x27, 0x50, 0x4A, 0xC6, 0x4A, 0xA5, 0x04, 0xC3, 0x3C, - 0xDE, 0x9F, 0x36, 0xDB, 0x72, 0x2D, 0xCE, 0x94, 0xEA, 0x2B, - 0xFA, 0xCB, 0x20, 0x09, 0x39, 0x2C, 0x16, 0xE8, 0x61, 0x02, - 0xE9, 0xAF, 0x4D, 0xD3, 0x02, 0x93, 0x9A, 0x31, 0x5B, 0x97, - 0x92, 0x21, 0x7F, 0xF0, 0xCF, 0x18, 0xDA, 0x91, 0x11, 0x02, - 0x34, 0x86, 0xE8, 0x20, 0x58, 0x33, 0x0B, 0x80, 0x34, 0x89, - 0xD8 -}; -static const int sizeof_ecc_key_pub_der_256 = sizeof(ecc_key_pub_der_256); - -/* ./certs/server-ecc-comp.der, ECC */ -static const unsigned char serv_ecc_comp_der_256[] = -{ - 0x30, 0x82, 0x03, 0x23, 0x30, 0x82, 0x02, 0xCA, 0xA0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0x80, 0x78, 0xC9, 0xB7, - 0x06, 0x5A, 0xC5, 0x83, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, - 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x30, 0x81, 0xA0, 0x31, - 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, - 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, - 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, - 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, - 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x18, - 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x0F, 0x45, - 0x6C, 0x6C, 0x69, 0x70, 0x74, 0x69, 0x63, 0x20, 0x2D, 0x20, - 0x63, 0x6F, 0x6D, 0x70, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, - 0x55, 0x04, 0x0B, 0x0C, 0x0F, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x20, 0x45, 0x43, 0x43, 0x2D, 0x63, 0x6F, 0x6D, 0x70, - 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, - 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, - 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, - 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, - 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, - 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x30, - 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30, 0x34, 0x31, 0x33, 0x31, - 0x35, 0x32, 0x33, 0x31, 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x31, - 0x30, 0x31, 0x30, 0x37, 0x31, 0x35, 0x32, 0x33, 0x31, 0x30, - 0x5A, 0x30, 0x81, 0xA0, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, - 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, - 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, - 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, - 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, - 0x6D, 0x61, 0x6E, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, - 0x04, 0x0A, 0x0C, 0x0F, 0x45, 0x6C, 0x6C, 0x69, 0x70, 0x74, - 0x69, 0x63, 0x20, 0x2D, 0x20, 0x63, 0x6F, 0x6D, 0x70, 0x31, - 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x0F, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x45, 0x43, 0x43, - 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x31, 0x18, 0x30, 0x16, 0x06, - 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, - 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, - 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, - 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, - 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, - 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x39, 0x30, 0x13, 0x06, 0x07, - 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, - 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07, 0x03, 0x22, 0x00, - 0x02, 0xBB, 0x33, 0xAC, 0x4C, 0x27, 0x50, 0x4A, 0xC6, 0x4A, - 0xA5, 0x04, 0xC3, 0x3C, 0xDE, 0x9F, 0x36, 0xDB, 0x72, 0x2D, - 0xCE, 0x94, 0xEA, 0x2B, 0xFA, 0xCB, 0x20, 0x09, 0x39, 0x2C, - 0x16, 0xE8, 0x61, 0xA3, 0x82, 0x01, 0x09, 0x30, 0x82, 0x01, - 0x05, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, - 0x04, 0x14, 0x8C, 0x38, 0x3A, 0x6B, 0xB8, 0x24, 0xB7, 0xDF, - 0x6E, 0xF4, 0x59, 0xAC, 0x56, 0x4E, 0xAA, 0xE2, 0x58, 0xA6, - 0x5A, 0x18, 0x30, 0x81, 0xD5, 0x06, 0x03, 0x55, 0x1D, 0x23, - 0x04, 0x81, 0xCD, 0x30, 0x81, 0xCA, 0x80, 0x14, 0x8C, 0x38, - 0x3A, 0x6B, 0xB8, 0x24, 0xB7, 0xDF, 0x6E, 0xF4, 0x59, 0xAC, - 0x56, 0x4E, 0xAA, 0xE2, 0x58, 0xA6, 0x5A, 0x18, 0xA1, 0x81, - 0xA6, 0xA4, 0x81, 0xA3, 0x30, 0x81, 0xA0, 0x31, 0x0B, 0x30, - 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, - 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, - 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, - 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, - 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x18, 0x30, 0x16, - 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x0F, 0x45, 0x6C, 0x6C, - 0x69, 0x70, 0x74, 0x69, 0x63, 0x20, 0x2D, 0x20, 0x63, 0x6F, - 0x6D, 0x70, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, - 0x0B, 0x0C, 0x0F, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, - 0x45, 0x43, 0x43, 0x2D, 0x63, 0x6F, 0x6D, 0x70, 0x31, 0x18, - 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, - 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, - 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, - 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, - 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, - 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x82, 0x09, 0x00, - 0x80, 0x78, 0xC9, 0xB7, 0x06, 0x5A, 0xC5, 0x83, 0x30, 0x0C, - 0x06, 0x03, 0x55, 0x1D, 0x13, 0x04, 0x05, 0x30, 0x03, 0x01, - 0x01, 0xFF, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, - 0x3D, 0x04, 0x03, 0x02, 0x03, 0x47, 0x00, 0x30, 0x44, 0x02, - 0x20, 0x31, 0x44, 0xD0, 0x4E, 0xD7, 0xC4, 0xB4, 0x96, 0xA3, - 0xE6, 0x25, 0xFD, 0xFA, 0xD6, 0x28, 0xA8, 0x67, 0x51, 0x72, - 0x90, 0x95, 0x31, 0xF9, 0xCD, 0x10, 0xBF, 0x11, 0xE4, 0xEC, - 0xB7, 0x42, 0x5B, 0x02, 0x20, 0x45, 0xDB, 0x45, 0x0A, 0x24, - 0x58, 0x8E, 0x2E, 0xE6, 0xEA, 0x0C, 0x6C, 0xBC, 0x72, 0x4F, - 0x0A, 0x1B, 0xF3, 0x2D, 0x97, 0xE9, 0xC2, 0x19, 0xF9, 0x97, - 0x3A, 0x60, 0xDD, 0x08, 0xD3, 0x52, 0x3E -}; -static const int sizeof_serv_ecc_comp_der_256 = sizeof(serv_ecc_comp_der_256); - -/* ./certs/server-ecc-rsa.der, ECC */ -static const unsigned char serv_ecc_rsa_der_256[] = -{ - 0x30, 0x82, 0x03, 0xE0, 0x30, 0x82, 0x02, 0xC8, 0xA0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x01, 0x01, 0x30, 0x0D, 0x06, 0x09, - 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, - 0x00, 0x30, 0x81, 0x94, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, - 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, - 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, - 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, - 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, - 0x6D, 0x61, 0x6E, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, - 0x04, 0x0A, 0x0C, 0x08, 0x53, 0x61, 0x77, 0x74, 0x6F, 0x6F, - 0x74, 0x68, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, - 0x0B, 0x0C, 0x0A, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, - 0x69, 0x6E, 0x67, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, - 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, - 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, - 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, - 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, - 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, - 0x6F, 0x6D, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30, 0x34, - 0x31, 0x33, 0x31, 0x35, 0x32, 0x33, 0x31, 0x30, 0x5A, 0x17, - 0x0D, 0x32, 0x31, 0x30, 0x31, 0x30, 0x37, 0x31, 0x35, 0x32, - 0x33, 0x31, 0x30, 0x5A, 0x30, 0x81, 0x9D, 0x31, 0x0B, 0x30, - 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, - 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, - 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, - 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, - 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x1A, 0x30, 0x18, - 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x11, 0x45, 0x6C, 0x6C, - 0x69, 0x70, 0x74, 0x69, 0x63, 0x20, 0x2D, 0x20, 0x52, 0x53, - 0x41, 0x73, 0x69, 0x67, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, - 0x55, 0x04, 0x0B, 0x0C, 0x0A, 0x45, 0x43, 0x43, 0x2D, 0x52, - 0x53, 0x41, 0x73, 0x69, 0x67, 0x31, 0x18, 0x30, 0x16, 0x06, - 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, - 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, - 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, - 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, - 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, - 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, - 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, - 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, - 0x04, 0xBB, 0x33, 0xAC, 0x4C, 0x27, 0x50, 0x4A, 0xC6, 0x4A, - 0xA5, 0x04, 0xC3, 0x3C, 0xDE, 0x9F, 0x36, 0xDB, 0x72, 0x2D, - 0xCE, 0x94, 0xEA, 0x2B, 0xFA, 0xCB, 0x20, 0x09, 0x39, 0x2C, - 0x16, 0xE8, 0x61, 0x02, 0xE9, 0xAF, 0x4D, 0xD3, 0x02, 0x93, - 0x9A, 0x31, 0x5B, 0x97, 0x92, 0x21, 0x7F, 0xF0, 0xCF, 0x18, - 0xDA, 0x91, 0x11, 0x02, 0x34, 0x86, 0xE8, 0x20, 0x58, 0x33, - 0x0B, 0x80, 0x34, 0x89, 0xD8, 0xA3, 0x81, 0xFC, 0x30, 0x81, - 0xF9, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, - 0x04, 0x14, 0x5D, 0x5D, 0x26, 0xEF, 0xAC, 0x7E, 0x36, 0xF9, - 0x9B, 0x76, 0x15, 0x2B, 0x4A, 0x25, 0x02, 0x23, 0xEF, 0xB2, - 0x89, 0x30, 0x30, 0x81, 0xC9, 0x06, 0x03, 0x55, 0x1D, 0x23, - 0x04, 0x81, 0xC1, 0x30, 0x81, 0xBE, 0x80, 0x14, 0x27, 0x8E, - 0x67, 0x11, 0x74, 0xC3, 0x26, 0x1D, 0x3F, 0xED, 0x33, 0x63, - 0xB3, 0xA4, 0xD8, 0x1D, 0x30, 0xE5, 0xE8, 0xD5, 0xA1, 0x81, - 0x9A, 0xA4, 0x81, 0x97, 0x30, 0x81, 0x94, 0x31, 0x0B, 0x30, - 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, - 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, - 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, - 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, - 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x11, 0x30, 0x0F, - 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x08, 0x53, 0x61, 0x77, - 0x74, 0x6F, 0x6F, 0x74, 0x68, 0x31, 0x13, 0x30, 0x11, 0x06, - 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x0A, 0x43, 0x6F, 0x6E, 0x73, - 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x31, 0x18, 0x30, 0x16, - 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, - 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, - 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, - 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, - 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, - 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x82, 0x09, 0x00, 0x86, 0xFF, - 0xF5, 0x8E, 0x10, 0xDE, 0xB8, 0xFB, 0x30, 0x0C, 0x06, 0x03, - 0x55, 0x1D, 0x13, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, - 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, - 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, - 0x0C, 0xBB, 0x67, 0xBD, 0xFC, 0xCD, 0x53, 0x6C, 0xFB, 0x4E, - 0x58, 0xC8, 0xEA, 0x52, 0x92, 0xEB, 0xE4, 0xC8, 0xBC, 0x57, - 0x0F, 0x08, 0x20, 0xC8, 0x83, 0xB0, 0xD5, 0xEA, 0x57, 0x27, - 0xBD, 0x68, 0x91, 0xFB, 0x99, 0x84, 0x8D, 0x15, 0x9E, 0x4F, - 0x8F, 0xC4, 0xCB, 0x34, 0x61, 0xC0, 0x59, 0x12, 0x9B, 0xC8, - 0x82, 0x17, 0x38, 0x4F, 0x9E, 0x53, 0x08, 0xA3, 0x69, 0x2E, - 0x2F, 0xC0, 0xB4, 0x2F, 0xA2, 0x4E, 0x10, 0x64, 0xB0, 0x07, - 0xA1, 0x51, 0x08, 0x1D, 0x91, 0x53, 0xA2, 0x79, 0x55, 0x20, - 0x41, 0x65, 0x35, 0x3E, 0x0B, 0x38, 0x01, 0x57, 0x02, 0x8C, - 0x25, 0xE7, 0xAB, 0x4F, 0x8B, 0x59, 0xF0, 0xED, 0x8E, 0x4A, - 0x15, 0x0B, 0x32, 0xFB, 0x7A, 0x8B, 0x02, 0xEA, 0x9D, 0xE1, - 0xAB, 0xC4, 0x07, 0xCC, 0xDA, 0x0F, 0xA3, 0x16, 0xDB, 0x8E, - 0x5B, 0xBC, 0x96, 0xAB, 0x10, 0xB8, 0xDE, 0x09, 0x8B, 0xF7, - 0xCB, 0xA7, 0x78, 0x66, 0x17, 0xE3, 0x25, 0x6E, 0x57, 0x9D, - 0x13, 0x61, 0x7B, 0x55, 0x1A, 0xDF, 0x8F, 0x39, 0x15, 0x4E, - 0x42, 0x22, 0x00, 0x85, 0xC4, 0x51, 0x0B, 0x6B, 0xA6, 0x67, - 0xC0, 0xFB, 0xEA, 0x22, 0x77, 0x7D, 0x48, 0x76, 0xAB, 0x39, - 0x20, 0x09, 0xD5, 0x52, 0x89, 0x3E, 0x6B, 0x30, 0x7B, 0x50, - 0x18, 0xE8, 0x62, 0x05, 0xBE, 0xBB, 0x7F, 0x16, 0x77, 0x9C, - 0xBB, 0x5A, 0x22, 0x96, 0x99, 0xB0, 0x96, 0x83, 0xB7, 0x43, - 0x31, 0x97, 0xCF, 0xFD, 0x85, 0x52, 0xD8, 0x52, 0xC8, 0x67, - 0x5C, 0xF8, 0x22, 0x72, 0x35, 0x93, 0x92, 0x6C, 0xEC, 0x3C, - 0x6A, 0xC6, 0x81, 0x20, 0xA5, 0xCD, 0x50, 0xF9, 0x21, 0x7A, - 0xA6, 0x7A, 0x1E, 0xE7, 0x59, 0x22, 0x5D, 0x8A, 0x93, 0x51, - 0x8E, 0xFB, 0x29, 0x56, 0xFB, 0xBE, 0x9B, 0x87, 0x48, 0x5F, - 0xA5, 0x72, 0xE7, 0x4E, 0xFE, 0x5E -}; -static const int sizeof_serv_ecc_rsa_der_256 = sizeof(serv_ecc_rsa_der_256); - -/* ./certs/server-ecc.der, ECC */ -static const unsigned char serv_ecc_der_256[] = -{ - 0x30, 0x82, 0x03, 0x50, 0x30, 0x82, 0x02, 0xF5, 0xA0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x02, 0x10, 0x00, 0x30, 0x0A, 0x06, - 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x30, - 0x81, 0x97, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, - 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, - 0x03, 0x55, 0x04, 0x08, 0x0C, 0x0A, 0x57, 0x61, 0x73, 0x68, - 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0x31, 0x10, 0x30, 0x0E, - 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x53, 0x65, 0x61, - 0x74, 0x74, 0x6C, 0x65, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, - 0x55, 0x04, 0x0A, 0x0C, 0x07, 0x77, 0x6F, 0x6C, 0x66, 0x53, - 0x53, 0x4C, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, - 0x0B, 0x0C, 0x0B, 0x44, 0x65, 0x76, 0x65, 0x6C, 0x6F, 0x70, - 0x6D, 0x65, 0x6E, 0x74, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, - 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, - 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, - 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, - 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, - 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, - 0x63, 0x6F, 0x6D, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x37, 0x31, - 0x30, 0x32, 0x30, 0x31, 0x38, 0x31, 0x39, 0x30, 0x36, 0x5A, - 0x17, 0x0D, 0x32, 0x37, 0x31, 0x30, 0x31, 0x38, 0x31, 0x38, - 0x31, 0x39, 0x30, 0x36, 0x5A, 0x30, 0x81, 0x8F, 0x31, 0x0B, - 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, - 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, - 0x0C, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, - 0x6F, 0x6E, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, - 0x07, 0x0C, 0x07, 0x53, 0x65, 0x61, 0x74, 0x74, 0x6C, 0x65, - 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, - 0x07, 0x45, 0x6C, 0x69, 0x70, 0x74, 0x69, 0x63, 0x31, 0x0C, - 0x30, 0x0A, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x03, 0x45, - 0x43, 0x43, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, - 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, - 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, - 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, - 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, - 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, - 0x6D, 0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2A, 0x86, 0x48, - 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, - 0x3D, 0x03, 0x01, 0x07, 0x03, 0x42, 0x00, 0x04, 0xBB, 0x33, - 0xAC, 0x4C, 0x27, 0x50, 0x4A, 0xC6, 0x4A, 0xA5, 0x04, 0xC3, - 0x3C, 0xDE, 0x9F, 0x36, 0xDB, 0x72, 0x2D, 0xCE, 0x94, 0xEA, - 0x2B, 0xFA, 0xCB, 0x20, 0x09, 0x39, 0x2C, 0x16, 0xE8, 0x61, - 0x02, 0xE9, 0xAF, 0x4D, 0xD3, 0x02, 0x93, 0x9A, 0x31, 0x5B, - 0x97, 0x92, 0x21, 0x7F, 0xF0, 0xCF, 0x18, 0xDA, 0x91, 0x11, - 0x02, 0x34, 0x86, 0xE8, 0x20, 0x58, 0x33, 0x0B, 0x80, 0x34, - 0x89, 0xD8, 0xA3, 0x82, 0x01, 0x35, 0x30, 0x82, 0x01, 0x31, - 0x30, 0x09, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x04, 0x02, 0x30, - 0x00, 0x30, 0x11, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, - 0xF8, 0x42, 0x01, 0x01, 0x04, 0x04, 0x03, 0x02, 0x06, 0x40, - 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, - 0x14, 0x5D, 0x5D, 0x26, 0xEF, 0xAC, 0x7E, 0x36, 0xF9, 0x9B, - 0x76, 0x15, 0x2B, 0x4A, 0x25, 0x02, 0x23, 0xEF, 0xB2, 0x89, - 0x30, 0x30, 0x81, 0xCC, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, - 0x81, 0xC4, 0x30, 0x81, 0xC1, 0x80, 0x14, 0x56, 0x8E, 0x9A, - 0xC3, 0xF0, 0x42, 0xDE, 0x18, 0xB9, 0x45, 0x55, 0x6E, 0xF9, - 0x93, 0xCF, 0xEA, 0xC3, 0xF3, 0xA5, 0x21, 0xA1, 0x81, 0x9D, - 0xA4, 0x81, 0x9A, 0x30, 0x81, 0x97, 0x31, 0x0B, 0x30, 0x09, - 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, - 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x0A, - 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, - 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, - 0x07, 0x53, 0x65, 0x61, 0x74, 0x74, 0x6C, 0x65, 0x31, 0x10, - 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x07, 0x77, - 0x6F, 0x6C, 0x66, 0x53, 0x53, 0x4C, 0x31, 0x14, 0x30, 0x12, - 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x0B, 0x44, 0x65, 0x76, - 0x65, 0x6C, 0x6F, 0x70, 0x6D, 0x65, 0x6E, 0x74, 0x31, 0x18, - 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, - 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, - 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, - 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, - 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, - 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x82, 0x09, 0x00, - 0x97, 0xB4, 0xBD, 0x16, 0x78, 0xF8, 0x47, 0xF2, 0x30, 0x0E, - 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, - 0x03, 0x02, 0x03, 0xA8, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1D, - 0x25, 0x04, 0x0C, 0x30, 0x0A, 0x06, 0x08, 0x2B, 0x06, 0x01, - 0x05, 0x05, 0x07, 0x03, 0x01, 0x30, 0x0A, 0x06, 0x08, 0x2A, - 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x03, 0x49, 0x00, - 0x30, 0x46, 0x02, 0x21, 0x00, 0xBE, 0xB8, 0x58, 0xF0, 0xE4, - 0x15, 0x01, 0x1F, 0xDF, 0x70, 0x54, 0x73, 0x4A, 0x6C, 0x40, - 0x1F, 0x77, 0xA8, 0xB4, 0xEB, 0x52, 0x1E, 0xBF, 0xF5, 0x0D, - 0xB1, 0x33, 0xCA, 0x6A, 0xC4, 0x76, 0xB9, 0x02, 0x21, 0x00, - 0x97, 0x08, 0xDE, 0x2C, 0x28, 0xC1, 0x45, 0x71, 0xB6, 0x2C, - 0x54, 0x87, 0x98, 0x63, 0x76, 0xA8, 0x21, 0x34, 0x90, 0xA8, - 0xF7, 0x9E, 0x3F, 0xFC, 0x02, 0xB0, 0xE7, 0xD3, 0x09, 0x31, - 0x27, 0xE4 -}; -static const int sizeof_serv_ecc_der_256 = sizeof(serv_ecc_der_256); - -/* ./certs/ca-ecc-key.der, ECC */ -static const unsigned char ca_ecc_key_der_256[] = -{ - 0x30, 0x77, 0x02, 0x01, 0x01, 0x04, 0x20, 0x02, 0xE1, 0x33, - 0x98, 0x77, 0x97, 0xAC, 0x4A, 0x59, 0x6D, 0x28, 0x9B, 0x6E, - 0xA0, 0x93, 0x9B, 0x07, 0x71, 0x8B, 0x4D, 0x60, 0x63, 0x85, - 0x99, 0xE6, 0xBB, 0x16, 0x70, 0xE9, 0x0A, 0xF6, 0x80, 0xA0, - 0x0A, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, - 0x07, 0xA1, 0x44, 0x03, 0x42, 0x00, 0x04, 0x02, 0xD3, 0xD9, - 0x6E, 0xD6, 0x01, 0x8E, 0x45, 0xC8, 0xB9, 0x90, 0x31, 0xE5, - 0xC0, 0x4C, 0xE3, 0x9E, 0xAD, 0x29, 0x38, 0x98, 0xBA, 0x10, - 0xD6, 0xE9, 0x09, 0x2A, 0x80, 0xA9, 0x2E, 0x17, 0x2A, 0xB9, - 0x8A, 0xBF, 0x33, 0x83, 0x46, 0xE3, 0x95, 0x0B, 0xE4, 0x77, - 0x40, 0xB5, 0x3B, 0x43, 0x45, 0x33, 0x0F, 0x61, 0x53, 0x7C, - 0x37, 0x44, 0xC1, 0xCB, 0xFC, 0x80, 0xCA, 0xE8, 0x43, 0xEA, - 0xA7 -}; -static const int sizeof_ca_ecc_key_der_256 = sizeof(ca_ecc_key_der_256); - -/* ./certs/ca-ecc-cert.der, ECC */ -static const unsigned char ca_ecc_cert_der_256[] = -{ - 0x30, 0x82, 0x02, 0x8B, 0x30, 0x82, 0x02, 0x30, 0xA0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0xFD, 0x0E, 0x29, 0x21, - 0x66, 0xCB, 0x48, 0xA3, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, - 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, 0x30, 0x81, 0x97, 0x31, - 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, - 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, - 0x08, 0x0C, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, - 0x74, 0x6F, 0x6E, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, - 0x04, 0x07, 0x0C, 0x07, 0x53, 0x65, 0x61, 0x74, 0x74, 0x6C, - 0x65, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0A, - 0x0C, 0x07, 0x77, 0x6F, 0x6C, 0x66, 0x53, 0x53, 0x4C, 0x31, - 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x0B, - 0x44, 0x65, 0x76, 0x65, 0x6C, 0x6F, 0x70, 0x6D, 0x65, 0x6E, - 0x74, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, - 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, - 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, - 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, - 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, - 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, - 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30, 0x34, 0x31, 0x33, - 0x31, 0x35, 0x32, 0x33, 0x31, 0x30, 0x5A, 0x17, 0x0D, 0x32, - 0x31, 0x30, 0x31, 0x30, 0x37, 0x31, 0x35, 0x32, 0x33, 0x31, - 0x30, 0x5A, 0x30, 0x81, 0x97, 0x31, 0x0B, 0x30, 0x09, 0x06, - 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, - 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x0A, 0x57, - 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0x31, - 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, - 0x53, 0x65, 0x61, 0x74, 0x74, 0x6C, 0x65, 0x31, 0x10, 0x30, - 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x07, 0x77, 0x6F, - 0x6C, 0x66, 0x53, 0x53, 0x4C, 0x31, 0x14, 0x30, 0x12, 0x06, - 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x0B, 0x44, 0x65, 0x76, 0x65, - 0x6C, 0x6F, 0x70, 0x6D, 0x65, 0x6E, 0x74, 0x31, 0x18, 0x30, - 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, - 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, - 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, - 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, - 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x59, 0x30, 0x13, - 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, - 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x03, 0x01, 0x07, 0x03, - 0x42, 0x00, 0x04, 0x02, 0xD3, 0xD9, 0x6E, 0xD6, 0x01, 0x8E, - 0x45, 0xC8, 0xB9, 0x90, 0x31, 0xE5, 0xC0, 0x4C, 0xE3, 0x9E, - 0xAD, 0x29, 0x38, 0x98, 0xBA, 0x10, 0xD6, 0xE9, 0x09, 0x2A, - 0x80, 0xA9, 0x2E, 0x17, 0x2A, 0xB9, 0x8A, 0xBF, 0x33, 0x83, - 0x46, 0xE3, 0x95, 0x0B, 0xE4, 0x77, 0x40, 0xB5, 0x3B, 0x43, - 0x45, 0x33, 0x0F, 0x61, 0x53, 0x7C, 0x37, 0x44, 0xC1, 0xCB, - 0xFC, 0x80, 0xCA, 0xE8, 0x43, 0xEA, 0xA7, 0xA3, 0x63, 0x30, - 0x61, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, - 0x04, 0x14, 0x56, 0x8E, 0x9A, 0xC3, 0xF0, 0x42, 0xDE, 0x18, - 0xB9, 0x45, 0x55, 0x6E, 0xF9, 0x93, 0xCF, 0xEA, 0xC3, 0xF3, - 0xA5, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, - 0x18, 0x30, 0x16, 0x80, 0x14, 0x56, 0x8E, 0x9A, 0xC3, 0xF0, - 0x42, 0xDE, 0x18, 0xB9, 0x45, 0x55, 0x6E, 0xF9, 0x93, 0xCF, - 0xEA, 0xC3, 0xF3, 0xA5, 0x21, 0x30, 0x0F, 0x06, 0x03, 0x55, - 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x05, 0x30, 0x03, 0x01, - 0x01, 0xFF, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, - 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x0A, - 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x02, - 0x03, 0x49, 0x00, 0x30, 0x46, 0x02, 0x21, 0x00, 0xF0, 0x7B, - 0xCC, 0x24, 0x73, 0x19, 0x3F, 0x61, 0x68, 0xED, 0xC8, 0x0A, - 0x54, 0x4A, 0xB8, 0xAC, 0x79, 0xEF, 0x10, 0x32, 0x91, 0x52, - 0x2C, 0x3E, 0xBF, 0x50, 0xAA, 0x5F, 0x18, 0xC1, 0x97, 0xF5, - 0x02, 0x21, 0x00, 0xD9, 0x4B, 0x63, 0x67, 0x6F, 0x9B, 0x29, - 0xA9, 0xD7, 0x6B, 0x63, 0x9B, 0x98, 0x9F, 0x32, 0x82, 0x36, - 0xDA, 0xF0, 0xA9, 0xF7, 0x51, 0xB4, 0x97, 0xAA, 0xFA, 0xFA, - 0xDD, 0xEF, 0xEF, 0x4A, 0xAE -}; -static const int sizeof_ca_ecc_cert_der_256 = sizeof(ca_ecc_cert_der_256); - -/* ./certs/ca-ecc384-key.der, ECC */ -static const unsigned char ca_ecc_key_der_384[] = -{ - 0x30, 0x81, 0xA4, 0x02, 0x01, 0x01, 0x04, 0x30, 0x7B, 0x16, - 0xE3, 0xD6, 0xD2, 0x81, 0x94, 0x6C, 0x8A, 0xDD, 0xA8, 0x78, - 0xEE, 0xC7, 0x7E, 0xB3, 0xC5, 0xD1, 0xDB, 0x2E, 0xF3, 0xED, - 0x0E, 0x48, 0x85, 0xB1, 0xF2, 0xE1, 0x7A, 0x39, 0x56, 0xC0, - 0xF1, 0x62, 0x12, 0x0F, 0x35, 0xB7, 0x39, 0xBC, 0x9C, 0x25, - 0xC0, 0x76, 0xEB, 0xFE, 0x55, 0x70, 0xA0, 0x07, 0x06, 0x05, - 0x2B, 0x81, 0x04, 0x00, 0x22, 0xA1, 0x64, 0x03, 0x62, 0x00, - 0x04, 0xEE, 0x82, 0xD4, 0x39, 0x9A, 0xB1, 0x27, 0x82, 0xF4, - 0xD7, 0xEA, 0xC6, 0xBC, 0x03, 0x1D, 0x4D, 0x83, 0x61, 0xF4, - 0x03, 0xAE, 0x7E, 0xBD, 0xD8, 0x5A, 0xA5, 0xB9, 0xF0, 0x8E, - 0xA2, 0xA5, 0xDA, 0xCE, 0x87, 0x3B, 0x5A, 0xAB, 0x44, 0x16, - 0x9C, 0xF5, 0x9F, 0x62, 0xDD, 0xF6, 0x20, 0xCD, 0x9C, 0x76, - 0x3C, 0x40, 0xB1, 0x3F, 0x97, 0x17, 0xDF, 0x59, 0xF6, 0xCD, - 0xDE, 0xCD, 0x46, 0x35, 0xC0, 0xED, 0x5E, 0x2E, 0x48, 0xB6, - 0x66, 0x91, 0x71, 0x74, 0xB7, 0x0C, 0x3F, 0xB9, 0x9A, 0xB7, - 0x83, 0xBD, 0x93, 0x3F, 0x5F, 0x50, 0x2D, 0x70, 0x3F, 0xDE, - 0x35, 0x25, 0xE1, 0x90, 0x3B, 0x86, 0xE0 -}; -static const int sizeof_ca_ecc_key_der_384 = sizeof(ca_ecc_key_der_384); - -/* ./certs/ca-ecc384-cert.der, ECC */ -static const unsigned char ca_ecc_cert_der_384[] = -{ - 0x30, 0x82, 0x02, 0xC7, 0x30, 0x82, 0x02, 0x4D, 0xA0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0xFC, 0x39, 0x04, 0xA4, - 0x0E, 0xA5, 0x6C, 0x87, 0x30, 0x0A, 0x06, 0x08, 0x2A, 0x86, - 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x03, 0x30, 0x81, 0x97, 0x31, - 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, - 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, - 0x08, 0x0C, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, - 0x74, 0x6F, 0x6E, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, - 0x04, 0x07, 0x0C, 0x07, 0x53, 0x65, 0x61, 0x74, 0x74, 0x6C, - 0x65, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0A, - 0x0C, 0x07, 0x77, 0x6F, 0x6C, 0x66, 0x53, 0x53, 0x4C, 0x31, - 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x0B, - 0x44, 0x65, 0x76, 0x65, 0x6C, 0x6F, 0x70, 0x6D, 0x65, 0x6E, - 0x74, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, - 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, - 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, - 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, - 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, - 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, - 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x30, 0x34, 0x31, 0x33, - 0x31, 0x35, 0x32, 0x33, 0x31, 0x30, 0x5A, 0x17, 0x0D, 0x32, - 0x31, 0x30, 0x31, 0x30, 0x37, 0x31, 0x35, 0x32, 0x33, 0x31, - 0x30, 0x5A, 0x30, 0x81, 0x97, 0x31, 0x0B, 0x30, 0x09, 0x06, - 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, - 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x0A, 0x57, - 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0x31, - 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, - 0x53, 0x65, 0x61, 0x74, 0x74, 0x6C, 0x65, 0x31, 0x10, 0x30, - 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x07, 0x77, 0x6F, - 0x6C, 0x66, 0x53, 0x53, 0x4C, 0x31, 0x14, 0x30, 0x12, 0x06, - 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x0B, 0x44, 0x65, 0x76, 0x65, - 0x6C, 0x6F, 0x70, 0x6D, 0x65, 0x6E, 0x74, 0x31, 0x18, 0x30, - 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, - 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, - 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, - 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, - 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x76, 0x30, 0x10, - 0x06, 0x07, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, - 0x05, 0x2B, 0x81, 0x04, 0x00, 0x22, 0x03, 0x62, 0x00, 0x04, - 0xEE, 0x82, 0xD4, 0x39, 0x9A, 0xB1, 0x27, 0x82, 0xF4, 0xD7, - 0xEA, 0xC6, 0xBC, 0x03, 0x1D, 0x4D, 0x83, 0x61, 0xF4, 0x03, - 0xAE, 0x7E, 0xBD, 0xD8, 0x5A, 0xA5, 0xB9, 0xF0, 0x8E, 0xA2, - 0xA5, 0xDA, 0xCE, 0x87, 0x3B, 0x5A, 0xAB, 0x44, 0x16, 0x9C, - 0xF5, 0x9F, 0x62, 0xDD, 0xF6, 0x20, 0xCD, 0x9C, 0x76, 0x3C, - 0x40, 0xB1, 0x3F, 0x97, 0x17, 0xDF, 0x59, 0xF6, 0xCD, 0xDE, - 0xCD, 0x46, 0x35, 0xC0, 0xED, 0x5E, 0x2E, 0x48, 0xB6, 0x66, - 0x91, 0x71, 0x74, 0xB7, 0x0C, 0x3F, 0xB9, 0x9A, 0xB7, 0x83, - 0xBD, 0x93, 0x3F, 0x5F, 0x50, 0x2D, 0x70, 0x3F, 0xDE, 0x35, - 0x25, 0xE1, 0x90, 0x3B, 0x86, 0xE0, 0xA3, 0x63, 0x30, 0x61, - 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, - 0x14, 0xAB, 0xE0, 0xC3, 0x26, 0x4C, 0x18, 0xD4, 0x72, 0xBB, - 0xD2, 0x84, 0x8C, 0x9C, 0x0A, 0x05, 0x92, 0x80, 0x12, 0x53, - 0x52, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, - 0x30, 0x16, 0x80, 0x14, 0xAB, 0xE0, 0xC3, 0x26, 0x4C, 0x18, - 0xD4, 0x72, 0xBB, 0xD2, 0x84, 0x8C, 0x9C, 0x0A, 0x05, 0x92, - 0x80, 0x12, 0x53, 0x52, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, - 0x13, 0x01, 0x01, 0xFF, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, - 0xFF, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, - 0xFF, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x0A, 0x06, - 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, 0x04, 0x03, 0x03, 0x03, - 0x68, 0x00, 0x30, 0x65, 0x02, 0x30, 0x0D, 0x0A, 0x62, 0xFB, - 0xE6, 0x3A, 0xFE, 0x71, 0xD8, 0x2B, 0x44, 0xE5, 0x97, 0x34, - 0x04, 0xA9, 0x8C, 0x0A, 0x99, 0x88, 0xA0, 0xBD, 0x1F, 0xB0, - 0xDF, 0x94, 0x59, 0x27, 0xBB, 0x2B, 0xC6, 0x2A, 0xBE, 0xA4, - 0x69, 0x1B, 0xCF, 0x97, 0x78, 0x2A, 0x28, 0x96, 0xEE, 0xBA, - 0xD4, 0x87, 0x45, 0xFD, 0x02, 0x31, 0x00, 0xC0, 0x73, 0x19, - 0x66, 0x76, 0x5E, 0x9F, 0xA3, 0x65, 0x85, 0x41, 0xEF, 0xB7, - 0x7B, 0x3D, 0x63, 0x6D, 0x98, 0x71, 0x99, 0x6F, 0x9C, 0xDB, - 0xA8, 0x5E, 0x53, 0x6E, 0xA0, 0x68, 0x11, 0x65, 0xBC, 0x78, - 0x74, 0x28, 0x69, 0xC7, 0x64, 0x9D, 0x88, 0xF2, 0xD8, 0xC2, - 0x3D, 0x29, 0x03, 0x83, 0x23 -}; -static const int sizeof_ca_ecc_cert_der_384 = sizeof(ca_ecc_cert_der_384); - -#endif /* HAVE_ECC && USE_CERT_BUFFERS_256 */ - -/* dh1024 p */ -static const unsigned char dh_p[] = -{ - 0xE6, 0x96, 0x9D, 0x3D, 0x49, 0x5B, 0xE3, 0x2C, 0x7C, 0xF1, 0x80, 0xC3, - 0xBD, 0xD4, 0x79, 0x8E, 0x91, 0xB7, 0x81, 0x82, 0x51, 0xBB, 0x05, 0x5E, - 0x2A, 0x20, 0x64, 0x90, 0x4A, 0x79, 0xA7, 0x70, 0xFA, 0x15, 0xA2, 0x59, - 0xCB, 0xD5, 0x23, 0xA6, 0xA6, 0xEF, 0x09, 0xC4, 0x30, 0x48, 0xD5, 0xA2, - 0x2F, 0x97, 0x1F, 0x3C, 0x20, 0x12, 0x9B, 0x48, 0x00, 0x0E, 0x6E, 0xDD, - 0x06, 0x1C, 0xBC, 0x05, 0x3E, 0x37, 0x1D, 0x79, 0x4E, 0x53, 0x27, 0xDF, - 0x61, 0x1E, 0xBB, 0xBE, 0x1B, 0xAC, 0x9B, 0x5C, 0x60, 0x44, 0xCF, 0x02, - 0x3D, 0x76, 0xE0, 0x5E, 0xEA, 0x9B, 0xAD, 0x99, 0x1B, 0x13, 0xA6, 0x3C, - 0x97, 0x4E, 0x9E, 0xF1, 0x83, 0x9E, 0xB5, 0xDB, 0x12, 0x51, 0x36, 0xF7, - 0x26, 0x2E, 0x56, 0xA8, 0x87, 0x15, 0x38, 0xDF, 0xD8, 0x23, 0xC6, 0x50, - 0x50, 0x85, 0xE2, 0x1F, 0x0D, 0xD5, 0xC8, 0x6B, -}; - -/* dh1024 g */ -static const unsigned char dh_g[] = -{ - 0x02, -}; - -#if defined(HAVE_ED25519) - -/* ./certs/ed25519/server-ed25519.der, ED25519 */ -static const unsigned char server_ed25519_cert[] = -{ - 0x30, 0x82, 0x02, 0x52, 0x30, 0x82, 0x02, 0x04, 0xA0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x10, 0x00, 0xCD, 0xF2, 0x2F, 0xBE, - 0xDC, 0x07, 0xFA, 0xBB, 0x65, 0x03, 0xE2, 0xFF, 0xEA, 0x6A, - 0x99, 0x30, 0x05, 0x06, 0x03, 0x2B, 0x65, 0x70, 0x30, 0x81, - 0x9D, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, - 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, - 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, - 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, - 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, - 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x04, 0x0C, - 0x02, 0x43, 0x41, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, - 0x04, 0x0A, 0x0C, 0x07, 0x77, 0x6F, 0x6C, 0x66, 0x53, 0x53, - 0x4C, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0B, - 0x0C, 0x07, 0x45, 0x44, 0x32, 0x35, 0x35, 0x31, 0x39, 0x31, - 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, - 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, - 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, - 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, - 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, - 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x22, - 0x18, 0x0F, 0x32, 0x30, 0x31, 0x38, 0x30, 0x34, 0x31, 0x32, - 0x31, 0x36, 0x32, 0x32, 0x31, 0x37, 0x5A, 0x18, 0x0F, 0x32, - 0x30, 0x32, 0x31, 0x30, 0x31, 0x30, 0x37, 0x31, 0x35, 0x32, - 0x32, 0x31, 0x37, 0x5A, 0x30, 0x81, 0x9F, 0x31, 0x0B, 0x30, - 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, - 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, - 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, 0x31, 0x10, - 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, 0x07, 0x42, - 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x0D, 0x30, 0x0B, - 0x06, 0x03, 0x55, 0x04, 0x04, 0x0C, 0x04, 0x4C, 0x65, 0x61, - 0x66, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0A, - 0x0C, 0x07, 0x77, 0x6F, 0x6C, 0x66, 0x53, 0x53, 0x4C, 0x31, - 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x07, - 0x45, 0x44, 0x32, 0x35, 0x35, 0x31, 0x39, 0x31, 0x18, 0x30, - 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, - 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, - 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, - 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, - 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x2A, 0x30, 0x05, - 0x06, 0x03, 0x2B, 0x65, 0x70, 0x03, 0x21, 0x00, 0x61, 0x5D, - 0xEC, 0xB7, 0x45, 0x93, 0xC9, 0x84, 0x7B, 0x68, 0x21, 0x4A, - 0x4D, 0xF4, 0x04, 0x8B, 0xBD, 0xCD, 0x6C, 0x5D, 0x3D, 0xB7, - 0x62, 0x2C, 0x2D, 0x25, 0xC3, 0x22, 0x49, 0xC8, 0x86, 0xF2, - 0xA3, 0x52, 0x30, 0x50, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, - 0x0E, 0x04, 0x16, 0x04, 0x14, 0x33, 0xC8, 0x28, 0x63, 0x8C, - 0xF4, 0x57, 0xEE, 0x1E, 0xB0, 0xC7, 0x12, 0x12, 0x76, 0x8A, - 0x80, 0x30, 0x3A, 0xCB, 0x10, 0x30, 0x1F, 0x06, 0x03, 0x55, - 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x92, 0x3F, - 0x96, 0x72, 0x02, 0xFA, 0x61, 0x1C, 0x21, 0x6D, 0x88, 0xDD, - 0xEB, 0xDD, 0x3C, 0x9B, 0x17, 0xC4, 0x9F, 0xB7, 0x30, 0x0E, - 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, - 0x03, 0x02, 0x06, 0xC0, 0x30, 0x05, 0x06, 0x03, 0x2B, 0x65, - 0x70, 0x03, 0x41, 0x00, 0x15, 0x88, 0x86, 0xFC, 0x66, 0xD1, - 0xE0, 0xF6, 0xCF, 0xC9, 0x09, 0x46, 0xD0, 0x50, 0xE2, 0x01, - 0x5D, 0xF7, 0xCF, 0x57, 0xB8, 0xBA, 0x90, 0x84, 0xCB, 0xF1, - 0x24, 0x4B, 0xEF, 0xA5, 0x95, 0x7D, 0x69, 0x92, 0x88, 0xA8, - 0x89, 0x63, 0xCC, 0x90, 0x40, 0xC2, 0x41, 0x3A, 0x40, 0x76, - 0xB1, 0x2D, 0xA8, 0xA8, 0x97, 0xC9, 0x73, 0xC7, 0x82, 0x30, - 0x24, 0x61, 0xB0, 0xAA, 0xCA, 0xAA, 0x68, 0x00 -}; -static const int sizeof_server_ed25519_cert = sizeof(server_ed25519_cert); - -/* ./certs/ed25519/server-ed25519-key.der, ED25519 */ -static const unsigned char server_ed25519_key[] = -{ - 0x30, 0x52, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06, 0x03, 0x2B, - 0x65, 0x70, 0x04, 0x22, 0x04, 0x20, 0x02, 0x2F, 0xC5, 0xFF, - 0xBA, 0x8E, 0xD0, 0xD2, 0xBF, 0x03, 0x8E, 0x76, 0x8F, 0xC8, - 0x86, 0x80, 0x71, 0x87, 0x97, 0x31, 0xE2, 0x40, 0xAC, 0xDF, - 0xBB, 0x90, 0x15, 0x52, 0x6E, 0x24, 0xA1, 0x39, 0xA1, 0x22, - 0x04, 0x20, 0x61, 0x5D, 0xEC, 0xB7, 0x45, 0x93, 0xC9, 0x84, - 0x7B, 0x68, 0x21, 0x4A, 0x4D, 0xF4, 0x04, 0x8B, 0xBD, 0xCD, - 0x6C, 0x5D, 0x3D, 0xB7, 0x62, 0x2C, 0x2D, 0x25, 0xC3, 0x22, - 0x49, 0xC8, 0x86, 0xF2 -}; -static const int sizeof_server_ed25519_key = sizeof(server_ed25519_key); - -/* ./certs/ed25519/ca-ed25519.der, ED25519 */ -static const unsigned char ca_ed25519_cert[] = -{ - 0x30, 0x82, 0x02, 0x60, 0x30, 0x82, 0x02, 0x12, 0xA0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x10, 0x00, 0x80, 0xBA, 0x68, 0x77, - 0xEF, 0xA5, 0xE5, 0x42, 0x7D, 0xC6, 0x73, 0x2C, 0x54, 0x85, - 0xB8, 0x30, 0x05, 0x06, 0x03, 0x2B, 0x65, 0x70, 0x30, 0x81, - 0x9F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, - 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, - 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, - 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, - 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, - 0x31, 0x0D, 0x30, 0x0B, 0x06, 0x03, 0x55, 0x04, 0x04, 0x0C, - 0x04, 0x52, 0x6F, 0x6F, 0x74, 0x31, 0x10, 0x30, 0x0E, 0x06, - 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x07, 0x77, 0x6F, 0x6C, 0x66, - 0x53, 0x53, 0x4C, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, - 0x04, 0x0B, 0x0C, 0x07, 0x45, 0x44, 0x32, 0x35, 0x35, 0x31, - 0x39, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, - 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, - 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, - 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, - 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, - 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, - 0x30, 0x22, 0x18, 0x0F, 0x32, 0x30, 0x31, 0x38, 0x30, 0x34, - 0x31, 0x32, 0x31, 0x36, 0x32, 0x32, 0x31, 0x37, 0x5A, 0x18, - 0x0F, 0x32, 0x30, 0x32, 0x31, 0x30, 0x31, 0x30, 0x37, 0x31, - 0x35, 0x32, 0x32, 0x31, 0x37, 0x5A, 0x30, 0x81, 0x9D, 0x31, - 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, - 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, - 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, 0x6E, 0x61, - 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x0C, - 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, 0x31, 0x0B, - 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x04, 0x0C, 0x02, 0x43, - 0x41, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0A, - 0x0C, 0x07, 0x77, 0x6F, 0x6C, 0x66, 0x53, 0x53, 0x4C, 0x31, - 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x07, - 0x45, 0x44, 0x32, 0x35, 0x35, 0x31, 0x39, 0x31, 0x18, 0x30, - 0x16, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, - 0x77, 0x2E, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, - 0x63, 0x6F, 0x6D, 0x31, 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, - 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, - 0x69, 0x6E, 0x66, 0x6F, 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, - 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x2A, 0x30, 0x05, - 0x06, 0x03, 0x2B, 0x65, 0x70, 0x03, 0x21, 0x00, 0x65, 0xAA, - 0x7F, 0x05, 0xA4, 0x04, 0x34, 0xA0, 0xEA, 0xAD, 0x1F, 0xA9, - 0x86, 0xF0, 0xD8, 0x7F, 0x72, 0xDF, 0xA9, 0x0E, 0x13, 0xA0, - 0x38, 0x66, 0x26, 0x5E, 0xEB, 0x48, 0x30, 0x80, 0x48, 0x49, - 0xA3, 0x60, 0x30, 0x5E, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, - 0x13, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x1D, - 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x92, - 0x3F, 0x96, 0x72, 0x02, 0xFA, 0x61, 0x1C, 0x21, 0x6D, 0x88, - 0xDD, 0xEB, 0xDD, 0x3C, 0x9B, 0x17, 0xC4, 0x9F, 0xB7, 0x30, - 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, - 0x80, 0x14, 0xFE, 0x01, 0x46, 0x7F, 0x6F, 0x2B, 0x3E, 0x1C, - 0xB0, 0x6F, 0xE1, 0xCC, 0x4D, 0x02, 0x25, 0xF7, 0x4D, 0x0A, - 0x95, 0xB8, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, - 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x01, 0xC6, 0x30, 0x05, - 0x06, 0x03, 0x2B, 0x65, 0x70, 0x03, 0x41, 0x00, 0x4C, 0x40, - 0xD0, 0x7F, 0xBC, 0xFB, 0xF4, 0xA2, 0x1A, 0x58, 0xF6, 0x72, - 0xE3, 0xE8, 0xDA, 0x18, 0x0D, 0x94, 0xDC, 0x0E, 0xFD, 0xC1, - 0xE7, 0x02, 0xA5, 0x7A, 0xEE, 0xCB, 0xC2, 0x7E, 0xFA, 0xA1, - 0xFC, 0x15, 0x9A, 0xFE, 0x1E, 0xE0, 0x37, 0xDF, 0x7F, 0xAB, - 0x76, 0x50, 0x06, 0xD4, 0x3D, 0x1A, 0x65, 0x73, 0x3F, 0x92, - 0xD4, 0x44, 0x62, 0xA7, 0x4C, 0xB3, 0x2A, 0x01, 0x87, 0xE3, - 0x06, 0x06 -}; -static const int sizeof_ca_ed25519_cert = sizeof(ca_ed25519_cert); - -/* ./certs/ed25519/client-ed25519.der, ED25519 */ -static const unsigned char client_ed25519_cert[] = -{ - 0x30, 0x82, 0x02, 0x58, 0x30, 0x82, 0x02, 0x0A, 0xA0, 0x03, - 0x02, 0x01, 0x02, 0x02, 0x10, 0x00, 0x8F, 0x2F, 0x35, 0xB2, - 0x53, 0xBD, 0x4F, 0x92, 0xD1, 0xFF, 0x1D, 0x4B, 0x40, 0xA5, - 0x49, 0x30, 0x05, 0x06, 0x03, 0x2B, 0x65, 0x70, 0x30, 0x81, - 0xA1, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, - 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, - 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, - 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, - 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, - 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, 0x55, 0x04, 0x04, 0x0C, - 0x06, 0x63, 0x6C, 0x69, 0x65, 0x6E, 0x74, 0x31, 0x10, 0x30, - 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x07, 0x77, 0x6F, - 0x6C, 0x66, 0x53, 0x53, 0x4C, 0x31, 0x10, 0x30, 0x0E, 0x06, - 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x07, 0x45, 0x44, 0x32, 0x35, - 0x35, 0x31, 0x39, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, - 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, - 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, - 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, - 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, - 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, - 0x6F, 0x6D, 0x30, 0x22, 0x18, 0x0F, 0x32, 0x30, 0x31, 0x38, - 0x30, 0x34, 0x31, 0x32, 0x31, 0x36, 0x32, 0x32, 0x31, 0x37, - 0x5A, 0x18, 0x0F, 0x32, 0x30, 0x32, 0x31, 0x30, 0x31, 0x30, - 0x37, 0x31, 0x35, 0x32, 0x32, 0x31, 0x37, 0x5A, 0x30, 0x81, - 0xA1, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, - 0x13, 0x02, 0x55, 0x53, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, - 0x55, 0x04, 0x08, 0x0C, 0x07, 0x4D, 0x6F, 0x6E, 0x74, 0x61, - 0x6E, 0x61, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, - 0x07, 0x0C, 0x07, 0x42, 0x6F, 0x7A, 0x65, 0x6D, 0x61, 0x6E, - 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, 0x55, 0x04, 0x04, 0x0C, - 0x06, 0x63, 0x6C, 0x69, 0x65, 0x6E, 0x74, 0x31, 0x10, 0x30, - 0x0E, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x07, 0x77, 0x6F, - 0x6C, 0x66, 0x53, 0x53, 0x4C, 0x31, 0x10, 0x30, 0x0E, 0x06, - 0x03, 0x55, 0x04, 0x0B, 0x0C, 0x07, 0x45, 0x44, 0x32, 0x35, - 0x35, 0x31, 0x39, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, - 0x04, 0x03, 0x0C, 0x0F, 0x77, 0x77, 0x77, 0x2E, 0x77, 0x6F, - 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, 0x6F, 0x6D, 0x31, - 0x1F, 0x30, 0x1D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, - 0x0D, 0x01, 0x09, 0x01, 0x16, 0x10, 0x69, 0x6E, 0x66, 0x6F, - 0x40, 0x77, 0x6F, 0x6C, 0x66, 0x73, 0x73, 0x6C, 0x2E, 0x63, - 0x6F, 0x6D, 0x30, 0x2A, 0x30, 0x05, 0x06, 0x03, 0x2B, 0x65, - 0x70, 0x03, 0x21, 0x00, 0xA2, 0xF1, 0x26, 0x40, 0x9B, 0xA2, - 0x59, 0xDA, 0xDB, 0xE6, 0x15, 0x7F, 0x9A, 0x11, 0xB5, 0x48, - 0x5F, 0x55, 0xBA, 0x5E, 0xED, 0x46, 0xF7, 0x98, 0x67, 0xBE, - 0x0C, 0x93, 0xE3, 0xA4, 0x8E, 0x18, 0xA3, 0x52, 0x30, 0x50, - 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, - 0x14, 0xFE, 0x01, 0x46, 0x7F, 0x6F, 0x2B, 0x3E, 0x1C, 0xB0, - 0x6F, 0xE1, 0xCC, 0x4D, 0x02, 0x25, 0xF7, 0x4D, 0x0A, 0x95, - 0xB8, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, - 0x30, 0x16, 0x80, 0x14, 0xFE, 0x01, 0x46, 0x7F, 0x6F, 0x2B, - 0x3E, 0x1C, 0xB0, 0x6F, 0xE1, 0xCC, 0x4D, 0x02, 0x25, 0xF7, - 0x4D, 0x0A, 0x95, 0xB8, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, - 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x06, 0xC0, - 0x30, 0x05, 0x06, 0x03, 0x2B, 0x65, 0x70, 0x03, 0x41, 0x00, - 0x29, 0xF6, 0x69, 0xE2, 0xB9, 0x73, 0x12, 0xD1, 0x64, 0xEB, - 0x8F, 0xE9, 0x6B, 0x61, 0xDB, 0x5F, 0xE9, 0xA7, 0x62, 0x6C, - 0x10, 0x89, 0x41, 0x80, 0xE3, 0xE8, 0xFD, 0x1F, 0xD0, 0x13, - 0xAE, 0x95, 0x00, 0xAF, 0xF7, 0x77, 0xE1, 0x22, 0x32, 0xAD, - 0x46, 0x4F, 0xDC, 0x7E, 0xFE, 0xAE, 0xBC, 0x8A, 0x1F, 0x96, - 0x0A, 0xDA, 0x9F, 0xC9, 0x93, 0x52, 0x27, 0x18, 0xB0, 0x8B, - 0xDA, 0xBE, 0x81, 0x09 -}; -static const int sizeof_client_ed25519_cert = sizeof(client_ed25519_cert); - -/* ./certs/ed25519/client-ed25519-key.der, ED25519 */ -static const unsigned char client_ed25519_key[] = -{ - 0x30, 0x52, 0x02, 0x01, 0x00, 0x30, 0x05, 0x06, 0x03, 0x2B, - 0x65, 0x70, 0x04, 0x22, 0x04, 0x20, 0x27, 0xA3, 0x34, 0x2A, - 0x35, 0xD4, 0xBB, 0xB8, 0xE1, 0xDC, 0xD8, 0xEC, 0x0F, 0xC1, - 0xA0, 0xD1, 0xA2, 0x5C, 0xF9, 0x06, 0xF0, 0x44, 0x5D, 0x3B, - 0x97, 0x4D, 0xBD, 0xDF, 0x4A, 0x3B, 0xA3, 0x4E, 0xA1, 0x22, - 0x04, 0x20, 0xA2, 0xF1, 0x26, 0x40, 0x9B, 0xA2, 0x59, 0xDA, - 0xDB, 0xE6, 0x15, 0x7F, 0x9A, 0x11, 0xB5, 0x48, 0x5F, 0x55, - 0xBA, 0x5E, 0xED, 0x46, 0xF7, 0x98, 0x67, 0xBE, 0x0C, 0x93, - 0xE3, 0xA4, 0x8E, 0x18 -}; -static const int sizeof_client_ed25519_key = sizeof(client_ed25519_key); - -#endif /* HAVE_ED25519 */ - -#endif /* WOLFSSL_CERTS_TEST_H */ - diff --git a/client/wolfssl/wolfssl/crl.h b/client/wolfssl/wolfssl/crl.h deleted file mode 100644 index 363d77c..0000000 --- a/client/wolfssl/wolfssl/crl.h +++ /dev/null @@ -1,50 +0,0 @@ -/* crl.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -#ifndef WOLFSSL_CRL_H -#define WOLFSSL_CRL_H - - -#ifdef HAVE_CRL - -#include <wolfssl/ssl.h> -#include <wolfssl/wolfcrypt/asn.h> - -#ifdef __cplusplus - extern "C" { -#endif - -WOLFSSL_LOCAL int InitCRL(WOLFSSL_CRL*, WOLFSSL_CERT_MANAGER*); -WOLFSSL_LOCAL void FreeCRL(WOLFSSL_CRL*, int dynamic); - -WOLFSSL_LOCAL int LoadCRL(WOLFSSL_CRL* crl, const char* path, int type, int mon); -WOLFSSL_LOCAL int BufferLoadCRL(WOLFSSL_CRL*, const byte*, long, int, int); -WOLFSSL_LOCAL int CheckCertCRL(WOLFSSL_CRL*, DecodedCert*); - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* HAVE_CRL */ -#endif /* WOLFSSL_CRL_H */ diff --git a/client/wolfssl/wolfssl/error-ssl.h b/client/wolfssl/wolfssl/error-ssl.h deleted file mode 100644 index 9b44326..0000000 --- a/client/wolfssl/wolfssl/error-ssl.h +++ /dev/null @@ -1,204 +0,0 @@ -/* error-ssl.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -#ifndef WOLFSSL_ERROR_H -#define WOLFSSL_ERROR_H - -#include <wolfssl/wolfcrypt/error-crypt.h> /* pull in wolfCrypt errors */ - -#ifdef __cplusplus - extern "C" { -#endif - -enum wolfSSL_ErrorCodes { - INPUT_CASE_ERROR = -301, /* process input state error */ - PREFIX_ERROR = -302, /* bad index to key rounds */ - MEMORY_ERROR = -303, /* out of memory */ - VERIFY_FINISHED_ERROR = -304, /* verify problem on finished */ - VERIFY_MAC_ERROR = -305, /* verify mac problem */ - PARSE_ERROR = -306, /* parse error on header */ - UNKNOWN_HANDSHAKE_TYPE = -307, /* weird handshake type */ - SOCKET_ERROR_E = -308, /* error state on socket */ - SOCKET_NODATA = -309, /* expected data, not there */ - INCOMPLETE_DATA = -310, /* don't have enough data to - complete task */ - UNKNOWN_RECORD_TYPE = -311, /* unknown type in record hdr */ - DECRYPT_ERROR = -312, /* error during decryption */ - FATAL_ERROR = -313, /* recvd alert fatal error */ - ENCRYPT_ERROR = -314, /* error during encryption */ - FREAD_ERROR = -315, /* fread problem */ - NO_PEER_KEY = -316, /* need peer's key */ - NO_PRIVATE_KEY = -317, /* need the private key */ - RSA_PRIVATE_ERROR = -318, /* error during rsa priv op */ - NO_DH_PARAMS = -319, /* server missing DH params */ - BUILD_MSG_ERROR = -320, /* build message failure */ - - BAD_HELLO = -321, /* client hello malformed */ - DOMAIN_NAME_MISMATCH = -322, /* peer subject name mismatch */ - WANT_READ = -323, /* want read, call again */ - NOT_READY_ERROR = -324, /* handshake layer not ready */ - IPADDR_MISMATCH = -325, /* peer ip address mismatch */ - VERSION_ERROR = -326, /* record layer version error */ - WANT_WRITE = -327, /* want write, call again */ - BUFFER_ERROR = -328, /* malformed buffer input */ - VERIFY_CERT_ERROR = -329, /* verify cert error */ - VERIFY_SIGN_ERROR = -330, /* verify sign error */ - CLIENT_ID_ERROR = -331, /* psk client identity error */ - SERVER_HINT_ERROR = -332, /* psk server hint error */ - PSK_KEY_ERROR = -333, /* psk key error */ - - GETTIME_ERROR = -337, /* gettimeofday failed ??? */ - GETITIMER_ERROR = -338, /* getitimer failed ??? */ - SIGACT_ERROR = -339, /* sigaction failed ??? */ - SETITIMER_ERROR = -340, /* setitimer failed ??? */ - LENGTH_ERROR = -341, /* record layer length error */ - PEER_KEY_ERROR = -342, /* can't decode peer key */ - ZERO_RETURN = -343, /* peer sent close notify */ - SIDE_ERROR = -344, /* wrong client/server type */ - NO_PEER_CERT = -345, /* peer didn't send key */ - NTRU_KEY_ERROR = -346, /* NTRU key error */ - NTRU_DRBG_ERROR = -347, /* NTRU drbg error */ - NTRU_ENCRYPT_ERROR = -348, /* NTRU encrypt error */ - NTRU_DECRYPT_ERROR = -349, /* NTRU decrypt error */ - ECC_CURVETYPE_ERROR = -350, /* Bad ECC Curve Type */ - ECC_CURVE_ERROR = -351, /* Bad ECC Curve */ - ECC_PEERKEY_ERROR = -352, /* Bad Peer ECC Key */ - ECC_MAKEKEY_ERROR = -353, /* Bad Make ECC Key */ - ECC_EXPORT_ERROR = -354, /* Bad ECC Export Key */ - ECC_SHARED_ERROR = -355, /* Bad ECC Shared Secret */ - NOT_CA_ERROR = -357, /* Not a CA cert error */ - - BAD_CERT_MANAGER_ERROR = -359, /* Bad Cert Manager */ - OCSP_CERT_REVOKED = -360, /* OCSP Certificate revoked */ - CRL_CERT_REVOKED = -361, /* CRL Certificate revoked */ - CRL_MISSING = -362, /* CRL Not loaded */ - MONITOR_SETUP_E = -363, /* CRL Monitor setup error */ - THREAD_CREATE_E = -364, /* Thread Create Error */ - OCSP_NEED_URL = -365, /* OCSP need an URL for lookup */ - OCSP_CERT_UNKNOWN = -366, /* OCSP responder doesn't know */ - OCSP_LOOKUP_FAIL = -367, /* OCSP lookup not successful */ - MAX_CHAIN_ERROR = -368, /* max chain depth exceeded */ - COOKIE_ERROR = -369, /* dtls cookie error */ - SEQUENCE_ERROR = -370, /* dtls sequence error */ - SUITES_ERROR = -371, /* suites pointer error */ - - OUT_OF_ORDER_E = -373, /* out of order message */ - BAD_KEA_TYPE_E = -374, /* bad KEA type found */ - SANITY_CIPHER_E = -375, /* sanity check on cipher error */ - RECV_OVERFLOW_E = -376, /* RXCB returned more than read */ - GEN_COOKIE_E = -377, /* Generate Cookie Error */ - NO_PEER_VERIFY = -378, /* Need peer cert verify Error */ - FWRITE_ERROR = -379, /* fwrite problem */ - CACHE_MATCH_ERROR = -380, /* Cache hdr match error */ - UNKNOWN_SNI_HOST_NAME_E = -381, /* Unrecognized host name Error */ - UNKNOWN_MAX_FRAG_LEN_E = -382, /* Unrecognized max frag len Error */ - KEYUSE_SIGNATURE_E = -383, /* KeyUse digSignature error */ - KEYUSE_ENCIPHER_E = -385, /* KeyUse keyEncipher error */ - EXTKEYUSE_AUTH_E = -386, /* ExtKeyUse server|client_auth */ - SEND_OOB_READ_E = -387, /* Send Cb out of bounds read */ - SECURE_RENEGOTIATION_E = -388, /* Invalid Renegotiation Info */ - SESSION_TICKET_LEN_E = -389, /* Session Ticket too large */ - SESSION_TICKET_EXPECT_E = -390, /* Session Ticket missing */ - SCR_DIFFERENT_CERT_E = -391, /* SCR Different cert error */ - SESSION_SECRET_CB_E = -392, /* Session secret Cb fcn failure */ - NO_CHANGE_CIPHER_E = -393, /* Finished before change cipher */ - SANITY_MSG_E = -394, /* Sanity check on msg order error */ - DUPLICATE_MSG_E = -395, /* Duplicate message error */ - SNI_UNSUPPORTED = -396, /* SSL 3.0 does not support SNI */ - SOCKET_PEER_CLOSED_E = -397, /* Underlying transport closed */ - BAD_TICKET_KEY_CB_SZ = -398, /* Bad session ticket key cb size */ - BAD_TICKET_MSG_SZ = -399, /* Bad session ticket msg size */ - BAD_TICKET_ENCRYPT = -400, /* Bad user ticket encrypt */ - DH_KEY_SIZE_E = -401, /* DH Key too small */ - SNI_ABSENT_ERROR = -402, /* No SNI request. */ - RSA_SIGN_FAULT = -403, /* RSA Sign fault */ - HANDSHAKE_SIZE_ERROR = -404, /* Handshake message too large */ - UNKNOWN_ALPN_PROTOCOL_NAME_E = -405, /* Unrecognized protocol name Error*/ - BAD_CERTIFICATE_STATUS_ERROR = -406, /* Bad certificate status message */ - OCSP_INVALID_STATUS = -407, /* Invalid OCSP Status */ - OCSP_WANT_READ = -408, /* OCSP callback response WOLFSSL_CBIO_ERR_WANT_READ */ - RSA_KEY_SIZE_E = -409, /* RSA key too small */ - ECC_KEY_SIZE_E = -410, /* ECC key too small */ - DTLS_EXPORT_VER_E = -411, /* export version error */ - INPUT_SIZE_E = -412, /* input size too big error */ - CTX_INIT_MUTEX_E = -413, /* initialize ctx mutex error */ - EXT_MASTER_SECRET_NEEDED_E = -414, /* need EMS enabled to resume */ - DTLS_POOL_SZ_E = -415, /* exceeded DTLS pool size */ - DECODE_E = -416, /* decode handshake message error */ - HTTP_TIMEOUT = -417, /* HTTP timeout for OCSP or CRL req */ - WRITE_DUP_READ_E = -418, /* Write dup write side can't read */ - WRITE_DUP_WRITE_E = -419, /* Write dup read side can't write */ - INVALID_CERT_CTX_E = -420, /* TLS cert ctx not matching */ - BAD_KEY_SHARE_DATA = -421, /* Key Share data invalid */ - MISSING_HANDSHAKE_DATA = -422, /* Handshake message missing data */ - BAD_BINDER = -423, /* Binder does not match */ - EXT_NOT_ALLOWED = -424, /* Extension not allowed in msg */ - INVALID_PARAMETER = -425, /* Security parameter invalid */ - MCAST_HIGHWATER_CB_E = -426, /* Multicast highwater cb err */ - ALERT_COUNT_E = -427, /* Alert Count exceeded err */ - EXT_MISSING = -428, /* Required extension not found */ - UNSUPPORTED_EXTENSION = -429, /* TLSX not requested by client */ - PRF_MISSING = -430, /* PRF not compiled in */ - DTLS_RETX_OVER_TX = -431, /* Retransmit DTLS flight over */ - DH_PARAMS_NOT_FFDHE_E = -432, /* DH params from server not FFDHE */ - TCA_INVALID_ID_TYPE = -433, /* TLSX TCA ID type invalid */ - TCA_ABSENT_ERROR = -434, /* TLSX TCA ID no response */ - TSIP_MAC_DIGSZ_E = -435, /* Invalid MAC size for TSIP */ - CLIENT_CERT_CB_ERROR = -436, /* Client cert callback error */ - SSL_SHUTDOWN_ALREADY_DONE_E = -437, /* Shutdown called redundantly */ - TLS13_SECRET_CB_E = -438, /* TLS1.3 secret Cb fcn failure */ - - /* add strings to wolfSSL_ERR_reason_error_string in internal.c !!!!! */ - - /* begin negotiation parameter errors */ - UNSUPPORTED_SUITE = -500, /* unsupported cipher suite */ - MATCH_SUITE_ERROR = -501, /* can't match cipher suite */ - COMPRESSION_ERROR = -502, /* compression mismatch */ - KEY_SHARE_ERROR = -503, /* key share mismatch */ - POST_HAND_AUTH_ERROR = -504, /* client won't do post-hand auth */ - HRR_COOKIE_ERROR = -505 /* HRR msg cookie mismatch */ - /* end negotiation parameter errors only 10 for now */ - /* add strings to wolfSSL_ERR_reason_error_string in internal.c !!!!! */ - - /* no error stings go down here, add above negotiation errors !!!! */ -}; - - -#if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) - enum { - MIN_PARAM_ERR = UNSUPPORTED_SUITE, - MAX_PARAM_ERR = MIN_PARAM_ERR - 10 - }; -#endif - - -WOLFSSL_LOCAL -void SetErrorString(int err, char* buff); - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* wolfSSL_ERROR_H */ diff --git a/client/wolfssl/wolfssl/include.am b/client/wolfssl/wolfssl/include.am deleted file mode 100644 index 201a96f..0000000 --- a/client/wolfssl/wolfssl/include.am +++ /dev/null @@ -1,32 +0,0 @@ -# vim:ft=automake -# All paths should be given relative to the root -# - -include wolfssl/wolfcrypt/include.am -include wolfssl/openssl/include.am - -EXTRA_DIST+= wolfssl/sniffer_error.rc - -nobase_include_HEADERS+= \ - wolfssl/error-ssl.h \ - wolfssl/ssl.h \ - wolfssl/sniffer_error.h \ - wolfssl/sniffer.h \ - wolfssl/callbacks.h \ - wolfssl/certs_test.h \ - wolfssl/test.h \ - wolfssl/version.h \ - wolfssl/ocsp.h \ - wolfssl/crl.h \ - wolfssl/wolfio.h - -noinst_HEADERS+= \ - wolfssl/internal.h - -# For distro build don't install options.h. -# It depends on the architecture and conflicts with Multi-Arch. -if BUILD_DISTRO -noinst_HEADERS+= wolfssl/options.h -else -nobase_include_HEADERS+= wolfssl/options.h -endif diff --git a/client/wolfssl/wolfssl/internal.h b/client/wolfssl/wolfssl/internal.h deleted file mode 100644 index ab04b3d..0000000 --- a/client/wolfssl/wolfssl/internal.h +++ /dev/null @@ -1,4613 +0,0 @@ -/* internal.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -#ifndef WOLFSSL_INT_H -#define WOLFSSL_INT_H - - -#include <wolfssl/wolfcrypt/types.h> -#include <wolfssl/ssl.h> -#ifdef HAVE_CRL - #include <wolfssl/crl.h> -#endif -#include <wolfssl/wolfcrypt/random.h> -#ifndef NO_DES3 - #include <wolfssl/wolfcrypt/des3.h> -#endif -#ifndef NO_HC128 - #include <wolfssl/wolfcrypt/hc128.h> -#endif -#ifndef NO_RABBIT - #include <wolfssl/wolfcrypt/rabbit.h> -#endif -#ifdef HAVE_CHACHA - #include <wolfssl/wolfcrypt/chacha.h> -#endif -#ifndef NO_ASN - #include <wolfssl/wolfcrypt/asn.h> - #include <wolfssl/wolfcrypt/pkcs12.h> -#endif -#ifndef NO_MD5 - #include <wolfssl/wolfcrypt/md5.h> -#endif -#ifndef NO_SHA - #include <wolfssl/wolfcrypt/sha.h> -#endif -#ifndef NO_AES - #include <wolfssl/wolfcrypt/aes.h> -#endif -#ifdef HAVE_POLY1305 - #include <wolfssl/wolfcrypt/poly1305.h> -#endif -#ifdef HAVE_CAMELLIA - #include <wolfssl/wolfcrypt/camellia.h> -#endif -#include <wolfssl/wolfcrypt/logging.h> -#ifndef NO_HMAC - #include <wolfssl/wolfcrypt/hmac.h> -#endif -#ifndef NO_RC4 - #include <wolfssl/wolfcrypt/arc4.h> -#endif -#ifndef NO_SHA256 - #include <wolfssl/wolfcrypt/sha256.h> -#endif -#ifdef HAVE_OCSP - #include <wolfssl/ocsp.h> -#endif -#ifdef WOLFSSL_SHA384 - #include <wolfssl/wolfcrypt/sha512.h> -#endif -#ifdef WOLFSSL_SHA512 - #include <wolfssl/wolfcrypt/sha512.h> -#endif -#ifdef HAVE_AESGCM - #include <wolfssl/wolfcrypt/sha512.h> -#endif -#ifdef WOLFSSL_RIPEMD - #include <wolfssl/wolfcrypt/ripemd.h> -#endif -#ifdef HAVE_IDEA - #include <wolfssl/wolfcrypt/idea.h> -#endif -#ifndef NO_RSA - #include <wolfssl/wolfcrypt/rsa.h> -#endif -#ifdef HAVE_ECC - #include <wolfssl/wolfcrypt/ecc.h> -#endif -#ifndef NO_DH - #include <wolfssl/wolfcrypt/dh.h> -#endif -#ifdef HAVE_ED25519 - #include <wolfssl/wolfcrypt/ed25519.h> -#endif -#ifdef HAVE_CURVE25519 - #include <wolfssl/wolfcrypt/curve25519.h> -#endif -#ifdef HAVE_ED448 - #include <wolfssl/wolfcrypt/ed448.h> -#endif -#ifdef HAVE_CURVE448 - #include <wolfssl/wolfcrypt/curve448.h> -#endif - -#include <wolfssl/wolfcrypt/wc_encrypt.h> -#include <wolfssl/wolfcrypt/hash.h> - -#if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) - #include <wolfssl/callbacks.h> -#endif -#ifdef WOLFSSL_CALLBACKS - #include <signal.h> -#endif - -#ifdef USE_WINDOWS_API - #ifdef WOLFSSL_GAME_BUILD - #include "system/xtl.h" - #else - #if defined(_WIN32_WCE) || defined(WIN32_LEAN_AND_MEAN) - /* On WinCE winsock2.h must be included before windows.h */ - #include <winsock2.h> - #endif - #include <windows.h> - #endif -#elif defined(THREADX) - #ifndef SINGLE_THREADED - #include "tx_api.h" - #endif - -#elif defined(WOLFSSL_DEOS) - /* do nothing, just don't pick Unix */ -#elif defined(MICRIUM) - /* do nothing, just don't pick Unix */ -#elif defined(FREERTOS) || defined(FREERTOS_TCP) || defined(WOLFSSL_SAFERTOS) - /* do nothing */ -#elif defined(EBSNET) - /* do nothing */ -#elif defined(FREESCALE_MQX) || defined(FREESCALE_KSDK_MQX) - /* do nothing */ -#elif defined(FREESCALE_FREE_RTOS) - #include "fsl_os_abstraction.h" -#elif defined(WOLFSSL_uITRON4) - /* do nothing */ -#elif defined(WOLFSSL_uTKERNEL2) - /* do nothing */ -#elif defined(WOLFSSL_CMSIS_RTOS) - #include "cmsis_os.h" -#elif defined(WOLFSSL_CMSIS_RTOSv2) - #include "cmsis_os2.h" -#elif defined(WOLFSSL_MDK_ARM) - #if defined(WOLFSSL_MDK5) - #include "cmsis_os.h" - #else - #include <rtl.h> - #endif -#elif defined(MBED) -#elif defined(WOLFSSL_TIRTOS) - /* do nothing */ -#elif defined(INTIME_RTOS) - #include <rt.h> -#elif defined(WOLFSSL_NUCLEUS_1_2) - /* do nothing */ -#elif defined(WOLFSSL_APACHE_MYNEWT) - #if !defined(WOLFSSL_LWIP) - void mynewt_ctx_clear(void *ctx); - void* mynewt_ctx_new(); - #endif -#elif defined(WOLFSSL_ZEPHYR) - #ifndef SINGLE_THREADED - #include <kernel.h> - #endif -#elif defined(WOLFSSL_TELIT_M2MB) - /* do nothing */ -#else - #ifndef SINGLE_THREADED - #define WOLFSSL_PTHREADS - #include <pthread.h> - #endif - #if defined(OPENSSL_EXTRA) && !defined(NO_FILESYSTEM) - #include <unistd.h> /* for close of BIO */ - #endif -#endif - -#ifndef CHAR_BIT - /* Needed for DTLS without big math */ - #include <limits.h> -#endif - - -#ifdef HAVE_LIBZ - #include "zlib.h" -#endif - -#ifdef WOLFSSL_ASYNC_CRYPT - #include <wolfssl/wolfcrypt/async.h> -#endif - -#ifdef OPENSSL_EXTRA - #ifdef WOLFCRYPT_HAVE_SRP - #include <wolfssl/wolfcrypt/srp.h> - #endif -#endif - -#ifdef _MSC_VER - /* 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy */ - #pragma warning(disable: 4996) -#endif - -#ifdef NO_SHA - #define WC_SHA_DIGEST_SIZE 20 -#endif - -#ifdef NO_SHA256 - #define WC_SHA256_DIGEST_SIZE 32 -#endif - -#ifdef NO_MD5 - #define WC_MD5_DIGEST_SIZE 16 -#endif - - -#ifdef __cplusplus - extern "C" { -#endif - -/* Define or comment out the cipher suites you'd like to be compiled in - make sure to use at least one BUILD_SSL_xxx or BUILD_TLS_xxx is defined - - When adding cipher suites, add name to cipher_names, idx to cipher_name_idx - - Now that there is a maximum strength crypto build, the following BUILD_XXX - flags need to be divided into two groups selected by WOLFSSL_MAX_STRENGTH. - Those that do not use Perfect Forward Security and do not use AEAD ciphers - need to be switched off. Allowed suites use (EC)DHE, AES-GCM|CCM, or - CHACHA-POLY. -*/ - -/* Check that if WOLFSSL_MAX_STRENGTH is set that all the required options are - * not turned off. */ -#if defined(WOLFSSL_MAX_STRENGTH) && \ - ((!defined(HAVE_ECC) && (defined(NO_DH) || defined(NO_RSA))) || \ - (!defined(HAVE_AESGCM) && !defined(HAVE_AESCCM) && \ - (!defined(HAVE_POLY1305) || !defined(HAVE_CHACHA))) || \ - (defined(NO_SHA256) && !defined(WOLFSSL_SHA384)) || \ - !defined(NO_OLD_TLS)) - - #error "You are trying to build max strength with requirements disabled." -#endif - -/* Have QSH : Quantum-safe Handshake */ -#if defined(HAVE_QSH) - #define BUILD_TLS_QSH -#endif - -#ifndef WOLFSSL_NO_TLS12 - -#ifndef WOLFSSL_MAX_STRENGTH - -#ifdef WOLFSSL_AEAD_ONLY - /* AES CBC ciphers are not allowed in AEAD only mode */ - #undef HAVE_AES_CBC -#endif - -#ifndef WOLFSSL_AEAD_ONLY - #if !defined(NO_RSA) && !defined(NO_RC4) - #if defined(WOLFSSL_STATIC_RSA) - #if !defined(NO_SHA) - #define BUILD_SSL_RSA_WITH_RC4_128_SHA - #endif - #if !defined(NO_MD5) - #define BUILD_SSL_RSA_WITH_RC4_128_MD5 - #endif - #endif - #if !defined(NO_TLS) && defined(HAVE_NTRU) && !defined(NO_SHA) \ - && defined(WOLFSSL_STATIC_RSA) - #define BUILD_TLS_NTRU_RSA_WITH_RC4_128_SHA - #endif - #endif - - #if !defined(NO_RSA) && !defined(NO_DES3) - #if !defined(NO_SHA) - #if defined(WOLFSSL_STATIC_RSA) - #define BUILD_SSL_RSA_WITH_3DES_EDE_CBC_SHA - #endif - #if !defined(NO_TLS) && defined(HAVE_NTRU) \ - && defined(WOLFSSL_STATIC_RSA) - #define BUILD_TLS_NTRU_RSA_WITH_3DES_EDE_CBC_SHA - #endif - #endif - #endif - - #if !defined(NO_RSA) && defined(HAVE_IDEA) - #if !defined(NO_SHA) && defined(WOLFSSL_STATIC_RSA) - #define BUILD_SSL_RSA_WITH_IDEA_CBC_SHA - #endif - #endif -#endif /* !WOLFSSL_AEAD_ONLY */ - - #if !defined(NO_RSA) && !defined(NO_AES) && !defined(NO_TLS) - #if !defined(NO_SHA) && defined(HAVE_AES_CBC) - #if defined(WOLFSSL_STATIC_RSA) - #ifdef WOLFSSL_AES_128 - #define BUILD_TLS_RSA_WITH_AES_128_CBC_SHA - #endif - #ifdef WOLFSSL_AES_256 - #define BUILD_TLS_RSA_WITH_AES_256_CBC_SHA - #endif - #endif - #if defined(HAVE_NTRU) && defined(WOLFSSL_STATIC_RSA) - #ifdef WOLFSSL_AES_128 - #define BUILD_TLS_NTRU_RSA_WITH_AES_128_CBC_SHA - #endif - #ifdef WOLFSSL_AES_256 - #define BUILD_TLS_NTRU_RSA_WITH_AES_256_CBC_SHA - #endif - #endif - #endif - #if defined(WOLFSSL_STATIC_RSA) - #if !defined (NO_SHA256) && defined(HAVE_AES_CBC) - #ifdef WOLFSSL_AES_128 - #define BUILD_TLS_RSA_WITH_AES_128_CBC_SHA256 - #endif - #ifdef WOLFSSL_AES_256 - #define BUILD_TLS_RSA_WITH_AES_256_CBC_SHA256 - #endif - #endif - #if defined (HAVE_AESGCM) - #ifdef WOLFSSL_AES_128 - #define BUILD_TLS_RSA_WITH_AES_128_GCM_SHA256 - #endif - #if defined (WOLFSSL_SHA384) && defined(WOLFSSL_AES_256) - #define BUILD_TLS_RSA_WITH_AES_256_GCM_SHA384 - #endif - #endif - #if defined (HAVE_AESCCM) - #ifdef WOLFSSL_AES_128 - #define BUILD_TLS_RSA_WITH_AES_128_CCM_8 - #endif - #ifdef WOLFSSL_AES_256 - #define BUILD_TLS_RSA_WITH_AES_256_CCM_8 - #endif - #endif - #endif - #endif - - #if defined(HAVE_CAMELLIA) && !defined(NO_TLS) && !defined(NO_CAMELLIA_CBC) - #ifndef NO_RSA - #if defined(WOLFSSL_STATIC_RSA) - #if !defined(NO_SHA) - #define BUILD_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - #define BUILD_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - #endif - #ifndef NO_SHA256 - #define BUILD_TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 - #define BUILD_TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 - #endif - #endif - #if !defined(NO_DH) - #if !defined(NO_SHA) - #define BUILD_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA - #define BUILD_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA - #endif - #ifndef NO_SHA256 - #define BUILD_TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 - #define BUILD_TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 - #endif - #endif - #endif - #endif - -#if defined(WOLFSSL_STATIC_PSK) - #if !defined(NO_PSK) && !defined(NO_AES) && !defined(NO_TLS) - #if !defined(NO_SHA) - #ifdef WOLFSSL_AES_128 - #define BUILD_TLS_PSK_WITH_AES_128_CBC_SHA - #endif - #ifdef WOLFSSL_AES_256 - #define BUILD_TLS_PSK_WITH_AES_256_CBC_SHA - #endif - #endif - #ifndef NO_SHA256 - #ifdef WOLFSSL_AES_128 - #ifdef HAVE_AES_CBC - #define BUILD_TLS_PSK_WITH_AES_128_CBC_SHA256 - #endif - #ifdef HAVE_AESGCM - #define BUILD_TLS_PSK_WITH_AES_128_GCM_SHA256 - #endif - #endif /* WOLFSSL_AES_128 */ - #ifdef HAVE_AESCCM - #ifdef WOLFSSL_AES_128 - #define BUILD_TLS_PSK_WITH_AES_128_CCM_8 - #define BUILD_TLS_PSK_WITH_AES_128_CCM - #endif - #ifdef WOLFSSL_AES_256 - #define BUILD_TLS_PSK_WITH_AES_256_CCM_8 - #define BUILD_TLS_PSK_WITH_AES_256_CCM - #endif - #endif - #endif - #if defined(WOLFSSL_SHA384) && defined(WOLFSSL_AES_256) - #ifdef HAVE_AES_CBC - #define BUILD_TLS_PSK_WITH_AES_256_CBC_SHA384 - #endif - #ifdef HAVE_AESGCM - #define BUILD_TLS_PSK_WITH_AES_256_GCM_SHA384 - #endif - #endif - #endif -#endif - - #if !defined(NO_TLS) && defined(HAVE_NULL_CIPHER) - #if !defined(NO_RSA) - #if defined(WOLFSSL_STATIC_RSA) - #ifndef NO_MD5 - #define BUILD_TLS_RSA_WITH_NULL_MD5 - #endif - #if !defined(NO_SHA) - #define BUILD_TLS_RSA_WITH_NULL_SHA - #endif - #ifndef NO_SHA256 - #define BUILD_TLS_RSA_WITH_NULL_SHA256 - #endif - #endif - #endif - #if !defined(NO_PSK) && defined(WOLFSSL_STATIC_PSK) - #if !defined(NO_SHA) - #define BUILD_TLS_PSK_WITH_NULL_SHA - #endif - #ifndef NO_SHA256 - #define BUILD_TLS_PSK_WITH_NULL_SHA256 - #endif - #ifdef WOLFSSL_SHA384 - #define BUILD_TLS_PSK_WITH_NULL_SHA384 - #endif - #endif - #endif - -#if defined(WOLFSSL_STATIC_RSA) - #if !defined(NO_HC128) && !defined(NO_RSA) && !defined(NO_TLS) - #ifndef NO_MD5 - #define BUILD_TLS_RSA_WITH_HC_128_MD5 - #endif - #if !defined(NO_SHA) - #define BUILD_TLS_RSA_WITH_HC_128_SHA - #endif - #endif - - #if !defined(NO_RABBIT) && !defined(NO_TLS) && !defined(NO_RSA) - #if !defined(NO_SHA) - #define BUILD_TLS_RSA_WITH_RABBIT_SHA - #endif - #endif -#endif - - #if !defined(NO_DH) && !defined(NO_AES) && !defined(NO_TLS) && \ - !defined(NO_RSA) - - #if !defined(NO_SHA) - #if defined(WOLFSSL_AES_128) && defined(HAVE_AES_CBC) - #define BUILD_TLS_DHE_RSA_WITH_AES_128_CBC_SHA - #endif - #if defined(WOLFSSL_AES_256) && defined(HAVE_AES_CBC) - #define BUILD_TLS_DHE_RSA_WITH_AES_256_CBC_SHA - #endif - #if !defined(NO_DES3) - #define BUILD_TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA - #endif - #endif - #if !defined(NO_SHA256) && defined(HAVE_AES_CBC) - #ifdef WOLFSSL_AES_128 - #define BUILD_TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 - #endif - #ifdef WOLFSSL_AES_256 - #define BUILD_TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 - #endif - #endif - #endif - - #if defined(HAVE_ANON) && !defined(NO_TLS) && !defined(NO_DH) && \ - !defined(NO_AES) && !defined(NO_SHA) && defined(WOLFSSL_AES_128) - #ifdef HAVE_AES_CBC - #define BUILD_TLS_DH_anon_WITH_AES_128_CBC_SHA - #endif - - #if defined(WOLFSSL_SHA384) && defined(HAVE_AESGCM) - #define BUILD_TLS_DH_anon_WITH_AES_256_GCM_SHA384 - #endif - #endif - - #if !defined(NO_DH) && !defined(NO_PSK) && !defined(NO_TLS) - #ifndef NO_SHA256 - #if !defined(NO_AES) && defined(WOLFSSL_AES_128) && \ - defined(HAVE_AES_CBC) - #define BUILD_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 - #endif - #ifdef HAVE_NULL_CIPHER - #define BUILD_TLS_DHE_PSK_WITH_NULL_SHA256 - #endif - #endif - #ifdef WOLFSSL_SHA384 - #if !defined(NO_AES) && defined(WOLFSSL_AES_256) && \ - defined(HAVE_AES_CBC) - #define BUILD_TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 - #endif - #ifdef HAVE_NULL_CIPHER - #define BUILD_TLS_DHE_PSK_WITH_NULL_SHA384 - #endif - #endif - #endif - - #if (defined(HAVE_ECC) || defined(HAVE_CURVE25519) || \ - defined(HAVE_CURVE448)) && !defined(NO_TLS) - #if !defined(NO_AES) - #if !defined(NO_SHA) && defined(HAVE_AES_CBC) - #if !defined(NO_RSA) - #ifdef WOLFSSL_AES_128 - #define BUILD_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - #endif - #ifdef WOLFSSL_AES_256 - #define BUILD_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - #endif - #if defined(WOLFSSL_STATIC_DH) && defined(HAVE_ECC) - #ifdef WOLFSSL_AES_128 - #define BUILD_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA - #endif - #ifdef WOLFSSL_AES_256 - #define BUILD_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA - #endif - #endif - #endif - - #if defined(HAVE_ECC) || \ - (defined(HAVE_CURVE25519) && defined(HAVE_ED25519)) || \ - (defined(HAVE_CURVE448) && defined(HAVE_ED448)) - #ifdef WOLFSSL_AES_128 - #define BUILD_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA - #endif - #ifdef WOLFSSL_AES_256 - #define BUILD_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA - #endif - #endif - - #if defined(WOLFSSL_STATIC_DH) && defined(HAVE_ECC) - #ifdef WOLFSSL_AES_128 - #define BUILD_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA - #endif - #ifdef WOLFSSL_AES_256 - #define BUILD_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA - #endif - #endif - #endif /* NO_SHA */ - #if !defined(NO_SHA256) && defined(WOLFSSL_AES_128) && \ - defined(HAVE_AES_CBC) - #if !defined(NO_RSA) - #define BUILD_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - #if defined(WOLFSSL_STATIC_DH) && defined(HAVE_ECC) - #define BUILD_TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 - #endif - #endif - #if defined(HAVE_ECC) || \ - (defined(HAVE_CURVE25519) && defined(HAVE_ED25519)) || \ - (defined(HAVE_CURVE448) && defined(HAVE_ED448)) - #define BUILD_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 - #endif - #if defined(WOLFSSL_STATIC_DH) && defined(HAVE_ECC) - #define BUILD_TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 - #endif - #endif - - #if defined(WOLFSSL_SHA384) && defined(WOLFSSL_AES_256) && \ - defined(HAVE_AES_CBC) - #if !defined(NO_RSA) - #define BUILD_TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 - #if defined(WOLFSSL_STATIC_DH) && defined(HAVE_ECC) - #define BUILD_TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 - #endif - #endif - #if defined(HAVE_ECC) || \ - (defined(HAVE_CURVE25519) && defined(HAVE_ED25519)) || \ - (defined(HAVE_CURVE448) && defined(HAVE_ED448)) - #define BUILD_TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 - #endif - #if defined(WOLFSSL_STATIC_DH) && defined(HAVE_ECC) - #define BUILD_TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 - #endif - #endif - - #if defined (HAVE_AESGCM) - #if !defined(NO_RSA) - #if defined(WOLFSSL_STATIC_DH) && defined(HAVE_ECC) - #ifdef WOLFSSL_AES_128 - #define BUILD_TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 - #endif - #endif - #if defined(WOLFSSL_SHA384) - #if defined(WOLFSSL_STATIC_DH) && defined(HAVE_ECC) - #ifdef WOLFSSL_AES_256 - #define BUILD_TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 - #endif - #endif - #endif - #endif - - #if defined(WOLFSSL_STATIC_DH) && defined(WOLFSSL_AES_128) && \ - defined(HAVE_ECC) - #define BUILD_TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 - #endif - - #if defined(WOLFSSL_SHA384) - #if defined(WOLFSSL_STATIC_DH) && \ - defined(WOLFSSL_AES_256) && defined(HAVE_ECC) - #define BUILD_TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 - #endif - #endif - #endif - #endif /* NO_AES */ - #if !defined(NO_RC4) - #if !defined(NO_SHA) - #if !defined(NO_RSA) - #ifndef WOLFSSL_AEAD_ONLY - #define BUILD_TLS_ECDHE_RSA_WITH_RC4_128_SHA - #endif - #if defined(WOLFSSL_STATIC_DH) && defined(HAVE_ECC) - #define BUILD_TLS_ECDH_RSA_WITH_RC4_128_SHA - #endif - #endif - - #if defined(HAVE_ECC) || \ - (defined(HAVE_CURVE25519) && defined(HAVE_ED25519)) || \ - (defined(HAVE_CURVE448) && defined(HAVE_ED448)) - #ifndef WOLFSSL_AEAD_ONLY - #define BUILD_TLS_ECDHE_ECDSA_WITH_RC4_128_SHA - #endif - #endif - #if defined(WOLFSSL_STATIC_DH) && defined(HAVE_ECC) - #define BUILD_TLS_ECDH_ECDSA_WITH_RC4_128_SHA - #endif - #endif - #endif - #if !defined(NO_DES3) - #ifndef NO_SHA - #if !defined(NO_RSA) - #define BUILD_TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - #if defined(WOLFSSL_STATIC_DH) && defined(HAVE_ECC) - #define BUILD_TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA - #endif - #endif - - #if defined(HAVE_ECC) || \ - (defined(HAVE_CURVE25519) && defined(HAVE_ED25519)) || \ - (defined(HAVE_CURVE448) && defined(HAVE_ED448)) - #define BUILD_TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA - #endif - #if defined(WOLFSSL_STATIC_DH) && defined(HAVE_ECC) - #define BUILD_TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA - #endif - #endif /* NO_SHA */ - #endif - #if defined(HAVE_NULL_CIPHER) - #if !defined(NO_SHA) - #if defined(HAVE_ECC) || \ - (defined(HAVE_CURVE25519) && defined(HAVE_ED25519)) || \ - (defined(HAVE_CURVE448) && defined(HAVE_ED448)) - #define BUILD_TLS_ECDHE_ECDSA_WITH_NULL_SHA - #endif - #endif - #if !defined(NO_PSK) && !defined(NO_SHA256) - #define BUILD_TLS_ECDHE_PSK_WITH_NULL_SHA256 - #endif - #endif - #if !defined(NO_PSK) && !defined(NO_SHA256) && !defined(NO_AES) && \ - defined(WOLFSSL_AES_128) && defined(HAVE_AES_CBC) - #define BUILD_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 - #endif - #endif - #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) && !defined(NO_SHA256) - #if !defined(NO_OLD_POLY1305) - #if defined(HAVE_ECC) || \ - (defined(HAVE_CURVE25519) && defined(HAVE_ED25519)) || \ - (defined(HAVE_CURVE448) && defined(HAVE_ED448)) - #define BUILD_TLS_ECDHE_ECDSA_WITH_CHACHA20_OLD_POLY1305_SHA256 - #endif - #if !defined(NO_RSA) && defined(HAVE_ECC) - #define BUILD_TLS_ECDHE_RSA_WITH_CHACHA20_OLD_POLY1305_SHA256 - #endif - #if !defined(NO_DH) && !defined(NO_RSA) - #define BUILD_TLS_DHE_RSA_WITH_CHACHA20_OLD_POLY1305_SHA256 - #endif - #endif /* NO_OLD_POLY1305 */ - #if !defined(NO_PSK) - #define BUILD_TLS_PSK_WITH_CHACHA20_POLY1305_SHA256 - #if defined(HAVE_ECC) || defined(HAVE_ED25519) || \ - defined(HAVE_ED448) - #define BUILD_TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 - #endif - #ifndef NO_DH - #define BUILD_TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256 - #endif - #endif /* !NO_PSK */ - #endif - -#endif /* !WOLFSSL_MAX_STRENGTH */ - -#if !defined(NO_DH) && !defined(NO_AES) && !defined(NO_TLS) && \ - !defined(NO_RSA) && defined(HAVE_AESGCM) - - #if !defined(NO_SHA256) && defined(WOLFSSL_AES_128) - #define BUILD_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 - #endif - - #if defined(WOLFSSL_SHA384) && defined(WOLFSSL_AES_256) - #define BUILD_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 - #endif -#endif - -#if !defined(NO_DH) && !defined(NO_PSK) && !defined(NO_TLS) - #ifndef NO_SHA256 - #if defined(HAVE_AESGCM) && defined(WOLFSSL_AES_128) - #define BUILD_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 - #endif - #ifdef HAVE_AESCCM - #ifdef WOLFSSL_AES_128 - #define BUILD_TLS_DHE_PSK_WITH_AES_128_CCM - #endif - #ifdef WOLFSSL_AES_256 - #define BUILD_TLS_DHE_PSK_WITH_AES_256_CCM - #endif - #endif - #endif - #if defined(WOLFSSL_SHA384) && defined(HAVE_AESGCM) && \ - defined(WOLFSSL_AES_256) - #define BUILD_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 - #endif -#endif - -#if (defined(HAVE_ECC) || defined(HAVE_CURVE25519) || defined(HAVE_CURVE448)) \ - && !defined(NO_TLS) && !defined(NO_AES) - #ifdef HAVE_AESGCM - #if !defined(NO_SHA256) && defined(WOLFSSL_AES_128) - #if defined(HAVE_ECC) || \ - (defined(HAVE_CURVE25519) && defined(HAVE_ED25519)) || \ - (defined(HAVE_CURVE448) && defined(HAVE_ED448)) - #define BUILD_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 - #endif - #ifndef NO_RSA - #define BUILD_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - #endif - #endif - #if defined(WOLFSSL_SHA384) && defined(WOLFSSL_AES_256) - #if defined(HAVE_ECC) || \ - (defined(HAVE_CURVE25519) && defined(HAVE_ED25519)) || \ - (defined(HAVE_CURVE448) && defined(HAVE_ED448)) - #define BUILD_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 - #endif - #ifndef NO_RSA - #define BUILD_TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 - #endif - #endif - #endif - #if defined(HAVE_AESCCM) && !defined(NO_SHA256) - #if defined(HAVE_ECC) || \ - (defined(HAVE_CURVE25519) && defined(HAVE_ED25519)) || \ - (defined(HAVE_CURVE448) && defined(HAVE_ED448)) - #ifdef WOLFSSL_AES_128 - #define BUILD_TLS_ECDHE_ECDSA_WITH_AES_128_CCM - #define BUILD_TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 - #endif - #ifdef WOLFSSL_AES_256 - #define BUILD_TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 - #endif - #endif - #endif -#endif - -#if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) && !defined(NO_SHA256) - #if defined(HAVE_ECC) || defined(HAVE_CURVE25519) || defined(HAVE_CURVE448) - #if defined(HAVE_ECC) || \ - (defined(HAVE_CURVE25519) && defined(HAVE_ED25519)) || \ - (defined(HAVE_CURVE448) && defined(HAVE_ED448)) - #define BUILD_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 - #endif - #ifndef NO_RSA - #define BUILD_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 - #endif - #endif - #if !defined(NO_DH) && !defined(NO_RSA) - #define BUILD_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 - #endif -#endif - -#endif - -#if defined(WOLFSSL_TLS13) - #ifdef HAVE_AESGCM - #if !defined(NO_SHA256) && defined(WOLFSSL_AES_128) - #define BUILD_TLS_AES_128_GCM_SHA256 - #endif - #if defined(WOLFSSL_SHA384) && defined(WOLFSSL_AES_256) - #define BUILD_TLS_AES_256_GCM_SHA384 - #endif - #endif - - #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) - #ifndef NO_SHA256 - #define BUILD_TLS_CHACHA20_POLY1305_SHA256 - #endif - #endif - - #ifdef HAVE_AESCCM - #if !defined(NO_SHA256) && defined(WOLFSSL_AES_128) - #define BUILD_TLS_AES_128_CCM_SHA256 - #define BUILD_TLS_AES_128_CCM_8_SHA256 - #endif - #endif - #ifdef HAVE_NULL_CIPHER - #ifndef NO_SHA256 - #define BUILD_TLS_SHA256_SHA256 - #endif - #ifdef WOLFSSL_SHA384 - #define BUILD_TLS_SHA384_SHA384 - #endif - #endif -#endif - -#ifdef WOLFSSL_MULTICAST - #if defined(HAVE_NULL_CIPHER) && !defined(NO_SHA256) - #define BUILD_WDM_WITH_NULL_SHA256 - #endif -#endif - -#if defined(BUILD_SSL_RSA_WITH_RC4_128_SHA) || \ - defined(BUILD_SSL_RSA_WITH_RC4_128_MD5) - #define BUILD_ARC4 -#endif - -#if defined(BUILD_SSL_RSA_WITH_3DES_EDE_CBC_SHA) - #define BUILD_DES3 -#endif - -#if defined(BUILD_TLS_RSA_WITH_AES_128_CBC_SHA) || \ - defined(BUILD_TLS_RSA_WITH_AES_256_CBC_SHA) || \ - defined(BUILD_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256) || \ - defined(BUILD_TLS_DHE_PSK_WITH_AES_128_CBC_SHA256) - #undef BUILD_AES - #define BUILD_AES -#endif - -#if defined(BUILD_TLS_RSA_WITH_AES_128_GCM_SHA256) || \ - defined(BUILD_TLS_DHE_RSA_WITH_AES_128_GCM_SHA256) || \ - defined(BUILD_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256) || \ - defined(BUILD_TLS_PSK_WITH_AES_128_GCM_SHA256) || \ - defined(BUILD_TLS_DHE_PSK_WITH_AES_128_GCM_SHA256) || \ - defined(BUILD_TLS_RSA_WITH_AES_256_GCM_SHA384) || \ - defined(BUILD_TLS_DHE_RSA_WITH_AES_256_GCM_SHA384) || \ - defined(BUILD_TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384) || \ - defined(BUILD_TLS_PSK_WITH_AES_256_GCM_SHA384) || \ - defined(BUILD_TLS_DHE_PSK_WITH_AES_256_GCM_SHA384) || \ - defined(BUILD_TLS_AES_128_GCM_SHA256) || \ - defined(BUILD_TLS_AES_256_GCM_SHA384) - #define BUILD_AESGCM -#else - /* No AES-GCM cipher suites available with build */ - #define NO_AESGCM_AEAD -#endif - -#if defined(BUILD_TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256) || \ - defined(BUILD_TLS_DHE_RSA_WITH_CHACHA20_OLD_POLY1305_SHA256) || \ - defined(BUILD_TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256) || \ - defined(BUILD_TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256) || \ - defined(BUILD_TLS_ECDHE_ECDSA_WITH_CHACHA20_OLD_POLY1305_SHA256) || \ - defined(BUILD_TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256) || \ - defined(BUILD_TLS_ECDHE_RSA_WITH_CHACHA20_OLD_POLY1305_SHA256) || \ - defined(BUILD_TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256) || \ - defined(BUILD_TLS_PSK_WITH_CHACHA20_POLY1305_SHA256) || \ - defined(BUILD_TLS_CHACHA20_POLY1305_SHA256) - /* Have an available ChaCha Poly cipher suite */ -#else - /* No ChaCha Poly cipher suites available with build */ - #define NO_CHAPOL_AEAD -#endif - -#if defined(BUILD_TLS_RSA_WITH_HC_128_SHA) || \ - defined(BUILD_TLS_RSA_WITH_HC_128_MD5) - #define BUILD_HC128 -#endif - -#if defined(BUILD_TLS_RSA_WITH_RABBIT_SHA) - #define BUILD_RABBIT -#endif - -#ifdef NO_DES3 - #define DES_BLOCK_SIZE 8 -#else - #undef BUILD_DES3 - #define BUILD_DES3 -#endif - -#if defined(NO_AES) || defined(NO_AES_DECRYPT) - #define AES_BLOCK_SIZE 16 - #undef BUILD_AES -#else - #undef BUILD_AES - #define BUILD_AES -#endif - -#ifndef NO_RC4 - #undef BUILD_ARC4 - #define BUILD_ARC4 -#endif - -#ifdef HAVE_CHACHA - #define CHACHA20_BLOCK_SIZE 16 -#endif - -#if defined(WOLFSSL_MAX_STRENGTH) || \ - (defined(HAVE_AESGCM) && !defined(NO_AESGCM_AEAD)) || \ - defined(HAVE_AESCCM) || \ - (defined(HAVE_CHACHA) && defined(HAVE_POLY1305) && \ - !defined(NO_CHAPOL_AEAD)) || \ - (defined(WOLFSSL_TLS13) && defined(HAVE_NULL_CIPHER)) - - #define HAVE_AEAD -#endif - -#if defined(WOLFSSL_MAX_STRENGTH) || \ - defined(HAVE_ECC) || !defined(NO_DH) - - #define HAVE_PFS -#endif - -#if defined(BUILD_SSL_RSA_WITH_IDEA_CBC_SHA) - #define BUILD_IDEA -#endif - -/* actual cipher values, 2nd byte */ -enum { - TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA = 0x16, - TLS_DHE_RSA_WITH_AES_256_CBC_SHA = 0x39, - TLS_DHE_RSA_WITH_AES_128_CBC_SHA = 0x33, - TLS_DH_anon_WITH_AES_128_CBC_SHA = 0x34, - TLS_RSA_WITH_AES_256_CBC_SHA = 0x35, - TLS_RSA_WITH_AES_128_CBC_SHA = 0x2F, - TLS_RSA_WITH_NULL_MD5 = 0x01, - TLS_RSA_WITH_NULL_SHA = 0x02, - TLS_PSK_WITH_AES_256_CBC_SHA = 0x8d, - TLS_PSK_WITH_AES_128_CBC_SHA256 = 0xae, - TLS_PSK_WITH_AES_256_CBC_SHA384 = 0xaf, - TLS_PSK_WITH_AES_128_CBC_SHA = 0x8c, - TLS_PSK_WITH_NULL_SHA256 = 0xb0, - TLS_PSK_WITH_NULL_SHA384 = 0xb1, - TLS_PSK_WITH_NULL_SHA = 0x2c, - SSL_RSA_WITH_RC4_128_SHA = 0x05, - SSL_RSA_WITH_RC4_128_MD5 = 0x04, - SSL_RSA_WITH_3DES_EDE_CBC_SHA = 0x0A, - SSL_RSA_WITH_IDEA_CBC_SHA = 0x07, - - /* ECC suites, first byte is 0xC0 (ECC_BYTE) */ - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA = 0x14, - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA = 0x13, - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA = 0x0A, - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA = 0x09, - TLS_ECDHE_RSA_WITH_RC4_128_SHA = 0x11, - TLS_ECDHE_ECDSA_WITH_RC4_128_SHA = 0x07, - TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA = 0x12, - TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA = 0x08, - TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 = 0x27, - TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 = 0x23, - TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 = 0x28, - TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 = 0x24, - TLS_ECDHE_ECDSA_WITH_NULL_SHA = 0x06, - TLS_ECDHE_PSK_WITH_NULL_SHA256 = 0x3a, - TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 = 0x37, - - /* static ECDH, first byte is 0xC0 (ECC_BYTE) */ - TLS_ECDH_RSA_WITH_AES_256_CBC_SHA = 0x0F, - TLS_ECDH_RSA_WITH_AES_128_CBC_SHA = 0x0E, - TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA = 0x05, - TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA = 0x04, - TLS_ECDH_RSA_WITH_RC4_128_SHA = 0x0C, - TLS_ECDH_ECDSA_WITH_RC4_128_SHA = 0x02, - TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA = 0x0D, - TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA = 0x03, - TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 = 0x29, - TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 = 0x25, - TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 = 0x2A, - TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 = 0x26, - - /* wolfSSL extension - eSTREAM */ - TLS_RSA_WITH_HC_128_MD5 = 0xFB, - TLS_RSA_WITH_HC_128_SHA = 0xFC, - TLS_RSA_WITH_RABBIT_SHA = 0xFD, - WDM_WITH_NULL_SHA256 = 0xFE, /* wolfSSL DTLS Multicast */ - - /* wolfSSL extension - NTRU */ - TLS_NTRU_RSA_WITH_RC4_128_SHA = 0xe5, - TLS_NTRU_RSA_WITH_3DES_EDE_CBC_SHA = 0xe6, - TLS_NTRU_RSA_WITH_AES_128_CBC_SHA = 0xe7, /* clashes w/official SHA-256 */ - TLS_NTRU_RSA_WITH_AES_256_CBC_SHA = 0xe8, - - /* wolfSSL extension - NTRU , Quantum-safe Handshake - first byte is 0xD0 (QSH_BYTE) */ - TLS_QSH = 0x01, - - /* SHA256 */ - TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 = 0x6b, - TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 = 0x67, - TLS_RSA_WITH_AES_256_CBC_SHA256 = 0x3d, - TLS_RSA_WITH_AES_128_CBC_SHA256 = 0x3c, - TLS_RSA_WITH_NULL_SHA256 = 0x3b, - TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 = 0xb2, - TLS_DHE_PSK_WITH_NULL_SHA256 = 0xb4, - - /* SHA384 */ - TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 = 0xb3, - TLS_DHE_PSK_WITH_NULL_SHA384 = 0xb5, - - /* AES-GCM */ - TLS_RSA_WITH_AES_128_GCM_SHA256 = 0x9c, - TLS_RSA_WITH_AES_256_GCM_SHA384 = 0x9d, - TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 = 0x9e, - TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 = 0x9f, - TLS_DH_anon_WITH_AES_256_GCM_SHA384 = 0xa7, - TLS_PSK_WITH_AES_128_GCM_SHA256 = 0xa8, - TLS_PSK_WITH_AES_256_GCM_SHA384 = 0xa9, - TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 = 0xaa, - TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 = 0xab, - - /* ECC AES-GCM, first byte is 0xC0 (ECC_BYTE) */ - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 = 0x2b, - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 = 0x2c, - TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 = 0x2d, - TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 = 0x2e, - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 = 0x2f, - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 = 0x30, - TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 = 0x31, - TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 = 0x32, - - /* AES-CCM, first byte is 0xC0 but isn't ECC, - * also, in some of the other AES-CCM suites - * there will be second byte number conflicts - * with non-ECC AES-GCM */ - TLS_RSA_WITH_AES_128_CCM_8 = 0xa0, - TLS_RSA_WITH_AES_256_CCM_8 = 0xa1, - TLS_ECDHE_ECDSA_WITH_AES_128_CCM = 0xac, - TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 = 0xae, - TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 = 0xaf, - TLS_PSK_WITH_AES_128_CCM = 0xa4, - TLS_PSK_WITH_AES_256_CCM = 0xa5, - TLS_PSK_WITH_AES_128_CCM_8 = 0xa8, - TLS_PSK_WITH_AES_256_CCM_8 = 0xa9, - TLS_DHE_PSK_WITH_AES_128_CCM = 0xa6, - TLS_DHE_PSK_WITH_AES_256_CCM = 0xa7, - - /* Camellia */ - TLS_RSA_WITH_CAMELLIA_128_CBC_SHA = 0x41, - TLS_RSA_WITH_CAMELLIA_256_CBC_SHA = 0x84, - TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 = 0xba, - TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 = 0xc0, - TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA = 0x45, - TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA = 0x88, - TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 = 0xbe, - TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 = 0xc4, - - /* chacha20-poly1305 suites first byte is 0xCC (CHACHA_BYTE) */ - TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 = 0xa8, - TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 = 0xa9, - TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 = 0xaa, - TLS_ECDHE_PSK_WITH_CHACHA20_POLY1305_SHA256 = 0xac, - TLS_PSK_WITH_CHACHA20_POLY1305_SHA256 = 0xab, - TLS_DHE_PSK_WITH_CHACHA20_POLY1305_SHA256 = 0xad, - - /* chacha20-poly1305 earlier version of nonce and padding (CHACHA_BYTE) */ - TLS_ECDHE_RSA_WITH_CHACHA20_OLD_POLY1305_SHA256 = 0x13, - TLS_ECDHE_ECDSA_WITH_CHACHA20_OLD_POLY1305_SHA256 = 0x14, - TLS_DHE_RSA_WITH_CHACHA20_OLD_POLY1305_SHA256 = 0x15, - - /* TLS v1.3 cipher suites */ - TLS_AES_128_GCM_SHA256 = 0x01, - TLS_AES_256_GCM_SHA384 = 0x02, - TLS_CHACHA20_POLY1305_SHA256 = 0x03, - TLS_AES_128_CCM_SHA256 = 0x04, - TLS_AES_128_CCM_8_SHA256 = 0x05, - - /* TLS v1.3 Integity only cipher suites - 0xC0 (ECC) first byte */ - TLS_SHA256_SHA256 = 0xB4, - TLS_SHA384_SHA384 = 0xB5, - - /* Fallback SCSV (Signaling Cipher Suite Value) */ - TLS_FALLBACK_SCSV = 0x56, - /* Renegotiation Indication Extension Special Suite */ - TLS_EMPTY_RENEGOTIATION_INFO_SCSV = 0xff -}; - - -#ifndef WOLFSSL_SESSION_TIMEOUT - #define WOLFSSL_SESSION_TIMEOUT 500 - /* default session resumption cache timeout in seconds */ -#endif - - -#ifndef WOLFSSL_DTLS_WINDOW_WORDS - #define WOLFSSL_DTLS_WINDOW_WORDS 2 -#endif /* WOLFSSL_DTLS_WINDOW_WORDS */ -#define DTLS_WORD_BITS (sizeof(word32) * CHAR_BIT) -#define DTLS_SEQ_BITS (WOLFSSL_DTLS_WINDOW_WORDS * DTLS_WORD_BITS) -#define DTLS_SEQ_SZ (sizeof(word32) * WOLFSSL_DTLS_WINDOW_WORDS) - -#ifndef WOLFSSL_MULTICAST - #define WOLFSSL_DTLS_PEERSEQ_SZ 1 -#else - #ifndef WOLFSSL_MULTICAST_PEERS - /* max allowed multicast group peers */ - #define WOLFSSL_MULTICAST_PEERS 100 - #endif - #define WOLFSSL_DTLS_PEERSEQ_SZ WOLFSSL_MULTICAST_PEERS -#endif /* WOLFSSL_MULTICAST */ - -#ifndef WOLFSSL_MAX_MTU - #define WOLFSSL_MAX_MTU 1500 -#endif /* WOLFSSL_MAX_MTU */ - - -/* set minimum DH key size allowed */ -#ifndef WOLFSSL_MIN_DHKEY_BITS - #ifdef WOLFSSL_MAX_STRENGTH - #define WOLFSSL_MIN_DHKEY_BITS 2048 - #else - #define WOLFSSL_MIN_DHKEY_BITS 1024 - #endif -#endif -#if (WOLFSSL_MIN_DHKEY_BITS % 8) - #error DH minimum bit size must be multiple of 8 -#endif -#if (WOLFSSL_MIN_DHKEY_BITS > 16000) - #error DH minimum bit size must not be greater than 16000 -#endif -#define MIN_DHKEY_SZ (WOLFSSL_MIN_DHKEY_BITS / 8) -/* set maximum DH key size allowed */ -#ifndef WOLFSSL_MAX_DHKEY_BITS - #if (defined(USE_FAST_MATH) && defined(FP_MAX_BITS) && FP_MAX_BITS >= 16384) - #define WOLFSSL_MAX_DHKEY_BITS 8192 - #else - #define WOLFSSL_MAX_DHKEY_BITS 4096 - #endif -#endif -#if (WOLFSSL_MAX_DHKEY_BITS % 8) - #error DH maximum bit size must be multiple of 8 -#endif -#if (WOLFSSL_MAX_DHKEY_BITS > 16000) - #error DH maximum bit size must not be greater than 16000 -#endif -#define MAX_DHKEY_SZ (WOLFSSL_MAX_DHKEY_BITS / 8) - -#ifndef MAX_PSK_ID_LEN - /* max psk identity/hint supported */ - #if defined(WOLFSSL_TLS13) - #define MAX_PSK_ID_LEN 256 - #else - #define MAX_PSK_ID_LEN 128 - #endif -#endif - -#ifndef MAX_EARLY_DATA_SZ - /* maximum early data size */ - #define MAX_EARLY_DATA_SZ 4096 -#endif - -enum Misc { - CIPHER_BYTE = 0x00, /* Default ciphers */ - ECC_BYTE = 0xC0, /* ECC first cipher suite byte */ - QSH_BYTE = 0xD0, /* Quantum-safe Handshake cipher suite */ - CHACHA_BYTE = 0xCC, /* ChaCha first cipher suite */ - TLS13_BYTE = 0x13, /* TLS v1.3 first byte of cipher suite */ - - SEND_CERT = 1, - SEND_BLANK_CERT = 2, - - DTLS_MAJOR = 0xfe, /* DTLS major version number */ - DTLS_MINOR = 0xff, /* DTLS minor version number */ - DTLSv1_2_MINOR = 0xfd, /* DTLS minor version number */ - SSLv3_MAJOR = 3, /* SSLv3 and TLSv1+ major version number */ - SSLv3_MINOR = 0, /* TLSv1 minor version number */ - TLSv1_MINOR = 1, /* TLSv1 minor version number */ - TLSv1_1_MINOR = 2, /* TLSv1_1 minor version number */ - TLSv1_2_MINOR = 3, /* TLSv1_2 minor version number */ - TLSv1_3_MINOR = 4, /* TLSv1_3 minor version number */ - TLS_DRAFT_MAJOR = 0x7f, /* Draft TLS major version number */ -#ifdef WOLFSSL_TLS13_DRAFT -#ifdef WOLFSSL_TLS13_DRAFT_18 - TLS_DRAFT_MINOR = 0x12, /* Minor version number of TLS draft */ -#elif defined(WOLFSSL_TLS13_DRAFT_22) - TLS_DRAFT_MINOR = 0x16, /* Minor version number of TLS draft */ -#elif defined(WOLFSSL_TLS13_DRAFT_23) - TLS_DRAFT_MINOR = 0x17, /* Minor version number of TLS draft */ -#elif defined(WOLFSSL_TLS13_DRAFT_26) - TLS_DRAFT_MINOR = 0x1a, /* Minor version number of TLS draft */ -#else - TLS_DRAFT_MINOR = 0x1c, /* Minor version number of TLS draft */ -#endif -#endif - OLD_HELLO_ID = 0x01, /* SSLv2 Client Hello Indicator */ - INVALID_BYTE = 0xff, /* Used to initialize cipher specs values */ - NO_COMPRESSION = 0, - ZLIB_COMPRESSION = 221, /* wolfSSL zlib compression */ - HELLO_EXT_SIG_ALGO = 13, /* ID for the sig_algo hello extension */ - HELLO_EXT_EXTMS = 0x0017, /* ID for the extended master secret ext */ - SECRET_LEN = WOLFSSL_MAX_MASTER_KEY_LENGTH, - /* pre RSA and all master */ -#if defined(WOLFSSL_MYSQL_COMPATIBLE) || \ - (defined(USE_FAST_MATH) && defined(FP_MAX_BITS) && FP_MAX_BITS > 8192) -#ifndef NO_PSK - ENCRYPT_LEN = 1024 + MAX_PSK_ID_LEN + 2, /* 8192 bit static buffer */ -#else - ENCRYPT_LEN = 1024, /* allow 8192 bit static buffer */ -#endif -#else -#ifndef NO_PSK - ENCRYPT_LEN = 512 + MAX_PSK_ID_LEN + 2, /* 4096 bit static buffer */ -#else - ENCRYPT_LEN = 512, /* allow 4096 bit static buffer */ -#endif -#endif - SIZEOF_SENDER = 4, /* clnt or srvr */ - FINISHED_SZ = 36, /* WC_MD5_DIGEST_SIZE + WC_SHA_DIGEST_SIZE */ - MAX_RECORD_SIZE = 16384, /* 2^14, max size by standard */ - MAX_PLAINTEXT_SZ = (1 << 14), /* Max plaintext sz */ - MAX_TLS_CIPHER_SZ = (1 << 14) + 2048, /* Max TLS encrypted data sz */ -#ifdef WOLFSSL_TLS13 - MAX_TLS13_PLAIN_SZ = (1 << 14) + 1, /* Max unencrypted data sz */ - MAX_TLS13_ENC_SZ = (1 << 14) + 256, /* Max encrypted data sz */ -#endif - MAX_MSG_EXTRA = 38 + WC_MAX_DIGEST_SIZE, - /* max added to msg, mac + pad from */ - /* RECORD_HEADER_SZ + BLOCK_SZ (pad) + Max - digest sz + BLOC_SZ (iv) + pad byte (1) */ - MAX_COMP_EXTRA = 1024, /* max compression extra */ - MAX_MTU = WOLFSSL_MAX_MTU, /* max expected MTU */ - MAX_UDP_SIZE = 8192 - 100, /* was MAX_MTU - 100 */ - MAX_DH_SZ = (MAX_DHKEY_SZ * 3) + 12, /* DH_P, DH_G and DH_Pub */ - /* 4096 p, pub, g + 2 byte size for each */ - MAX_STR_VERSION = 8, /* string rep of protocol version */ - - PAD_MD5 = 48, /* pad length for finished */ - PAD_SHA = 40, /* pad length for finished */ - MAX_PAD_SIZE = 256, /* maximum length of padding */ - - LENGTH_SZ = 2, /* length field for HMAC, data only */ - VERSION_SZ = 2, /* length of proctocol version */ - SEQ_SZ = 8, /* 64 bit sequence number */ - ALERT_SIZE = 2, /* level + description */ - VERIFY_HEADER = 2, /* always use 2 bytes */ - EXTS_SZ = 2, /* always use 2 bytes */ - EXT_ID_SZ = 2, /* always use 2 bytes */ - MAX_DH_SIZE = MAX_DHKEY_SZ+1, - /* Max size plus possible leading 0 */ - NAMED_DH_MASK = 0x100, /* Named group mask for DH parameters */ - MIN_FFHDE_GROUP = 0x100, /* Named group minimum for FFDHE parameters */ - MAX_FFHDE_GROUP = 0x1FF, /* Named group maximum for FFDHE parameters */ - SESSION_HINT_SZ = 4, /* session timeout hint */ - SESSION_ADD_SZ = 4, /* session age add */ - TICKET_NONCE_LEN_SZ = 1, /* Ticket nonce length size */ - DEF_TICKET_NONCE_SZ = 1, /* Default ticket nonce size */ - MAX_TICKET_NONCE_SZ = 8, /* maximum ticket nonce size */ - MAX_LIFETIME = 604800, /* maximum ticket lifetime */ - - RAN_LEN = 32, /* random length */ - SEED_LEN = RAN_LEN * 2, /* tls prf seed length */ - ID_LEN = 32, /* session id length */ - COOKIE_SECRET_SZ = 14, /* dtls cookie secret size */ - MAX_COOKIE_LEN = 32, /* max dtls cookie size */ - COOKIE_SZ = 20, /* use a 20 byte cookie */ - SUITE_LEN = 2, /* cipher suite sz length */ - ENUM_LEN = 1, /* always a byte */ - OPAQUE8_LEN = 1, /* 1 byte */ - OPAQUE16_LEN = 2, /* 2 bytes */ - OPAQUE24_LEN = 3, /* 3 bytes */ - OPAQUE32_LEN = 4, /* 4 bytes */ - OPAQUE64_LEN = 8, /* 8 bytes */ - COMP_LEN = 1, /* compression length */ - CURVE_LEN = 2, /* ecc named curve length */ - KE_GROUP_LEN = 2, /* key exchange group length */ - SERVER_ID_LEN = 20, /* server session id length */ - - HANDSHAKE_HEADER_SZ = 4, /* type + length(3) */ - RECORD_HEADER_SZ = 5, /* type + version + len(2) */ - CERT_HEADER_SZ = 3, /* always 3 bytes */ - REQ_HEADER_SZ = 2, /* cert request header sz */ - HINT_LEN_SZ = 2, /* length of hint size field */ - TRUNCATED_HMAC_SZ = 10, /* length of hmac w/ truncated hmac extension */ - HELLO_EXT_SZ = 4, /* base length of a hello extension */ - HELLO_EXT_TYPE_SZ = 2, /* length of a hello extension type */ - HELLO_EXT_SZ_SZ = 2, /* length of a hello extension size */ - HELLO_EXT_SIGALGO_SZ = 2, /* length of number of items in sigalgo list */ - - DTLS_HANDSHAKE_HEADER_SZ = 12, /* normal + seq(2) + offset(3) + length(3) */ - DTLS_RECORD_HEADER_SZ = 13, /* normal + epoch(2) + seq_num(6) */ - DTLS_HANDSHAKE_EXTRA = 8, /* diff from normal */ - DTLS_RECORD_EXTRA = 8, /* diff from normal */ - DTLS_HANDSHAKE_SEQ_SZ = 2, /* handshake header sequence number */ - DTLS_HANDSHAKE_FRAG_SZ = 3, /* fragment offset and length are 24 bit */ - DTLS_POOL_SZ = 255,/* allowed number of list items in TX pool */ - DTLS_EXPORT_PRO = 165,/* wolfSSL protocol for serialized session */ - DTLS_EXPORT_STATE_PRO = 166,/* wolfSSL protocol for serialized state */ - DTLS_EXPORT_VERSION = 4, /* wolfSSL version for serialized session */ - DTLS_EXPORT_OPT_SZ = 60, /* amount of bytes used from Options */ - DTLS_EXPORT_VERSION_3 = 3, /* wolfSSL version before TLS 1.3 addition */ - DTLS_EXPORT_OPT_SZ_3 = 59, /* amount of bytes used from Options */ - DTLS_EXPORT_KEY_SZ = 325 + (DTLS_SEQ_SZ * 2), - /* max amount of bytes used from Keys */ - DTLS_EXPORT_MIN_KEY_SZ = 85 + (DTLS_SEQ_SZ * 2), - /* min amount of bytes used from Keys */ - DTLS_EXPORT_SPC_SZ = 16, /* amount of bytes used from CipherSpecs */ - DTLS_EXPORT_LEN = 2, /* 2 bytes for length and protocol */ - DTLS_EXPORT_IP = 46, /* max ip size IPv4 mapped IPv6 */ - MAX_EXPORT_BUFFER = 514, /* max size of buffer for exporting */ - MAX_EXPORT_STATE_BUFFER = (DTLS_EXPORT_MIN_KEY_SZ) + (3 * DTLS_EXPORT_LEN), - /* max size of buffer for exporting state */ - FINISHED_LABEL_SZ = 15, /* TLS finished label size */ - TLS_FINISHED_SZ = 12, /* TLS has a shorter size */ - EXT_MASTER_LABEL_SZ = 22, /* TLS extended master secret label sz */ - MASTER_LABEL_SZ = 13, /* TLS master secret label sz */ - KEY_LABEL_SZ = 13, /* TLS key block expansion sz */ - PROTOCOL_LABEL_SZ = 9, /* Length of the protocol label */ - MAX_LABEL_SZ = 34, /* Maximum length of a label */ - MAX_HKDF_LABEL_SZ = OPAQUE16_LEN + - OPAQUE8_LEN + PROTOCOL_LABEL_SZ + MAX_LABEL_SZ + - OPAQUE8_LEN + WC_MAX_DIGEST_SIZE, - MAX_REQUEST_SZ = 256, /* Maximum cert req len (no auth yet */ - SESSION_FLUSH_COUNT = 256, /* Flush session cache unless user turns off */ - TLS_MAX_PAD_SZ = 255, /* Max padding in TLS */ - -#if defined(HAVE_FIPS) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 2)) - MAX_SYM_KEY_SIZE = AES_256_KEY_SIZE, -#else - MAX_SYM_KEY_SIZE = WC_MAX_SYM_KEY_SIZE, -#endif - -#ifdef HAVE_SELFTEST - #ifndef WOLFSSL_AES_KEY_SIZE_ENUM - #define WOLFSSL_AES_KEY_SIZE_ENUM - AES_IV_SIZE = 16, - AES_128_KEY_SIZE = 16, - AES_192_KEY_SIZE = 24, - AES_256_KEY_SIZE = 32, - #endif -#endif - - MAX_IV_SZ = AES_BLOCK_SIZE, - - AEAD_SEQ_OFFSET = 4, /* Auth Data: Sequence number */ - AEAD_TYPE_OFFSET = 8, /* Auth Data: Type */ - AEAD_VMAJ_OFFSET = 9, /* Auth Data: Major Version */ - AEAD_VMIN_OFFSET = 10, /* Auth Data: Minor Version */ - AEAD_LEN_OFFSET = 11, /* Auth Data: Length */ - AEAD_AUTH_DATA_SZ = 13, /* Size of the data to authenticate */ - AEAD_NONCE_SZ = 12, - AESGCM_IMP_IV_SZ = 4, /* Size of GCM/CCM AEAD implicit IV */ - AESGCM_EXP_IV_SZ = 8, /* Size of GCM/CCM AEAD explicit IV */ - AESGCM_NONCE_SZ = AESGCM_EXP_IV_SZ + AESGCM_IMP_IV_SZ, - - CHACHA20_IMP_IV_SZ = 12, /* Size of ChaCha20 AEAD implicit IV */ - CHACHA20_NONCE_SZ = 12, /* Size of ChacCha20 nonce */ - CHACHA20_OLD_OFFSET = 4, /* Offset for seq # in old poly1305 */ - - /* For any new implicit/explicit IV size adjust AEAD_MAX_***_SZ */ - - AES_GCM_AUTH_SZ = 16, /* AES-GCM Auth Tag length */ - AES_CCM_16_AUTH_SZ = 16, /* AES-CCM-16 Auth Tag length */ - AES_CCM_8_AUTH_SZ = 8, /* AES-CCM-8 Auth Tag Length */ - AESCCM_NONCE_SZ = 12, - - CAMELLIA_128_KEY_SIZE = 16, /* for 128 bit */ - CAMELLIA_192_KEY_SIZE = 24, /* for 192 bit */ - CAMELLIA_256_KEY_SIZE = 32, /* for 256 bit */ - CAMELLIA_IV_SIZE = 16, /* always block size */ - - CHACHA20_256_KEY_SIZE = 32, /* for 256 bit */ - CHACHA20_128_KEY_SIZE = 16, /* for 128 bit */ - CHACHA20_IV_SIZE = 12, /* 96 bits for iv */ - - POLY1305_AUTH_SZ = 16, /* 128 bits */ - - HMAC_NONCE_SZ = 12, /* Size of HMAC nonce */ - - HC_128_KEY_SIZE = 16, /* 128 bits */ - HC_128_IV_SIZE = 16, /* also 128 bits */ - - RABBIT_KEY_SIZE = 16, /* 128 bits */ - RABBIT_IV_SIZE = 8, /* 64 bits for iv */ - - EVP_SALT_SIZE = 8, /* evp salt size 64 bits */ - -#ifndef ECDHE_SIZE /* allow this to be overridden at compile-time */ - ECDHE_SIZE = 32, /* ECHDE server size defaults to 256 bit */ -#endif - MAX_EXPORT_ECC_SZ = 256, /* Export ANS X9.62 max future size */ - MAX_CURVE_NAME_SZ = 16, /* Maximum size of curve name string */ - - NEW_SA_MAJOR = 8, /* Most significant byte used with new sig algos */ - ED25519_SA_MAJOR = 8, /* Most significant byte for ED25519 */ - ED25519_SA_MINOR = 7, /* Least significant byte for ED25519 */ - ED448_SA_MAJOR = 8, /* Most significant byte for ED448 */ - ED448_SA_MINOR = 8, /* Least significant byte for ED448 */ - - MIN_RSA_SHA512_PSS_BITS = 512 * 2 + 8 * 8, /* Min key size */ - MIN_RSA_SHA384_PSS_BITS = 384 * 2 + 8 * 8, /* Min key size */ - -#ifndef NO_RSA - MAX_CERT_VERIFY_SZ = 4096 / 8, /* max RSA - default 4096-bits */ -#elif defined(HAVE_ECC) - MAX_CERT_VERIFY_SZ = ECC_MAX_SIG_SIZE, /* max ECC */ -#elif defined(HAVE_ED448) - MAX_CERT_VERIFY_SZ = ED448_SIG_SIZE, /* max Ed448 */ -#elif defined(HAVE_ED25519) - MAX_CERT_VERIFY_SZ = ED25519_SIG_SIZE, /* max Ed25519 */ -#else - MAX_CERT_VERIFY_SZ = 1024, /* max default */ -#endif - CLIENT_HELLO_FIRST = 35, /* Protocol + RAN_LEN + sizeof(id_len) */ - MAX_SUITE_NAME = 48, /* maximum length of cipher suite string */ - - DTLS_TIMEOUT_INIT = 1, /* default timeout init for DTLS receive */ - DTLS_TIMEOUT_MAX = 64, /* default max timeout for DTLS receive */ - DTLS_TIMEOUT_MULTIPLIER = 2, /* default timeout multiplier for DTLS recv */ - - NULL_TERM_LEN = 1, /* length of null '\0' termination character */ - MAX_PSK_KEY_LEN = 64, /* max psk key supported */ - MIN_PSK_ID_LEN = 6, /* min length of identities */ - MIN_PSK_BINDERS_LEN= 33, /* min length of binders */ - MAX_TICKET_AGE_SECS= 10, /* maximum ticket age in seconds */ - -#ifndef MAX_WOLFSSL_FILE_SIZE - MAX_WOLFSSL_FILE_SIZE = 1024ul * 1024ul * 4, /* 4 mb file size alloc limit */ -#endif - - MAX_X509_SIZE = 2048, /* max static x509 buffer size */ - CERT_MIN_SIZE = 256, /* min PEM cert size with header/footer */ - - MAX_NTRU_PUB_KEY_SZ = 1027, /* NTRU max for now */ - MAX_NTRU_ENCRYPT_SZ = 1027, /* NTRU max for now */ - MAX_NTRU_BITS = 256, /* max symmetric bit strength */ - NO_SNIFF = 0, /* not sniffing */ - SNIFF = 1, /* currently sniffing */ - - HASH_SIG_SIZE = 2, /* default SHA1 RSA */ - - NO_COPY = 0, /* should we copy static buffer for write */ - COPY = 1, /* should we copy static buffer for write */ - - INVALID_PEER_ID = 0xFFFF, /* Initialize value for peer ID. */ - - PREV_ORDER = -1, /* Sequence number is in previous epoch. */ - PEER_ORDER = 1, /* Peer sequence number for verify. */ - CUR_ORDER = 0, /* Current sequence number. */ - WRITE_PROTO = 1, /* writing a protocol message */ - READ_PROTO = 0 /* reading a protocol message */ -}; - -/* minimum Downgrade Minor version */ -#ifndef WOLFSSL_MIN_DOWNGRADE - #ifndef NO_OLD_TLS - #define WOLFSSL_MIN_DOWNGRADE TLSv1_MINOR - #else - #define WOLFSSL_MIN_DOWNGRADE TLSv1_2_MINOR - #endif -#endif - -/* Set max implicit IV size for AEAD cipher suites */ -#define AEAD_MAX_IMP_SZ 12 - -/* Set max explicit IV size for AEAD cipher suites */ -#define AEAD_MAX_EXP_SZ 8 - - -#ifndef WOLFSSL_MAX_SUITE_SZ - #define WOLFSSL_MAX_SUITE_SZ 300 - /* 150 suites for now! */ -#endif - -/* number of items in the signature algo list */ -#ifndef WOLFSSL_MAX_SIGALGO - #define WOLFSSL_MAX_SIGALGO 32 -#endif - - -/* set minimum ECC key size allowed */ -#ifndef WOLFSSL_MIN_ECC_BITS - #ifdef WOLFSSL_MAX_STRENGTH - #define WOLFSSL_MIN_ECC_BITS 256 - #else - #define WOLFSSL_MIN_ECC_BITS 224 - #endif -#endif /* WOLFSSL_MIN_ECC_BITS */ -#if (WOLFSSL_MIN_ECC_BITS % 8) - /* Some ECC keys are not divisible by 8 such as prime239v1 or sect131r1. - In these cases round down to the nearest value divisible by 8. The - restriction of being divisible by 8 is in place to match wc_ecc_size - function from wolfSSL. - */ - #error ECC minimum bit size must be a multiple of 8 -#endif -#define MIN_ECCKEY_SZ (WOLFSSL_MIN_ECC_BITS / 8) - -/* set minimum RSA key size allowed */ -#ifndef WOLFSSL_MIN_RSA_BITS - #ifdef WOLFSSL_MAX_STRENGTH - #define WOLFSSL_MIN_RSA_BITS 2048 - #else - #define WOLFSSL_MIN_RSA_BITS 1024 - #endif -#endif /* WOLFSSL_MIN_RSA_BITS */ -#if (WOLFSSL_MIN_RSA_BITS % 8) - /* This is to account for the example case of a min size of 2050 bits but - still allows 2049 bit key. So we need the measurement to be in bytes. */ - #error RSA minimum bit size must be a multiple of 8 -#endif -#define MIN_RSAKEY_SZ (WOLFSSL_MIN_RSA_BITS / 8) - -#ifdef SESSION_INDEX -/* Shift values for making a session index */ -#define SESSIDX_ROW_SHIFT 4 -#define SESSIDX_IDX_MASK 0x0F -#endif - - -/* max cert chain peer depth */ -#ifndef MAX_CHAIN_DEPTH - #define MAX_CHAIN_DEPTH 9 -#endif - -/* max size of a certificate message payload */ -/* assumes MAX_CHAIN_DEPTH number of certificates at 2kb per certificate */ -#ifndef MAX_CERTIFICATE_SZ - #define MAX_CERTIFICATE_SZ \ - CERT_HEADER_SZ + \ - (MAX_X509_SIZE + CERT_HEADER_SZ) * MAX_CHAIN_DEPTH -#endif - -/* max size of a handshake message, currently set to the certificate */ -#ifndef MAX_HANDSHAKE_SZ - #define MAX_HANDSHAKE_SZ MAX_CERTIFICATE_SZ -#endif - -#ifndef SESSION_TICKET_LEN - #define SESSION_TICKET_LEN 256 -#endif - -#ifndef SESSION_TICKET_HINT_DEFAULT - #define SESSION_TICKET_HINT_DEFAULT 300 -#endif - - -/* don't use extra 3/4k stack space unless need to */ -#ifdef HAVE_NTRU - #define MAX_ENCRYPT_SZ MAX_NTRU_ENCRYPT_SZ -#else - #define MAX_ENCRYPT_SZ ENCRYPT_LEN -#endif - - -/* states */ -enum states { - NULL_STATE = 0, - - SERVER_HELLOVERIFYREQUEST_COMPLETE, - SERVER_HELLO_RETRY_REQUEST_COMPLETE, - SERVER_HELLO_COMPLETE, - SERVER_ENCRYPTED_EXTENSIONS_COMPLETE, - SERVER_CERT_COMPLETE, - SERVER_KEYEXCHANGE_COMPLETE, - SERVER_HELLODONE_COMPLETE, - SERVER_CHANGECIPHERSPEC_COMPLETE, - SERVER_FINISHED_COMPLETE, - - CLIENT_HELLO_RETRY, - CLIENT_HELLO_COMPLETE, - CLIENT_KEYEXCHANGE_COMPLETE, - CLIENT_CHANGECIPHERSPEC_COMPLETE, - CLIENT_FINISHED_COMPLETE, - - HANDSHAKE_DONE -}; - -/* SSL Version */ -typedef struct ProtocolVersion { - byte major; - byte minor; -} WOLFSSL_PACK ProtocolVersion; - - -WOLFSSL_LOCAL ProtocolVersion MakeSSLv3(void); -WOLFSSL_LOCAL ProtocolVersion MakeTLSv1(void); -WOLFSSL_LOCAL ProtocolVersion MakeTLSv1_1(void); -WOLFSSL_LOCAL ProtocolVersion MakeTLSv1_2(void); -WOLFSSL_LOCAL ProtocolVersion MakeTLSv1_3(void); - -#ifdef WOLFSSL_DTLS - WOLFSSL_LOCAL ProtocolVersion MakeDTLSv1(void); - WOLFSSL_LOCAL ProtocolVersion MakeDTLSv1_2(void); - - #ifdef WOLFSSL_SESSION_EXPORT - WOLFSSL_LOCAL int wolfSSL_dtls_import_internal(WOLFSSL* ssl, byte* buf, - word32 sz); - WOLFSSL_LOCAL int wolfSSL_dtls_export_internal(WOLFSSL* ssl, byte* buf, - word32 sz); - WOLFSSL_LOCAL int wolfSSL_dtls_export_state_internal(WOLFSSL* ssl, - byte* buf, word32 sz); - WOLFSSL_LOCAL int wolfSSL_dtls_import_state_internal(WOLFSSL* ssl, - byte* buf, word32 sz); - WOLFSSL_LOCAL int wolfSSL_send_session(WOLFSSL* ssl); - #endif -#endif - - -/* wolfSSL method type */ -struct WOLFSSL_METHOD { - ProtocolVersion version; - byte side; /* connection side, server or client */ - byte downgrade; /* whether to downgrade version, default no */ -}; - -/* wolfSSL buffer type - internal uses "buffer" type */ -typedef WOLFSSL_BUFFER_INFO buffer; - -typedef struct Suites Suites; - - -/* defaults to client */ -WOLFSSL_LOCAL void InitSSL_Method(WOLFSSL_METHOD*, ProtocolVersion); - -WOLFSSL_LOCAL int InitSSL_Suites(WOLFSSL* ssl); -WOLFSSL_LOCAL int InitSSL_Side(WOLFSSL* ssl, word16 side); - -/* for sniffer */ -WOLFSSL_LOCAL int DoFinished(WOLFSSL* ssl, const byte* input, word32* inOutIdx, - word32 size, word32 totalSz, int sniff); -WOLFSSL_LOCAL int DoApplicationData(WOLFSSL* ssl, byte* input, word32* inOutIdx); -/* TLS v1.3 needs these */ -WOLFSSL_LOCAL int HandleTlsResumption(WOLFSSL* ssl, int bogusID, - Suites* clSuites); -#ifdef WOLFSSL_TLS13 -WOLFSSL_LOCAL int FindSuite(Suites* suites, byte first, byte second); -#endif -WOLFSSL_LOCAL int DoClientHello(WOLFSSL* ssl, const byte* input, word32*, - word32); -#ifdef WOLFSSL_TLS13 -WOLFSSL_LOCAL int DoTls13ClientHello(WOLFSSL* ssl, const byte* input, - word32* inOutIdx, word32 helloSz); -#endif -WOLFSSL_LOCAL int DoServerHello(WOLFSSL* ssl, const byte* input, word32*, - word32); -WOLFSSL_LOCAL int CompleteServerHello(WOLFSSL *ssl); -WOLFSSL_LOCAL int CheckVersion(WOLFSSL *ssl, ProtocolVersion pv); -WOLFSSL_LOCAL int PickHashSigAlgo(WOLFSSL* ssl, const byte* hashSigAlgo, - word32 hashSigAlgoSz); -WOLFSSL_LOCAL int DecodePrivateKey(WOLFSSL *ssl, word16* length); -#ifdef HAVE_PK_CALLBACKS -WOLFSSL_LOCAL int GetPrivateKeySigSize(WOLFSSL* ssl); -#ifndef NO_ASN - WOLFSSL_LOCAL int InitSigPkCb(WOLFSSL* ssl, SignatureCtx* sigCtx); -#endif -#endif -WOLFSSL_LOCAL void FreeKeyExchange(WOLFSSL* ssl); -WOLFSSL_LOCAL void FreeSuites(WOLFSSL* ssl); -WOLFSSL_LOCAL int ProcessPeerCerts(WOLFSSL* ssl, byte* input, word32* inOutIdx, word32 size); -WOLFSSL_LOCAL int MatchDomainName(const char* pattern, int len, const char* str); -#ifndef NO_CERTS -WOLFSSL_LOCAL int CheckAltNames(DecodedCert* dCert, char* domain); -#ifdef OPENSSL_EXTRA -WOLFSSL_LOCAL int CheckIPAddr(DecodedCert* dCert, char* ipasc); -#endif -#endif -WOLFSSL_LOCAL int CreateTicket(WOLFSSL* ssl); -WOLFSSL_LOCAL int HashOutputRaw(WOLFSSL* ssl, const byte* output, int sz); -WOLFSSL_LOCAL int HashOutput(WOLFSSL* ssl, const byte* output, int sz, - int ivSz); -WOLFSSL_LOCAL int HashInput(WOLFSSL* ssl, const byte* input, int sz); -#if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) -WOLFSSL_LOCAL int SNI_Callback(WOLFSSL* ssl); -#endif -#ifdef WOLFSSL_TLS13 -WOLFSSL_LOCAL int DecryptTls13(WOLFSSL* ssl, byte* output, const byte* input, - word16 sz, const byte* aad, word16 aadSz); -WOLFSSL_LOCAL int DoTls13HandShakeMsgType(WOLFSSL* ssl, byte* input, - word32* inOutIdx, byte type, - word32 size, word32 totalSz); -WOLFSSL_LOCAL int DoTls13HandShakeMsg(WOLFSSL* ssl, byte* input, - word32* inOutIdx, word32 totalSz); -WOLFSSL_LOCAL int DoTls13ServerHello(WOLFSSL* ssl, const byte* input, - word32* inOutIdx, word32 helloSz, - byte* extMsgType); -#endif -int TimingPadVerify(WOLFSSL* ssl, const byte* input, int padLen, int t, - int pLen, int content); - - -enum { - FORCED_FREE = 1, - NO_FORCED_FREE = 0 -}; - - -/* only use compression extra if using compression */ -#ifdef HAVE_LIBZ - #define COMP_EXTRA MAX_COMP_EXTRA -#else - #define COMP_EXTRA 0 -#endif - -/* only the sniffer needs space in the buffer for extra MTU record(s) */ -#ifdef WOLFSSL_SNIFFER - #define MTU_EXTRA MAX_MTU * 3 -#else - #define MTU_EXTRA 0 -#endif - - -/* embedded callbacks require large static buffers, make sure on */ -#ifdef WOLFSSL_CALLBACKS - #undef LARGE_STATIC_BUFFERS - #define LARGE_STATIC_BUFFERS -#endif - - -/* give user option to use 16K static buffers */ -#if defined(LARGE_STATIC_BUFFERS) - #define RECORD_SIZE MAX_RECORD_SIZE -#else - #ifdef WOLFSSL_DTLS - #define RECORD_SIZE MAX_MTU - #else - #define RECORD_SIZE 128 - #endif -#endif - - -/* user option to turn off 16K output option */ -/* if using small static buffers (default) and SSL_write tries to write data - larger than the record we have, dynamically get it, unless user says only - write in static buffer chunks */ -#ifndef STATIC_CHUNKS_ONLY - #define OUTPUT_RECORD_SIZE MAX_RECORD_SIZE -#else - #define OUTPUT_RECORD_SIZE RECORD_SIZE -#endif - -/* wolfSSL input buffer - - RFC 2246: - - length - The length (in bytes) of the following TLSPlaintext.fragment. - The length should not exceed 2^14. -*/ -#if defined(LARGE_STATIC_BUFFERS) - #define STATIC_BUFFER_LEN RECORD_HEADER_SZ + RECORD_SIZE + COMP_EXTRA + \ - MTU_EXTRA + MAX_MSG_EXTRA -#else - /* don't fragment memory from the record header */ - #define STATIC_BUFFER_LEN RECORD_HEADER_SZ -#endif - -typedef struct { - ALIGN16 byte staticBuffer[STATIC_BUFFER_LEN]; - byte* buffer; /* place holder for static or dynamic buffer */ - word32 length; /* total buffer length used */ - word32 idx; /* idx to part of length already consumed */ - word32 bufferSize; /* current buffer size */ - byte dynamicFlag; /* dynamic memory currently in use */ - byte offset; /* alignment offset attempt */ -} bufferStatic; - -/* Cipher Suites holder */ -struct Suites { - word16 suiteSz; /* suite length in bytes */ - word16 hashSigAlgoSz; /* SigAlgo extension length in bytes */ - byte suites[WOLFSSL_MAX_SUITE_SZ]; - byte hashSigAlgo[WOLFSSL_MAX_SIGALGO]; /* sig/algo to offer */ - byte setSuites; /* user set suites from default */ - byte hashAlgo; /* selected hash algorithm */ - byte sigAlgo; /* selected sig algorithm */ -#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) - WOLF_STACK_OF(WOLFSSL_CIPHER)* stack; /* stack of available cipher suites */ -#endif -}; - - -WOLFSSL_LOCAL void InitSuitesHashSigAlgo(Suites* suites, int haveECDSAsig, - int haveRSAsig, int haveAnon, - int tls1_2, int keySz); -WOLFSSL_LOCAL void InitSuites(Suites*, ProtocolVersion, int, word16, word16, - word16, word16, word16, word16, word16, int); -WOLFSSL_LOCAL int MatchSuite(WOLFSSL* ssl, Suites* peerSuites); -WOLFSSL_LOCAL int SetCipherList(WOLFSSL_CTX*, Suites*, const char* list); - -#ifndef PSK_TYPES_DEFINED - typedef unsigned int (*wc_psk_client_callback)(WOLFSSL*, const char*, char*, - unsigned int, unsigned char*, unsigned int); - typedef unsigned int (*wc_psk_server_callback)(WOLFSSL*, const char*, - unsigned char*, unsigned int); -#ifdef WOLFSSL_TLS13 - typedef unsigned int (*wc_psk_client_tls13_callback)(WOLFSSL*, const char*, - char*, unsigned int, unsigned char*, unsigned int, - const char**); - typedef unsigned int (*wc_psk_server_tls13_callback)(WOLFSSL*, const char*, - unsigned char*, unsigned int, const char**); -#endif -#endif /* PSK_TYPES_DEFINED */ -#if defined(WOLFSSL_DTLS) && defined(WOLFSSL_SESSION_EXPORT) && \ - !defined(WOLFSSL_DTLS_EXPORT_TYPES) - typedef int (*wc_dtls_export)(WOLFSSL* ssl, - unsigned char* exportBuffer, unsigned int sz, void* userCtx); -#define WOLFSSL_DTLS_EXPORT_TYPES -#endif /* WOLFSSL_DTLS_EXPORT_TYPES */ - - -#if defined(OPENSSL_ALL) || defined(WOLFSSL_QT) -#define MAX_DESCRIPTION_SZ 255 -#endif -/* wolfSSL Cipher type just points back to SSL */ -struct WOLFSSL_CIPHER { - byte cipherSuite0; - byte cipherSuite; - WOLFSSL* ssl; -#if defined(OPENSSL_ALL) || defined(WOLFSSL_QT) - char description[MAX_DESCRIPTION_SZ]; - unsigned long offset; - unsigned int in_stack; /* TRUE if added to stack in wolfSSL_get_ciphers_compat */ - int bits; -#endif -}; - - -#ifdef NO_ASN - /* no_asn won't have */ - typedef struct CertStatus CertStatus; -#endif - -#ifndef HAVE_OCSP - typedef struct WOLFSSL_OCSP WOLFSSL_OCSP; -#endif - -/* wolfSSL OCSP controller */ -#ifdef HAVE_OCSP -struct WOLFSSL_OCSP { - WOLFSSL_CERT_MANAGER* cm; /* pointer back to cert manager */ - OcspEntry* ocspList; /* OCSP response list */ - wolfSSL_Mutex ocspLock; /* OCSP list lock */ - int error; -#if defined(OPENSSL_ALL) || defined(OPENSSL_EXTRA) || \ - defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) - int(*statusCb)(WOLFSSL*, void*); -#endif -}; -#endif - -#ifndef MAX_DATE_SIZE -#define MAX_DATE_SIZE 32 -#endif - -typedef struct CRL_Entry CRL_Entry; - -#ifdef NO_SHA - #define CRL_DIGEST_SIZE WC_SHA256_DIGEST_SIZE -#else - #define CRL_DIGEST_SIZE WC_SHA_DIGEST_SIZE -#endif - -#ifdef NO_ASN - typedef struct RevokedCert RevokedCert; -#endif - -/* Complete CRL */ -struct CRL_Entry { - CRL_Entry* next; /* next entry */ - byte issuerHash[CRL_DIGEST_SIZE]; /* issuer hash */ - /* byte crlHash[CRL_DIGEST_SIZE]; raw crl data hash */ - /* restore the hash here if needed for optimized comparisons */ - byte lastDate[MAX_DATE_SIZE]; /* last date updated */ - byte nextDate[MAX_DATE_SIZE]; /* next update date */ - byte lastDateFormat; /* last date format */ - byte nextDateFormat; /* next date format */ - RevokedCert* certs; /* revoked cert list */ - int totalCerts; /* number on list */ - int verified; - byte* toBeSigned; - word32 tbsSz; - byte* signature; - word32 signatureSz; - word32 signatureOID; -#if !defined(NO_SKID) && !defined(NO_ASN) - byte extAuthKeyIdSet; - byte extAuthKeyId[KEYID_SIZE]; -#endif -}; - - -typedef struct CRL_Monitor CRL_Monitor; - -/* CRL directory monitor */ -struct CRL_Monitor { - char* path; /* full dir path, if valid pointer we're using */ - int type; /* PEM or ASN1 type */ -}; - - -#if defined(HAVE_CRL) && defined(NO_FILESYSTEM) - #undef HAVE_CRL_MONITOR -#endif - -/* wolfSSL CRL controller */ -struct WOLFSSL_CRL { - WOLFSSL_CERT_MANAGER* cm; /* pointer back to cert manager */ - CRL_Entry* crlList; /* our CRL list */ -#ifdef HAVE_CRL_IO - CbCrlIO crlIOCb; -#endif - wolfSSL_Mutex crlLock; /* CRL list lock */ - CRL_Monitor monitors[2]; /* PEM and DER possible */ -#ifdef HAVE_CRL_MONITOR - pthread_cond_t cond; /* condition to signal setup */ - pthread_t tid; /* monitoring thread */ - int mfd; /* monitor fd, -1 if no init yet */ - int setup; /* thread is setup predicate */ -#endif - void* heap; /* heap hint for dynamic memory */ -}; - - -#ifdef NO_ASN - typedef struct Signer Signer; -#ifdef WOLFSSL_TRUST_PEER_CERT - typedef struct TrustedPeerCert TrustedPeerCert; -#endif -#endif - - -#ifndef CA_TABLE_SIZE - #define CA_TABLE_SIZE 11 -#endif -#ifdef WOLFSSL_TRUST_PEER_CERT - #define TP_TABLE_SIZE 11 -#endif - -/* wolfSSL Certificate Manager */ -struct WOLFSSL_CERT_MANAGER { - Signer* caTable[CA_TABLE_SIZE]; /* the CA signer table */ - void* heap; /* heap helper */ -#ifdef WOLFSSL_TRUST_PEER_CERT - TrustedPeerCert* tpTable[TP_TABLE_SIZE]; /* table of trusted peer certs */ - wolfSSL_Mutex tpLock; /* trusted peer list lock */ -#endif - WOLFSSL_CRL* crl; /* CRL checker */ - WOLFSSL_OCSP* ocsp; /* OCSP checker */ -#if !defined(NO_WOLFSSL_SERVER) && (defined(HAVE_CERTIFICATE_STATUS_REQUEST) \ - || defined(HAVE_CERTIFICATE_STATUS_REQUEST_V2)) - WOLFSSL_OCSP* ocsp_stapling; /* OCSP checker for OCSP stapling */ -#endif - char* ocspOverrideURL; /* use this responder */ - void* ocspIOCtx; /* I/O callback CTX */ -#ifndef NO_WOLFSSL_CM_VERIFY - VerifyCallback verifyCallback; /* Verify callback */ -#endif - CallbackCACache caCacheCallback; /* CA cache addition callback */ - CbMissingCRL cbMissingCRL; /* notify through cb of missing crl */ - CbOCSPIO ocspIOCb; /* I/O callback for OCSP lookup */ - CbOCSPRespFree ocspRespFreeCb; /* Frees OCSP Response from IO Cb */ - wolfSSL_Mutex caLock; /* CA list lock */ - byte crlEnabled; /* is CRL on ? */ - byte crlCheckAll; /* always leaf, but all ? */ - byte ocspEnabled; /* is OCSP on ? */ - byte ocspCheckAll; /* always leaf, but all ? */ - byte ocspSendNonce; /* send the OCSP nonce ? */ - byte ocspUseOverrideURL; /* ignore cert's responder, override */ - byte ocspStaplingEnabled; /* is OCSP Stapling on ? */ - -#ifndef NO_RSA - short minRsaKeySz; /* minimum allowed RSA key size */ -#endif -#if defined(HAVE_ECC) || defined(HAVE_ED25519) || defined(HAVE_ED448) - short minEccKeySz; /* minimum allowed ECC key size */ -#endif -}; - -WOLFSSL_LOCAL int CM_SaveCertCache(WOLFSSL_CERT_MANAGER*, const char*); -WOLFSSL_LOCAL int CM_RestoreCertCache(WOLFSSL_CERT_MANAGER*, const char*); -WOLFSSL_LOCAL int CM_MemSaveCertCache(WOLFSSL_CERT_MANAGER*, void*, int, int*); -WOLFSSL_LOCAL int CM_MemRestoreCertCache(WOLFSSL_CERT_MANAGER*, const void*, int); -WOLFSSL_LOCAL int CM_GetCertCacheMemSize(WOLFSSL_CERT_MANAGER*); -WOLFSSL_LOCAL int CM_VerifyBuffer_ex(WOLFSSL_CERT_MANAGER* cm, const byte* buff, - long sz, int format, int err_val); - - -#ifndef NO_CERTS -#if !defined NOCERTS &&\ - (!defined(NO_WOLFSSL_CLIENT) || !defined(WOLFSSL_NO_CLIENT_AUTH)) -typedef struct ProcPeerCertArgs { - buffer* certs; -#ifdef WOLFSSL_TLS13 - buffer* exts; /* extensions */ -#endif - DecodedCert* dCert; - word32 idx; - word32 begin; - int totalCerts; /* number of certs in certs buffer */ - int count; - int certIdx; - int lastErr; -#ifdef WOLFSSL_TLS13 - byte ctxSz; -#endif -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) - char untrustedDepth; -#endif - word16 fatal:1; - word16 verifyErr:1; - word16 dCertInit:1; -#ifdef WOLFSSL_TRUST_PEER_CERT - word16 haveTrustPeer:1; /* was cert verified by loaded trusted peer cert */ -#endif -} ProcPeerCertArgs; -WOLFSSL_LOCAL int DoVerifyCallback(WOLFSSL_CERT_MANAGER* cm, WOLFSSL* ssl, - int ret, ProcPeerCertArgs* args); -#endif /* !defined(NO_WOLFSSL_CLIENT) || !defined(WOLFSSL_NO_CLIENT_AUTH) */ -#endif /* !defined NO_CERTS */ - -/* wolfSSL Sock Addr */ -struct WOLFSSL_SOCKADDR { - unsigned int sz; /* sockaddr size */ - void* sa; /* pointer to the sockaddr_in or sockaddr_in6 */ -}; - -typedef struct WOLFSSL_DTLS_CTX { - WOLFSSL_SOCKADDR peer; - int rfd; - int wfd; -} WOLFSSL_DTLS_CTX; - - -typedef struct WOLFSSL_DTLS_PEERSEQ { - word32 window[WOLFSSL_DTLS_WINDOW_WORDS]; - /* Sliding window for current epoch */ - word16 nextEpoch; /* Expected epoch in next record */ - word16 nextSeq_hi; /* Expected sequence in next record */ - word32 nextSeq_lo; - - word32 prevWindow[WOLFSSL_DTLS_WINDOW_WORDS]; - /* Sliding window for old epoch */ - word32 prevSeq_lo; - word16 prevSeq_hi; /* Next sequence in allowed old epoch */ - -#ifdef WOLFSSL_MULTICAST - word16 peerId; - word32 highwaterMark; -#endif -} WOLFSSL_DTLS_PEERSEQ; - - -#define MAX_WRITE_IV_SZ 16 /* max size of client/server write_IV */ - -/* keys and secrets - * keep as a constant size (no additional ifdefs) for session export */ -typedef struct Keys { -#if !defined(WOLFSSL_AEAD_ONLY) || defined(WOLFSSL_TLS13) - byte client_write_MAC_secret[WC_MAX_DIGEST_SIZE]; /* max sizes */ - byte server_write_MAC_secret[WC_MAX_DIGEST_SIZE]; -#endif - byte client_write_key[MAX_SYM_KEY_SIZE]; /* max sizes */ - byte server_write_key[MAX_SYM_KEY_SIZE]; - byte client_write_IV[MAX_WRITE_IV_SZ]; /* max sizes */ - byte server_write_IV[MAX_WRITE_IV_SZ]; -#if defined(HAVE_AEAD) || defined(WOLFSSL_SESSION_EXPORT) - byte aead_exp_IV[AEAD_MAX_EXP_SZ]; - byte aead_enc_imp_IV[AEAD_MAX_IMP_SZ]; - byte aead_dec_imp_IV[AEAD_MAX_IMP_SZ]; -#endif - - word32 peer_sequence_number_hi; - word32 peer_sequence_number_lo; - word32 sequence_number_hi; - word32 sequence_number_lo; - -#ifdef WOLFSSL_DTLS - word16 curEpoch; /* Received epoch in current record */ - word16 curSeq_hi; /* Received sequence in current record */ - word32 curSeq_lo; -#ifdef WOLFSSL_MULTICAST - byte curPeerId; /* Received peer group ID in current record */ -#endif - WOLFSSL_DTLS_PEERSEQ peerSeq[WOLFSSL_DTLS_PEERSEQ_SZ]; - - word16 dtls_peer_handshake_number; - word16 dtls_expected_peer_handshake_number; - - word16 dtls_epoch; /* Current epoch */ - word16 dtls_sequence_number_hi; /* Current epoch */ - word32 dtls_sequence_number_lo; - word16 dtls_prev_sequence_number_hi; /* Previous epoch */ - word32 dtls_prev_sequence_number_lo; - word16 dtls_handshake_number; /* Current tx handshake seq */ -#endif - - word32 encryptSz; /* last size of encrypted data */ - word32 padSz; /* how much to advance after decrypt part */ - byte encryptionOn; /* true after change cipher spec */ - byte decryptedCur; /* only decrypt current record once */ -#ifdef WOLFSSL_TLS13 - byte updateResponseReq:1; /* KeyUpdate response from peer required. */ - byte keyUpdateRespond:1; /* KeyUpdate is to be responded to. */ -#endif -#ifdef WOLFSSL_RENESAS_TSIP_TLS - byte tsip_client_write_MAC_secret[TSIP_TLS_HMAC_KEY_INDEX_WORDSIZE]; - byte tsip_server_write_MAC_secret[TSIP_TLS_HMAC_KEY_INDEX_WORDSIZE]; -#endif -} Keys; - - - -/** TLS Extensions - RFC 6066 */ -#ifdef HAVE_TLS_EXTENSIONS - -typedef enum { - TLSX_SERVER_NAME = 0x0000, /* a.k.a. SNI */ - TLSX_MAX_FRAGMENT_LENGTH = 0x0001, - TLSX_TRUSTED_CA_KEYS = 0x0003, - TLSX_TRUNCATED_HMAC = 0x0004, - TLSX_STATUS_REQUEST = 0x0005, /* a.k.a. OCSP stapling */ - TLSX_SUPPORTED_GROUPS = 0x000a, /* a.k.a. Supported Curves */ - TLSX_EC_POINT_FORMATS = 0x000b, -#if !defined(WOLFSSL_NO_SIGALG) - TLSX_SIGNATURE_ALGORITHMS = 0x000d, -#endif - TLSX_APPLICATION_LAYER_PROTOCOL = 0x0010, /* a.k.a. ALPN */ - TLSX_STATUS_REQUEST_V2 = 0x0011, /* a.k.a. OCSP stapling v2 */ -#if defined(HAVE_ENCRYPT_THEN_MAC) && !defined(WOLFSSL_AEAD_ONLY) - TLSX_ENCRYPT_THEN_MAC = 0x0016, /* RFC 7366 */ -#endif - TLSX_QUANTUM_SAFE_HYBRID = 0x0018, /* a.k.a. QSH */ - TLSX_SESSION_TICKET = 0x0023, -#ifdef WOLFSSL_TLS13 - #if defined(HAVE_SESSION_TICKET) || !defined(NO_PSK) - TLSX_PRE_SHARED_KEY = 0x0029, - #endif - #ifdef WOLFSSL_EARLY_DATA - TLSX_EARLY_DATA = 0x002a, - #endif - TLSX_SUPPORTED_VERSIONS = 0x002b, - TLSX_COOKIE = 0x002c, - #if defined(HAVE_SESSION_TICKET) || !defined(NO_PSK) - TLSX_PSK_KEY_EXCHANGE_MODES = 0x002d, - #endif - #ifdef WOLFSSL_POST_HANDSHAKE_AUTH - TLSX_POST_HANDSHAKE_AUTH = 0x0031, - #endif - #if defined(WOLFSSL_TLS13_DRAFT_18) || defined(WOLFSSL_TLS13_DRAFT_22) - TLSX_KEY_SHARE = 0x0028, - #else - TLSX_SIGNATURE_ALGORITHMS_CERT = 0x0032, - TLSX_KEY_SHARE = 0x0033, - #endif -#endif - TLSX_RENEGOTIATION_INFO = 0xff01 -} TLSX_Type; - -typedef struct TLSX { - TLSX_Type type; /* Extension Type */ - void* data; /* Extension Data */ - word32 val; /* Extension Value */ - byte resp; /* IsResponse Flag */ - struct TLSX* next; /* List Behavior */ -} TLSX; - -WOLFSSL_LOCAL TLSX* TLSX_Find(TLSX* list, TLSX_Type type); -WOLFSSL_LOCAL void TLSX_Remove(TLSX** list, TLSX_Type type, void* heap); -WOLFSSL_LOCAL void TLSX_FreeAll(TLSX* list, void* heap); -WOLFSSL_LOCAL int TLSX_SupportExtensions(WOLFSSL* ssl); -WOLFSSL_LOCAL int TLSX_PopulateExtensions(WOLFSSL* ssl, byte isRequest); - -#if defined(WOLFSSL_TLS13) || !defined(NO_WOLFSSL_CLIENT) -WOLFSSL_LOCAL int TLSX_GetRequestSize(WOLFSSL* ssl, byte msgType, - word16* pLength); -WOLFSSL_LOCAL int TLSX_WriteRequest(WOLFSSL* ssl, byte* output, - byte msgType, word16* pOffset); -#endif - -#if defined(WOLFSSL_TLS13) || !defined(NO_WOLFSSL_SERVER) -/* TLS 1.3 Certificate messages have extensions. */ -WOLFSSL_LOCAL int TLSX_GetResponseSize(WOLFSSL* ssl, byte msgType, - word16* pLength); -WOLFSSL_LOCAL int TLSX_WriteResponse(WOLFSSL *ssl, byte* output, byte msgType, - word16* pOffset); -#endif - -WOLFSSL_LOCAL int TLSX_ParseVersion(WOLFSSL* ssl, byte* input, word16 length, - byte msgType, int* found); -WOLFSSL_LOCAL int TLSX_Parse(WOLFSSL* ssl, byte* input, word16 length, - byte msgType, Suites *suites); - -#elif defined(HAVE_SNI) \ - || defined(HAVE_MAX_FRAGMENT) \ - || defined(HAVE_TRUSTED_CA) \ - || defined(HAVE_TRUNCATED_HMAC) \ - || defined(HAVE_CERTIFICATE_STATUS_REQUEST) \ - || defined(HAVE_CERTIFICATE_STATUS_REQUEST_V2) \ - || defined(HAVE_SUPPORTED_CURVES) \ - || defined(HAVE_ALPN) \ - || defined(HAVE_QSH) \ - || defined(HAVE_SESSION_TICKET) \ - || defined(HAVE_SECURE_RENEGOTIATION) \ - || defined(HAVE_SERVER_RENEGOTIATION_INFO) - -#error Using TLS extensions requires HAVE_TLS_EXTENSIONS to be defined. - -#endif /* HAVE_TLS_EXTENSIONS */ - -/** Server Name Indication - RFC 6066 (session 3) */ -#ifdef HAVE_SNI - -typedef struct SNI { - byte type; /* SNI Type */ - union { char* host_name; } data; /* SNI Data */ - struct SNI* next; /* List Behavior */ - byte status; /* Matching result */ -#ifndef NO_WOLFSSL_SERVER - byte options; /* Behavior options */ -#endif -} SNI; - -WOLFSSL_LOCAL int TLSX_UseSNI(TLSX** extensions, byte type, const void* data, - word16 size, void* heap); -WOLFSSL_LOCAL byte TLSX_SNI_Status(TLSX* extensions, byte type); -WOLFSSL_LOCAL word16 TLSX_SNI_GetRequest(TLSX* extensions, byte type, - void** data); - -#ifndef NO_WOLFSSL_SERVER -WOLFSSL_LOCAL void TLSX_SNI_SetOptions(TLSX* extensions, byte type, - byte options); -WOLFSSL_LOCAL int TLSX_SNI_GetFromBuffer(const byte* buffer, word32 bufferSz, - byte type, byte* sni, word32* inOutSz); -#endif - -#endif /* HAVE_SNI */ - -/* Trusted CA Key Indication - RFC 6066 (section 6) */ -#ifdef HAVE_TRUSTED_CA - -typedef struct TCA { - byte type; /* TCA Type */ - byte* id; /* TCA identifier */ - word16 idSz; /* TCA identifier size */ - struct TCA* next; /* List Behavior */ -} TCA; - -WOLFSSL_LOCAL int TLSX_UseTrustedCA(TLSX** extensions, byte type, - const byte* id, word16 idSz, void* heap); - -#endif /* HAVE_TRUSTED_CA */ - -/* Application-Layer Protocol Negotiation - RFC 7301 */ -#ifdef HAVE_ALPN -typedef struct ALPN { - char* protocol_name; /* ALPN protocol name */ - struct ALPN* next; /* List Behavior */ - byte options; /* Behavior options */ - byte negotiated; /* ALPN protocol negotiated or not */ -} ALPN; - -WOLFSSL_LOCAL int TLSX_ALPN_GetRequest(TLSX* extensions, - void** data, word16 *dataSz); - -WOLFSSL_LOCAL int TLSX_UseALPN(TLSX** extensions, const void* data, - word16 size, byte options, void* heap); - -WOLFSSL_LOCAL int TLSX_ALPN_SetOptions(TLSX** extensions, const byte option); - -#endif /* HAVE_ALPN */ - -/** Maximum Fragment Length Negotiation - RFC 6066 (session 4) */ -#ifdef HAVE_MAX_FRAGMENT - -WOLFSSL_LOCAL int TLSX_UseMaxFragment(TLSX** extensions, byte mfl, void* heap); - -#endif /* HAVE_MAX_FRAGMENT */ - -/** Truncated HMAC - RFC 6066 (session 7) */ -#ifdef HAVE_TRUNCATED_HMAC - -WOLFSSL_LOCAL int TLSX_UseTruncatedHMAC(TLSX** extensions, void* heap); - -#endif /* HAVE_TRUNCATED_HMAC */ - -/** Certificate Status Request - RFC 6066 (session 8) */ -#ifdef HAVE_CERTIFICATE_STATUS_REQUEST - -typedef struct { - byte status_type; - byte options; - WOLFSSL* ssl; - union { - OcspRequest ocsp; - } request; -#if defined(WOLFSSL_TLS13) && !defined(NO_WOLFSSL_SERVER) - buffer response; -#endif -} CertificateStatusRequest; - -WOLFSSL_LOCAL int TLSX_UseCertificateStatusRequest(TLSX** extensions, - byte status_type, byte options, WOLFSSL* ssl, void* heap, int devId); -#ifndef NO_CERTS -WOLFSSL_LOCAL int TLSX_CSR_InitRequest(TLSX* extensions, DecodedCert* cert, - void* heap); -#endif -WOLFSSL_LOCAL void* TLSX_CSR_GetRequest(TLSX* extensions); -WOLFSSL_LOCAL int TLSX_CSR_ForceRequest(WOLFSSL* ssl); - -#endif - -/** Certificate Status Request v2 - RFC 6961 */ -#ifdef HAVE_CERTIFICATE_STATUS_REQUEST_V2 - -typedef struct CSRIv2 { - byte status_type; - byte options; - word16 requests; - union { - OcspRequest ocsp[1 + MAX_CHAIN_DEPTH]; - } request; - struct CSRIv2* next; -} CertificateStatusRequestItemV2; - -WOLFSSL_LOCAL int TLSX_UseCertificateStatusRequestV2(TLSX** extensions, - byte status_type, byte options, void* heap, int devId); -#ifndef NO_CERTS -WOLFSSL_LOCAL int TLSX_CSR2_InitRequests(TLSX* extensions, DecodedCert* cert, - byte isPeer, void* heap); -#endif -WOLFSSL_LOCAL void* TLSX_CSR2_GetRequest(TLSX* extensions, byte status_type, - byte index); -WOLFSSL_LOCAL int TLSX_CSR2_ForceRequest(WOLFSSL* ssl); - -#endif - -/** Supported Elliptic Curves - RFC 4492 (session 4) */ -#ifdef HAVE_SUPPORTED_CURVES - -typedef struct SupportedCurve { - word16 name; /* Curve Names */ - struct SupportedCurve* next; /* List Behavior */ -} SupportedCurve; - -typedef struct PointFormat { - byte format; /* PointFormat */ - struct PointFormat* next; /* List Behavior */ -} PointFormat; - -WOLFSSL_LOCAL int TLSX_UseSupportedCurve(TLSX** extensions, word16 name, - void* heap); - -WOLFSSL_LOCAL int TLSX_UsePointFormat(TLSX** extensions, byte point, - void* heap); - -#ifndef NO_WOLFSSL_SERVER -WOLFSSL_LOCAL int TLSX_ValidateSupportedCurves(WOLFSSL* ssl, byte first, - byte second); -WOLFSSL_LOCAL int TLSX_SupportedCurve_CheckPriority(WOLFSSL* ssl); -WOLFSSL_LOCAL int TLSX_SupportedFFDHE_Set(WOLFSSL* ssl); -#endif -WOLFSSL_LOCAL int TLSX_SupportedCurve_Preferred(WOLFSSL* ssl, - int checkSupported); - -#endif /* HAVE_SUPPORTED_CURVES */ - -/** Renegotiation Indication - RFC 5746 */ -#if defined(HAVE_SECURE_RENEGOTIATION) \ - || defined(HAVE_SERVER_RENEGOTIATION_INFO) - -enum key_cache_state { - SCR_CACHE_NULL = 0, /* empty / begin state */ - SCR_CACHE_NEEDED, /* need to cache keys */ - SCR_CACHE_COPY, /* we have a cached copy */ - SCR_CACHE_PARTIAL, /* partial restore to real keys */ - SCR_CACHE_COMPLETE /* complete restore to real keys */ -}; - -/* Additional Connection State according to rfc5746 section 3.1 */ -typedef struct SecureRenegotiation { - byte enabled; /* secure_renegotiation flag in rfc */ - byte verifySet; - byte startScr; /* server requested client to start scr */ - enum key_cache_state cache_status; /* track key cache state */ - byte client_verify_data[TLS_FINISHED_SZ]; /* cached */ - byte server_verify_data[TLS_FINISHED_SZ]; /* cached */ - byte subject_hash_set; /* if peer cert hash is set */ - byte subject_hash[KEYID_SIZE]; /* peer cert hash */ - Keys tmp_keys; /* can't overwrite real keys yet */ -} SecureRenegotiation; - -WOLFSSL_LOCAL int TLSX_UseSecureRenegotiation(TLSX** extensions, void* heap); - -#ifdef HAVE_SERVER_RENEGOTIATION_INFO -WOLFSSL_LOCAL int TLSX_AddEmptyRenegotiationInfo(TLSX** extensions, void* heap); -#endif - -#endif /* HAVE_SECURE_RENEGOTIATION */ - -/** Session Ticket - RFC 5077 (session 3.2) */ -#ifdef HAVE_SESSION_TICKET - -typedef struct SessionTicket { - word32 lifetime; -#ifdef WOLFSSL_TLS13 - word64 seen; - word32 ageAdd; -#endif - byte* data; - word16 size; -} SessionTicket; - -WOLFSSL_LOCAL int TLSX_UseSessionTicket(TLSX** extensions, - SessionTicket* ticket, void* heap); -WOLFSSL_LOCAL SessionTicket* TLSX_SessionTicket_Create(word32 lifetime, - byte* data, word16 size, void* heap); -WOLFSSL_LOCAL void TLSX_SessionTicket_Free(SessionTicket* ticket, void* heap); - -#endif /* HAVE_SESSION_TICKET */ - -/** Quantum-Safe-Hybrid - draft-whyte-qsh-tls12-00 */ -#ifdef HAVE_QSH - -typedef struct QSHScheme { - struct QSHScheme* next; /* List Behavior */ - byte* PK; - word16 name; /* QSHScheme Names */ - word16 PKLen; -} QSHScheme; - -typedef struct QSHkey { - struct QSHKey* next; - word16 name; - buffer pub; - buffer pri; -} QSHKey; - -typedef struct QSHSecret { - QSHScheme* list; - buffer* SerSi; - buffer* CliSi; -} QSHSecret; - -/* used in key exchange during handshake */ -WOLFSSL_LOCAL int TLSX_QSHCipher_Parse(WOLFSSL* ssl, const byte* input, - word16 length, byte isServer); -WOLFSSL_LOCAL word16 TLSX_QSHPK_Write(QSHScheme* list, byte* output); -WOLFSSL_LOCAL word16 TLSX_QSH_GetSize(QSHScheme* list, byte isRequest); - -/* used by api for setting a specific QSH scheme */ -WOLFSSL_LOCAL int TLSX_UseQSHScheme(TLSX** extensions, word16 name, - byte* pKey, word16 pKeySz, void* heap); - -/* used when parsing in QSHCipher structs */ -WOLFSSL_LOCAL int QSH_Decrypt(QSHKey* key, byte* in, word32 szIn, - byte* out, word16* szOut); -#ifndef NO_WOLFSSL_SERVER -WOLFSSL_LOCAL int TLSX_ValidateQSHScheme(TLSX** extensions, word16 name); -#endif - -#endif /* HAVE_QSH */ - -#ifdef WOLFSSL_TLS13 -/* Cookie extension information - cookie data. */ -typedef struct Cookie { - word16 len; - byte data; -} Cookie; - -WOLFSSL_LOCAL int TLSX_Cookie_Use(WOLFSSL* ssl, byte* data, word16 len, - byte* mac, byte macSz, int resp); - - -/* Key Share - TLS v1.3 Specification */ - -/* The KeyShare extension information - entry in a linked list. */ -typedef struct KeyShareEntry { - word16 group; /* NamedGroup */ - byte* ke; /* Key exchange data */ - word32 keLen; /* Key exchange data length */ - void* key; /* Private key */ - word32 keyLen; /* Private key length */ - byte* pubKey; /* Public key */ - word32 pubKeyLen; /* Public key length */ - struct KeyShareEntry* next; /* List pointer */ -} KeyShareEntry; - -WOLFSSL_LOCAL int TLSX_KeyShare_Use(WOLFSSL* ssl, word16 group, word16 len, - byte* data, KeyShareEntry **kse); -WOLFSSL_LOCAL int TLSX_KeyShare_Empty(WOLFSSL* ssl); -WOLFSSL_LOCAL int TLSX_KeyShare_Establish(WOLFSSL* ssl); -WOLFSSL_LOCAL int TLSX_KeyShare_DeriveSecret(WOLFSSL* ssl); - - -#if defined(HAVE_SESSION_TICKET) || !defined(NO_PSK) -#ifndef WOLFSSL_TLS13_DRAFT_18 -/* Ticket nonce - for deriving PSK. - * Length allowed to be: 1..255. Only support 4 bytes. - */ -typedef struct TicketNonce { - byte len; - byte data[MAX_TICKET_NONCE_SZ]; -} TicketNonce; -#endif - -/* The PreSharedKey extension information - entry in a linked list. */ -typedef struct PreSharedKey { - word16 identityLen; /* Length of identity */ - byte* identity; /* PSK identity */ - word32 ticketAge; /* Age of the ticket */ - byte cipherSuite0; /* Cipher Suite */ - byte cipherSuite; /* Cipher Suite */ - word32 binderLen; /* Length of HMAC */ - byte binder[WC_MAX_DIGEST_SIZE]; /* HMAC of handshake */ - byte hmac; /* HMAC algorithm */ - byte resumption:1; /* Resumption PSK */ - byte chosen:1; /* Server's choice */ - struct PreSharedKey* next; /* List pointer */ -} PreSharedKey; - -WOLFSSL_LOCAL int TLSX_PreSharedKey_WriteBinders(PreSharedKey* list, - byte* output, byte msgType, - word16* pSz); -WOLFSSL_LOCAL int TLSX_PreSharedKey_GetSizeBinders(PreSharedKey* list, - byte msgType, word16* pSz); -WOLFSSL_LOCAL int TLSX_PreSharedKey_Use(WOLFSSL* ssl, byte* identity, - word16 len, word32 age, byte hmac, - byte cipherSuite0, byte cipherSuite, - byte resumption, - PreSharedKey **preSharedKey); - -/* The possible Pre-Shared Key key exchange modes. */ -enum PskKeyExchangeMode { - PSK_KE, - PSK_DHE_KE -}; - -/* User can define this. */ -#ifndef WOLFSSL_DEF_PSK_CIPHER -#define WOLFSSL_DEF_PSK_CIPHER TLS_AES_128_GCM_SHA256 -#endif - -WOLFSSL_LOCAL int TLSX_PskKeModes_Use(WOLFSSL* ssl, byte modes); - -#ifdef WOLFSSL_EARLY_DATA -WOLFSSL_LOCAL int TLSX_EarlyData_Use(WOLFSSL* ssl, word32 max); -#endif -#endif /* HAVE_SESSION_TICKET || !NO_PSK */ - - -/* The types of keys to derive for. */ -enum DeriveKeyType { - no_key, - early_data_key, - handshake_key, - traffic_key, - update_traffic_key -}; - -/* The key update request values for KeyUpdate message. */ -enum KeyUpdateRequest { - update_not_requested, - update_requested -}; -#endif /* WOLFSSL_TLS13 */ - - -#ifdef OPENSSL_EXTRA -enum SetCBIO { - WOLFSSL_CBIO_NONE = 0, - WOLFSSL_CBIO_RECV = 0x1, - WOLFSSL_CBIO_SEND = 0x2, -}; -#endif - -/* wolfSSL context type */ -struct WOLFSSL_CTX { - WOLFSSL_METHOD* method; -#ifdef SINGLE_THREADED - WC_RNG* rng; /* to be shared with WOLFSSL w/o locking */ -#endif - wolfSSL_Mutex countMutex; /* reference count mutex */ - int refCount; /* reference count */ - int err; /* error code in case of mutex not created */ -#ifndef NO_DH - buffer serverDH_P; - buffer serverDH_G; -#endif -#ifndef NO_CERTS - DerBuffer* certificate; - DerBuffer* certChain; - /* chain after self, in DER, with leading size for each cert */ - #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_EXTRA) - WOLF_STACK_OF(WOLFSSL_X509_NAME)* ca_names; - #endif - #if defined(OPENSSL_ALL) || defined(OPENSSL_EXTRA) || \ - defined(WOLFSSL_NGINX) || defined (WOLFSSL_HAPROXY) - WOLF_STACK_OF(WOLFSSL_X509)* x509Chain; - client_cert_cb CBClientCert; /* client certificate callback */ - #endif -#ifdef WOLFSSL_TLS13 - int certChainCnt; -#endif - DerBuffer* privateKey; - byte privateKeyType:7; - byte privateKeyId:1; - int privateKeySz; - int privateKeyDevId; - WOLFSSL_CERT_MANAGER* cm; /* our cert manager, ctx owns SSL will use */ -#endif -#ifdef KEEP_OUR_CERT - WOLFSSL_X509* ourCert; /* keep alive a X509 struct of cert */ - int ownOurCert; /* Dispose of certificate if we own */ -#endif - Suites* suites; /* make dynamic, user may not need/set */ - void* heap; /* for user memory overrides */ - byte verifyDepth; - byte verifyPeer:1; - byte verifyNone:1; - byte failNoCert:1; - byte failNoCertxPSK:1; /* fail if no cert with the exception of PSK*/ - byte sessionCacheOff:1; - byte sessionCacheFlushOff:1; -#ifdef HAVE_EXT_CACHE - byte internalCacheOff:1; -#endif - byte sendVerify:2; /* for client side (can not be single bit) */ - byte haveRSA:1; /* RSA available */ - byte haveECC:1; /* ECC available */ - byte haveDH:1; /* server DH parms set by user */ - byte haveNTRU:1; /* server private NTRU key loaded */ - byte haveECDSAsig:1; /* server cert signed w/ ECDSA */ - byte haveStaticECC:1; /* static server ECC private key */ - byte partialWrite:1; /* only one msg per write call */ - byte quietShutdown:1; /* don't send close notify */ - byte groupMessages:1; /* group handshake messages before sending */ - byte minDowngrade; /* minimum downgrade version */ - byte haveEMS:1; /* have extended master secret extension */ - byte useClientOrder:1; /* Use client's cipher preference order */ -#ifdef WOLFSSL_TLS13 - byte noTicketTls13:1; /* Server won't create new Ticket */ - byte noPskDheKe:1; /* Don't use (EC)DHE with PSK */ -#endif - byte mutualAuth:1; /* Mutual authentication required */ -#if defined(WOLFSSL_TLS13) && defined(WOLFSSL_POST_HANDSHAKE_AUTH) - byte postHandshakeAuth:1; /* Post-handshake auth supported. */ -#endif -#ifndef NO_DH - #if !defined(WOLFSSL_OLD_PRIME_CHECK) && !defined(HAVE_FIPS) && \ - !defined(HAVE_SELFTEST) - byte dhKeyTested:1; /* Set when key has been tested. */ - #endif -#endif -#ifdef HAVE_SECURE_RENEGOTIATION - byte useSecureReneg:1; /* when set will set WOLFSSL objects generated to enable */ -#endif -#ifdef HAVE_ENCRYPT_THEN_MAC - byte disallowEncThenMac:1; /* Don't do Encrypt-Then-MAC */ -#endif -#ifdef WOLFSSL_STATIC_MEMORY - byte onHeap:1; /* whether the ctx/method is put on heap hint */ -#endif -#ifdef WOLFSSL_MULTICAST - byte haveMcast; /* multicast requested */ - byte mcastID; /* multicast group ID */ -#endif -#if defined(WOLFSSL_SCTP) && defined(WOLFSSL_DTLS) - byte dtlsSctp; /* DTLS-over-SCTP mode */ -#endif -#if (defined(WOLFSSL_SCTP) || defined(WOLFSSL_DTLS_MTU)) && \ - defined(WOLFSSL_DTLS) - word16 dtlsMtuSz; /* DTLS MTU size */ -#endif -#ifndef NO_DH - word16 minDhKeySz; /* minimum DH key size */ - word16 maxDhKeySz; /* maximum DH key size */ -#endif -#ifndef NO_RSA - short minRsaKeySz; /* minimum RSA key size */ -#endif -#if defined(HAVE_ECC) || defined(HAVE_ED25519) || defined(HAVE_ED448) - short minEccKeySz; /* minimum ECC key size */ -#endif -#if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) - unsigned long mask; /* store SSL_OP_ flags */ -#endif -#ifdef OPENSSL_EXTRA - byte sessionCtx[ID_LEN]; /* app session context ID */ - word32 disabledCurves; /* curves disabled by user */ - const unsigned char *alpn_cli_protos;/* ALPN client protocol list */ - unsigned int alpn_cli_protos_len; - byte sessionCtxSz; - byte cbioFlag; /* WOLFSSL_CBIO_RECV/SEND: CBIORecv/Send is set */ - CallbackInfoState* CBIS; /* used to get info about SSL state */ -#endif - CallbackIORecv CBIORecv; - CallbackIOSend CBIOSend; -#ifdef WOLFSSL_DTLS - CallbackGenCookie CBIOCookie; /* gen cookie callback */ -#ifdef WOLFSSL_SESSION_EXPORT - wc_dtls_export dtls_export; /* export function for DTLS session */ - CallbackGetPeer CBGetPeer; - CallbackSetPeer CBSetPeer; -#endif -#endif /* WOLFSSL_DTLS */ - VerifyCallback verifyCallback; /* cert verification callback */ -#ifdef OPENSSL_ALL - CertVerifyCallback verifyCertCb; - void* verifyCertCbArg; -#endif /* OPENSSL_ALL */ - word32 timeout; /* session timeout */ -#if defined(HAVE_ECC) || defined(HAVE_CURVE25519) || defined(HAVE_ED448) - word32 ecdhCurveOID; /* curve Ecc_Sum */ -#endif -#ifdef HAVE_ECC - word16 eccTempKeySz; /* in octets 20 - 66 */ -#endif -#if defined(HAVE_ECC) || defined(HAVE_ED25519) || defined(HAVE_ED448) - word32 pkCurveOID; /* curve Ecc_Sum */ -#endif -#if defined(HAVE_SESSION_TICKET) || !defined(NO_PSK) - byte havePSK; /* psk key set by user */ - wc_psk_client_callback client_psk_cb; /* client callback */ - wc_psk_server_callback server_psk_cb; /* server callback */ -#ifdef WOLFSSL_TLS13 - wc_psk_client_tls13_callback client_psk_tls13_cb; /* client callback */ - wc_psk_server_tls13_callback server_psk_tls13_cb; /* server callback */ -#endif - char server_hint[MAX_PSK_ID_LEN + NULL_TERM_LEN]; -#endif /* HAVE_SESSION_TICKET || !NO_PSK */ -#ifdef WOLFSSL_TLS13 - word16 group[WOLFSSL_MAX_GROUP_COUNT]; - byte numGroups; -#endif -#ifdef WOLFSSL_EARLY_DATA - word32 maxEarlyDataSz; -#endif -#ifdef HAVE_ANON - byte haveAnon; /* User wants to allow Anon suites */ -#endif /* HAVE_ANON */ -#ifdef WOLFSSL_ENCRYPTED_KEYS - pem_password_cb* passwd_cb; - void* passwd_userdata; -#endif -#if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) - WOLFSSL_X509_STORE x509_store; /* points to ctx->cm */ - WOLFSSL_X509_STORE* x509_store_pt; /* take ownership of external store */ - byte readAhead; - void* userPRFArg; /* passed to prf callback */ -#endif -#ifdef HAVE_EX_DATA - WOLFSSL_CRYPTO_EX_DATA ex_data; -#endif -#if defined(HAVE_ALPN) && (defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY)) - CallbackALPNSelect alpnSelect; - void* alpnSelectArg; -#endif -#if defined(OPENSSL_ALL) || (defined(OPENSSL_EXTRA) && (defined(HAVE_STUNNEL) || \ - defined(WOLFSSL_NGINX) || defined(HAVE_LIGHTY) || \ - defined(WOLFSSL_HAPROXY) || defined(WOLFSSL_OPENSSH) )) - CallbackSniRecv sniRecvCb; - void* sniRecvCbArg; -#endif -#if defined(WOLFSSL_MULTICAST) && defined(WOLFSSL_DTLS) - CallbackMcastHighwater mcastHwCb; /* Sequence number highwater callback */ - word32 mcastFirstSeq; /* first trigger level */ - word32 mcastSecondSeq; /* second trigger level */ - word32 mcastMaxSeq; /* max level */ -#endif -#ifdef HAVE_OCSP - WOLFSSL_OCSP ocsp; -#endif - int devId; /* async device id to use */ -#ifdef HAVE_TLS_EXTENSIONS - TLSX* extensions; /* RFC 6066 TLS Extensions data */ - #ifndef NO_WOLFSSL_SERVER - #if defined(HAVE_CERTIFICATE_STATUS_REQUEST) \ - || defined(HAVE_CERTIFICATE_STATUS_REQUEST_V2) - OcspRequest* certOcspRequest; - #endif - #if defined(HAVE_CERTIFICATE_STATUS_REQUEST_V2) - OcspRequest* chainOcspRequest[MAX_CHAIN_DEPTH]; - #endif - #endif - #if defined(HAVE_SESSION_TICKET) && !defined(NO_WOLFSSL_SERVER) - SessionTicketEncCb ticketEncCb; /* enc/dec session ticket Cb */ - void* ticketEncCtx; /* session encrypt context */ - int ticketHint; /* ticket hint in seconds */ - #endif - #ifdef HAVE_SUPPORTED_CURVES - byte userCurves; /* indicates user called wolfSSL_CTX_UseSupportedCurve */ - #endif -#endif -#ifdef ATOMIC_USER - CallbackMacEncrypt MacEncryptCb; /* Atomic User Mac/Encrypt Cb */ - CallbackDecryptVerify DecryptVerifyCb; /* Atomic User Decrypt/Verify Cb */ - #ifdef HAVE_ENCRYPT_THEN_MAC - CallbackEncryptMac EncryptMacCb; /* Atomic User Mac/Enc Cb */ - CallbackVerifyDecrypt VerifyDecryptCb; /* Atomic User Dec/Verify Cb */ - #endif -#endif -#ifdef HAVE_PK_CALLBACKS - #ifdef HAVE_ECC - CallbackEccKeyGen EccKeyGenCb; /* User EccKeyGen Callback Handler */ - CallbackEccSign EccSignCb; /* User EccSign Callback handler */ - CallbackEccVerify EccVerifyCb; /* User EccVerify Callback handler */ - CallbackEccSharedSecret EccSharedSecretCb; /* User EccVerify Callback handler */ - #ifdef HAVE_ED25519 - /* User Ed25519Sign Callback handler */ - CallbackEd25519Sign Ed25519SignCb; - /* User Ed25519Verify Callback handler */ - CallbackEd25519Verify Ed25519VerifyCb; - #endif - #ifdef HAVE_CURVE25519 - /* User X25519 KeyGen Callback Handler */ - CallbackX25519KeyGen X25519KeyGenCb; - /* User X25519 SharedSecret Callback handler */ - CallbackX25519SharedSecret X25519SharedSecretCb; - #endif - #ifdef HAVE_ED448 - /* User Ed448Sign Callback handler */ - CallbackEd448Sign Ed448SignCb; - /* User Ed448Verify Callback handler */ - CallbackEd448Verify Ed448VerifyCb; - #endif - #ifdef HAVE_CURVE448 - /* User X448 KeyGen Callback Handler */ - CallbackX448KeyGen X448KeyGenCb; - /* User X448 SharedSecret Callback handler */ - CallbackX448SharedSecret X448SharedSecretCb; - #endif - #endif /* HAVE_ECC */ - #ifndef NO_DH - CallbackDhAgree DhAgreeCb; /* User DH Agree Callback handler */ - #endif - #ifndef NO_RSA - CallbackRsaSign RsaSignCb; /* User RsaSign Callback handler (priv key) */ - CallbackRsaVerify RsaVerifyCb; /* User RsaVerify Callback handler (pub key) */ - CallbackRsaVerify RsaSignCheckCb; /* User VerifyRsaSign Callback handler (priv key) */ - #ifdef WC_RSA_PSS - CallbackRsaPssSign RsaPssSignCb; /* User RsaSign (priv key) */ - CallbackRsaPssVerify RsaPssVerifyCb; /* User RsaVerify (pub key) */ - CallbackRsaPssVerify RsaPssSignCheckCb; /* User VerifyRsaSign (priv key) */ - #endif - CallbackRsaEnc RsaEncCb; /* User Rsa Public Encrypt handler */ - CallbackRsaDec RsaDecCb; /* User Rsa Private Decrypt handler */ - #endif /* NO_RSA */ -#endif /* HAVE_PK_CALLBACKS */ -#ifdef HAVE_WOLF_EVENT - WOLF_EVENT_QUEUE event_queue; -#endif /* HAVE_WOLF_EVENT */ -#ifdef HAVE_EXT_CACHE - WOLFSSL_SESSION*(*get_sess_cb)(WOLFSSL*, unsigned char*, int, int*); - int (*new_sess_cb)(WOLFSSL*, WOLFSSL_SESSION*); - void (*rem_sess_cb)(WOLFSSL_CTX*, WOLFSSL_SESSION*); -#endif -#if defined(OPENSSL_EXTRA) && defined(WOLFCRYPT_HAVE_SRP) && !defined(NO_SHA256) - Srp* srp; /* TLS Secure Remote Password Protocol*/ - byte* srp_password; -#endif -}; - -WOLFSSL_LOCAL -int InitSSL_Ctx(WOLFSSL_CTX*, WOLFSSL_METHOD*, void* heap); -WOLFSSL_LOCAL -void FreeSSL_Ctx(WOLFSSL_CTX*); -WOLFSSL_LOCAL -void SSL_CtxResourceFree(WOLFSSL_CTX*); - -WOLFSSL_LOCAL -int DeriveTlsKeys(WOLFSSL* ssl); -WOLFSSL_LOCAL -int ProcessOldClientHello(WOLFSSL* ssl, const byte* input, word32* inOutIdx, - word32 inSz, word16 sz); - -#ifndef NO_CERTS - WOLFSSL_LOCAL - int AddCA(WOLFSSL_CERT_MANAGER* cm, DerBuffer** pDer, int type, int verify); - WOLFSSL_LOCAL - int AlreadySigner(WOLFSSL_CERT_MANAGER* cm, byte* hash); -#ifdef WOLFSSL_TRUST_PEER_CERT - WOLFSSL_LOCAL - int AddTrustedPeer(WOLFSSL_CERT_MANAGER* cm, DerBuffer** pDer, int verify); - WOLFSSL_LOCAL - int AlreadyTrustedPeer(WOLFSSL_CERT_MANAGER* cm, byte* hash); -#endif -#endif - -/* All cipher suite related info - * Keep as a constant size (no ifdefs) for session export */ -typedef struct CipherSpecs { - word16 key_size; - word16 iv_size; - word16 block_size; - word16 aead_mac_size; - byte bulk_cipher_algorithm; - byte cipher_type; /* block, stream, or aead */ - byte mac_algorithm; - byte kea; /* key exchange algo */ - byte sig_algo; - byte hash_size; - byte pad_size; - byte static_ecdh; -} CipherSpecs; - - -void InitCipherSpecs(CipherSpecs* cs); - - -/* Supported Key Exchange Protocols */ -enum KeyExchangeAlgorithm { - no_kea, - rsa_kea, - diffie_hellman_kea, - fortezza_kea, - psk_kea, - dhe_psk_kea, - ecdhe_psk_kea, - ntru_kea, - ecc_diffie_hellman_kea, - ecc_static_diffie_hellman_kea /* for verify suite only */ -}; - - -/* Supported Authentication Schemes */ -enum SignatureAlgorithm { - anonymous_sa_algo = 0, - rsa_sa_algo = 1, - dsa_sa_algo = 2, - ecc_dsa_sa_algo = 3, - rsa_pss_sa_algo = 8, - ed25519_sa_algo = 9, - rsa_pss_pss_algo = 10, - ed448_sa_algo = 11 -}; - -#define PSS_RSAE_TO_PSS_PSS(macAlgo) \ - (macAlgo + (pss_sha256 - sha256_mac)) - -#define PSS_PSS_HASH_TO_MAC(macAlgo) \ - (macAlgo - (pss_sha256 - sha256_mac)) - -enum SigAlgRsaPss { - pss_sha256 = 0x09, - pss_sha384 = 0x0a, - pss_sha512 = 0x0b, -}; - - -/* Supprted ECC Curve Types */ -enum EccCurves { - named_curve = 3 -}; - - -/* Valid client certificate request types from page 27 */ -enum ClientCertificateType { - rsa_sign = 1, - dss_sign = 2, - rsa_fixed_dh = 3, - dss_fixed_dh = 4, - rsa_ephemeral_dh = 5, - dss_ephemeral_dh = 6, - fortezza_kea_cert = 20, - ecdsa_sign = 64, - rsa_fixed_ecdh = 65, - ecdsa_fixed_ecdh = 66 -}; - - -#ifndef WOLFSSL_AEAD_ONLY -enum CipherType { stream, block, aead }; -#else -enum CipherType { aead }; -#endif - - -#if defined(BUILD_AES) || defined(BUILD_AESGCM) || (defined(HAVE_CHACHA) && \ - defined(HAVE_POLY1305)) || defined(WOLFSSL_TLS13) - #define CIPHER_NONCE -#endif - - -/* cipher for now */ -typedef struct Ciphers { -#ifdef BUILD_ARC4 - Arc4* arc4; -#endif -#ifdef BUILD_DES3 - Des3* des3; -#endif -#if defined(BUILD_AES) || defined(BUILD_AESGCM) - Aes* aes; - #if (defined(BUILD_AESGCM) || defined(HAVE_AESCCM)) && \ - !defined(WOLFSSL_NO_TLS12) - byte* additional; - #endif -#endif -#ifdef CIPHER_NONCE - byte* nonce; -#endif -#ifdef HAVE_CAMELLIA - Camellia* cam; -#endif -#ifdef HAVE_CHACHA - ChaCha* chacha; -#endif -#ifdef HAVE_HC128 - HC128* hc128; -#endif -#ifdef BUILD_RABBIT - Rabbit* rabbit; -#endif -#ifdef HAVE_IDEA - Idea* idea; -#endif -#if defined(WOLFSSL_TLS13) && defined(HAVE_NULL_CIPHER) - Hmac* hmac; -#endif - byte state; - byte setup; /* have we set it up flag for detection */ -} Ciphers; - - -#ifdef HAVE_ONE_TIME_AUTH -/* Ciphers for one time authentication such as poly1305 */ -typedef struct OneTimeAuth { -#ifdef HAVE_POLY1305 - Poly1305* poly1305; -#endif - byte setup; /* flag for if a cipher has been set */ - -} OneTimeAuth; -#endif - - -WOLFSSL_LOCAL void InitCiphers(WOLFSSL* ssl); -WOLFSSL_LOCAL void FreeCiphers(WOLFSSL* ssl); - - -/* hashes type */ -typedef struct Hashes { - #if !defined(NO_MD5) && !defined(NO_OLD_TLS) - byte md5[WC_MD5_DIGEST_SIZE]; - #endif - #if !defined(NO_SHA) - byte sha[WC_SHA_DIGEST_SIZE]; - #endif - #ifndef NO_SHA256 - byte sha256[WC_SHA256_DIGEST_SIZE]; - #endif - #ifdef WOLFSSL_SHA384 - byte sha384[WC_SHA384_DIGEST_SIZE]; - #endif - #ifdef WOLFSSL_SHA512 - byte sha512[WC_SHA512_DIGEST_SIZE]; - #endif -} Hashes; - -WOLFSSL_LOCAL int BuildCertHashes(WOLFSSL* ssl, Hashes* hashes); - -#ifdef WOLFSSL_TLS13 -typedef union Digest { -#ifndef NO_WOLFSSL_SHA256 - wc_Sha256 sha256; -#endif -#ifdef WOLFSSL_SHA384 - wc_Sha384 sha384; -#endif -#ifdef WOLFSSL_SHA512 - wc_Sha512 sha512; -#endif -} Digest; -#endif - -/* Static x509 buffer */ -typedef struct x509_buffer { - int length; /* actual size */ - byte buffer[MAX_X509_SIZE]; /* max static cert size */ -} x509_buffer; - - -/* wolfSSL X509_CHAIN, for no dynamic memory SESSION_CACHE */ -struct WOLFSSL_X509_CHAIN { - int count; /* total number in chain */ - x509_buffer certs[MAX_CHAIN_DEPTH]; /* only allow max depth 4 for now */ -}; - - -/* wolfSSL session type */ -struct WOLFSSL_SESSION { - word32 bornOn; /* create time in seconds */ - word32 timeout; /* timeout in seconds */ - byte sessionID[ID_LEN]; /* id for protocol */ - byte sessionIDSz; - byte masterSecret[SECRET_LEN]; /* stored secret */ - word16 haveEMS; /* ext master secret flag */ -#ifdef SESSION_CERTS -#ifdef OPENSSL_EXTRA - WOLFSSL_X509* peer; /* peer cert */ -#endif - WOLFSSL_X509_CHAIN chain; /* peer cert chain, static */ - #ifdef WOLFSSL_ALT_CERT_CHAINS - WOLFSSL_X509_CHAIN altChain; /* peer alt cert chain, static */ - #endif -#endif -#if defined(SESSION_CERTS) || (defined(WOLFSSL_TLS13) && \ - defined(HAVE_SESSION_TICKET)) - ProtocolVersion version; /* which version was used */ -#endif -#if defined(SESSION_CERTS) || !defined(NO_RESUME_SUITE_CHECK) || \ - (defined(WOLFSSL_TLS13) && defined(HAVE_SESSION_TICKET)) - byte cipherSuite0; /* first byte, normally 0 */ - byte cipherSuite; /* 2nd byte, actual suite */ -#endif -#ifndef NO_CLIENT_CACHE - word16 idLen; /* serverID length */ - byte serverID[SERVER_ID_LEN]; /* for easier client lookup */ -#endif -#ifdef OPENSSL_EXTRA - byte sessionCtxSz; /* sessionCtx length */ - byte sessionCtx[ID_LEN]; /* app specific context id */ -#endif -#ifdef WOLFSSL_TLS13 - word16 namedGroup; -#endif -#if defined(HAVE_SESSION_TICKET) || !defined(NO_PSK) - #ifdef WOLFSSL_TLS13 - word32 ticketSeen; /* Time ticket seen (ms) */ - word32 ticketAdd; /* Added by client */ - #ifndef WOLFSSL_TLS13_DRAFT_18 - TicketNonce ticketNonce; /* Nonce used to derive PSK */ - #endif - #endif - #ifdef WOLFSSL_EARLY_DATA - word32 maxEarlyDataSz; - #endif -#endif -#ifdef HAVE_SESSION_TICKET - byte* ticket; - word16 ticketLen; - byte staticTicket[SESSION_TICKET_LEN]; - byte isDynamic; -#endif -#ifdef HAVE_EXT_CACHE - byte isAlloced; -#endif -#ifdef HAVE_EX_DATA - WOLFSSL_CRYPTO_EX_DATA ex_data; -#endif -}; - - -WOLFSSL_LOCAL -WOLFSSL_SESSION* GetSession(WOLFSSL*, byte*, byte); -WOLFSSL_LOCAL -int SetSession(WOLFSSL*, WOLFSSL_SESSION*); - -typedef int (*hmacfp) (WOLFSSL*, byte*, const byte*, word32, int, int, int); - -#ifndef NO_CLIENT_CACHE - WOLFSSL_SESSION* GetSessionClient(WOLFSSL*, const byte*, int); -#endif - -/* client connect state for nonblocking restart */ -enum ConnectState { - CONNECT_BEGIN = 0, - CLIENT_HELLO_SENT, - HELLO_AGAIN, /* HELLO_AGAIN s for DTLS case */ - HELLO_AGAIN_REPLY, - FIRST_REPLY_DONE, - FIRST_REPLY_FIRST, - FIRST_REPLY_SECOND, - FIRST_REPLY_THIRD, - FIRST_REPLY_FOURTH, - FINISHED_DONE, - SECOND_REPLY_DONE -}; - - -/* server accept state for nonblocking restart */ -enum AcceptState { - ACCEPT_BEGIN = 0, - ACCEPT_BEGIN_RENEG, - ACCEPT_CLIENT_HELLO_DONE, - ACCEPT_HELLO_RETRY_REQUEST_DONE, - ACCEPT_FIRST_REPLY_DONE, - SERVER_HELLO_SENT, - SERVER_EXTENSIONS_SENT, - CERT_SENT, - CERT_VERIFY_SENT, - CERT_STATUS_SENT, - KEY_EXCHANGE_SENT, - CERT_REQ_SENT, - SERVER_HELLO_DONE, - ACCEPT_SECOND_REPLY_DONE, - TICKET_SENT, - CHANGE_CIPHER_SENT, - ACCEPT_FINISHED_DONE, - ACCEPT_THIRD_REPLY_DONE -}; - -/* TLS 1.3 server accept state for nonblocking restart */ -enum AcceptStateTls13 { - TLS13_ACCEPT_BEGIN = 0, - TLS13_ACCEPT_BEGIN_RENEG, - TLS13_ACCEPT_CLIENT_HELLO_DONE, - TLS13_ACCEPT_HELLO_RETRY_REQUEST_DONE, - TLS13_ACCEPT_FIRST_REPLY_DONE, - TLS13_ACCEPT_SECOND_REPLY_DONE, - TLS13_SERVER_HELLO_SENT, - TLS13_ACCEPT_THIRD_REPLY_DONE, - TLS13_SERVER_EXTENSIONS_SENT, - TLS13_CERT_REQ_SENT, - TLS13_CERT_SENT, - TLS13_CERT_VERIFY_SENT, - TLS13_ACCEPT_FINISHED_SENT, - TLS13_PRE_TICKET_SENT, - TLS13_ACCEPT_FINISHED_DONE, - TLS13_TICKET_SENT -}; - -/* buffers for struct WOLFSSL */ -typedef struct Buffers { - bufferStatic inputBuffer; - bufferStatic outputBuffer; - buffer domainName; /* for client check */ - buffer clearOutputBuffer; - buffer sig; /* signature data */ - buffer digest; /* digest data */ - int prevSent; /* previous plain text bytes sent - when got WANT_WRITE */ - int plainSz; /* plain text bytes in buffer to send - when got WANT_WRITE */ - byte weOwnCert; /* SSL own cert flag */ - byte weOwnCertChain; /* SSL own cert chain flag */ - byte weOwnKey; /* SSL own key flag */ - byte weOwnDH; /* SSL own dh (p,g) flag */ -#ifndef NO_DH - buffer serverDH_P; /* WOLFSSL_CTX owns, unless we own */ - buffer serverDH_G; /* WOLFSSL_CTX owns, unless we own */ - buffer serverDH_Pub; - buffer serverDH_Priv; - DhKey* serverDH_Key; -#endif -#ifndef NO_CERTS - DerBuffer* certificate; /* WOLFSSL_CTX owns, unless we own */ - DerBuffer* key; /* WOLFSSL_CTX owns, unless we own */ - byte keyType:7; /* Type of key: RSA, ECC, Ed25519 */ - byte keyId:1; /* Key data is an id not data */ - int keySz; /* Size of RSA key */ - int keyDevId; /* Device Id for key */ - DerBuffer* certChain; /* WOLFSSL_CTX owns, unless we own */ - /* chain after self, in DER, with leading size for each cert */ -#ifdef WOLFSSL_TLS13 - int certChainCnt; - DerBuffer* certExts; -#endif -#endif -#ifdef WOLFSSL_SEND_HRR_COOKIE - buffer tls13CookieSecret; /* HRR cookie secret */ -#endif -#ifdef WOLFSSL_DTLS - WOLFSSL_DTLS_CTX dtlsCtx; /* DTLS connection context */ - #ifndef NO_WOLFSSL_SERVER - buffer dtlsCookieSecret; /* DTLS cookie secret */ - #endif /* NO_WOLFSSL_SERVER */ -#endif -#ifdef HAVE_PK_CALLBACKS - #ifdef HAVE_ECC - buffer peerEccDsaKey; /* we own for Ecc Verify Callbacks */ - #endif /* HAVE_ECC */ - #ifdef HAVE_ED25519 - buffer peerEd25519Key; /* for Ed25519 Verify Callbacks */ - #endif /* HAVE_ED25519 */ - #ifdef HAVE_ED448 - buffer peerEd448Key; /* for Ed448 Verify Callbacks */ - #endif /* HAVE_ED448 */ - #ifndef NO_RSA - buffer peerRsaKey; /* we own for Rsa Verify Callbacks */ - #endif /* NO_RSA */ -#endif /* HAVE_PK_CALLBACKS */ -} Buffers; - -/* sub-states for send/do key share (key exchange) */ -enum asyncState { - TLS_ASYNC_BEGIN = 0, - TLS_ASYNC_BUILD, - TLS_ASYNC_DO, - TLS_ASYNC_VERIFY, - TLS_ASYNC_FINALIZE, - TLS_ASYNC_END -}; - -/* sub-states for build message */ -enum buildMsgState { - BUILD_MSG_BEGIN = 0, - BUILD_MSG_SIZE, - BUILD_MSG_HASH, - BUILD_MSG_VERIFY_MAC, - BUILD_MSG_ENCRYPT, - BUILD_MSG_ENCRYPTED_VERIFY_MAC, -}; - -/* sub-states for cipher operations */ -enum cipherState { - CIPHER_STATE_BEGIN = 0, - CIPHER_STATE_DO, - CIPHER_STATE_END, -}; - -typedef struct Options { -#ifndef NO_PSK - wc_psk_client_callback client_psk_cb; - wc_psk_server_callback server_psk_cb; -#ifdef WOLFSSL_TLS13 - wc_psk_client_tls13_callback client_psk_tls13_cb; /* client callback */ - wc_psk_server_tls13_callback server_psk_tls13_cb; /* server callback */ -#endif -#endif /* NO_PSK */ -#if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) - unsigned long mask; /* store SSL_OP_ flags */ -#endif - - /* on/off or small bit flags, optimize layout */ -#if defined(HAVE_SESSION_TICKET) || !defined(NO_PSK) - word16 havePSK:1; /* psk key set by user */ -#endif /* HAVE_SESSION_TICKET || !NO_PSK */ - word16 sendVerify:2; /* false = 0, true = 1, sendBlank = 2 */ - word16 sessionCacheOff:1; - word16 sessionCacheFlushOff:1; -#ifdef HAVE_EXT_CACHE - word16 internalCacheOff:1; -#endif - word16 side:2; /* client, server or neither end */ - word16 verifyPeer:1; - word16 verifyNone:1; - word16 failNoCert:1; - word16 failNoCertxPSK:1; /* fail for no cert except with PSK */ - word16 downgrade:1; /* allow downgrade of versions */ - word16 resuming:1; - word16 haveSessionId:1; /* server may not send */ - word16 tls:1; /* using TLS ? */ - word16 tls1_1:1; /* using TLSv1.1+ ? */ - word16 tls1_3:1; /* using TLSv1.3+ ? */ - word16 dtls:1; /* using datagrams ? */ - word16 connReset:1; /* has the peer reset */ - word16 isClosed:1; /* if we consider conn closed */ - word16 closeNotify:1; /* we've received a close notify */ - word16 sentNotify:1; /* we've sent a close notify */ - word16 usingCompression:1; /* are we using compression */ - word16 haveRSA:1; /* RSA available */ - word16 haveECC:1; /* ECC available */ - word16 haveDH:1; /* server DH parms set by user */ - word16 haveNTRU:1; /* server NTRU private key loaded */ - word16 haveQSH:1; /* have QSH ability */ - word16 haveECDSAsig:1; /* server ECDSA signed cert */ - word16 haveStaticECC:1; /* static server ECC private key */ - word16 havePeerCert:1; /* do we have peer's cert */ - word16 havePeerVerify:1; /* and peer's cert verify */ - word16 usingPSK_cipher:1; /* are using psk as cipher */ - word16 usingAnon_cipher:1; /* are we using an anon cipher */ - word16 noPskDheKe:1; /* Don't use (EC)DHE with PSK */ - word16 sendAlertState:1; /* nonblocking resume */ - word16 partialWrite:1; /* only one msg per write call */ - word16 quietShutdown:1; /* don't send close notify */ - word16 certOnly:1; /* stop once we get cert */ - word16 groupMessages:1; /* group handshake messages */ - word16 saveArrays:1; /* save array Memory for user get keys - or psk */ - word16 weOwnRng:1; /* will be true unless CTX owns */ - word16 haveEMS:1; /* using extended master secret */ -#ifdef HAVE_POLY1305 - word16 oldPoly:1; /* set when to use old rfc way of poly*/ -#endif -#ifdef HAVE_ANON - word16 haveAnon:1; /* User wants to allow Anon suites */ -#endif -#ifdef HAVE_SESSION_TICKET - word16 createTicket:1; /* Server to create new Ticket */ - word16 useTicket:1; /* Use Ticket not session cache */ - word16 rejectTicket:1; /* Callback rejected ticket */ -#ifdef WOLFSSL_TLS13 - word16 noTicketTls13:1; /* Server won't create new Ticket */ -#endif -#endif -#ifdef WOLFSSL_DTLS - word16 dtlsUseNonblock:1; /* are we using nonblocking socket */ - word16 dtlsHsRetain:1; /* DTLS retaining HS data */ - word16 haveMcast:1; /* using multicast ? */ -#ifdef WOLFSSL_SCTP - word16 dtlsSctp:1; /* DTLS-over-SCTP mode */ -#endif -#endif -#if defined(HAVE_TLS_EXTENSIONS) && defined(HAVE_SUPPORTED_CURVES) - word16 userCurves:1; /* indicates user called wolfSSL_UseSupportedCurve */ -#endif - word16 keepResources:1; /* Keep resources after handshake */ - word16 useClientOrder:1; /* Use client's cipher order */ - word16 mutualAuth:1; /* Mutual authentication is rquired */ -#if defined(WOLFSSL_TLS13) && defined(WOLFSSL_POST_HANDSHAKE_AUTH) - word16 postHandshakeAuth:1;/* Client send post_handshake_auth - * extension */ -#endif -#if defined(WOLFSSL_TLS13) && !defined(NO_WOLFSSL_SERVER) - word16 sendCookie:1; /* Server creates a Cookie in HRR */ -#endif -#ifdef WOLFSSL_ALT_CERT_CHAINS - word16 usingAltCertChain:1;/* Alternate cert chain was used */ -#endif -#if defined(WOLFSSL_TLS13) && defined(WOLFSSL_TLS13_MIDDLEBOX_COMPAT) - word16 sentChangeCipher:1; /* Change Cipher Spec sent */ -#endif -#if !defined(WOLFSSL_NO_CLIENT_AUTH) && \ - ((defined(HAVE_ED25519) && !defined(NO_ED25519_CLIENT_AUTH)) || \ - (defined(HAVE_ED448) && !defined(NO_ED448_CLIENT_AUTH))) - word16 cacheMessages:1; /* Cache messages for sign/verify */ -#endif -#ifndef NO_DH - #if !defined(WOLFSSL_OLD_PRIME_CHECK) && \ - !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) - word16 dhDoKeyTest:1; /* Need to do the DH Key prime test */ - word16 dhKeyTested:1; /* Set when key has been tested. */ - #endif -#endif -#ifdef SINGLE_THREADED - word16 ownSuites:1; /* if suites are malloced in ssl object */ -#endif -#ifdef HAVE_ENCRYPT_THEN_MAC - word16 disallowEncThenMac:1; /* Don't do Encrypt-Then-MAC */ - word16 encThenMac:1; /* Doing Encrypt-Then-MAC */ - word16 startedETMRead:1; /* Doing Encrypt-Then-MAC read */ - word16 startedETMWrite:1; /* Doing Encrypt-Then-MAC write */ -#endif - - /* need full byte values for this section */ - byte processReply; /* nonblocking resume */ - byte cipherSuite0; /* first byte, normally 0 */ - byte cipherSuite; /* second byte, actual suite */ - byte serverState; - byte clientState; - byte handShakeState; - byte handShakeDone; /* at least one handshake complete */ - byte minDowngrade; /* minimum downgrade version */ - byte connectState; /* nonblocking resume */ - byte acceptState; /* nonblocking resume */ - byte asyncState; /* sub-state for enum asyncState */ - byte buildMsgState; /* sub-state for enum buildMsgState */ - byte alertCount; /* detect warning dos attempt */ -#ifdef WOLFSSL_MULTICAST - word16 mcastID; /* Multicast group ID */ -#endif -#ifndef NO_DH - word16 minDhKeySz; /* minimum DH key size */ - word16 maxDhKeySz; /* minimum DH key size */ - word16 dhKeySz; /* actual DH key size */ -#endif -#ifndef NO_RSA - short minRsaKeySz; /* minimum RSA key size */ -#endif -#if defined(HAVE_ECC) || defined(HAVE_ED25519) || defined(HAVE_ED448) - short minEccKeySz; /* minimum ECC key size */ -#endif -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) - byte verifyDepth; /* maximum verification depth */ -#endif -#ifdef WOLFSSL_EARLY_DATA - word16 pskIdIndex; - word32 maxEarlyDataSz; -#endif -#ifdef WOLFSSL_TLS13 - byte oldMinor; /* client preferred version < TLS 1.3 */ -#endif -} Options; - -typedef struct Arrays { - byte* pendingMsg; /* defrag buffer */ - byte* preMasterSecret; - word32 preMasterSz; /* differs for DH, actual size */ - word32 pendingMsgSz; /* defrag buffer size */ - word32 pendingMsgOffset; /* current offset into defrag buffer */ -#if defined(HAVE_SESSION_TICKET) || !defined(NO_PSK) - word32 psk_keySz; /* actual size */ - char client_identity[MAX_PSK_ID_LEN + NULL_TERM_LEN]; - char server_hint[MAX_PSK_ID_LEN + NULL_TERM_LEN]; - byte psk_key[MAX_PSK_KEY_LEN]; -#endif - byte clientRandom[RAN_LEN]; - byte serverRandom[RAN_LEN]; - byte sessionID[ID_LEN]; - byte sessionIDSz; -#ifdef WOLFSSL_TLS13 - byte secret[SECRET_LEN]; -#endif - byte masterSecret[SECRET_LEN]; -#if defined(WOLFSSL_RENESAS_TSIP_TLS) && \ - !defined(NO_WOLFSSL_RENESAS_TSIP_TLS_SESSION) - byte tsip_masterSecret[TSIP_TLS_MASTERSECRET_SIZE]; -#endif -#ifdef WOLFSSL_DTLS - byte cookie[MAX_COOKIE_LEN]; - byte cookieSz; -#endif - byte pendingMsgType; /* defrag buffer message type */ -} Arrays; - -#ifndef ASN_NAME_MAX -#define ASN_NAME_MAX 256 -#endif - -#ifndef MAX_DATE_SZ -#define MAX_DATE_SZ 32 -#endif - -#define STACK_TYPE_X509 0 -#define STACK_TYPE_GEN_NAME 1 -#define STACK_TYPE_BIO 2 -#define STACK_TYPE_OBJ 3 -#define STACK_TYPE_STRING 4 -#define STACK_TYPE_CIPHER 5 -#define STACK_TYPE_ACCESS_DESCRIPTION 6 -#define STACK_TYPE_X509_EXT 7 -#define STACK_TYPE_NULL 8 -#define STACK_TYPE_X509_NAME 9 -#define STACK_TYPE_CONF_VALUE 10 -#define STACK_TYPE_X509_INFO 11 - -struct WOLFSSL_STACK { - unsigned long num; /* number of nodes in stack - * (safety measure for freeing and shortcut for count) */ - #if defined(OPENSSL_ALL) - wolf_sk_compare_cb comp; - #endif - - union { - WOLFSSL_X509* x509; - WOLFSSL_X509_NAME* name; - WOLFSSL_X509_INFO* info; - WOLFSSL_BIO* bio; - WOLFSSL_ASN1_OBJECT* obj; - WOLFSSL_CIPHER cipher; - WOLFSSL_ACCESS_DESCRIPTION* access; - WOLFSSL_X509_EXTENSION* ext; - WOLFSSL_CONF_VALUE* conf; - void* generic; - char* string; - WOLFSSL_GENERAL_NAME* gn; - } data; - void* heap; /* memory heap hint */ - WOLFSSL_STACK* next; - byte type; /* Identifies type of stack. */ -}; - -struct WOLFSSL_X509_NAME { - char *name; - int dynamicName; - int sz; - char staticName[ASN_NAME_MAX]; -#if (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) && \ - !defined(NO_ASN) - DecodedName fullName; - WOLFSSL_X509_NAME_ENTRY cnEntry; - WOLFSSL_X509_NAME_ENTRY extra[MAX_NAME_ENTRIES]; /* extra entries added */ - WOLFSSL_X509* x509; /* x509 that struct belongs to */ -#endif /* OPENSSL_EXTRA */ -#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) - byte raw[ASN_NAME_MAX]; - int rawLen; -#endif -}; - -#ifndef EXTERNAL_SERIAL_SIZE - #define EXTERNAL_SERIAL_SIZE 32 -#endif - -#ifdef NO_ASN - typedef struct DNS_entry DNS_entry; -#endif - -struct WOLFSSL_X509 { - int version; - int serialSz; -#ifdef WOLFSSL_SEP - int deviceTypeSz; - int hwTypeSz; - byte deviceType[EXTERNAL_SERIAL_SIZE]; - byte hwType[EXTERNAL_SERIAL_SIZE]; - int hwSerialNumSz; - byte hwSerialNum[EXTERNAL_SERIAL_SIZE]; -#endif /* WOLFSSL_SEP */ -#if (defined(WOLFSSL_SEP) || defined(WOLFSSL_QT) || defined (OPENSSL_ALL)) && \ - (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) - byte certPolicySet; - byte certPolicyCrit; -#endif /* (WOLFSSL_SEP || WOLFSSL_QT) && (OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL) */ -#if defined(WOLFSSL_QT) || defined(OPENSSL_ALL) - WOLFSSL_STACK* ext_sk; /* Store X509_EXTENSIONS from wolfSSL_X509_get_ext */ - WOLFSSL_STACK* ext_d2i;/* Store d2i extensions from wolfSSL_X509_get_ext_d2i */ -#endif /* WOLFSSL_QT || OPENSSL_ALL */ -#ifdef OPENSSL_EXTRA - WOLFSSL_ASN1_INTEGER* serialNumber; /* Stores SN from wolfSSL_X509_get_serialNumber */ -#endif - WOLFSSL_ASN1_TIME notBefore; - WOLFSSL_ASN1_TIME notAfter; - buffer sig; - int sigOID; - DNS_entry* altNames; /* alt names list */ - buffer pubKey; - int pubKeyOID; - DNS_entry* altNamesNext; /* hint for retrieval */ -#if defined(HAVE_ECC) || defined(HAVE_ED25519) || defined(HAVE_ED448) - word32 pkCurveOID; -#endif /* HAVE_ECC */ -#ifndef NO_CERTS - DerBuffer* derCert; /* may need */ -#endif - void* heap; /* heap hint */ - byte dynamicMemory; /* dynamic memory flag */ - byte isCa:1; -#ifdef WOLFSSL_CERT_EXT - char certPolicies[MAX_CERTPOL_NB][MAX_CERTPOL_SZ]; - int certPoliciesNb; -#endif /* WOLFSSL_CERT_EXT */ -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_ALL) - wolfSSL_Mutex refMutex; /* ref count mutex */ - int refCount; /* reference count */ -#endif -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) -#ifdef HAVE_EX_DATA - WOLFSSL_CRYPTO_EX_DATA ex_data; -#endif - byte* authKeyId; - byte* subjKeyId; - byte* extKeyUsageSrc; - const byte* CRLInfo; - byte* authInfo; -#if defined(OPENSSL_ALL) || defined(WOLFSSL_QT) - byte* authInfoCaIssuer; - int authInfoCaIssuerSz; -#endif - word32 pathLength; - word16 keyUsage; - int CRLInfoSz; - int authInfoSz; - word32 authKeyIdSz; - word32 subjKeyIdSz; - word32 extKeyUsageSz; - word32 extKeyUsageCount; - - byte CRLdistSet:1; - byte CRLdistCrit:1; - byte authInfoSet:1; - byte authInfoCrit:1; - byte keyUsageSet:1; - byte keyUsageCrit:1; - byte extKeyUsageCrit:1; - byte subjKeyIdSet:1; - - byte subjKeyIdCrit:1; - byte basicConstSet:1; - byte basicConstCrit:1; - byte basicConstPlSet:1; - byte subjAltNameSet:1; - byte subjAltNameCrit:1; - byte authKeyIdSet:1; - byte authKeyIdCrit:1; -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ - byte serial[EXTERNAL_SERIAL_SIZE]; - char subjectCN[ASN_NAME_MAX]; /* common name short cut */ -#ifdef WOLFSSL_CERT_REQ - char challengePw[CTC_NAME_SIZE]; /* for REQ certs */ -#endif - WOLFSSL_X509_NAME issuer; - WOLFSSL_X509_NAME subject; -#if defined(OPENSSL_ALL) || defined(WOLFSSL_HAPROXY) || defined(WOLFSSL_WPAS) - WOLFSSL_X509_ALGOR algor; - WOLFSSL_X509_PUBKEY key; -#endif - byte issuerSet:1; -}; - - -/* record layer header for PlainText, Compressed, and CipherText */ -typedef struct RecordLayerHeader { - byte type; - byte pvMajor; - byte pvMinor; - byte length[2]; -} RecordLayerHeader; - - -/* record layer header for DTLS PlainText, Compressed, and CipherText */ -typedef struct DtlsRecordLayerHeader { - byte type; - byte pvMajor; - byte pvMinor; - byte sequence_number[8]; /* per record */ - byte length[2]; -} DtlsRecordLayerHeader; - - -typedef struct DtlsFrag { - word32 begin; - word32 end; - struct DtlsFrag* next; -} DtlsFrag; - - -typedef struct DtlsMsg { - struct DtlsMsg* next; - byte* buf; - byte* msg; - DtlsFrag* fragList; - word32 fragSz; /* Length of fragments received */ - word32 seq; /* Handshake sequence number */ - word32 sz; /* Length of whole message */ - byte type; -} DtlsMsg; - - -#ifdef HAVE_NETX - - /* NETX I/O Callback default */ - typedef struct NetX_Ctx { - NX_TCP_SOCKET* nxSocket; /* send/recv socket handle */ - NX_PACKET* nxPacket; /* incoming packet handle for short reads */ - ULONG nxOffset; /* offset already read from nxPacket */ - ULONG nxWait; /* wait option flag */ - } NetX_Ctx; - -#endif - -/* Handshake messages received from peer (plus change cipher */ -typedef struct MsgsReceived { - word16 got_hello_request:1; - word16 got_client_hello:2; - word16 got_server_hello:2; - word16 got_hello_verify_request:1; - word16 got_session_ticket:1; - word16 got_end_of_early_data:1; - word16 got_hello_retry_request:1; - word16 got_encrypted_extensions:1; - word16 got_certificate:1; - word16 got_certificate_status:1; - word16 got_server_key_exchange:1; - word16 got_certificate_request:1; - word16 got_server_hello_done:1; - word16 got_certificate_verify:1; - word16 got_client_key_exchange:1; - word16 got_finished:1; - word16 got_key_update:1; - word16 got_change_cipher:1; -} MsgsReceived; - - -/* Handshake hashes */ -typedef struct HS_Hashes { - Hashes verifyHashes; - Hashes certHashes; /* for cert verify */ -#ifndef NO_SHA - wc_Sha hashSha; /* sha hash of handshake msgs */ -#endif -#if !defined(NO_MD5) && !defined(NO_OLD_TLS) - wc_Md5 hashMd5; /* md5 hash of handshake msgs */ -#endif -#ifndef NO_SHA256 - wc_Sha256 hashSha256; /* sha256 hash of handshake msgs */ -#endif -#ifdef WOLFSSL_SHA384 - wc_Sha384 hashSha384; /* sha384 hash of handshake msgs */ -#endif -#ifdef WOLFSSL_SHA512 - wc_Sha512 hashSha512; /* sha512 hash of handshake msgs */ -#endif -#if (defined(HAVE_ED25519) || defined(HAVE_ED448)) && \ - !defined(WOLFSSL_NO_CLIENT_AUTH) - byte* messages; /* handshake messages */ - int length; /* length of handshake messages' data */ - int prevLen; /* length of messages but last */ -#endif -} HS_Hashes; - - -#ifdef WOLFSSL_ASYNC_CRYPT - #define MAX_ASYNC_ARGS 18 - typedef void (*FreeArgsCb)(struct WOLFSSL* ssl, void* pArgs); - - struct WOLFSSL_ASYNC { - WC_ASYNC_DEV* dev; - FreeArgsCb freeArgs; /* function pointer to cleanup args */ - word32 args[MAX_ASYNC_ARGS]; /* holder for current args */ - }; -#endif - -#ifdef HAVE_WRITE_DUP - - #define WRITE_DUP_SIDE 1 - #define READ_DUP_SIDE 2 - - typedef struct WriteDup { - wolfSSL_Mutex dupMutex; /* reference count mutex */ - int dupCount; /* reference count */ - int dupErr; /* under dupMutex, pass to other side */ - } WriteDup; - - WOLFSSL_LOCAL void FreeWriteDup(WOLFSSL* ssl); - WOLFSSL_LOCAL int NotifyWriteSide(WOLFSSL* ssl, int err); -#endif /* HAVE_WRITE_DUP */ - -#if defined(WOLFSSL_TLS13) && defined(WOLFSSL_POST_HANDSHAKE_AUTH) -typedef struct CertReqCtx CertReqCtx; - -struct CertReqCtx { - CertReqCtx* next; - byte len; - byte ctx; -}; -#endif - -#ifdef WOLFSSL_EARLY_DATA -typedef enum EarlyDataState { - no_early_data, - early_data_ext, - expecting_early_data, - process_early_data, - done_early_data -} EarlyDataState; -#endif - -/* wolfSSL ssl type */ -struct WOLFSSL { - WOLFSSL_CTX* ctx; - Suites* suites; /* only need during handshake */ - Arrays* arrays; -#ifdef WOLFSSL_TLS13 - byte clientSecret[SECRET_LEN]; - byte serverSecret[SECRET_LEN]; -#endif - HS_Hashes* hsHashes; - void* IOCB_ReadCtx; - void* IOCB_WriteCtx; - WC_RNG* rng; - void* verifyCbCtx; /* cert verify callback user ctx*/ - VerifyCallback verifyCallback; /* cert verification callback */ - void* heap; /* for user overrides */ -#ifdef HAVE_WRITE_DUP - WriteDup* dupWrite; /* valid pointer indicates ON */ - /* side that decrements dupCount to zero frees overall structure */ - byte dupSide; /* write side or read side */ -#endif -#ifdef OPENSSL_EXTRA - byte cbioFlag; /* WOLFSSL_CBIO_RECV/SEND: CBIORecv/Send is set */ -#endif - CallbackIORecv CBIORecv; - CallbackIOSend CBIOSend; -#ifdef WOLFSSL_STATIC_MEMORY - WOLFSSL_HEAP_HINT heap_hint; -#endif -#ifndef NO_HANDSHAKE_DONE_CB - HandShakeDoneCb hsDoneCb; /* notify user handshake done */ - void* hsDoneCtx; /* user handshake cb context */ -#endif -#ifdef WOLFSSL_ASYNC_CRYPT - struct WOLFSSL_ASYNC async; -#elif defined(WOLFSSL_NONBLOCK_OCSP) - void* nonblockarg; /* dynamic arg for handling non-block resume */ -#endif - void* hsKey; /* Handshake key (RsaKey or ecc_key) allocated from heap */ - word32 hsType; /* Type of Handshake key (hsKey) */ - WOLFSSL_CIPHER cipher; -#ifndef WOLFSSL_AEAD_ONLY - hmacfp hmac; -#endif - Ciphers encrypt; - Ciphers decrypt; - Buffers buffers; - WOLFSSL_SESSION session; -#ifdef HAVE_EXT_CACHE - WOLFSSL_SESSION* extSession; -#endif - WOLFSSL_ALERT_HISTORY alert_history; - int error; - int rfd; /* read file descriptor */ - int wfd; /* write file descriptor */ - int rflags; /* user read flags */ - int wflags; /* user write flags */ - word32 timeout; /* session timeout */ - word32 fragOffset; /* fragment offset */ - word16 curSize; - byte verifyDepth; - RecordLayerHeader curRL; - MsgsReceived msgsReceived; /* peer messages received */ - ProtocolVersion version; /* negotiated version */ - ProtocolVersion chVersion; /* client hello version */ - CipherSpecs specs; - Keys keys; - Options options; -#ifdef OPENSSL_EXTRA - CallbackInfoState* CBIS; /* used to get info about SSL state */ - int cbmode; /* read or write on info callback */ - int cbtype; /* event type in info callback */ - WOLFSSL_BIO* biord; /* socket bio read to free/close */ - WOLFSSL_BIO* biowr; /* socket bio write to free/close */ - byte sessionCtx[ID_LEN]; /* app session context ID */ - WOLFSSL_X509_VERIFY_PARAM* param; /* verification parameters*/ -#endif -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) - unsigned long peerVerifyRet; -#endif -#ifdef OPENSSL_EXTRA - byte readAhead; - byte sessionCtxSz; /* size of sessionCtx stored */ -#ifdef HAVE_PK_CALLBACKS - void* loggingCtx; /* logging callback argument */ -#endif -#endif /* OPENSSL_EXTRA */ -#ifndef NO_RSA - RsaKey* peerRsaKey; -#ifdef WOLFSSL_RENESAS_TSIP_TLS - byte *peerTsipEncRsaKeyIndex; -#endif - byte peerRsaKeyPresent; -#endif -#ifdef HAVE_QSH - QSHKey* QSH_Key; - QSHKey* peerQSHKey; - QSHSecret* QSH_secret; - byte isQSH; /* is the handshake a QSH? */ - byte sendQSHKeys; /* flag for if the client should sen - public keys */ - byte peerQSHKeyPresent; - byte minRequest; - byte maxRequest; - byte user_set_QSHSchemes; -#endif -#if defined(WOLFSSL_TLS13) || defined(HAVE_FFDHE) - word16 namedGroup; -#endif -#ifdef WOLFSSL_TLS13 - word16 group[WOLFSSL_MAX_GROUP_COUNT]; - byte numGroups; -#endif - word16 pssAlgo; -#ifdef WOLFSSL_TLS13 - #if !defined(WOLFSSL_TLS13_DRAFT_18) && !defined(WOLFSSL_TLS13_DRAFT_22) - word16 certHashSigAlgoSz; /* SigAlgoCert ext length in bytes */ - byte certHashSigAlgo[WOLFSSL_MAX_SIGALGO]; /* cert sig/algo to - * offer */ - #endif /* !WOLFSSL_TLS13_DRAFT_18 && !WOLFSSL_TLS13_DRAFT_22 */ -#endif -#ifdef HAVE_NTRU - word16 peerNtruKeyLen; - byte peerNtruKey[MAX_NTRU_PUB_KEY_SZ]; - byte peerNtruKeyPresent; -#endif -#if defined(HAVE_ECC) || defined(HAVE_ED25519) || defined(HAVE_ED448) - int eccVerifyRes; -#endif -#if defined(HAVE_ECC) || defined(HAVE_CURVE25519) || defined(HAVE_CURVE448) - word32 ecdhCurveOID; /* curve Ecc_Sum */ - ecc_key* eccTempKey; /* private ECDHE key */ - byte eccTempKeyPresent; /* also holds type */ - byte peerEccKeyPresent; -#endif -#ifdef HAVE_ECC - ecc_key* peerEccKey; /* peer's ECDHE key */ - ecc_key* peerEccDsaKey; /* peer's ECDSA key */ - word16 eccTempKeySz; /* in octets 20 - 66 */ - byte peerEccDsaKeyPresent; -#endif -#if defined(HAVE_ECC) || defined(HAVE_ED25519) || defined(HAVE_CURVE448) - word32 pkCurveOID; /* curve Ecc_Sum */ -#endif -#ifdef HAVE_ED25519 - ed25519_key* peerEd25519Key; - byte peerEd25519KeyPresent; -#endif -#ifdef HAVE_CURVE25519 - curve25519_key* peerX25519Key; - byte peerX25519KeyPresent; -#endif -#ifdef HAVE_ED448 - ed448_key* peerEd448Key; - byte peerEd448KeyPresent; -#endif -#ifdef HAVE_CURVE448 - curve448_key* peerX448Key; - byte peerX448KeyPresent; -#endif -#ifdef HAVE_LIBZ - z_stream c_stream; /* compression stream */ - z_stream d_stream; /* decompression stream */ - byte didStreamInit; /* for stream init and end */ -#endif -#ifdef WOLFSSL_DTLS - int dtls_timeout_init; /* starting timeout value */ - int dtls_timeout_max; /* maximum timeout value */ - int dtls_timeout; /* current timeout value, changes */ - word32 dtls_tx_msg_list_sz; - word32 dtls_rx_msg_list_sz; - DtlsMsg* dtls_tx_msg_list; - DtlsMsg* dtls_tx_msg; - DtlsMsg* dtls_rx_msg_list; - void* IOCB_CookieCtx; /* gen cookie ctx */ - word32 dtls_expected_rx; -#ifdef WOLFSSL_SESSION_EXPORT - wc_dtls_export dtls_export; /* export function for session */ -#endif -#if defined(WOLFSSL_SCTP) || defined(WOLFSSL_DTLS_MTU) - word16 dtlsMtuSz; -#endif /* WOLFSSL_SCTP || WOLFSSL_DTLS_MTU */ -#ifdef WOLFSSL_MULTICAST - void* mcastHwCbCtx; /* Multicast highwater callback ctx */ -#endif /* WOLFSSL_MULTICAST */ -#ifdef WOLFSSL_DTLS_DROP_STATS - word32 macDropCount; - word32 replayDropCount; -#endif /* WOLFSSL_DTLS_DROP_STATS */ -#endif /* WOLFSSL_DTLS */ -#ifdef WOLFSSL_CALLBACKS - TimeoutInfo timeoutInfo; /* info saved during handshake */ - HandShakeInfo handShakeInfo; /* info saved during handshake */ -#endif -#ifdef OPENSSL_EXTRA - SSL_Msg_Cb protoMsgCb; /* inspect protocol message callback */ - void* protoMsgCtx; /* user set context with msg callback */ -#endif -#if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) - byte hsInfoOn; /* track handshake info */ - byte toInfoOn; /* track timeout info */ -#endif -#ifdef HAVE_FUZZER - CallbackFuzzer fuzzerCb; /* for testing with using fuzzer */ - void* fuzzerCtx; /* user defined pointer */ -#endif -#if defined(WOLFSSL_TLS13) && defined(WOLFSSL_POST_HANDSHAKE_AUTH) - CertReqCtx* certReqCtx; -#endif -#ifdef KEEP_PEER_CERT - WOLFSSL_X509 peerCert; /* X509 peer cert */ -#endif -#ifdef KEEP_OUR_CERT - WOLFSSL_X509* ourCert; /* keep alive a X509 struct of cert. - points to ctx if not owned (owned - flag found in buffers.weOwnCert) */ -#endif - byte keepCert; /* keep certificate after handshake */ -#if defined(HAVE_EX_DATA) || defined(FORTRESS) - WOLFSSL_CRYPTO_EX_DATA ex_data; /* external data, for Fortress */ -#endif - int devId; /* async device id to use */ -#ifdef HAVE_ONE_TIME_AUTH - OneTimeAuth auth; -#endif -#ifdef HAVE_TLS_EXTENSIONS - TLSX* extensions; /* RFC 6066 TLS Extensions data */ - #ifdef HAVE_MAX_FRAGMENT - word16 max_fragment; - #endif - #ifdef HAVE_TRUNCATED_HMAC - byte truncated_hmac; - #endif - #ifdef HAVE_CERTIFICATE_STATUS_REQUEST - byte status_request; - #endif - #ifdef HAVE_CERTIFICATE_STATUS_REQUEST_V2 - byte status_request_v2; - #endif - #if defined(HAVE_SECURE_RENEGOTIATION) \ - || defined(HAVE_SERVER_RENEGOTIATION_INFO) - int secure_rene_count; /* how many times */ - SecureRenegotiation* secure_renegotiation; /* valid pointer indicates */ - #endif /* user turned on */ - #ifdef HAVE_ALPN - char* alpn_client_list; /* keep the client's list */ - #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) - CallbackALPNSelect alpnSelect; - void* alpnSelectArg; - #endif - #endif /* of accepted protocols */ - #if !defined(NO_WOLFSSL_CLIENT) && defined(HAVE_SESSION_TICKET) - CallbackSessionTicket session_ticket_cb; - void* session_ticket_ctx; - byte expect_session_ticket; - #endif -#endif /* HAVE_TLS_EXTENSIONS */ -#ifdef HAVE_OCSP - void* ocspIOCtx; - #ifdef OPENSSL_EXTRA - byte* ocspResp; - int ocspRespSz; - #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) - char* url; - #endif - #endif -#endif -#ifdef HAVE_NETX - NetX_Ctx nxCtx; /* NetX IO Context */ -#endif -#if defined(WOLFSSL_APACHE_MYNEWT) && !defined(WOLFSSL_LWIP) - void* mnCtx; /* mynewt mn_socket IO Context */ -#endif /* defined(WOLFSSL_APACHE_MYNEWT) && !defined(WOLFSSL_LWIP) */ -#ifdef WOLFSSL_GNRC - struct gnrc_wolfssl_ctx *gnrcCtx; /* Riot-OS GNRC UDP/IP context */ -#endif -#ifdef SESSION_INDEX - int sessionIndex; /* Session's location in the cache. */ -#endif -#ifdef ATOMIC_USER - void* MacEncryptCtx; /* Atomic User Mac/Encrypt Callback Context */ - void* DecryptVerifyCtx; /* Atomic User Decrypt/Verify Callback Context */ - #ifdef HAVE_ENCRYPT_THEN_MAC - void* EncryptMacCtx; /* Atomic User Encrypt/Mac Callback Ctx */ - void* VerifyDecryptCtx; /* Atomic User Verify/Decrypt Callback Ctx */ - #endif -#endif -#ifdef HAVE_PK_CALLBACKS - #ifdef HAVE_ECC - void* EccKeyGenCtx; /* EccKeyGen Callback Context */ - void* EccSignCtx; /* Ecc Sign Callback Context */ - void* EccVerifyCtx; /* Ecc Verify Callback Context */ - void* EccSharedSecretCtx; /* Ecc Pms Callback Context */ - #ifdef HAVE_ED25519 - void* Ed25519SignCtx; /* ED25519 Sign Callback Context */ - void* Ed25519VerifyCtx; /* ED25519 Verify Callback Context */ - #endif - #ifdef HAVE_CURVE25519 - void* X25519KeyGenCtx; /* X25519 KeyGen Callback Context */ - void* X25519SharedSecretCtx; /* X25519 Pms Callback Context */ - #endif - #ifdef HAVE_ED448 - void* Ed448SignCtx; /* ED448 Sign Callback Context */ - void* Ed448VerifyCtx; /* ED448 Verify Callback Context */ - #endif - #ifdef HAVE_CURVE448 - void* X448KeyGenCtx; /* X448 KeyGen Callback Context */ - void* X448SharedSecretCtx; /* X448 Pms Callback Context */ - #endif - #endif /* HAVE_ECC */ - #ifndef NO_DH - void* DhAgreeCtx; /* DH Pms Callback Context */ - #endif /* !NO_DH */ - #ifndef NO_RSA - void* RsaSignCtx; /* Rsa Sign Callback Context */ - void* RsaVerifyCtx; /* Rsa Verify Callback Context */ - #ifdef WC_RSA_PSS - void* RsaPssSignCtx; /* Rsa PSS Sign Callback Context */ - void* RsaPssVerifyCtx; /* Rsa PSS Verify Callback Context */ - #endif - void* RsaEncCtx; /* Rsa Public Encrypt Callback Context */ - void* RsaDecCtx; /* Rsa Private Decrypt Callback Context */ - #endif /* NO_RSA */ -#endif /* HAVE_PK_CALLBACKS */ -#ifdef HAVE_SECRET_CALLBACK - SessionSecretCb sessionSecretCb; - void* sessionSecretCtx; - #ifdef WOLFSSL_TLS13 - Tls13SecretCb tls13SecretCb; - void* tls13SecretCtx; - #endif -#endif /* HAVE_SECRET_CALLBACK */ -#ifdef WOLFSSL_JNI - void* jObjectRef; /* reference to WolfSSLSession in JNI wrapper */ -#endif /* WOLFSSL_JNI */ -#ifdef WOLFSSL_EARLY_DATA - EarlyDataState earlyData; - word32 earlyDataSz; -#endif -#ifdef OPENSSL_ALL - long verifyCallbackResult; -#endif -#if defined(OPENSSL_ALL) || defined(WOLFSSL_QT) - WOLFSSL_STACK* supportedCiphers; /* Used in wolfSSL_get_ciphers_compat */ - WOLFSSL_STACK* peerCertChain; /* Used in wolfSSL_get_peer_cert_chain */ -#endif -}; - - -WOLFSSL_LOCAL int SSL_CTX_RefCount(WOLFSSL_CTX* ctx, int incr); -WOLFSSL_LOCAL int SetSSL_CTX(WOLFSSL*, WOLFSSL_CTX*, int); -WOLFSSL_LOCAL int InitSSL(WOLFSSL*, WOLFSSL_CTX*, int); -WOLFSSL_LOCAL void FreeSSL(WOLFSSL*, void* heap); -WOLFSSL_API void SSL_ResourceFree(WOLFSSL*); /* Micrium uses */ - - -#ifndef NO_CERTS - - WOLFSSL_LOCAL int ProcessBuffer(WOLFSSL_CTX* ctx, const unsigned char* buff, - long sz, int format, int type, WOLFSSL* ssl, - long* used, int userChain, int verify); - WOLFSSL_LOCAL int ProcessFile(WOLFSSL_CTX* ctx, const char* fname, int format, - int type, WOLFSSL* ssl, int userChain, - WOLFSSL_CRL* crl, int verify); - - #ifdef OPENSSL_EXTRA - WOLFSSL_LOCAL int CheckHostName(DecodedCert* dCert, char *domainName, - size_t domainNameLen); - #endif -#endif - - -#if defined(WOLFSSL_CALLBACKS) || defined(OPENSSL_EXTRA) - WOLFSSL_LOCAL - void InitHandShakeInfo(HandShakeInfo*, WOLFSSL*); - WOLFSSL_LOCAL - void FinishHandShakeInfo(HandShakeInfo*); - WOLFSSL_LOCAL - void AddPacketName(WOLFSSL* ssl, const char* name); - - WOLFSSL_LOCAL - void InitTimeoutInfo(TimeoutInfo*); - WOLFSSL_LOCAL - void FreeTimeoutInfo(TimeoutInfo*, void*); - WOLFSSL_LOCAL - void AddPacketInfo(WOLFSSL* ssl, const char* name, int type, - const byte* data, int sz, int write, void* heap); - WOLFSSL_LOCAL - void AddLateName(const char*, TimeoutInfo*); - WOLFSSL_LOCAL - void AddLateRecordHeader(const RecordLayerHeader* rl, TimeoutInfo* info); -#endif - - -/* Record Layer Header identifier from page 12 */ -enum ContentType { - no_type = 0, - change_cipher_spec = 20, - alert = 21, - handshake = 22, - application_data = 23 -}; - - -/* handshake header, same for each message type, pgs 20/21 */ -typedef struct HandShakeHeader { - byte type; - word24 length; -} HandShakeHeader; - - -/* DTLS handshake header, same for each message type */ -typedef struct DtlsHandShakeHeader { - byte type; - word24 length; - byte message_seq[2]; /* start at 0, retransmit gets same # */ - word24 fragment_offset; /* bytes in previous fragments */ - word24 fragment_length; /* length of this fragment */ -} DtlsHandShakeHeader; - - -enum HandShakeType { - hello_request = 0, - client_hello = 1, - server_hello = 2, - hello_verify_request = 3, /* DTLS addition */ - session_ticket = 4, - end_of_early_data = 5, - hello_retry_request = 6, - encrypted_extensions = 8, - certificate = 11, - server_key_exchange = 12, - certificate_request = 13, - server_hello_done = 14, - certificate_verify = 15, - client_key_exchange = 16, - finished = 20, - certificate_status = 22, - key_update = 24, - change_cipher_hs = 55, /* simulate unique handshake type for sanity - checks. record layer change_cipher - conflicts with handshake finished */ - message_hash = 254, /* synthetic message type for TLS v1.3 */ - no_shake = 255 /* used to initialize the DtlsMsg record */ -}; - -enum ProvisionSide { - PROVISION_CLIENT = 1, - PROVISION_SERVER = 2, - PROVISION_CLIENT_SERVER = 3 -}; - - -static const byte client[SIZEOF_SENDER] = { 0x43, 0x4C, 0x4E, 0x54 }; -static const byte server[SIZEOF_SENDER] = { 0x53, 0x52, 0x56, 0x52 }; - -static const byte tls_client[FINISHED_LABEL_SZ + 1] = "client finished"; -static const byte tls_server[FINISHED_LABEL_SZ + 1] = "server finished"; - -#ifdef OPENSSL_EXTRA -typedef struct { - int name_len; - const char *name; - int nid; -} WOLF_EC_NIST_NAME; -extern const WOLF_EC_NIST_NAME kNistCurves[]; -/* This is the longest and shortest curve name in the kNistCurves list */ -#define kNistCurves_MIN_NAME_LEN 5 -#define kNistCurves_MAX_NAME_LEN 7 -#endif - -/* internal functions */ -WOLFSSL_LOCAL int SendChangeCipher(WOLFSSL*); -WOLFSSL_LOCAL int SendTicket(WOLFSSL*); -WOLFSSL_LOCAL int DoClientTicket(WOLFSSL*, const byte*, word32); -WOLFSSL_LOCAL int SendData(WOLFSSL*, const void*, int); -#ifdef WOLFSSL_TLS13 -#ifdef WOLFSSL_TLS13_DRAFT_18 -WOLFSSL_LOCAL int SendTls13HelloRetryRequest(WOLFSSL*); -#else -WOLFSSL_LOCAL int SendTls13ServerHello(WOLFSSL*, byte); -#endif -#endif -WOLFSSL_LOCAL int SendCertificate(WOLFSSL*); -WOLFSSL_LOCAL int SendCertificateRequest(WOLFSSL*); -#if defined(HAVE_CERTIFICATE_STATUS_REQUEST) \ - || defined(HAVE_CERTIFICATE_STATUS_REQUEST_V2) -WOLFSSL_LOCAL int CreateOcspResponse(WOLFSSL*, OcspRequest**, buffer*); -#endif -#if defined(HAVE_SECURE_RENEGOTIATION) && \ - defined(HAVE_SERVER_RENEGOTIATION_INFO) -WOLFSSL_LOCAL int SendHelloRequest(WOLFSSL*); -#endif -WOLFSSL_LOCAL int SendCertificateStatus(WOLFSSL*); -WOLFSSL_LOCAL int SendServerKeyExchange(WOLFSSL*); -WOLFSSL_LOCAL int SendBuffered(WOLFSSL*); -WOLFSSL_LOCAL int ReceiveData(WOLFSSL*, byte*, int, int); -WOLFSSL_LOCAL int SendFinished(WOLFSSL*); -WOLFSSL_LOCAL int SendAlert(WOLFSSL*, int, int); -WOLFSSL_LOCAL int ProcessReply(WOLFSSL*); - -WOLFSSL_LOCAL int SetCipherSpecs(WOLFSSL*); -WOLFSSL_LOCAL int MakeMasterSecret(WOLFSSL*); - -WOLFSSL_LOCAL int AddSession(WOLFSSL*); -WOLFSSL_LOCAL int DeriveKeys(WOLFSSL* ssl); -WOLFSSL_LOCAL int StoreKeys(WOLFSSL* ssl, const byte* keyData, int side); - -WOLFSSL_LOCAL int IsTLS(const WOLFSSL* ssl); -WOLFSSL_LOCAL int IsAtLeastTLSv1_2(const WOLFSSL* ssl); -WOLFSSL_LOCAL int IsAtLeastTLSv1_3(const ProtocolVersion pv); - -WOLFSSL_LOCAL void FreeHandshakeResources(WOLFSSL* ssl); -WOLFSSL_LOCAL void ShrinkInputBuffer(WOLFSSL* ssl, int forcedFree); -WOLFSSL_LOCAL void ShrinkOutputBuffer(WOLFSSL* ssl); - -WOLFSSL_LOCAL int VerifyClientSuite(WOLFSSL* ssl); - -WOLFSSL_LOCAL int SetTicket(WOLFSSL*, const byte*, word32); -WOLFSSL_LOCAL int wolfSSL_GetMaxRecordSize(WOLFSSL* ssl, int maxFragment); - -#if defined(OPENSSL_EXTRA) && defined(HAVE_ECC) -WOLFSSL_LOCAL int SetECKeyInternal(WOLFSSL_EC_KEY* eckey); -WOLFSSL_LOCAL int SetECKeyExternal(WOLFSSL_EC_KEY* eckey); -#endif - -WOLFSSL_LOCAL WC_RNG* WOLFSSL_RSA_GetRNG(WOLFSSL_RSA *rsa, WC_RNG **tmpRNG, - int *initTmpRng); - -#ifndef NO_CERTS - #ifndef NO_RSA - #ifdef WC_RSA_PSS - WOLFSSL_LOCAL int CheckRsaPssPadding(const byte* plain, word32 plainSz, - byte* out, word32 sigSz, enum wc_HashType hashType); - WOLFSSL_LOCAL int ConvertHashPss(int hashAlgo, - enum wc_HashType* hashType, int* mgf); - #endif - WOLFSSL_LOCAL int VerifyRsaSign(WOLFSSL* ssl, byte* verifySig, - word32 sigSz, const byte* plain, word32 plainSz, int sigAlgo, - int hashAlgo, RsaKey* key, DerBuffer* keyBufInfo); - WOLFSSL_LOCAL int RsaSign(WOLFSSL* ssl, const byte* in, word32 inSz, - byte* out, word32* outSz, int sigAlgo, int hashAlgo, RsaKey* key, - DerBuffer* keyBufInfo); - WOLFSSL_LOCAL int RsaVerify(WOLFSSL* ssl, byte* in, word32 inSz, - byte** out, int sigAlgo, int hashAlgo, RsaKey* key, - buffer* keyBufInfo); - WOLFSSL_LOCAL int RsaDec(WOLFSSL* ssl, byte* in, word32 inSz, byte** out, - word32* outSz, RsaKey* key, DerBuffer* keyBufInfo); - WOLFSSL_LOCAL int RsaEnc(WOLFSSL* ssl, const byte* in, word32 inSz, byte* out, - word32* outSz, RsaKey* key, buffer* keyBufInfo); - #endif /* !NO_RSA */ - - #ifdef HAVE_ECC - WOLFSSL_LOCAL int EccSign(WOLFSSL* ssl, const byte* in, word32 inSz, - byte* out, word32* outSz, ecc_key* key, DerBuffer* keyBufInfo); - WOLFSSL_LOCAL int EccVerify(WOLFSSL* ssl, const byte* in, word32 inSz, - const byte* out, word32 outSz, ecc_key* key, buffer* keyBufInfo); - WOLFSSL_LOCAL int EccSharedSecret(WOLFSSL* ssl, ecc_key* priv_key, - ecc_key* pub_key, byte* pubKeyDer, word32* pubKeySz, byte* out, - word32* outlen, int side); - #endif /* HAVE_ECC */ - #ifdef HAVE_ED25519 - WOLFSSL_LOCAL int Ed25519CheckPubKey(WOLFSSL* ssl); - WOLFSSL_LOCAL int Ed25519Sign(WOLFSSL* ssl, const byte* in, word32 inSz, - byte* out, word32* outSz, ed25519_key* key, DerBuffer* keyBufInfo); - WOLFSSL_LOCAL int Ed25519Verify(WOLFSSL* ssl, const byte* in, - word32 inSz, const byte* msg, word32 msgSz, ed25519_key* key, - buffer* keyBufInfo); - #endif /* HAVE_ED25519 */ - #ifdef HAVE_ED448 - WOLFSSL_LOCAL int Ed448CheckPubKey(WOLFSSL* ssl); - WOLFSSL_LOCAL int Ed448Sign(WOLFSSL* ssl, const byte* in, word32 inSz, - byte* out, word32* outSz, ed448_key* key, DerBuffer* keyBufInfo); - WOLFSSL_LOCAL int Ed448Verify(WOLFSSL* ssl, const byte* in, - word32 inSz, const byte* msg, word32 msgSz, ed448_key* key, - buffer* keyBufInfo); - #endif /* HAVE_ED448 */ - - - #ifdef WOLFSSL_TRUST_PEER_CERT - - /* options for searching hash table for a matching trusted peer cert */ - #define WC_MATCH_SKID 0 - #define WC_MATCH_NAME 1 - - WOLFSSL_LOCAL TrustedPeerCert* GetTrustedPeer(void* vp, byte* hash, - int type); - WOLFSSL_LOCAL int MatchTrustedPeer(TrustedPeerCert* tp, - DecodedCert* cert); - #endif - - WOLFSSL_LOCAL Signer* GetCA(void* cm, byte* hash); - #ifndef NO_SKID - WOLFSSL_LOCAL Signer* GetCAByName(void* cm, byte* hash); - #endif -#endif /* !NO_CERTS */ -WOLFSSL_LOCAL int BuildTlsHandshakeHash(WOLFSSL* ssl, byte* hash, - word32* hashLen); -WOLFSSL_LOCAL int BuildTlsFinished(WOLFSSL* ssl, Hashes* hashes, - const byte* sender); -WOLFSSL_LOCAL void FreeArrays(WOLFSSL* ssl, int keep); -WOLFSSL_LOCAL int CheckAvailableSize(WOLFSSL *ssl, int size); -WOLFSSL_LOCAL int GrowInputBuffer(WOLFSSL* ssl, int size, int usedLength); - -#ifndef NO_TLS - WOLFSSL_LOCAL int MakeTlsMasterSecret(WOLFSSL*); -#ifndef WOLFSSL_AEAD_ONLY - WOLFSSL_LOCAL int TLS_hmac(WOLFSSL* ssl, byte* digest, const byte* in, - word32 sz, int padSz, int content, int verify); -#endif -#endif - -#ifndef NO_WOLFSSL_CLIENT - WOLFSSL_LOCAL int SendClientHello(WOLFSSL*); - #ifdef WOLFSSL_TLS13 - WOLFSSL_LOCAL int SendTls13ClientHello(WOLFSSL*); - #endif - WOLFSSL_LOCAL int SendClientKeyExchange(WOLFSSL*); - WOLFSSL_LOCAL int SendCertificateVerify(WOLFSSL*); -#endif /* NO_WOLFSSL_CLIENT */ - -#ifndef NO_WOLFSSL_SERVER - WOLFSSL_LOCAL int SendServerHello(WOLFSSL*); - WOLFSSL_LOCAL int SendServerHelloDone(WOLFSSL*); -#endif /* NO_WOLFSSL_SERVER */ - -#ifdef WOLFSSL_DTLS - WOLFSSL_LOCAL DtlsMsg* DtlsMsgNew(word32, void*); - WOLFSSL_LOCAL void DtlsMsgDelete(DtlsMsg*, void*); - WOLFSSL_LOCAL void DtlsMsgListDelete(DtlsMsg*, void*); - WOLFSSL_LOCAL int DtlsMsgSet(DtlsMsg*, word32, const byte*, byte, - word32, word32, void*); - WOLFSSL_LOCAL DtlsMsg* DtlsMsgFind(DtlsMsg*, word32); - WOLFSSL_LOCAL void DtlsMsgStore(WOLFSSL*, word32, const byte*, word32, - byte, word32, word32, void*); - WOLFSSL_LOCAL DtlsMsg* DtlsMsgInsert(DtlsMsg*, DtlsMsg*); - - WOLFSSL_LOCAL int DtlsMsgPoolSave(WOLFSSL*, const byte*, word32); - WOLFSSL_LOCAL int DtlsMsgPoolTimeout(WOLFSSL*); - WOLFSSL_LOCAL int VerifyForDtlsMsgPoolSend(WOLFSSL*, byte, word32); - WOLFSSL_LOCAL void DtlsMsgPoolReset(WOLFSSL*); - WOLFSSL_LOCAL int DtlsMsgPoolSend(WOLFSSL*, int); -#endif /* WOLFSSL_DTLS */ - -#ifndef NO_TLS - - -#endif /* NO_TLS */ - -#if defined(WOLFSSL_TLS13) && (defined(HAVE_SESSION_TICKET) || !defined(NO_PSK)) - WOLFSSL_LOCAL word32 TimeNowInMilliseconds(void); -#endif -WOLFSSL_LOCAL word32 LowResTimer(void); - -#ifndef NO_CERTS - WOLFSSL_LOCAL void InitX509Name(WOLFSSL_X509_NAME*, int); - WOLFSSL_LOCAL void FreeX509Name(WOLFSSL_X509_NAME* name, void* heap); - WOLFSSL_LOCAL void InitX509(WOLFSSL_X509*, int, void* heap); - WOLFSSL_LOCAL void FreeX509(WOLFSSL_X509*); - WOLFSSL_LOCAL int CopyDecodedToX509(WOLFSSL_X509*, DecodedCert*); -#endif - -#ifndef MAX_CIPHER_NAME -#define MAX_CIPHER_NAME 50 -#endif - -#ifdef WOLFSSL_NAMES_STATIC -typedef char cipher_name[MAX_CIPHER_NAME]; -#else -typedef const char* cipher_name; -#endif - -typedef struct CipherSuiteInfo { - cipher_name name; -#ifndef NO_ERROR_STRINGS - cipher_name name_iana; -#endif - byte cipherSuite0; - byte cipherSuite; -#if defined(OPENSSL_ALL) || defined(WOLFSSL_QT) - byte minor; - byte major; -#endif -} CipherSuiteInfo; - -WOLFSSL_LOCAL const CipherSuiteInfo* GetCipherNames(void); -WOLFSSL_LOCAL int GetCipherNamesSize(void); -WOLFSSL_LOCAL const char* GetCipherNameInternal(const byte cipherSuite0, const byte cipherSuite); -#if defined(OPENSSL_ALL) || defined(WOLFSSL_QT) -/* used in wolfSSL_sk_CIPHER_description */ -#define MAX_SEGMENTS 5 -#define MAX_SEGMENT_SZ 20 -WOLFSSL_LOCAL int wolfSSL_sk_CIPHER_description(WOLFSSL_CIPHER*); -WOLFSSL_LOCAL const char* GetCipherProtocol(const byte minor); -WOLFSSL_LOCAL const char* GetCipherKeaStr(char n[][MAX_SEGMENT_SZ]); -WOLFSSL_LOCAL const char* GetCipherAuthStr(char n[][MAX_SEGMENT_SZ]); -WOLFSSL_LOCAL const char* GetCipherEncStr(char n[][MAX_SEGMENT_SZ]); -WOLFSSL_LOCAL const char* GetCipherMacStr(char n[][MAX_SEGMENT_SZ]); -WOLFSSL_LOCAL int SetCipherBits(const char* enc); -#endif -WOLFSSL_LOCAL const char* GetCipherNameIana(const byte cipherSuite0, const byte cipherSuite); -WOLFSSL_LOCAL const char* wolfSSL_get_cipher_name_internal(WOLFSSL* ssl); -WOLFSSL_LOCAL const char* wolfSSL_get_cipher_name_iana(WOLFSSL* ssl); -WOLFSSL_LOCAL int GetCipherSuiteFromName(const char* name, byte* cipherSuite0, - byte* cipherSuite); - -enum encrypt_side { - ENCRYPT_SIDE_ONLY = 1, - DECRYPT_SIDE_ONLY, - ENCRYPT_AND_DECRYPT_SIDE -}; - -WOLFSSL_LOCAL int SetKeysSide(WOLFSSL*, enum encrypt_side); - -/* Set*Internal and Set*External functions */ -WOLFSSL_LOCAL int SetDsaInternal(WOLFSSL_DSA* dsa); -WOLFSSL_LOCAL int SetDsaExternal(WOLFSSL_DSA* dsa); -#ifndef HAVE_USER_RSA -WOLFSSL_LOCAL int SetRsaExternal(WOLFSSL_RSA* rsa); -WOLFSSL_LOCAL int SetRsaInternal(WOLFSSL_RSA* rsa); -#endif -WOLFSSL_LOCAL int SetDhInternal(WOLFSSL_DH* dh); -WOLFSSL_LOCAL int SetDhExternal(WOLFSSL_DH *dh); - -#ifndef NO_DH - WOLFSSL_LOCAL int DhGenKeyPair(WOLFSSL* ssl, DhKey* dhKey, - byte* priv, word32* privSz, - byte* pub, word32* pubSz); - WOLFSSL_LOCAL int DhAgree(WOLFSSL* ssl, DhKey* dhKey, - const byte* priv, word32 privSz, - const byte* otherPub, word32 otherPubSz, - byte* agree, word32* agreeSz); -#endif /* !NO_DH */ - -#ifdef HAVE_ECC - WOLFSSL_LOCAL int EccMakeKey(WOLFSSL* ssl, ecc_key* key, ecc_key* peer); - WOLFSSL_LOCAL word16 GetCurveByOID(int oidSum); -#endif - -WOLFSSL_LOCAL int InitHandshakeHashes(WOLFSSL* ssl); -WOLFSSL_LOCAL void FreeHandshakeHashes(WOLFSSL* ssl); - -WOLFSSL_LOCAL int BuildMessage(WOLFSSL* ssl, byte* output, int outSz, - const byte* input, int inSz, int type, int hashOutput, - int sizeOnly, int asyncOkay); - -#ifdef WOLFSSL_TLS13 -int BuildTls13Message(WOLFSSL* ssl, byte* output, int outSz, const byte* input, - int inSz, int type, int hashOutput, int sizeOnly, int asyncOkay); -#endif - -WOLFSSL_LOCAL int AllocKey(WOLFSSL* ssl, int type, void** pKey); -WOLFSSL_LOCAL void FreeKey(WOLFSSL* ssl, int type, void** pKey); - -#ifdef WOLFSSL_ASYNC_CRYPT - WOLFSSL_LOCAL int wolfSSL_AsyncInit(WOLFSSL* ssl, WC_ASYNC_DEV* asyncDev, word32 flags); - WOLFSSL_LOCAL int wolfSSL_AsyncPop(WOLFSSL* ssl, byte* state); - WOLFSSL_LOCAL int wolfSSL_AsyncPush(WOLFSSL* ssl, WC_ASYNC_DEV* asyncDev); -#endif - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* wolfSSL_INT_H */ diff --git a/client/wolfssl/wolfssl/ocsp.h b/client/wolfssl/wolfssl/ocsp.h deleted file mode 100644 index 5159d4c..0000000 --- a/client/wolfssl/wolfssl/ocsp.h +++ /dev/null @@ -1,133 +0,0 @@ -/* ocsp.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -/* wolfSSL OCSP API */ - -#ifndef WOLFSSL_OCSP_H -#define WOLFSSL_OCSP_H - -#ifdef HAVE_OCSP - -#include <wolfssl/ssl.h> -#include <wolfssl/wolfcrypt/asn.h> - -#ifdef __cplusplus - extern "C" { -#endif - -typedef struct WOLFSSL_OCSP WOLFSSL_OCSP; - -#if defined(OPENSSL_ALL) || defined(OPENSSL_EXTRA) || defined(WOLFSSL_NGINX) ||\ - defined(WOLFSSL_HAPROXY) -typedef struct OcspResponse WOLFSSL_OCSP_BASICRESP; - -typedef struct OcspRequest WOLFSSL_OCSP_CERTID; - -typedef struct OcspRequest WOLFSSL_OCSP_ONEREQ; - -typedef struct OcspRequest WOLFSSL_OCSP_REQUEST; -#endif - -WOLFSSL_LOCAL int InitOCSP(WOLFSSL_OCSP*, WOLFSSL_CERT_MANAGER*); -WOLFSSL_LOCAL void FreeOCSP(WOLFSSL_OCSP*, int dynamic); - -WOLFSSL_LOCAL int CheckCertOCSP(WOLFSSL_OCSP*, DecodedCert*, - WOLFSSL_BUFFER_INFO* responseBuffer); -WOLFSSL_LOCAL int CheckCertOCSP_ex(WOLFSSL_OCSP*, DecodedCert*, - WOLFSSL_BUFFER_INFO* responseBuffer, WOLFSSL* ssl); -WOLFSSL_LOCAL int CheckOcspRequest(WOLFSSL_OCSP* ocsp, - OcspRequest* ocspRequest, WOLFSSL_BUFFER_INFO* responseBuffer); -WOLFSSL_LOCAL int CheckOcspResponse(WOLFSSL_OCSP *ocsp, byte *response, int responseSz, - WOLFSSL_BUFFER_INFO *responseBuffer, CertStatus *status, - OcspEntry *entry, OcspRequest *ocspRequest); - -#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) || \ - defined(WOLFSSL_APACHE_HTTPD) - - WOLFSSL_API int wolfSSL_OCSP_resp_find_status(WOLFSSL_OCSP_BASICRESP *bs, - WOLFSSL_OCSP_CERTID *id, int *status, int *reason, - WOLFSSL_ASN1_TIME **revtime, WOLFSSL_ASN1_TIME **thisupd, - WOLFSSL_ASN1_TIME **nextupd); -WOLFSSL_API const char *wolfSSL_OCSP_cert_status_str(long s); -WOLFSSL_API int wolfSSL_OCSP_check_validity(WOLFSSL_ASN1_TIME* thisupd, - WOLFSSL_ASN1_TIME* nextupd, long sec, long maxsec); - -WOLFSSL_API void wolfSSL_OCSP_CERTID_free(WOLFSSL_OCSP_CERTID* certId); -WOLFSSL_API WOLFSSL_OCSP_CERTID* wolfSSL_OCSP_cert_to_id( - const WOLFSSL_EVP_MD *dgst, const WOLFSSL_X509 *subject, - const WOLFSSL_X509 *issuer); - -WOLFSSL_API void wolfSSL_OCSP_BASICRESP_free(WOLFSSL_OCSP_BASICRESP* basicResponse); -WOLFSSL_API int wolfSSL_OCSP_basic_verify(WOLFSSL_OCSP_BASICRESP *bs, - WOLF_STACK_OF(WOLFSSL_X509) *certs, WOLFSSL_X509_STORE *st, unsigned long flags); - -WOLFSSL_API void wolfSSL_OCSP_RESPONSE_free(OcspResponse* response); -WOLFSSL_API OcspResponse* wolfSSL_d2i_OCSP_RESPONSE_bio(WOLFSSL_BIO* bio, - OcspResponse** response); -WOLFSSL_API OcspResponse* wolfSSL_d2i_OCSP_RESPONSE(OcspResponse** response, - const unsigned char** data, int len); -WOLFSSL_API int wolfSSL_i2d_OCSP_RESPONSE(OcspResponse* response, - unsigned char** data); -WOLFSSL_API int wolfSSL_OCSP_response_status(OcspResponse *response); -WOLFSSL_API const char *wolfSSL_OCSP_response_status_str(long s); -WOLFSSL_API WOLFSSL_OCSP_BASICRESP* wolfSSL_OCSP_response_get1_basic( - OcspResponse* response); - -WOLFSSL_API OcspRequest* wolfSSL_OCSP_REQUEST_new(void); -WOLFSSL_API void wolfSSL_OCSP_REQUEST_free(OcspRequest* request); -WOLFSSL_API int wolfSSL_i2d_OCSP_REQUEST(OcspRequest* request, - unsigned char** data); -WOLFSSL_API WOLFSSL_OCSP_ONEREQ* wolfSSL_OCSP_request_add0_id(OcspRequest *req, - WOLFSSL_OCSP_CERTID *cid); -WOLFSSL_API WOLFSSL_OCSP_CERTID* wolfSSL_OCSP_CERTID_dup(WOLFSSL_OCSP_CERTID*); -WOLFSSL_API int wolfSSL_i2d_OCSP_REQUEST_bio(WOLFSSL_BIO* out, - WOLFSSL_OCSP_REQUEST *req); - -#endif -#ifdef OPENSSL_EXTRA -WOLFSSL_API int wolfSSL_OCSP_REQUEST_add_ext(OcspRequest* req, - WOLFSSL_X509_EXTENSION* ext, int idx); -WOLFSSL_API OcspResponse* wolfSSL_OCSP_response_create(int status, - WOLFSSL_OCSP_BASICRESP* bs); -WOLFSSL_API const char* wolfSSL_OCSP_crl_reason_str(long s); - -WOLFSSL_API int wolfSSL_OCSP_id_get0_info(WOLFSSL_ASN1_STRING**, - WOLFSSL_ASN1_OBJECT**, WOLFSSL_ASN1_STRING**, - WOLFSSL_ASN1_INTEGER**, WOLFSSL_OCSP_CERTID*); - -WOLFSSL_API int wolfSSL_OCSP_request_add1_nonce(OcspRequest* req, - unsigned char* val, int sz); -WOLFSSL_API int wolfSSL_OCSP_check_nonce(OcspRequest* req, - WOLFSSL_OCSP_BASICRESP* bs); -#endif - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* HAVE_OCSP */ -#endif /* WOLFSSL_OCSP_H */ - - diff --git a/client/wolfssl/wolfssl/openssl/aes.h b/client/wolfssl/wolfssl/openssl/aes.h deleted file mode 100644 index de9f5b8..0000000 --- a/client/wolfssl/wolfssl/openssl/aes.h +++ /dev/null @@ -1,111 +0,0 @@ -/* aes.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -/* aes.h defines mini des openssl compatibility layer - * - */ - - -#ifndef WOLFSSL_AES_H_ -#define WOLFSSL_AES_H_ - -#include <wolfssl/wolfcrypt/settings.h> - -#ifndef NO_AES -#include <wolfssl/openssl/ssl.h> /* for size_t */ - -#ifdef __cplusplus - extern "C" { -#endif - -/* This structure wrapper is done because there is no aes_new function with - * OpenSSL compatibility layer. This makes code working with an AES structure - * to need the size of the structure. */ -typedef struct WOLFSSL_AES_KEY { - /* aligned and big enough for Aes from wolfssl/wolfcrypt/aes.h */ - ALIGN16 void* holder[(376 + WC_ASYNC_DEV_SIZE)/ sizeof(void*)]; - #ifdef GCM_TABLE - /* key-based fast multiplication table. */ - ALIGN16 void* M0[4096 / sizeof(void*)]; - #endif /* GCM_TABLE */ - #if defined(WOLFSSL_DEVCRYPTO) && \ - (defined(WOLFSSL_DEVCRYPTO_AES) || defined(WOLFSSL_DEVCRYPTO_CBC)) - /* large enough for additional devcrypto information */ - void* devKey[288 / sizeof(void*)]; - #endif - #ifdef WOLFSSL_AFALG - void* afalg_holder[288 / sizeof(void*)]; - #endif - #ifdef HAVE_PKCS11 - void* pkcs11_holder[(AES_MAX_ID_LEN + sizeof(int)) / sizeof(void*)]; - #endif - #if defined(WOLFSSL_ASYNC_CRYPT) || defined(WOLF_CRYPTO_CB) - void* async_holder[128 / sizeof(void*)]; - #endif -} WOLFSSL_AES_KEY; -typedef WOLFSSL_AES_KEY AES_KEY; - -WOLFSSL_API int wolfSSL_AES_set_encrypt_key - (const unsigned char *, const int bits, AES_KEY *); -WOLFSSL_API int wolfSSL_AES_set_decrypt_key - (const unsigned char *, const int bits, AES_KEY *); -WOLFSSL_API void wolfSSL_AES_cbc_encrypt - (const unsigned char *in, unsigned char* out, size_t len, - AES_KEY *key, unsigned char* iv, const int enc); -WOLFSSL_API void wolfSSL_AES_ecb_encrypt - (const unsigned char *in, unsigned char* out, - AES_KEY *key, const int enc); -WOLFSSL_API void wolfSSL_AES_cfb128_encrypt - (const unsigned char *in, unsigned char* out, size_t len, - AES_KEY *key, unsigned char* iv, int* num, const int enc); - -#define AES_cbc_encrypt wolfSSL_AES_cbc_encrypt -#define AES_ecb_encrypt wolfSSL_AES_ecb_encrypt -#define AES_cfb128_encrypt wolfSSL_AES_cfb128_encrypt -#define AES_set_encrypt_key wolfSSL_AES_set_encrypt_key -#define AES_set_decrypt_key wolfSSL_AES_set_decrypt_key - -#ifdef WOLFSSL_AES_DIRECT -WOLFSSL_API void wolfSSL_AES_encrypt - (const unsigned char* input, unsigned char* output, AES_KEY *); -WOLFSSL_API void wolfSSL_AES_decrypt - (const unsigned char* input, unsigned char* output, AES_KEY *); - -#define AES_encrypt wolfSSL_AES_encrypt -#define AES_decrypt wolfSSL_AES_decrypt -#endif /* HAVE_AES_DIRECT */ - -#ifndef AES_ENCRYPT -#define AES_ENCRYPT AES_ENCRYPTION -#endif -#ifndef AES_DECRYPT -#define AES_DECRYPT AES_DECRYPTION -#endif - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* NO_AES */ - -#endif /* WOLFSSL_AES_H_ */ diff --git a/client/wolfssl/wolfssl/openssl/asn1.h b/client/wolfssl/wolfssl/openssl/asn1.h deleted file mode 100644 index 0566ceb..0000000 --- a/client/wolfssl/wolfssl/openssl/asn1.h +++ /dev/null @@ -1,152 +0,0 @@ -/* asn1.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* asn1.h for openssl */ - -#ifndef WOLFSSL_ASN1_H_ -#define WOLFSSL_ASN1_H_ - -#include <wolfssl/openssl/ssl.h> - -#define ASN1_STRING_new wolfSSL_ASN1_STRING_new -#define ASN1_STRING_type_new wolfSSL_ASN1_STRING_type_new -#define ASN1_STRING_type wolfSSL_ASN1_STRING_type -#define ASN1_STRING_set wolfSSL_ASN1_STRING_set -#define ASN1_STRING_free wolfSSL_ASN1_STRING_free - -#define V_ASN1_INTEGER 0x02 -#define V_ASN1_OCTET_STRING 0x04 /* tag for ASN1_OCTET_STRING */ -#define V_ASN1_NEG 0x100 -#define V_ASN1_NEG_INTEGER (2 | V_ASN1_NEG) -#define V_ASN1_NEG_ENUMERATED (10 | V_ASN1_NEG) - -/* Type for ASN1_print_ex */ -# define ASN1_STRFLGS_ESC_2253 1 -# define ASN1_STRFLGS_ESC_CTRL 2 -# define ASN1_STRFLGS_ESC_MSB 4 -# define ASN1_STRFLGS_ESC_QUOTE 8 -# define ASN1_STRFLGS_UTF8_CONVERT 0x10 -# define ASN1_STRFLGS_IGNORE_TYPE 0x20 -# define ASN1_STRFLGS_SHOW_TYPE 0x40 -# define ASN1_STRFLGS_DUMP_ALL 0x80 -# define ASN1_STRFLGS_DUMP_UNKNOWN 0x100 -# define ASN1_STRFLGS_DUMP_DER 0x200 -# define ASN1_STRFLGS_RFC2253 (ASN1_STRFLGS_ESC_2253 | \ - ASN1_STRFLGS_ESC_CTRL | \ - ASN1_STRFLGS_ESC_MSB | \ - ASN1_STRFLGS_UTF8_CONVERT | \ - ASN1_STRFLGS_DUMP_UNKNOWN | \ - ASN1_STRFLGS_DUMP_DER) - -#define MBSTRING_UTF8 0x1000 -#define MBSTRING_ASC 0x1001 -#define MBSTRING_BMP 0x1002 -#define MBSTRING_UNIV 0x1004 - -#define ASN1_UTCTIME_print wolfSSL_ASN1_UTCTIME_print -#define ASN1_TIME_check wolfSSL_ASN1_TIME_check -#define ASN1_TIME_diff wolfSSL_ASN1_TIME_diff -#define ASN1_TIME_set wolfSSL_ASN1_TIME_set - -#define V_ASN1_OBJECT 6 -#define V_ASN1_UTCTIME 23 -#define V_ASN1_GENERALIZEDTIME 24 - -#define ASN1_STRING_FLAG_BITS_LEFT 0x008 -#define ASN1_STRING_FLAG_NDEF 0x010 -#define ASN1_STRING_FLAG_CONT 0x020 -#define ASN1_STRING_FLAG_MSTRING 0x040 -#define ASN1_STRING_FLAG_EMBED 0x080 - - -WOLFSSL_API WOLFSSL_ASN1_INTEGER *wolfSSL_BN_to_ASN1_INTEGER( - const WOLFSSL_BIGNUM*, WOLFSSL_ASN1_INTEGER*); - -WOLFSSL_API void wolfSSL_ASN1_TYPE_set(WOLFSSL_ASN1_TYPE *a, int type, void *value); - -#ifdef OPENSSL_ALL -/* IMPLEMENT_ASN1_FUNCTIONS is strictly for external use only. Internally - * we don't use this. Some projects use OpenSSL to implement ASN1 types and - * this section is only to provide those projects with ASN1 functionality. */ -typedef struct { - size_t offset; /* Offset of this field in structure */ - byte type; /* The type of the member as defined in - * WOLFSSL_ASN1_TYPES */ -} WOLFSSL_ASN1_TEMPLATE; - -typedef struct { - byte type; /* One of the ASN_Tags types */ - const WOLFSSL_ASN1_TEMPLATE *members; /* If SEQUENCE or CHOICE this - * contains the contents */ - size_t mcount; /* Number of members if SEQUENCE - * or CHOICE */ - size_t size; /* Structure size */ -} WOLFSSL_ASN1_ITEM; - -typedef enum { - WOLFSSL_X509_ALGOR_ASN1 = 0, - WOLFSSL_ASN1_BIT_STRING_ASN1, -} WOLFSSL_ASN1_TYPES; - -#define ASN1_SEQUENCE(type) \ - static const type __##type##_dummy_struct;\ - static const WOLFSSL_ASN1_TEMPLATE type##_member_data[] - -#define ASN1_SIMPLE(type, member, member_type) \ - { (char*)&__##type##_dummy_struct.member - (char*)&__##type##_dummy_struct, \ - WOLFSSL_##member_type##_ASN1 } - -#define ASN1_SEQUENCE_END(type) \ - ; \ - const WOLFSSL_ASN1_ITEM type##_template_data = { \ - ASN_SEQUENCE, \ - type##_member_data, \ - sizeof(type##_member_data) / sizeof(WOLFSSL_ASN1_TEMPLATE), \ - sizeof(type) \ - }; - -WOLFSSL_API void *wolfSSL_ASN1_item_new(const WOLFSSL_ASN1_ITEM *template); -WOLFSSL_API void wolfSSL_ASN1_item_free(void *val, const WOLFSSL_ASN1_ITEM *template); -WOLFSSL_API int wolfSSL_ASN1_item_i2d(const void *src, byte **dest, - const WOLFSSL_ASN1_ITEM *template); - -/* Need function declaration otherwise compiler complains */ -#define IMPLEMENT_ASN1_FUNCTIONS(type) \ - type *type##_new(void); \ - type *type##_new(void){ \ - return (type*)wolfSSL_ASN1_item_new(&type##_template_data); \ - } \ - void type##_free(type *t); \ - void type##_free(type *t){ \ - wolfSSL_ASN1_item_free(t, &type##_template_data); \ - } \ - int i2d_##type(type *src, byte **dest); \ - int i2d_##type(type *src, byte **dest) \ - { \ - return wolfSSL_ASN1_item_i2d(src, dest, &type##_template_data);\ - } - -#endif /* OPENSSL_ALL */ - -#define BN_to_ASN1_INTEGER wolfSSL_BN_to_ASN1_INTEGER -#define ASN1_TYPE_set wolfSSL_ASN1_TYPE_set - -#endif /* WOLFSSL_ASN1_H_ */ diff --git a/client/wolfssl/wolfssl/openssl/asn1t.h b/client/wolfssl/wolfssl/openssl/asn1t.h deleted file mode 100644 index 0ee58a2..0000000 --- a/client/wolfssl/wolfssl/openssl/asn1t.h +++ /dev/null @@ -1,30 +0,0 @@ -/* asn1t.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* asn1t.h for openssl */ - -#ifndef WOLFSSL_ASN1T_H_ -#define WOLFSSL_ASN1T_H_ - -#include <wolfssl/wolfcrypt/asn.h> -#include <wolfssl/openssl/asn1.h> - -#endif /* WOLFSSL_ASN1T_H_ */ diff --git a/client/wolfssl/wolfssl/openssl/bio.h b/client/wolfssl/wolfssl/openssl/bio.h deleted file mode 100644 index 1eb55b1..0000000 --- a/client/wolfssl/wolfssl/openssl/bio.h +++ /dev/null @@ -1,164 +0,0 @@ -/* bio.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* bio.h for openssl */ - - -#ifndef WOLFSSL_BIO_H_ -#define WOLFSSL_BIO_H_ - -#include <wolfssl/openssl/ssl.h> - - -#ifdef __cplusplus - extern "C" { -#endif - - -#define BIO_FLAG_BASE64_NO_NL WOLFSSL_BIO_FLAG_BASE64_NO_NL -#define BIO_FLAG_READ WOLFSSL_BIO_FLAG_READ -#define BIO_FLAG_WRITE WOLFSSL_BIO_FLAG_WRITE -#define BIO_FLAG_IO_SPECIAL WOLFSSL_BIO_FLAG_IO_SPECIAL -#define BIO_FLAG_RETRY WOLFSSL_BIO_FLAG_RETRY - -#define BIO_new_fp wolfSSL_BIO_new_fp -#define BIO_new_file wolfSSL_BIO_new_file -#define BIO_new_fp wolfSSL_BIO_new_fp -#define BIO_ctrl wolfSSL_BIO_ctrl -#define BIO_ctrl_pending wolfSSL_BIO_ctrl_pending -#define BIO_wpending wolfSSL_BIO_wpending -#define BIO_get_mem_ptr wolfSSL_BIO_get_mem_ptr -#define BIO_int_ctrl wolfSSL_BIO_int_ctrl -#define BIO_reset wolfSSL_BIO_reset -#define BIO_s_file wolfSSL_BIO_s_file -#define BIO_s_bio wolfSSL_BIO_s_bio -#define BIO_s_socket wolfSSL_BIO_s_socket -#define BIO_set_fd wolfSSL_BIO_set_fd -#define BIO_set_close wolfSSL_BIO_set_close -#define BIO_ctrl_reset_read_request wolfSSL_BIO_ctrl_reset_read_request -#define BIO_set_write_buf_size wolfSSL_BIO_set_write_buf_size -#define BIO_make_bio_pair wolfSSL_BIO_make_bio_pair - -#define BIO_set_fp wolfSSL_BIO_set_fp -#define BIO_get_fp wolfSSL_BIO_get_fp -#define BIO_seek wolfSSL_BIO_seek -#define BIO_write_filename wolfSSL_BIO_write_filename -#define BIO_set_mem_eof_return wolfSSL_BIO_set_mem_eof_return - -#define BIO_find_type wolfSSL_BIO_find_type -#define BIO_next wolfSSL_BIO_next -#define BIO_gets wolfSSL_BIO_gets -#define BIO_puts wolfSSL_BIO_puts - -#define BIO_should_retry wolfSSL_BIO_should_retry - -#define BIO_TYPE_FILE WOLFSSL_BIO_FILE -#define BIO_TYPE_BIO WOLFSSL_BIO_BIO -#define BIO_TYPE_MEM WOLFSSL_BIO_MEMORY -#define BIO_TYPE_BASE64 WOLFSSL_BIO_BASE64 - -#define BIO_vprintf wolfSSL_BIO_vprintf -#define BIO_printf wolfSSL_BIO_printf -#define BIO_dump wolfSSL_BIO_dump - -/* BIO info callback */ -#define BIO_CB_FREE WOLFSSL_BIO_CB_FREE -#define BIO_CB_READ WOLFSSL_BIO_CB_READ -#define BIO_CB_WRITE WOLFSSL_BIO_CB_WRITE -#define BIO_CB_PUTS WOLFSSL_BIO_CB_PUTS -#define BIO_CB_GETS WOLFSSL_BIO_CB_GETS -#define BIO_CB_CTRL WOLFSSL_BIO_CB_CTRL -#define BIO_CB_RETURN WOLFSSL_BIO_CB_RETURN - -#define BIO_set_callback wolfSSL_BIO_set_callback -#define BIO_get_callback wolfSSL_BIO_get_callback -#define BIO_set_callback_arg wolfSSL_BIO_set_callback_arg -#define BIO_get_callback_arg wolfSSL_BIO_get_callback_arg - -/* BIO for 1.1.0 or later */ -#define BIO_set_init wolfSSL_BIO_set_init -#define BIO_get_data wolfSSL_BIO_get_data -#define BIO_set_data wolfSSL_BIO_set_data -#define BIO_get_shutdown wolfSSL_BIO_get_shutdown -#define BIO_set_shutdown wolfSSL_BIO_set_shutdown - -#define BIO_clear_flags wolfSSL_BIO_clear_flags -#define BIO_set_ex_data wolfSSL_BIO_set_ex_data -#define BIO_get_ex_data wolfSSL_BIO_get_ex_data - -/* helper to set specific retry/read flags */ -#define BIO_set_retry_read(bio)\ - wolfSSL_BIO_set_flags((bio), WOLFSSL_BIO_FLAG_RETRY | WOLFSSL_BIO_FLAG_READ) -#define BIO_set_retry_write(bio)\ - wolfSSL_BIO_set_flags((bio), WOLFSSL_BIO_FLAG_RETRY | WOLFSSL_BIO_FLAG_WRITE) - -#define BIO_clear_retry_flags wolfSSL_BIO_clear_retry_flags - -#define BIO_meth_new wolfSSL_BIO_meth_new -#define BIO_meth_set_write wolfSSL_BIO_meth_set_write -#define BIO_meth_free wolfSSL_BIO_meth_free -#define BIO_meth_set_write wolfSSL_BIO_meth_set_write -#define BIO_meth_set_read wolfSSL_BIO_meth_set_read -#define BIO_meth_set_puts wolfSSL_BIO_meth_set_puts -#define BIO_meth_set_gets wolfSSL_BIO_meth_set_gets -#define BIO_meth_set_ctrl wolfSSL_BIO_meth_set_ctrl -#define BIO_meth_set_create wolfSSL_BIO_meth_set_create -#define BIO_meth_set_destroy wolfSSL_BIO_meth_set_destroy - - -/* BIO CTRL */ -#define BIO_CTRL_RESET 1 -#define BIO_CTRL_EOF 2 -#define BIO_CTRL_INFO 3 -#define BIO_CTRL_PUSH 6 -#define BIO_CTRL_POP 7 -#define BIO_CTRL_GET_CLOSE 8 -#define BIO_CTRL_SET_CLOSE 9 -#define BIO_CTRL_PENDING 10 -#define BIO_CTRL_FLUSH 11 -#define BIO_CTRL_DUP 12 -#define BIO_CTRL_WPENDING 13 - -#define BIO_C_SET_FILE_PTR 106 -#define BIO_C_GET_FILE_PTR 107 -#define BIO_C_SET_FILENAME 108 -#define BIO_C_SET_BUF_MEM 114 -#define BIO_C_GET_BUF_MEM_PTR 115 -#define BIO_C_FILE_SEEK 128 -#define BIO_C_SET_BUF_MEM_EOF_RETURN 130 -#define BIO_C_SET_WRITE_BUF_SIZE 136 -#define BIO_C_MAKE_BIO_PAIR 138 - -#define BIO_CTRL_DGRAM_QUERY_MTU 40 - -#define BIO_NOCLOSE 0x00 -#define BIO_CLOSE 0x01 - -#define BIO_FP_WRITE 0x04 - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* WOLFSSL_BIO_H_ */ - diff --git a/client/wolfssl/wolfssl/openssl/bn.h b/client/wolfssl/wolfssl/openssl/bn.h deleted file mode 100644 index 312954d..0000000 --- a/client/wolfssl/wolfssl/openssl/bn.h +++ /dev/null @@ -1,226 +0,0 @@ -/* bn.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* bn.h for openssl */ - -/*! - \file wolfssl/openssl/bn.h - \brief bn.h for openssl -*/ - - -#ifndef WOLFSSL_BN_H_ -#define WOLFSSL_BN_H_ - -#include <wolfssl/wolfcrypt/settings.h> -#include <wolfssl/wolfcrypt/integer.h> - -#ifdef __cplusplus - extern "C" { -#endif - -typedef struct WOLFSSL_BIGNUM { - int neg; /* openssh deference */ - void *internal; /* our big num */ -#ifdef WOLFSSL_SP_MATH - sp_int fp; -#elif defined(USE_FAST_MATH) && !defined(HAVE_WOLF_BIGINT) - fp_int fp; -#endif -} WOLFSSL_BIGNUM; - - -#define BN_ULONG WOLFSSL_BN_ULONG -#define WOLFSSL_BN_ULONG mp_digit - -typedef struct WOLFSSL_BN_CTX WOLFSSL_BN_CTX; -typedef struct WOLFSSL_BN_GENCB WOLFSSL_BN_GENCB; - -WOLFSSL_API WOLFSSL_BN_CTX* wolfSSL_BN_CTX_new(void); -WOLFSSL_API void wolfSSL_BN_CTX_init(WOLFSSL_BN_CTX*); -WOLFSSL_API void wolfSSL_BN_CTX_free(WOLFSSL_BN_CTX*); - -WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_BN_new(void); -#if defined(USE_FAST_MATH) && !defined(HAVE_WOLF_BIGINT) -WOLFSSL_API void wolfSSL_BN_init(WOLFSSL_BIGNUM *); -#endif -WOLFSSL_API void wolfSSL_BN_free(WOLFSSL_BIGNUM*); -WOLFSSL_API void wolfSSL_BN_clear_free(WOLFSSL_BIGNUM*); -WOLFSSL_API void wolfSSL_BN_clear(WOLFSSL_BIGNUM*); - - -WOLFSSL_API int wolfSSL_BN_sub(WOLFSSL_BIGNUM*, const WOLFSSL_BIGNUM*, - const WOLFSSL_BIGNUM*); -WOLFSSL_API int wolfSSL_BN_mod(WOLFSSL_BIGNUM*, const WOLFSSL_BIGNUM*, - const WOLFSSL_BIGNUM*, const WOLFSSL_BN_CTX*); -WOLFSSL_API int wolfSSL_BN_mod_exp(WOLFSSL_BIGNUM *r, const WOLFSSL_BIGNUM *a, - const WOLFSSL_BIGNUM *p, const WOLFSSL_BIGNUM *m, WOLFSSL_BN_CTX *ctx); -WOLFSSL_API int wolfSSL_BN_mod_mul(WOLFSSL_BIGNUM *r, const WOLFSSL_BIGNUM *a, - const WOLFSSL_BIGNUM *b, const WOLFSSL_BIGNUM *m, WOLFSSL_BN_CTX *ctx); -WOLFSSL_API const WOLFSSL_BIGNUM* wolfSSL_BN_value_one(void); - - -WOLFSSL_API int wolfSSL_BN_num_bytes(const WOLFSSL_BIGNUM*); -WOLFSSL_API int wolfSSL_BN_num_bits(const WOLFSSL_BIGNUM*); - -WOLFSSL_API int wolfSSL_BN_is_zero(const WOLFSSL_BIGNUM*); -WOLFSSL_API int wolfSSL_BN_is_one(const WOLFSSL_BIGNUM*); -WOLFSSL_API int wolfSSL_BN_is_odd(const WOLFSSL_BIGNUM*); -WOLFSSL_API int wolfSSL_BN_is_negative(const WOLFSSL_BIGNUM*); -WOLFSSL_API int wolfSSL_BN_is_word(const WOLFSSL_BIGNUM*, WOLFSSL_BN_ULONG); - -WOLFSSL_API int wolfSSL_BN_cmp(const WOLFSSL_BIGNUM*, const WOLFSSL_BIGNUM*); - -WOLFSSL_API int wolfSSL_BN_bn2bin(const WOLFSSL_BIGNUM*, unsigned char*); -WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_BN_bin2bn(const unsigned char*, int len, - WOLFSSL_BIGNUM* ret); - -WOLFSSL_API int wolfSSL_mask_bits(WOLFSSL_BIGNUM*, int n); - -WOLFSSL_API int wolfSSL_BN_pseudo_rand(WOLFSSL_BIGNUM*, int bits, int top, - int bottom); -WOLFSSL_API int wolfSSL_BN_rand(WOLFSSL_BIGNUM*, int bits, int top, int bottom); -WOLFSSL_API int wolfSSL_BN_is_bit_set(const WOLFSSL_BIGNUM*, int n); -WOLFSSL_API int wolfSSL_BN_hex2bn(WOLFSSL_BIGNUM**, const char* str); - -WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_BN_dup(const WOLFSSL_BIGNUM*); -WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_BN_copy(WOLFSSL_BIGNUM*, - const WOLFSSL_BIGNUM*); - -WOLFSSL_API int wolfSSL_BN_dec2bn(WOLFSSL_BIGNUM**, const char* str); -WOLFSSL_API char* wolfSSL_BN_bn2dec(const WOLFSSL_BIGNUM*); - -WOLFSSL_API int wolfSSL_BN_lshift(WOLFSSL_BIGNUM*, const WOLFSSL_BIGNUM*, int); -WOLFSSL_API int wolfSSL_BN_add_word(WOLFSSL_BIGNUM*, WOLFSSL_BN_ULONG); -WOLFSSL_API int wolfSSL_BN_set_bit(WOLFSSL_BIGNUM*, int); -WOLFSSL_API int wolfSSL_BN_clear_bit(WOLFSSL_BIGNUM*, int); -WOLFSSL_API int wolfSSL_BN_set_word(WOLFSSL_BIGNUM*, WOLFSSL_BN_ULONG); -WOLFSSL_API unsigned long wolfSSL_BN_get_word(const WOLFSSL_BIGNUM*); - -WOLFSSL_API int wolfSSL_BN_add(WOLFSSL_BIGNUM*, WOLFSSL_BIGNUM*, - WOLFSSL_BIGNUM*); -WOLFSSL_API int wolfSSL_BN_mod_add(WOLFSSL_BIGNUM *r, const WOLFSSL_BIGNUM *a, - const WOLFSSL_BIGNUM *b, const WOLFSSL_BIGNUM *m, - WOLFSSL_BN_CTX *ctx); -WOLFSSL_API char *wolfSSL_BN_bn2hex(const WOLFSSL_BIGNUM*); -WOLFSSL_API int wolfSSL_BN_is_prime_ex(const WOLFSSL_BIGNUM*, int, - WOLFSSL_BN_CTX*, WOLFSSL_BN_GENCB*); -WOLFSSL_API WOLFSSL_BN_ULONG wolfSSL_BN_mod_word(const WOLFSSL_BIGNUM*, - WOLFSSL_BN_ULONG); -#if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM) - WOLFSSL_API int wolfSSL_BN_print_fp(XFILE, const WOLFSSL_BIGNUM*); -#endif -WOLFSSL_API int wolfSSL_BN_rshift(WOLFSSL_BIGNUM*, const WOLFSSL_BIGNUM*, int); -WOLFSSL_API WOLFSSL_BIGNUM *wolfSSL_BN_CTX_get(WOLFSSL_BN_CTX *ctx); -WOLFSSL_API void wolfSSL_BN_CTX_start(WOLFSSL_BN_CTX *ctx); -WOLFSSL_API WOLFSSL_BIGNUM *wolfSSL_BN_mod_inverse(WOLFSSL_BIGNUM*, WOLFSSL_BIGNUM*, - const WOLFSSL_BIGNUM*, WOLFSSL_BN_CTX *ctx); - -typedef WOLFSSL_BIGNUM BIGNUM; -typedef WOLFSSL_BN_CTX BN_CTX; -typedef WOLFSSL_BN_GENCB BN_GENCB; - -#define BN_CTX_new wolfSSL_BN_CTX_new -#define BN_CTX_init wolfSSL_BN_CTX_init -#define BN_CTX_free wolfSSL_BN_CTX_free - -#define BN_new wolfSSL_BN_new -#define BN_init wolfSSL_BN_init -#define BN_free wolfSSL_BN_free -#define BN_clear_free wolfSSL_BN_clear_free -#define BN_clear wolfSSL_BN_clear - -#define BN_num_bytes wolfSSL_BN_num_bytes -#define BN_num_bits wolfSSL_BN_num_bits - -#define BN_is_zero wolfSSL_BN_is_zero -#define BN_is_one wolfSSL_BN_is_one -#define BN_is_odd wolfSSL_BN_is_odd -#define BN_is_negative wolfSSL_BN_is_negative -#define BN_is_word wolfSSL_BN_is_word - -#define BN_cmp wolfSSL_BN_cmp - -#define BN_bn2bin wolfSSL_BN_bn2bin -#define BN_bin2bn wolfSSL_BN_bin2bn - -#define BN_mod wolfSSL_BN_mod -#define BN_mod_exp wolfSSL_BN_mod_exp -#define BN_mod_mul wolfSSL_BN_mod_mul -#define BN_sub wolfSSL_BN_sub -#define BN_value_one wolfSSL_BN_value_one - -#define BN_mask_bits wolfSSL_mask_bits - -#define BN_pseudo_rand wolfSSL_BN_pseudo_rand -#define BN_rand wolfSSL_BN_rand -#define BN_is_bit_set wolfSSL_BN_is_bit_set -#define BN_hex2bn wolfSSL_BN_hex2bn - -#define BN_dup wolfSSL_BN_dup -#define BN_copy wolfSSL_BN_copy - -#define BN_get_word wolfSSL_BN_get_word -#define BN_set_word wolfSSL_BN_set_word - -#define BN_dec2bn wolfSSL_BN_dec2bn -#define BN_bn2dec wolfSSL_BN_bn2dec -#define BN_bn2hex wolfSSL_BN_bn2hex - -#define BN_lshift wolfSSL_BN_lshift -#define BN_add_word wolfSSL_BN_add_word -#define BN_add wolfSSL_BN_add -#define BN_mod_add wolfSSL_BN_mod_add -#define BN_set_word wolfSSL_BN_set_word -#define BN_set_bit wolfSSL_BN_set_bit -#define BN_clear_bit wolfSSL_BN_clear_bit - - -#define BN_is_prime_ex wolfSSL_BN_is_prime_ex -#define BN_print_fp wolfSSL_BN_print_fp -#define BN_rshift wolfSSL_BN_rshift -#define BN_mod_word wolfSSL_BN_mod_word - -#define BN_CTX_get wolfSSL_BN_CTX_get -#define BN_CTX_start wolfSSL_BN_CTX_start - -#define BN_mod_inverse wolfSSL_BN_mod_inverse - -#define BN_set_flags(x1, x2) - -#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000L -#define BN_get_rfc2409_prime_768 wolfSSL_DH_768_prime -#define BN_get_rfc2409_prime_1024 wolfSSL_DH_1024_prime -#define BN_get_rfc3526_prime_1536 wolfSSL_DH_1536_prime -#define BN_get_rfc3526_prime_2048 wolfSSL_DH_2048_prime -#define BN_get_rfc3526_prime_3072 wolfSSL_DH_3072_prime -#define BN_get_rfc3526_prime_4096 wolfSSL_DH_4096_prime -#define BN_get_rfc3526_prime_6144 wolfSSL_DH_6144_prime -#define BN_get_rfc3526_prime_8192 wolfSSL_DH_8192_prime -#endif - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* WOLFSSL__H_ */ diff --git a/client/wolfssl/wolfssl/openssl/buffer.h b/client/wolfssl/wolfssl/openssl/buffer.h deleted file mode 100644 index 8e0a730..0000000 --- a/client/wolfssl/wolfssl/openssl/buffer.h +++ /dev/null @@ -1,47 +0,0 @@ -/* buffer.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLFSSL_BUFFER_H_ -#define WOLFSSL_BUFFER_H_ - -#include <wolfssl/wolfcrypt/settings.h> -#include <wolfssl/openssl/ssl.h> - -#ifdef __cplusplus - extern "C" { -#endif - - -WOLFSSL_API WOLFSSL_BUF_MEM* wolfSSL_BUF_MEM_new(void); -WOLFSSL_API int wolfSSL_BUF_MEM_grow(WOLFSSL_BUF_MEM* buf, size_t len); -WOLFSSL_API void wolfSSL_BUF_MEM_free(WOLFSSL_BUF_MEM* buf); - - -#define BUF_MEM_new wolfSSL_BUF_MEM_new -#define BUF_MEM_grow wolfSSL_BUF_MEM_grow -#define BUF_MEM_free wolfSSL_BUF_MEM_free - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_BUFFER_H_ */ diff --git a/client/wolfssl/wolfssl/openssl/conf.h b/client/wolfssl/wolfssl/openssl/conf.h deleted file mode 100644 index 373239f..0000000 --- a/client/wolfssl/wolfssl/openssl/conf.h +++ /dev/null @@ -1,48 +0,0 @@ -/* conf.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* conf.h for openSSL */ - -#ifndef WOLFSSL_conf_H_ -#define WOLFSSL_conf_H_ - -#ifdef __cplusplus - extern "C" { -#endif - -struct WOLFSSL_CONF_VALUE { - char *section; - char *name; - char *value; -}; - -struct WOLFSSL_INIT_SETTINGS { - char* appname; -}; - -typedef struct WOLFSSL_CONF_VALUE CONF_VALUE; -typedef struct WOLFSSL_INIT_SETTINGS OPENSSL_INIT_SETTINGS; - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* WOLFSSL_conf_H_ */ diff --git a/client/wolfssl/wolfssl/openssl/crypto.h b/client/wolfssl/wolfssl/openssl/crypto.h deleted file mode 100644 index fe2bb7d..0000000 --- a/client/wolfssl/wolfssl/openssl/crypto.h +++ /dev/null @@ -1,91 +0,0 @@ -/* crypto.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* crypto.h for openSSL */ - -#ifndef WOLFSSL_CRYPTO_H_ -#define WOLFSSL_CRYPTO_H_ - -#include <wolfssl/openssl/opensslv.h> - -#include <wolfssl/wolfcrypt/settings.h> - -#ifdef WOLFSSL_PREFIX -#include "prefix_crypto.h" -#endif - - -WOLFSSL_API const char* wolfSSLeay_version(int type); -WOLFSSL_API unsigned long wolfSSLeay(void); -WOLFSSL_API unsigned long wolfSSL_OpenSSL_version_num(void); - -#ifdef OPENSSL_EXTRA -WOLFSSL_API void wolfSSL_OPENSSL_free(void*); -WOLFSSL_API void *wolfSSL_OPENSSL_malloc(size_t a); -#endif - -#define CRYPTO_THREADID void - -#define SSLeay_version wolfSSLeay_version -#define SSLeay wolfSSLeay -#define OpenSSL_version_num wolfSSL_OpenSSL_version_num - -#ifdef WOLFSSL_QT - #define SSLEAY_VERSION 0x10001000L -#else - #define SSLEAY_VERSION 0x0090600fL -#endif -#define SSLEAY_VERSION_NUMBER SSLEAY_VERSION -#define CRYPTO_lock wc_LockMutex_ex - -/* this function was used to set the default malloc, free, and realloc */ -#define CRYPTO_malloc_init() 0 /* CRYPTO_malloc_init is not needed */ - -#define OPENSSL_free wolfSSL_OPENSSL_free -#define OPENSSL_malloc wolfSSL_OPENSSL_malloc - -#ifdef WOLFSSL_QT - #define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L - #define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L - #define OPENSSL_INIT_LOAD_CONFIG 0x00000040L -#endif - -#if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) || \ - defined(WOLFSSL_HAPROXY) || defined(OPENSSL_EXTRA) -#define CRYPTO_set_mem_ex_functions wolfSSL_CRYPTO_set_mem_ex_functions -#define FIPS_mode wolfSSL_FIPS_mode -#define FIPS_mode_set wolfSSL_FIPS_mode_set -typedef struct CRYPTO_EX_DATA CRYPTO_EX_DATA; -typedef void (CRYPTO_free_func)(void*parent, void*ptr, CRYPTO_EX_DATA *ad, int idx, - long argl, void* argp); -#define CRYPTO_THREADID_set_callback wolfSSL_THREADID_set_callback -#define CRYPTO_THREADID_set_numeric wolfSSL_THREADID_set_numeric - -#define CRYPTO_r_lock wc_LockMutex_ex -#define CRYPTO_unlock wc_LockMutex_ex - -#define CRYPTO_THREAD_lock wc_LockMutex -#define CRYPTO_THREAD_r_lock wc_LockMutex -#define CRYPTO_THREAD_unlock wc_UnLockMutex - -#endif /* OPENSSL_ALL || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY */ - -#endif /* header */ diff --git a/client/wolfssl/wolfssl/openssl/des.h b/client/wolfssl/wolfssl/openssl/des.h deleted file mode 100644 index 14d12ec..0000000 --- a/client/wolfssl/wolfssl/openssl/des.h +++ /dev/null @@ -1,115 +0,0 @@ -/* des.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -/* des.h defines mini des openssl compatibility layer - * - */ - - -#ifndef WOLFSSL_DES_H_ -#define WOLFSSL_DES_H_ - -#include <wolfssl/wolfcrypt/settings.h> - -#ifndef NO_DES3 - -#ifdef WOLFSSL_PREFIX -#include "prefix_des.h" -#endif - - -#ifdef __cplusplus - extern "C" { -#endif - -typedef unsigned char WOLFSSL_DES_cblock[8]; -typedef /* const */ WOLFSSL_DES_cblock WOLFSSL_const_DES_cblock; -typedef WOLFSSL_DES_cblock WOLFSSL_DES_key_schedule; -typedef unsigned int WOLFSSL_DES_LONG; - - -enum { - DES_ENCRYPT = 1, - DES_DECRYPT = 0 -}; - - -WOLFSSL_API int wolfSSL_DES_is_weak_key(WOLFSSL_const_DES_cblock* key); -WOLFSSL_API WOLFSSL_DES_LONG wolfSSL_DES_cbc_cksum(const unsigned char* in, - WOLFSSL_DES_cblock* out, long length, WOLFSSL_DES_key_schedule* sc, - WOLFSSL_const_DES_cblock* iv); -WOLFSSL_API int wolfSSL_DES_set_key(WOLFSSL_const_DES_cblock* myDes, - WOLFSSL_DES_key_schedule* key); -WOLFSSL_API int wolfSSL_DES_set_key_checked(WOLFSSL_const_DES_cblock* myDes, - WOLFSSL_DES_key_schedule* key); -WOLFSSL_API void wolfSSL_DES_set_key_unchecked(WOLFSSL_const_DES_cblock*, - WOLFSSL_DES_key_schedule*); -WOLFSSL_API int wolfSSL_DES_key_sched(WOLFSSL_const_DES_cblock* key, - WOLFSSL_DES_key_schedule* schedule); -WOLFSSL_API void wolfSSL_DES_cbc_encrypt(const unsigned char* input, - unsigned char* output, long length, - WOLFSSL_DES_key_schedule* schedule, WOLFSSL_DES_cblock* ivec, - int enc); -WOLFSSL_API void wolfSSL_DES_ede3_cbc_encrypt(const unsigned char* input, - unsigned char* output, long sz, - WOLFSSL_DES_key_schedule* ks1, - WOLFSSL_DES_key_schedule* ks2, - WOLFSSL_DES_key_schedule* ks3, - WOLFSSL_DES_cblock* ivec, int enc); -WOLFSSL_API void wolfSSL_DES_ncbc_encrypt(const unsigned char* input, - unsigned char* output, long length, - WOLFSSL_DES_key_schedule* schedule, - WOLFSSL_DES_cblock* ivec, int enc); - -WOLFSSL_API void wolfSSL_DES_set_odd_parity(WOLFSSL_DES_cblock*); -WOLFSSL_API void wolfSSL_DES_ecb_encrypt(WOLFSSL_DES_cblock*, WOLFSSL_DES_cblock*, - WOLFSSL_DES_key_schedule*, int); -WOLFSSL_API int wolfSSL_DES_check_key_parity(WOLFSSL_DES_cblock*); - - -typedef WOLFSSL_DES_cblock DES_cblock; -typedef WOLFSSL_const_DES_cblock const_DES_cblock; -typedef WOLFSSL_DES_key_schedule DES_key_schedule; -typedef WOLFSSL_DES_LONG DES_LONG; - -#define DES_check_key(x) /* Define WOLFSSL_CHECK_DESKEY to check key */ -#define DES_is_weak_key wolfSSL_DES_is_weak_key -#define DES_set_key wolfSSL_DES_set_key -#define DES_set_key_checked wolfSSL_DES_set_key_checked -#define DES_set_key_unchecked wolfSSL_DES_set_key_unchecked -#define DES_key_sched wolfSSL_DES_key_sched -#define DES_cbc_encrypt wolfSSL_DES_cbc_encrypt -#define DES_ncbc_encrypt wolfSSL_DES_ncbc_encrypt -#define DES_set_odd_parity wolfSSL_DES_set_odd_parity -#define DES_ecb_encrypt wolfSSL_DES_ecb_encrypt -#define DES_ede3_cbc_encrypt wolfSSL_DES_ede3_cbc_encrypt -#define DES_cbc_cksum wolfSSL_DES_cbc_cksum -#define DES_check_key_parity wolfSSL_DES_check_key_parity - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* NO_DES3 */ - -#endif /* WOLFSSL_DES_H_ */ diff --git a/client/wolfssl/wolfssl/openssl/dh.h b/client/wolfssl/wolfssl/openssl/dh.h deleted file mode 100644 index ff021ed..0000000 --- a/client/wolfssl/wolfssl/openssl/dh.h +++ /dev/null @@ -1,115 +0,0 @@ -/* dh.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* dh.h for openSSL */ - - -#ifndef WOLFSSL_DH_H_ -#define WOLFSSL_DH_H_ - -#include <wolfssl/openssl/bn.h> - -#ifdef __cplusplus - extern "C" { -#endif - -#ifndef WOLFSSL_DH_TYPE_DEFINED /* guard on redeclaration */ -typedef struct WOLFSSL_DH WOLFSSL_DH; -#define WOLFSSL_DH_TYPE_DEFINED -#endif - -typedef WOLFSSL_DH DH; - -struct WOLFSSL_DH { - WOLFSSL_BIGNUM* p; - WOLFSSL_BIGNUM* g; - WOLFSSL_BIGNUM* q; - WOLFSSL_BIGNUM* pub_key; /* openssh deference g^x */ - WOLFSSL_BIGNUM* priv_key; /* openssh deference x */ - void* internal; /* our DH */ - char inSet; /* internal set from external ? */ - char exSet; /* external set from internal ? */ - /*added for lighttpd openssl compatibility, go back and add a getter in - * lighttpd src code. - */ - int length; -}; - -WOLFSSL_API WOLFSSL_DH *wolfSSL_d2i_DHparams(WOLFSSL_DH **dh, - const unsigned char **pp, long length); -WOLFSSL_API int wolfSSL_i2d_DHparams(const WOLFSSL_DH *dh, unsigned char **out); -WOLFSSL_API WOLFSSL_DH* wolfSSL_DH_new(void); -WOLFSSL_API void wolfSSL_DH_free(WOLFSSL_DH*); - -WOLFSSL_API int wolfSSL_DH_check(const WOLFSSL_DH *dh, int *codes); -WOLFSSL_API int wolfSSL_DH_size(WOLFSSL_DH*); -WOLFSSL_API int wolfSSL_DH_generate_key(WOLFSSL_DH*); -WOLFSSL_API int wolfSSL_DH_compute_key(unsigned char* key, WOLFSSL_BIGNUM* pub, - WOLFSSL_DH*); -WOLFSSL_API int wolfSSL_DH_LoadDer(WOLFSSL_DH*, const unsigned char*, int sz); -WOLFSSL_API int wolfSSL_DH_set0_pqg(WOLFSSL_DH*, WOLFSSL_BIGNUM*, - WOLFSSL_BIGNUM*, WOLFSSL_BIGNUM*); - -#define DH_new wolfSSL_DH_new -#define DH_free wolfSSL_DH_free - -#define d2i_DHparams wolfSSL_d2i_DHparams -#define i2d_DHparams wolfSSL_i2d_DHparams -#define DH_check wolfSSL_DH_check - -#define DH_size wolfSSL_DH_size -#define DH_generate_key wolfSSL_DH_generate_key -#define DH_compute_key wolfSSL_DH_compute_key -#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000L -#define DH_set0_pqg wolfSSL_DH_set0_pqg -#endif -#define DH_bits(x) (BN_num_bits(x->p)) - -#define DH_GENERATOR_2 2 -#define DH_CHECK_P_NOT_PRIME 0x01 -#define DH_CHECK_P_NOT_SAFE_PRIME 0x02 -#define DH_NOT_SUITABLE_GENERATOR 0x08 - -/* Temporary values for wolfSSL_DH_Check*/ -#define DH_CHECK_INVALID_Q_VALUE 0x10 -#define DH_CHECK_Q_NOT_PRIME 0x11 -/* end temp */ - -/* for pre 1.1.0 */ -#define get_rfc2409_prime_768 wolfSSL_DH_768_prime -#define get_rfc2409_prime_1024 wolfSSL_DH_1024_prime -#define get_rfc3526_prime_1536 wolfSSL_DH_1536_prime -#define get_rfc3526_prime_2048 wolfSSL_DH_2048_prime -#define get_rfc3526_prime_3072 wolfSSL_DH_3072_prime -#define get_rfc3526_prime_4096 wolfSSL_DH_4096_prime -#define get_rfc3526_prime_6144 wolfSSL_DH_6144_prime -#define get_rfc3526_prime_8192 wolfSSL_DH_8192_prime - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) -#define DH_generate_parameters wolfSSL_DH_generate_parameters -#define DH_generate_parameters_ex wolfSSL_DH_generate_parameters_ex -#endif /* OPENSSL_ALL || HAVE_STUNNEL */ - -#endif /* WOLFSSL_DH_H_ */ diff --git a/client/wolfssl/wolfssl/openssl/dsa.h b/client/wolfssl/wolfssl/openssl/dsa.h deleted file mode 100644 index 9267cf4..0000000 --- a/client/wolfssl/wolfssl/openssl/dsa.h +++ /dev/null @@ -1,113 +0,0 @@ -/* dsa.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* dsa.h for openSSL */ - - -#ifndef WOLFSSL_DSA_H_ -#define WOLFSSL_DSA_H_ - -#include <wolfssl/openssl/bn.h> - -#ifdef __cplusplus - extern "C" { -#endif - -typedef struct WOLFSSL_DSA_SIG { - WOLFSSL_BIGNUM *r; - WOLFSSL_BIGNUM *s; -} WOLFSSL_DSA_SIG; - -#ifndef WOLFSSL_DSA_TYPE_DEFINED /* guard on redeclaration */ -typedef struct WOLFSSL_DSA WOLFSSL_DSA; -#define WOLFSSL_DSA_TYPE_DEFINED -#endif - -typedef WOLFSSL_DSA DSA; - -struct WOLFSSL_DSA { - WOLFSSL_BIGNUM* p; - WOLFSSL_BIGNUM* q; - WOLFSSL_BIGNUM* g; - WOLFSSL_BIGNUM* pub_key; /* our y */ - WOLFSSL_BIGNUM* priv_key; /* our x */ - void* internal; /* our Dsa Key */ - char inSet; /* internal set from external ? */ - char exSet; /* external set from internal ? */ -}; - - -WOLFSSL_API WOLFSSL_DSA* wolfSSL_DSA_new(void); -WOLFSSL_API void wolfSSL_DSA_free(WOLFSSL_DSA*); - -WOLFSSL_API int wolfSSL_DSA_generate_key(WOLFSSL_DSA*); - -typedef void (*WOLFSSL_BN_CB)(int i, int j, void* exArg); -WOLFSSL_API WOLFSSL_DSA* wolfSSL_DSA_generate_parameters(int bits, - unsigned char* seed, int seedLen, int* counterRet, - unsigned long* hRet, WOLFSSL_BN_CB cb, void* CBArg); -WOLFSSL_API int wolfSSL_DSA_generate_parameters_ex(WOLFSSL_DSA*, int bits, - unsigned char* seed, int seedLen, int* counterRet, - unsigned long* hRet, void* cb); - -WOLFSSL_API int wolfSSL_DSA_LoadDer(WOLFSSL_DSA*, const unsigned char*, int sz); - -WOLFSSL_API int wolfSSL_DSA_LoadDer_ex(WOLFSSL_DSA*, const unsigned char*, - int sz, int opt); - -WOLFSSL_API int wolfSSL_DSA_do_sign(const unsigned char* d, - unsigned char* sigRet, WOLFSSL_DSA* dsa); - -WOLFSSL_API int wolfSSL_DSA_do_verify(const unsigned char* d, - unsigned char* sig, - WOLFSSL_DSA* dsa, int *dsacheck); - -WOLFSSL_API WOLFSSL_DSA_SIG* wolfSSL_DSA_SIG_new(void); -WOLFSSL_API void wolfSSL_DSA_SIG_free(WOLFSSL_DSA_SIG *sig); -WOLFSSL_API WOLFSSL_DSA_SIG* wolfSSL_DSA_do_sign_ex(const unsigned char* digest, - int outLen, WOLFSSL_DSA* dsa); -WOLFSSL_API int wolfSSL_DSA_do_verify_ex(const unsigned char* digest, int digest_len, - WOLFSSL_DSA_SIG* sig, WOLFSSL_DSA* dsa); - -#define WOLFSSL_DSA_LOAD_PRIVATE 1 -#define WOLFSSL_DSA_LOAD_PUBLIC 2 - -#define DSA_new wolfSSL_DSA_new -#define DSA_free wolfSSL_DSA_free - -#define DSA_LoadDer wolfSSL_DSA_LoadDer -#define DSA_generate_key wolfSSL_DSA_generate_key -#define DSA_generate_parameters wolfSSL_DSA_generate_parameters -#define DSA_generate_parameters_ex wolfSSL_DSA_generate_parameters_ex - -#define DSA_SIG_new wolfSSL_DSA_SIG_new -#define DSA_SIG_free wolfSSL_DSA_SIG_free -#define DSA_do_sign wolfSSL_DSA_do_sign_ex -#define DSA_do_verify wolfSSL_DSA_do_verify_ex - - -#define DSA_SIG WOLFSSL_DSA_SIG - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* header */ diff --git a/client/wolfssl/wolfssl/openssl/ec.h b/client/wolfssl/wolfssl/openssl/ec.h deleted file mode 100644 index 1f11593..0000000 --- a/client/wolfssl/wolfssl/openssl/ec.h +++ /dev/null @@ -1,323 +0,0 @@ -/* ec.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* ec.h for openssl */ - -#ifndef WOLFSSL_EC_H_ -#define WOLFSSL_EC_H_ - -#include <wolfssl/openssl/bn.h> -#include <wolfssl/wolfcrypt/ecc.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* Map OpenSSL NID value */ -enum { - POINT_CONVERSION_COMPRESSED = 2, - POINT_CONVERSION_UNCOMPRESSED = 4, - -#ifdef HAVE_ECC - /* Use OpenSSL NIDs. NIDs can be mapped to ecc_curve_id enum values by - calling NIDToEccEnum() in ssl.c */ - NID_X9_62_prime192v1 = 409, - NID_X9_62_prime192v2 = 410, - NID_X9_62_prime192v3 = 411, - NID_X9_62_prime239v1 = 412, - NID_X9_62_prime239v2 = 413, - NID_X9_62_prime239v3 = 414, - NID_X9_62_prime256v1 = 415, - NID_secp112r1 = 704, - NID_secp112r2 = 705, - NID_secp128r1 = 706, - NID_secp128r2 = 707, - NID_secp160r1 = 709, - NID_secp160r2 = 710, - NID_secp224r1 = 713, - NID_secp384r1 = 715, - NID_secp521r1 = 716, - NID_secp160k1 = 708, - NID_secp192k1 = 711, - NID_secp224k1 = 712, - NID_secp256k1 = 714, - NID_brainpoolP160r1 = 921, - NID_brainpoolP192r1 = 923, - NID_brainpoolP224r1 = 925, - NID_brainpoolP256r1 = 927, - NID_brainpoolP320r1 = 929, - NID_brainpoolP384r1 = 931, - NID_brainpoolP512r1 = 933, -#endif - - OPENSSL_EC_NAMED_CURVE = 0x001 -}; - -#ifndef WOLFSSL_EC_TYPE_DEFINED /* guard on redeclaration */ -typedef struct WOLFSSL_EC_KEY WOLFSSL_EC_KEY; -typedef struct WOLFSSL_EC_POINT WOLFSSL_EC_POINT; -typedef struct WOLFSSL_EC_GROUP WOLFSSL_EC_GROUP; -typedef struct WOLFSSL_EC_BUILTIN_CURVE WOLFSSL_EC_BUILTIN_CURVE; -/* WOLFSSL_EC_METHOD is just an alias of WOLFSSL_EC_GROUP for now */ -typedef struct WOLFSSL_EC_GROUP WOLFSSL_EC_METHOD; -#define WOLFSSL_EC_TYPE_DEFINED -#endif - -typedef WOLFSSL_EC_KEY EC_KEY; -typedef WOLFSSL_EC_GROUP EC_GROUP; -typedef WOLFSSL_EC_GROUP EC_METHOD; -typedef WOLFSSL_EC_POINT EC_POINT; -typedef WOLFSSL_EC_BUILTIN_CURVE EC_builtin_curve; - -struct WOLFSSL_EC_POINT { - WOLFSSL_BIGNUM *X; - WOLFSSL_BIGNUM *Y; - WOLFSSL_BIGNUM *Z; - - void* internal; /* our ECC point */ - char inSet; /* internal set from external ? */ - char exSet; /* external set from internal ? */ -}; - -struct WOLFSSL_EC_GROUP { - int curve_idx; /* index of curve, used by WolfSSL as reference */ - int curve_nid; /* NID of curve, used by OpenSSL/OpenSSH as reference */ - int curve_oid; /* OID of curve, used by OpenSSL/OpenSSH as reference */ -}; - -struct WOLFSSL_EC_KEY { - WOLFSSL_EC_GROUP *group; - WOLFSSL_EC_POINT *pub_key; - WOLFSSL_BIGNUM *priv_key; - - void* internal; /* our ECC Key */ - char inSet; /* internal set from external ? */ - char exSet; /* external set from internal ? */ - char form; /* Either POINT_CONVERSION_UNCOMPRESSED or - * POINT_CONVERSION_COMPRESSED */ -}; - -struct WOLFSSL_EC_BUILTIN_CURVE { - int nid; - const char *comment; -}; - -#define WOLFSSL_EC_KEY_LOAD_PRIVATE 1 -#define WOLFSSL_EC_KEY_LOAD_PUBLIC 2 - -WOLFSSL_API -size_t wolfSSL_EC_get_builtin_curves(WOLFSSL_EC_BUILTIN_CURVE *r,size_t nitems); - -WOLFSSL_API -WOLFSSL_EC_KEY *wolfSSL_EC_KEY_dup(const WOLFSSL_EC_KEY *src); - -WOLFSSL_API -int wolfSSL_ECPoint_i2d(const WOLFSSL_EC_GROUP *curve, - const WOLFSSL_EC_POINT *p, - unsigned char *out, unsigned int *len); -WOLFSSL_API -int wolfSSL_ECPoint_d2i(unsigned char *in, unsigned int len, - const WOLFSSL_EC_GROUP *curve, WOLFSSL_EC_POINT *p); -WOLFSSL_API -size_t wolfSSL_EC_POINT_point2oct(const WOLFSSL_EC_GROUP *group, - const WOLFSSL_EC_POINT *p, - char form, - byte *buf, size_t len, WOLFSSL_BN_CTX *ctx); -WOLFSSL_API -int wolfSSL_EC_POINT_oct2point(const WOLFSSL_EC_GROUP *group, - WOLFSSL_EC_POINT *p, const unsigned char *buf, - size_t len, WOLFSSL_BN_CTX *ctx); -WOLFSSL_API -int wolfSSL_i2o_ECPublicKey(const WOLFSSL_EC_KEY *in, unsigned char **out); -WOLFSSL_API -void wolfSSL_EC_KEY_set_conv_form(WOLFSSL_EC_KEY *eckey, char form); -WOLFSSL_API -WOLFSSL_BIGNUM *wolfSSL_EC_POINT_point2bn(const WOLFSSL_EC_GROUP *group, - const WOLFSSL_EC_POINT *p, - char form, - WOLFSSL_BIGNUM *in, WOLFSSL_BN_CTX *ctx); - -WOLFSSL_API -int wolfSSL_EC_KEY_LoadDer(WOLFSSL_EC_KEY* key, - const unsigned char* der, int derSz); -WOLFSSL_API -int wolfSSL_EC_KEY_LoadDer_ex(WOLFSSL_EC_KEY* key, - const unsigned char* der, int derSz, int opt); -WOLFSSL_API -void wolfSSL_EC_KEY_free(WOLFSSL_EC_KEY *key); -WOLFSSL_API -WOLFSSL_EC_POINT *wolfSSL_EC_KEY_get0_public_key(const WOLFSSL_EC_KEY *key); -WOLFSSL_API -const WOLFSSL_EC_GROUP *wolfSSL_EC_KEY_get0_group(const WOLFSSL_EC_KEY *key); -WOLFSSL_API -int wolfSSL_EC_KEY_set_private_key(WOLFSSL_EC_KEY *key, - const WOLFSSL_BIGNUM *priv_key); -WOLFSSL_API -WOLFSSL_BIGNUM *wolfSSL_EC_KEY_get0_private_key(const WOLFSSL_EC_KEY *key); -WOLFSSL_API -WOLFSSL_EC_KEY *wolfSSL_EC_KEY_new_by_curve_name(int nid); -WOLFSSL_API const char* wolfSSL_EC_curve_nid2nist(int nid); -WOLFSSL_API -WOLFSSL_EC_KEY *wolfSSL_EC_KEY_new(void); -WOLFSSL_API -int wolfSSL_EC_KEY_set_group(WOLFSSL_EC_KEY *key, WOLFSSL_EC_GROUP *group); -WOLFSSL_API -int wolfSSL_EC_KEY_generate_key(WOLFSSL_EC_KEY *key); -WOLFSSL_API -void wolfSSL_EC_KEY_set_asn1_flag(WOLFSSL_EC_KEY *key, int asn1_flag); -WOLFSSL_API -int wolfSSL_EC_KEY_set_public_key(WOLFSSL_EC_KEY *key, - const WOLFSSL_EC_POINT *pub); -WOLFSSL_API int wolfSSL_ECDSA_size(const WOLFSSL_EC_KEY *key); -WOLFSSL_API int wolfSSL_ECDSA_sign(int type, const unsigned char *digest, - int digestSz, unsigned char *sig, - unsigned int *sigSz, WOLFSSL_EC_KEY *key); -WOLFSSL_API -void wolfSSL_EC_GROUP_set_asn1_flag(WOLFSSL_EC_GROUP *group, int flag); -WOLFSSL_API -WOLFSSL_EC_GROUP *wolfSSL_EC_GROUP_new_by_curve_name(int nid); -WOLFSSL_API -int wolfSSL_EC_GROUP_cmp(const WOLFSSL_EC_GROUP *a, const WOLFSSL_EC_GROUP *b, - WOLFSSL_BN_CTX *ctx); -WOLFSSL_API -int wolfSSL_EC_GROUP_get_curve_name(const WOLFSSL_EC_GROUP *group); -WOLFSSL_API -int wolfSSL_EC_GROUP_get_degree(const WOLFSSL_EC_GROUP *group); -WOLFSSL_API -int wolfSSL_EC_GROUP_get_order(const WOLFSSL_EC_GROUP *group, - WOLFSSL_BIGNUM *order, WOLFSSL_BN_CTX *ctx); -WOLFSSL_API -int wolfSSL_EC_GROUP_order_bits(const WOLFSSL_EC_GROUP *group); -WOLFSSL_API -void wolfSSL_EC_GROUP_free(WOLFSSL_EC_GROUP *group); -WOLFSSL_API -const WOLFSSL_EC_METHOD* wolfSSL_EC_GROUP_method_of( - const WOLFSSL_EC_GROUP *group); -WOLFSSL_API -int wolfSSL_EC_METHOD_get_field_type(const WOLFSSL_EC_METHOD *meth); -WOLFSSL_API -WOLFSSL_EC_POINT *wolfSSL_EC_POINT_new(const WOLFSSL_EC_GROUP *group); -WOLFSSL_API -int wolfSSL_EC_POINT_get_affine_coordinates_GFp(const WOLFSSL_EC_GROUP *group, - const WOLFSSL_EC_POINT *p, - WOLFSSL_BIGNUM *x, - WOLFSSL_BIGNUM *y, - WOLFSSL_BN_CTX *ctx); -WOLFSSL_API -int wolfSSL_EC_POINT_set_affine_coordinates_GFp(const WOLFSSL_EC_GROUP *group, - WOLFSSL_EC_POINT *point, - const WOLFSSL_BIGNUM *x, - const WOLFSSL_BIGNUM *y, - WOLFSSL_BN_CTX *ctx); -WOLFSSL_API -int wolfSSL_EC_POINT_mul(const WOLFSSL_EC_GROUP *group, WOLFSSL_EC_POINT *r, - const WOLFSSL_BIGNUM *n, - const WOLFSSL_EC_POINT *q, const WOLFSSL_BIGNUM *m, - WOLFSSL_BN_CTX *ctx); -WOLFSSL_API -void wolfSSL_EC_POINT_clear_free(WOLFSSL_EC_POINT *point); -WOLFSSL_API -int wolfSSL_EC_POINT_cmp(const WOLFSSL_EC_GROUP *group, - const WOLFSSL_EC_POINT *a, const WOLFSSL_EC_POINT *b, - WOLFSSL_BN_CTX *ctx); -WOLFSSL_API int wolfSSL_EC_POINT_copy(WOLFSSL_EC_POINT *dest, - const WOLFSSL_EC_POINT *src); -WOLFSSL_API -void wolfSSL_EC_POINT_free(WOLFSSL_EC_POINT *point); -WOLFSSL_API -int wolfSSL_EC_POINT_is_at_infinity(const WOLFSSL_EC_GROUP *group, - const WOLFSSL_EC_POINT *a); - -#ifndef HAVE_SELFTEST -WOLFSSL_API -char* wolfSSL_EC_POINT_point2hex(const WOLFSSL_EC_GROUP* group, - const WOLFSSL_EC_POINT* point, int form, - WOLFSSL_BN_CTX* ctx); -#endif - -#ifndef HAVE_ECC -#define OPENSSL_NO_EC -#endif - -#define EC_KEY_new wolfSSL_EC_KEY_new -#define EC_KEY_free wolfSSL_EC_KEY_free -#define EC_KEY_dup wolfSSL_EC_KEY_dup -#define EC_KEY_get0_public_key wolfSSL_EC_KEY_get0_public_key -#define EC_KEY_get0_group wolfSSL_EC_KEY_get0_group -#define EC_KEY_set_private_key wolfSSL_EC_KEY_set_private_key -#define EC_KEY_get0_private_key wolfSSL_EC_KEY_get0_private_key -#define EC_KEY_new_by_curve_name wolfSSL_EC_KEY_new_by_curve_name -#define EC_KEY_set_group wolfSSL_EC_KEY_set_group -#define EC_KEY_generate_key wolfSSL_EC_KEY_generate_key -#define EC_KEY_set_asn1_flag wolfSSL_EC_KEY_set_asn1_flag -#define EC_KEY_set_public_key wolfSSL_EC_KEY_set_public_key - -#define ECDSA_size wolfSSL_ECDSA_size -#define ECDSA_sign wolfSSL_ECDSA_sign - -#define EC_GROUP_free wolfSSL_EC_GROUP_free -#define EC_GROUP_set_asn1_flag wolfSSL_EC_GROUP_set_asn1_flag -#define EC_GROUP_new_by_curve_name wolfSSL_EC_GROUP_new_by_curve_name -#define EC_GROUP_cmp wolfSSL_EC_GROUP_cmp -#define EC_GROUP_get_curve_name wolfSSL_EC_GROUP_get_curve_name -#define EC_GROUP_get_degree wolfSSL_EC_GROUP_get_degree -#define EC_GROUP_get_order wolfSSL_EC_GROUP_get_order -#define EC_GROUP_order_bits wolfSSL_EC_GROUP_order_bits -#define EC_GROUP_method_of wolfSSL_EC_GROUP_method_of - -#define EC_METHOD_get_field_type wolfSSL_EC_METHOD_get_field_type - -#define EC_POINT_new wolfSSL_EC_POINT_new -#define EC_POINT_free wolfSSL_EC_POINT_free -#define EC_POINT_get_affine_coordinates_GFp \ - wolfSSL_EC_POINT_get_affine_coordinates_GFp -#define EC_POINT_set_affine_coordinates_GFp \ - wolfSSL_EC_POINT_set_affine_coordinates_GFp -#define EC_POINT_mul wolfSSL_EC_POINT_mul -#define EC_POINT_clear_free wolfSSL_EC_POINT_clear_free -#define EC_POINT_cmp wolfSSL_EC_POINT_cmp -#define EC_POINT_copy wolfSSL_EC_POINT_copy -#define EC_POINT_is_at_infinity wolfSSL_EC_POINT_is_at_infinity - -#define EC_get_builtin_curves wolfSSL_EC_get_builtin_curves - -#define ECPoint_i2d wolfSSL_ECPoint_i2d -#define ECPoint_d2i wolfSSL_ECPoint_d2i -#define EC_POINT_point2oct wolfSSL_EC_POINT_point2oct -#define EC_POINT_oct2point wolfSSL_EC_POINT_oct2point -#define EC_POINT_point2bn wolfSSL_EC_POINT_point2bn -#define i2o_ECPublicKey wolfSSL_i2o_ECPublicKey -#define EC_KEY_set_conv_form wolfSSL_EC_KEY_set_conv_form - -#ifndef HAVE_SELFTEST - #define EC_POINT_point2hex wolfSSL_EC_POINT_point2hex -#endif - -#define EC_POINT_dump wolfSSL_EC_POINT_dump -#define EC_get_builtin_curves wolfSSL_EC_get_builtin_curves - -#define EC_curve_nid2nist wolfSSL_EC_curve_nid2nist - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* header */ diff --git a/client/wolfssl/wolfssl/openssl/ec25519.h b/client/wolfssl/wolfssl/openssl/ec25519.h deleted file mode 100644 index 180eb8e..0000000 --- a/client/wolfssl/wolfssl/openssl/ec25519.h +++ /dev/null @@ -1,44 +0,0 @@ -/* ec25519.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* ec25519.h */ - -#ifndef WOLFSSL_EC25519_H_ -#define WOLFSSL_EC25519_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -WOLFSSL_API -int wolfSSL_EC25519_generate_key(unsigned char *priv, unsigned int *privSz, - unsigned char *pub, unsigned int *pubSz); - -WOLFSSL_API -int wolfSSL_EC25519_shared_key(unsigned char *shared, unsigned int *sharedSz, - const unsigned char *priv, unsigned int privSz, - const unsigned char *pub, unsigned int pubSz); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* header */ diff --git a/client/wolfssl/wolfssl/openssl/ec448.h b/client/wolfssl/wolfssl/openssl/ec448.h deleted file mode 100644 index fb3b900..0000000 --- a/client/wolfssl/wolfssl/openssl/ec448.h +++ /dev/null @@ -1,44 +0,0 @@ -/* ec448.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* ec448.h */ - -#ifndef WOLFSSL_EC448_H_ -#define WOLFSSL_EC448_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -WOLFSSL_API -int wolfSSL_EC448_generate_key(unsigned char *priv, unsigned int *privSz, - unsigned char *pub, unsigned int *pubSz); - -WOLFSSL_API -int wolfSSL_EC448_shared_key(unsigned char *shared, unsigned int *sharedSz, - const unsigned char *priv, unsigned int privSz, - const unsigned char *pub, unsigned int pubSz); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* header */ diff --git a/client/wolfssl/wolfssl/openssl/ecdh.h b/client/wolfssl/wolfssl/openssl/ecdh.h deleted file mode 100644 index 7d7aa09..0000000 --- a/client/wolfssl/wolfssl/openssl/ecdh.h +++ /dev/null @@ -1,49 +0,0 @@ -/* ecdh.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* ecdh.h for openssl */ - -#ifndef WOLFSSL_ECDH_H_ -#define WOLFSSL_ECDH_H_ - -#include <wolfssl/openssl/ssl.h> -#include <wolfssl/openssl/bn.h> - -#ifdef __cplusplus -extern "C" { -#endif - - -WOLFSSL_API int wolfSSL_ECDH_compute_key(void *out, size_t outlen, - const WOLFSSL_EC_POINT *pub_key, - WOLFSSL_EC_KEY *ecdh, - void *(*KDF) (const void *in, - size_t inlen, - void *out, - size_t *outlen)); - -#define ECDH_compute_key wolfSSL_ECDH_compute_key - -#ifdef __cplusplus -} /* extern C */ -#endif - -#endif /* header */ diff --git a/client/wolfssl/wolfssl/openssl/ecdsa.h b/client/wolfssl/wolfssl/openssl/ecdsa.h deleted file mode 100644 index 77c1a18..0000000 --- a/client/wolfssl/wolfssl/openssl/ecdsa.h +++ /dev/null @@ -1,75 +0,0 @@ -/* ecdsa.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* ecdsa.h for openssl */ - -#ifndef WOLFSSL_ECDSA_H_ -#define WOLFSSL_ECDSA_H_ - -#include <wolfssl/openssl/bn.h> -#include <wolfssl/openssl/ec.h> - - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef WOLFSSL_ECDSA_TYPE_DEFINED /* guard on redeclaration */ -typedef struct WOLFSSL_ECDSA_SIG WOLFSSL_ECDSA_SIG; -#define WOLFSSL_ECDSA_TYPE_DEFINED -#endif - -typedef WOLFSSL_ECDSA_SIG ECDSA_SIG; - -struct WOLFSSL_ECDSA_SIG { - WOLFSSL_BIGNUM *r; - WOLFSSL_BIGNUM *s; -}; - -WOLFSSL_API void wolfSSL_ECDSA_SIG_free(WOLFSSL_ECDSA_SIG *sig); -WOLFSSL_API WOLFSSL_ECDSA_SIG *wolfSSL_ECDSA_SIG_new(void); -WOLFSSL_API WOLFSSL_ECDSA_SIG *wolfSSL_ECDSA_do_sign(const unsigned char *dgst, - int dgst_len, - WOLFSSL_EC_KEY *eckey); -WOLFSSL_API int wolfSSL_ECDSA_do_verify(const unsigned char *dgst, - int dgst_len, - const WOLFSSL_ECDSA_SIG *sig, - WOLFSSL_EC_KEY *eckey); - -WOLFSSL_API WOLFSSL_ECDSA_SIG *wolfSSL_d2i_ECDSA_SIG(WOLFSSL_ECDSA_SIG **sig, - const unsigned char **pp, - long len); -WOLFSSL_API int wolfSSL_i2d_ECDSA_SIG(const WOLFSSL_ECDSA_SIG *sig, - unsigned char **pp); - -#define ECDSA_SIG_free wolfSSL_ECDSA_SIG_free -#define ECDSA_SIG_new wolfSSL_ECDSA_SIG_new -#define ECDSA_do_sign wolfSSL_ECDSA_do_sign -#define ECDSA_do_verify wolfSSL_ECDSA_do_verify -#define d2i_ECDSA_SIG wolfSSL_d2i_ECDSA_SIG -#define i2d_ECDSA_SIG wolfSSL_i2d_ECDSA_SIG - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* header */ - diff --git a/client/wolfssl/wolfssl/openssl/ed25519.h b/client/wolfssl/wolfssl/openssl/ed25519.h deleted file mode 100644 index 579c653..0000000 --- a/client/wolfssl/wolfssl/openssl/ed25519.h +++ /dev/null @@ -1,47 +0,0 @@ -/* ed25519.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* ed25519.h */ - -#ifndef WOLFSSL_ED25519_H_ -#define WOLFSSL_ED25519_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -WOLFSSL_API -int wolfSSL_ED25519_generate_key(unsigned char *priv, unsigned int *privSz, - unsigned char *pub, unsigned int *pubSz); -WOLFSSL_API -int wolfSSL_ED25519_sign(const unsigned char *msg, unsigned int msgSz, - const unsigned char *priv, unsigned int privSz, - unsigned char *sig, unsigned int *sigSz); -WOLFSSL_API -int wolfSSL_ED25519_verify(const unsigned char *msg, unsigned int msgSz, - const unsigned char *pub, unsigned int pubSz, - const unsigned char *sig, unsigned int sigSz); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* header */ diff --git a/client/wolfssl/wolfssl/openssl/ed448.h b/client/wolfssl/wolfssl/openssl/ed448.h deleted file mode 100644 index b9411e9..0000000 --- a/client/wolfssl/wolfssl/openssl/ed448.h +++ /dev/null @@ -1,47 +0,0 @@ -/* ed448.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* ed448.h */ - -#ifndef WOLFSSL_ED448_H_ -#define WOLFSSL_ED448_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -WOLFSSL_API -int wolfSSL_ED448_generate_key(unsigned char *priv, unsigned int *privSz, - unsigned char *pub, unsigned int *pubSz); -WOLFSSL_API -int wolfSSL_ED448_sign(const unsigned char *msg, unsigned int msgSz, - const unsigned char *priv, unsigned int privSz, - unsigned char *sig, unsigned int *sigSz); -WOLFSSL_API -int wolfSSL_ED448_verify(const unsigned char *msg, unsigned int msgSz, - const unsigned char *pub, unsigned int pubSz, - const unsigned char *sig, unsigned int sigSz); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* header */ diff --git a/client/wolfssl/wolfssl/openssl/engine.h b/client/wolfssl/wolfssl/openssl/engine.h deleted file mode 100644 index e4a1ff1..0000000 --- a/client/wolfssl/wolfssl/openssl/engine.h +++ /dev/null @@ -1,8 +0,0 @@ -/* engine.h for libcurl */ - -#include <wolfssl/openssl/err.h> - -#undef HAVE_OPENSSL_ENGINE_H - -#define ENGINE_load_builtin_engines() /*ENGINE_load_builtin_engines not needed*/ - diff --git a/client/wolfssl/wolfssl/openssl/err.h b/client/wolfssl/wolfssl/openssl/err.h deleted file mode 100644 index cb1acc0..0000000 --- a/client/wolfssl/wolfssl/openssl/err.h +++ /dev/null @@ -1,55 +0,0 @@ -/* err.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -#ifndef WOLFSSL_OPENSSL_ERR_ -#define WOLFSSL_OPENSSL_ERR_ - -#include <wolfssl/wolfcrypt/logging.h> - -/* err.h for openssl */ -#define ERR_load_crypto_strings wolfSSL_ERR_load_crypto_strings -#define ERR_load_CRYPTO_strings wolfSSL_ERR_load_crypto_strings -#define ERR_peek_last_error wolfSSL_ERR_peek_last_error - -/* fatal error */ -#define ERR_R_MALLOC_FAILURE MEMORY_E -#define ERR_R_PASSED_NULL_PARAMETER BAD_FUNC_ARG -#define ERR_R_DISABLED NOT_COMPILED_IN -#define ERR_R_PASSED_INVALID_ARGUMENT BAD_FUNC_ARG -#define RSA_R_UNKNOWN_PADDING_TYPE RSA_PAD_E -#define EC_R_BUFFER_TOO_SMALL BUFFER_E - -/* SSL function codes */ -#define RSA_F_RSA_OSSL_PRIVATE_ENCRYPT 1 -#define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE 2 -#define SSL_F_SSL_USE_PRIVATEKEY 3 -#define EC_F_EC_GFP_SIMPLE_POINT2OCT 4 - -/* reasons */ -#define ERR_R_SYS_LIB 1 -#define PKCS12_R_MAC_VERIFY_FAILURE 2 - -#define RSAerr(f,r) ERR_put_error(0,(f),(r),__FILE__,__LINE__) -#define SSLerr(f,r) ERR_put_error(0,(f),(r),__FILE__,__LINE__) -#define ECerr(f,r) ERR_put_error(0,(f),(r),__FILE__,__LINE__) - -#endif /* WOLFSSL_OPENSSL_ERR_ */ - diff --git a/client/wolfssl/wolfssl/openssl/evp.h b/client/wolfssl/wolfssl/openssl/evp.h deleted file mode 100644 index 3f9026a..0000000 --- a/client/wolfssl/wolfssl/openssl/evp.h +++ /dev/null @@ -1,930 +0,0 @@ -/* evp.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -/*! - \file wolfssl/openssl/evp.h - \brief evp.h defines mini evp openssl compatibility layer - */ - - -#ifndef WOLFSSL_EVP_H_ -#define WOLFSSL_EVP_H_ - -#include <wolfssl/wolfcrypt/settings.h> - -#ifdef WOLFSSL_PREFIX -#include "prefix_evp.h" -#endif - -#ifndef NO_MD4 - #include <wolfssl/openssl/md4.h> -#endif -#ifndef NO_MD5 - #include <wolfssl/openssl/md5.h> -#endif -#include <wolfssl/openssl/sha.h> -#include <wolfssl/openssl/sha3.h> -#include <wolfssl/openssl/ripemd.h> -#include <wolfssl/openssl/rsa.h> -#include <wolfssl/openssl/dsa.h> -#include <wolfssl/openssl/ec.h> -#include <wolfssl/openssl/dh.h> - -#include <wolfssl/wolfcrypt/aes.h> -#include <wolfssl/wolfcrypt/des3.h> -#include <wolfssl/wolfcrypt/arc4.h> -#include <wolfssl/wolfcrypt/hmac.h> -#ifdef HAVE_IDEA - #include <wolfssl/wolfcrypt/idea.h> -#endif -#include <wolfssl/wolfcrypt/pwdbased.h> - -#ifdef __cplusplus - extern "C" { -#endif - - -typedef char WOLFSSL_EVP_CIPHER; -#ifndef WOLFSSL_EVP_TYPE_DEFINED /* guard on redeclaration */ -typedef char WOLFSSL_EVP_MD; -typedef struct WOLFSSL_EVP_PKEY WOLFSSL_EVP_PKEY; -typedef struct WOLFSSL_EVP_MD_CTX WOLFSSL_EVP_MD_CTX; -#define WOLFSSL_EVP_TYPE_DEFINED -#endif - -typedef WOLFSSL_EVP_PKEY EVP_PKEY; -typedef WOLFSSL_EVP_PKEY PKCS8_PRIV_KEY_INFO; - -#ifndef NO_MD4 - WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_md4(void); -#endif -#ifndef NO_MD5 - WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_md5(void); -#endif -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_mdc2(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha1(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha224(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha256(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha384(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha512(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_ripemd160(void); - -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha3_224(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha3_256(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha3_384(void); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_sha3_512(void); - -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_ecb(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_ecb(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_ecb(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_cbc(void); -#if !defined(NO_AES) && defined(HAVE_AES_CBC) -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_cbc(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_cbc(void); -#endif -#ifndef NO_AES -#ifdef WOLFSSL_AES_CFB -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_cfb1(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_cfb1(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_cfb1(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_cfb8(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_cfb8(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_cfb8(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_cfb128(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_cfb128(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_cfb128(void); -#endif -#ifdef WOLFSSL_AES_OFB -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_ofb(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_ofb(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_ofb(void); -#endif -#ifdef WOLFSSL_AES_XTS -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_xts(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_xts(void); -#endif -#endif /* NO_AES */ -#if !defined(NO_AES) && defined(HAVE_AESGCM) -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_gcm(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_gcm(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_gcm(void); -#endif -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_128_ctr(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_192_ctr(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_aes_256_ctr(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_ecb(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_ede3_ecb(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_cbc(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_des_ede3_cbc(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_rc4(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_idea_cbc(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_enc_null(void); -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_rc2_cbc(void); - - -typedef union { - #ifndef NO_MD4 - WOLFSSL_MD4_CTX md4; - #endif - #ifndef NO_MD5 - WOLFSSL_MD5_CTX md5; - #endif - WOLFSSL_SHA_CTX sha; - #ifdef WOLFSSL_SHA224 - WOLFSSL_SHA224_CTX sha224; - #endif - WOLFSSL_SHA256_CTX sha256; - #ifdef WOLFSSL_SHA384 - WOLFSSL_SHA384_CTX sha384; - #endif - #ifdef WOLFSSL_SHA512 - WOLFSSL_SHA512_CTX sha512; - #endif - #ifdef WOLFSSL_RIPEMD - WOLFSSL_RIPEMD_CTX ripemd; - #endif - #ifndef WOLFSSL_NOSHA3_224 - WOLFSSL_SHA3_224_CTX sha3_224; - #endif - #ifndef WOLFSSL_NOSHA3_256 - WOLFSSL_SHA3_256_CTX sha3_256; - #endif - WOLFSSL_SHA3_384_CTX sha3_384; - #ifndef WOLFSSL_NOSHA3_512 - WOLFSSL_SHA3_512_CTX sha3_512; - #endif -} WOLFSSL_Hasher; - -typedef struct WOLFSSL_EVP_PKEY_CTX WOLFSSL_EVP_PKEY_CTX; -typedef struct WOLFSSL_EVP_CIPHER_CTX WOLFSSL_EVP_CIPHER_CTX; - -struct WOLFSSL_EVP_MD_CTX { - union { - WOLFSSL_Hasher digest; - #ifndef NO_HMAC - Hmac hmac; - #endif - } hash; - int macType; - WOLFSSL_EVP_PKEY_CTX *pctx; -}; - - -typedef union { -#ifndef NO_AES - Aes aes; -#ifdef WOLFSSL_AES_XTS - XtsAes xts; -#endif -#endif -#ifndef NO_DES3 - Des des; - Des3 des3; -#endif - Arc4 arc4; -#ifdef HAVE_IDEA - Idea idea; -#endif -#ifdef WOLFSSL_QT - int (*ctrl) (WOLFSSL_EVP_CIPHER_CTX *, int type, int arg, void *ptr); -#endif -} WOLFSSL_Cipher; - - -enum { - AES_128_CBC_TYPE = 1, - AES_192_CBC_TYPE = 2, - AES_256_CBC_TYPE = 3, - AES_128_CTR_TYPE = 4, - AES_192_CTR_TYPE = 5, - AES_256_CTR_TYPE = 6, - AES_128_ECB_TYPE = 7, - AES_192_ECB_TYPE = 8, - AES_256_ECB_TYPE = 9, - DES_CBC_TYPE = 10, - DES_ECB_TYPE = 11, - DES_EDE3_CBC_TYPE = 12, - DES_EDE3_ECB_TYPE = 13, - ARC4_TYPE = 14, - NULL_CIPHER_TYPE = 15, - EVP_PKEY_RSA = 16, - EVP_PKEY_DSA = 17, - EVP_PKEY_EC = 18, -#ifdef HAVE_IDEA - IDEA_CBC_TYPE = 19, -#endif - AES_128_GCM_TYPE = 21, - AES_192_GCM_TYPE = 22, - AES_256_GCM_TYPE = 23, - NID_sha1 = 64, - NID_sha224 = 65, - NID_md2 = 77, - NID_md4 = 257, - NID_md5 = 4, - NID_hmac = 855, - NID_dhKeyAgreement= 28, - EVP_PKEY_DH = NID_dhKeyAgreement, - EVP_PKEY_HMAC = NID_hmac, - AES_128_CFB1_TYPE = 24, - AES_192_CFB1_TYPE = 25, - AES_256_CFB1_TYPE = 26, - AES_128_CFB8_TYPE = 27, - AES_192_CFB8_TYPE = 28, - AES_256_CFB8_TYPE = 29, - AES_128_CFB128_TYPE = 30, - AES_192_CFB128_TYPE = 31, - AES_256_CFB128_TYPE = 32, - AES_128_OFB_TYPE = 33, - AES_192_OFB_TYPE = 34, - AES_256_OFB_TYPE = 35, - AES_128_XTS_TYPE = 36, - AES_256_XTS_TYPE = 37 -}; - -enum { - NID_md5WithRSA = 104, - NID_md5WithRSAEncryption = 8, - NID_dsaWithSHA1 = 113, - NID_dsaWithSHA1_2 = 70, - NID_sha1WithRSA = 115, - NID_sha1WithRSAEncryption = 65, - NID_sha224WithRSAEncryption = 671, - NID_sha256WithRSAEncryption = 668, - NID_sha384WithRSAEncryption = 669, - NID_sha512WithRSAEncryption = 670, - NID_ecdsa_with_SHA1 = 416, - NID_ecdsa_with_SHA224 = 793, - NID_ecdsa_with_SHA256 = 794, - NID_ecdsa_with_SHA384 = 795, - NID_ecdsa_with_SHA512 = 796, - NID_dsa_with_SHA224 = 802, - NID_dsa_with_SHA256 = 803, - NID_sha3_224 = 1096, - NID_sha3_256 = 1097, - NID_sha3_384 = 1098, - NID_sha3_512 = 1099, -}; - -enum { - NID_aes_128_cbc = 419, - NID_aes_192_cbc = 423, - NID_aes_256_cbc = 427, - NID_aes_128_gcm = 895, - NID_aes_192_gcm = 898, - NID_aes_256_gcm = 901, - NID_aes_128_ctr = 904, - NID_aes_192_ctr = 905, - NID_aes_256_ctr = 906, - NID_aes_128_ecb = 418, - NID_aes_192_ecb = 422, - NID_aes_256_ecb = 426, - NID_des_cbc = 31, - NID_des_ecb = 29, - NID_des_ede3_cbc= 44, - NID_des_ede3_ecb= 33, - NID_idea_cbc = 34, - NID_aes_128_cfb1= 650, - NID_aes_192_cfb1= 651, - NID_aes_256_cfb1= 652, - NID_aes_128_cfb8= 653, - NID_aes_192_cfb8= 654, - NID_aes_256_cfb8= 655, - NID_aes_128_cfb128 = 421, - NID_aes_192_cfb128 = 425, - NID_aes_256_cfb128 = 429, - NID_aes_128_ofb = 420, - NID_aes_192_ofb = 424, - NID_aes_256_ofb = 428, - NID_aes_128_xts = 913, - NID_aes_256_xts = 914 -}; - -#define NID_X9_62_id_ecPublicKey EVP_PKEY_EC -#define NID_dhKeyAgreement EVP_PKEY_DH -#define NID_rsaEncryption EVP_PKEY_RSA -#define NID_dsa EVP_PKEY_DSA - -#define WOLFSSL_EVP_BUF_SIZE 16 -struct WOLFSSL_EVP_CIPHER_CTX { - int keyLen; /* user may set for variable */ - int block_size; - unsigned long flags; - unsigned char enc; /* if encrypt side, then true */ - unsigned char cipherType; -#ifndef NO_AES - /* working iv pointer into cipher */ - ALIGN16 unsigned char iv[AES_BLOCK_SIZE]; -#elif !defined(NO_DES3) - /* working iv pointer into cipher */ - ALIGN16 unsigned char iv[DES_BLOCK_SIZE]; -#elif defined(HAVE_IDEA) - /* working iv pointer into cipher */ - ALIGN16 unsigned char iv[IDEA_BLOCK_SIZE]; -#endif - WOLFSSL_Cipher cipher; - ALIGN16 byte buf[WOLFSSL_EVP_BUF_SIZE]; - int bufUsed; - ALIGN16 byte lastBlock[WOLFSSL_EVP_BUF_SIZE]; - int lastUsed; -#if !defined(NO_AES) || !defined(NO_DES3) || defined(HAVE_IDEA) || \ - defined(HAVE_AESGCM) || defined (WOLFSSL_AES_XTS) -#define HAVE_WOLFSSL_EVP_CIPHER_CTX_IV - int ivSz; - ALIGN16 unsigned char authTag[AES_BLOCK_SIZE]; - int authTagSz; -#endif -}; - -struct WOLFSSL_EVP_PKEY_CTX { - WOLFSSL_EVP_PKEY *pkey; - WOLFSSL_EVP_PKEY *peerKey; - int op; /* operation */ - int padding; - int nbits; -}; - -typedef int WOLFSSL_ENGINE ; -typedef WOLFSSL_ENGINE ENGINE; -typedef WOLFSSL_EVP_PKEY_CTX EVP_PKEY_CTX; - -#define EVP_PKEY_OP_SIGN (1 << 3) -#define EVP_PKEY_OP_ENCRYPT (1 << 6) -#define EVP_PKEY_OP_DECRYPT (1 << 7) -#define EVP_PKEY_OP_DERIVE (1 << 8) - -WOLFSSL_API void wolfSSL_EVP_init(void); -WOLFSSL_API int wolfSSL_EVP_MD_size(const WOLFSSL_EVP_MD* md); -WOLFSSL_API int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD *md); -WOLFSSL_API int wolfSSL_EVP_MD_block_size(const WOLFSSL_EVP_MD *md); - -WOLFSSL_API WOLFSSL_EVP_MD_CTX *wolfSSL_EVP_MD_CTX_new (void); -WOLFSSL_API void wolfSSL_EVP_MD_CTX_free(WOLFSSL_EVP_MD_CTX* ctx); -WOLFSSL_API void wolfSSL_EVP_MD_CTX_init(WOLFSSL_EVP_MD_CTX* ctx); -WOLFSSL_API int wolfSSL_EVP_MD_CTX_cleanup(WOLFSSL_EVP_MD_CTX* ctx); -WOLFSSL_API int wolfSSL_EVP_MD_CTX_copy(WOLFSSL_EVP_MD_CTX *out, const WOLFSSL_EVP_MD_CTX *in); -WOLFSSL_API int wolfSSL_EVP_MD_CTX_copy_ex(WOLFSSL_EVP_MD_CTX *out, const WOLFSSL_EVP_MD_CTX *in); -WOLFSSL_API int wolfSSL_EVP_MD_CTX_type(const WOLFSSL_EVP_MD_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_MD_CTX_size(const WOLFSSL_EVP_MD_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_MD_CTX_block_size(const WOLFSSL_EVP_MD_CTX *ctx); -WOLFSSL_API const WOLFSSL_EVP_MD *wolfSSL_EVP_MD_CTX_md(const WOLFSSL_EVP_MD_CTX *ctx); -WOLFSSL_API const WOLFSSL_EVP_CIPHER *wolfSSL_EVP_get_cipherbyname(const char *name); -WOLFSSL_API const WOLFSSL_EVP_MD *wolfSSL_EVP_get_digestbyname(const char *name); -WOLFSSL_API int wolfSSL_EVP_CIPHER_nid(const WOLFSSL_EVP_CIPHER *cipher); - -WOLFSSL_API int wolfSSL_EVP_DigestInit(WOLFSSL_EVP_MD_CTX* ctx, - const WOLFSSL_EVP_MD* type); -WOLFSSL_API int wolfSSL_EVP_DigestInit_ex(WOLFSSL_EVP_MD_CTX* ctx, - const WOLFSSL_EVP_MD* type, - WOLFSSL_ENGINE *impl); -WOLFSSL_API int wolfSSL_EVP_DigestUpdate(WOLFSSL_EVP_MD_CTX* ctx, const void* data, - size_t sz); -WOLFSSL_API int wolfSSL_EVP_DigestFinal(WOLFSSL_EVP_MD_CTX* ctx, unsigned char* md, - unsigned int* s); -WOLFSSL_API int wolfSSL_EVP_DigestFinal_ex(WOLFSSL_EVP_MD_CTX* ctx, - unsigned char* md, unsigned int* s); - -WOLFSSL_API int wolfSSL_EVP_DigestSignInit(WOLFSSL_EVP_MD_CTX *ctx, - WOLFSSL_EVP_PKEY_CTX **pctx, - const WOLFSSL_EVP_MD *type, - WOLFSSL_ENGINE *e, - WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API int wolfSSL_EVP_DigestSignUpdate(WOLFSSL_EVP_MD_CTX *ctx, - const void *d, unsigned int cnt); -WOLFSSL_API int wolfSSL_EVP_DigestSignFinal(WOLFSSL_EVP_MD_CTX *ctx, - unsigned char *sig, size_t *siglen); - -WOLFSSL_API int wolfSSL_EVP_DigestVerifyInit(WOLFSSL_EVP_MD_CTX *ctx, - WOLFSSL_EVP_PKEY_CTX **pctx, - const WOLFSSL_EVP_MD *type, - WOLFSSL_ENGINE *e, - WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API int wolfSSL_EVP_DigestVerifyUpdate(WOLFSSL_EVP_MD_CTX *ctx, - const void *d, size_t cnt); -WOLFSSL_API int wolfSSL_EVP_DigestVerifyFinal(WOLFSSL_EVP_MD_CTX *ctx, - const unsigned char *sig, - size_t siglen); -WOLFSSL_API int wolfSSL_EVP_Digest(const unsigned char* in, int inSz, unsigned char* out, - unsigned int* outSz, const WOLFSSL_EVP_MD* evp, - WOLFSSL_ENGINE* eng); - - -WOLFSSL_API int wolfSSL_EVP_BytesToKey(const WOLFSSL_EVP_CIPHER*, - const WOLFSSL_EVP_MD*, const unsigned char*, - const unsigned char*, int, int, unsigned char*, - unsigned char*); - -WOLFSSL_API void wolfSSL_EVP_CIPHER_CTX_init(WOLFSSL_EVP_CIPHER_CTX* ctx); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_cleanup(WOLFSSL_EVP_CIPHER_CTX* ctx); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_ctrl(WOLFSSL_EVP_CIPHER_CTX *ctx, \ - int type, int arg, void *ptr); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_iv_length(const WOLFSSL_EVP_CIPHER_CTX*); -WOLFSSL_API int wolfSSL_EVP_CIPHER_iv_length(const WOLFSSL_EVP_CIPHER*); -WOLFSSL_API int wolfSSL_EVP_Cipher_key_length(const WOLFSSL_EVP_CIPHER* c); - - -WOLFSSL_API int wolfSSL_EVP_CipherInit(WOLFSSL_EVP_CIPHER_CTX* ctx, - const WOLFSSL_EVP_CIPHER* type, - const unsigned char* key, - const unsigned char* iv, - int enc); -WOLFSSL_API int wolfSSL_EVP_CipherInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx, - const WOLFSSL_EVP_CIPHER* type, - WOLFSSL_ENGINE *impl, - const unsigned char* key, - const unsigned char* iv, - int enc); -WOLFSSL_API int wolfSSL_EVP_EncryptInit(WOLFSSL_EVP_CIPHER_CTX* ctx, - const WOLFSSL_EVP_CIPHER* type, - const unsigned char* key, - const unsigned char* iv); -WOLFSSL_API int wolfSSL_EVP_EncryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx, - const WOLFSSL_EVP_CIPHER* type, - WOLFSSL_ENGINE *impl, - const unsigned char* key, - const unsigned char* iv); -WOLFSSL_API int wolfSSL_EVP_DecryptInit(WOLFSSL_EVP_CIPHER_CTX* ctx, - const WOLFSSL_EVP_CIPHER* type, - const unsigned char* key, - const unsigned char* iv); -WOLFSSL_API int wolfSSL_EVP_DecryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx, - const WOLFSSL_EVP_CIPHER* type, - WOLFSSL_ENGINE *impl, - const unsigned char* key, - const unsigned char* iv); -WOLFSSL_API int wolfSSL_EVP_CipherUpdate(WOLFSSL_EVP_CIPHER_CTX *ctx, - unsigned char *out, int *outl, - const unsigned char *in, int inl); -WOLFSSL_API int wolfSSL_EVP_CipherFinal(WOLFSSL_EVP_CIPHER_CTX *ctx, - unsigned char *out, int *outl); -WOLFSSL_API int wolfSSL_EVP_CipherFinal_ex(WOLFSSL_EVP_CIPHER_CTX *ctx, - unsigned char *out, int *outl, int enc); -WOLFSSL_API int wolfSSL_EVP_EncryptFinal(WOLFSSL_EVP_CIPHER_CTX *ctx, - unsigned char *out, int *outl); -WOLFSSL_API int wolfSSL_EVP_EncryptFinal_ex(WOLFSSL_EVP_CIPHER_CTX *ctx, - unsigned char *out, int *outl); -WOLFSSL_API int wolfSSL_EVP_DecryptFinal(WOLFSSL_EVP_CIPHER_CTX *ctx, - unsigned char *out, int *outl); -WOLFSSL_API int wolfSSL_EVP_DecryptFinal_ex(WOLFSSL_EVP_CIPHER_CTX *ctx, - unsigned char *out, int *outl); -WOLFSSL_API int wolfSSL_EVP_DecryptFinal_legacy(WOLFSSL_EVP_CIPHER_CTX *ctx, - unsigned char *out, int *outl); - -WOLFSSL_API WOLFSSL_EVP_CIPHER_CTX *wolfSSL_EVP_CIPHER_CTX_new(void); -WOLFSSL_API void wolfSSL_EVP_CIPHER_CTX_free(WOLFSSL_EVP_CIPHER_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_reset(WOLFSSL_EVP_CIPHER_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_key_length(WOLFSSL_EVP_CIPHER_CTX* ctx); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_set_key_length(WOLFSSL_EVP_CIPHER_CTX* ctx, - int keylen); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_set_iv_length(WOLFSSL_EVP_CIPHER_CTX* ctx, - int ivLen); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_set_iv(WOLFSSL_EVP_CIPHER_CTX* ctx, byte* iv, - int ivLen); -WOLFSSL_API int wolfSSL_EVP_Cipher(WOLFSSL_EVP_CIPHER_CTX* ctx, - unsigned char* dst, unsigned char* src, - unsigned int len); - -WOLFSSL_API const WOLFSSL_EVP_CIPHER* wolfSSL_EVP_get_cipherbynid(int); -WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_get_digestbynid(int); -WOLFSSL_API const WOLFSSL_EVP_CIPHER *wolfSSL_EVP_CIPHER_CTX_cipher(const WOLFSSL_EVP_CIPHER_CTX *ctx); - -WOLFSSL_API int wolfSSL_EVP_PKEY_assign_RSA(WOLFSSL_EVP_PKEY* pkey, - WOLFSSL_RSA* key); -WOLFSSL_API int wolfSSL_EVP_PKEY_assign_EC_KEY(WOLFSSL_EVP_PKEY* pkey, - WOLFSSL_EC_KEY* key); -WOLFSSL_API int wolfSSL_EVP_PKEY_assign_DSA(EVP_PKEY* pkey, WOLFSSL_DSA* key); -WOLFSSL_API int wolfSSL_EVP_PKEY_assign_DH(EVP_PKEY* pkey, WOLFSSL_DH* key); -WOLFSSL_API WOLFSSL_RSA* wolfSSL_EVP_PKEY_get0_RSA(struct WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API WOLFSSL_RSA* wolfSSL_EVP_PKEY_get1_RSA(WOLFSSL_EVP_PKEY*); -WOLFSSL_API WOLFSSL_DSA* wolfSSL_EVP_PKEY_get1_DSA(WOLFSSL_EVP_PKEY*); -WOLFSSL_API WOLFSSL_EC_KEY *wolfSSL_EVP_PKEY_get0_EC_KEY(WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API WOLFSSL_EC_KEY *wolfSSL_EVP_PKEY_get1_EC_KEY(WOLFSSL_EVP_PKEY *key); -WOLFSSL_API WOLFSSL_DH* wolfSSL_EVP_PKEY_get0_DH(WOLFSSL_EVP_PKEY* key); -WOLFSSL_API WOLFSSL_DH* wolfSSL_EVP_PKEY_get1_DH(WOLFSSL_EVP_PKEY* key); -WOLFSSL_API int wolfSSL_EVP_PKEY_set1_RSA(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_RSA *key); -WOLFSSL_API int wolfSSL_EVP_PKEY_set1_DSA(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_DSA *key); -WOLFSSL_API int wolfSSL_EVP_PKEY_set1_DH(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_DH *key); -WOLFSSL_API int wolfSSL_EVP_PKEY_set1_EC_KEY(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_EC_KEY *key); -WOLFSSL_API int wolfSSL_EVP_PKEY_assign(WOLFSSL_EVP_PKEY *pkey, int type, void *key); - -WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_EVP_PKEY_new_mac_key(int type, ENGINE* e, - const unsigned char* key, int keylen); -WOLFSSL_API const unsigned char* wolfSSL_EVP_PKEY_get0_hmac(const WOLFSSL_EVP_PKEY* pkey, - size_t* len); -WOLFSSL_API int wolfSSL_EVP_PKEY_sign_init(WOLFSSL_EVP_PKEY_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_PKEY_sign(WOLFSSL_EVP_PKEY_CTX *ctx, - unsigned char *sig, size_t *siglen, const unsigned char *tbs, size_t tbslen); -WOLFSSL_API int wolfSSL_EVP_PKEY_keygen_init(WOLFSSL_EVP_PKEY_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_PKEY_keygen(WOLFSSL_EVP_PKEY_CTX *ctx, - WOLFSSL_EVP_PKEY **ppkey); -WOLFSSL_API int wolfSSL_EVP_PKEY_bits(const WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_free(WOLFSSL_EVP_PKEY_CTX *ctx); -WOLFSSL_API WOLFSSL_EVP_PKEY_CTX *wolfSSL_EVP_PKEY_CTX_new(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_ENGINE *e); -WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_set_rsa_padding(WOLFSSL_EVP_PKEY_CTX *ctx, int padding); -WOLFSSL_API WOLFSSL_EVP_PKEY_CTX *wolfSSL_EVP_PKEY_CTX_new_id(int id, WOLFSSL_ENGINE *e); -WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_set_rsa_keygen_bits(WOLFSSL_EVP_PKEY_CTX *ctx, int bits); - -WOLFSSL_API int wolfSSL_EVP_PKEY_derive_init(WOLFSSL_EVP_PKEY_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_PKEY_derive_set_peer(WOLFSSL_EVP_PKEY_CTX *ctx, WOLFSSL_EVP_PKEY *peer); -WOLFSSL_API int wolfSSL_EVP_PKEY_derive(WOLFSSL_EVP_PKEY_CTX *ctx, unsigned char *key, size_t *keylen); - -WOLFSSL_API int wolfSSL_EVP_PKEY_decrypt(WOLFSSL_EVP_PKEY_CTX *ctx, - unsigned char *out, size_t *outlen, - const unsigned char *in, size_t inlen); -WOLFSSL_API int wolfSSL_EVP_PKEY_decrypt_init(WOLFSSL_EVP_PKEY_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_PKEY_encrypt(WOLFSSL_EVP_PKEY_CTX *ctx, - unsigned char *out, size_t *outlen, - const unsigned char *in, size_t inlen); -WOLFSSL_API int wolfSSL_EVP_PKEY_encrypt_init(WOLFSSL_EVP_PKEY_CTX *ctx); -WOLFSSL_API WOLFSSL_EVP_PKEY *wolfSSL_EVP_PKEY_new(void); -WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_EVP_PKEY_new_ex(void* heap); -WOLFSSL_API void wolfSSL_EVP_PKEY_free(WOLFSSL_EVP_PKEY*); -WOLFSSL_API int wolfSSL_EVP_PKEY_size(WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API int wolfSSL_EVP_PKEY_missing_parameters(WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API int wolfSSL_EVP_PKEY_cmp(const WOLFSSL_EVP_PKEY *a, const WOLFSSL_EVP_PKEY *b); -WOLFSSL_API int wolfSSL_EVP_PKEY_type(int type); -WOLFSSL_API int wolfSSL_EVP_PKEY_id(const EVP_PKEY *pkey); -WOLFSSL_API int wolfSSL_EVP_PKEY_base_id(const EVP_PKEY *pkey); -WOLFSSL_API int wolfSSL_EVP_SignFinal(WOLFSSL_EVP_MD_CTX *ctx, unsigned char *sigret, - unsigned int *siglen, WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API int wolfSSL_EVP_SignInit(WOLFSSL_EVP_MD_CTX *ctx, const WOLFSSL_EVP_MD *type); -WOLFSSL_API int wolfSSL_EVP_SignInit_ex(WOLFSSL_EVP_MD_CTX* ctx, - const WOLFSSL_EVP_MD* type, - WOLFSSL_ENGINE *impl); -WOLFSSL_API int wolfSSL_EVP_SignUpdate(WOLFSSL_EVP_MD_CTX *ctx, const void *data, size_t len); -WOLFSSL_API int wolfSSL_EVP_VerifyFinal(WOLFSSL_EVP_MD_CTX *ctx, - unsigned char* sig, unsigned int sig_len, WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API int wolfSSL_EVP_VerifyInit(WOLFSSL_EVP_MD_CTX *ctx, const WOLFSSL_EVP_MD *type); -WOLFSSL_API int wolfSSL_EVP_VerifyUpdate(WOLFSSL_EVP_MD_CTX *ctx, const void *data, size_t len); - - -/* these next ones don't need real OpenSSL type, for OpenSSH compat only */ -WOLFSSL_API void* wolfSSL_EVP_X_STATE(const WOLFSSL_EVP_CIPHER_CTX* ctx); -WOLFSSL_API int wolfSSL_EVP_X_STATE_LEN(const WOLFSSL_EVP_CIPHER_CTX* ctx); - -WOLFSSL_API void wolfSSL_3des_iv(WOLFSSL_EVP_CIPHER_CTX* ctx, int doset, - unsigned char* iv, int len); -WOLFSSL_API void wolfSSL_aes_ctr_iv(WOLFSSL_EVP_CIPHER_CTX* ctx, int doset, - unsigned char* iv, int len); - -WOLFSSL_API int wolfSSL_StoreExternalIV(WOLFSSL_EVP_CIPHER_CTX* ctx); -WOLFSSL_API int wolfSSL_SetInternalIV(WOLFSSL_EVP_CIPHER_CTX* ctx); - -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_block_size(const WOLFSSL_EVP_CIPHER_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_CIPHER_block_size(const WOLFSSL_EVP_CIPHER *cipher); -WOLFSSL_API unsigned long WOLFSSL_EVP_CIPHER_mode(const WOLFSSL_EVP_CIPHER *cipher); -WOLFSSL_API unsigned long WOLFSSL_CIPHER_mode(const WOLFSSL_EVP_CIPHER *cipher); -WOLFSSL_API unsigned long wolfSSL_EVP_CIPHER_flags(const WOLFSSL_EVP_CIPHER *cipher); -WOLFSSL_API void wolfSSL_EVP_CIPHER_CTX_set_flags(WOLFSSL_EVP_CIPHER_CTX *ctx, int flags); -WOLFSSL_API void wolfSSL_EVP_CIPHER_CTX_clear_flags(WOLFSSL_EVP_CIPHER_CTX *ctx, int flags); -WOLFSSL_API unsigned long wolfSSL_EVP_CIPHER_CTX_mode(const WOLFSSL_EVP_CIPHER_CTX *ctx); -WOLFSSL_API int wolfSSL_EVP_CIPHER_CTX_set_padding(WOLFSSL_EVP_CIPHER_CTX *c, int pad); -WOLFSSL_API int wolfSSL_EVP_add_digest(const WOLFSSL_EVP_MD *digest); -WOLFSSL_API int wolfSSL_EVP_add_cipher(const WOLFSSL_EVP_CIPHER *cipher); -WOLFSSL_API void wolfSSL_EVP_cleanup(void); -WOLFSSL_API int wolfSSL_add_all_algorithms(void); -WOLFSSL_API int wolfSSL_OpenSSL_add_all_algorithms_conf(void); -WOLFSSL_API int wolfSSL_OpenSSL_add_all_algorithms_noconf(void); -WOLFSSL_API int wolfSSL_EVP_read_pw_string(char*, int, const char*, int); - -WOLFSSL_API int wolfSSL_PKCS5_PBKDF2_HMAC_SHA1(const char * pass, int passlen, - const unsigned char * salt, - int saltlen, int iter, - int keylen, unsigned char *out); - -WOLFSSL_API int wolfSSL_PKCS5_PBKDF2_HMAC(const char *pass, int passlen, - const unsigned char *salt, - int saltlen, int iter, - const WOLFSSL_EVP_MD *digest, - int keylen, unsigned char *out); - -WOLFSSL_LOCAL int wolfSSL_EVP_get_hashinfo(const WOLFSSL_EVP_MD* evp, - int* pHash, int* pHashSz); - -#define EVP_CIPH_STREAM_CIPHER WOLFSSL_EVP_CIPH_STREAM_CIPHER -#define EVP_CIPH_ECB_MODE WOLFSSL_EVP_CIPH_ECB_MODE -#define EVP_CIPH_CBC_MODE WOLFSSL_EVP_CIPH_CBC_MODE -#define EVP_CIPH_CFB_MODE WOLFSSL_EVP_CIPH_CFB_MODE -#define EVP_CIPH_OFB_MODE WOLFSSL_EVP_CIPH_OFB_MODE -#define EVP_CIPH_CTR_MODE WOLFSSL_EVP_CIPH_CTR_MODE -#define EVP_CIPH_GCM_MODE WOLFSSL_EVP_CIPH_GCM_MODE -#define EVP_CIPH_CCM_MODE WOLFSSL_EVP_CIPH_CCM_MODE -#define EVP_CIPH_XTS_MODE WOLFSSL_EVP_CIPH_XTS_MODE - -#define WOLFSSL_EVP_CIPH_MODE 0x0007 -#define WOLFSSL_EVP_CIPH_STREAM_CIPHER 0x0 -#define WOLFSSL_EVP_CIPH_ECB_MODE 0x1 -#define WOLFSSL_EVP_CIPH_CBC_MODE 0x2 -#define WOLFSSL_EVP_CIPH_CFB_MODE 0x3 -#define WOLFSSL_EVP_CIPH_OFB_MODE 0x4 -#define WOLFSSL_EVP_CIPH_CTR_MODE 0x5 -#define WOLFSSL_EVP_CIPH_GCM_MODE 0x6 -#define WOLFSSL_EVP_CIPH_CCM_MODE 0x7 -#define WOLFSSL_EVP_CIPH_XTS_MODE 0x10 -#define WOLFSSL_EVP_CIPH_NO_PADDING 0x100 -#define EVP_CIPH_VARIABLE_LENGTH 0x200 -#define WOLFSSL_EVP_CIPH_TYPE_INIT 0xff - -/* end OpenSSH compat */ - -typedef WOLFSSL_EVP_MD EVP_MD; -typedef WOLFSSL_EVP_CIPHER EVP_CIPHER; -typedef WOLFSSL_EVP_MD_CTX EVP_MD_CTX; -typedef WOLFSSL_EVP_CIPHER_CTX EVP_CIPHER_CTX; - -#ifndef NO_MD4 - #define EVP_md4 wolfSSL_EVP_md4 -#endif -#ifndef NO_MD5 - #define EVP_md5 wolfSSL_EVP_md5 -#endif -#define EVP_sha1 wolfSSL_EVP_sha1 -#define EVP_mdc2 wolfSSL_EVP_mdc2 -#define EVP_dds1 wolfSSL_EVP_sha1 -#define EVP_sha224 wolfSSL_EVP_sha224 -#define EVP_sha256 wolfSSL_EVP_sha256 -#define EVP_sha384 wolfSSL_EVP_sha384 -#define EVP_sha512 wolfSSL_EVP_sha512 -#define EVP_ripemd160 wolfSSL_EVP_ripemd160 - -#define EVP_sha3_224 wolfSSL_EVP_sha3_224 -#define EVP_sha3_256 wolfSSL_EVP_sha3_256 -#define EVP_sha3_384 wolfSSL_EVP_sha3_384 -#define EVP_sha3_512 wolfSSL_EVP_sha3_512 - -#define EVP_aes_128_cbc wolfSSL_EVP_aes_128_cbc -#define EVP_aes_192_cbc wolfSSL_EVP_aes_192_cbc -#define EVP_aes_256_cbc wolfSSL_EVP_aes_256_cbc -#define EVP_aes_128_cfb1 wolfSSL_EVP_aes_128_cfb1 -#define EVP_aes_192_cfb1 wolfSSL_EVP_aes_192_cfb1 -#define EVP_aes_256_cfb1 wolfSSL_EVP_aes_256_cfb1 -#define EVP_aes_128_cfb8 wolfSSL_EVP_aes_128_cfb8 -#define EVP_aes_192_cfb8 wolfSSL_EVP_aes_192_cfb8 -#define EVP_aes_256_cfb8 wolfSSL_EVP_aes_256_cfb8 -#define EVP_aes_128_cfb128 wolfSSL_EVP_aes_128_cfb128 -#define EVP_aes_192_cfb128 wolfSSL_EVP_aes_192_cfb128 -#define EVP_aes_256_cfb128 wolfSSL_EVP_aes_256_cfb128 -#define EVP_aes_128_ofb wolfSSL_EVP_aes_128_ofb -#define EVP_aes_192_ofb wolfSSL_EVP_aes_192_ofb -#define EVP_aes_256_ofb wolfSSL_EVP_aes_256_ofb -#define EVP_aes_128_xts wolfSSL_EVP_aes_128_xts -#define EVP_aes_256_xts wolfSSL_EVP_aes_256_xts -#define EVP_aes_128_gcm wolfSSL_EVP_aes_128_gcm -#define EVP_aes_192_gcm wolfSSL_EVP_aes_192_gcm -#define EVP_aes_256_gcm wolfSSL_EVP_aes_256_gcm -#define EVP_aes_128_ecb wolfSSL_EVP_aes_128_ecb -#define EVP_aes_192_ecb wolfSSL_EVP_aes_192_ecb -#define EVP_aes_256_ecb wolfSSL_EVP_aes_256_ecb -#define EVP_aes_128_ctr wolfSSL_EVP_aes_128_ctr -#define EVP_aes_192_ctr wolfSSL_EVP_aes_192_ctr -#define EVP_aes_256_ctr wolfSSL_EVP_aes_256_ctr -#define EVP_des_cbc wolfSSL_EVP_des_cbc -#define EVP_des_ecb wolfSSL_EVP_des_ecb -#define EVP_des_ede3_cbc wolfSSL_EVP_des_ede3_cbc -#define EVP_des_ede3_ecb wolfSSL_EVP_des_ede3_ecb -#define EVP_rc4 wolfSSL_EVP_rc4 -#define EVP_idea_cbc wolfSSL_EVP_idea_cbc -#define EVP_enc_null wolfSSL_EVP_enc_null - -#define EVP_MD_size wolfSSL_EVP_MD_size -#define EVP_MD_CTX_new wolfSSL_EVP_MD_CTX_new -#define EVP_MD_CTX_create wolfSSL_EVP_MD_CTX_new -#define EVP_MD_CTX_free wolfSSL_EVP_MD_CTX_free -#define EVP_MD_CTX_destroy wolfSSL_EVP_MD_CTX_free -#define EVP_MD_CTX_init wolfSSL_EVP_MD_CTX_init -#define EVP_MD_CTX_cleanup wolfSSL_EVP_MD_CTX_cleanup -#define EVP_MD_CTX_reset wolfSSL_EVP_MD_CTX_cleanup -#define EVP_MD_CTX_md wolfSSL_EVP_MD_CTX_md -#define EVP_MD_CTX_type wolfSSL_EVP_MD_CTX_type -#define EVP_MD_CTX_size wolfSSL_EVP_MD_CTX_size -#define EVP_MD_CTX_block_size wolfSSL_EVP_MD_CTX_block_size -#define EVP_MD_type wolfSSL_EVP_MD_type - -#define EVP_Digest wolfSSL_EVP_Digest -#define EVP_DigestInit wolfSSL_EVP_DigestInit -#define EVP_DigestInit_ex wolfSSL_EVP_DigestInit_ex -#define EVP_DigestUpdate wolfSSL_EVP_DigestUpdate -#define EVP_DigestFinal wolfSSL_EVP_DigestFinal -#define EVP_DigestFinal_ex wolfSSL_EVP_DigestFinal_ex -#define EVP_DigestSignInit wolfSSL_EVP_DigestSignInit -#define EVP_DigestSignUpdate wolfSSL_EVP_DigestSignUpdate -#define EVP_DigestSignFinal wolfSSL_EVP_DigestSignFinal -#define EVP_DigestVerifyInit wolfSSL_EVP_DigestVerifyInit -#define EVP_DigestVerifyUpdate wolfSSL_EVP_DigestVerifyUpdate -#define EVP_DigestVerifyFinal wolfSSL_EVP_DigestVerifyFinal -#define EVP_BytesToKey wolfSSL_EVP_BytesToKey - -#define EVP_get_cipherbyname wolfSSL_EVP_get_cipherbyname -#define EVP_get_digestbyname wolfSSL_EVP_get_digestbyname - -#define EVP_CIPHER_CTX_init wolfSSL_EVP_CIPHER_CTX_init -#define EVP_CIPHER_CTX_cleanup wolfSSL_EVP_CIPHER_CTX_cleanup -#define EVP_CIPHER_CTX_iv_length wolfSSL_EVP_CIPHER_CTX_iv_length -#define EVP_CIPHER_CTX_key_length wolfSSL_EVP_CIPHER_CTX_key_length -#define EVP_CIPHER_CTX_set_key_length wolfSSL_EVP_CIPHER_CTX_set_key_length -#define EVP_CIPHER_CTX_mode wolfSSL_EVP_CIPHER_CTX_mode -#define EVP_CIPHER_CTX_cipher wolfSSL_EVP_CIPHER_CTX_cipher - -#define EVP_CIPHER_iv_length wolfSSL_EVP_CIPHER_iv_length -#define EVP_CIPHER_key_length wolfSSL_EVP_Cipher_key_length - -#define EVP_CipherInit wolfSSL_EVP_CipherInit -#define EVP_CipherInit_ex wolfSSL_EVP_CipherInit_ex -#define EVP_EncryptInit wolfSSL_EVP_EncryptInit -#define EVP_EncryptInit_ex wolfSSL_EVP_EncryptInit_ex -#define EVP_DecryptInit wolfSSL_EVP_DecryptInit -#define EVP_DecryptInit_ex wolfSSL_EVP_DecryptInit_ex - -#define EVP_Cipher wolfSSL_EVP_Cipher -#define EVP_CipherUpdate wolfSSL_EVP_CipherUpdate -#define EVP_EncryptUpdate wolfSSL_EVP_CipherUpdate -#define EVP_DecryptUpdate wolfSSL_EVP_CipherUpdate -#define EVP_CipherFinal wolfSSL_EVP_CipherFinal -#define EVP_CipherFinal_ex wolfSSL_EVP_CipherFinal -#define EVP_EncryptFinal wolfSSL_EVP_CipherFinal -#define EVP_EncryptFinal_ex wolfSSL_EVP_CipherFinal -#define EVP_DecryptFinal wolfSSL_EVP_CipherFinal -#define EVP_DecryptFinal_ex wolfSSL_EVP_CipherFinal - -#define EVP_CIPHER_CTX_free wolfSSL_EVP_CIPHER_CTX_free -#define EVP_CIPHER_CTX_reset wolfSSL_EVP_CIPHER_CTX_reset -#define EVP_CIPHER_CTX_new wolfSSL_EVP_CIPHER_CTX_new - -#define EVP_get_cipherbynid wolfSSL_EVP_get_cipherbynid -#define EVP_get_digestbynid wolfSSL_EVP_get_digestbynid -#define EVP_get_cipherbyname wolfSSL_EVP_get_cipherbyname -#define EVP_get_digestbyname wolfSSL_EVP_get_digestbyname - -#define EVP_PKEY_assign wolfSSL_EVP_PKEY_assign -#define EVP_PKEY_assign_RSA wolfSSL_EVP_PKEY_assign_RSA -#define EVP_PKEY_assign_DSA wolfSSL_EVP_PKEY_assign_DSA -#define EVP_PKEY_assign_DH wolfSSL_EVP_PKEY_assign_DH -#define EVP_PKEY_assign_EC_KEY wolfSSL_EVP_PKEY_assign_EC_KEY -#define EVP_PKEY_get1_DSA wolfSSL_EVP_PKEY_get1_DSA -#define EVP_PKEY_set1_DSA wolfSSL_EVP_PKEY_set1_DSA -#define EVP_PKEY_get0_RSA wolfSSL_EVP_PKEY_get0_RSA -#define EVP_PKEY_get1_RSA wolfSSL_EVP_PKEY_get1_RSA -#define EVP_PKEY_set1_RSA wolfSSL_EVP_PKEY_set1_RSA -#define EVP_PKEY_set1_EC_KEY wolfSSL_EVP_PKEY_set1_EC_KEY -#define EVP_PKEY_get1_EC_KEY wolfSSL_EVP_PKEY_get1_EC_KEY -#define EVP_PKEY_set1_DH wolfSSL_EVP_PKEY_set1_DH -#define EVP_PKEY_get0_DH wolfSSL_EVP_PKEY_get0_DH -#define EVP_PKEY_get1_DH wolfSSL_EVP_PKEY_get1_DH -#define EVP_PKEY_get0_EC_KEY wolfSSL_EVP_PKEY_get0_EC_KEY -#define EVP_PKEY_get0_hmac wolfSSL_EVP_PKEY_get0_hmac -#define EVP_PKEY_new_mac_key wolfSSL_EVP_PKEY_new_mac_key -#define EVP_MD_CTX_copy wolfSSL_EVP_MD_CTX_copy -#define EVP_MD_CTX_copy_ex wolfSSL_EVP_MD_CTX_copy_ex -#define EVP_PKEY_sign_init wolfSSL_EVP_PKEY_sign_init -#define EVP_PKEY_sign wolfSSL_EVP_PKEY_sign -#define EVP_PKEY_keygen wolfSSL_EVP_PKEY_keygen -#define EVP_PKEY_keygen_init wolfSSL_EVP_PKEY_keygen_init -#define EVP_PKEY_bits wolfSSL_EVP_PKEY_bits -#define EVP_PKEY_CTX_free wolfSSL_EVP_PKEY_CTX_free -#define EVP_PKEY_CTX_new wolfSSL_EVP_PKEY_CTX_new -#define EVP_PKEY_CTX_set_rsa_padding wolfSSL_EVP_PKEY_CTX_set_rsa_padding -#define EVP_PKEY_CTX_new_id wolfSSL_EVP_PKEY_CTX_new_id -#define EVP_PKEY_CTX_set_rsa_keygen_bits wolfSSL_EVP_PKEY_CTX_set_rsa_keygen_bits -#define EVP_PKEY_derive_init wolfSSL_EVP_PKEY_derive_init -#define EVP_PKEY_derive_set_peer wolfSSL_EVP_PKEY_derive_set_peer -#define EVP_PKEY_derive wolfSSL_EVP_PKEY_derive -#define EVP_PKEY_decrypt wolfSSL_EVP_PKEY_decrypt -#define EVP_PKEY_decrypt_init wolfSSL_EVP_PKEY_decrypt_init -#define EVP_PKEY_encrypt wolfSSL_EVP_PKEY_encrypt -#define EVP_PKEY_encrypt_init wolfSSL_EVP_PKEY_encrypt_init -#define EVP_PKEY_new wolfSSL_EVP_PKEY_new -#define EVP_PKEY_free wolfSSL_EVP_PKEY_free -#define EVP_PKEY_up_ref wolfSSL_EVP_PKEY_up_ref -#define EVP_PKEY_size wolfSSL_EVP_PKEY_size -#define EVP_PKEY_missing_parameters wolfSSL_EVP_PKEY_missing_parameters -#define EVP_PKEY_cmp wolfSSL_EVP_PKEY_cmp -#define EVP_PKEY_type wolfSSL_EVP_PKEY_type -#define EVP_PKEY_base_id wolfSSL_EVP_PKEY_base_id -#define EVP_PKEY_id wolfSSL_EVP_PKEY_id -#define EVP_SignFinal wolfSSL_EVP_SignFinal -#define EVP_SignInit wolfSSL_EVP_SignInit -#define EVP_SignInit_ex wolfSSL_EVP_SignInit_ex -#define EVP_SignUpdate wolfSSL_EVP_SignUpdate -#define EVP_VerifyFinal wolfSSL_EVP_VerifyFinal -#define EVP_VerifyInit wolfSSL_EVP_VerifyInit -#define EVP_VerifyUpdate wolfSSL_EVP_VerifyUpdate - -#define EVP_CIPHER_CTX_ctrl wolfSSL_EVP_CIPHER_CTX_ctrl -#define EVP_CIPHER_CTX_block_size wolfSSL_EVP_CIPHER_CTX_block_size -#define EVP_CIPHER_block_size wolfSSL_EVP_CIPHER_block_size -#define EVP_CIPHER_flags wolfSSL_EVP_CIPHER_flags -#define EVP_CIPHER_CTX_set_flags wolfSSL_EVP_CIPHER_CTX_set_flags -#define EVP_CIPHER_CTX_clear_flags wolfSSL_EVP_CIPHER_CTX_clear_flags -#define EVP_CIPHER_CTX_set_padding wolfSSL_EVP_CIPHER_CTX_set_padding -#define EVP_CIPHER_CTX_flags wolfSSL_EVP_CIPHER_CTX_flags -#define EVP_CIPHER_CTX_set_iv wolfSSL_EVP_CIPHER_CTX_set_iv -#define EVP_add_digest wolfSSL_EVP_add_digest -#define EVP_add_cipher wolfSSL_EVP_add_cipher -#define EVP_cleanup wolfSSL_EVP_cleanup -#define EVP_read_pw_string wolfSSL_EVP_read_pw_string -#define EVP_rc2_cbc wolfSSL_EVP_rc2_cbc - -#define OpenSSL_add_all_digests() wolfSSL_EVP_init() -#define OpenSSL_add_all_ciphers() wolfSSL_EVP_init() -#define OpenSSL_add_all_algorithms wolfSSL_add_all_algorithms -#define OpenSSL_add_all_algorithms_noconf wolfSSL_OpenSSL_add_all_algorithms_noconf -#define OpenSSL_add_all_algorithms_conf wolfSSL_OpenSSL_add_all_algorithms_conf - -#define wolfSSL_OPENSSL_add_all_algorithms_noconf wolfSSL_OpenSSL_add_all_algorithms_noconf -#define wolfSSL_OPENSSL_add_all_algorithms_conf wolfSSL_OpenSSL_add_all_algorithms_conf - -/* provides older OpenSSL API compatibility */ -#define OPENSSL_add_all_algorithms OpenSSL_add_all_algorithms -#define OPENSSL_add_all_algorithms_noconf OpenSSL_add_all_algorithms_noconf -#define OPENSSL_add_all_algorithms_conf OpenSSL_add_all_algorithms_conf - -#define NO_PADDING_BLOCK_SIZE 1 - -#define PKCS5_PBKDF2_HMAC_SHA1 wolfSSL_PKCS5_PBKDF2_HMAC_SHA1 -#define PKCS5_PBKDF2_HMAC wolfSSL_PKCS5_PBKDF2_HMAC - -/* OpenSSL compat. ctrl values */ -#define EVP_CTRL_INIT 0x0 -#define EVP_CTRL_SET_KEY_LENGTH 0x1 -#define EVP_CTRL_SET_RC2_KEY_BITS 0x3 /* needed for qt compilation */ - -#define EVP_CTRL_AEAD_SET_IVLEN 0x9 -#define EVP_CTRL_AEAD_GET_TAG 0x10 -#define EVP_CTRL_AEAD_SET_TAG 0x11 -#define EVP_CTRL_AEAD_SET_IV_FIXED 0x12 -#define EVP_CTRL_GCM_IV_GEN 0x13 -#define EVP_CTRL_GCM_SET_IVLEN EVP_CTRL_AEAD_SET_IVLEN -#define EVP_CTRL_GCM_GET_TAG EVP_CTRL_AEAD_GET_TAG -#define EVP_CTRL_GCM_SET_TAG EVP_CTRL_AEAD_SET_TAG -#define EVP_CTRL_GCM_SET_IV_FIXED EVP_CTRL_AEAD_SET_IV_FIXED - -#define EVP_PKEY_print_private(arg1, arg2, arg3, arg4) - -#ifndef EVP_MAX_MD_SIZE - #define EVP_MAX_MD_SIZE 64 /* sha512 */ -#endif - -#ifndef EVP_MAX_KEY_LENGTH -#define EVP_MAX_KEY_LENGTH 64 -#endif - -#ifndef EVP_MAX_IV_LENGTH -#define EVP_MAX_IV_LENGTH 16 -#endif - -#ifndef EVP_MAX_BLOCK_LENGTH - #define EVP_MAX_BLOCK_LENGTH 32 /* 2 * blocklen(AES)? */ - /* They define this as 32. Using the same value here. */ -#endif - -#ifndef EVP_MAX_IV_LENGTH - #define EVP_MAX_IV_LENGTH 16 -#endif - - -#define EVP_R_BAD_DECRYPT (-MIN_CODE_E + 100 + 1) -#define EVP_R_BN_DECODE_ERROR (-MIN_CODE_E + 100 + 2) -#define EVP_R_DECODE_ERROR (-MIN_CODE_E + 100 + 3) -#define EVP_R_PRIVATE_KEY_DECODE_ERROR (-MIN_CODE_E + 100 + 4) - -#define EVP_PKEY_NONE NID_undef -#define EVP_PKEY_RSA 6 -#define EVP_PKEY_RSA2 19 -#define EVP_PKEY_DH 28 -#define EVP_CIPHER_mode WOLFSSL_CIPHER_mode -/* WOLFSSL_EVP_CIPHER is just the string name of the cipher */ -#define EVP_CIPHER_name(x) x -#define EVP_MD_CTX_reset wolfSSL_EVP_MD_CTX_cleanup -/* WOLFSSL_EVP_MD is just the string name of the digest */ -#define EVP_MD_name(x) x -#define EVP_CIPHER_nid wolfSSL_EVP_CIPHER_nid - - -WOLFSSL_API void printPKEY(WOLFSSL_EVP_PKEY *k); - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#include <wolfssl/openssl/objects.h> - -#endif /* WOLFSSL_EVP_H_ */ diff --git a/client/wolfssl/wolfssl/openssl/hmac.h b/client/wolfssl/wolfssl/openssl/hmac.h deleted file mode 100644 index 6ebd6dc..0000000 --- a/client/wolfssl/wolfssl/openssl/hmac.h +++ /dev/null @@ -1,100 +0,0 @@ -/* hmac.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -/* hmac.h defines mini hamc openssl compatibility layer - * - */ - - -#ifndef WOLFSSL_HMAC_H_ -#define WOLFSSL_HMAC_H_ - -#include <wolfssl/wolfcrypt/settings.h> - -#ifdef WOLFSSL_PREFIX -#include "prefix_hmac.h" -#endif - -#include <wolfssl/openssl/evp.h> -#include <wolfssl/openssl/opensslv.h> -#include <wolfssl/wolfcrypt/hmac.h> - -#ifdef __cplusplus - extern "C" { -#endif - - -WOLFSSL_API unsigned char* wolfSSL_HMAC(const WOLFSSL_EVP_MD* evp_md, - const void* key, int key_len, - const unsigned char* d, int n, unsigned char* md, - unsigned int* md_len); - - -typedef struct WOLFSSL_HMAC_CTX { - Hmac hmac; - int type; - word32 save_ipad[WC_HMAC_BLOCK_SIZE / sizeof(word32)]; /* same block size all*/ - word32 save_opad[WC_HMAC_BLOCK_SIZE / sizeof(word32)]; -} WOLFSSL_HMAC_CTX; - - -WOLFSSL_API WOLFSSL_HMAC_CTX* wolfSSL_HMAC_CTX_new(void); -WOLFSSL_API int wolfSSL_HMAC_CTX_Init(WOLFSSL_HMAC_CTX* ctx); -WOLFSSL_API int wolfSSL_HMAC_CTX_copy(WOLFSSL_HMAC_CTX* des, - WOLFSSL_HMAC_CTX* src); -WOLFSSL_LOCAL int wolfSSL_HmacCopy(Hmac* des, Hmac* src); -WOLFSSL_API int wolfSSL_HMAC_Init(WOLFSSL_HMAC_CTX* ctx, const void* key, - int keylen, const EVP_MD* type); -WOLFSSL_API int wolfSSL_HMAC_Init_ex(WOLFSSL_HMAC_CTX* ctx, const void* key, - int keylen, const EVP_MD* type, WOLFSSL_ENGINE* e); -WOLFSSL_API int wolfSSL_HMAC_Update(WOLFSSL_HMAC_CTX* ctx, - const unsigned char* data, int len); -WOLFSSL_API int wolfSSL_HMAC_Final(WOLFSSL_HMAC_CTX* ctx, unsigned char* hash, - unsigned int* len); -WOLFSSL_API int wolfSSL_HMAC_cleanup(WOLFSSL_HMAC_CTX* ctx); -WOLFSSL_API void wolfSSL_HMAC_CTX_free(WOLFSSL_HMAC_CTX* ctx); -WOLFSSL_API size_t wolfSSL_HMAC_size(const WOLFSSL_HMAC_CTX *ctx); - -typedef struct WOLFSSL_HMAC_CTX HMAC_CTX; - -#define HMAC(a,b,c,d,e,f,g) wolfSSL_HMAC((a),(b),(c),(d),(e),(f),(g)) - -#define HMAC_CTX_new wolfSSL_HMAC_CTX_new -#define HMAC_CTX_init wolfSSL_HMAC_CTX_Init -#define HMAC_CTX_copy wolfSSL_HMAC_CTX_copy -#define HMAC_CTX_free wolfSSL_HMAC_CTX_free -#define HMAC_CTX_reset wolfSSL_HMAC_cleanup -#define HMAC_Init_ex wolfSSL_HMAC_Init_ex -#define HMAC_Init wolfSSL_HMAC_Init -#define HMAC_Update wolfSSL_HMAC_Update -#define HMAC_Final wolfSSL_HMAC_Final -#define HMAC_cleanup wolfSSL_HMAC_cleanup -#define HMAC_size wolfSSL_HMAC_size - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* WOLFSSL_HMAC_H_ */ diff --git a/client/wolfssl/wolfssl/openssl/include.am b/client/wolfssl/wolfssl/openssl/include.am deleted file mode 100644 index c4ab394..0000000 --- a/client/wolfssl/wolfssl/openssl/include.am +++ /dev/null @@ -1,52 +0,0 @@ -# vim:ft=automake -# All paths should be given relative to the root - -nobase_include_HEADERS+= \ - wolfssl/openssl/asn1.h \ - wolfssl/openssl/asn1t.h \ - wolfssl/openssl/aes.h\ - wolfssl/openssl/bio.h \ - wolfssl/openssl/bn.h \ - wolfssl/openssl/buffer.h \ - wolfssl/openssl/conf.h \ - wolfssl/openssl/crypto.h \ - wolfssl/openssl/des.h \ - wolfssl/openssl/dh.h \ - wolfssl/openssl/dsa.h \ - wolfssl/openssl/ecdsa.h \ - wolfssl/openssl/ecdh.h \ - wolfssl/openssl/ec.h \ - wolfssl/openssl/ec25519.h \ - wolfssl/openssl/ed25519.h \ - wolfssl/openssl/ec448.h \ - wolfssl/openssl/ed448.h \ - wolfssl/openssl/engine.h \ - wolfssl/openssl/err.h \ - wolfssl/openssl/evp.h \ - wolfssl/openssl/hmac.h \ - wolfssl/openssl/lhash.h \ - wolfssl/openssl/md4.h \ - wolfssl/openssl/md5.h \ - wolfssl/openssl/ripemd.h \ - wolfssl/openssl/obj_mac.h \ - wolfssl/openssl/objects.h \ - wolfssl/openssl/ocsp.h \ - wolfssl/openssl/opensslconf.h \ - wolfssl/openssl/opensslv.h \ - wolfssl/openssl/ossl_typ.h \ - wolfssl/openssl/pem.h \ - wolfssl/openssl/pkcs12.h \ - wolfssl/openssl/pkcs7.h \ - wolfssl/openssl/rand.h \ - wolfssl/openssl/rsa.h \ - wolfssl/openssl/sha.h \ - wolfssl/openssl/sha3.h \ - wolfssl/openssl/ssl23.h \ - wolfssl/openssl/ssl.h \ - wolfssl/openssl/stack.h \ - wolfssl/openssl/tls1.h \ - wolfssl/openssl/ui.h \ - wolfssl/openssl/x509.h \ - wolfssl/openssl/x509_vfy.h \ - wolfssl/openssl/x509v3.h \ - wolfssl/openssl/rc4.h diff --git a/client/wolfssl/wolfssl/openssl/lhash.h b/client/wolfssl/wolfssl/openssl/lhash.h deleted file mode 100644 index 01f8535..0000000 --- a/client/wolfssl/wolfssl/openssl/lhash.h +++ /dev/null @@ -1,2 +0,0 @@ -/* lhash.h for openSSL */ - diff --git a/client/wolfssl/wolfssl/openssl/md4.h b/client/wolfssl/wolfssl/openssl/md4.h deleted file mode 100644 index aafe9cc..0000000 --- a/client/wolfssl/wolfssl/openssl/md4.h +++ /dev/null @@ -1,62 +0,0 @@ -/* md4.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLFSSL_MD4_H_ -#define WOLFSSL_MD4_H_ - -#include <wolfssl/wolfcrypt/settings.h> - -#ifndef NO_MD4 - -#ifdef WOLFSSL_PREFIX -#include "prefix_md4.h" -#endif - -#ifdef __cplusplus - extern "C" { -#endif - - -typedef struct WOLFSSL_MD4_CTX { - int buffer[32]; /* big enough to hold, check size in Init */ -} WOLFSSL_MD4_CTX; - - -WOLFSSL_API void wolfSSL_MD4_Init(WOLFSSL_MD4_CTX*); -WOLFSSL_API void wolfSSL_MD4_Update(WOLFSSL_MD4_CTX*, const void*, unsigned long); -WOLFSSL_API void wolfSSL_MD4_Final(unsigned char*, WOLFSSL_MD4_CTX*); - - -typedef WOLFSSL_MD4_CTX MD4_CTX; - -#define MD4_Init wolfSSL_MD4_Init -#define MD4_Update wolfSSL_MD4_Update -#define MD4_Final wolfSSL_MD4_Final - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* NO_MD4 */ - -#endif /* WOLFSSL_MD4_H_ */ - diff --git a/client/wolfssl/wolfssl/openssl/md5.h b/client/wolfssl/wolfssl/openssl/md5.h deleted file mode 100644 index 49ac1e3..0000000 --- a/client/wolfssl/wolfssl/openssl/md5.h +++ /dev/null @@ -1,81 +0,0 @@ -/* md5.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* md5.h for openssl */ - - -#ifndef WOLFSSL_MD5_H_ -#define WOLFSSL_MD5_H_ - -#include <wolfssl/wolfcrypt/settings.h> - -#ifndef NO_MD5 - -#include <wolfssl/wolfcrypt/hash.h> - -#ifdef WOLFSSL_PREFIX -#include "prefix_md5.h" -#endif - -#ifdef __cplusplus - extern "C" { -#endif - - -typedef struct WOLFSSL_MD5_CTX { - /* big enough to hold wolfcrypt md5, but check on init */ -#ifdef STM32_HASH - void* holder[(112 + WC_ASYNC_DEV_SIZE + sizeof(STM32_HASH_Context)) / sizeof(void*)]; -#else - void* holder[(112 + WC_ASYNC_DEV_SIZE) / sizeof(void*)]; -#endif -} WOLFSSL_MD5_CTX; - -WOLFSSL_API int wolfSSL_MD5_Init(WOLFSSL_MD5_CTX*); -WOLFSSL_API int wolfSSL_MD5_Update(WOLFSSL_MD5_CTX*, const void*, unsigned long); -WOLFSSL_API int wolfSSL_MD5_Final(unsigned char*, WOLFSSL_MD5_CTX*); - - -typedef WOLFSSL_MD5_CTX MD5_CTX; - -#define MD5_Init wolfSSL_MD5_Init -#define MD5_Update wolfSSL_MD5_Update -#define MD5_Final wolfSSL_MD5_Final - -#ifdef OPENSSL_EXTRA_BSD - #define MD5Init wolfSSL_MD5_Init - #define MD5Update wolfSSL_MD5_Update - #define MD5Final wolfSSL_MD5_Final -#endif - -#ifndef MD5 -#define MD5(d, n, md) wc_Md5Hash((d), (n), (md)) -#endif - -#define MD5_DIGEST_LENGTH MD5_DIGEST_SIZE - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* NO_MD5 */ - -#endif /* WOLFSSL_MD5_H_ */ diff --git a/client/wolfssl/wolfssl/openssl/obj_mac.h b/client/wolfssl/wolfssl/openssl/obj_mac.h deleted file mode 100644 index 6d0f900..0000000 --- a/client/wolfssl/wolfssl/openssl/obj_mac.h +++ /dev/null @@ -1,50 +0,0 @@ -/* obj_mac.h - * - * Copyright (C) 2006-2017 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* obj_mac.h for openSSL */ - -#ifndef WOLFSSL_OBJ_MAC_H_ -#define WOLFSSL_OBJ_MAC_H_ -#ifdef __cplusplus - extern "C" { -#endif - -#define NID_sect163k1 721 -#define NID_sect163r1 722 -#define NID_sect163r2 723 -#define NID_sect193r1 724 -#define NID_sect193r2 725 -#define NID_sect233k1 726 -#define NID_sect233r1 727 -#define NID_sect239k1 728 -#define NID_sect283k1 729 -#define NID_sect283r1 730 -#define NID_sect409k1 731 -#define NID_sect409r1 732 -#define NID_sect571k1 733 -#define NID_sect571r1 734 - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_OBJ_MAC_H_ */ - diff --git a/client/wolfssl/wolfssl/openssl/objects.h b/client/wolfssl/wolfssl/openssl/objects.h deleted file mode 100644 index cd44b66..0000000 --- a/client/wolfssl/wolfssl/openssl/objects.h +++ /dev/null @@ -1,63 +0,0 @@ -/* objects.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLFSSL_OBJECTS_H_ -#define WOLFSSL_OBJECTS_H_ - -#include <wolfssl/wolfcrypt/settings.h> -//#include <wolfssl/openssl/ssl.h> -#ifndef OPENSSL_EXTRA_SSL_GUARD -#define OPENSSL_EXTRA_SSL_GUARD -#include <wolfssl/ssl.h> -#endif /* OPENSSL_EXTRA_SSL_GUARD */ - -#ifdef __cplusplus - extern "C" { -#endif - -#define OBJ_nid2sn wolfSSL_OBJ_nid2sn -#define OBJ_obj2nid wolfSSL_OBJ_obj2nid -#define OBJ_sn2nid wolfSSL_OBJ_sn2nid -#define OBJ_nid2ln wolfSSL_OBJ_nid2ln -#define OBJ_ln2nid wolfSSL_OBJ_ln2nid -#define OBJ_txt2nid wolfSSL_OBJ_txt2nid -#define OBJ_txt2obj wolfSSL_OBJ_txt2obj -#define OBJ_nid2obj wolfSSL_OBJ_nid2obj -#define OBJ_obj2txt wolfSSL_OBJ_obj2txt -#define OBJ_cleanup wolfSSL_OBJ_cleanup -#define OBJ_cmp wolfSSL_OBJ_cmp -#define OBJ_create wolfSSL_OBJ_create -#define ASN1_OBJECT_free wolfSSL_ASN1_OBJECT_free - -/* not required for wolfSSL */ -#define OPENSSL_load_builtin_modules() - - -#define NID_ad_OCSP 178 -#define NID_ad_ca_issuers 179 - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_OBJECTS_H_ */ diff --git a/client/wolfssl/wolfssl/openssl/ocsp.h b/client/wolfssl/wolfssl/openssl/ocsp.h deleted file mode 100644 index d880f23..0000000 --- a/client/wolfssl/wolfssl/openssl/ocsp.h +++ /dev/null @@ -1,82 +0,0 @@ -/* ocsp.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* ocsp.h for libcurl */ - -#ifndef WOLFSSL_OCSP_H_ -#define WOLFSSL_OCSP_H_ - -#ifdef HAVE_OCSP -#include <wolfssl/ocsp.h> - -#define OCSP_REQUEST OcspRequest -#define OCSP_RESPONSE OcspResponse -#define OCSP_BASICRESP WOLFSSL_OCSP_BASICRESP -#define OCSP_CERTID WOLFSSL_OCSP_CERTID -#define OCSP_ONEREQ WOLFSSL_OCSP_ONEREQ - -#define OCSP_REVOKED_STATUS_NOSTATUS -1 - - -#define OCSP_RESPONSE_STATUS_SUCCESSFUL 0 -#define OCSP_RESPONSE_STATUS_TRYLATER 3 - -#define V_OCSP_CERTSTATUS_GOOD 0 -#define V_OCSP_CERTSTATUS_REVOKED 1 -#define V_OCSP_CERTSTATUS_UNKNOWN 2 - -#define OCSP_resp_find_status wolfSSL_OCSP_resp_find_status -#define OCSP_cert_status_str wolfSSL_OCSP_cert_status_str -#define OCSP_check_validity wolfSSL_OCSP_check_validity - -#define OCSP_CERTID_free wolfSSL_OCSP_CERTID_free -#define OCSP_cert_to_id wolfSSL_OCSP_cert_to_id - -#define OCSP_BASICRESP_free wolfSSL_OCSP_BASICRESP_free -#define OCSP_basic_verify wolfSSL_OCSP_basic_verify - -#define OCSP_RESPONSE_free wolfSSL_OCSP_RESPONSE_free -#define d2i_OCSP_RESPONSE_bio wolfSSL_d2i_OCSP_RESPONSE_bio -#define d2i_OCSP_RESPONSE wolfSSL_d2i_OCSP_RESPONSE -#define i2d_OCSP_RESPONSE wolfSSL_i2d_OCSP_RESPONSE -#define OCSP_response_status wolfSSL_OCSP_response_status -#define OCSP_response_status_str wolfSSL_OCSP_response_status_str -#define OCSP_response_get1_basic wolfSSL_OCSP_response_get1_basic -#define OCSP_response_create wolfSSL_OCSP_response_create - -#define OCSP_REQUEST_new wolfSSL_OCSP_REQUEST_new -#define OCSP_REQUEST_free wolfSSL_OCSP_REQUEST_free -#define i2d_OCSP_REQUEST wolfSSL_i2d_OCSP_REQUEST -#define OCSP_request_add0_id wolfSSL_OCSP_request_add0_id -#define OCSP_request_add1_nonce wolfSSL_OCSP_request_add1_nonce -#define OCSP_check_nonce wolfSSL_OCSP_check_nonce -#define OCSP_id_get0_info wolfSSL_OCSP_id_get0_info -#define OCSP_crl_reason_str wolfSSL_OCSP_crl_reason_str -#define OCSP_REQUEST_add_ext wolfSSL_OCSP_REQUEST_add_ext - -#define OCSP_CERTID_dup wolfSSL_OCSP_CERTID_dup - -#define i2d_OCSP_REQUEST_bio wolfSSL_i2d_OCSP_REQUEST_bio - -#endif /* HAVE_OCSP */ - -#endif /* WOLFSSL_OCSP_H_ */ - diff --git a/client/wolfssl/wolfssl/openssl/opensslconf.h b/client/wolfssl/wolfssl/openssl/opensslconf.h deleted file mode 100644 index ac6b55b..0000000 --- a/client/wolfssl/wolfssl/openssl/opensslconf.h +++ /dev/null @@ -1,8 +0,0 @@ -/* opensslconf.h for openSSL */ - - -#ifndef OPENSSL_THREADS - #define OPENSSL_THREADS -#endif - - diff --git a/client/wolfssl/wolfssl/openssl/opensslv.h b/client/wolfssl/wolfssl/openssl/opensslv.h deleted file mode 100644 index 1ec8db1..0000000 --- a/client/wolfssl/wolfssl/openssl/opensslv.h +++ /dev/null @@ -1,45 +0,0 @@ -/* opensslv.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* opensslv.h compatibility */ - -#ifndef WOLFSSL_OPENSSLV_H_ -#define WOLFSSL_OPENSSLV_H_ - - -/* api version compatibility */ -#if defined(WOLFSSL_APACHE_HTTPD) - /* For Apache httpd, Use 1.1.0 compatibility */ - #define OPENSSL_VERSION_NUMBER 0x10100000L -#elif defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) || defined(HAVE_LIGHTY) || \ - defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) || \ - defined(WOLFSSL_OPENSSH) || defined(WOLFSSL_QT) - /* version number can be increased for Lighty after compatibility for ECDH - is added */ - #define OPENSSL_VERSION_NUMBER 0x1000100fL -#else - #define OPENSSL_VERSION_NUMBER 0x0090810fL -#endif - -#define OPENSSL_VERSION_TEXT LIBWOLFSSL_VERSION_STRING -#define OPENSSL_VERSION 0 - -#endif /* header */ diff --git a/client/wolfssl/wolfssl/openssl/ossl_typ.h b/client/wolfssl/wolfssl/openssl/ossl_typ.h deleted file mode 100644 index 5e90ffe..0000000 --- a/client/wolfssl/wolfssl/openssl/ossl_typ.h +++ /dev/null @@ -1,32 +0,0 @@ -/* ossl_typ.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/openssl/ossl_typ.h -*/ - - -#ifndef WOLFSSL_OSSL_TYP_H_ -#define WOLFSSL_OSSL_TYP_H_ - -#include <wolfssl/openssl/ssl.h> - -#endif /* !WOLFSSL_OSSL_TYP_H_ */ diff --git a/client/wolfssl/wolfssl/openssl/pem.h b/client/wolfssl/wolfssl/openssl/pem.h deleted file mode 100644 index 5d60291..0000000 --- a/client/wolfssl/wolfssl/openssl/pem.h +++ /dev/null @@ -1,256 +0,0 @@ -/* pem.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* pem.h for openssl */ - -/*! - \file wolfssl/openssl/pem.h -*/ - - -#ifndef WOLFSSL_PEM_H_ -#define WOLFSSL_PEM_H_ - -#include <wolfssl/openssl/evp.h> -#include <wolfssl/openssl/bio.h> -#include <wolfssl/openssl/rsa.h> -#include <wolfssl/openssl/dsa.h> -#include <wolfssl/ssl.h> - -#ifdef __cplusplus - extern "C" { -#endif - -/* RSA */ -WOLFSSL_API -int wolfSSL_PEM_write_bio_RSAPrivateKey(WOLFSSL_BIO* bio, WOLFSSL_RSA* rsa, - const EVP_CIPHER* cipher, - unsigned char* passwd, int len, - pem_password_cb* cb, void* arg); -WOLFSSL_API -WOLFSSL_RSA* wolfSSL_PEM_read_bio_RSAPrivateKey(WOLFSSL_BIO* bio, - WOLFSSL_RSA**, - pem_password_cb* cb, - void* arg); - -WOLFSSL_API -int wolfSSL_PEM_write_bio_RSA_PUBKEY(WOLFSSL_BIO* bio, WOLFSSL_RSA* rsa); - -WOLFSSL_API -WOLFSSL_RSA *wolfSSL_PEM_read_bio_RSA_PUBKEY(WOLFSSL_BIO* bio, - WOLFSSL_RSA** rsa, - pem_password_cb* cb, void *u); - -WOLFSSL_API -WOLFSSL_EC_GROUP* wolfSSL_PEM_read_bio_ECPKParameters(WOLFSSL_BIO* bio, - WOLFSSL_EC_GROUP** group, - pem_password_cb* cb, - void* pass); -WOLFSSL_API -int wolfSSL_PEM_write_mem_RSAPrivateKey(RSA* rsa, const EVP_CIPHER* cipher, - unsigned char* passwd, int len, - unsigned char **pem, int *plen); -#if !defined(NO_FILESYSTEM) -WOLFSSL_API -int wolfSSL_PEM_write_RSAPrivateKey(XFILE fp, WOLFSSL_RSA *rsa, - const EVP_CIPHER *enc, - unsigned char *kstr, int klen, - pem_password_cb *cb, void *u); -WOLFSSL_API -WOLFSSL_RSA *wolfSSL_PEM_read_RSAPublicKey(XFILE fp, WOLFSSL_RSA **x, - pem_password_cb *cb, void *u); -WOLFSSL_API -int wolfSSL_PEM_write_RSAPublicKey(XFILE fp, WOLFSSL_RSA *x); - -WOLFSSL_API -int wolfSSL_PEM_write_RSA_PUBKEY(XFILE fp, WOLFSSL_RSA *x); -#endif /* NO_FILESYSTEM */ - -/* DSA */ -WOLFSSL_API -int wolfSSL_PEM_write_bio_DSAPrivateKey(WOLFSSL_BIO* bio, - WOLFSSL_DSA* dsa, - const EVP_CIPHER* cipher, - unsigned char* passwd, int len, - pem_password_cb* cb, void* arg); - -WOLFSSL_API -WOLFSSL_DSA* wolfSSL_PEM_read_bio_DSAPrivateKey(WOLFSSL_BIO* bio, - WOLFSSL_DSA** dsa, - pem_password_cb* cb,void *pass); - -WOLFSSL_API -WOLFSSL_DSA *wolfSSL_PEM_read_bio_DSA_PUBKEY(WOLFSSL_BIO* bio,WOLFSSL_DSA** dsa, - pem_password_cb* cb, void *pass); - -WOLFSSL_API -int wolfSSL_PEM_write_bio_DSA_PUBKEY(WOLFSSL_BIO* bio, WOLFSSL_DSA* dsa); - -WOLFSSL_API -int wolfSSL_PEM_write_mem_DSAPrivateKey(WOLFSSL_DSA* dsa, - const EVP_CIPHER* cipher, - unsigned char* passwd, int len, - unsigned char **pem, int *plen); -#if !defined(NO_FILESYSTEM) -WOLFSSL_API -int wolfSSL_PEM_write_DSAPrivateKey(XFILE fp, WOLFSSL_DSA *dsa, - const EVP_CIPHER *enc, - unsigned char *kstr, int klen, - pem_password_cb *cb, void *u); -WOLFSSL_API -int wolfSSL_PEM_write_DSA_PUBKEY(XFILE fp, WOLFSSL_DSA *x); -#endif /* NO_FILESYSTEM */ - -/* ECC */ -WOLFSSL_API -int wolfSSL_PEM_write_bio_ECPrivateKey(WOLFSSL_BIO* bio, WOLFSSL_EC_KEY* ec, - const EVP_CIPHER* cipher, - unsigned char* passwd, int len, - pem_password_cb* cb, void* arg); -WOLFSSL_API -WOLFSSL_EC_KEY* wolfSSL_PEM_read_bio_ECPrivateKey(WOLFSSL_BIO* bio, - WOLFSSL_EC_KEY** ec, - pem_password_cb* cb, - void *pass); -WOLFSSL_API -int wolfSSL_PEM_write_bio_EC_PUBKEY(WOLFSSL_BIO* bio, WOLFSSL_EC_KEY* ec); - -WOLFSSL_API -int wolfSSL_PEM_write_mem_ECPrivateKey(WOLFSSL_EC_KEY* key, - const EVP_CIPHER* cipher, - unsigned char* passwd, int len, - unsigned char **pem, int *plen); -#if !defined(NO_FILESYSTEM) -WOLFSSL_API -int wolfSSL_PEM_write_ECPrivateKey(XFILE fp, WOLFSSL_EC_KEY *key, - const EVP_CIPHER *enc, - unsigned char *kstr, int klen, - pem_password_cb *cb, void *u); -WOLFSSL_API -int wolfSSL_PEM_write_EC_PUBKEY(XFILE fp, WOLFSSL_EC_KEY *key); - -WOLFSSL_API -WOLFSSL_EC_KEY* wolfSSL_PEM_read_bio_EC_PUBKEY(WOLFSSL_BIO* bio, - WOLFSSL_EC_KEY** ec, - pem_password_cb* cb, void *pass); -#endif /* NO_FILESYSTEM */ - -/* EVP_KEY */ -WOLFSSL_API -WOLFSSL_EVP_PKEY* wolfSSL_PEM_read_bio_PrivateKey(WOLFSSL_BIO* bio, - WOLFSSL_EVP_PKEY**, - pem_password_cb* cb, - void* arg); -WOLFSSL_API -WOLFSSL_EVP_PKEY *wolfSSL_PEM_read_bio_PUBKEY(WOLFSSL_BIO* bio, - WOLFSSL_EVP_PKEY **key, - pem_password_cb *cb, void *pass); -WOLFSSL_API -int wolfSSL_PEM_write_bio_PrivateKey(WOLFSSL_BIO* bio, WOLFSSL_EVP_PKEY* key, - const WOLFSSL_EVP_CIPHER* cipher, - unsigned char* passwd, int len, - pem_password_cb* cb, void* arg); -WOLFSSL_API -int wolfSSL_PEM_write_bio_PUBKEY(WOLFSSL_BIO* bio, WOLFSSL_EVP_PKEY* key); - - -WOLFSSL_API -int wolfSSL_PEM_read_bio(WOLFSSL_BIO* bio, char **name, char **header, - unsigned char **data, long *len); -WOLFSSL_API -int wolfSSL_PEM_write_bio(WOLFSSL_BIO *bio, const char *name, - const char *header, const unsigned char *data, - long len); -#if !defined(NO_FILESYSTEM) -WOLFSSL_API -int wolfSSL_PEM_read(XFILE fp, char **name, char **header, unsigned char **data, - long *len); -WOLFSSL_API -int wolfSSL_PEM_write(XFILE fp, const char *name, const char *header, - const unsigned char *data, long len); -#endif - -#if !defined(NO_FILESYSTEM) -WOLFSSL_API -WOLFSSL_EVP_PKEY *wolfSSL_PEM_read_PUBKEY(XFILE fp, EVP_PKEY **x, - pem_password_cb *cb, void *u); -WOLFSSL_API -WOLFSSL_X509 *wolfSSL_PEM_read_X509(XFILE fp, WOLFSSL_X509 **x, - pem_password_cb *cb, void *u); -WOLFSSL_API -WOLFSSL_EVP_PKEY *wolfSSL_PEM_read_PrivateKey(XFILE fp, WOLFSSL_EVP_PKEY **x, - pem_password_cb *cb, void *u); - -WOLFSSL_API -int wolfSSL_PEM_write_X509(XFILE fp, WOLFSSL_X509 *x); -WOLFSSL_API -int wolfSSL_PEM_write_DHparams(XFILE fp, WOLFSSL_DH* dh); -#endif /* NO_FILESYSTEM */ - -#define PEM_read wolfSSL_PEM_read -#define PEM_read_bio wolfSSL_PEM_read_bio -#define PEM_write wolfSSL_PEM_write -#define PEM_write_bio wolfSSL_PEM_write_bio - -#define PEM_read_X509 wolfSSL_PEM_read_X509 -#define PEM_read_PrivateKey wolfSSL_PEM_read_PrivateKey -#define PEM_write_X509 wolfSSL_PEM_write_X509 -#define PEM_write_bio_PrivateKey wolfSSL_PEM_write_bio_PrivateKey -#define PEM_write_bio_PKCS8PrivateKey wolfSSL_PEM_write_bio_PKCS8PrivateKey - -/* DH */ -#define PEM_write_DHparams wolfSSL_PEM_write_DHparams -/* RSA */ -#define PEM_write_bio_RSAPrivateKey wolfSSL_PEM_write_bio_RSAPrivateKey -#define PEM_read_bio_RSAPrivateKey wolfSSL_PEM_read_bio_RSAPrivateKey -#define PEM_write_bio_RSA_PUBKEY wolfSSL_PEM_write_bio_RSA_PUBKEY -#define PEM_read_bio_RSA_PUBKEY wolfSSL_PEM_read_bio_RSA_PUBKEY -#define PEM_read_bio_ECPKParameters wolfSSL_PEM_read_bio_ECPKParameters -#define PEM_write_RSAPrivateKey wolfSSL_PEM_write_RSAPrivateKey -#define PEM_write_RSA_PUBKEY wolfSSL_PEM_write_RSA_PUBKEY -#define PEM_write_RSAPublicKey wolfSSL_PEM_write_RSAPublicKey -#define PEM_read_RSAPublicKey wolfSSL_PEM_read_RSAPublicKey -/* DSA */ -#define PEM_write_bio_DSAPrivateKey wolfSSL_PEM_write_bio_DSAPrivateKey -#define PEM_write_DSAPrivateKey wolfSSL_PEM_write_DSAPrivateKey -#define PEM_write_bio_DSA_PUBKEY wolfSSL_PEM_write_bio_DSA_PUBKEY -#define PEM_write_DSA_PUBKEY wolfSSL_PEM_write_DSA_PUBKEY -#define PEM_read_bio_DSAPrivateKey wolfSSL_PEM_read_bio_DSAPrivateKey -#define PEM_read_bio_DSA_PUBKEY wolfSSL_PEM_read_bio_DSA_PUBKEY -/* ECC */ -#define PEM_write_bio_ECPrivateKey wolfSSL_PEM_write_bio_ECPrivateKey -#define PEM_write_bio_EC_PUBKEY wolfSSL_PEM_write_bio_EC_PUBKEY -#define PEM_write_EC_PUBKEY wolfSSL_PEM_write_EC_PUBKEY -#define PEM_write_ECPrivateKey wolfSSL_PEM_write_ECPrivateKey -#define PEM_read_bio_ECPrivateKey wolfSSL_PEM_read_bio_ECPrivateKey -#define PEM_read_bio_EC_PUBKEY wolfSSL_PEM_read_bio_EC_PUBKEY -/* EVP_KEY */ -#define PEM_read_bio_PrivateKey wolfSSL_PEM_read_bio_PrivateKey -#define PEM_read_PUBKEY wolfSSL_PEM_read_PUBKEY -#define PEM_read_bio_PUBKEY wolfSSL_PEM_read_bio_PUBKEY -#define PEM_write_bio_PUBKEY wolfSSL_PEM_write_bio_PUBKEY - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_PEM_H_ */ - diff --git a/client/wolfssl/wolfssl/openssl/pkcs12.h b/client/wolfssl/wolfssl/openssl/pkcs12.h deleted file mode 100644 index bcd994c..0000000 --- a/client/wolfssl/wolfssl/openssl/pkcs12.h +++ /dev/null @@ -1,49 +0,0 @@ -/* pkcs12.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* pkcs12.h for openssl */ - - -#include <wolfssl/openssl/ssl.h> -#include <wolfssl/wolfcrypt/pkcs12.h> - -#ifndef WOLFSSL_PKCS12_COMPAT_H_ -#define WOLFSSL_PKCS12_COMPAT_H_ - -#define NID_pbe_WithSHA1AndDES_CBC 2 -#define NID_pbe_WithSHA1And3_Key_TripleDES_CBC 3 -#define NID_pbe_WithSHA1And128BitRC4 1 - -#define PKCS12_DEFAULT_ITER WC_PKCS12_ITT_DEFAULT - -/* wolfCrypt level does not make use of ssl.h */ -#define PKCS12 WC_PKCS12 -#define PKCS12_new wc_PKCS12_new -#define PKCS12_free wc_PKCS12_free - -/* wolfSSL level using structs from ssl.h and calls down to wolfCrypt */ -#define d2i_PKCS12_bio wolfSSL_d2i_PKCS12_bio -#define PKCS12_parse wolfSSL_PKCS12_parse -#define PKCS12_create wolfSSL_PKCS12_create -#define PKCS12_PBE_add wolfSSL_PKCS12_PBE_add - -#endif /* WOLFSSL_PKCS12_COMPAT_H_ */ - diff --git a/client/wolfssl/wolfssl/openssl/pkcs7.h b/client/wolfssl/wolfssl/openssl/pkcs7.h deleted file mode 100644 index 94ddf24..0000000 --- a/client/wolfssl/wolfssl/openssl/pkcs7.h +++ /dev/null @@ -1,79 +0,0 @@ -/* pkcs7.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* pkcs7.h for openSSL */ - - -#ifndef WOLFSSL_PKCS7_H_ -#define WOLFSSL_PKCS7_H_ - -#include <wolfssl/openssl/ssl.h> -#include <wolfssl/wolfcrypt/pkcs7.h> - -#ifdef __cplusplus - extern "C" { -#endif - -#if defined(OPENSSL_ALL) && defined(HAVE_PKCS7) - -#define PKCS7_NOINTERN 0x0010 -#define PKCS7_NOVERIFY 0x0020 - - -typedef struct WOLFSSL_PKCS7 -{ - PKCS7 pkcs7; - unsigned char* data; - int len; -} WOLFSSL_PKCS7; - - -WOLFSSL_API PKCS7* wolfSSL_PKCS7_new(void); -WOLFSSL_API PKCS7_SIGNED* wolfSSL_PKCS7_SIGNED_new(void); -WOLFSSL_API void wolfSSL_PKCS7_free(PKCS7* p7); -WOLFSSL_API void wolfSSL_PKCS7_SIGNED_free(PKCS7_SIGNED* p7); -WOLFSSL_API PKCS7* wolfSSL_d2i_PKCS7(PKCS7** p7, const unsigned char** in, - int len); -WOLFSSL_API PKCS7* wolfSSL_d2i_PKCS7_bio(WOLFSSL_BIO* bio, PKCS7** p7); -WOLFSSL_API int wolfSSL_PKCS7_verify(PKCS7* p7, WOLFSSL_STACK* certs, - WOLFSSL_X509_STORE* store, WOLFSSL_BIO* in, WOLFSSL_BIO* out, int flags); -WOLFSSL_API WOLFSSL_STACK* wolfSSL_PKCS7_get0_signers(PKCS7* p7, - WOLFSSL_STACK* certs, int flags); -WOLFSSL_API int wolfSSL_PEM_write_bio_PKCS7(WOLFSSL_BIO* bio, PKCS7* p7); - -#define PKCS7_new wolfSSL_PKCS7_new -#define PKCS7_SIGNED_new wolfSSL_PKCS7_SIGNED_new -#define PKCS7_free wolfSSL_PKCS7_free -#define PKCS7_SIGNED_free wolfSSL_PKCS7_SIGNED_free -#define d2i_PKCS7 wolfSSL_d2i_PKCS7 -#define d2i_PKCS7_bio wolfSSL_d2i_PKCS7_bio -#define PKCS7_verify wolfSSL_PKCS7_verify -#define PKCS7_get0_signers wolfSSL_PKCS7_get0_signers -#define PEM_write_bio_PKCS7 wolfSSL_PEM_write_bio_PKCS7 - -#endif /* OPENSSL_ALL && HAVE_PKCS7 */ - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_PKCS7_H_ */ - diff --git a/client/wolfssl/wolfssl/openssl/rand.h b/client/wolfssl/wolfssl/openssl/rand.h deleted file mode 100644 index 4b826f8..0000000 --- a/client/wolfssl/wolfssl/openssl/rand.h +++ /dev/null @@ -1,27 +0,0 @@ -/* rand.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* rand.h for openSSL */ - -#include <wolfssl/openssl/ssl.h> -#include <wolfssl/wolfcrypt/random.h> - -#define RAND_set_rand_method wolfSSL_RAND_set_rand_method diff --git a/client/wolfssl/wolfssl/openssl/rc4.h b/client/wolfssl/wolfssl/openssl/rc4.h deleted file mode 100644 index fc11e5a..0000000 --- a/client/wolfssl/wolfssl/openssl/rc4.h +++ /dev/null @@ -1,59 +0,0 @@ -/* rc4.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -/* rc4.h defines mini des openssl compatibility layer - * - */ - -#ifndef WOLFSSL_RC4_COMPAT_H_ -#define WOLFSSL_RC4_COMPAT_H_ - -#include <wolfssl/wolfcrypt/settings.h> -#include <wolfssl/openssl/ssl.h> /* included for size_t */ - -#ifdef __cplusplus - extern "C" { -#endif - -/* applications including wolfssl/openssl/rc4.h are expecting to have access to - * the size of RC4_KEY structures. */ -typedef struct WOLFSSL_RC4_KEY { - /* big enough for Arc4 from wolfssl/wolfcrypt/arc4.h */ - void* holder[(272 + WC_ASYNC_DEV_SIZE) / sizeof(void*)]; -} WOLFSSL_RC4_KEY; -typedef WOLFSSL_RC4_KEY RC4_KEY; - -WOLFSSL_API void wolfSSL_RC4_set_key(WOLFSSL_RC4_KEY* key, int len, - const unsigned char* data); -WOLFSSL_API void wolfSSL_RC4(WOLFSSL_RC4_KEY* key, size_t len, - const unsigned char* in, unsigned char* out); - -#define RC4 wolfSSL_RC4 -#define RC4_set_key wolfSSL_RC4_set_key - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_RC4_COMPAT_H_ */ - diff --git a/client/wolfssl/wolfssl/openssl/ripemd.h b/client/wolfssl/wolfssl/openssl/ripemd.h deleted file mode 100644 index 3f1d268..0000000 --- a/client/wolfssl/wolfssl/openssl/ripemd.h +++ /dev/null @@ -1,58 +0,0 @@ -/* ripemd.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* ripemd.h for openssl */ - - -#ifndef WOLFSSL_RIPEMD_H_ -#define WOLFSSL_RIPEMD_H_ - -#include <wolfssl/wolfcrypt/settings.h> - -#ifdef __cplusplus - extern "C" { -#endif - - -typedef struct WOLFSSL_RIPEMD_CTX { - int holder[32]; /* big enough to hold wolfcrypt, but check on init */ -} WOLFSSL_RIPEMD_CTX; - -WOLFSSL_API void wolfSSL_RIPEMD_Init(WOLFSSL_RIPEMD_CTX*); -WOLFSSL_API void wolfSSL_RIPEMD_Update(WOLFSSL_RIPEMD_CTX*, const void*, - unsigned long); -WOLFSSL_API void wolfSSL_RIPEMD_Final(unsigned char*, WOLFSSL_RIPEMD_CTX*); - - -typedef WOLFSSL_RIPEMD_CTX RIPEMD_CTX; - -#define RIPEMD_Init wolfSSL_RIPEMD_Init -#define RIPEMD_Update wolfSSL_RIPEMD_Update -#define RIPEMD_Final wolfSSL_RIPEMD_Final - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* WOLFSSL_MD5_H_ */ - diff --git a/client/wolfssl/wolfssl/openssl/rsa.h b/client/wolfssl/wolfssl/openssl/rsa.h deleted file mode 100644 index 5445db1..0000000 --- a/client/wolfssl/wolfssl/openssl/rsa.h +++ /dev/null @@ -1,197 +0,0 @@ -/* rsa.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* rsa.h for openSSL */ - - -#ifndef WOLFSSL_RSA_H_ -#define WOLFSSL_RSA_H_ - -#include <wolfssl/openssl/bn.h> -#include <wolfssl/openssl/err.h> -#include <wolfssl/wolfcrypt/types.h> - -#ifdef __cplusplus - extern "C" { -#endif - -/* Padding types */ -#define RSA_PKCS1_PADDING 0 -#define RSA_PKCS1_OAEP_PADDING 1 -#define RSA_PKCS1_PSS_PADDING 2 -#define RSA_NO_PADDING 3 - -/* Emulate OpenSSL flags */ -#define RSA_METHOD_FLAG_NO_CHECK (1 << 1) -#define RSA_FLAG_CACHE_PUBLIC (1 << 2) -#define RSA_FLAG_CACHE_PRIVATE (1 << 3) -#define RSA_FLAG_BLINDING (1 << 4) -#define RSA_FLAG_THREAD_SAFE (1 << 5) -#define RSA_FLAG_EXT_PKEY (1 << 6) -#define RSA_FLAG_NO_BLINDING (1 << 7) -#define RSA_FLAG_NO_CONSTTIME (1 << 8) - -/* Salt length same as digest length */ -#define RSA_PSS_SALTLEN_DIGEST -1 -/* Old max salt length */ -#define RSA_PSS_SALTLEN_MAX_SIGN -2 -/* Max salt length */ -#define RSA_PSS_SALTLEN_MAX -3 - -typedef struct WOLFSSL_RSA_METHOD { - int flags; - char *name; -} WOLFSSL_RSA_METHOD; - -#ifndef WOLFSSL_RSA_TYPE_DEFINED /* guard on redeclaration */ -#define WOLFSSL_RSA_TYPE_DEFINED -typedef struct WOLFSSL_RSA { -#ifdef WC_RSA_BLINDING - WC_RNG* rng; /* for PrivateDecrypt blinding */ -#endif - WOLFSSL_BIGNUM* n; - WOLFSSL_BIGNUM* e; - WOLFSSL_BIGNUM* d; - WOLFSSL_BIGNUM* p; - WOLFSSL_BIGNUM* q; - WOLFSSL_BIGNUM* dmp1; /* dP */ - WOLFSSL_BIGNUM* dmq1; /* dQ */ - WOLFSSL_BIGNUM* iqmp; /* u */ - void* heap; - void* internal; /* our RSA */ - char inSet; /* internal set from external ? */ - char exSet; /* external set from internal ? */ - char ownRng; /* flag for if the rng should be free'd */ -#if defined(OPENSSL_EXTRA) - WOLFSSL_RSA_METHOD* meth; -#endif -#if defined(HAVE_EX_DATA) - WOLFSSL_CRYPTO_EX_DATA ex_data; /* external data */ -#endif -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_ALL) - wolfSSL_Mutex refMutex; /* ref count mutex */ - int refCount; /* reference count */ -#endif -} WOLFSSL_RSA; -#endif - -typedef WOLFSSL_RSA RSA; -typedef WOLFSSL_RSA_METHOD RSA_METHOD; - -WOLFSSL_API WOLFSSL_RSA* wolfSSL_RSA_new(void); -WOLFSSL_API void wolfSSL_RSA_free(WOLFSSL_RSA*); - -WOLFSSL_API int wolfSSL_RSA_generate_key_ex(WOLFSSL_RSA*, int bits, WOLFSSL_BIGNUM*, - void* cb); - -WOLFSSL_API int wolfSSL_RSA_blinding_on(WOLFSSL_RSA*, WOLFSSL_BN_CTX*); -WOLFSSL_API int wolfSSL_RSA_public_encrypt(int len, const unsigned char* fr, - unsigned char* to, WOLFSSL_RSA*, int padding); -WOLFSSL_API int wolfSSL_RSA_private_decrypt(int len, const unsigned char* fr, - unsigned char* to, WOLFSSL_RSA*, int padding); -WOLFSSL_API int wolfSSL_RSA_private_encrypt(int len, unsigned char* in, - unsigned char* out, WOLFSSL_RSA* rsa, int padding); - -WOLFSSL_API int wolfSSL_RSA_size(const WOLFSSL_RSA*); -WOLFSSL_API int wolfSSL_RSA_sign(int type, const unsigned char* m, - unsigned int mLen, unsigned char* sigRet, - unsigned int* sigLen, WOLFSSL_RSA*); -WOLFSSL_API int wolfSSL_RSA_sign_ex(int type, const unsigned char* m, - unsigned int mLen, unsigned char* sigRet, - unsigned int* sigLen, WOLFSSL_RSA*, int); -WOLFSSL_API int wolfSSL_RSA_verify(int type, const unsigned char* m, - unsigned int mLen, const unsigned char* sig, - unsigned int sigLen, WOLFSSL_RSA*); -WOLFSSL_API int wolfSSL_RSA_public_decrypt(int flen, const unsigned char* from, - unsigned char* to, WOLFSSL_RSA*, int padding); -WOLFSSL_API int wolfSSL_RSA_GenAdd(WOLFSSL_RSA*); -WOLFSSL_API int wolfSSL_RSA_LoadDer(WOLFSSL_RSA*, const unsigned char*, int sz); -WOLFSSL_API int wolfSSL_RSA_LoadDer_ex(WOLFSSL_RSA*, const unsigned char*, int sz, int opt); - -WOLFSSL_API WOLFSSL_RSA_METHOD *wolfSSL_RSA_meth_new(const char *name, int flags); -WOLFSSL_API void wolfSSL_RSA_meth_free(WOLFSSL_RSA_METHOD *meth); -WOLFSSL_API int wolfSSL_RSA_meth_set(WOLFSSL_RSA_METHOD *rsa, void* p); -WOLFSSL_API int wolfSSL_RSA_set_method(WOLFSSL_RSA *rsa, WOLFSSL_RSA_METHOD *meth); -WOLFSSL_API const WOLFSSL_RSA_METHOD* wolfSSL_RSA_get_method(const WOLFSSL_RSA *rsa); -WOLFSSL_API const WOLFSSL_RSA_METHOD* wolfSSL_RSA_get_default_method(void); - -WOLFSSL_API void wolfSSL_RSA_get0_key(const WOLFSSL_RSA *r, const WOLFSSL_BIGNUM **n, - const WOLFSSL_BIGNUM **e, const WOLFSSL_BIGNUM **d); -WOLFSSL_API int wolfSSL_RSA_set0_key(WOLFSSL_RSA *r, WOLFSSL_BIGNUM *n, WOLFSSL_BIGNUM *e, - WOLFSSL_BIGNUM *d); -WOLFSSL_API int wolfSSL_RSA_flags(const WOLFSSL_RSA *r); -WOLFSSL_API void wolfSSL_RSA_set_flags(WOLFSSL_RSA *r, int flags); - -WOLFSSL_API WOLFSSL_RSA* wolfSSL_RSAPublicKey_dup(WOLFSSL_RSA *rsa); - -WOLFSSL_API void* wolfSSL_RSA_get_ex_data(const WOLFSSL_RSA *rsa, int idx); -WOLFSSL_API int wolfSSL_RSA_set_ex_data(WOLFSSL_RSA *rsa, int idx, void *data); - - -#define WOLFSSL_RSA_LOAD_PRIVATE 1 -#define WOLFSSL_RSA_LOAD_PUBLIC 2 -#define WOLFSSL_RSA_F4 0x10001L - -#define RSA_new wolfSSL_RSA_new -#define RSA_free wolfSSL_RSA_free - -#define RSA_generate_key_ex wolfSSL_RSA_generate_key_ex - -#define RSA_blinding_on wolfSSL_RSA_blinding_on -#define RSA_public_encrypt wolfSSL_RSA_public_encrypt -#define RSA_private_decrypt wolfSSL_RSA_private_decrypt -#define RSA_private_encrypt wolfSSL_RSA_private_encrypt - -#define RSA_size wolfSSL_RSA_size -#define RSA_sign wolfSSL_RSA_sign -#define RSA_verify wolfSSL_RSA_verify -#define RSA_public_decrypt wolfSSL_RSA_public_decrypt - -#define RSA_meth_new wolfSSL_RSA_meth_new -#define RSA_meth_free wolfSSL_RSA_meth_free -#define RSA_meth_set_pub_enc wolfSSL_RSA_meth_set -#define RSA_meth_set_pub_dec wolfSSL_RSA_meth_set -#define RSA_meth_set_priv_enc wolfSSL_RSA_meth_set -#define RSA_meth_set_priv_dec wolfSSL_RSA_meth_set -#define RSA_meth_set_init wolfSSL_RSA_meth_set -#define RSA_meth_set_finish wolfSSL_RSA_meth_set -#define RSA_meth_set0_app_data wolfSSL_RSA_meth_set -#define RSA_get_default_method wolfSSL_RSA_get_default_method -#define RSA_get_method wolfSSL_RSA_get_method -#define RSA_set_method wolfSSL_RSA_set_method -#define RSA_get0_key wolfSSL_RSA_get0_key -#define RSA_set0_key wolfSSL_RSA_set0_key -#define RSA_flags wolfSSL_RSA_flags -#define RSA_set_flags wolfSSL_RSA_set_flags - -#define RSAPublicKey_dup wolfSSL_RSAPublicKey_dup -#define RSA_get_ex_data wolfSSL_RSA_get_ex_data -#define RSA_set_ex_data wolfSSL_RSA_set_ex_data - -#define RSA_get0_key wolfSSL_RSA_get0_key - -#define RSA_F4 WOLFSSL_RSA_F4 - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* header */ diff --git a/client/wolfssl/wolfssl/openssl/sha.h b/client/wolfssl/wolfssl/openssl/sha.h deleted file mode 100644 index e3a8147..0000000 --- a/client/wolfssl/wolfssl/openssl/sha.h +++ /dev/null @@ -1,203 +0,0 @@ -/* sha.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* sha.h for openssl */ - - -#ifndef WOLFSSL_SHA_H_ -#define WOLFSSL_SHA_H_ - -#include <wolfssl/wolfcrypt/settings.h> -#include <wolfssl/wolfcrypt/types.h> - -#ifdef WOLFSSL_PREFIX -#include "prefix_sha.h" -#endif - -#ifdef __cplusplus - extern "C" { -#endif - - -typedef struct WOLFSSL_SHA_CTX { - /* big enough to hold wolfcrypt Sha, but check on init */ -#if defined(STM32_HASH) - void* holder[(112 + WC_ASYNC_DEV_SIZE + sizeof(STM32_HASH_Context)) / sizeof(void*)]; -#else - void* holder[(112 + WC_ASYNC_DEV_SIZE) / sizeof(void*)]; -#endif - #ifdef WOLF_CRYPTO_CB - void* cryptocb_holder[(sizeof(int) + sizeof(void*) + 4) / sizeof(void*)]; - #endif -} WOLFSSL_SHA_CTX; - -WOLFSSL_API int wolfSSL_SHA_Init(WOLFSSL_SHA_CTX*); -WOLFSSL_API int wolfSSL_SHA_Update(WOLFSSL_SHA_CTX*, const void*, unsigned long); -WOLFSSL_API int wolfSSL_SHA_Final(unsigned char*, WOLFSSL_SHA_CTX*); - -/* SHA1 points to above, shouldn't use SHA0 ever */ -WOLFSSL_API int wolfSSL_SHA1_Init(WOLFSSL_SHA_CTX*); -WOLFSSL_API int wolfSSL_SHA1_Update(WOLFSSL_SHA_CTX*, const void*, unsigned long); -WOLFSSL_API int wolfSSL_SHA1_Final(unsigned char*, WOLFSSL_SHA_CTX*); - -enum { - SHA_DIGEST_LENGTH = 20 -}; - - -typedef WOLFSSL_SHA_CTX SHA_CTX; - -#define SHA_Init wolfSSL_SHA_Init -#define SHA_Update wolfSSL_SHA_Update -#define SHA_Final wolfSSL_SHA_Final - -#define SHA1_Init wolfSSL_SHA1_Init -#define SHA1_Update wolfSSL_SHA1_Update -#define SHA1_Final wolfSSL_SHA1_Final - - -#ifdef WOLFSSL_SHA224 - -/* Using ALIGN16 because when AES-NI is enabled digest and buffer in Sha256 - * struct are 16 byte aligned. Any dereference to those elements after casting - * to Sha224, is expected to also be 16 byte aligned addresses. */ -typedef struct WOLFSSL_SHA224_CTX { - /* big enough to hold wolfcrypt Sha224, but check on init */ - ALIGN16 void* holder[(272 + WC_ASYNC_DEV_SIZE) / sizeof(void*)]; -} WOLFSSL_SHA224_CTX; - -WOLFSSL_API int wolfSSL_SHA224_Init(WOLFSSL_SHA224_CTX*); -WOLFSSL_API int wolfSSL_SHA224_Update(WOLFSSL_SHA224_CTX*, const void*, - unsigned long); -WOLFSSL_API int wolfSSL_SHA224_Final(unsigned char*, WOLFSSL_SHA224_CTX*); - -enum { - SHA224_DIGEST_LENGTH = 28 -}; - - -typedef WOLFSSL_SHA224_CTX SHA224_CTX; - -#define SHA224_Init wolfSSL_SHA224_Init -#define SHA224_Update wolfSSL_SHA224_Update -#define SHA224_Final wolfSSL_SHA224_Final - -#endif /* WOLFSSL_SHA224 */ - - -/* Using ALIGN16 because when AES-NI is enabled digest and buffer in Sha256 - * struct are 16 byte aligned. Any dereference to those elements after casting - * to Sha256, is expected to also be 16 byte aligned addresses. */ -typedef struct WOLFSSL_SHA256_CTX { - /* big enough to hold wolfcrypt Sha256, but check on init */ - ALIGN16 void* holder[(272 + WC_ASYNC_DEV_SIZE) / sizeof(void*)]; -} WOLFSSL_SHA256_CTX; - -WOLFSSL_API int wolfSSL_SHA256_Init(WOLFSSL_SHA256_CTX*); -WOLFSSL_API int wolfSSL_SHA256_Update(WOLFSSL_SHA256_CTX*, const void*, - unsigned long); -WOLFSSL_API int wolfSSL_SHA256_Final(unsigned char*, WOLFSSL_SHA256_CTX*); - -enum { - SHA256_DIGEST_LENGTH = 32 -}; - - -typedef WOLFSSL_SHA256_CTX SHA256_CTX; - -#define SHA256_Init wolfSSL_SHA256_Init -#define SHA256_Update wolfSSL_SHA256_Update -#define SHA256_Final wolfSSL_SHA256_Final -#if defined(NO_OLD_SHA_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) - /* SHA256 is only available in non-fips mode because of SHA256 enum in FIPS - * build. */ - #define SHA256 wolfSSL_SHA256 -#endif - - -#ifdef WOLFSSL_SHA384 - -typedef struct WOLFSSL_SHA384_CTX { - /* big enough to hold wolfCrypt Sha384, but check on init */ - void* holder[(256 + WC_ASYNC_DEV_SIZE) / sizeof(void*)]; -} WOLFSSL_SHA384_CTX; - -WOLFSSL_API int wolfSSL_SHA384_Init(WOLFSSL_SHA384_CTX*); -WOLFSSL_API int wolfSSL_SHA384_Update(WOLFSSL_SHA384_CTX*, const void*, - unsigned long); -WOLFSSL_API int wolfSSL_SHA384_Final(unsigned char*, WOLFSSL_SHA384_CTX*); - -enum { - SHA384_DIGEST_LENGTH = 48 -}; - - -typedef WOLFSSL_SHA384_CTX SHA384_CTX; - -#define SHA384_Init wolfSSL_SHA384_Init -#define SHA384_Update wolfSSL_SHA384_Update -#define SHA384_Final wolfSSL_SHA384_Final -#if defined(NO_OLD_SHA_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) - /* SHA384 is only available in non-fips mode because of SHA384 enum in FIPS - * build. */ - #define SHA384 wolfSSL_SHA384 -#endif -#endif /* WOLFSSL_SHA384 */ - -#ifdef WOLFSSL_SHA512 - -typedef struct WOLFSSL_SHA512_CTX { - /* big enough to hold wolfCrypt Sha384, but check on init */ - void* holder[(288 + WC_ASYNC_DEV_SIZE) / sizeof(void*)]; -} WOLFSSL_SHA512_CTX; - -WOLFSSL_API int wolfSSL_SHA512_Init(WOLFSSL_SHA512_CTX*); -WOLFSSL_API int wolfSSL_SHA512_Update(WOLFSSL_SHA512_CTX*, const void*, - unsigned long); -WOLFSSL_API int wolfSSL_SHA512_Final(unsigned char*, WOLFSSL_SHA512_CTX*); - -enum { - SHA512_DIGEST_LENGTH = 64 -}; - - -typedef WOLFSSL_SHA512_CTX SHA512_CTX; - -#define SHA512_Init wolfSSL_SHA512_Init -#define SHA512_Update wolfSSL_SHA512_Update -#define SHA512_Final wolfSSL_SHA512_Final -#if defined(NO_OLD_SHA_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) - /* SHA512 is only available in non-fips mode because of SHA512 enum in FIPS - * build. */ - #define SHA512 wolfSSL_SHA512 -#endif -#endif /* WOLFSSL_SHA512 */ - - - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* WOLFSSL_SHA_H_ */ - diff --git a/client/wolfssl/wolfssl/openssl/sha3.h b/client/wolfssl/wolfssl/openssl/sha3.h deleted file mode 100644 index 2039104..0000000 --- a/client/wolfssl/wolfssl/openssl/sha3.h +++ /dev/null @@ -1,150 +0,0 @@ -/* sha3.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* sha3.h for openssl */ - - -#ifndef WOLFSSL_SHA3_H_ -#define WOLFSSL_SHA3_H_ - -#include <wolfssl/wolfcrypt/settings.h> -#include <wolfssl/wolfcrypt/types.h> - -#ifdef WOLFSSL_PREFIX -#include "prefix_sha.h" -#endif - -#ifdef __cplusplus - extern "C" { -#endif - - -/* Using ALIGN16 because when AES-NI is enabled digest and buffer in Sha3 - * struct are 16 byte aligned. Any dereference to those elements after casting - * to Sha3 is expected to also be 16 byte aligned addresses. */ -struct WOLFSSL_SHA3_CTX { - /* big enough to hold wolfcrypt Sha3, but check on init */ - ALIGN16 void* holder[(424 + WC_ASYNC_DEV_SIZE) / sizeof(void*)]; -}; - -#ifndef WOLFSSL_NOSHA3_224 -typedef struct WOLFSSL_SHA3_CTX WOLFSSL_SHA3_224_CTX; - -WOLFSSL_API int wolfSSL_SHA3_224_Init(WOLFSSL_SHA3_224_CTX*); -WOLFSSL_API int wolfSSL_SHA3_224_Update(WOLFSSL_SHA3_224_CTX*, const void*, - unsigned long); -WOLFSSL_API int wolfSSL_SHA3_224_Final(unsigned char*, WOLFSSL_SHA3_224_CTX*); - -enum { - SHA3_224_DIGEST_LENGTH = 28 -}; - -typedef WOLFSSL_SHA3_224_CTX SHA3_224_CTX; - -#define SHA3_224_Init wolfSSL_SHA3_224_Init -#define SHA3_224_Update wolfSSL_SHA3_224_Update -#define SHA3_224_Final wolfSSL_SHA3_224_Final -#if defined(NO_OLD_WC_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) - #define SHA3_224 wolfSSL_SHA3_224 -#endif -#endif /* WOLFSSL_NOSHA3_224 */ - - -#ifndef WOLFSSL_NOSHA3_256 -typedef struct WOLFSSL_SHA3_CTX WOLFSSL_SHA3_256_CTX; - - -WOLFSSL_API int wolfSSL_SHA3_256_Init(WOLFSSL_SHA3_256_CTX*); -WOLFSSL_API int wolfSSL_SHA3_256_Update(WOLFSSL_SHA3_256_CTX*, const void*, - unsigned long); -WOLFSSL_API int wolfSSL_SHA3_256_Final(unsigned char*, WOLFSSL_SHA3_256_CTX*); - -enum { - SHA3_256_DIGEST_LENGTH = 32 -}; - - -typedef WOLFSSL_SHA3_256_CTX SHA3_256_CTX; - -#define SHA3_256_Init wolfSSL_SHA3_256_Init -#define SHA3_256_Update wolfSSL_SHA3_256_Update -#define SHA3_256_Final wolfSSL_SHA3_256_Final -#if defined(NO_OLD_WC_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) - #define SHA3_256 wolfSSL_SHA3_256 -#endif -#endif /* WOLFSSL_NOSHA3_256 */ - - -typedef struct WOLFSSL_SHA3_CTX WOLFSSL_SHA3_384_CTX; - -WOLFSSL_API int wolfSSL_SHA3_384_Init(WOLFSSL_SHA3_384_CTX*); -WOLFSSL_API int wolfSSL_SHA3_384_Update(WOLFSSL_SHA3_384_CTX*, const void*, - unsigned long); -WOLFSSL_API int wolfSSL_SHA3_384_Final(unsigned char*, WOLFSSL_SHA3_384_CTX*); - -enum { - SHA3_384_DIGEST_LENGTH = 48 -}; - -typedef WOLFSSL_SHA3_384_CTX SHA3_384_CTX; - -#define SHA3_384_Init wolfSSL_SHA3_384_Init -#define SHA3_384_Update wolfSSL_SHA3_384_Update -#define SHA3_384_Final wolfSSL_SHA3_384_Final -#if defined(NO_OLD_WC_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) - #define SHA3_384 wolfSSL_SHA3_384 -#endif - - -#ifndef WOLFSSL_NOSHA3_512 - -typedef struct WOLFSSL_SHA3_CTX WOLFSSL_SHA3_512_CTX; - -WOLFSSL_API int wolfSSL_SHA3_512_Init(WOLFSSL_SHA3_512_CTX*); -WOLFSSL_API int wolfSSL_SHA3_512_Update(WOLFSSL_SHA3_512_CTX*, const void*, - unsigned long); -WOLFSSL_API int wolfSSL_SHA3_512_Final(unsigned char*, WOLFSSL_SHA3_512_CTX*); - -enum { - SHA3_512_DIGEST_LENGTH = 64 -}; - - -typedef WOLFSSL_SHA3_512_CTX SHA3_512_CTX; - -#define SHA3_512_Init wolfSSL_SHA3_512_Init -#define SHA3_512_Update wolfSSL_SHA3_512_Update -#define SHA3_512_Final wolfSSL_SHA3_512_Final -#if defined(NO_OLD_WC_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) - #define SHA3_512 wolfSSL_SHA3_512 -#endif -#endif /* WOLFSSL_NOSHA3_512 */ - - - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* WOLFSSL_SHA3_H_ */ - diff --git a/client/wolfssl/wolfssl/openssl/ssl.h b/client/wolfssl/wolfssl/openssl/ssl.h deleted file mode 100644 index e238cfc..0000000 --- a/client/wolfssl/wolfssl/openssl/ssl.h +++ /dev/null @@ -1,1245 +0,0 @@ -/* ssl.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -/* ssl.h defines wolfssl_openssl compatibility layer - * - */ - - -#ifndef WOLFSSL_OPENSSL_H_ -#define WOLFSSL_OPENSSL_H_ - -/* wolfssl_openssl compatibility layer */ -#ifndef OPENSSL_EXTRA_SSL_GUARD -#define OPENSSL_EXTRA_SSL_GUARD -#include <wolfssl/ssl.h> -#endif /* OPENSSL_EXTRA_SSL_GUARD */ - -#include <wolfssl/openssl/tls1.h> -#include <wolfssl/openssl/evp.h> -#include <wolfssl/openssl/bio.h> -#ifdef OPENSSL_EXTRA -#include <wolfssl/openssl/crypto.h> -#endif - -#if defined(WOLFSSL_QT) || defined(OPENSSL_ALL) -#include <wolfssl/openssl/dh.h> -#include <wolfssl/openssl/objects.h> -#endif - -/* need MIN_CODE_E to determine wolfSSL error range */ -#include <wolfssl/wolfcrypt/error-crypt.h> - -/* all NID_* values are in asn.h */ -#include <wolfssl/wolfcrypt/asn.h> - -#ifdef __cplusplus - extern "C" { -#endif - -#ifdef _WIN32 - /* wincrypt.h clashes */ - #undef X509_NAME -#endif - -#ifdef WOLFSSL_UTASKER - /* tcpip.h clashes */ - #undef ASN1_INTEGER -#endif - - -typedef WOLFSSL SSL; -typedef WOLFSSL_SESSION SSL_SESSION; -typedef WOLFSSL_METHOD SSL_METHOD; -typedef WOLFSSL_CTX SSL_CTX; - -typedef WOLFSSL_X509 X509; -typedef WOLFSSL_X509 X509_REQ; -typedef WOLFSSL_X509_NAME X509_NAME; -typedef WOLFSSL_X509_INFO X509_INFO; -typedef WOLFSSL_X509_CHAIN X509_CHAIN; - -typedef WOLFSSL_STACK EXTENDED_KEY_USAGE; - - -/* redeclare guard */ -#define WOLFSSL_TYPES_DEFINED - -typedef WOLFSSL_BIO BIO; -typedef WOLFSSL_BIO_METHOD BIO_METHOD; -typedef WOLFSSL_CIPHER SSL_CIPHER; -typedef WOLFSSL_X509_LOOKUP X509_LOOKUP; -typedef WOLFSSL_X509_LOOKUP_METHOD X509_LOOKUP_METHOD; -typedef WOLFSSL_X509_CRL X509_CRL; -typedef WOLFSSL_X509_EXTENSION X509_EXTENSION; -typedef WOLFSSL_X509_PUBKEY X509_PUBKEY; -typedef WOLFSSL_X509_ALGOR X509_ALGOR; -typedef WOLFSSL_ASN1_TIME ASN1_TIME; -typedef WOLFSSL_ASN1_INTEGER ASN1_INTEGER; -typedef WOLFSSL_ASN1_OBJECT ASN1_OBJECT; -typedef WOLFSSL_ASN1_STRING ASN1_STRING; -typedef WOLFSSL_ASN1_TYPE ASN1_TYPE; -typedef WOLFSSL_ASN1_BIT_STRING ASN1_BIT_STRING; -typedef WOLFSSL_dynlock_value CRYPTO_dynlock_value; -typedef WOLFSSL_BUF_MEM BUF_MEM; -typedef WOLFSSL_GENERAL_NAMES GENERAL_NAMES; -typedef WOLFSSL_GENERAL_NAME GENERAL_NAME; - -#define ASN1_UTCTIME WOLFSSL_ASN1_TIME -#define ASN1_GENERALIZEDTIME WOLFSSL_ASN1_TIME - -typedef WOLFSSL_COMP_METHOD COMP_METHOD; -typedef WOLFSSL_COMP SSL_COMP; -typedef WOLFSSL_X509_REVOKED X509_REVOKED; -typedef WOLFSSL_X509_OBJECT X509_OBJECT; -typedef WOLFSSL_X509_STORE X509_STORE; -typedef WOLFSSL_X509_STORE_CTX X509_STORE_CTX; -typedef WOLFSSL_X509_VERIFY_PARAM X509_VERIFY_PARAM; - -#define EVP_CIPHER_INFO EncryptedInfo - -#define STACK_OF(x) WOLFSSL_STACK -#define OPENSSL_STACK WOLFSSL_STACK -#define _STACK OPENSSL_STACK - -#define CONF_get1_default_config_file wolfSSL_CONF_get1_default_config_file -typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; - -#ifdef WOLFSSL_QT - #if defined(NO_WOLFSSL_MEMORY) - #define CRYPTO_free(xp) XFREE(xp, NULL, NULL); - #else - #define CRYPTO_free(xp) { if((xp)) wolfSSL_Free((xp));} - #endif -#else - #define CRYPTO_free XFREE -#endif - -#define CRYPTO_malloc XMALLOC -#define CRYPTO_EX_new WOLFSSL_CRYPTO_EX_new -#define CRYPTO_EX_dup WOLFSSL_CRYPTO_EX_dup -#define CRYPTO_EX_free WOLFSSL_CRYPTO_EX_free -#define CRYPTO_EX_DATA WOLFSSL_CRYPTO_EX_DATA - -/* depreciated */ -#define CRYPTO_thread_id wolfSSL_thread_id -#define CRYPTO_set_id_callback wolfSSL_set_id_callback - -#define CRYPTO_LOCK 0x01 -#define CRYPTO_UNLOCK 0x02 -#define CRYPTO_READ 0x04 -#define CRYPTO_WRITE 0x08 - -#define CRYPTO_set_locking_callback wolfSSL_set_locking_callback -#define CRYPTO_set_dynlock_create_callback wolfSSL_set_dynlock_create_callback -#define CRYPTO_set_dynlock_lock_callback wolfSSL_set_dynlock_lock_callback -#define CRYPTO_set_dynlock_destroy_callback wolfSSL_set_dynlock_destroy_callback -#define CRYPTO_num_locks wolfSSL_num_locks -#define CRYPTO_dynlock_value WOLFSSL_dynlock_value - -#define CRYPTO_cleanup_all_ex_data wolfSSL_cleanup_all_ex_data -#define set_ex_data wolfSSL_CRYPTO_set_ex_data -#define get_ex_data wolfSSL_CRYPTO_get_ex_data - -/* this function was used to set the default malloc, free, and realloc */ -#define CRYPTO_malloc_init() 0 /* CRYPTO_malloc_init is not needed */ -#define OPENSSL_malloc_init() 0 /* OPENSSL_malloc_init is not needed */ - -#define SSL_get_client_random(ssl,out,outSz) \ - wolfSSL_get_client_random((ssl),(out),(outSz)) -#define SSL_get_cipher_list(ctx,i) wolfSSL_get_cipher_list_ex((ctx),(i)) -#define SSL_get_cipher_name(ctx) wolfSSL_get_cipher((ctx)) -#define SSL_get_shared_ciphers(ctx,buf,len) \ - wolfSSL_get_shared_ciphers((ctx),(buf),(len)) - -/* at the moment only returns ok */ -#define SSL_get_verify_result wolfSSL_get_verify_result -#define SSL_get_verify_mode wolfSSL_SSL_get_mode -#define SSL_get_verify_depth wolfSSL_get_verify_depth -#define SSL_CTX_get_verify_mode wolfSSL_CTX_get_verify_mode -#define SSL_CTX_get_verify_depth wolfSSL_CTX_get_verify_depth -#define SSL_get_certificate wolfSSL_get_certificate -#define SSL_use_certificate wolfSSL_use_certificate -#define SSL_use_certificate_ASN1 wolfSSL_use_certificate_ASN1 -#define d2i_PKCS8_PRIV_KEY_INFO_bio wolfSSL_d2i_PKCS8_PKEY_bio -#define d2i_PKCS8PrivateKey_bio wolfSSL_d2i_PKCS8PrivateKey_bio -#define PKCS8_PRIV_KEY_INFO_free wolfSSL_EVP_PKEY_free -#define d2i_PKCS12_fp wolfSSL_d2i_PKCS12_fp - -#define d2i_PUBKEY wolfSSL_d2i_PUBKEY -#define d2i_PUBKEY_bio wolfSSL_d2i_PUBKEY_bio -#define d2i_PrivateKey wolfSSL_d2i_PrivateKey -#define d2i_AutoPrivateKey wolfSSL_d2i_AutoPrivateKey -#define i2d_PrivateKey wolfSSL_i2d_PrivateKey -#define SSL_use_PrivateKey wolfSSL_use_PrivateKey -#define SSL_use_PrivateKey_ASN1 wolfSSL_use_PrivateKey_ASN1 -#define SSL_use_RSAPrivateKey_ASN1 wolfSSL_use_RSAPrivateKey_ASN1 -#define SSL_get_privatekey wolfSSL_get_privatekey -#define SSL_CTX_use_PrivateKey_ASN1 wolfSSL_CTX_use_PrivateKey_ASN1 - -#define SSLv23_method wolfSSLv23_method -#define SSLv23_client_method wolfSSLv23_client_method -#define SSLv2_client_method wolfSSLv2_client_method -#define SSLv2_server_method wolfSSLv2_server_method -#define SSLv3_server_method wolfSSLv3_server_method -#define SSLv3_client_method wolfSSLv3_client_method -#define TLS_client_method wolfTLS_client_method -#define TLS_server_method wolfTLS_server_method -#define TLSv1_method wolfTLSv1_method -#define TLSv1_server_method wolfTLSv1_server_method -#define TLSv1_client_method wolfTLSv1_client_method -#define TLSv1_1_method wolfTLSv1_1_method -#define TLSv1_1_server_method wolfTLSv1_1_server_method -#define TLSv1_1_client_method wolfTLSv1_1_client_method -#define TLSv1_2_method wolfTLSv1_2_method -#define TLSv1_2_server_method wolfTLSv1_2_server_method -#define TLSv1_2_client_method wolfTLSv1_2_client_method -#define TLSv1_3_method wolfTLSv1_3_method -#define TLSv1_3_server_method wolfTLSv1_3_server_method -#define TLSv1_3_client_method wolfTLSv1_3_client_method -#define TLS_method wolfSSLv23_method - -#define X509_FILETYPE_ASN1 SSL_FILETYPE_ASN1 - -#define X509_F_X509_CHECK_PRIVATE_KEY 128 - -#ifdef WOLFSSL_DTLS - #define DTLSv1_client_method wolfDTLSv1_client_method - #define DTLSv1_server_method wolfDTLSv1_server_method - #define DTLSv1_2_client_method wolfDTLSv1_2_client_method - #define DTLSv1_2_server_method wolfDTLSv1_2_server_method - #define DTLS_method wolfDTLS_method -#endif - - -#ifndef NO_FILESYSTEM - #define SSL_CTX_use_certificate_file wolfSSL_CTX_use_certificate_file - #define SSL_CTX_use_PrivateKey_file wolfSSL_CTX_use_PrivateKey_file -#ifdef WOLFSSL_APACHE_HTTPD - #define SSL_CTX_load_verify_locations(ctx,file,path) \ - wolfSSL_CTX_load_verify_locations_ex(ctx,file,path,\ - WOLFSSL_LOAD_FLAG_IGNORE_ERR) -#else - #define SSL_CTX_load_verify_locations wolfSSL_CTX_load_verify_locations -#endif - #define SSL_CTX_use_certificate_chain_file wolfSSL_CTX_use_certificate_chain_file - #define SSL_CTX_use_RSAPrivateKey_file wolfSSL_CTX_use_RSAPrivateKey_file - - #define SSL_use_certificate_file wolfSSL_use_certificate_file - #define SSL_use_PrivateKey_file wolfSSL_use_PrivateKey_file - #define SSL_use_certificate_chain_file wolfSSL_use_certificate_chain_file - #define SSL_use_RSAPrivateKey_file wolfSSL_use_RSAPrivateKey_file -#endif - -#define SSL_CTX_new(method) wolfSSL_CTX_new((WOLFSSL_METHOD*)(method)) -#ifdef OPENSSL_EXTRA -#define SSL_CTX_up_ref wolfSSL_CTX_up_ref -#endif -#define SSL_new wolfSSL_new -#define SSL_set_fd wolfSSL_set_fd -#define SSL_get_fd wolfSSL_get_fd -#define SSL_connect wolfSSL_connect -#define SSL_clear wolfSSL_clear -#define SSL_state wolfSSL_state - -#define SSL_write wolfSSL_write -#define SSL_read wolfSSL_read -#define SSL_peek wolfSSL_peek -#define SSL_accept wolfSSL_accept -#define SSL_CTX_free wolfSSL_CTX_free -#define SSL_free wolfSSL_free -#define SSL_shutdown wolfSSL_shutdown -#define SSL_set_timeout wolfSSL_set_timeout - -#define SSL_CTX_set_quiet_shutdown wolfSSL_CTX_set_quiet_shutdown -#define SSL_set_quiet_shutdown wolfSSL_set_quiet_shutdown -#define SSL_get_error wolfSSL_get_error -#define SSL_set_session wolfSSL_set_session -#define SSL_get_session(x) wolfSSL_get_session((WOLFSSL*) (x)) -#define SSL_SESSION_get0_peer wolfSSL_SESSION_get0_peer -#define SSL_flush_sessions wolfSSL_flush_sessions -/* assume unlimited temporarily */ -#define SSL_CTX_get_session_cache_mode(ctx) 0 - -#define SSL_CTX_set_verify wolfSSL_CTX_set_verify -#define SSL_CTX_set_cert_verify_callback wolfSSL_CTX_set_cert_verify_callback -#define SSL_set_verify wolfSSL_set_verify -#define SSL_set_verify_result wolfSSL_set_verify_result -#define SSL_pending wolfSSL_pending -#define SSL_load_error_strings wolfSSL_load_error_strings -#define SSL_library_init wolfSSL_library_init -#define OpenSSL_add_ssl_algorithms wolfSSL_library_init -#define SSL_CTX_set_session_cache_mode wolfSSL_CTX_set_session_cache_mode -#define SSL_CTX_set_cipher_list wolfSSL_CTX_set_cipher_list -#define SSL_CTX_set_ciphersuites wolfSSL_CTX_set_cipher_list -#define SSL_set_cipher_list wolfSSL_set_cipher_list -/* wolfSSL does not support security levels */ -#define SSL_CTX_set_security_level(...) -/* wolfSSL does not support exporting keying material */ -#define SSL_export_keying_material(...) 0 - -#define SSL_CTX_set1_groups_list wolfSSL_CTX_set1_groups_list -#define SSL_set1_groups_list wolfSSL_set1_groups_list - -#define SSL_set_ex_data wolfSSL_set_ex_data -#define SSL_get_shutdown wolfSSL_get_shutdown -#define SSL_set_rfd wolfSSL_set_rfd -#define SSL_set_wfd wolfSSL_set_wfd -#define SSL_set_shutdown wolfSSL_set_shutdown -#define SSL_set_session_id_context wolfSSL_set_session_id_context -#define SSL_set_connect_state wolfSSL_set_connect_state -#define SSL_set_accept_state wolfSSL_set_accept_state -#define SSL_session_reused wolfSSL_session_reused -#define SSL_SESSION_dup wolfSSL_SESSION_dup -#define SSL_SESSION_free wolfSSL_SESSION_free -#define SSL_is_init_finished wolfSSL_is_init_finished - -#define SSL_get_version wolfSSL_get_version -#define SSL_get_current_cipher wolfSSL_get_current_cipher - -/* use wolfSSL_get_cipher_name for its return format */ -#define SSL_get_cipher wolfSSL_get_cipher_name -#define SSL_CIPHER_description wolfSSL_CIPHER_description -#define SSL_CIPHER_get_name wolfSSL_CIPHER_get_name -#define SSL_CIPHER_get_version wolfSSL_CIPHER_get_version -#define SSL_CIPHER_get_id wolfSSL_CIPHER_get_id -#define SSL_CIPHER_get_rfc_name wolfSSL_CIPHER_get_name -#define SSL_CIPHER_standard_name wolfSSL_CIPHER_get_name -#define SSL_get_cipher_by_value wolfSSL_get_cipher_by_value - -#define SSL_get1_session wolfSSL_get1_session - -#define SSL_get_keyblock_size wolfSSL_get_keyblock_size -#define SSL_get_keys wolfSSL_get_keys -#define SSL_SESSION_get_master_key wolfSSL_SESSION_get_master_key -#define SSL_SESSION_get_master_key_length wolfSSL_SESSION_get_master_key_length - -#if defined(WOLFSSL_QT) || defined(OPENSSL_ALL) - #define SSL_MODE_RELEASE_BUFFERS 0x00000010U - #define ASN1_BOOLEAN WOLFSSL_ASN1_BOOLEAN - #define X509_get_ext wolfSSL_X509_get_ext - #define X509_cmp wolfSSL_X509_cmp - #define X509_EXTENSION_get_object wolfSSL_X509_EXTENSION_get_object - #define X509_EXTENSION_get_critical wolfSSL_X509_EXTENSION_get_critical - #define X509_EXTENSION_get_data wolfSSL_X509_EXTENSION_get_data - #define X509_EXTENSION_new wolfSSL_X509_EXTENSION_new - #define X509_EXTENSION_free wolfSSL_X509_EXTENSION_free - #define X509_gmtime_adj wolfSSL_X509_gmtime_adj -#endif - -#define DSA_dup_DH wolfSSL_DSA_dup_DH -/* wolfSSL does not support DSA as the cert public key */ -#define EVP_PKEY_get0_DSA(...) NULL -#define DSA_bits(...) 0 - -#define i2d_X509_bio wolfSSL_i2d_X509_bio -#define d2i_X509_bio wolfSSL_d2i_X509_bio -#define d2i_X509_fp wolfSSL_d2i_X509_fp -#define i2d_X509 wolfSSL_i2d_X509 -#define d2i_X509 wolfSSL_d2i_X509 -#define PEM_read_bio_X509 wolfSSL_PEM_read_bio_X509 -#define PEM_read_bio_X509_CRL wolfSSL_PEM_read_bio_X509_CRL -#define PEM_read_bio_X509_AUX wolfSSL_PEM_read_bio_X509_AUX -#define PEM_read_X509 wolfSSL_PEM_read_X509 -#define PEM_X509_INFO_read_bio wolfSSL_PEM_X509_INFO_read_bio -#define PEM_write_bio_X509 wolfSSL_PEM_write_bio_X509 -#define PEM_write_bio_X509_AUX wolfSSL_PEM_write_bio_X509_AUX -#define PEM_X509_INFO_read_bio wolfSSL_PEM_X509_INFO_read_bio -#define i2d_PrivateKey wolfSSL_i2d_PrivateKey - -#define i2d_X509_REQ wolfSSL_i2d_X509_REQ -#define X509_REQ_new wolfSSL_X509_REQ_new -#define X509_REQ_free wolfSSL_X509_REQ_free -#define X509_REQ_sign wolfSSL_X509_REQ_sign -#define X509_REQ_add_extensions wolfSSL_X509_REQ_add_extensions -#define X509_REQ_set_subject_name wolfSSL_X509_REQ_set_subject_name -#define X509_REQ_set_pubkey wolfSSL_X509_REQ_set_pubkey -#define PEM_write_bio_X509_REQ wolfSSL_PEM_write_bio_X509_REQ - -#define X509_new wolfSSL_X509_new -#define X509_up_ref wolfSSL_X509_up_ref -#define X509_free wolfSSL_X509_free -#define X509_load_certificate_file wolfSSL_X509_load_certificate_file -#define X509_digest wolfSSL_X509_digest -#define X509_get_ext_count wolfSSL_X509_get_ext_count -#define X509_get_ext_d2i wolfSSL_X509_get_ext_d2i -#define X509_get_ext wolfSSL_X509_get_ext -#define X509_get_ext_by_NID wolfSSL_X509_get_ext_by_NID -#define X509_get_issuer_name wolfSSL_X509_get_issuer_name -#define X509_get_subject_name wolfSSL_X509_get_subject_name -#define X509_get_pubkey wolfSSL_X509_get_pubkey -#define X509_get0_pubkey wolfSSL_X509_get_pubkey -#define X509_get_notBefore wolfSSL_X509_get_notBefore -#define X509_get_notAfter wolfSSL_X509_get_notAfter -#define X509_get_serialNumber wolfSSL_X509_get_serialNumber -#define X509_get0_pubkey_bitstr wolfSSL_X509_get0_pubkey_bitstr -#define X509_get_ex_new_index wolfSSL_X509_get_ex_new_index -#define X509_get_ex_data wolfSSL_X509_get_ex_data -#define X509_set_ex_data wolfSSL_X509_set_ex_data -#define X509_get1_ocsp wolfSSL_X509_get1_ocsp -#ifndef WOLFSSL_HAPROXY -#define X509_get_version wolfSSL_X509_get_version -#endif -#define X509_get_signature_nid wolfSSL_X509_get_signature_nid -#define X509_set_subject_name wolfSSL_X509_set_subject_name -#define X509_set_issuer_name wolfSSL_X509_set_issuer_name -#define X509_set_pubkey wolfSSL_X509_set_pubkey -#define X509_set_notAfter wolfSSL_X509_set_notAfter -#define X509_set_notBefore wolfSSL_X509_set_notBefore -#define X509_set_serialNumber wolfSSL_X509_set_serialNumber -#define X509_set_version wolfSSL_X509_set_version -#define X509_sign wolfSSL_X509_sign -#define X509_print wolfSSL_X509_print -#define X509_print_ex wolfSSL_X509_print_ex -#define X509_verify_cert_error_string wolfSSL_X509_verify_cert_error_string -#define X509_verify_cert wolfSSL_X509_verify_cert -#define X509_check_private_key wolfSSL_X509_check_private_key -#define X509_check_ca wolfSSL_X509_check_ca -#define X509_check_host wolfSSL_X509_check_host -#define X509_email_free wolfSSL_X509_email_free -#define X509_check_issued wolfSSL_X509_check_issued -#define X509_dup wolfSSL_X509_dup - -#define X509_EXTENSION_get_object wolfSSL_X509_EXTENSION_get_object -#define X509_EXTENSION_get_data wolfSSL_X509_EXTENSION_get_data - -#define sk_X509_new wolfSSL_sk_X509_new -#define sk_X509_new_null wolfSSL_sk_X509_new -#define sk_X509_num wolfSSL_sk_X509_num -#define sk_X509_value wolfSSL_sk_X509_value -#define sk_X509_shift wolfSSL_sk_X509_shift -#define sk_X509_push wolfSSL_sk_X509_push -#define sk_X509_pop wolfSSL_sk_X509_pop -#define sk_X509_pop_free wolfSSL_sk_X509_pop_free -#define sk_X509_dup wolfSSL_sk_X509_dup -#define sk_X509_free wolfSSL_sk_X509_free - -#define sk_X509_EXTENSION_num wolfSSL_sk_X509_EXTENSION_num -#define sk_X509_EXTENSION_value wolfSSL_sk_X509_EXTENSION_value -#define sk_X509_EXTENSION_new_null wolfSSL_sk_X509_EXTENSION_new_null -#define sk_X509_EXTENSION_pop_free wolfSSL_sk_X509_EXTENSION_pop_free -#define sk_X509_EXTENSION_push wolfSSL_sk_X509_EXTENSION_push -#define X509_EXTENSION_free wolfSSL_X509_EXTENSION_free - -#define X509_INFO_new wolfSSL_X509_INFO_new -#define X509_INFO_free wolfSSL_X509_INFO_free - -#define sk_X509_INFO_new_null wolfSSL_sk_X509_INFO_new_null -#define sk_X509_INFO_num wolfSSL_sk_X509_INFO_num -#define sk_X509_INFO_value wolfSSL_sk_X509_INFO_value -#define sk_X509_INFO_push wolfSSL_sk_X509_INFO_push -#define sk_X509_INFO_pop wolfSSL_sk_X509_INFO_pop -#define sk_X509_INFO_pop_free wolfSSL_sk_X509_INFO_pop_free -#define sk_X509_INFO_free wolfSSL_sk_X509_INFO_free - -#define i2d_X509_NAME wolfSSL_i2d_X509_NAME -#define X509_NAME_new wolfSSL_X509_NAME_new -#define X509_NAME_free wolfSSL_X509_NAME_free -#define X509_NAME_dup wolfSSL_X509_NAME_dup -#define X509_NAME_get_text_by_NID wolfSSL_X509_NAME_get_text_by_NID -#define X509_NAME_get_index_by_OBJ wolfSSL_X509_NAME_get_index_by_OBJ -#define X509_NAME_cmp wolfSSL_X509_NAME_cmp -#define X509_NAME_ENTRY_new wolfSSL_X509_NAME_ENTRY_new -#define X509_NAME_ENTRY_free wolfSSL_X509_NAME_ENTRY_free -#define X509_NAME_ENTRY_create_by_NID wolfSSL_X509_NAME_ENTRY_create_by_NID -#define X509_NAME_ENTRY_create_by_txt wolfSSL_X509_NAME_ENTRY_create_by_txt -#define X509_NAME_add_entry wolfSSL_X509_NAME_add_entry -#define X509_NAME_add_entry_by_txt wolfSSL_X509_NAME_add_entry_by_txt -#define X509_NAME_add_entry_by_NID wolfSSL_X509_NAME_add_entry_by_NID -#define X509_NAME_oneline wolfSSL_X509_NAME_oneline -#define X509_NAME_get_index_by_NID wolfSSL_X509_NAME_get_index_by_NID -#define X509_NAME_print_ex wolfSSL_X509_NAME_print_ex -#define X509_NAME_digest wolfSSL_X509_NAME_digest -#define X509_cmp_current_time wolfSSL_X509_cmp_current_time -#define X509_cmp_time wolfSSL_X509_cmp_time -#define X509_time_adj wolfSSL_X509_time_adj -#define X509_time_adj_ex wolfSSL_X509_time_adj_ex - -#define sk_ACCESS_DESCRIPTION_num wolfSSL_sk_ACCESS_DESCRIPTION_num -#define sk_ACCESS_DESCRIPTION_value wolfSSL_sk_ACCESS_DESCRIPTION_value - -#define sk_X509_NAME_new wolfSSL_sk_X509_NAME_new -#define sk_X509_NAME_push wolfSSL_sk_X509_NAME_push -#define sk_X509_NAME_find wolfSSL_sk_X509_NAME_find -#define sk_X509_NAME_set_cmp_func wolfSSL_sk_X509_NAME_set_cmp_func -#define sk_X509_NAME_num wolfSSL_sk_X509_NAME_num -#define sk_X509_NAME_value wolfSSL_sk_X509_NAME_value -#define sk_X509_NAME_pop wolfSSL_sk_X509_NAME_pop -#define sk_X509_NAME_pop_free wolfSSL_sk_X509_NAME_pop_free -#define sk_X509_NAME_free wolfSSL_sk_X509_NAME_free - -typedef WOLFSSL_X509_NAME_ENTRY X509_NAME_ENTRY; - -#define X509_NAME_entry_count wolfSSL_X509_NAME_entry_count -#define X509_NAME_ENTRY_get_object wolfSSL_X509_NAME_ENTRY_get_object -#define X509_NAME_get_entry wolfSSL_X509_NAME_get_entry -#define X509_NAME_ENTRY_get_data wolfSSL_X509_NAME_ENTRY_get_data -#define X509_NAME_ENTRY_get_object wolfSSL_X509_NAME_ENTRY_get_object - -#define X509_V_FLAG_CRL_CHECK WOLFSSL_CRL_CHECK -#define X509_V_FLAG_CRL_CHECK_ALL WOLFSSL_CRL_CHECKALL - -#define X509_V_FLAG_USE_CHECK_TIME WOLFSSL_USE_CHECK_TIME -#define X509_V_FLAG_NO_CHECK_TIME WOLFSSL_NO_CHECK_TIME -#define X509_CHECK_FLAG_NO_WILDCARDS WOLFSSL_NO_WILDCARDS - -#define X509_STORE_CTX_get_current_cert wolfSSL_X509_STORE_CTX_get_current_cert -#define X509_STORE_CTX_set_verify_cb wolfSSL_X509_STORE_CTX_set_verify_cb -#define X509_STORE_CTX_new wolfSSL_X509_STORE_CTX_new -#define X509_STORE_CTX_free wolfSSL_X509_STORE_CTX_free -#define X509_STORE_CTX_get_chain wolfSSL_X509_STORE_CTX_get_chain -#define X509_STORE_CTX_get1_chain wolfSSL_X509_STORE_CTX_get1_chain -#define X509_STORE_CTX_get_error wolfSSL_X509_STORE_CTX_get_error -#define X509_STORE_CTX_get_error_depth wolfSSL_X509_STORE_CTX_get_error_depth -#define X509_STORE_CTX_init wolfSSL_X509_STORE_CTX_init -#define X509_STORE_CTX_cleanup wolfSSL_X509_STORE_CTX_cleanup -#define X509_STORE_CTX_set_error wolfSSL_X509_STORE_CTX_set_error -#define X509_STORE_CTX_set_error_depth wolfSSL_X509_STORE_CTX_set_error_depth -#define X509_STORE_CTX_get_ex_data wolfSSL_X509_STORE_CTX_get_ex_data -#define X509_STORE_CTX_set_ex_data wolfSSL_X509_STORE_CTX_set_ex_data -#define X509_STORE_CTX_set_depth wolfSSL_X509_STORE_CTX_set_depth -#define X509_STORE_CTX_verify_cb WOLFSSL_X509_STORE_CTX_verify_cb -#define X509_STORE_CTX_get0_current_issuer \ - wolfSSL_X509_STORE_CTX_get0_current_issuer -#define X509_STORE_CTX_get0_store wolfSSL_X509_STORE_CTX_get0_store -#define X509_STORE_CTX_get0_cert wolfSSL_X509_STORE_CTX_get0_cert - -#define X509_STORE_set_verify_cb(s, c) \ -wolfSSL_X509_STORE_set_verify_cb((WOLFSSL_X509_STORE *)(s), (WOLFSSL_X509_STORE_CTX_verify_cb)(c)) -#define X509_STORE_set_verify_cb_func(s, c) \ -wolfSSL_X509_STORE_set_verify_cb((WOLFSSL_X509_STORE *)(s), (WOLFSSL_X509_STORE_CTX_verify_cb)(c)) - - -#define X509_STORE_new wolfSSL_X509_STORE_new -#define X509_STORE_free wolfSSL_X509_STORE_free -#define X509_STORE_add_lookup wolfSSL_X509_STORE_add_lookup -#define X509_STORE_add_cert wolfSSL_X509_STORE_add_cert -#define X509_STORE_add_crl wolfSSL_X509_STORE_add_crl -#define X509_STORE_set_flags wolfSSL_X509_STORE_set_flags -#define X509_STORE_get1_certs wolfSSL_X509_STORE_get1_certs -#define X509_STORE_get_by_subject wolfSSL_X509_STORE_get_by_subject -#define X509_STORE_CTX_get1_issuer wolfSSL_X509_STORE_CTX_get1_issuer -#define X509_STORE_CTX_set_time wolfSSL_X509_STORE_CTX_set_time -#define X509_VERIFY_PARAM_set_hostflags wolfSSL_X509_VERIFY_PARAM_set_hostflags -#define X509_VERIFY_PARAM_set1_host wolfSSL_X509_VERIFY_PARAM_set1_host -#define X509_VERIFY_PARAM_set1_ip_asc wolfSSL_X509_VERIFY_PARAM_set1_ip_asc -#define X509_STORE_load_locations wolfSSL_X509_STORE_load_locations - -#define X509_LOOKUP_add_dir wolfSSL_X509_LOOKUP_add_dir -#define X509_LOOKUP_load_file wolfSSL_X509_LOOKUP_load_file -#define X509_LOOKUP_hash_dir wolfSSL_X509_LOOKUP_hash_dir -#define X509_LOOKUP_file wolfSSL_X509_LOOKUP_file - -#define d2i_X509_CRL wolfSSL_d2i_X509_CRL -#define d2i_X509_CRL_fp wolfSSL_d2i_X509_CRL_fp -#define PEM_read_X509_CRL wolfSSL_PEM_read_X509_CRL - -#define X509_CRL_free wolfSSL_X509_CRL_free -#define X509_CRL_get_lastUpdate wolfSSL_X509_CRL_get_lastUpdate -#define X509_CRL_get_nextUpdate wolfSSL_X509_CRL_get_nextUpdate -#define X509_CRL_verify wolfSSL_X509_CRL_verify -#define X509_CRL_get_REVOKED wolfSSL_X509_CRL_get_REVOKED - -#define X509_get_X509_PUBKEY wolfSSL_X509_get_X509_PUBKEY -#define X509_get0_tbs_sigalg wolfSSL_X509_get0_tbs_sigalg -#define X509_PUBKEY_get0_param wolfSSL_X509_PUBKEY_get0_param -#define X509_PUBKEY_get wolfSSL_X509_PUBKEY_get -#define X509_PUBKEY_set wolfSSL_X509_PUBKEY_set -#define X509_ALGOR_get0 wolfSSL_X509_ALGOR_get0 -#define X509_ALGOR_set0 wolfSSL_X509_ALGOR_set0 - -#define X509_ALGOR_new wolfSSL_X509_ALGOR_new -#define X509_ALGOR_free wolfSSL_X509_ALGOR_free -#define X509_PUBKEY_new wolfSSL_X509_PUBKEY_new -#define X509_PUBKEY_free wolfSSL_X509_PUBKEY_free - -#define sk_X509_REVOKED_num wolfSSL_sk_X509_REVOKED_num -#define sk_X509_REVOKED_value wolfSSL_sk_X509_REVOKED_value - -#define X509_OBJECT_free_contents wolfSSL_X509_OBJECT_free_contents -#define X509_subject_name_hash wolfSSL_X509_subject_name_hash - -#define X509_check_purpose(...) 0 - -#define OCSP_parse_url wolfSSL_OCSP_parse_url - -#define MD4_Init wolfSSL_MD4_Init -#define MD4_Update wolfSSL_MD4_Update -#define MD4_Final wolfSSL_MD4_Final - -#define BIO_new wolfSSL_BIO_new -#define BIO_free wolfSSL_BIO_free -#define BIO_vfree wolfSSL_BIO_vfree -#define BIO_free_all wolfSSL_BIO_free_all -#define BIO_nread0 wolfSSL_BIO_nread0 -#define BIO_nread wolfSSL_BIO_nread -#define BIO_read wolfSSL_BIO_read -#define BIO_nwrite0 wolfSSL_BIO_nwrite0 -#define BIO_nwrite wolfSSL_BIO_nwrite -#define BIO_write wolfSSL_BIO_write -#define BIO_push wolfSSL_BIO_push -#define BIO_pop wolfSSL_BIO_pop -#define BIO_flush wolfSSL_BIO_flush -#define BIO_pending wolfSSL_BIO_pending - -#define BIO_get_mem_data wolfSSL_BIO_get_mem_data -#define BIO_new_mem_buf wolfSSL_BIO_new_mem_buf - -#define BIO_f_buffer wolfSSL_BIO_f_buffer -#define BIO_set_write_buffer_size wolfSSL_BIO_set_write_buffer_size -#define BIO_f_ssl wolfSSL_BIO_f_ssl -#define BIO_new_socket wolfSSL_BIO_new_socket -#define SSL_set_bio wolfSSL_set_bio -#define BIO_set_ssl wolfSSL_BIO_set_ssl -#define BIO_eof wolfSSL_BIO_eof -#define BIO_set_ss wolfSSL_BIO_set_ss - -#define BIO_f_md wolfSSL_BIO_f_md -#define BIO_get_md_ctx wolfSSL_BIO_get_md_ctx -#define BIO_s_mem wolfSSL_BIO_s_mem -#define BIO_f_base64 wolfSSL_BIO_f_base64 -#define BIO_set_flags wolfSSL_BIO_set_flags -#define BIO_set_nbio wolfSSL_BIO_set_nbio - -#define SSLeay_add_ssl_algorithms wolfSSL_add_all_algorithms -#define SSLeay_add_all_algorithms wolfSSL_add_all_algorithms - -#define RAND_screen wolfSSL_RAND_screen -#define RAND_file_name wolfSSL_RAND_file_name -#define RAND_write_file wolfSSL_RAND_write_file -#define RAND_load_file wolfSSL_RAND_load_file -#define RAND_egd wolfSSL_RAND_egd -#define RAND_seed wolfSSL_RAND_seed -#define RAND_cleanup wolfSSL_RAND_Cleanup -#define RAND_add wolfSSL_RAND_add -#define RAND_poll wolfSSL_RAND_poll -#define RAND_status wolfSSL_RAND_status -#define RAND_bytes wolfSSL_RAND_bytes -#define RAND_pseudo_bytes wolfSSL_RAND_pseudo_bytes - -#define COMP_zlib wolfSSL_COMP_zlib -#define COMP_rle wolfSSL_COMP_rle -#define SSL_COMP_add_compression_method wolfSSL_COMP_add_compression_method - -#define SSL_get_ex_new_index wolfSSL_get_ex_new_index -#define RSA_get_ex_new_index wolfSSL_get_ex_new_index - -#define ASN1_BIT_STRING_new wolfSSL_ASN1_BIT_STRING_new -#define ASN1_BIT_STRING_free wolfSSL_ASN1_BIT_STRING_free -#define ASN1_BIT_STRING_get_bit wolfSSL_ASN1_BIT_STRING_get_bit -#define ASN1_BIT_STRING_set_bit wolfSSL_ASN1_BIT_STRING_set_bit - -#define sk_ASN1_OBJECT_free wolfSSL_sk_ASN1_OBJECT_free - -#define ASN1_TIME_free wolfSSL_ASN1_TIME_free -#define ASN1_TIME_adj wolfSSL_ASN1_TIME_adj -#define ASN1_TIME_print wolfSSL_ASN1_TIME_print -#define ASN1_TIME_to_generalizedtime wolfSSL_ASN1_TIME_to_generalizedtime -#define ASN1_GENERALIZEDTIME_print wolfSSL_ASN1_GENERALIZEDTIME_print -#define ASN1_GENERALIZEDTIME_free wolfSSL_ASN1_GENERALIZEDTIME_free - -#define ASN1_tag2str wolfSSL_ASN1_tag2str - -#define i2a_ASN1_INTEGER wolfSSL_i2a_ASN1_INTEGER -#define i2c_ASN1_INTEGER wolfSSL_i2c_ASN1_INTEGER -#define ASN1_INTEGER_new wolfSSL_ASN1_INTEGER_new -#define ASN1_INTEGER_free wolfSSL_ASN1_INTEGER_free -#define ASN1_INTEGER_cmp wolfSSL_ASN1_INTEGER_cmp -#define ASN1_INTEGER_get wolfSSL_ASN1_INTEGER_get -#define ASN1_INTEGER_set wolfSSL_ASN1_INTEGER_set -#define ASN1_INTEGER_to_BN wolfSSL_ASN1_INTEGER_to_BN - -#define i2a_ASN1_OBJECT wolfSSL_i2a_ASN1_OBJECT - -#define ASN1_STRING_data wolfSSL_ASN1_STRING_data -#define ASN1_STRING_get0_data wolfSSL_ASN1_STRING_data -#define ASN1_STRING_length wolfSSL_ASN1_STRING_length -#define ASN1_STRING_to_UTF8 wolfSSL_ASN1_STRING_to_UTF8 -#define ASN1_STRING_print_ex wolfSSL_ASN1_STRING_print_ex -#define ASN1_STRING_print(x, y) wolfSSL_ASN1_STRING_print ((WOLFSSL_BIO*)(x), (WOLFSSL_ASN1_STRING*)(y)) -#define d2i_DISPLAYTEXT wolfSSL_d2i_DISPLAYTEXT - -#define ASN1_UTCTIME_pr wolfSSL_ASN1_UTCTIME_pr - -#define ASN1_IA5STRING WOLFSSL_ASN1_STRING - -#define ASN1_OCTET_STRING WOLFSSL_ASN1_STRING -#define ASN1_BOOLEAN WOLFSSL_ASN1_BOOLEAN - -#define SSL_load_client_CA_file wolfSSL_load_client_CA_file - -#define SSL_CTX_get_client_CA_list wolfSSL_CTX_get_client_CA_list -#define SSL_CTX_set_client_CA_list wolfSSL_CTX_set_client_CA_list -#define SSL_CTX_set_client_cert_cb wolfSSL_CTX_set_client_cert_cb -#define SSL_CTX_set_cert_store wolfSSL_CTX_set_cert_store -#define SSL_CTX_get_cert_store(x) wolfSSL_CTX_get_cert_store ((WOLFSSL_CTX*) (x)) -#define SSL_get_client_CA_list wolfSSL_get_client_CA_list -#define SSL_get_ex_data_X509_STORE_CTX_idx wolfSSL_get_ex_data_X509_STORE_CTX_idx -#define SSL_get_ex_data wolfSSL_get_ex_data - -#define SSL_CTX_set_default_passwd_cb_userdata wolfSSL_CTX_set_default_passwd_cb_userdata -#define SSL_CTX_set_default_passwd_cb wolfSSL_CTX_set_default_passwd_cb - -#define SSL_CTX_set_timeout(ctx, to) \ - wolfSSL_CTX_set_timeout(ctx, (unsigned int) to) -#define SSL_CTX_set_info_callback wolfSSL_CTX_set_info_callback -#define SSL_CTX_set_alpn_protos wolfSSL_CTX_set_alpn_protos - -#define SSL_alert_type_string wolfSSL_alert_type_string -#define SSL_alert_desc_string wolfSSL_alert_desc_string -#define SSL_state_string wolfSSL_state_string - -#define RSA_free wolfSSL_RSA_free -#define RSA_generate_key wolfSSL_RSA_generate_key -#define SSL_CTX_set_tmp_rsa_callback wolfSSL_CTX_set_tmp_rsa_callback -#define RSA_print wolfSSL_RSA_print -#define RSA_bits wolfSSL_RSA_size -#define RSA_up_ref wolfSSL_RSA_up_ref -#define RSA_padding_add_PKCS1_PSS wolfSSL_RSA_padding_add_PKCS1_PSS -#define RSA_verify_PKCS1_PSS wolfSSL_RSA_verify_PKCS1_PSS - -#define PEM_def_callback wolfSSL_PEM_def_callback - -#define SSL_CTX_sess_accept wolfSSL_CTX_sess_accept -#define SSL_CTX_sess_connect wolfSSL_CTX_sess_connect -#define SSL_CTX_sess_accept_good wolfSSL_CTX_sess_accept_good -#define SSL_CTX_sess_connect_good wolfSSL_CTX_sess_connect_good -#define SSL_CTX_sess_accept_renegotiate wolfSSL_CTX_sess_accept_renegotiate -#define SSL_CTX_sess_connect_renegotiate wolfSSL_CTX_sess_connect_renegotiate -#define SSL_CTX_sess_hits wolfSSL_CTX_sess_hits -#define SSL_CTX_sess_cb_hits wolfSSL_CTX_sess_cb_hits -#define SSL_CTX_sess_cache_full wolfSSL_CTX_sess_cache_full -#define SSL_CTX_sess_misses wolfSSL_CTX_sess_misses -#define SSL_CTX_sess_timeouts wolfSSL_CTX_sess_timeouts -#define SSL_CTX_sess_number wolfSSL_CTX_sess_number -#define SSL_CTX_sess_get_cache_size wolfSSL_CTX_sess_get_cache_size - - -#define SSL_DEFAULT_CIPHER_LIST WOLFSSL_DEFAULT_CIPHER_LIST - -#define SSL_CTX_set_psk_client_callback wolfSSL_CTX_set_psk_client_callback -#define SSL_set_psk_client_callback wolfSSL_set_psk_client_callback - -#define SSL_get_psk_identity_hint wolfSSL_get_psk_identity_hint -#define SSL_get_psk_identity wolfSSL_get_psk_identity - -#define SSL_CTX_use_psk_identity_hint wolfSSL_CTX_use_psk_identity_hint -#define SSL_use_psk_identity_hint wolfSSL_use_psk_identity_hint - -#define SSL_CTX_set_psk_server_callback wolfSSL_CTX_set_psk_server_callback -#define SSL_set_psk_server_callback wolfSSL_set_psk_server_callback - -/* system file ints for ERR_put_error */ -#define SYS_F_ACCEPT WOLFSSL_SYS_ACCEPT -#define SYS_F_BIND WOLFSSL_SYS_BIND -#define SYS_F_CONNECT WOLFSSL_SYS_CONNECT -#define SYS_F_FOPEN WOLFSSL_SYS_FOPEN -#define SYS_F_FREAD WOLFSSL_SYS_FREAD -#define SYS_F_GETADDRINFO WOLFSSL_SYS_GETADDRINFO -#define SYS_F_GETSOCKOPT WOLFSSL_SYS_GETSOCKOPT -#define SYS_F_GETSOCKNAME WOLFSSL_SYS_GETSOCKNAME -#define SYS_F_OPENDIR WOLFSSL_SYS_OPENDIR -#define SYS_F_SETSOCKOPT WOLFSSL_SYS_SETSOCKOPT -#define SYS_F_SOCKET WOLFSSL_SYS_SOCKET -#define SYS_F_GETHOSTBYNAME WOLFSSL_SYS_GETHOSTBYNAME -#define SYS_F_GETNAMEINFO WOLFSSL_SYS_GETNAMEINFO -#define SYS_F_GETSERVBYNAME WOLFSSL_SYS_GETSERVBYNAME -#define SYS_F_IOCTLSOCKET WOLFSSL_SYS_IOCTLSOCKET -#define SYS_F_LISTEN WOLFSSL_SYS_LISTEN - -#define ERR_GET_LIB wolfSSL_ERR_GET_LIB -#define ERR_GET_REASON wolfSSL_ERR_GET_REASON - -#define ERR_put_error wolfSSL_ERR_put_error -#define ERR_peek_error wolfSSL_ERR_peek_error -#define ERR_peek_errors_fp wolfSSL_ERR_peek_errors_fp -#define ERR_peek_error_line_data wolfSSL_ERR_peek_error_line_data -#define ERR_peek_last_error wolfSSL_ERR_peek_last_error -#define ERR_peek_last_error_line wolfSSL_ERR_peek_last_error_line -#define ERR_get_error_line wolfSSL_ERR_get_error_line -#define ERR_get_error_line_data wolfSSL_ERR_get_error_line_data -#define ERR_get_error wolfSSL_ERR_get_error -#define ERR_print_errors_fp(file) wolfSSL_ERR_dump_errors_fp((file)) -#define ERR_print_errors_cb wolfSSL_ERR_print_errors_cb -#define ERR_print_errors wolfSSL_ERR_print_errors -#define ERR_clear_error wolfSSL_ERR_clear_error -#define ERR_free_strings wolfSSL_ERR_free_strings -#define ERR_remove_state wolfSSL_ERR_remove_state -#define ERR_remove_thread_state wolfSSL_ERR_remove_thread_state -#define ERR_error_string wolfSSL_ERR_error_string -#define ERR_error_string_n wolfSSL_ERR_error_string_n -#define ERR_reason_error_string wolfSSL_ERR_reason_error_string -#define ERR_load_BIO_strings wolfSSL_ERR_load_BIO_strings - -#ifndef WOLFCRYPT_ONLY -#define PEMerr(func, reason) wolfSSL_ERR_put_error(ERR_LIB_PEM, \ - (func), (reason), __FILE__, __LINE__) -#else -#define PEMerr(func, reason) WOLFSSL_ERROR_LINE((reason), \ - NULL, __LINE__, __FILE__, NULL) -#endif - -#define SSLv23_server_method wolfSSLv23_server_method -#define SSL_CTX_set_options wolfSSL_CTX_set_options -#define SSL_CTX_get_options wolfSSL_CTX_get_options -#define SSL_CTX_clear_options wolfSSL_CTX_clear_options - -#define SSL_CTX_check_private_key wolfSSL_CTX_check_private_key -#define SSL_check_private_key wolfSSL_check_private_key - -#define SSL_CTX_set_mode wolfSSL_CTX_set_mode -#define SSL_CTX_get_mode wolfSSL_CTX_get_mode -#define SSL_CTX_set_default_read_ahead wolfSSL_CTX_set_default_read_ahead - -#define SSL_CTX_sess_set_cache_size wolfSSL_CTX_sess_set_cache_size -#define SSL_CTX_set_default_verify_paths wolfSSL_CTX_set_default_verify_paths - -#define SSL_CTX_set_session_id_context wolfSSL_CTX_set_session_id_context -#define SSL_get_peer_certificate wolfSSL_get_peer_certificate -#define SSL_get_peer_cert_chain wolfSSL_get_peer_cert_chain - -#define SSL_want wolfSSL_want -#define SSL_want_read wolfSSL_want_read -#define SSL_want_write wolfSSL_want_write - -#define BIO_prf wolfSSL_BIO_prf - -#define sk_num wolfSSL_sk_num -#define sk_ASN1_OBJECT_num wolfSSL_sk_num -#define sk_value wolfSSL_sk_value -#define sk_ASN1_OBJECT_value wolfSSL_sk_value - -#define d2i_PKCS12_bio wolfSSL_d2i_PKCS12_bio -#define d2i_PKCS12_fp wolfSSL_d2i_PKCS12_fp -#define i2d_PKCS12_bio wolfSSL_i2d_PKCS12_bio - -#define d2i_RSAPublicKey wolfSSL_d2i_RSAPublicKey -#define d2i_RSAPrivateKey wolfSSL_d2i_RSAPrivateKey -#define i2d_RSAPrivateKey wolfSSL_i2d_RSAPrivateKey -#define i2d_RSAPublicKey wolfSSL_i2d_RSAPublicKey - -#define SSL_CTX_get_ex_data wolfSSL_CTX_get_ex_data -#define SSL_CTX_set_ex_data wolfSSL_CTX_set_ex_data -#define SSL_CTX_sess_set_get_cb wolfSSL_CTX_sess_set_get_cb -#define SSL_CTX_sess_set_new_cb wolfSSL_CTX_sess_set_new_cb -#define SSL_CTX_sess_set_remove_cb wolfSSL_CTX_sess_set_remove_cb - -#define i2d_SSL_SESSION wolfSSL_i2d_SSL_SESSION -#define d2i_SSL_SESSION wolfSSL_d2i_SSL_SESSION -#define SSL_SESSION_set_timeout wolfSSL_SSL_SESSION_set_timeout -#define SSL_SESSION_get_timeout wolfSSL_SESSION_get_timeout -#define SSL_SESSION_get_time wolfSSL_SESSION_get_time - -#define SSL_CTX_get_ex_new_index wolfSSL_CTX_get_ex_new_index -#define PEM_read wolfSSL_PEM_read -#define PEM_write wolfSSL_PEM_write -#define PEM_get_EVP_CIPHER_INFO wolfSSL_PEM_get_EVP_CIPHER_INFO -#define PEM_do_header wolfSSL_PEM_do_header - -/*#if OPENSSL_API_COMPAT < 0x10100000L*/ -#define CONF_modules_free() -#define ENGINE_cleanup() -#define HMAC_CTX_cleanup wolfSSL_HMAC_cleanup -#define SSL_CTX_need_tmp_RSA(ctx) 0 -#define SSL_CTX_set_tmp_rsa(ctx,rsa) 1 -#define SSL_need_tmp_RSA(ssl) 0 -#define SSL_set_tmp_rsa(ssl,rsa) 1 -/*#endif*/ - -#define CONF_modules_unload(a) -#define CONF_get1_default_config_file wolfSSL_CONF_get1_default_config_file - -#define SSL_get_hit wolfSSL_session_reused - -/* yassl had set the default to be 500 */ -#define SSL_get_default_timeout(ctx) 500 - -#define DTLSv1_get_timeout(ssl, timeleft) wolfSSL_DTLSv1_get_timeout((ssl), (WOLFSSL_TIMEVAL*)(timeleft)) -#define DTLSv1_handle_timeout wolfSSL_DTLSv1_handle_timeout -#define DTLSv1_set_initial_timeout_duration wolfSSL_DTLSv1_set_initial_timeout_duration - -#ifndef NO_WOLFSSL_STUB -#define SSL_CTX_set_current_time_cb(ssl, cb) ({ (void)ssl; (void)cb; }) -#endif - -#define SSL_CTX_use_certificate wolfSSL_CTX_use_certificate -#define SSL_CTX_add1_chain_cert wolfSSL_CTX_add1_chain_cert -#define SSL_CTX_use_PrivateKey wolfSSL_CTX_use_PrivateKey -#define BIO_read_filename wolfSSL_BIO_read_filename -#define SSL_CTX_set_verify_depth wolfSSL_CTX_set_verify_depth -#define SSL_set_verify_depth wolfSSL_set_verify_depth -#define SSL_get_app_data wolfSSL_get_app_data -#define SSL_set_app_data wolfSSL_set_app_data -#define SHA1 wolfSSL_SHA1 - -#define SSL_dup_CA_list wolfSSL_dup_CA_list - -#define sk_X509_NAME_find wolfSSL_sk_X509_NAME_find - -enum { - GEN_DNS = 0x02, /* ASN_DNS_TYPE */ - GEN_EMAIL = 0x01, /* ASN_RFC822_TYPE */ - GEN_URI = 0x06, /* ASN_URI_TYPE */ - GEN_IPADD = 0x07, - GEN_RID = 0x08, /* Registered ID, not supported */ -}; - -#define PEM_read_bio_DHparams wolfSSL_PEM_read_bio_DHparams -#define PEM_read_bio_DSAparams wolfSSL_PEM_read_bio_DSAparams - -#if defined(OPENSSL_ALL) || defined(WOLFSSL_HAPROXY) -#define SSL_get_rbio wolfSSL_SSL_get_rbio -#define SSL_get_wbio wolfSSL_SSL_get_wbio -#define SSL_do_handshake wolfSSL_SSL_do_handshake -#define SSL_get_ciphers(x) wolfSSL_get_ciphers_compat(x) -#define SSL_SESSION_get_id wolfSSL_SESSION_get_id -#define SSL_get_cipher_bits(s,np) \ - wolfSSL_CIPHER_get_bits(SSL_get_current_cipher(s),np) -#define sk_SSL_CIPHER_num wolfSSL_sk_SSL_CIPHER_num -#define sk_SSL_COMP_zero wolfSSL_sk_SSL_COMP_zero -#define sk_SSL_CIPHER_value wolfSSL_sk_SSL_CIPHER_value -#endif /* OPENSSL_ALL || WOLFSSL_HAPROXY */ -#define sk_SSL_CIPHER_dup wolfSSL_sk_SSL_CIPHER_dup -#define sk_SSL_CIPHER_free wolfSSL_sk_SSL_CIPHER_free -#define sk_SSL_CIPHER_find wolfSSL_sk_SSL_CIPHER_find - -#if defined(OPENSSL_ALL) || defined(WOLFSSL_ASIO) || defined(WOLFSSL_HAPROXY) \ - || defined(WOLFSSL_NGINX) -#include <wolfssl/openssl/pem.h> - -#define SSL_CTRL_CHAIN 88 -#define GEN_IPADD 7 -#define ERR_LIB_SSL 20 -#define SSL_R_SHORT_READ 10 -#define ERR_R_PEM_LIB 9 -#define V_ASN1_IA5STRING 22 -#define V_ASN1_UTF8STRING 12 -#define SSL_CTRL_MODE 33 - -#define SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS 83 - -#define SSL_CTX_clear_chain_certs(ctx) SSL_CTX_set0_chain(ctx,NULL) -#define d2i_RSAPrivateKey_bio wolfSSL_d2i_RSAPrivateKey_bio -#define SSL_CTX_use_RSAPrivateKey wolfSSL_CTX_use_RSAPrivateKey -#define d2i_PrivateKey_bio wolfSSL_d2i_PrivateKey_bio -#define BIO_new_bio_pair wolfSSL_BIO_new_bio_pair -#define SSL_get_verify_callback wolfSSL_get_verify_callback - -#define SSL_set_mode(ssl,op) wolfSSL_ctrl((ssl),SSL_CTRL_MODE,(op),NULL) - -#define SSL_CTX_use_certificate_ASN1 wolfSSL_CTX_use_certificate_ASN1 -#define SSL_CTX_set0_chain(ctx,sk) \ - wolfSSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN,0,(char *)(sk)) -#define SSL_CTX_get_app_data(ctx) wolfSSL_CTX_get_ex_data(ctx,0) -#define SSL_CTX_set_app_data(ctx,arg) wolfSSL_CTX_set_ex_data(ctx,0, \ - (char *)(arg)) -#endif /* OPENSSL_ALL || WOLFSSL_ASIO || WOLFSSL_HAPROXY */ - -#define SSL_CTX_set_tmp_dh wolfSSL_CTX_set_tmp_dh - -#define TLSEXT_STATUSTYPE_ocsp 1 - -#define SSL_set_options wolfSSL_set_options -#define SSL_get_options wolfSSL_get_options -#define SSL_clear_options wolfSSL_clear_options -#define SSL_set_tmp_dh wolfSSL_set_tmp_dh -#define SSL_clear_num_renegotiations wolfSSL_clear_num_renegotiations -#define SSL_total_renegotiations wolfSSL_total_renegotiations -#define SSL_num_renegotiations wolfSSL_num_renegotiations -#define SSL_renegotiate wolfSSL_Rehandshake -#define SSL_get_secure_renegotiation_support wolfSSL_SSL_get_secure_renegotiation_support -#define SSL_set_tlsext_debug_arg wolfSSL_set_tlsext_debug_arg -#define SSL_set_tlsext_status_type wolfSSL_set_tlsext_status_type -#define SSL_set_tlsext_status_exts wolfSSL_set_tlsext_status_exts -#define SSL_get_tlsext_status_ids wolfSSL_get_tlsext_status_ids -#define SSL_set_tlsext_status_ids wolfSSL_set_tlsext_status_ids -#define SSL_get_tlsext_status_ocsp_res wolfSSL_get_tlsext_status_ocsp_resp -#define SSL_set_tlsext_status_ocsp_res wolfSSL_set_tlsext_status_ocsp_resp -#define SSL_set_tlsext_status_ocsp_resp wolfSSL_set_tlsext_status_ocsp_resp -#define SSL_get_tlsext_status_ocsp_resp wolfSSL_get_tlsext_status_ocsp_resp - -#define SSL_CTX_add_extra_chain_cert wolfSSL_CTX_add_extra_chain_cert -#define SSL_CTX_get_read_ahead wolfSSL_CTX_get_read_ahead -#define SSL_CTX_set_read_ahead wolfSSL_CTX_set_read_ahead -#define SSL_CTX_set_tlsext_status_arg wolfSSL_CTX_set_tlsext_status_arg -#define SSL_CTX_set_tlsext_opaque_prf_input_callback_arg \ - wolfSSL_CTX_set_tlsext_opaque_prf_input_callback_arg -#define SSL_get_server_random wolfSSL_get_server_random -#define SSL_get_server_tmp_key wolfSSL_get_server_tmp_key - -#define SSL_CTX_set_min_proto_version wolfSSL_CTX_set_min_proto_version -#define SSL_CTX_set_max_proto_version wolfSSL_CTX_set_max_proto_version - -#define SSL_get_tlsext_status_exts wolfSSL_get_tlsext_status_exts - -#define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 11 -#define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 12 -#define SSL_CTRL_SET_TMP_DH 3 -#define SSL_CTRL_SET_TMP_ECDH 4 -#define SSL_CTRL_SET_TLSEXT_DEBUG_ARG 57 -#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_TYPE 65 -#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_EXTS 66 -#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_EXTS 67 -#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_IDS 68 -#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_IDS 69 -#define SSL_CTRL_GET_TLSEXT_STATUS_REQ_OCSP_RESP 70 -#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_OCSP_RESP 71 - -#define SSL_CTRL_EXTRA_CHAIN_CERT 14 -#define SSL_CTRL_OPTIONS 32 - -#define SSL_CTRL_SET_SESS_CACHE_SIZE 42 -#define SSL_CTRL_GET_READ_AHEAD 40 -#define SSL_CTRL_SET_READ_AHEAD 41 - -#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB 63 -#define SSL_CTRL_SET_TLSEXT_STATUS_REQ_CB_ARG 64 - -#define SSL_CTRL_GET_EXTRA_CHAIN_CERTS 82 -#define SSL_CTRL_GET_SESSION_REUSED 0 - -#define SSL_ctrl wolfSSL_ctrl -#define SSL_CTX_ctrl wolfSSL_CTX_ctrl -#define SSL_CTX_callback_ctrl wolfSSL_CTX_callback_ctrl - -#define SSL3_RANDOM_SIZE 32 /* same as RAN_LEN in internal.h */ - -#define SSL2_VERSION 0x0002 -#define SSL3_VERSION 0x0300 -#define TLS1_VERSION 0x0301 -#define TLS1_1_VERSION 0x0302 -#define TLS1_2_VERSION 0x0303 -#define TLS1_3_VERSION 0x0304 -#define DTLS1_VERSION 0xFEFF -#define DTLS1_2_VERSION 0xFEFD - -#if defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) || defined(OPENSSL_EXTRA) \ - || defined(OPENSSL_ALL) -#include <wolfssl/openssl/asn1.h> - -#define SSL23_ST_SR_CLNT_HELLO_A (0x210|0x2000) -#define SSL3_ST_SR_CLNT_HELLO_A (0x110|0x2000) - -#define SSL3_AD_BAD_CERTIFICATE bad_certificate -#define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE - -#define ASN1_STRFLGS_ESC_MSB 4 - -#define SSL_MAX_MASTER_KEY_LENGTH WOLFSSL_MAX_MASTER_KEY_LENGTH - -#define SSL_alert_desc_string_long wolfSSL_alert_desc_string_long -#define SSL_alert_type_string_long wolfSSL_alert_type_string_long -#define SSL_CIPHER_get_bits wolfSSL_CIPHER_get_bits -#define sk_GENERAL_NAME_num wolfSSL_sk_GENERAL_NAME_num -#define SSL_CTX_get_options wolfSSL_CTX_get_options - -#define SSL_CTX_flush_sessions wolfSSL_flush_sessions -#define SSL_CTX_add_session wolfSSL_CTX_add_session -#define SSL_version(x) wolfSSL_version ((WOLFSSL*) (x)) -#define SSL_get_state wolfSSL_get_state -#define SSL_state_string_long wolfSSL_state_string_long - -#define GENERAL_NAME_new wolfSSL_GENERAL_NAME_new -#define GENERAL_NAME_free wolfSSL_GENERAL_NAME_free -#define sk_GENERAL_NAME_push wolfSSL_sk_GENERAL_NAME_push -#define sk_GENERAL_NAME_value wolfSSL_sk_GENERAL_NAME_value -#define SSL_SESSION_get_ex_data wolfSSL_SESSION_get_ex_data -#define SSL_SESSION_set_ex_data wolfSSL_SESSION_set_ex_data -#define SSL_SESSION_get_ex_new_index wolfSSL_SESSION_get_ex_new_index -#define SSL_SESSION_get_id wolfSSL_SESSION_get_id -#define SSL_SESSION_print wolfSSL_SESSION_print -#define sk_GENERAL_NAME_pop_free wolfSSL_sk_GENERAL_NAME_pop_free -#define sk_GENERAL_NAME_free wolfSSL_sk_GENERAL_NAME_free -#define sk_ASN1_OBJECT_pop_free wolfSSL_sk_ASN1_OBJECT_pop_free -#define GENERAL_NAME_free wolfSSL_GENERAL_NAME_free -#define GENERAL_NAMES_free wolfSSL_GENERAL_NAMES_free - -#define AUTHORITY_INFO_ACCESS_free wolfSSL_AUTHORITY_INFO_ACCESS_free -#define sk_ACCESS_DESCRIPTION_pop_free wolfSSL_sk_ACCESS_DESCRIPTION_pop_free -#define sk_ACCESS_DESCRIPTION_free wolfSSL_sk_ACCESS_DESCRIPTION_free -#define ACCESS_DESCRIPTION_free wolfSSL_ACCESS_DESCRIPTION_free - -#define SSL3_AL_FATAL 2 -#define SSL_TLSEXT_ERR_OK 0 -#define SSL_TLSEXT_ERR_ALERT_FATAL alert_fatal -#define SSL_TLSEXT_ERR_NOACK alert_warning -#define TLSEXT_NAMETYPE_host_name WOLFSSL_SNI_HOST_NAME - -#define SSL_set_tlsext_host_name wolfSSL_set_tlsext_host_name -#define SSL_get_servername wolfSSL_get_servername -#define SSL_set_SSL_CTX wolfSSL_set_SSL_CTX -#define SSL_CTX_get_verify_callback wolfSSL_CTX_get_verify_callback -#define SSL_CTX_set_tlsext_servername_callback wolfSSL_CTX_set_tlsext_servername_callback -#define SSL_CTX_set_tlsext_servername_arg wolfSSL_CTX_set_servername_arg - -#define PSK_MAX_PSK_LEN 256 -#define PSK_MAX_IDENTITY_LEN 128 -#define SSL_CTX_clear_options wolfSSL_CTX_clear_options - - -#endif /* HAVE_STUNNEL || WOLFSSL_NGINX */ -#define SSL_CTX_get_default_passwd_cb wolfSSL_CTX_get_default_passwd_cb -#define SSL_CTX_get_default_passwd_cb_userdata wolfSSL_CTX_get_default_passwd_cb_userdata - -#define SSL_CTX_set_msg_callback wolfSSL_CTX_set_msg_callback -#define SSL_set_msg_callback wolfSSL_set_msg_callback -#define SSL_CTX_set_msg_callback_arg wolfSSL_CTX_set_msg_callback_arg -#define SSL_set_msg_callback_arg wolfSSL_set_msg_callback_arg - -#define SSL_CTX_clear_extra_chain_certs wolfSSL_CTX_clear_extra_chain_certs - - -/* Nginx uses this to determine if reached end of certs in file. - * PEM_read_bio_X509 is called and the return error is lost. - * The error that needs to be detected is: SSL_NO_PEM_HEADER. - */ -#define ERR_GET_FUNC(l) (int)((((unsigned long)l) >> 12L) & 0xfffL) - -#define PEM_F_PEM_DEF_CALLBACK 100 - -/* Avoid wolfSSL error code range */ -#define PEM_R_NO_START_LINE (-MIN_CODE_E + 1) -#define PEM_R_PROBLEMS_GETTING_PASSWORD (-MIN_CODE_E + 2) -#define PEM_R_BAD_PASSWORD_READ (-MIN_CODE_E + 3) -#define PEM_R_BAD_DECRYPT (-MIN_CODE_E + 4) - -#define ERR_LIB_PEM 9 -#define ERR_LIB_X509 10 -#define ERR_LIB_EVP 11 -#define ERR_LIB_ASN1 12 - -#if defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) || \ - defined(WOLFSSL_MYSQL_COMPATIBLE) || defined(OPENSSL_ALL) || \ - defined(HAVE_LIGHTY) - -#include <wolfssl/error-ssl.h> - -#define OPENSSL_STRING WOLFSSL_STRING - -#define TLSEXT_TYPE_application_layer_protocol_negotiation 16 - -#define OPENSSL_NPN_UNSUPPORTED 0 -#define OPENSSL_NPN_NEGOTIATED 1 -#define OPENSSL_NPN_NO_OVERLAP 2 - -/* Nginx checks these to see if the error was a handshake error. */ -#define SSL_R_BAD_CHANGE_CIPHER_SPEC LENGTH_ERROR -#define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG BUFFER_E -#define SSL_R_DIGEST_CHECK_FAILED VERIFY_MAC_ERROR -#define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST SUITES_ERROR -#define SSL_R_EXCESSIVE_MESSAGE_SIZE BUFFER_ERROR -#define SSL_R_LENGTH_MISMATCH LENGTH_ERROR -#define SSL_R_NO_CIPHERS_SPECIFIED SUITES_ERROR -#define SSL_R_NO_COMPRESSION_SPECIFIED COMPRESSION_ERROR -#define SSL_R_NO_SHARED_CIPHER MATCH_SUITE_ERROR -#define SSL_R_RECORD_LENGTH_MISMATCH HANDSHAKE_SIZE_ERROR -#define SSL_R_UNEXPECTED_MESSAGE OUT_OF_ORDER_E -#define SSL_R_UNEXPECTED_RECORD SANITY_MSG_E -#define SSL_R_UNKNOWN_ALERT_TYPE BUFFER_ERROR -#define SSL_R_UNKNOWN_PROTOCOL VERSION_ERROR -#define SSL_R_WRONG_VERSION_NUMBER VERSION_ERROR -#define SSL_R_DECRYPTION_FAILED_OR_BAD_RECORD_MAC ENCRYPT_ERROR -#define SSL_R_HTTPS_PROXY_REQUEST PARSE_ERROR -#define SSL_R_HTTP_REQUEST PARSE_ERROR -#define SSL_R_UNSUPPORTED_PROTOCOL VERSION_ERROR - - -#ifdef HAVE_SESSION_TICKET -#define SSL_OP_NO_TICKET SSL_OP_NO_TICKET -#define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 -#endif - -#define OPENSSL_config wolfSSL_OPENSSL_config -#define OPENSSL_memdup wolfSSL_OPENSSL_memdup -#define SSL_CTX_get_timeout wolfSSL_SSL_CTX_get_timeout -#define SSL_CTX_set_tmp_ecdh wolfSSL_SSL_CTX_set_tmp_ecdh -#define SSL_CTX_remove_session wolfSSL_SSL_CTX_remove_session -#define SSL_get_rbio wolfSSL_SSL_get_rbio -#define SSL_get_wbio wolfSSL_SSL_get_wbio -#define SSL_do_handshake wolfSSL_SSL_do_handshake -#define SSL_in_init wolfSSL_SSL_in_init -#define SSL_in_connect_init wolfSSL_SSL_in_connect_init -#define SSL_get0_session wolfSSL_SSL_get0_session -#define SSL_CTX_set_tlsext_ticket_key_cb wolfSSL_CTX_set_tlsext_ticket_key_cb -#define SSL_CTX_set_tlsext_status_cb wolfSSL_CTX_set_tlsext_status_cb -#define SSL_CTX_get_extra_chain_certs wolfSSL_CTX_get_extra_chain_certs -#define sk_OPENSSL_STRING_value wolfSSL_sk_WOLFSSL_STRING_value -#define SSL_get0_alpn_selected wolfSSL_get0_alpn_selected -#define SSL_select_next_proto wolfSSL_select_next_proto -#define SSL_CTX_set_alpn_select_cb wolfSSL_CTX_set_alpn_select_cb -#define SSL_CTX_set_next_protos_advertised_cb wolfSSL_CTX_set_next_protos_advertised_cb -#define SSL_CTX_set_next_proto_select_cb wolfSSL_CTX_set_next_proto_select_cb -#define SSL_set_alpn_protos wolfSSL_set_alpn_protos -#define SSL_get0_next_proto_negotiated wolfSSL_get0_next_proto_negotiated -#define SSL_is_server wolfSSL_is_server - -#endif /* WOLFSSL_NGINX || WOLFSSL_HAPROXY || WOLFSSL_MYSQL_COMPATIBLE || - OPENSSL_ALL || HAVE_LIGHTY */ - -#if defined(OPENSSL_EXTRA) && defined(HAVE_ECC) -#define SSL_CTX_set1_curves_list wolfSSL_CTX_set1_curves_list -#define SSL_set1_curves_list wolfSSL_set1_curves_list -#endif - -#ifdef OPENSSL_EXTRA -#define SSL_CTX_add_client_CA wolfSSL_CTX_add_client_CA -#define SSL_CTX_set_srp_password wolfSSL_CTX_set_srp_password -#define SSL_CTX_set_srp_username wolfSSL_CTX_set_srp_username -#define SSL_get_SSL_CTX wolfSSL_get_SSL_CTX -#define SSL_get0_param wolfSSL_get0_param - -#define ERR_NUM_ERRORS 16 -#define SN_pkcs9_emailAddress "Email" -#define LN_pkcs9_emailAddress "emailAddress" -#define NID_pkcs9_emailAddress 48 -#define OBJ_pkcs9_emailAddress 1L,2L,840L,113539L,1L,9L,1L - -#define SSL_get_rbio wolfSSL_SSL_get_rbio -#define SSL_get_wbio wolfSSL_SSL_get_wbio -#define SSL_do_handshake wolfSSL_SSL_do_handshake -#endif /* OPENSSL_EXTRA */ - -/* cipher suites for compatibility */ -#define TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013) -#define TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014) -#define TLS1_CK_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f) -#define TLS1_CK_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca8) -#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009) -#define TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a) -#define TLS1_CK_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b) -#define TLS1_CK_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca9) - -#define X509_STORE_get0_objects wolfSSL_X509_STORE_get0_objects -#define sk_X509_OBJECT_num wolfSSL_sk_X509_OBJECT_num -#define sk_X509_OBJECT_value wolfSSL_sk_X509_OBJECT_value -#define sk_X509_OBJECT_delete wolfSSL_sk_X509_OBJECT_delete -#define X509_OBJECT_free wolfSSL_X509_OBJECT_free -#define X509_OBJECT_get_type(x) 0 - -#define OpenSSL_version(x) wolfSSL_lib_version() - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* wolfSSL_openssl_h__ */ diff --git a/client/wolfssl/wolfssl/openssl/ssl23.h b/client/wolfssl/wolfssl/openssl/ssl23.h deleted file mode 100644 index fc3ddfb..0000000 --- a/client/wolfssl/wolfssl/openssl/ssl23.h +++ /dev/null @@ -1 +0,0 @@ -/* ssl23.h for openssl */ diff --git a/client/wolfssl/wolfssl/openssl/stack.h b/client/wolfssl/wolfssl/openssl/stack.h deleted file mode 100644 index 13e2c5d..0000000 --- a/client/wolfssl/wolfssl/openssl/stack.h +++ /dev/null @@ -1,59 +0,0 @@ -/* stack.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* stack.h for openSSL */ - -#ifndef WOLFSSL_STACK_H_ -#define WOLFSSL_STACK_H_ - -#ifdef __cplusplus - extern "C" { -#endif - -typedef void (*wolfSSL_sk_freefunc)(void *); - -WOLFSSL_API void wolfSSL_sk_GENERIC_pop_free(WOLFSSL_STACK* sk, wolfSSL_sk_freefunc); -WOLFSSL_API void wolfSSL_sk_GENERIC_free(WOLFSSL_STACK *); -WOLFSSL_API int wolfSSL_sk_GENERIC_push(WOLFSSL_STACK *sk, void *data); -WOLFSSL_API void wolfSSL_sk_pop_free(WOLFSSL_STACK *st, void (*func) (void *)); -WOLFSSL_API void wolfSSL_sk_CONF_VALUE_free(WOLF_STACK_OF(WOLFSSL_CONF_VALUE)* sk); -WOLFSSL_API WOLFSSL_STACK *wolfSSL_sk_new_null(void); - -WOLFSSL_API int wolfSSL_sk_CIPHER_push(WOLFSSL_STACK *st,WOLFSSL_CIPHER *cipher); -WOLFSSL_API WOLFSSL_CIPHER* wolfSSL_sk_CIPHER_pop(WOLF_STACK_OF(WOLFSSL_CIPHER)* sk); -WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_new_cipher(void); - -#define OPENSSL_sk_free wolfSSL_sk_free -#define OPENSSL_sk_pop_free wolfSSL_sk_pop_free -#define OPENSSL_sk_new_null wolfSSL_sk_new_null -#define OPENSSL_sk_push wolfSSL_sk_push - -/* provides older OpenSSL API compatibility */ -#define sk_free OPENSSL_sk_free -#define sk_pop_free OPENSSL_sk_pop_free -#define sk_new_null OPENSSL_sk_new_null -#define sk_push OPENSSL_sk_push - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/client/wolfssl/wolfssl/openssl/tls1.h b/client/wolfssl/wolfssl/openssl/tls1.h deleted file mode 100644 index b73a8b0..0000000 --- a/client/wolfssl/wolfssl/openssl/tls1.h +++ /dev/null @@ -1,46 +0,0 @@ -/* tls1.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLFSSL_OPENSSL_TLS1_H_ -#define WOLFSSL_OPENSSL_TLS1_H_ - -#ifndef TLS1_VERSION -#define TLS1_VERSION 0x0301 -#endif - -#ifndef TLS1_1_VERSION -#define TLS1_1_VERSION 0x0302 -#endif - -#ifndef TLS1_2_VERSION -#define TLS1_2_VERSION 0x0303 -#endif - -#ifndef TLS1_3_VERSION -#define TLS1_3_VERSION 0x0304 -#endif - -#ifndef TLS_MAX_VERSION -#define TLS_MAX_VERSION TLS1_3_VERSION -#endif - -#endif /* WOLFSSL_OPENSSL_TLS1_H_ */ diff --git a/client/wolfssl/wolfssl/openssl/ui.h b/client/wolfssl/wolfssl/openssl/ui.h deleted file mode 100644 index a253930..0000000 --- a/client/wolfssl/wolfssl/openssl/ui.h +++ /dev/null @@ -1,2 +0,0 @@ -/* ui.h for openssl */ - diff --git a/client/wolfssl/wolfssl/openssl/x509.h b/client/wolfssl/wolfssl/openssl/x509.h deleted file mode 100644 index 77a8bca..0000000 --- a/client/wolfssl/wolfssl/openssl/x509.h +++ /dev/null @@ -1,26 +0,0 @@ -/* x509.h for openssl */ - -#include <wolfssl/openssl/ssl.h> -#include <wolfssl/openssl/crypto.h> -#include <wolfssl/openssl/dh.h> -#include <wolfssl/openssl/ec.h> -#include <wolfssl/openssl/ecdsa.h> - -/* wolfSSL_X509_print_ex flags */ -#define X509_FLAG_COMPAT (0UL) -#define X509_FLAG_NO_HEADER (1UL << 0) -#define X509_FLAG_NO_VERSION (1UL << 1) -#define X509_FLAG_NO_SERIAL (1UL << 2) -#define X509_FLAG_NO_SIGNAME (1UL << 3) -#define X509_FLAG_NO_ISSUER (1UL << 4) -#define X509_FLAG_NO_VALIDITY (1UL << 5) -#define X509_FLAG_NO_SUBJECT (1UL << 6) -#define X509_FLAG_NO_PUBKEY (1UL << 7) -#define X509_FLAG_NO_EXTENSIONS (1UL << 8) -#define X509_FLAG_NO_SIGDUMP (1UL << 9) -#define X509_FLAG_NO_AUX (1UL << 10) -#define X509_FLAG_NO_ATTRIBUTES (1UL << 11) -#define X509_FLAG_NO_IDS (1UL << 12) - -#define XN_FLAG_FN_SN 0 -#define XN_FLAG_SEP_CPLUS_SPC 2 diff --git a/client/wolfssl/wolfssl/openssl/x509_vfy.h b/client/wolfssl/wolfssl/openssl/x509_vfy.h deleted file mode 100644 index 86c995b..0000000 --- a/client/wolfssl/wolfssl/openssl/x509_vfy.h +++ /dev/null @@ -1,45 +0,0 @@ -/* x509_vfy.h - * - * Copyright (C) 2006-2017 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* x509_vfy.h for openSSL */ - -#ifndef WOLFSSL_x509_vfy_H_ -#define WOLFSSL_x509_vfy_H_ - -#include <wolfssl/openssl/x509v3.h> - -#ifdef __cplusplus - extern "C" { -#endif - -#if defined(WOLFSSL_QT) || defined(OPENSSL_ALL) - WOLFSSL_API int wolfSSL_X509_STORE_CTX_set_purpose(WOLFSSL_X509_STORE_CTX *ctx, int purpose); -#endif - -#ifdef WOLFSSL_QT - #define X509_STORE_CTX_set_purpose wolfSSL_X509_STORE_CTX_set_purpose -#endif - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /* WOLFSSL_x509_vfy_H_ */ diff --git a/client/wolfssl/wolfssl/openssl/x509v3.h b/client/wolfssl/wolfssl/openssl/x509v3.h deleted file mode 100644 index 782578b..0000000 --- a/client/wolfssl/wolfssl/openssl/x509v3.h +++ /dev/null @@ -1,116 +0,0 @@ -/* x509v3.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* x509v3.h for openSSL */ - -#ifndef WOLFSSL_x509v3_H -#define WOLFSSL_x509v3_H - -#include <wolfssl/openssl/conf.h> -#include <wolfssl/openssl/bio.h> - -#ifdef __cplusplus - extern "C" { -#endif - -#define X509_PURPOSE_SSL_CLIENT 0 -#define X509_PURPOSE_SSL_SERVER 1 - -#define NS_SSL_CLIENT 0 -#define NS_SSL_SERVER 1 - -/* Forward reference */ - -typedef void *(*X509V3_EXT_D2I)(void *, const unsigned char **, long); -typedef STACK_OF(CONF_VALUE) *(*X509V3_EXT_I2V) ( - struct WOLFSSL_v3_ext_method *method, - void *ext, STACK_OF(CONF_VALUE) *extlist); -typedef char *(*X509V3_EXT_I2S)(struct WOLFSSL_v3_ext_method *method, void *ext); -typedef int (*X509V3_EXT_I2R) (struct WOLFSSL_v3_ext_method *method, - void *ext, BIO *out, int indent); -typedef struct WOLFSSL_v3_ext_method X509V3_EXT_METHOD; - -struct WOLFSSL_v3_ext_method { - int ext_nid; - int ext_flags; - void *usr_data; - X509V3_EXT_D2I d2i; - X509V3_EXT_I2V i2v; - X509V3_EXT_I2S i2s; - X509V3_EXT_I2R i2r; -}; - -struct WOLFSSL_X509_EXTENSION { - WOLFSSL_ASN1_OBJECT *obj; - WOLFSSL_ASN1_BOOLEAN crit; - WOLFSSL_ASN1_STRING value; - WOLFSSL_v3_ext_method ext_method; - WOLFSSL_STACK* ext_sk; /* For extension specific data */ -}; - -#define WOLFSSL_ASN1_BOOLEAN int -#define GEN_OTHERNAME 0 -#define GEN_EMAIL 1 -#define GEN_DNS 2 -#define GEN_X400 3 -#define GEN_DIRNAME 4 -#define GEN_EDIPARTY 5 -#define GEN_URI 6 -#define GEN_IPADD 7 -#define GEN_RID 8 - -#define GENERAL_NAME WOLFSSL_GENERAL_NAME - -#define X509V3_CTX WOLFSSL_X509V3_CTX - -typedef struct WOLFSSL_AUTHORITY_KEYID AUTHORITY_KEYID; -typedef struct WOLFSSL_BASIC_CONSTRAINTS BASIC_CONSTRAINTS; -typedef struct WOLFSSL_ACCESS_DESCRIPTION ACCESS_DESCRIPTION; -typedef WOLF_STACK_OF(WOLFSSL_ACCESS_DESCRIPTION) WOLFSSL_AUTHORITY_INFO_ACCESS; - -WOLFSSL_API void wolfSSL_BASIC_CONSTRAINTS_free(WOLFSSL_BASIC_CONSTRAINTS *bc); -WOLFSSL_API void wolfSSL_AUTHORITY_KEYID_free(WOLFSSL_AUTHORITY_KEYID *id); -WOLFSSL_API const WOLFSSL_v3_ext_method* wolfSSL_X509V3_EXT_get( - WOLFSSL_X509_EXTENSION* ex); -WOLFSSL_API void* wolfSSL_X509V3_EXT_d2i(WOLFSSL_X509_EXTENSION* ex); -WOLFSSL_API char* wolfSSL_i2s_ASN1_STRING(WOLFSSL_v3_ext_method *method, - const WOLFSSL_ASN1_STRING *s); -WOLFSSL_API int wolfSSL_X509V3_EXT_print(WOLFSSL_BIO *out, - WOLFSSL_X509_EXTENSION *ext, unsigned long flag, int indent); - -#define BASIC_CONSTRAINTS_free wolfSSL_BASIC_CONSTRAINTS_free -#define AUTHORITY_KEYID_free wolfSSL_AUTHORITY_KEYID_free -#define SSL_CTX_get_cert_store(x) wolfSSL_CTX_get_cert_store ((WOLFSSL_CTX*) (x)) -#define ASN1_INTEGER WOLFSSL_ASN1_INTEGER -#define ASN1_OCTET_STRING WOLFSSL_ASN1_STRING -#define X509V3_EXT_get wolfSSL_X509V3_EXT_get -#define X509V3_EXT_d2i wolfSSL_X509V3_EXT_d2i -#define i2s_ASN1_OCTET_STRING wolfSSL_i2s_ASN1_STRING -#define X509V3_EXT_print wolfSSL_X509V3_EXT_print -#define X509V3_EXT_conf_nid wolfSSL_X509V3_EXT_conf_nid -#define X509V3_set_ctx wolfSSL_X509V3_set_ctx -#define X509V3_set_ctx_nodb wolfSSL_X509V3_set_ctx_nodb - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/client/wolfssl/wolfssl/options.h b/client/wolfssl/wolfssl/options.h deleted file mode 100644 index 0a5f45c..0000000 --- a/client/wolfssl/wolfssl/options.h +++ /dev/null @@ -1,40 +0,0 @@ -/* options.h.in - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -/* default blank options for autoconf */ - -#ifndef WOLFSSL_OPTIONS_H -#define WOLFSSL_OPTIONS_H - - -#ifdef __cplusplus -extern "C" { -#endif - - -#ifdef __cplusplus -} -#endif - - -#endif /* WOLFSSL_OPTIONS_H */ - diff --git a/client/wolfssl/wolfssl/options.h.in b/client/wolfssl/wolfssl/options.h.in deleted file mode 100644 index 0a5f45c..0000000 --- a/client/wolfssl/wolfssl/options.h.in +++ /dev/null @@ -1,40 +0,0 @@ -/* options.h.in - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -/* default blank options for autoconf */ - -#ifndef WOLFSSL_OPTIONS_H -#define WOLFSSL_OPTIONS_H - - -#ifdef __cplusplus -extern "C" { -#endif - - -#ifdef __cplusplus -} -#endif - - -#endif /* WOLFSSL_OPTIONS_H */ - diff --git a/client/wolfssl/wolfssl/sniffer.h b/client/wolfssl/wolfssl/sniffer.h deleted file mode 100644 index 519518f..0000000 --- a/client/wolfssl/wolfssl/sniffer.h +++ /dev/null @@ -1,221 +0,0 @@ -/* sniffer.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -#ifndef WOLFSSL_SNIFFER_H -#define WOLFSSL_SNIFFER_H - -#include <wolfssl/wolfcrypt/settings.h> - -#ifdef _WIN32 - #ifdef SSL_SNIFFER_EXPORTS - #define SSL_SNIFFER_API __declspec(dllexport) - #else - #define SSL_SNIFFER_API __declspec(dllimport) - #endif -#else - #define SSL_SNIFFER_API -#endif /* _WIN32 */ - - -#ifdef __cplusplus - extern "C" { -#endif - -/* @param typeK: (formerly keyType) was shadowing a global declaration in - * wolfssl/wolfcrypt/asn.h line 175 - */ -WOLFSSL_API -SSL_SNIFFER_API int ssl_SetPrivateKey(const char* address, int port, - const char* keyFile, int typeK, - const char* password, char* error); - -WOLFSSL_API -SSL_SNIFFER_API int ssl_SetNamedPrivateKey(const char* name, - const char* address, int port, - const char* keyFile, int typeK, - const char* password, char* error); - -WOLFSSL_API -SSL_SNIFFER_API int ssl_DecodePacket(const unsigned char* packet, int length, - unsigned char** data, char* error); - -WOLFSSL_API -SSL_SNIFFER_API int ssl_FreeDecodeBuffer(unsigned char** data, char* error); - -WOLFSSL_API -SSL_SNIFFER_API int ssl_FreeZeroDecodeBuffer(unsigned char** data, int sz, - char* error); - -WOLFSSL_API -SSL_SNIFFER_API int ssl_Trace(const char* traceFile, char* error); - -WOLFSSL_API -SSL_SNIFFER_API int ssl_EnableRecovery(int onOff, int maxMemory, char* error); - -WOLFSSL_API -SSL_SNIFFER_API int ssl_GetSessionStats(unsigned int* active, - unsigned int* total, - unsigned int* peak, - unsigned int* maxSessions, - unsigned int* missedData, - unsigned int* reassemblyMemory, - char* error); - -WOLFSSL_API void ssl_InitSniffer(void); - -WOLFSSL_API void ssl_FreeSniffer(void); - - -/* ssl_SetPrivateKey typeKs */ -enum { - FILETYPE_PEM = 1, - FILETYPE_DER = 2, -}; - - -/* - * New Sniffer API that provides read-only access to the TLS and cipher - * information associated with the SSL session. - */ - -typedef struct SSLInfo -{ - unsigned char isValid; - /* indicates if the info in this struct is valid: 0 = no, 1 = yes */ - unsigned char protocolVersionMajor; /* SSL Version: major */ - unsigned char protocolVersionMinor; /* SSL Version: minor */ - unsigned char serverCipherSuite0; /* first byte, normally 0 */ - unsigned char serverCipherSuite; /* second byte, actual suite */ - unsigned char serverCipherSuiteName[256]; - /* cipher name, e.g., "TLS_RSA_..." */ - unsigned char serverNameIndication[128]; - unsigned int keySize; -} SSLInfo; - - -WOLFSSL_API -SSL_SNIFFER_API int ssl_DecodePacketWithSessionInfo( - const unsigned char* packet, int length, - unsigned char** data, SSLInfo* sslInfo, char* error); - -typedef void (*SSLConnCb)(const void* session, SSLInfo* info, void* ctx); - -WOLFSSL_API -SSL_SNIFFER_API int ssl_SetConnectionCb(SSLConnCb cb); - -WOLFSSL_API -SSL_SNIFFER_API int ssl_SetConnectionCtx(void* ctx); - - -typedef struct SSLStats -{ - unsigned long int sslStandardConns; - unsigned long int sslClientAuthConns; - unsigned long int sslResumedConns; - unsigned long int sslEphemeralMisses; - unsigned long int sslResumeMisses; - unsigned long int sslCiphersUnsupported; - unsigned long int sslKeysUnmatched; - unsigned long int sslKeyFails; - unsigned long int sslDecodeFails; - unsigned long int sslAlerts; - unsigned long int sslDecryptedBytes; - unsigned long int sslEncryptedBytes; - unsigned long int sslEncryptedPackets; - unsigned long int sslDecryptedPackets; - unsigned long int sslKeyMatches; - unsigned long int sslEncryptedConns; - - unsigned long int sslResumptionValid; - unsigned long int sslResumptionInserts; -} SSLStats; - - -WOLFSSL_API -SSL_SNIFFER_API int ssl_ResetStatistics(void); - - -WOLFSSL_API -SSL_SNIFFER_API int ssl_ReadStatistics(SSLStats* stats); - - -WOLFSSL_API -SSL_SNIFFER_API int ssl_ReadResetStatistics(SSLStats* stats); - - -typedef int (*SSLWatchCb)(void* vSniffer, - const unsigned char* certHash, - unsigned int certHashSz, - const unsigned char* certChain, - unsigned int certChainSz, - void* ctx, char* error); - -WOLFSSL_API -SSL_SNIFFER_API int ssl_SetWatchKeyCallback(SSLWatchCb cb, char* error); - -WOLFSSL_API -SSL_SNIFFER_API int ssl_SetWatchKeyCallback_ex(SSLWatchCb cb, int devId, - char* error); - -WOLFSSL_API -SSL_SNIFFER_API int ssl_SetWatchKeyCtx(void* ctx, char* error); - -WOLFSSL_API -SSL_SNIFFER_API int ssl_SetWatchKey_buffer(void* vSniffer, - const unsigned char* key, unsigned int keySz, - int keyType, char* error); - -WOLFSSL_API -SSL_SNIFFER_API int ssl_SetWatchKey_file(void* vSniffer, - const char* keyFile, int keyType, - const char* password, char* error); - - -typedef int (*SSLStoreDataCb)(const unsigned char* decryptBuf, - unsigned int decryptBufSz, unsigned int decryptBufOffset, void* ctx); - -WOLFSSL_API -SSL_SNIFFER_API int ssl_SetStoreDataCallback(SSLStoreDataCb cb); - -WOLFSSL_API -SSL_SNIFFER_API int ssl_DecodePacketWithSessionInfoStoreData( - const unsigned char* packet, int length, void* ctx, - SSLInfo* sslInfo, char* error); - - -WOLFSSL_API -SSL_SNIFFER_API int ssl_DecodePacketWithChain(void* vChain, - unsigned int chainSz, unsigned char** data, char* error); - - -WOLFSSL_API -SSL_SNIFFER_API int ssl_DecodePacketWithChainSessionInfoStoreData( - void* vChain, unsigned int chainSz, void* ctx, SSLInfo* sslInfo, - char* error); - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* wolfSSL_SNIFFER_H */ - diff --git a/client/wolfssl/wolfssl/sniffer_error.h b/client/wolfssl/wolfssl/sniffer_error.h deleted file mode 100644 index d4e8369..0000000 --- a/client/wolfssl/wolfssl/sniffer_error.h +++ /dev/null @@ -1,137 +0,0 @@ -/* sniffer_error.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -#ifndef WOLFSSL_SNIFFER_ERROR_H -#define WOLFSSL_SNIFFER_ERROR_H - -/* need to have errors as #defines since .rc files can't handle enums */ -/* need to start at 1 and go in order for same reason */ - -#define MEMORY_STR 1 -#define NEW_SERVER_STR 2 -#define IP_CHECK_STR 3 -#define SERVER_NOT_REG_STR 4 -#define TCP_CHECK_STR 5 -#define SERVER_PORT_NOT_REG_STR 6 -#define RSA_DECRYPT_STR 7 -#define RSA_DECODE_STR 8 -#define BAD_CIPHER_SPEC_STR 9 -#define SERVER_HELLO_INPUT_STR 10 - -#define BAD_SESSION_RESUME_STR 11 -#define SERVER_DID_RESUMPTION_STR 12 -#define CLIENT_HELLO_INPUT_STR 13 -#define CLIENT_RESUME_TRY_STR 14 -#define HANDSHAKE_INPUT_STR 15 -#define GOT_HELLO_VERIFY_STR 16 -#define GOT_SERVER_HELLO_STR 17 -#define GOT_CERT_REQ_STR 18 -#define GOT_SERVER_KEY_EX_STR 19 -#define GOT_CERT_STR 20 - -#define GOT_SERVER_HELLO_DONE_STR 21 -#define GOT_FINISHED_STR 22 -#define GOT_CLIENT_HELLO_STR 23 -#define GOT_CLIENT_KEY_EX_STR 24 -#define GOT_CERT_VER_STR 25 -#define GOT_UNKNOWN_HANDSHAKE_STR 26 -#define NEW_SESSION_STR 27 -#define BAD_NEW_SSL_STR 28 -#define GOT_PACKET_STR 29 -#define NO_DATA_STR 30 - -#define BAD_SESSION_STR 31 -#define GOT_OLD_CLIENT_HELLO_STR 32 -#define OLD_CLIENT_INPUT_STR 33 -#define OLD_CLIENT_OK_STR 34 -#define BAD_OLD_CLIENT_STR 35 -#define BAD_RECORD_HDR_STR 36 -#define RECORD_INPUT_STR 37 -#define GOT_HANDSHAKE_STR 38 -#define BAD_HANDSHAKE_STR 39 -#define GOT_CHANGE_CIPHER_STR 40 - -#define GOT_APP_DATA_STR 41 -#define BAD_APP_DATA_STR 42 -#define GOT_ALERT_STR 43 -#define ANOTHER_MSG_STR 44 -#define REMOVE_SESSION_STR 45 -#define KEY_FILE_STR 46 -#define BAD_IPVER_STR 47 -#define BAD_PROTO_STR 48 -#define PACKET_HDR_SHORT_STR 49 -#define GOT_UNKNOWN_RECORD_STR 50 - -#define BAD_TRACE_FILE_STR 51 -#define FATAL_ERROR_STR 52 -#define PARTIAL_INPUT_STR 53 -#define BUFFER_ERROR_STR 54 -#define PARTIAL_ADD_STR 55 -#define DUPLICATE_STR 56 -#define OUT_OF_ORDER_STR 57 -#define OVERLAP_DUPLICATE_STR 58 -#define OVERLAP_REASSEMBLY_BEGIN_STR 59 -#define OVERLAP_REASSEMBLY_END_STR 60 - -#define MISSED_CLIENT_HELLO_STR 61 -#define GOT_HELLO_REQUEST_STR 62 -#define GOT_SESSION_TICKET_STR 63 -#define BAD_INPUT_STR 64 -#define BAD_DECRYPT_TYPE 65 -#define BAD_FINISHED_MSG 66 -#define BAD_COMPRESSION_STR 67 -#define BAD_DERIVE_STR 68 -#define ACK_MISSED_STR 69 -#define BAD_DECRYPT 70 - -#define DECRYPT_KEYS_NOT_SETUP 71 -#define CLIENT_HELLO_LATE_KEY_STR 72 -#define GOT_CERT_STATUS_STR 73 -#define RSA_KEY_MISSING_STR 74 -#define NO_SECURE_RENEGOTIATION 75 - -#define BAD_SESSION_STATS 76 -#define REASSEMBLY_MAX_STR 77 -#define DROPPING_LOST_FRAG_STR 78 -#define DROPPING_PARTIAL_RECORD 79 -#define CLEAR_ACK_FAULT 80 - -#define BAD_DECRYPT_SIZE 81 -#define EXTENDED_MASTER_HASH_STR 82 -#define SPLIT_HANDSHAKE_MSG_STR 83 -#define ECC_DECODE_STR 84 -#define ECC_PUB_DECODE_STR 85 -#define WATCH_CB_MISSING_STR 86 -#define WATCH_HASH_STR 87 -#define WATCH_FAIL_STR 88 -#define BAD_CERT_MSG_STR 89 -#define STORE_DATA_CB_MISSING_STR 90 - -#define NO_DATA_DEST_STR 91 -#define STORE_DATA_FAIL_STR 92 -#define CHAIN_INPUT_STR 93 -/* !!!! also add to msgTable in sniffer.c and .rc file !!!! */ - - -#endif /* wolfSSL_SNIFFER_ERROR_H */ - diff --git a/client/wolfssl/wolfssl/sniffer_error.rc b/client/wolfssl/wolfssl/sniffer_error.rc deleted file mode 100644 index 72fe36e..0000000 --- a/client/wolfssl/wolfssl/sniffer_error.rc +++ /dev/null @@ -1,116 +0,0 @@ - -STRINGTABLE -{ - 1, "Out of Memory" - 2, "New SSL Sniffer Server Registered" - 3, "Checking IP Header" - 4, "SSL Sniffer Server Not Registered" - 5, "Checking TCP Header" - - 6, "SSL Sniffer Server Port Not Registered" - 7, "RSA Private Decrypt Error" - 8, "RSA Private Decode Error" - 9, "Set Cipher Spec Error" - 10, "Server Hello Input Malformed" - - 11, "Couldn't Resume Session Error" - 12, "Server Did Resumption" - 13, "Client Hello Input Malformed" - 14, "Client Trying to Resume" - 15, "Handshake Input Malformed" - - 16, "Got Hello Verify msg" - 17, "Got Server Hello msg" - 18, "Got Cert Request msg" - 19, "Got Server Key Exchange msg" - 20, "Got Cert msg" - - 21, "Got Server Hello Done msg" - 22, "Got Finished msg" - 23, "Got Client Hello msg" - 24, "Got Client Key Exchange msg" - 25, "Got Cert Verify msg" - - 26, "Got Unknown Handshake msg" - 27, "New SSL Sniffer Session created" - 28, "Couldn't create new SSL" - 29, "Got a Packet to decode" - 30, "No data present" - - 31, "Session Not Found" - 32, "Got an Old Client Hello msg" - 33, "Old Client Hello Input Malformed" - 34, "Old Client Hello OK" - 35, "Bad Old Client Hello" - - 36, "Bad Record Header" - 37, "Record Header Input Malformed" - 38, "Got a HandShake msg" - 39, "Bad HandShake msg" - 40, "Got a Change Cipher Spec msg" - - 41, "Got Application Data msg" - 42, "Bad Application Data" - 43, "Got an Alert msg" - 44, "Another msg to Process" - 45, "Removing Session From Table" - - 46, "Bad Key File" - 47, "Wrong IP Version" - 48, "Wrong Protocol type" - 49, "Packet Short for header processing" - 50, "Got Unknown Record Type" - - 51, "Can't Open Trace File" - 52, "Session in Fatal Error State" - 53, "Partial SSL record received" - 54, "Buffer Error, malformed input" - 55, "Added to Partial Input" - - 56, "Received a Duplicate Packet" - 57, "Received an Out of Order Packet" - 58, "Received an Overlap Duplicate Packet" - 59, "Received an Overlap Reassembly Begin Duplicate Packet" - 60, "Received an Overlap Reassembly End Duplicate Packet" - - 61, "Missed the Client Hello Entirely" - 62, "Got Hello Request msg" - 63, "Got Session Ticket msg" - 64, "Bad Input" - 65, "Bad Decrypt Type" - - 66, "Bad Finished Message Processing" - 67, "Bad Compression Type" - 68, "Bad DeriveKeys Error" - 69, "Saw ACK for Missing Packet Error" - 70, "Bad Decrypt Operation" - - 71, "Decrypt Keys Not Set Up" - 72, "Late Key Load Error" - 73, "Got Certificate Status msg" - 74, "RSA Key Missing Error" - 75, "Secure Renegotiation Not Supported" - - 76, "Get Session Stats Failure" - 77, "Reassembly Buffer Size Exceeded" - 78, "Dropping Lost Fragment" - 79, "Dropping Partial Record" - 80, "Clear ACK Fault" - - 81, "Bad Decrypt Size" - 82, "Extended Master Secret Hash Error" - 83, "Handshake Message Split Across TLS Records" - 84, "ECC Private Decode Error" - 85, "ECC Public Decode Error" - - 86, "Watch callback not set" - 87, "Watch hash failed" - 88, "Watch callback failed" - 89, "Bad Certificate Message" - 90, "Store data callback not set" - - 91, "No data destination Error" - 92, "Store Data callback failed" - 93, "Loading chain input" -} - diff --git a/client/wolfssl/wolfssl/ssl.h b/client/wolfssl/wolfssl/ssl.h deleted file mode 100644 index 87bac7c..0000000 --- a/client/wolfssl/wolfssl/ssl.h +++ /dev/null @@ -1,3866 +0,0 @@ -/* ssl.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ -/*! - \file ../wolfssl/ssl.h - \brief Header file containing key wolfSSL API -*/ - -/* wolfSSL API */ - -#ifndef WOLFSSL_SSL_H -#define WOLFSSL_SSL_H - - -/* for users not using preprocessor flags*/ -#include <wolfssl/wolfcrypt/settings.h> -#include <wolfssl/version.h> -#include <wolfssl/wolfcrypt/logging.h> -#include <wolfssl/wolfcrypt/asn_public.h> -#include <wolfssl/wolfcrypt/types.h> - -#ifdef HAVE_WOLF_EVENT - #include <wolfssl/wolfcrypt/wolfevent.h> -#endif - -/* used internally by wolfSSL while OpenSSL types aren't */ -#include <wolfssl/callbacks.h> - -#ifdef WOLFSSL_PREFIX - #include "prefix_ssl.h" -#endif - -#ifdef LIBWOLFSSL_VERSION_STRING - #define WOLFSSL_VERSION LIBWOLFSSL_VERSION_STRING -#endif - -#ifdef _WIN32 - /* wincrypt.h clashes */ - #undef OCSP_REQUEST - #undef OCSP_RESPONSE -#endif - -#ifdef OPENSSL_COEXIST - /* mode to allow wolfSSL and OpenSSL to exist together */ - #ifdef TEST_OPENSSL_COEXIST - /* - ./configure --enable-opensslcoexist \ - CFLAGS="-I/usr/local/opt/openssl/include -DTEST_OPENSSL_COEXIST" \ - LDFLAGS="-L/usr/local/opt/openssl/lib -lcrypto" - */ - #include <openssl/ssl.h> - #include <openssl/rand.h> - #include <openssl/err.h> - #include <openssl/ec.h> - #include <openssl/hmac.h> - #include <openssl/bn.h> - #endif - - /* make sure old names are disabled */ - #ifndef NO_OLD_SSL_NAMES - #define NO_OLD_SSL_NAMES - #endif - #ifndef NO_OLD_WC_NAMES - #define NO_OLD_WC_NAMES - #endif - -#elif (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) - #include <wolfssl/openssl/bn.h> - #include <wolfssl/openssl/hmac.h> - - /* We need the old SSL names */ - #ifdef NO_OLD_SSL_NAMES - #undef NO_OLD_SSL_NAMES - #endif - #ifdef NO_OLD_WC_NAMES - #undef NO_OLD_WC_NAMES - #endif -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -#ifndef WOLFSSL_WOLFSSL_TYPE_DEFINED -#define WOLFSSL_WOLFSSL_TYPE_DEFINED -typedef struct WOLFSSL WOLFSSL; -#endif -typedef struct WOLFSSL_SESSION WOLFSSL_SESSION; -typedef struct WOLFSSL_METHOD WOLFSSL_METHOD; -#ifndef WOLFSSL_WOLFSSL_CTX_TYPE_DEFINED -#define WOLFSSL_WOLFSSL_CTX_TYPE_DEFINED -typedef struct WOLFSSL_CTX WOLFSSL_CTX; -#endif - -typedef struct WOLFSSL_STACK WOLFSSL_STACK; -typedef struct WOLFSSL_X509 WOLFSSL_X509; -typedef struct WOLFSSL_X509_NAME WOLFSSL_X509_NAME; -typedef struct WOLFSSL_X509_NAME_ENTRY WOLFSSL_X509_NAME_ENTRY; -typedef struct WOLFSSL_X509_PUBKEY WOLFSSL_X509_PUBKEY; -typedef struct WOLFSSL_X509_ALGOR WOLFSSL_X509_ALGOR; -typedef struct WOLFSSL_X509_CHAIN WOLFSSL_X509_CHAIN; -typedef struct WC_PKCS12 WOLFSSL_X509_PKCS12; -typedef struct WOLFSSL_X509_INFO WOLFSSL_X509_INFO; - -typedef struct WOLFSSL_CERT_MANAGER WOLFSSL_CERT_MANAGER; -typedef struct WOLFSSL_SOCKADDR WOLFSSL_SOCKADDR; -typedef struct WOLFSSL_CRL WOLFSSL_CRL; -typedef struct WOLFSSL_X509_STORE_CTX WOLFSSL_X509_STORE_CTX; - -typedef int (*WOLFSSL_X509_STORE_CTX_verify_cb)(int, WOLFSSL_X509_STORE_CTX *); - -/* redeclare guard */ -#define WOLFSSL_TYPES_DEFINED - -#include <wolfssl/wolfio.h> - - -#ifndef WOLFSSL_RSA_TYPE_DEFINED /* guard on redeclaration */ -typedef struct WOLFSSL_RSA WOLFSSL_RSA; -#define WOLFSSL_RSA_TYPE_DEFINED -#endif - -#ifndef WC_RNG_TYPE_DEFINED /* guard on redeclaration */ - typedef struct WC_RNG WC_RNG; - #define WC_RNG_TYPE_DEFINED -#endif - -#ifndef WOLFSSL_DSA_TYPE_DEFINED /* guard on redeclaration */ -typedef struct WOLFSSL_DSA WOLFSSL_DSA; -#define WOLFSSL_DSA_TYPE_DEFINED -#endif - -#ifndef WOLFSSL_EC_TYPE_DEFINED /* guard on redeclaration */ -typedef struct WOLFSSL_EC_KEY WOLFSSL_EC_KEY; -typedef struct WOLFSSL_EC_POINT WOLFSSL_EC_POINT; -typedef struct WOLFSSL_EC_GROUP WOLFSSL_EC_GROUP; -typedef struct WOLFSSL_EC_BUILTIN_CURVE WOLFSSL_EC_BUILTIN_CURVE; -/* WOLFSSL_EC_METHOD is just an alias of WOLFSSL_EC_GROUP for now */ -typedef struct WOLFSSL_EC_GROUP WOLFSSL_EC_METHOD; -#define WOLFSSL_EC_TYPE_DEFINED -#endif - -#ifndef WOLFSSL_ECDSA_TYPE_DEFINED /* guard on redeclaration */ -typedef struct WOLFSSL_ECDSA_SIG WOLFSSL_ECDSA_SIG; -#define WOLFSSL_ECDSA_TYPE_DEFINED -#endif - -typedef struct WOLFSSL_CIPHER WOLFSSL_CIPHER; -typedef struct WOLFSSL_X509_LOOKUP WOLFSSL_X509_LOOKUP; -typedef struct WOLFSSL_X509_LOOKUP_METHOD WOLFSSL_X509_LOOKUP_METHOD; -typedef struct WOLFSSL_CRL WOLFSSL_X509_CRL; -typedef struct WOLFSSL_X509_STORE WOLFSSL_X509_STORE; -typedef struct WOLFSSL_X509_VERIFY_PARAM WOLFSSL_X509_VERIFY_PARAM; -typedef struct WOLFSSL_BIO WOLFSSL_BIO; -typedef struct WOLFSSL_BIO_METHOD WOLFSSL_BIO_METHOD; -typedef struct WOLFSSL_X509_EXTENSION WOLFSSL_X509_EXTENSION; -typedef struct WOLFSSL_CONF_VALUE WOLFSSL_CONF_VALUE; -typedef struct WOLFSSL_ASN1_OBJECT WOLFSSL_ASN1_OBJECT; -typedef struct WOLFSSL_ASN1_OTHERNAME WOLFSSL_ASN1_OTHERNAME; -typedef struct WOLFSSL_X509V3_CTX WOLFSSL_X509V3_CTX; -typedef struct WOLFSSL_v3_ext_method WOLFSSL_v3_ext_method; - -typedef struct WOLFSSL_ASN1_STRING WOLFSSL_ASN1_STRING; -typedef struct WOLFSSL_dynlock_value WOLFSSL_dynlock_value; -#ifndef WOLFSSL_DH_TYPE_DEFINED /* guard on redeclaration */ -typedef struct WOLFSSL_DH WOLFSSL_DH; -#define WOLFSSL_DH_TYPE_DEFINED /* guard on redeclaration */ -#endif -typedef struct WOLFSSL_ASN1_BIT_STRING WOLFSSL_ASN1_BIT_STRING; -typedef struct WOLFSSL_ASN1_TYPE WOLFSSL_ASN1_TYPE; - -typedef struct WOLFSSL_GENERAL_NAME WOLFSSL_GENERAL_NAME; -typedef struct WOLFSSL_AUTHORITY_KEYID WOLFSSL_AUTHORITY_KEYID; -typedef struct WOLFSSL_BASIC_CONSTRAINTS WOLFSSL_BASIC_CONSTRAINTS; -typedef struct WOLFSSL_ACCESS_DESCRIPTION WOLFSSL_ACCESS_DESCRIPTION; - -#if defined(OPENSSL_ALL) || defined(OPENSSL_EXTRA) - -struct WOLFSSL_AUTHORITY_KEYID { - WOLFSSL_ASN1_STRING *keyid; - WOLFSSL_ASN1_OBJECT *issuer; - WOLFSSL_ASN1_INTEGER *serial; -}; - -struct WOLFSSL_BASIC_CONSTRAINTS { - int ca; - WOLFSSL_ASN1_INTEGER *pathlen; -}; - -#endif /* OPENSSL_ALL || OPENSSL_EXTRA*/ - -#define WOLFSSL_ASN1_UTCTIME WOLFSSL_ASN1_TIME -#define WOLFSSL_ASN1_GENERALIZEDTIME WOLFSSL_ASN1_TIME - -struct WOLFSSL_ASN1_STRING { - char strData[CTC_NAME_SIZE]; - int length; - int type; /* type of string i.e. CTC_UTF8 */ - char* data; - long flags; - unsigned int isDynamic:1; /* flag for if data pointer dynamic (1 is yes 0 is no) */ -}; - -#define WOLFSSL_MAX_SNAME 40 - - -#define WOLFSSL_ASN1_DYNAMIC 0x1 -#define WOLFSSL_ASN1_DYNAMIC_DATA 0x2 - -struct WOLFSSL_ASN1_OTHERNAME { - WOLFSSL_ASN1_OBJECT* type_id; - WOLFSSL_ASN1_TYPE* value; -}; - -struct WOLFSSL_GENERAL_NAME { - int type; - union { - char* ptr; - WOLFSSL_ASN1_OTHERNAME* otherName; - WOLFSSL_ASN1_STRING* rfc822Name; - WOLFSSL_ASN1_STRING* dNSName; - WOLFSSL_ASN1_TYPE* x400Address; - WOLFSSL_X509_NAME* directoryName; - WOLFSSL_ASN1_STRING* uniformResourceIdentifier; - WOLFSSL_ASN1_STRING* iPAddress; - WOLFSSL_ASN1_OBJECT* registeredID; - - WOLFSSL_ASN1_STRING* ip; - WOLFSSL_X509_NAME* dirn; - WOLFSSL_ASN1_STRING* ia5; - WOLFSSL_ASN1_OBJECT* rid; - WOLFSSL_ASN1_TYPE* other; - } d; /* dereference */ -}; - -struct WOLFSSL_ACCESS_DESCRIPTION { - WOLFSSL_ASN1_OBJECT* method; - WOLFSSL_GENERAL_NAME* location; -}; - -struct WOLFSSL_X509V3_CTX { - WOLFSSL_X509* x509; -}; - - - -struct WOLFSSL_ASN1_OBJECT { - void* heap; - const unsigned char* obj; - /* sName is short name i.e sha256 rather than oid (null terminated) */ - char sName[WOLFSSL_MAX_SNAME]; - int type; /* oid */ - int grp; /* type of OID, i.e. oidCertPolicyType */ - int nid; - unsigned int objSz; -#if defined(OPENSSL_ALL) || defined(WOLFSSL_QT) || defined(WOLFSSL_APACHE_HTTPD) - int ca; - WOLFSSL_ASN1_INTEGER *pathlen; -#endif - unsigned char dynamic; /* if 1 then obj was dynamically created, 0 otherwise */ - -#if defined(WOLFSSL_APACHE_HTTPD) - WOLFSSL_GENERAL_NAME* gn; -#endif - - struct d { /* derefrenced */ - WOLFSSL_ASN1_STRING* dNSName; - WOLFSSL_ASN1_STRING ia5_internal; - WOLFSSL_ASN1_STRING* ia5; /* points to ia5_internal */ -#if defined(WOLFSSL_QT) || defined(OPENSSL_ALL) - WOLFSSL_ASN1_STRING* uniformResourceIdentifier; - WOLFSSL_ASN1_STRING iPAddress_internal; - WOLFSSL_ASN1_OTHERNAME* otherName; /* added for Apache httpd */ -#endif - WOLFSSL_ASN1_STRING* iPAddress; /* points to iPAddress_internal */ - } d; -}; - -/* wrap ASN1 types */ -struct WOLFSSL_ASN1_TYPE { - int type; - union { - char *ptr; - WOLFSSL_ASN1_STRING* asn1_string; - WOLFSSL_ASN1_OBJECT* object; - WOLFSSL_ASN1_INTEGER* integer; - WOLFSSL_ASN1_BIT_STRING* bit_string; - WOLFSSL_ASN1_STRING* octet_string; - WOLFSSL_ASN1_STRING* printablestring; - WOLFSSL_ASN1_STRING* ia5string; - WOLFSSL_ASN1_UTCTIME* utctime; - WOLFSSL_ASN1_GENERALIZEDTIME* generalizedtime; - WOLFSSL_ASN1_STRING* utf8string; - WOLFSSL_ASN1_STRING* set; - WOLFSSL_ASN1_STRING* sequence; - } value; -}; - -struct WOLFSSL_EVP_PKEY { - void* heap; - int type; /* openssh dereference */ - int save_type; /* openssh dereference */ - int pkey_sz; - int references; /*number of times free should be called for complete free*/ - wolfSSL_Mutex refMutex; /* ref count mutex */ - - union { - char* ptr; /* der format of key / or raw for NTRU */ - } pkey; - #if (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) - #ifndef NO_RSA - WOLFSSL_RSA* rsa; - byte ownRsa; /* if struct owns RSA and should free it */ - #endif - #ifndef NO_DSA - WOLFSSL_DSA* dsa; - byte ownDsa; /* if struct owns DSA and should free it */ - #endif - #ifdef HAVE_ECC - WOLFSSL_EC_KEY* ecc; - byte ownEcc; /* if struct owns ECC and should free it */ - #endif - #ifndef NO_DH - WOLFSSL_DH* dh; - byte ownDh; /* if struct owns DH and should free it */ - #endif - WC_RNG rng; - #endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ - #ifdef HAVE_ECC - int pkey_curve; - #endif -}; -typedef struct WOLFSSL_EVP_PKEY WOLFSSL_PKCS8_PRIV_KEY_INFO; -#ifndef WOLFSSL_EVP_TYPE_DEFINED /* guard on redeclaration */ -typedef struct WOLFSSL_EVP_PKEY WOLFSSL_EVP_PKEY; -typedef struct WOLFSSL_EVP_MD_CTX WOLFSSL_EVP_MD_CTX; -typedef char WOLFSSL_EVP_MD; -#define WOLFSSL_EVP_TYPE_DEFINED -#endif - -struct WOLFSSL_X509_PKEY { - WOLFSSL_EVP_PKEY* dec_pkey; /* dereferenced by Apache */ - void* heap; -}; -typedef struct WOLFSSL_X509_PKEY WOLFSSL_X509_PKEY; - -struct WOLFSSL_X509_INFO { - WOLFSSL_X509 *x509; - WOLFSSL_X509_CRL *crl; - WOLFSSL_X509_PKEY *x_pkey; /* dereferenced by Apache */ - EncryptedInfo enc_cipher; - int enc_len; - char *enc_data; - int num; -}; - -#define WOLFSSL_EVP_PKEY_DEFAULT EVP_PKEY_RSA /* default key type */ - -#if defined(OPENSSL_ALL) || defined(WOLFSSL_QT) - #define wolfSSL_SSL_MODE_RELEASE_BUFFERS 0x00000010U - #define wolfSSL_SSL_CTRL_SET_TMP_ECDH 4 -#endif - -struct WOLFSSL_X509_ALGOR { - WOLFSSL_ASN1_OBJECT* algorithm; - WOLFSSL_ASN1_TYPE* parameter; -}; - -struct WOLFSSL_X509_PUBKEY { - WOLFSSL_X509_ALGOR* algor; - WOLFSSL_EVP_PKEY* pkey; - int pubKeyOID; -}; - - -enum BIO_TYPE { - WOLFSSL_BIO_BUFFER = 1, - WOLFSSL_BIO_SOCKET = 2, - WOLFSSL_BIO_SSL = 3, - WOLFSSL_BIO_MEMORY = 4, - WOLFSSL_BIO_BIO = 5, - WOLFSSL_BIO_FILE = 6, - WOLFSSL_BIO_BASE64 = 7, - WOLFSSL_BIO_MD = 8 -}; - -enum BIO_FLAGS { - WOLFSSL_BIO_FLAG_BASE64_NO_NL = 0x01, - WOLFSSL_BIO_FLAG_READ = 0x02, - WOLFSSL_BIO_FLAG_WRITE = 0x04, - WOLFSSL_BIO_FLAG_IO_SPECIAL = 0x08, - WOLFSSL_BIO_FLAG_RETRY = 0x10 -}; - -enum BIO_CB_OPS { - WOLFSSL_BIO_CB_FREE = 0x01, - WOLFSSL_BIO_CB_READ = 0x02, - WOLFSSL_BIO_CB_WRITE = 0x03, - WOLFSSL_BIO_CB_PUTS = 0x04, - WOLFSSL_BIO_CB_GETS = 0x05, - WOLFSSL_BIO_CB_CTRL = 0x06, - WOLFSSL_BIO_CB_RETURN = 0x80 -}; - -typedef struct WOLFSSL_BUF_MEM { - char* data; /* dereferenced */ - size_t length; /* current length */ - size_t max; /* maximum length */ -} WOLFSSL_BUF_MEM; - -/* custom method with user set callbacks */ -typedef int (*wolfSSL_BIO_meth_write_cb)(WOLFSSL_BIO*, const char*, int); -typedef int (*wolfSSL_BIO_meth_read_cb)(WOLFSSL_BIO *, char *, int); -typedef int (*wolfSSL_BIO_meth_puts_cb)(WOLFSSL_BIO*, const char*); -typedef int (*wolfSSL_BIO_meth_gets_cb)(WOLFSSL_BIO*, char*, int); -typedef long (*wolfSSL_BIO_meth_ctrl_get_cb)(WOLFSSL_BIO*, int, long, void*); -typedef int (*wolfSSL_BIO_meth_create_cb)(WOLFSSL_BIO*); -typedef int (*wolfSSL_BIO_meth_destroy_cb)(WOLFSSL_BIO*); - -typedef int wolfSSL_BIO_info_cb(WOLFSSL_BIO *, int, int); -typedef long (*wolfssl_BIO_meth_ctrl_info_cb)(WOLFSSL_BIO*, int, wolfSSL_BIO_info_cb*); - -/* wolfSSL BIO_METHOD type */ -#ifndef MAX_BIO_METHOD_NAME -#define MAX_BIO_METHOD_NAME 256 -#endif -struct WOLFSSL_BIO_METHOD { - byte type; /* method type */ - char name[MAX_BIO_METHOD_NAME]; - wolfSSL_BIO_meth_write_cb writeCb; - wolfSSL_BIO_meth_read_cb readCb; - wolfSSL_BIO_meth_puts_cb putsCb; - wolfSSL_BIO_meth_gets_cb getsCb; - wolfSSL_BIO_meth_ctrl_get_cb ctrlCb; - wolfSSL_BIO_meth_create_cb createCb; - wolfSSL_BIO_meth_destroy_cb freeCb; - wolfssl_BIO_meth_ctrl_info_cb ctrlInfoCb; -}; - -/* wolfSSL BIO type */ -typedef long (*wolf_bio_info_cb)(WOLFSSL_BIO *bio, int event, const char *parg, - int iarg, long larg, long return_value); - -struct WOLFSSL_BIO { - WOLFSSL_BUF_MEM* mem_buf; - WOLFSSL_BIO_METHOD* method; - WOLFSSL_BIO* prev; /* previous in chain */ - WOLFSSL_BIO* next; /* next in chain */ - WOLFSSL_BIO* pair; /* BIO paired with */ - void* heap; /* user heap hint */ - void* ptr; /* WOLFSSL, file descriptor, MD, or mem buf */ - void* usrCtx; /* user set pointer */ - char* infoArg; /* BIO callback argument */ - wolf_bio_info_cb infoCb; /* BIO callback */ - int wrSz; /* write buffer size (mem) */ - int wrIdx; /* current index for write buffer */ - int rdIdx; /* current read index */ - int readRq; /* read request */ - int num; /* socket num or length */ - int eof; /* eof flag */ - int flags; - byte type; /* method type */ - byte init:1; /* bio has been initialized */ - byte shutdown:1; /* close flag */ -#ifdef HAVE_EX_DATA - WOLFSSL_CRYPTO_EX_DATA ex_data; -#endif -}; - -typedef struct WOLFSSL_COMP_METHOD { - int type; /* stunnel dereference */ -} WOLFSSL_COMP_METHOD; - -typedef struct WOLFSSL_COMP { - int id; - const char *name; - WOLFSSL_COMP_METHOD *method; -} WOLFSSL_COMP; - -struct WOLFSSL_X509_LOOKUP_METHOD { - int type; -}; - -struct WOLFSSL_X509_LOOKUP { - WOLFSSL_X509_STORE *store; -}; - -struct WOLFSSL_X509_STORE { - int cache; /* stunnel dereference */ - WOLFSSL_CERT_MANAGER* cm; - WOLFSSL_X509_LOOKUP lookup; -#ifdef OPENSSL_EXTRA - int isDynamic; - WOLFSSL_X509_VERIFY_PARAM* param; /* certificate validation parameter */ -#endif -#if defined(OPENSSL_ALL) || defined(WOLFSSL_QT) - WOLFSSL_X509_STORE_CTX_verify_cb verify_cb; -#endif -#ifdef HAVE_EX_DATA - WOLFSSL_CRYPTO_EX_DATA ex_data; -#endif -#if defined(OPENSSL_EXTRA) && defined(HAVE_CRL) - WOLFSSL_X509_CRL *crl; -#endif -}; - -#ifdef OPENSSL_EXTRA -#define WOLFSSL_USE_CHECK_TIME 0x2 -#define WOLFSSL_NO_CHECK_TIME 0x200000 -#define WOLFSSL_NO_WILDCARDS 0x4 -#define WOLFSSL_HOST_NAME_MAX 256 -#define WOLFSSL_MAX_IPSTR 46 /* max ip size IPv4 mapped IPv6 */ -struct WOLFSSL_X509_VERIFY_PARAM { - time_t check_time; - unsigned long flags; - char hostName[WOLFSSL_HOST_NAME_MAX]; - unsigned int hostFlags; - char ipasc[WOLFSSL_MAX_IPSTR]; -}; -#endif - -typedef struct WOLFSSL_ALERT { - int code; - int level; -} WOLFSSL_ALERT; - -typedef struct WOLFSSL_ALERT_HISTORY { - WOLFSSL_ALERT last_rx; - WOLFSSL_ALERT last_tx; -} WOLFSSL_ALERT_HISTORY; - -typedef struct WOLFSSL_X509_REVOKED { - WOLFSSL_ASN1_INTEGER* serialNumber; /* stunnel dereference */ -} WOLFSSL_X509_REVOKED; - - -typedef struct WOLFSSL_X509_OBJECT { - union { - char* ptr; - WOLFSSL_X509 *x509; - WOLFSSL_X509_CRL* crl; /* stunnel dereference */ - } data; -} WOLFSSL_X509_OBJECT; - -#define WOLFSSL_ASN1_BOOLEAN int - -typedef struct WOLFSSL_BUFFER_INFO { - unsigned char* buffer; - unsigned int length; -} WOLFSSL_BUFFER_INFO; - -struct WOLFSSL_X509_STORE_CTX { - WOLFSSL_X509_STORE* store; /* Store full of a CA cert chain */ - WOLFSSL_X509* current_cert; /* current X509 (OPENSSL_EXTRA) */ -#ifdef WOLFSSL_ASIO - WOLFSSL_X509* current_issuer; /* asio dereference */ -#endif - WOLFSSL_X509_CHAIN* sesChain; /* pointer to WOLFSSL_SESSION peer chain */ - WOLFSSL_STACK* chain; -#ifdef OPENSSL_EXTRA - WOLFSSL_X509_VERIFY_PARAM* param; /* certificate validation parameter */ -#endif - char* domain; /* subject CN domain name */ -#if defined(HAVE_EX_DATA) || defined(FORTRESS) - WOLFSSL_CRYPTO_EX_DATA ex_data; /* external data */ -#endif -#if defined(WOLFSSL_APACHE_HTTPD) || defined(OPENSSL_EXTRA) - int depth; /* used in X509_STORE_CTX_*_depth */ -#endif - void* userCtx; /* user ctx */ - int error; /* current error */ - int error_depth; /* index of cert depth for this error */ - int discardSessionCerts; /* so verify callback can flag for discard */ - int totalCerts; /* number of peer cert buffers */ - WOLFSSL_BUFFER_INFO* certs; /* peer certs */ - WOLFSSL_X509_STORE_CTX_verify_cb verify_cb; /* verify callback */ -}; - -typedef char* WOLFSSL_STRING; - -/* Valid Alert types from page 16/17 - * Add alert string to the function wolfSSL_alert_type_string_long in src/ssl.c - */ -enum AlertDescription { - close_notify = 0, - unexpected_message = 10, - bad_record_mac = 20, - record_overflow = 22, - decompression_failure = 30, - handshake_failure = 40, - no_certificate = 41, - bad_certificate = 42, - unsupported_certificate = 43, - certificate_revoked = 44, - certificate_expired = 45, - certificate_unknown = 46, - illegal_parameter = 47, - unknown_ca = 48, - decode_error = 50, - decrypt_error = 51, - #ifdef WOLFSSL_MYSQL_COMPATIBLE - /* catch name conflict for enum protocol with MYSQL build */ - wc_protocol_version = 70, - #else - protocol_version = 70, - #endif - inappropriate_fallback = 86, - no_renegotiation = 100, - missing_extension = 109, - unsupported_extension = 110, /**< RFC 5246, section 7.2.2 */ - unrecognized_name = 112, /**< RFC 6066, section 3 */ - bad_certificate_status_response = 113, /**< RFC 6066, section 8 */ - unknown_psk_identity = 115, /**< RFC 4279, section 2 */ - certificate_required = 116, /**< RFC 8446, section 8.2 */ - no_application_protocol = 120 -}; - - -enum AlertLevel { - alert_warning = 1, - alert_fatal = 2 -}; - -/* Maximum master key length (SECRET_LEN) */ -#define WOLFSSL_MAX_MASTER_KEY_LENGTH 48 -/* Maximum number of groups that can be set */ -#define WOLFSSL_MAX_GROUP_COUNT 10 - -#if defined(HAVE_SECRET_CALLBACK) && defined(WOLFSSL_TLS13) -enum Tls13Secret { - CLIENT_EARLY_TRAFFIC_SECRET, - CLIENT_HANDSHAKE_TRAFFIC_SECRET, - SERVER_HANDSHAKE_TRAFFIC_SECRET, - CLIENT_TRAFFIC_SECRET, - SERVER_TRAFFIC_SECRET, - EARLY_EXPORTER_SECRET, - EXPORTER_SECRET -}; -#endif - - -typedef WOLFSSL_METHOD* (*wolfSSL_method_func)(void* heap); - -/* CTX Method EX Constructor Functions */ -WOLFSSL_API WOLFSSL_METHOD *wolfTLS_client_method_ex(void* heap); -WOLFSSL_API WOLFSSL_METHOD *wolfTLS_server_method_ex(void* heap); -WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_method_ex(void* heap); -WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_server_method_ex(void* heap); -WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_client_method_ex(void* heap); -WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_method_ex(void* heap); -WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_server_method_ex(void* heap); -WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_client_method_ex(void* heap); -WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_method_ex(void* heap); -WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_server_method_ex(void* heap); -WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_client_method_ex(void* heap); -WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_method_ex(void* heap); -WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_server_method_ex(void* heap); -WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_client_method_ex(void* heap); -#ifdef WOLFSSL_TLS13 - WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_3_method_ex(void* heap); - WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_3_server_method_ex(void* heap); - WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_3_client_method_ex(void* heap); -#endif - -WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_method_ex(void* heap); -WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_server_method_ex(void* heap); -WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_client_method_ex(void* heap); - -#ifdef WOLFSSL_DTLS - WOLFSSL_API WOLFSSL_METHOD *wolfDTLS_method_ex(void* heap); - WOLFSSL_API WOLFSSL_METHOD *wolfDTLS_client_method_ex(void* heap); - WOLFSSL_API WOLFSSL_METHOD *wolfDTLS_server_method_ex(void* heap); - WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_method_ex(void* heap); - WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_client_method_ex(void* heap); - WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_server_method_ex(void* heap); - WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_2_method_ex(void* heap); - WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_2_client_method_ex(void* heap); - WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_2_server_method_ex(void* heap); -#endif - -/* CTX Method Constructor Functions */ -WOLFSSL_API WOLFSSL_METHOD *wolfTLS_client_method(void); -WOLFSSL_API WOLFSSL_METHOD *wolfTLS_server_method(void); -WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_method(void); -WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_method(void); -WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_server_method(void); -WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_client_method(void); -WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_method(void); -WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_server_method(void); -WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_client_method(void); -WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_method(void); -WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_server_method(void); -WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_client_method(void); -WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_method(void); -WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_server_method(void); -WOLFSSL_ABI WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_client_method(void); -#ifdef WOLFSSL_TLS13 - WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_3_method(void); - WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_3_server_method(void); - WOLFSSL_ABI WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_3_client_method(void); -#endif - -#ifdef WOLFSSL_DTLS - WOLFSSL_API WOLFSSL_METHOD *wolfDTLS_method(void); - WOLFSSL_API WOLFSSL_METHOD *wolfDTLS_server_method(void); - WOLFSSL_API WOLFSSL_METHOD *wolfDTLS_client_method(void); - WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_method(void); - WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_client_method(void); - WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_server_method(void); - WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_2_method(void); - WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_2_client_method(void); - WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_2_server_method(void); -#endif - -#ifdef HAVE_POLY1305 - WOLFSSL_API int wolfSSL_use_old_poly(WOLFSSL*, int); -#endif - -#ifdef WOLFSSL_SESSION_EXPORT -#ifdef WOLFSSL_DTLS - -#ifndef WOLFSSL_DTLS_EXPORT_TYPES -typedef int (*wc_dtls_export)(WOLFSSL* ssl, - unsigned char* exportBuffer, unsigned int sz, void* userCtx); -#define WOLFSSL_DTLS_EXPORT_TYPES -#endif /* WOLFSSL_DTLS_EXPORT_TYPES */ - -WOLFSSL_API int wolfSSL_dtls_import(WOLFSSL* ssl, unsigned char* buf, - unsigned int sz); -WOLFSSL_API int wolfSSL_CTX_dtls_set_export(WOLFSSL_CTX* ctx, - wc_dtls_export func); -WOLFSSL_API int wolfSSL_dtls_set_export(WOLFSSL* ssl, wc_dtls_export func); -WOLFSSL_API int wolfSSL_dtls_export(WOLFSSL* ssl, unsigned char* buf, - unsigned int* sz); -WOLFSSL_API int wolfSSL_dtls_export_state_only(WOLFSSL* ssl, unsigned char* buf, - unsigned int* sz); -#endif /* WOLFSSL_DTLS */ -#endif /* WOLFSSL_SESSION_EXPORT */ - -#ifdef WOLFSSL_STATIC_MEMORY -#ifndef WOLFSSL_MEM_GUARD -#define WOLFSSL_MEM_GUARD - typedef struct WOLFSSL_MEM_STATS WOLFSSL_MEM_STATS; - typedef struct WOLFSSL_MEM_CONN_STATS WOLFSSL_MEM_CONN_STATS; -#endif -WOLFSSL_API int wolfSSL_CTX_load_static_memory(WOLFSSL_CTX** ctx, - wolfSSL_method_func method, - unsigned char* buf, unsigned int sz, - int flag, int max); -WOLFSSL_API int wolfSSL_CTX_is_static_memory(WOLFSSL_CTX* ctx, - WOLFSSL_MEM_STATS* mem_stats); -WOLFSSL_API int wolfSSL_is_static_memory(WOLFSSL* ssl, - WOLFSSL_MEM_CONN_STATS* mem_stats); -#endif - -#if !defined(NO_FILESYSTEM) && !defined(NO_CERTS) - -WOLFSSL_ABI WOLFSSL_API int wolfSSL_CTX_use_certificate_file(WOLFSSL_CTX*, - const char*, int); -WOLFSSL_ABI WOLFSSL_API int wolfSSL_CTX_use_PrivateKey_file(WOLFSSL_CTX*, - const char*, int); - -#endif - -#ifndef NO_CERTS -#define WOLFSSL_LOAD_FLAG_NONE 0x00000000 -#define WOLFSSL_LOAD_FLAG_IGNORE_ERR 0x00000001 -#define WOLFSSL_LOAD_FLAG_DATE_ERR_OKAY 0x00000002 -#define WOLFSSL_LOAD_FLAG_PEM_CA_ONLY 0x00000004 - -#ifndef WOLFSSL_LOAD_VERIFY_DEFAULT_FLAGS -#define WOLFSSL_LOAD_VERIFY_DEFAULT_FLAGS WOLFSSL_LOAD_FLAG_NONE -#endif -#endif /* !NO_CERTS */ - -#if !defined(NO_FILESYSTEM) && !defined(NO_CERTS) - -WOLFSSL_API int wolfSSL_CTX_load_verify_locations_ex(WOLFSSL_CTX*, const char*, - const char*, unsigned int); -WOLFSSL_ABI WOLFSSL_API int wolfSSL_CTX_load_verify_locations(WOLFSSL_CTX*, - const char*, const char*); -#ifdef WOLFSSL_TRUST_PEER_CERT -WOLFSSL_API int wolfSSL_CTX_trust_peer_cert(WOLFSSL_CTX*, const char*, int); -#endif -WOLFSSL_ABI WOLFSSL_API int wolfSSL_CTX_use_certificate_chain_file( - WOLFSSL_CTX*, const char*); -WOLFSSL_API int wolfSSL_CTX_use_certificate_chain_file_format(WOLFSSL_CTX *, - const char *file, int format); -WOLFSSL_API int wolfSSL_CTX_use_RSAPrivateKey_file(WOLFSSL_CTX*, const char*, int); - -WOLFSSL_API long wolfSSL_get_verify_depth(WOLFSSL* ssl); -WOLFSSL_API long wolfSSL_CTX_get_verify_depth(WOLFSSL_CTX* ctx); -WOLFSSL_API void wolfSSL_CTX_set_verify_depth(WOLFSSL_CTX *ctx,int depth); -WOLFSSL_ABI WOLFSSL_API int wolfSSL_use_certificate_file(WOLFSSL*, const char*, - int); -WOLFSSL_ABI WOLFSSL_API int wolfSSL_use_PrivateKey_file(WOLFSSL*, const char*, - int); -WOLFSSL_ABI WOLFSSL_API int wolfSSL_use_certificate_chain_file(WOLFSSL*, - const char*); -WOLFSSL_API int wolfSSL_use_certificate_chain_file_format(WOLFSSL*, - const char *file, int format); -WOLFSSL_API int wolfSSL_use_RSAPrivateKey_file(WOLFSSL*, const char*, int); - -#ifdef WOLFSSL_DER_LOAD - WOLFSSL_API int wolfSSL_CTX_der_load_verify_locations(WOLFSSL_CTX*, - const char*, int); -#endif - -#ifdef HAVE_NTRU - WOLFSSL_API int wolfSSL_CTX_use_NTRUPrivateKey_file(WOLFSSL_CTX*, const char*); - /* load NTRU private key blob */ -#endif - -#endif /* !NO_FILESYSTEM && !NO_CERTS */ - -WOLFSSL_API WOLFSSL_CTX* wolfSSL_CTX_new_ex(WOLFSSL_METHOD* method, void* heap); -WOLFSSL_ABI WOLFSSL_API WOLFSSL_CTX* wolfSSL_CTX_new(WOLFSSL_METHOD*); -#ifdef OPENSSL_EXTRA -WOLFSSL_API int wolfSSL_CTX_up_ref(WOLFSSL_CTX*); -#endif -WOLFSSL_ABI WOLFSSL_API WOLFSSL* wolfSSL_new(WOLFSSL_CTX*); -WOLFSSL_API WOLFSSL_CTX* wolfSSL_get_SSL_CTX(WOLFSSL* ssl); -WOLFSSL_API WOLFSSL_X509_VERIFY_PARAM* wolfSSL_get0_param(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_is_server(WOLFSSL*); -WOLFSSL_API WOLFSSL* wolfSSL_write_dup(WOLFSSL*); -WOLFSSL_ABI WOLFSSL_API int wolfSSL_set_fd (WOLFSSL*, int); -WOLFSSL_API int wolfSSL_set_write_fd (WOLFSSL*, int); -WOLFSSL_API int wolfSSL_set_read_fd (WOLFSSL*, int); -WOLFSSL_API char* wolfSSL_get_cipher_list(int priority); -WOLFSSL_API char* wolfSSL_get_cipher_list_ex(WOLFSSL* ssl, int priority); -WOLFSSL_API int wolfSSL_get_ciphers(char*, int); -WOLFSSL_API int wolfSSL_get_ciphers_iana(char*, int); -WOLFSSL_API const char* wolfSSL_get_cipher_name(WOLFSSL* ssl); -WOLFSSL_API const char* wolfSSL_get_cipher_name_from_suite(const unsigned char, - const unsigned char); -WOLFSSL_API const char* wolfSSL_get_cipher_name_iana_from_suite( - const unsigned char, const unsigned char); -WOLFSSL_API const char* wolfSSL_get_shared_ciphers(WOLFSSL* ssl, char* buf, - int len); -WOLFSSL_API const char* wolfSSL_get_curve_name(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_get_fd(const WOLFSSL*); -/* please see note at top of README if you get an error from connect */ -WOLFSSL_ABI WOLFSSL_API int wolfSSL_connect(WOLFSSL*); -WOLFSSL_ABI WOLFSSL_API int wolfSSL_write(WOLFSSL*, const void*, int); -WOLFSSL_ABI WOLFSSL_API int wolfSSL_read(WOLFSSL*, void*, int); -WOLFSSL_API int wolfSSL_peek(WOLFSSL*, void*, int); -WOLFSSL_API int wolfSSL_accept(WOLFSSL*); -WOLFSSL_API int wolfSSL_CTX_mutual_auth(WOLFSSL_CTX* ctx, int req); -WOLFSSL_API int wolfSSL_mutual_auth(WOLFSSL* ssl, int req); -#ifdef WOLFSSL_TLS13 -WOLFSSL_API int wolfSSL_send_hrr_cookie(WOLFSSL* ssl, - const unsigned char* secret, unsigned int secretSz); -WOLFSSL_API int wolfSSL_CTX_no_ticket_TLSv13(WOLFSSL_CTX* ctx); -WOLFSSL_API int wolfSSL_no_ticket_TLSv13(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_CTX_no_dhe_psk(WOLFSSL_CTX* ctx); -WOLFSSL_API int wolfSSL_no_dhe_psk(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_update_keys(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_CTX_allow_post_handshake_auth(WOLFSSL_CTX* ctx); -WOLFSSL_API int wolfSSL_allow_post_handshake_auth(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_request_certificate(WOLFSSL* ssl); - -WOLFSSL_API int wolfSSL_CTX_set1_groups_list(WOLFSSL_CTX *ctx, char *list); -WOLFSSL_API int wolfSSL_set1_groups_list(WOLFSSL *ssl, char *list); - -WOLFSSL_API int wolfSSL_preferred_group(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_CTX_set_groups(WOLFSSL_CTX* ctx, int* groups, - int count); -WOLFSSL_API int wolfSSL_set_groups(WOLFSSL* ssl, int* groups, int count); - -WOLFSSL_API int wolfSSL_connect_TLSv13(WOLFSSL*); -WOLFSSL_API int wolfSSL_accept_TLSv13(WOLFSSL*); - -#ifdef WOLFSSL_EARLY_DATA -WOLFSSL_API int wolfSSL_CTX_set_max_early_data(WOLFSSL_CTX* ctx, - unsigned int sz); -WOLFSSL_API int wolfSSL_set_max_early_data(WOLFSSL* ssl, unsigned int sz); -WOLFSSL_API int wolfSSL_write_early_data(WOLFSSL*, const void*, int, int*); -WOLFSSL_API int wolfSSL_read_early_data(WOLFSSL*, void*, int, int*); -#endif -#endif -WOLFSSL_ABI WOLFSSL_API void wolfSSL_CTX_free(WOLFSSL_CTX*); -WOLFSSL_ABI WOLFSSL_API void wolfSSL_free(WOLFSSL*); -WOLFSSL_ABI WOLFSSL_API int wolfSSL_shutdown(WOLFSSL*); -WOLFSSL_API int wolfSSL_send(WOLFSSL*, const void*, int sz, int flags); -WOLFSSL_API int wolfSSL_recv(WOLFSSL*, void*, int sz, int flags); - -WOLFSSL_API void wolfSSL_CTX_set_quiet_shutdown(WOLFSSL_CTX*, int); -WOLFSSL_API void wolfSSL_set_quiet_shutdown(WOLFSSL*, int); - -WOLFSSL_ABI WOLFSSL_API int wolfSSL_get_error(WOLFSSL*, int); -WOLFSSL_API int wolfSSL_get_alert_history(WOLFSSL*, WOLFSSL_ALERT_HISTORY *); - -WOLFSSL_ABI WOLFSSL_API int wolfSSL_set_session(WOLFSSL*, WOLFSSL_SESSION*); -WOLFSSL_API long wolfSSL_SSL_SESSION_set_timeout(WOLFSSL_SESSION*, long); -WOLFSSL_ABI WOLFSSL_API WOLFSSL_SESSION* wolfSSL_get_session(WOLFSSL*); -WOLFSSL_ABI WOLFSSL_API void wolfSSL_flush_sessions(WOLFSSL_CTX*, long); -WOLFSSL_API int wolfSSL_SetServerID(WOLFSSL*, const unsigned char*, int, int); - -#if defined(OPENSSL_ALL) || defined(WOLFSSL_ASIO) || defined(WOLFSSL_HAPROXY) \ - || defined(WOLFSSL_NGINX) -WOLFSSL_API int wolfSSL_BIO_new_bio_pair(WOLFSSL_BIO**, size_t, - WOLFSSL_BIO**, size_t); - -WOLFSSL_API int wolfSSL_RSA_padding_add_PKCS1_PSS(WOLFSSL_RSA *rsa, unsigned char *EM, - const unsigned char *mHash, - const WOLFSSL_EVP_MD *Hash, int saltLen); -WOLFSSL_API int wolfSSL_RSA_verify_PKCS1_PSS(WOLFSSL_RSA *rsa, const unsigned char *mHash, - const WOLFSSL_EVP_MD *hashAlg, - const unsigned char *EM, int saltLen); -WOLFSSL_API WOLFSSL_RSA* wolfSSL_d2i_RSAPrivateKey_bio(WOLFSSL_BIO*, WOLFSSL_RSA**); -WOLFSSL_API int wolfSSL_CTX_use_certificate_ASN1(WOLFSSL_CTX*, - int, const unsigned char*); -WOLFSSL_API int wolfSSL_CTX_use_RSAPrivateKey(WOLFSSL_CTX*, WOLFSSL_RSA*); -WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PrivateKey_bio(WOLFSSL_BIO*, WOLFSSL_EVP_PKEY**); -#endif /* OPENSSL_ALL || WOLFSSL_ASIO */ - -#ifdef SESSION_INDEX -WOLFSSL_API int wolfSSL_GetSessionIndex(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_GetSessionAtIndex(int index, WOLFSSL_SESSION* session); -#endif /* SESSION_INDEX */ - -#if defined(SESSION_CERTS) -WOLFSSL_API - WOLFSSL_X509_CHAIN* wolfSSL_SESSION_get_peer_chain(WOLFSSL_SESSION* session); -WOLFSSL_API WOLFSSL_X509* wolfSSL_SESSION_get0_peer(WOLFSSL_SESSION* session); -#endif /* SESSION_INDEX && SESSION_CERTS */ - -typedef int (*VerifyCallback)(int, WOLFSSL_X509_STORE_CTX*); -typedef void (CallbackInfoState)(const WOLFSSL*, int, int); - -#if defined(HAVE_EX_DATA) || defined(FORTRESS) -typedef int (WOLFSSL_CRYPTO_EX_new)(void* p, void* ptr, - WOLFSSL_CRYPTO_EX_DATA* a, int idx, long argValue, void* arg); -typedef int (WOLFSSL_CRYPTO_EX_dup)(WOLFSSL_CRYPTO_EX_DATA* out, - WOLFSSL_CRYPTO_EX_DATA* in, void* inPtr, int idx, long argV, void* arg); -typedef void (WOLFSSL_CRYPTO_EX_free)(void* p, void* ptr, - WOLFSSL_CRYPTO_EX_DATA* a, int idx, long argValue, void* arg); - -WOLFSSL_API int wolfSSL_get_ex_new_index(long argValue, void* arg, - WOLFSSL_CRYPTO_EX_new* a, WOLFSSL_CRYPTO_EX_dup* b, - WOLFSSL_CRYPTO_EX_free* c); -#endif - -WOLFSSL_API void wolfSSL_CTX_set_verify(WOLFSSL_CTX*, int, - VerifyCallback verify_callback); - -#ifdef OPENSSL_ALL -typedef int (*CertVerifyCallback)(WOLFSSL_X509_STORE_CTX* store, void* arg); -WOLFSSL_API void wolfSSL_CTX_set_cert_verify_callback(WOLFSSL_CTX* ctx, - CertVerifyCallback cb, void* arg); -#endif - -WOLFSSL_API void wolfSSL_set_verify(WOLFSSL*, int, VerifyCallback verify_callback); -WOLFSSL_API void wolfSSL_set_verify_result(WOLFSSL*, long); -WOLFSSL_API void wolfSSL_SetCertCbCtx(WOLFSSL*, void*); - -WOLFSSL_ABI WOLFSSL_API int wolfSSL_pending(WOLFSSL*); - -WOLFSSL_API void wolfSSL_load_error_strings(void); -WOLFSSL_API int wolfSSL_library_init(void); -WOLFSSL_ABI WOLFSSL_API long wolfSSL_CTX_set_session_cache_mode(WOLFSSL_CTX*, - long); - -#ifdef HAVE_SECRET_CALLBACK -typedef int (*SessionSecretCb)(WOLFSSL* ssl, void* secret, int* secretSz, - void* ctx); -WOLFSSL_API int wolfSSL_set_session_secret_cb(WOLFSSL*, SessionSecretCb, - void*); -#ifdef WOLFSSL_TLS13 -typedef int (*Tls13SecretCb)(WOLFSSL* ssl, int id, const unsigned char* secret, - int secretSz, void* ctx); -WOLFSSL_API int wolfSSL_set_tls13_secret_cb(WOLFSSL*, Tls13SecretCb, void*); -#endif -#endif /* HAVE_SECRET_CALLBACK */ - -/* session cache persistence */ -WOLFSSL_API int wolfSSL_save_session_cache(const char*); -WOLFSSL_API int wolfSSL_restore_session_cache(const char*); -WOLFSSL_API int wolfSSL_memsave_session_cache(void*, int); -WOLFSSL_API int wolfSSL_memrestore_session_cache(const void*, int); -WOLFSSL_API int wolfSSL_get_session_cache_memsize(void); - -/* certificate cache persistence, uses ctx since certs are per ctx */ -WOLFSSL_API int wolfSSL_CTX_save_cert_cache(WOLFSSL_CTX*, const char*); -WOLFSSL_API int wolfSSL_CTX_restore_cert_cache(WOLFSSL_CTX*, const char*); -WOLFSSL_API int wolfSSL_CTX_memsave_cert_cache(WOLFSSL_CTX*, void*, int, int*); -WOLFSSL_API int wolfSSL_CTX_memrestore_cert_cache(WOLFSSL_CTX*, const void*, int); -WOLFSSL_API int wolfSSL_CTX_get_cert_cache_memsize(WOLFSSL_CTX*); - -/* only supports full name from cipher_name[] delimited by : */ -WOLFSSL_API int wolfSSL_CTX_set_cipher_list(WOLFSSL_CTX*, const char*); -WOLFSSL_API int wolfSSL_set_cipher_list(WOLFSSL*, const char*); - -/* Nonblocking DTLS helper functions */ -WOLFSSL_API void wolfSSL_dtls_set_using_nonblock(WOLFSSL*, int); -WOLFSSL_API int wolfSSL_dtls_get_using_nonblock(WOLFSSL*); -#define wolfSSL_set_using_nonblock wolfSSL_dtls_set_using_nonblock -#define wolfSSL_get_using_nonblock wolfSSL_dtls_get_using_nonblock - /* The old names are deprecated. */ -WOLFSSL_API int wolfSSL_dtls_get_current_timeout(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_DTLSv1_get_timeout(WOLFSSL* ssl, - WOLFSSL_TIMEVAL* timeleft); -WOLFSSL_API void wolfSSL_DTLSv1_set_initial_timeout_duration(WOLFSSL* ssl, - word32 duration_ms); -WOLFSSL_API int wolfSSL_DTLSv1_handle_timeout(WOLFSSL* ssl); - -WOLFSSL_API int wolfSSL_dtls_set_timeout_init(WOLFSSL* ssl, int); -WOLFSSL_API int wolfSSL_dtls_set_timeout_max(WOLFSSL* ssl, int); -WOLFSSL_API int wolfSSL_dtls_got_timeout(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_dtls_retransmit(WOLFSSL*); -WOLFSSL_API int wolfSSL_dtls(WOLFSSL* ssl); - -WOLFSSL_API int wolfSSL_dtls_set_peer(WOLFSSL*, void*, unsigned int); -WOLFSSL_API int wolfSSL_dtls_get_peer(WOLFSSL*, void*, unsigned int*); - -WOLFSSL_API int wolfSSL_CTX_dtls_set_sctp(WOLFSSL_CTX*); -WOLFSSL_API int wolfSSL_dtls_set_sctp(WOLFSSL*); -WOLFSSL_API int wolfSSL_CTX_dtls_set_mtu(WOLFSSL_CTX*, unsigned short); -WOLFSSL_API int wolfSSL_dtls_set_mtu(WOLFSSL*, unsigned short); - -WOLFSSL_API int wolfSSL_dtls_get_drop_stats(WOLFSSL*, - unsigned int*, unsigned int*); -WOLFSSL_API int wolfSSL_CTX_mcast_set_member_id(WOLFSSL_CTX*, unsigned short); -WOLFSSL_API int wolfSSL_set_secret(WOLFSSL*, unsigned short, - const unsigned char*, unsigned int, - const unsigned char*, const unsigned char*, - const unsigned char*); -WOLFSSL_API int wolfSSL_mcast_read(WOLFSSL*, unsigned short*, void*, int); -WOLFSSL_API int wolfSSL_mcast_peer_add(WOLFSSL*, unsigned short, int); -WOLFSSL_API int wolfSSL_mcast_peer_known(WOLFSSL*, unsigned short); -WOLFSSL_API int wolfSSL_mcast_get_max_peers(void); -typedef int (*CallbackMcastHighwater)(unsigned short peerId, - unsigned int maxSeq, - unsigned int curSeq, void* ctx); -WOLFSSL_API int wolfSSL_CTX_mcast_set_highwater_cb(WOLFSSL_CTX*, - unsigned int, - unsigned int, - unsigned int, - CallbackMcastHighwater); -WOLFSSL_API int wolfSSL_mcast_set_highwater_ctx(WOLFSSL*, void*); - -WOLFSSL_API int wolfSSL_ERR_GET_LIB(unsigned long err); -WOLFSSL_API int wolfSSL_ERR_GET_REASON(unsigned long err); -WOLFSSL_API char* wolfSSL_ERR_error_string(unsigned long,char*); -WOLFSSL_API void wolfSSL_ERR_error_string_n(unsigned long e, char* buf, - unsigned long sz); -WOLFSSL_API const char* wolfSSL_ERR_reason_error_string(unsigned long); - -/* extras */ - - -/* for now LHASH is not implemented */ -typedef int WOLFSSL_LHASH; -#ifndef WOLF_LHASH_OF - #define WOLF_LHASH_OF(x) WOLFSSL_LHASH -#endif - -#ifndef WOLF_STACK_OF - #define WOLF_STACK_OF(x) WOLFSSL_STACK -#endif -#ifndef DECLARE_STACK_OF - #define DECLARE_STACK_OF(x) WOLF_STACK_OF(x); -#endif - -WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_new_node(void* heap); -WOLFSSL_API void wolfSSL_sk_free(WOLFSSL_STACK* sk); -WOLFSSL_API void wolfSSL_sk_free_node(WOLFSSL_STACK* in); -WOLFSSL_API int wolfSSL_sk_push_node(WOLFSSL_STACK** stack, WOLFSSL_STACK* in); -WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_get_node(WOLFSSL_STACK* sk, int idx); -WOLFSSL_API int wolfSSL_sk_push(WOLFSSL_STACK *st, const void *data); - -#if defined(HAVE_OCSP) -#include "wolfssl/ocsp.h" -#include "wolfssl/wolfcrypt/asn.h" -#endif - -#if defined(OPENSSL_ALL) || defined(WOLFSSL_QT) -WOLFSSL_API int wolfSSL_sk_ACCESS_DESCRIPTION_push( - WOLF_STACK_OF(ACCESS_DESCRIPTION)* sk, - WOLFSSL_ACCESS_DESCRIPTION* access); -#endif /* defined(OPENSSL_ALL) || defined(WOLFSSL_QT) */ - -typedef WOLF_STACK_OF(WOLFSSL_GENERAL_NAME) WOLFSSL_GENERAL_NAMES; - -WOLFSSL_API int wolfSSL_sk_X509_push(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk, - WOLFSSL_X509* x509); -WOLFSSL_API WOLFSSL_X509* wolfSSL_sk_X509_pop(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk); -WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_X509_dup(WOLFSSL_STACK* sk); -WOLFSSL_API void wolfSSL_sk_X509_free(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk); -WOLFSSL_API WOLFSSL_GENERAL_NAME* wolfSSL_GENERAL_NAME_new(void); -WOLFSSL_API void wolfSSL_GENERAL_NAME_free(WOLFSSL_GENERAL_NAME* gn); -WOLFSSL_API int wolfSSL_sk_GENERAL_NAME_push(WOLF_STACK_OF(WOLFSSL_GENERAL_NAME)* sk, - WOLFSSL_GENERAL_NAME* gn); -WOLFSSL_API WOLFSSL_GENERAL_NAME* wolfSSL_sk_GENERAL_NAME_value( - WOLFSSL_STACK* sk, int i); -WOLFSSL_API int wolfSSL_sk_GENERAL_NAME_num(WOLFSSL_STACK* sk); -WOLFSSL_API void wolfSSL_sk_GENERAL_NAME_pop_free(WOLFSSL_STACK* sk, - void (*f) (WOLFSSL_GENERAL_NAME*)); -WOLFSSL_API void wolfSSL_sk_GENERAL_NAME_free(WOLFSSL_STACK* sk); -WOLFSSL_API void wolfSSL_GENERAL_NAMES_free(WOLFSSL_GENERAL_NAMES* name); -WOLFSSL_API int wolfSSL_sk_ACCESS_DESCRIPTION_num(WOLFSSL_STACK* sk); -WOLFSSL_API void wolfSSL_AUTHORITY_INFO_ACCESS_free( - WOLF_STACK_OF(WOLFSSL_ACCESS_DESCRIPTION)* sk); -WOLFSSL_API WOLFSSL_ACCESS_DESCRIPTION* wolfSSL_sk_ACCESS_DESCRIPTION_value( - WOLFSSL_STACK* sk, int idx); -WOLFSSL_API void wolfSSL_sk_ACCESS_DESCRIPTION_free(WOLFSSL_STACK* sk); -WOLFSSL_API void wolfSSL_sk_ACCESS_DESCRIPTION_pop_free(WOLFSSL_STACK* sk, - void (*f) (WOLFSSL_ACCESS_DESCRIPTION*)); -WOLFSSL_API void wolfSSL_ACCESS_DESCRIPTION_free(WOLFSSL_ACCESS_DESCRIPTION* access); -WOLFSSL_API void wolfSSL_sk_X509_EXTENSION_pop_free( - WOLF_STACK_OF(WOLFSSL_X509_EXTENSION)* sk, - void (*f) (WOLFSSL_X509_EXTENSION*)); -WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_EXTENSION)* wolfSSL_sk_X509_EXTENSION_new_null(void); -WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_ASN1_OBJECT_new(void); -WOLFSSL_API void wolfSSL_ASN1_OBJECT_free(WOLFSSL_ASN1_OBJECT* obj); -WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_new_asn1_obj(void); -WOLFSSL_API int wolfSSL_sk_ASN1_OBJECT_push(WOLF_STACK_OF(WOLFSSL_ASN1_OBJEXT)* sk, - WOLFSSL_ASN1_OBJECT* obj); -WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_sk_ASN1_OBJECT_pop( - WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk); -WOLFSSL_API void wolfSSL_sk_ASN1_OBJECT_free(WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk); -WOLFSSL_API void wolfSSL_sk_ASN1_OBJECT_pop_free( - WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk, - void (*f)(WOLFSSL_ASN1_OBJECT*)); -WOLFSSL_API int wolfSSL_ASN1_STRING_to_UTF8(unsigned char **out, WOLFSSL_ASN1_STRING *in); -WOLFSSL_API int wolfSSL_sk_X509_EXTENSION_num(WOLF_STACK_OF(WOLFSSL_X509_EXTENSION)* sk); -WOLFSSL_API WOLFSSL_X509_EXTENSION* wolfSSL_sk_X509_EXTENSION_value( - WOLF_STACK_OF(WOLFSSL_X509_EXTENSION)* sk, int idx); -WOLFSSL_API int wolfSSL_set_ex_data(WOLFSSL*, int, void*); -WOLFSSL_API int wolfSSL_get_shutdown(const WOLFSSL*); -WOLFSSL_API int wolfSSL_set_rfd(WOLFSSL*, int); -WOLFSSL_API int wolfSSL_set_wfd(WOLFSSL*, int); -WOLFSSL_API void wolfSSL_set_shutdown(WOLFSSL*, int); -WOLFSSL_API int wolfSSL_set_session_id_context(WOLFSSL*, const unsigned char*, - unsigned int); -WOLFSSL_API void wolfSSL_set_connect_state(WOLFSSL*); -WOLFSSL_API void wolfSSL_set_accept_state(WOLFSSL*); -WOLFSSL_API int wolfSSL_session_reused(WOLFSSL*); -WOLFSSL_API WOLFSSL_SESSION* wolfSSL_SESSION_dup(WOLFSSL_SESSION* session); -WOLFSSL_API void wolfSSL_SESSION_free(WOLFSSL_SESSION* session); -WOLFSSL_API int wolfSSL_is_init_finished(WOLFSSL*); - -WOLFSSL_API const char* wolfSSL_get_version(WOLFSSL*); -WOLFSSL_API int wolfSSL_get_current_cipher_suite(WOLFSSL* ssl); -WOLFSSL_API WOLFSSL_CIPHER* wolfSSL_get_current_cipher(WOLFSSL*); -WOLFSSL_API char* wolfSSL_CIPHER_description(const WOLFSSL_CIPHER*, char*, int); -WOLFSSL_API const char* wolfSSL_CIPHER_get_name(const WOLFSSL_CIPHER* cipher); -WOLFSSL_API const char* wolfSSL_CIPHER_get_version(const WOLFSSL_CIPHER* cipher); -WOLFSSL_API word32 wolfSSL_CIPHER_get_id(const WOLFSSL_CIPHER* cipher); -WOLFSSL_API const WOLFSSL_CIPHER* wolfSSL_get_cipher_by_value(word16 value); -WOLFSSL_API const char* wolfSSL_SESSION_CIPHER_get_name(WOLFSSL_SESSION* session); -WOLFSSL_API const char* wolfSSL_get_cipher(WOLFSSL*); -WOLFSSL_API void wolfSSL_sk_CIPHER_free(WOLF_STACK_OF(WOLFSSL_CIPHER)* sk); -WOLFSSL_API WOLFSSL_SESSION* wolfSSL_get1_session(WOLFSSL* ssl); - /* what's ref count */ - -WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_new(void); -#if defined(OPENSSL_EXTRA_X509_SMALL) || defined(OPENSSL_ALL) -WOLFSSL_API int wolfSSL_RSA_up_ref(WOLFSSL_RSA* rsa); -WOLFSSL_API int wolfSSL_X509_up_ref(WOLFSSL_X509* x509); -WOLFSSL_API int wolfSSL_EVP_PKEY_up_ref(WOLFSSL_EVP_PKEY* pkey); -#endif - -WOLFSSL_API int wolfSSL_OCSP_parse_url(char* url, char** host, char** port, - char** path, int* ssl); - -WOLFSSL_API WOLFSSL_METHOD* wolfSSLv23_client_method(void); -WOLFSSL_API WOLFSSL_METHOD* wolfSSLv2_client_method(void); -WOLFSSL_API WOLFSSL_METHOD* wolfSSLv2_server_method(void); - -WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new(WOLFSSL_BIO_METHOD*); -WOLFSSL_API int wolfSSL_BIO_free(WOLFSSL_BIO*); -WOLFSSL_API void wolfSSL_BIO_vfree(WOLFSSL_BIO*); -WOLFSSL_API int wolfSSL_BIO_free_all(WOLFSSL_BIO*); -WOLFSSL_API int wolfSSL_BIO_gets(WOLFSSL_BIO* bio, char* buf, int sz); -WOLFSSL_API int wolfSSL_BIO_puts(WOLFSSL_BIO* bio, const char* buf); -WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_next(WOLFSSL_BIO* bio); -WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_find_type(WOLFSSL_BIO* bio, int type); -WOLFSSL_API int wolfSSL_BIO_read(WOLFSSL_BIO*, void*, int); -WOLFSSL_API int wolfSSL_BIO_write(WOLFSSL_BIO*, const void*, int); -WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_push(WOLFSSL_BIO*, WOLFSSL_BIO* append); -WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_pop(WOLFSSL_BIO*); -WOLFSSL_API int wolfSSL_BIO_flush(WOLFSSL_BIO*); -WOLFSSL_API int wolfSSL_BIO_pending(WOLFSSL_BIO*); -WOLFSSL_API void wolfSSL_BIO_set_callback(WOLFSSL_BIO *bio, - wolf_bio_info_cb callback_func); -WOLFSSL_API wolf_bio_info_cb wolfSSL_BIO_get_callback(WOLFSSL_BIO *bio); -WOLFSSL_API void wolfSSL_BIO_set_callback_arg(WOLFSSL_BIO *bio, char *arg); -WOLFSSL_API char* wolfSSL_BIO_get_callback_arg(const WOLFSSL_BIO *bio); - -WOLFSSL_API WOLFSSL_BIO_METHOD* wolfSSL_BIO_f_md(void); -WOLFSSL_API int wolfSSL_BIO_get_md_ctx(WOLFSSL_BIO *bio, - WOLFSSL_EVP_MD_CTX **mdcp); - -WOLFSSL_API WOLFSSL_BIO_METHOD* wolfSSL_BIO_f_buffer(void); -WOLFSSL_API long wolfSSL_BIO_set_write_buffer_size(WOLFSSL_BIO*, long size); -WOLFSSL_API WOLFSSL_BIO_METHOD* wolfSSL_BIO_f_ssl(void); -WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new_socket(int sfd, int flag); -WOLFSSL_API int wolfSSL_BIO_eof(WOLFSSL_BIO*); - -WOLFSSL_API WOLFSSL_BIO_METHOD* wolfSSL_BIO_s_mem(void); -WOLFSSL_API WOLFSSL_BIO_METHOD* wolfSSL_BIO_f_base64(void); -WOLFSSL_API void wolfSSL_BIO_set_flags(WOLFSSL_BIO*, int); -WOLFSSL_API void wolfSSL_BIO_clear_flags(WOLFSSL_BIO *bio, int flags); -WOLFSSL_API int wolfSSL_BIO_set_ex_data(WOLFSSL_BIO *bio, int idx, void *data); -WOLFSSL_API void *wolfSSL_BIO_get_ex_data(WOLFSSL_BIO *bio, int idx); -WOLFSSL_API long wolfSSL_BIO_set_nbio(WOLFSSL_BIO*, long); - -WOLFSSL_API int wolfSSL_BIO_get_mem_data(WOLFSSL_BIO* bio,void* p); - -WOLFSSL_API void wolfSSL_BIO_set_init(WOLFSSL_BIO*, int); -WOLFSSL_API void wolfSSL_BIO_set_data(WOLFSSL_BIO*, void*); -WOLFSSL_API void* wolfSSL_BIO_get_data(WOLFSSL_BIO*); -WOLFSSL_API void wolfSSL_BIO_set_shutdown(WOLFSSL_BIO*, int); -WOLFSSL_API int wolfSSL_BIO_get_shutdown(WOLFSSL_BIO*); -WOLFSSL_API void wolfSSL_BIO_clear_retry_flags(WOLFSSL_BIO*); -WOLFSSL_API int wolfSSL_BIO_should_retry(WOLFSSL_BIO *bio); - -WOLFSSL_API WOLFSSL_BIO_METHOD *wolfSSL_BIO_meth_new(int, const char*); -WOLFSSL_API void wolfSSL_BIO_meth_free(WOLFSSL_BIO_METHOD*); -WOLFSSL_API int wolfSSL_BIO_meth_set_write(WOLFSSL_BIO_METHOD*, wolfSSL_BIO_meth_write_cb); -WOLFSSL_API int wolfSSL_BIO_meth_set_read(WOLFSSL_BIO_METHOD*, wolfSSL_BIO_meth_read_cb); -WOLFSSL_API int wolfSSL_BIO_meth_set_puts(WOLFSSL_BIO_METHOD*, wolfSSL_BIO_meth_puts_cb); -WOLFSSL_API int wolfSSL_BIO_meth_set_gets(WOLFSSL_BIO_METHOD*, wolfSSL_BIO_meth_gets_cb); -WOLFSSL_API int wolfSSL_BIO_meth_set_ctrl(WOLFSSL_BIO_METHOD*, wolfSSL_BIO_meth_ctrl_get_cb); -WOLFSSL_API int wolfSSL_BIO_meth_set_create(WOLFSSL_BIO_METHOD*, wolfSSL_BIO_meth_create_cb); -WOLFSSL_API int wolfSSL_BIO_meth_set_destroy(WOLFSSL_BIO_METHOD*, wolfSSL_BIO_meth_destroy_cb); -WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new_mem_buf(const void* buf, int len); - -WOLFSSL_API long wolfSSL_BIO_set_ssl(WOLFSSL_BIO*, WOLFSSL*, int flag); -#ifndef NO_FILESYSTEM -WOLFSSL_API long wolfSSL_BIO_set_fd(WOLFSSL_BIO* b, int fd, int flag); -#endif -WOLFSSL_API int wolfSSL_BIO_set_close(WOLFSSL_BIO *b, long flag); -WOLFSSL_API void wolfSSL_set_bio(WOLFSSL*, WOLFSSL_BIO* rd, WOLFSSL_BIO* wr); - -#ifndef NO_FILESYSTEM -WOLFSSL_API WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_file(void); -#endif - -WOLFSSL_API WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_bio(void); -WOLFSSL_API WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_socket(void); - -WOLFSSL_API long wolfSSL_BIO_ctrl(WOLFSSL_BIO *bp, int cmd, long larg, void *parg); -WOLFSSL_API long wolfSSL_BIO_int_ctrl(WOLFSSL_BIO *bp, int cmd, long larg, int iarg); - -WOLFSSL_API int wolfSSL_BIO_set_write_buf_size(WOLFSSL_BIO *b, long size); -WOLFSSL_API int wolfSSL_BIO_make_bio_pair(WOLFSSL_BIO *b1, WOLFSSL_BIO *b2); -WOLFSSL_API int wolfSSL_BIO_ctrl_reset_read_request(WOLFSSL_BIO *b); -WOLFSSL_API int wolfSSL_BIO_nread0(WOLFSSL_BIO *bio, char **buf); -WOLFSSL_API int wolfSSL_BIO_nread(WOLFSSL_BIO *bio, char **buf, int num); -WOLFSSL_API int wolfSSL_BIO_nwrite(WOLFSSL_BIO *bio, char **buf, int num); -WOLFSSL_API int wolfSSL_BIO_reset(WOLFSSL_BIO *bio); - -WOLFSSL_API int wolfSSL_BIO_seek(WOLFSSL_BIO *bio, int ofs); -WOLFSSL_API int wolfSSL_BIO_write_filename(WOLFSSL_BIO *bio, char *name); -WOLFSSL_API long wolfSSL_BIO_set_mem_eof_return(WOLFSSL_BIO *bio, int v); -WOLFSSL_API long wolfSSL_BIO_get_mem_ptr(WOLFSSL_BIO *bio, WOLFSSL_BUF_MEM **m); -WOLFSSL_API int wolfSSL_BIO_get_len(WOLFSSL_BIO *bio); - -WOLFSSL_API void wolfSSL_RAND_screen(void); -WOLFSSL_API const char* wolfSSL_RAND_file_name(char*, unsigned long); -WOLFSSL_API int wolfSSL_RAND_write_file(const char*); -WOLFSSL_API int wolfSSL_RAND_load_file(const char*, long); -WOLFSSL_API int wolfSSL_RAND_egd(const char*); -WOLFSSL_API int wolfSSL_RAND_seed(const void*, int); -WOLFSSL_API void wolfSSL_RAND_Cleanup(void); -WOLFSSL_API void wolfSSL_RAND_add(const void*, int, double); -WOLFSSL_API int wolfSSL_RAND_poll(void); - -WOLFSSL_API WOLFSSL_COMP_METHOD* wolfSSL_COMP_zlib(void); -WOLFSSL_API WOLFSSL_COMP_METHOD* wolfSSL_COMP_rle(void); -WOLFSSL_API int wolfSSL_COMP_add_compression_method(int, void*); - -WOLFSSL_API unsigned long wolfSSL_thread_id(void); -WOLFSSL_API void wolfSSL_set_id_callback(unsigned long (*f)(void)); -WOLFSSL_API void wolfSSL_set_locking_callback(void (*f)(int, int, const char*, - int)); -WOLFSSL_API void wolfSSL_set_dynlock_create_callback(WOLFSSL_dynlock_value* (*f) - (const char*, int)); -WOLFSSL_API void wolfSSL_set_dynlock_lock_callback(void (*f)(int, - WOLFSSL_dynlock_value*, const char*, int)); -WOLFSSL_API void wolfSSL_set_dynlock_destroy_callback(void (*f) - (WOLFSSL_dynlock_value*, const char*, int)); -WOLFSSL_API int wolfSSL_num_locks(void); - -WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_STORE_CTX_get_current_cert( - WOLFSSL_X509_STORE_CTX*); -WOLFSSL_API int wolfSSL_X509_STORE_CTX_get_error(WOLFSSL_X509_STORE_CTX*); -WOLFSSL_API int wolfSSL_X509_STORE_CTX_get_error_depth(WOLFSSL_X509_STORE_CTX*); - -WOLFSSL_API void wolfSSL_X509_STORE_CTX_set_verify_cb(WOLFSSL_X509_STORE_CTX *ctx, - WOLFSSL_X509_STORE_CTX_verify_cb verify_cb); -WOLFSSL_API void wolfSSL_X509_STORE_set_verify_cb(WOLFSSL_X509_STORE *st, - WOLFSSL_X509_STORE_CTX_verify_cb verify_cb); -WOLFSSL_API int wolfSSL_i2d_X509_NAME(WOLFSSL_X509_NAME* n, - unsigned char** out); -#ifndef NO_RSA -WOLFSSL_API int wolfSSL_RSA_print(WOLFSSL_BIO* bio, WOLFSSL_RSA* rsa, int offset); -#endif -WOLFSSL_API int wolfSSL_X509_print_ex(WOLFSSL_BIO* bio, WOLFSSL_X509* x509, - unsigned long nmflags, unsigned long cflag); -WOLFSSL_API int wolfSSL_X509_print(WOLFSSL_BIO* bio, WOLFSSL_X509* x509); -WOLFSSL_ABI WOLFSSL_API char* wolfSSL_X509_NAME_oneline(WOLFSSL_X509_NAME*, - char*, int); -#if defined(OPENSSL_EXTRA) && defined(XSNPRINTF) -WOLFSSL_API char* wolfSSL_X509_get_name_oneline(WOLFSSL_X509_NAME*, char*, int); -#endif -WOLFSSL_ABI WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_get_issuer_name( - WOLFSSL_X509*); -WOLFSSL_ABI WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_get_subject_name( - WOLFSSL_X509*); -WOLFSSL_API int wolfSSL_X509_ext_isSet_by_NID(WOLFSSL_X509*, int); -WOLFSSL_API int wolfSSL_X509_ext_get_critical_by_NID(WOLFSSL_X509*, int); -WOLFSSL_API int wolfSSL_X509_get_isCA(WOLFSSL_X509*); -WOLFSSL_API int wolfSSL_X509_get_isSet_pathLength(WOLFSSL_X509*); -WOLFSSL_API unsigned int wolfSSL_X509_get_pathLength(WOLFSSL_X509*); -WOLFSSL_API unsigned int wolfSSL_X509_get_keyUsage(WOLFSSL_X509*); -WOLFSSL_API unsigned char* wolfSSL_X509_get_authorityKeyID( - WOLFSSL_X509*, unsigned char*, int*); -WOLFSSL_API unsigned char* wolfSSL_X509_get_subjectKeyID( - WOLFSSL_X509*, unsigned char*, int*); - -WOLFSSL_API int wolfSSL_X509_verify(WOLFSSL_X509* x509, WOLFSSL_EVP_PKEY* pkey); -WOLFSSL_API int wolfSSL_X509_set_subject_name(WOLFSSL_X509*, - WOLFSSL_X509_NAME*); -WOLFSSL_API int wolfSSL_X509_set_issuer_name(WOLFSSL_X509*, - WOLFSSL_X509_NAME*); -WOLFSSL_API int wolfSSL_X509_set_pubkey(WOLFSSL_X509*, WOLFSSL_EVP_PKEY*); -WOLFSSL_API int wolfSSL_X509_set_notAfter(WOLFSSL_X509* x509, - const WOLFSSL_ASN1_TIME* t); -WOLFSSL_API int wolfSSL_X509_set_notBefore(WOLFSSL_X509* x509, - const WOLFSSL_ASN1_TIME* t); -WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_get_notBefore(const WOLFSSL_X509* x509); -WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_get_notAfter(const WOLFSSL_X509* x509); -WOLFSSL_API int wolfSSL_X509_set_serialNumber(WOLFSSL_X509* x509, - WOLFSSL_ASN1_INTEGER* s); -WOLFSSL_API int wolfSSL_X509_set_version(WOLFSSL_X509* x509, long v); -WOLFSSL_API int wolfSSL_X509_sign(WOLFSSL_X509* x509, WOLFSSL_EVP_PKEY* pkey, - const WOLFSSL_EVP_MD* md); - - -WOLFSSL_API int wolfSSL_X509_NAME_entry_count(WOLFSSL_X509_NAME*); -WOLFSSL_API int wolfSSL_X509_NAME_get_text_by_NID( - WOLFSSL_X509_NAME*, int, char*, int); -WOLFSSL_API int wolfSSL_X509_NAME_get_index_by_NID( - WOLFSSL_X509_NAME*, int, int); -WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_X509_NAME_ENTRY_get_data(WOLFSSL_X509_NAME_ENTRY*); - -WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_ASN1_STRING_new(void); -WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_ASN1_STRING_type_new(int type); -WOLFSSL_API int wolfSSL_ASN1_STRING_type(const WOLFSSL_ASN1_STRING* asn1); -WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_d2i_DISPLAYTEXT(WOLFSSL_ASN1_STRING **asn, const unsigned char **in, long len); -WOLFSSL_API void wolfSSL_ASN1_STRING_free(WOLFSSL_ASN1_STRING* asn1); -WOLFSSL_API int wolfSSL_ASN1_STRING_set(WOLFSSL_ASN1_STRING* asn1, - const void* data, int dataSz); -WOLFSSL_API unsigned char* wolfSSL_ASN1_STRING_data(WOLFSSL_ASN1_STRING*); -WOLFSSL_API int wolfSSL_ASN1_STRING_length(WOLFSSL_ASN1_STRING*); -WOLFSSL_API int wolfSSL_X509_verify_cert(WOLFSSL_X509_STORE_CTX*); -WOLFSSL_API const char* wolfSSL_X509_verify_cert_error_string(long); -WOLFSSL_API int wolfSSL_X509_get_signature_type(WOLFSSL_X509*); -WOLFSSL_API int wolfSSL_X509_get_signature(WOLFSSL_X509*, unsigned char*, int*); -WOLFSSL_API int wolfSSL_X509_get_pubkey_buffer(WOLFSSL_X509*, unsigned char*, - int*); -WOLFSSL_API int wolfSSL_X509_get_pubkey_type(WOLFSSL_X509* x509); - -WOLFSSL_API int wolfSSL_X509_LOOKUP_add_dir(WOLFSSL_X509_LOOKUP*,const char*,long); -WOLFSSL_API int wolfSSL_X509_LOOKUP_load_file(WOLFSSL_X509_LOOKUP*, const char*, - long); -WOLFSSL_API WOLFSSL_X509_LOOKUP_METHOD* wolfSSL_X509_LOOKUP_hash_dir(void); -WOLFSSL_API WOLFSSL_X509_LOOKUP_METHOD* wolfSSL_X509_LOOKUP_file(void); - -WOLFSSL_API WOLFSSL_X509_LOOKUP* wolfSSL_X509_STORE_add_lookup(WOLFSSL_X509_STORE*, - WOLFSSL_X509_LOOKUP_METHOD*); -WOLFSSL_API WOLFSSL_X509_STORE* wolfSSL_X509_STORE_new(void); -WOLFSSL_API void wolfSSL_X509_STORE_free(WOLFSSL_X509_STORE*); -WOLFSSL_API int wolfSSL_X509_STORE_add_cert( - WOLFSSL_X509_STORE*, WOLFSSL_X509*); -WOLFSSL_API WOLFSSL_STACK* wolfSSL_X509_STORE_CTX_get_chain( - WOLFSSL_X509_STORE_CTX* ctx); -WOLFSSL_API WOLFSSL_STACK* wolfSSL_X509_STORE_CTX_get1_chain( - WOLFSSL_X509_STORE_CTX* ctx); -WOLFSSL_API int wolfSSL_X509_STORE_set_flags(WOLFSSL_X509_STORE* store, - unsigned long flag); -WOLFSSL_API int wolfSSL_X509_STORE_set_default_paths(WOLFSSL_X509_STORE*); -WOLFSSL_API int wolfSSL_X509_STORE_get_by_subject(WOLFSSL_X509_STORE_CTX*, - int, WOLFSSL_X509_NAME*, WOLFSSL_X509_OBJECT*); -WOLFSSL_API WOLFSSL_X509_STORE_CTX* wolfSSL_X509_STORE_CTX_new(void); -WOLFSSL_API int wolfSSL_X509_STORE_CTX_init(WOLFSSL_X509_STORE_CTX*, - WOLFSSL_X509_STORE*, WOLFSSL_X509*, WOLF_STACK_OF(WOLFSSL_X509)*); -WOLFSSL_API void wolfSSL_X509_STORE_CTX_free(WOLFSSL_X509_STORE_CTX*); -WOLFSSL_API void wolfSSL_X509_STORE_CTX_cleanup(WOLFSSL_X509_STORE_CTX*); - -WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_CRL_get_lastUpdate(WOLFSSL_X509_CRL*); -WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_CRL_get_nextUpdate(WOLFSSL_X509_CRL*); -WOLFSSL_ASN1_TIME* wolfSSL_X509_gmtime_adj(WOLFSSL_ASN1_TIME *s, long adj); - -WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_X509_get_pubkey(WOLFSSL_X509*); -WOLFSSL_API int wolfSSL_X509_CRL_verify(WOLFSSL_X509_CRL*, WOLFSSL_EVP_PKEY*); -WOLFSSL_API void wolfSSL_X509_OBJECT_free_contents(WOLFSSL_X509_OBJECT*); -WOLFSSL_API WOLFSSL_PKCS8_PRIV_KEY_INFO* wolfSSL_d2i_PKCS8_PKEY_bio( - WOLFSSL_BIO* bio, WOLFSSL_PKCS8_PRIV_KEY_INFO** pkey); -WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PUBKEY_bio(WOLFSSL_BIO* bio, - WOLFSSL_EVP_PKEY** out); -WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PUBKEY(WOLFSSL_EVP_PKEY** key, - const unsigned char** in, long inSz); -WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PrivateKey(int type, - WOLFSSL_EVP_PKEY** out, const unsigned char **in, long inSz); -WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PrivateKey_EVP(WOLFSSL_EVP_PKEY** key, - unsigned char** in, long inSz); -WOLFSSL_API int wolfSSL_i2d_PrivateKey(WOLFSSL_EVP_PKEY* key, - unsigned char** der); -WOLFSSL_API int wolfSSL_X509_cmp_current_time(const WOLFSSL_ASN1_TIME*); -#ifdef OPENSSL_EXTRA -WOLFSSL_API int wolfSSL_X509_cmp_time(const WOLFSSL_ASN1_TIME* asnTime, - time_t *cmpTime); -WOLFSSL_API WOLFSSL_ASN1_TIME *wolfSSL_X509_time_adj_ex(WOLFSSL_ASN1_TIME *asnTime, - int offset_day, long offset_sec, time_t *in_tm); -WOLFSSL_API WOLFSSL_ASN1_TIME *wolfSSL_X509_time_adj(WOLFSSL_ASN1_TIME *asnTime, - long offset_sec, time_t *in_tm); -WOLFSSL_API int wolfSSL_sk_X509_REVOKED_num(WOLFSSL_X509_REVOKED*); -WOLFSSL_API void wolfSSL_X509_STORE_CTX_set_time(WOLFSSL_X509_STORE_CTX*, - unsigned long flags, - time_t t); -WOLFSSL_API void wolfSSL_X509_VERIFY_PARAM_set_hostflags( - WOLFSSL_X509_VERIFY_PARAM* param, unsigned int flags); -WOLFSSL_API int wolfSSL_X509_VERIFY_PARAM_set1_host(WOLFSSL_X509_VERIFY_PARAM* pParam, - const char* name, - unsigned int nameSz); -WOLFSSL_API int wolfSSL_X509_VERIFY_PARAM_set1_ip_asc( - WOLFSSL_X509_VERIFY_PARAM *param, const char *ipasc); -#endif -WOLFSSL_API WOLFSSL_X509_REVOKED* wolfSSL_X509_CRL_get_REVOKED(WOLFSSL_X509_CRL*); -WOLFSSL_API WOLFSSL_X509_REVOKED* wolfSSL_sk_X509_REVOKED_value( - WOLFSSL_X509_REVOKED*,int); -WOLFSSL_API WOLFSSL_ASN1_INTEGER* wolfSSL_X509_get_serialNumber(WOLFSSL_X509*); -WOLFSSL_API void wolfSSL_ASN1_INTEGER_free(WOLFSSL_ASN1_INTEGER*); -WOLFSSL_API WOLFSSL_ASN1_INTEGER* wolfSSL_ASN1_INTEGER_new(void); -WOLFSSL_API WOLFSSL_ASN1_INTEGER* wolfSSL_ASN1_INTEGER_dup( - const WOLFSSL_ASN1_INTEGER* src); -WOLFSSL_API int wolfSSL_ASN1_INTEGER_set(WOLFSSL_ASN1_INTEGER *a, long v); - -WOLFSSL_API int wolfSSL_ASN1_TIME_print(WOLFSSL_BIO*, const WOLFSSL_ASN1_TIME*); - -WOLFSSL_API char* wolfSSL_ASN1_TIME_to_string(WOLFSSL_ASN1_TIME* t, - char* buf, int len); -WOLFSSL_API int wolfSSL_ASN1_INTEGER_cmp(const WOLFSSL_ASN1_INTEGER*, - const WOLFSSL_ASN1_INTEGER*); -WOLFSSL_API long wolfSSL_ASN1_INTEGER_get(const WOLFSSL_ASN1_INTEGER*); - -#ifdef OPENSSL_EXTRA -WOLFSSL_API WOLFSSL_BIGNUM *wolfSSL_ASN1_INTEGER_to_BN(const WOLFSSL_ASN1_INTEGER *ai, - WOLFSSL_BIGNUM *bn); -WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_ASN1_TIME_adj(WOLFSSL_ASN1_TIME*, time_t, - int, long); -WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_ASN1_TIME_new(void); -WOLFSSL_API void wolfSSL_ASN1_TIME_free(WOLFSSL_ASN1_TIME* t); -#endif - -WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME)* wolfSSL_load_client_CA_file(const char*); -WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME)* wolfSSL_CTX_get_client_CA_list( - const WOLFSSL_CTX *s); -/* deprecated function name */ -#define wolfSSL_SSL_CTX_get_client_CA_list wolfSSL_CTX_get_client_CA_list - -WOLFSSL_API void wolfSSL_CTX_set_client_CA_list(WOLFSSL_CTX*, - WOLF_STACK_OF(WOLFSSL_X509_NAME)*); -WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME)* wolfSSL_get_client_CA_list( - const WOLFSSL* ssl); - -typedef int (*client_cert_cb)(WOLFSSL *ssl, WOLFSSL_X509 **x509, - WOLFSSL_EVP_PKEY **pkey); -WOLFSSL_API void wolfSSL_CTX_set_client_cert_cb(WOLFSSL_CTX *ctx, client_cert_cb); - -WOLFSSL_API void* wolfSSL_X509_STORE_CTX_get_ex_data( - WOLFSSL_X509_STORE_CTX* ctx, int idx); -WOLFSSL_API int wolfSSL_X509_STORE_CTX_set_ex_data(WOLFSSL_X509_STORE_CTX* ctx, - int idx, void *data); -WOLFSSL_API void wolfSSL_X509_STORE_CTX_set_depth(WOLFSSL_X509_STORE_CTX* ctx, - int depth); -WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_STORE_CTX_get0_current_issuer( - WOLFSSL_X509_STORE_CTX* ctx); -WOLFSSL_API WOLFSSL_X509_STORE* wolfSSL_X509_STORE_CTX_get0_store( - WOLFSSL_X509_STORE_CTX* ctx); -WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_STORE_CTX_get0_cert( - WOLFSSL_X509_STORE_CTX*); -WOLFSSL_API int wolfSSL_get_ex_data_X509_STORE_CTX_idx(void); -WOLFSSL_API void wolfSSL_X509_STORE_CTX_set_error( - WOLFSSL_X509_STORE_CTX* ctx, int er); -void wolfSSL_X509_STORE_CTX_set_error_depth(WOLFSSL_X509_STORE_CTX* ctx, - int depth); -WOLFSSL_API void* wolfSSL_get_ex_data(const WOLFSSL*, int); - -WOLFSSL_API void wolfSSL_CTX_set_default_passwd_cb_userdata(WOLFSSL_CTX*, - void* userdata); -WOLFSSL_API void wolfSSL_CTX_set_default_passwd_cb(WOLFSSL_CTX*, - pem_password_cb*); -WOLFSSL_API pem_password_cb* wolfSSL_CTX_get_default_passwd_cb(WOLFSSL_CTX *ctx); -WOLFSSL_API void *wolfSSL_CTX_get_default_passwd_cb_userdata(WOLFSSL_CTX *ctx); - -WOLFSSL_API void wolfSSL_CTX_set_info_callback(WOLFSSL_CTX*, - void (*)(const WOLFSSL* ssl, int type, int val)); - -WOLFSSL_API unsigned long wolfSSL_ERR_peek_error(void); -WOLFSSL_API int wolfSSL_GET_REASON(int); - -WOLFSSL_API const char* wolfSSL_alert_type_string_long(int); -WOLFSSL_API const char* wolfSSL_alert_desc_string_long(int); -WOLFSSL_API const char* wolfSSL_state_string_long(const WOLFSSL*); - -WOLFSSL_API WOLFSSL_RSA* wolfSSL_RSA_generate_key(int, unsigned long, - void(*)(int, int, void*), void*); -WOLFSSL_API WOLFSSL_RSA *wolfSSL_d2i_RSAPublicKey(WOLFSSL_RSA **r, - const unsigned char **pp, long len); -WOLFSSL_API WOLFSSL_RSA *wolfSSL_d2i_RSAPrivateKey(WOLFSSL_RSA**, - const unsigned char**, long); -WOLFSSL_API int wolfSSL_i2d_RSAPublicKey(WOLFSSL_RSA *r, const unsigned char **pp); -WOLFSSL_API int wolfSSL_i2d_RSAPrivateKey(WOLFSSL_RSA *r, unsigned char **pp); -WOLFSSL_API void wolfSSL_CTX_set_tmp_rsa_callback(WOLFSSL_CTX *, - WOLFSSL_RSA *(*)(WOLFSSL *, int, int)); - -WOLFSSL_API int wolfSSL_PEM_def_callback(char*, int num, int w, void* key); - -WOLFSSL_API long wolfSSL_CTX_sess_accept(WOLFSSL_CTX*); -WOLFSSL_API long wolfSSL_CTX_sess_connect(WOLFSSL_CTX*); -WOLFSSL_API long wolfSSL_CTX_sess_accept_good(WOLFSSL_CTX*); -WOLFSSL_API long wolfSSL_CTX_sess_connect_good(WOLFSSL_CTX*); -WOLFSSL_API long wolfSSL_CTX_sess_accept_renegotiate(WOLFSSL_CTX*); -WOLFSSL_API long wolfSSL_CTX_sess_connect_renegotiate(WOLFSSL_CTX*); -WOLFSSL_API long wolfSSL_CTX_sess_hits(WOLFSSL_CTX*); -WOLFSSL_API long wolfSSL_CTX_sess_cb_hits(WOLFSSL_CTX*); -WOLFSSL_API long wolfSSL_CTX_sess_cache_full(WOLFSSL_CTX*); -WOLFSSL_API long wolfSSL_CTX_sess_misses(WOLFSSL_CTX*); -WOLFSSL_API long wolfSSL_CTX_sess_timeouts(WOLFSSL_CTX*); -WOLFSSL_API long wolfSSL_CTX_sess_number(WOLFSSL_CTX*); - -WOLFSSL_API long wolfSSL_CTX_add_extra_chain_cert(WOLFSSL_CTX*, WOLFSSL_X509*); -WOLFSSL_API long wolfSSL_CTX_sess_set_cache_size(WOLFSSL_CTX*, long); -WOLFSSL_API long wolfSSL_CTX_sess_get_cache_size(WOLFSSL_CTX*); - -WOLFSSL_API long wolfSSL_CTX_get_session_cache_mode(WOLFSSL_CTX*); -WOLFSSL_API int wolfSSL_CTX_get_read_ahead(WOLFSSL_CTX*); -WOLFSSL_API int wolfSSL_CTX_set_read_ahead(WOLFSSL_CTX*, int v); -WOLFSSL_API long wolfSSL_CTX_set_tlsext_status_arg(WOLFSSL_CTX*, void* arg); -WOLFSSL_API long wolfSSL_CTX_set_tlsext_opaque_prf_input_callback_arg( - WOLFSSL_CTX*, void* arg); -WOLFSSL_API int wolfSSL_CTX_add_client_CA(WOLFSSL_CTX*, WOLFSSL_X509*); -WOLFSSL_API int wolfSSL_CTX_set_srp_password(WOLFSSL_CTX*, char*); -WOLFSSL_API int wolfSSL_CTX_set_srp_username(WOLFSSL_CTX*, char*); - -WOLFSSL_API long wolfSSL_set_options(WOLFSSL *s, long op); -WOLFSSL_API long wolfSSL_get_options(const WOLFSSL *s); -WOLFSSL_API long wolfSSL_clear_options(WOLFSSL *s, long op); -WOLFSSL_API long wolfSSL_clear_num_renegotiations(WOLFSSL *s); -WOLFSSL_API long wolfSSL_total_renegotiations(WOLFSSL *s); -WOLFSSL_API long wolfSSL_num_renegotiations(WOLFSSL* s); -WOLFSSL_API long wolfSSL_set_tmp_dh(WOLFSSL *s, WOLFSSL_DH *dh); -WOLFSSL_API long wolfSSL_set_tlsext_debug_arg(WOLFSSL *s, void *arg); -WOLFSSL_API long wolfSSL_set_tlsext_status_type(WOLFSSL *s, int type); -WOLFSSL_API long wolfSSL_set_tlsext_status_exts(WOLFSSL *s, void *arg); -WOLFSSL_API long wolfSSL_get_tlsext_status_ids(WOLFSSL *s, void *arg); -WOLFSSL_API long wolfSSL_set_tlsext_status_ids(WOLFSSL *s, void *arg); -WOLFSSL_API long wolfSSL_get_tlsext_status_ocsp_resp(WOLFSSL *s, unsigned char **resp); -WOLFSSL_API long wolfSSL_set_tlsext_status_ocsp_resp(WOLFSSL *s, unsigned char *resp, int len); - -WOLFSSL_API void wolfSSL_CONF_modules_unload(int all); -WOLFSSL_API char* wolfSSL_CONF_get1_default_config_file(void); -WOLFSSL_API long wolfSSL_get_tlsext_status_exts(WOLFSSL *s, void *arg); -WOLFSSL_API long wolfSSL_get_verify_result(const WOLFSSL *ssl); - -#define WOLFSSL_DEFAULT_CIPHER_LIST "" /* default all */ - -/* These are bit-masks */ -enum { - WOLFSSL_OCSP_URL_OVERRIDE = 1, - WOLFSSL_OCSP_NO_NONCE = 2, - WOLFSSL_OCSP_CHECKALL = 4, - - WOLFSSL_CRL_CHECKALL = 1, - WOLFSSL_CRL_CHECK = 2, -}; - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) || \ - defined(HAVE_WEBSERVER) -/* Separated out from other enums because of size */ -enum { - SSL_OP_MICROSOFT_SESS_ID_BUG = 0x00000001, - SSL_OP_NETSCAPE_CHALLENGE_BUG = 0x00000002, - SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG = 0x00000004, - SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG = 0x00000008, - SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER = 0x00000010, - SSL_OP_MSIE_SSLV2_RSA_PADDING = 0x00000020, - SSL_OP_SSLEAY_080_CLIENT_DH_BUG = 0x00000040, - SSL_OP_TLS_D5_BUG = 0x00000080, - SSL_OP_TLS_BLOCK_PADDING_BUG = 0x00000100, - SSL_OP_TLS_ROLLBACK_BUG = 0x00000200, - SSL_OP_EPHEMERAL_RSA = 0x00000800, - WOLFSSL_OP_NO_SSLv3 = 0x00001000, - WOLFSSL_OP_NO_TLSv1 = 0x00002000, - SSL_OP_PKCS1_CHECK_1 = 0x00004000, - SSL_OP_PKCS1_CHECK_2 = 0x00008000, - SSL_OP_NETSCAPE_CA_DN_BUG = 0x00010000, - SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG = 0x00020000, - SSL_OP_SINGLE_DH_USE = 0x00040000, - SSL_OP_NO_TICKET = 0x00080000, - SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS = 0x00100000, - SSL_OP_NO_QUERY_MTU = 0x00200000, - SSL_OP_COOKIE_EXCHANGE = 0x00400000, - SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION = 0x00800000, - SSL_OP_SINGLE_ECDH_USE = 0x01000000, - SSL_OP_CIPHER_SERVER_PREFERENCE = 0x02000000, - WOLFSSL_OP_NO_TLSv1_1 = 0x04000000, - WOLFSSL_OP_NO_TLSv1_2 = 0x08000000, - SSL_OP_NO_COMPRESSION = 0x10000000, - WOLFSSL_OP_NO_TLSv1_3 = 0x20000000, - WOLFSSL_OP_NO_SSLv2 = 0x40000000, - SSL_OP_ALL = - (SSL_OP_MICROSOFT_SESS_ID_BUG - | SSL_OP_NETSCAPE_CHALLENGE_BUG - | SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG - | SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG - | SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER - | SSL_OP_MSIE_SSLV2_RSA_PADDING - | SSL_OP_SSLEAY_080_CLIENT_DH_BUG - | SSL_OP_TLS_D5_BUG - | SSL_OP_TLS_BLOCK_PADDING_BUG - | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS - | SSL_OP_TLS_ROLLBACK_BUG), -}; - -/* for compatibility these must be macros */ -#define SSL_OP_NO_SSLv2 WOLFSSL_OP_NO_SSLv2 -#define SSL_OP_NO_SSLv3 WOLFSSL_OP_NO_SSLv3 -#define SSL_OP_NO_TLSv1 WOLFSSL_OP_NO_TLSv1 -#define SSL_OP_NO_TLSv1_1 WOLFSSL_OP_NO_TLSv1_1 -#define SSL_OP_NO_TLSv1_2 WOLFSSL_OP_NO_TLSv1_2 -#if !(!defined(WOLFSSL_TLS13) && defined(WOLFSSL_APACHE_HTTPD)) /* apache uses this to determine if TLS 1.3 is enabled */ -#define SSL_OP_NO_TLSv1_3 WOLFSSL_OP_NO_TLSv1_3 -#endif - -#define SSL_OP_NO_SSL_MASK (SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | \ - SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3) - -#define SSL_NOTHING 1 -#define SSL_WRITING 2 -#define SSL_READING 3 - -enum { -#ifdef HAVE_OCSP - /* OCSP Flags */ - OCSP_NOCERTS = 1, - OCSP_NOINTERN = 2, - OCSP_NOSIGS = 4, - OCSP_NOCHAIN = 8, - OCSP_NOVERIFY = 16, - OCSP_NOEXPLICIT = 32, - OCSP_NOCASIGN = 64, - OCSP_NODELEGATED = 128, - OCSP_NOCHECKS = 256, - OCSP_TRUSTOTHER = 512, - OCSP_RESPID_KEY = 1024, - OCSP_NOTIME = 2048, - - /* OCSP Types */ - OCSP_CERTID = 2, - OCSP_REQUEST = 4, - OCSP_RESPONSE = 8, - OCSP_BASICRESP = 16, -#endif - - ASN1_GENERALIZEDTIME = 4, - SSL_MAX_SSL_SESSION_ID_LENGTH = 32, - - SSL_ST_CONNECT = 0x1000, - SSL_ST_ACCEPT = 0x2000, - SSL_ST_MASK = 0x0FFF, - - SSL_CB_LOOP = 0x01, - SSL_CB_EXIT = 0x02, - SSL_CB_READ = 0x04, - SSL_CB_WRITE = 0x08, - SSL_CB_HANDSHAKE_START = 0x10, - SSL_CB_HANDSHAKE_DONE = 0x20, - SSL_CB_ALERT = 0x4000, - SSL_CB_READ_ALERT = (SSL_CB_ALERT | SSL_CB_READ), - SSL_CB_WRITE_ALERT = (SSL_CB_ALERT | SSL_CB_WRITE), - SSL_CB_ACCEPT_LOOP = (SSL_ST_ACCEPT | SSL_CB_LOOP), - SSL_CB_ACCEPT_EXIT = (SSL_ST_ACCEPT | SSL_CB_EXIT), - SSL_CB_CONNECT_LOOP = (SSL_ST_CONNECT | SSL_CB_LOOP), - SSL_CB_CONNECT_EXIT = (SSL_ST_CONNECT | SSL_CB_EXIT), - SSL_CB_MODE_READ = 1, - SSL_CB_MODE_WRITE = 2, - - SSL_MODE_ENABLE_PARTIAL_WRITE = 2, - SSL_MODE_AUTO_RETRY = 3, /* wolfSSL default is to block with blocking io - * and auto retry */ - SSL_MODE_RELEASE_BUFFERS = -1, /* For libwebsockets build. No current use. */ - - BIO_FLAGS_BASE64_NO_NL = 1, - BIO_CLOSE = 1, - BIO_NOCLOSE = 0, - - X509_FILETYPE_PEM = 8, - X509_LU_X509 = 9, - X509_LU_CRL = 12, - - X509_V_OK = 0, - X509_V_ERR_CRL_SIGNATURE_FAILURE = 13, - X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD = 14, - X509_V_ERR_CRL_HAS_EXPIRED = 15, - X509_V_ERR_CERT_REVOKED = 16, - X509_V_ERR_CERT_CHAIN_TOO_LONG = 17, - X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT = 18, - X509_V_ERR_CERT_NOT_YET_VALID = 19, - X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD = 20, - X509_V_ERR_CERT_HAS_EXPIRED = 21, - X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD = 22, - X509_V_ERR_CERT_REJECTED = 23, - /* Required for Nginx */ - X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT = 24, - X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN = 25, - X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY = 26, - X509_V_ERR_CERT_UNTRUSTED = 27, - X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE = 28, - X509_V_ERR_SUBJECT_ISSUER_MISMATCH = 29, - /* additional X509_V_ERR_* enums not used in wolfSSL */ - X509_V_ERR_UNABLE_TO_GET_CRL, - X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE, - X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE, - X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY, - X509_V_ERR_CERT_SIGNATURE_FAILURE, - X509_V_ERR_CRL_NOT_YET_VALID, - X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD, - X509_V_ERR_OUT_OF_MEM, - X509_V_ERR_INVALID_CA, - X509_V_ERR_PATH_LENGTH_EXCEEDED, - X509_V_ERR_INVALID_PURPOSE, - X509_V_ERR_AKID_SKID_MISMATCH, - X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH, - X509_V_ERR_KEYUSAGE_NO_CERTSIGN, - X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER, - X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION, - X509_V_ERR_KEYUSAGE_NO_CRL_SIGN, - X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION, - X509_V_ERR_INVALID_NON_CA, - X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED, - X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE, - X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED, - X509_V_ERR_INVALID_EXTENSION, - X509_V_ERR_INVALID_POLICY_EXTENSION, - X509_V_ERR_NO_EXPLICIT_POLICY, - X509_V_ERR_UNNESTED_RESOURCE, - X509_V_ERR_APPLICATION_VERIFICATION, - - X509_R_CERT_ALREADY_IN_HASH_TABLE, - - XN_FLAG_SPC_EQ = (1 << 23), - XN_FLAG_SEP_CPLUS_SPC = (2 << 16), - XN_FLAG_ONELINE = 0, - XN_FLAG_RFC2253 = 1, - XN_FLAG_DN_REV = (1 << 20), - - CRYPTO_LOCK = 1, - CRYPTO_NUM_LOCKS = 10, - - ASN1_STRFLGS_ESC_MSB = 4 -}; -#endif - -/* extras end */ - -#if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM) -/* wolfSSL extension, provide last error from SSL_get_error - since not using thread storage error queue */ -#include <stdio.h> -WOLFSSL_API void wolfSSL_ERR_print_errors_fp(XFILE, int err); -#if defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE) -WOLFSSL_API void wolfSSL_ERR_dump_errors_fp(XFILE fp); -WOLFSSL_API void wolfSSL_ERR_print_errors_cb(int (*cb)(const char *str, - size_t len, void *u), void *u); -#endif -#endif -WOLFSSL_API void wolfSSL_ERR_print_errors(WOLFSSL_BIO *bio); - - -#ifndef NO_OLD_SSL_NAMES - #define SSL_ERROR_NONE WOLFSSL_ERROR_NONE - #define SSL_FAILURE WOLFSSL_FAILURE - #define SSL_SUCCESS WOLFSSL_SUCCESS - #define SSL_SHUTDOWN_NOT_DONE WOLFSSL_SHUTDOWN_NOT_DONE - - #define SSL_ALPN_NOT_FOUND WOLFSSL_ALPN_NOT_FOUND - #define SSL_BAD_CERTTYPE WOLFSSL_BAD_CERTTYPE - #define SSL_BAD_STAT WOLFSSL_BAD_STAT - #define SSL_BAD_PATH WOLFSSL_BAD_PATH - #define SSL_BAD_FILETYPE WOLFSSL_BAD_FILETYPE - #define SSL_BAD_FILE WOLFSSL_BAD_FILE - #define SSL_NOT_IMPLEMENTED WOLFSSL_NOT_IMPLEMENTED - #define SSL_UNKNOWN WOLFSSL_UNKNOWN - #define SSL_FATAL_ERROR WOLFSSL_FATAL_ERROR - - #define SSL_FILETYPE_ASN1 WOLFSSL_FILETYPE_ASN1 - #define SSL_FILETYPE_PEM WOLFSSL_FILETYPE_PEM - #define SSL_FILETYPE_DEFAULT WOLFSSL_FILETYPE_DEFAULT - #define SSL_FILETYPE_RAW WOLFSSL_FILETYPE_RAW - - #define SSL_VERIFY_NONE WOLFSSL_VERIFY_NONE - #define SSL_VERIFY_PEER WOLFSSL_VERIFY_PEER - #define SSL_VERIFY_FAIL_IF_NO_PEER_CERT WOLFSSL_VERIFY_FAIL_IF_NO_PEER_CERT - #define SSL_VERIFY_CLIENT_ONCE WOLFSSL_VERIFY_CLIENT_ONCE - #define SSL_VERIFY_FAIL_EXCEPT_PSK WOLFSSL_VERIFY_FAIL_EXCEPT_PSK - - #define SSL_SESS_CACHE_OFF WOLFSSL_SESS_CACHE_OFF - #define SSL_SESS_CACHE_CLIENT WOLFSSL_SESS_CACHE_CLIENT - #define SSL_SESS_CACHE_SERVER WOLFSSL_SESS_CACHE_SERVER - #define SSL_SESS_CACHE_BOTH WOLFSSL_SESS_CACHE_BOTH - #define SSL_SESS_CACHE_NO_AUTO_CLEAR WOLFSSL_SESS_CACHE_NO_AUTO_CLEAR - #define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP WOLFSSL_SESS_CACHE_NO_INTERNAL_LOOKUP - #define SSL_SESS_CACHE_NO_INTERNAL_STORE WOLFSSL_SESS_CACHE_NO_INTERNAL_STORE - #define SSL_SESS_CACHE_NO_INTERNAL WOLFSSL_SESS_CACHE_NO_INTERNAL - - #define SSL_ERROR_WANT_READ WOLFSSL_ERROR_WANT_READ - #define SSL_ERROR_WANT_WRITE WOLFSSL_ERROR_WANT_WRITE - #define SSL_ERROR_WANT_CONNECT WOLFSSL_ERROR_WANT_CONNECT - #define SSL_ERROR_WANT_ACCEPT WOLFSSL_ERROR_WANT_ACCEPT - #define SSL_ERROR_SYSCALL WOLFSSL_ERROR_SYSCALL - #define SSL_ERROR_WANT_X509_LOOKUP WOLFSSL_ERROR_WANT_X509_LOOKUP - #define SSL_ERROR_ZERO_RETURN WOLFSSL_ERROR_ZERO_RETURN - #define SSL_ERROR_SSL WOLFSSL_ERROR_SSL - - #define SSL_SENT_SHUTDOWN WOLFSSL_SENT_SHUTDOWN - #define SSL_RECEIVED_SHUTDOWN WOLFSSL_RECEIVED_SHUTDOWN - #define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER WOLFSSL_MODE_ACCEPT_MOVING_WRITE_BUFFER - - #define SSL_R_SSL_HANDSHAKE_FAILURE WOLFSSL_R_SSL_HANDSHAKE_FAILURE - #define SSL_R_TLSV1_ALERT_UNKNOWN_CA WOLFSSL_R_TLSV1_ALERT_UNKNOWN_CA - #define SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN WOLFSSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN - #define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE WOLFSSL_R_SSLV3_ALERT_BAD_CERTIFICATE - - #define PEM_BUFSIZE WOLF_PEM_BUFSIZE -#endif - -enum { /* ssl Constants */ - WOLFSSL_ERROR_NONE = 0, /* for most functions */ - WOLFSSL_FAILURE = 0, /* for some functions */ - WOLFSSL_SUCCESS = 1, - WOLFSSL_SHUTDOWN_NOT_DONE = 2, /* call wolfSSL_shutdown again to complete */ - - WOLFSSL_ALPN_NOT_FOUND = -9, - WOLFSSL_BAD_CERTTYPE = -8, - WOLFSSL_BAD_STAT = -7, - WOLFSSL_BAD_PATH = -6, - WOLFSSL_BAD_FILETYPE = -5, - WOLFSSL_BAD_FILE = -4, - WOLFSSL_NOT_IMPLEMENTED = -3, - WOLFSSL_UNKNOWN = -2, - WOLFSSL_FATAL_ERROR = -1, - - WOLFSSL_FILETYPE_ASN1 = 2, - WOLFSSL_FILETYPE_PEM = 1, - WOLFSSL_FILETYPE_DEFAULT = 2, /* ASN1 */ - WOLFSSL_FILETYPE_RAW = 3, /* NTRU raw key blob */ - - WOLFSSL_VERIFY_NONE = 0, - WOLFSSL_VERIFY_PEER = 1, - WOLFSSL_VERIFY_FAIL_IF_NO_PEER_CERT = 2, - WOLFSSL_VERIFY_CLIENT_ONCE = 4, - WOLFSSL_VERIFY_FAIL_EXCEPT_PSK = 8, - - WOLFSSL_SESS_CACHE_OFF = 0x0000, - WOLFSSL_SESS_CACHE_CLIENT = 0x0001, - WOLFSSL_SESS_CACHE_SERVER = 0x0002, - WOLFSSL_SESS_CACHE_BOTH = 0x0003, - WOLFSSL_SESS_CACHE_NO_AUTO_CLEAR = 0x0008, - WOLFSSL_SESS_CACHE_NO_INTERNAL_LOOKUP = 0x0100, - WOLFSSL_SESS_CACHE_NO_INTERNAL_STORE = 0x0200, - WOLFSSL_SESS_CACHE_NO_INTERNAL = 0x0300, - - WOLFSSL_ERROR_WANT_READ = 2, - WOLFSSL_ERROR_WANT_WRITE = 3, - WOLFSSL_ERROR_WANT_CONNECT = 7, - WOLFSSL_ERROR_WANT_ACCEPT = 8, - WOLFSSL_ERROR_SYSCALL = 5, - WOLFSSL_ERROR_WANT_X509_LOOKUP = 83, - WOLFSSL_ERROR_ZERO_RETURN = 6, - WOLFSSL_ERROR_SSL = 85, - - WOLFSSL_SENT_SHUTDOWN = 1, - WOLFSSL_RECEIVED_SHUTDOWN = 2, - WOLFSSL_MODE_ACCEPT_MOVING_WRITE_BUFFER = 4, - - WOLFSSL_R_SSL_HANDSHAKE_FAILURE = 101, - WOLFSSL_R_TLSV1_ALERT_UNKNOWN_CA = 102, - WOLFSSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN = 103, - WOLFSSL_R_SSLV3_ALERT_BAD_CERTIFICATE = 104, - - WOLF_PEM_BUFSIZE = 1024 -}; - -#ifndef NO_PSK - typedef unsigned int (*wc_psk_client_callback)(WOLFSSL*, const char*, char*, - unsigned int, unsigned char*, unsigned int); - WOLFSSL_API void wolfSSL_CTX_set_psk_client_callback(WOLFSSL_CTX*, - wc_psk_client_callback); - WOLFSSL_API void wolfSSL_set_psk_client_callback(WOLFSSL*, - wc_psk_client_callback); -#ifdef WOLFSSL_TLS13 - typedef unsigned int (*wc_psk_client_tls13_callback)(WOLFSSL*, const char*, - char*, unsigned int, unsigned char*, unsigned int, const char**); - WOLFSSL_API void wolfSSL_CTX_set_psk_client_tls13_callback(WOLFSSL_CTX*, - wc_psk_client_tls13_callback); - WOLFSSL_API void wolfSSL_set_psk_client_tls13_callback(WOLFSSL*, - wc_psk_client_tls13_callback); -#endif - - WOLFSSL_API const char* wolfSSL_get_psk_identity_hint(const WOLFSSL*); - WOLFSSL_API const char* wolfSSL_get_psk_identity(const WOLFSSL*); - - WOLFSSL_API int wolfSSL_CTX_use_psk_identity_hint(WOLFSSL_CTX*, const char*); - WOLFSSL_API int wolfSSL_use_psk_identity_hint(WOLFSSL*, const char*); - - typedef unsigned int (*wc_psk_server_callback)(WOLFSSL*, const char*, - unsigned char*, unsigned int); - WOLFSSL_API void wolfSSL_CTX_set_psk_server_callback(WOLFSSL_CTX*, - wc_psk_server_callback); - WOLFSSL_API void wolfSSL_set_psk_server_callback(WOLFSSL*, - wc_psk_server_callback); -#ifdef WOLFSSL_TLS13 - typedef unsigned int (*wc_psk_server_tls13_callback)(WOLFSSL*, const char*, - unsigned char*, unsigned int, const char**); - WOLFSSL_API void wolfSSL_CTX_set_psk_server_tls13_callback(WOLFSSL_CTX*, - wc_psk_server_tls13_callback); - WOLFSSL_API void wolfSSL_set_psk_server_tls13_callback(WOLFSSL*, - wc_psk_server_tls13_callback); -#endif - - #define PSK_TYPES_DEFINED -#endif /* NO_PSK */ - - -#ifdef HAVE_ANON - WOLFSSL_API int wolfSSL_CTX_allow_anon_cipher(WOLFSSL_CTX*); -#endif /* HAVE_ANON */ - - -/* extra begins */ -#ifdef OPENSSL_EXTRA -enum { /* ERR Constants */ - ERR_TXT_STRING = 1 -}; - -/* bio misc */ -enum { - WOLFSSL_BIO_ERROR = -1, - WOLFSSL_BIO_UNSET = -2, - WOLFSSL_BIO_SIZE = 17000 /* default BIO write size if not set */ -}; -#endif - -WOLFSSL_API void wolfSSL_ERR_put_error(int lib, int fun, int err, - const char* file, int line); -WOLFSSL_API unsigned long wolfSSL_ERR_get_error_line(const char**, int*); -WOLFSSL_API unsigned long wolfSSL_ERR_get_error_line_data(const char**, int*, - const char**, int *); - -WOLFSSL_API unsigned long wolfSSL_ERR_get_error(void); -WOLFSSL_API void wolfSSL_ERR_clear_error(void); - - -WOLFSSL_API int wolfSSL_RAND_status(void); -WOLFSSL_API int wolfSSL_RAND_pseudo_bytes(unsigned char* buf, int num); -WOLFSSL_API int wolfSSL_RAND_bytes(unsigned char* buf, int num); -WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_server_method(void); -WOLFSSL_API long wolfSSL_CTX_set_options(WOLFSSL_CTX*, long); -WOLFSSL_API long wolfSSL_CTX_get_options(WOLFSSL_CTX* ctx); -WOLFSSL_API long wolfSSL_CTX_clear_options(WOLFSSL_CTX*, long); - -#ifndef NO_CERTS - WOLFSSL_API int wolfSSL_CTX_check_private_key(const WOLFSSL_CTX*); -#endif /* !NO_CERTS */ - -WOLFSSL_API void wolfSSL_ERR_free_strings(void); -WOLFSSL_API void wolfSSL_ERR_remove_state(unsigned long); -WOLFSSL_API int wolfSSL_clear(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_state(WOLFSSL* ssl); - -WOLFSSL_API void wolfSSL_cleanup_all_ex_data(void); -WOLFSSL_API long wolfSSL_CTX_set_mode(WOLFSSL_CTX* ctx, long mode); -WOLFSSL_API long wolfSSL_CTX_get_mode(WOLFSSL_CTX* ctx); -WOLFSSL_API void wolfSSL_CTX_set_default_read_ahead(WOLFSSL_CTX* ctx, int m); -WOLFSSL_API long wolfSSL_SSL_get_mode(WOLFSSL* ssl); - - -WOLFSSL_API int wolfSSL_CTX_set_default_verify_paths(WOLFSSL_CTX*); -WOLFSSL_API int wolfSSL_CTX_set_session_id_context(WOLFSSL_CTX*, - const unsigned char*, unsigned int); -WOLFSSL_ABI WOLFSSL_API WOLFSSL_X509* wolfSSL_get_peer_certificate(WOLFSSL*); -WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_get_peer_cert_chain(const WOLFSSL*); -#if defined(WOLFSSL_QT) || defined(OPENSSL_ALL) -WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_set_peer_cert_chain(WOLFSSL* ssl); -#endif - -#ifdef OPENSSL_EXTRA -WOLFSSL_API int wolfSSL_want(WOLFSSL*); -#endif -WOLFSSL_API int wolfSSL_want_read(WOLFSSL*); -WOLFSSL_API int wolfSSL_want_write(WOLFSSL*); - -#if !defined(NO_FILESYSTEM) && defined (OPENSSL_EXTRA) -#include <stdarg.h> /* var_arg */ -WOLFSSL_API int wolfSSL_BIO_vprintf(WOLFSSL_BIO* bio, const char* format, - va_list args); -#endif -WOLFSSL_API int wolfSSL_BIO_printf(WOLFSSL_BIO*, const char*, ...); -WOLFSSL_API int wolfSSL_BIO_dump(WOLFSSL_BIO *bio, const char*, int); -WOLFSSL_API int wolfSSL_ASN1_UTCTIME_print(WOLFSSL_BIO*, - const WOLFSSL_ASN1_UTCTIME*); -WOLFSSL_API int wolfSSL_ASN1_GENERALIZEDTIME_print(WOLFSSL_BIO*, - const WOLFSSL_ASN1_GENERALIZEDTIME*); -WOLFSSL_API void wolfSSL_ASN1_GENERALIZEDTIME_free(WOLFSSL_ASN1_GENERALIZEDTIME*); -WOLFSSL_API int wolfSSL_ASN1_TIME_check(const WOLFSSL_ASN1_TIME*); -WOLFSSL_API int wolfSSL_ASN1_TIME_diff(int *pday, int *psec, - const WOLFSSL_ASN1_TIME *from, const WOLFSSL_ASN1_TIME *to); -#ifdef OPENSSL_EXTRA -WOLFSSL_API WOLFSSL_ASN1_TIME *wolfSSL_ASN1_TIME_set(WOLFSSL_ASN1_TIME *s, time_t t); -#endif - -WOLFSSL_API int wolfSSL_sk_num(WOLFSSL_STACK* sk); -WOLFSSL_API void* wolfSSL_sk_value(WOLFSSL_STACK* sk, int i); - -#if defined(HAVE_EX_DATA) || defined(FORTRESS) -WOLFSSL_API void* wolfSSL_CRYPTO_get_ex_data(const WOLFSSL_CRYPTO_EX_DATA* ex_data, - int idx); -WOLFSSL_API int wolfSSL_CRYPTO_set_ex_data(WOLFSSL_CRYPTO_EX_DATA* ex_data, int idx, - void *data); -#endif - -/* stunnel 4.28 needs */ -WOLFSSL_API void* wolfSSL_CTX_get_ex_data(const WOLFSSL_CTX*, int); -WOLFSSL_API int wolfSSL_CTX_set_ex_data(WOLFSSL_CTX*, int, void*); -WOLFSSL_API void wolfSSL_CTX_sess_set_get_cb(WOLFSSL_CTX*, - WOLFSSL_SESSION*(*f)(WOLFSSL*, unsigned char*, int, int*)); -WOLFSSL_API void wolfSSL_CTX_sess_set_new_cb(WOLFSSL_CTX*, - int (*f)(WOLFSSL*, WOLFSSL_SESSION*)); -WOLFSSL_API void wolfSSL_CTX_sess_set_remove_cb(WOLFSSL_CTX*, - void (*f)(WOLFSSL_CTX*, WOLFSSL_SESSION*)); - -WOLFSSL_API int wolfSSL_i2d_SSL_SESSION(WOLFSSL_SESSION*,unsigned char**); -WOLFSSL_API WOLFSSL_SESSION* wolfSSL_d2i_SSL_SESSION(WOLFSSL_SESSION**, - const unsigned char**, long); - -WOLFSSL_API long wolfSSL_SESSION_get_timeout(const WOLFSSL_SESSION*); -WOLFSSL_API long wolfSSL_SESSION_get_time(const WOLFSSL_SESSION*); -WOLFSSL_API int wolfSSL_CTX_get_ex_new_index(long, void*, void*, void*, void*); - - -/* extra ends */ - - -/* wolfSSL extensions */ - -/* call before SSL_connect, if verifying will add name check to - date check and signature check */ -WOLFSSL_ABI WOLFSSL_API int wolfSSL_check_domain_name(WOLFSSL*, const char*); - -/* need to call once to load library (session cache) */ -WOLFSSL_ABI WOLFSSL_API int wolfSSL_Init(void); -/* call when done to cleanup/free session cache mutex / resources */ -WOLFSSL_ABI WOLFSSL_API int wolfSSL_Cleanup(void); - -/* which library version do we have */ -WOLFSSL_API const char* wolfSSL_lib_version(void); -/* which library version do we have in hex */ -WOLFSSL_API word32 wolfSSL_lib_version_hex(void); - -/* do accept or connect depedning on side */ -WOLFSSL_API int wolfSSL_negotiate(WOLFSSL* ssl); -/* turn on wolfSSL data compression */ -WOLFSSL_API int wolfSSL_set_compression(WOLFSSL* ssl); - -WOLFSSL_ABI WOLFSSL_API int wolfSSL_set_timeout(WOLFSSL*, unsigned int); -WOLFSSL_ABI WOLFSSL_API int wolfSSL_CTX_set_timeout(WOLFSSL_CTX*, unsigned int); -WOLFSSL_API void wolfSSL_CTX_set_current_time_cb(WOLFSSL_CTX* ctx, - void (*cb)(const WOLFSSL* ssl, WOLFSSL_TIMEVAL* out_clock)); - -/* get wolfSSL peer X509_CHAIN */ -WOLFSSL_API WOLFSSL_X509_CHAIN* wolfSSL_get_peer_chain(WOLFSSL* ssl); -#ifdef WOLFSSL_ALT_CERT_CHAINS -WOLFSSL_API int wolfSSL_is_peer_alt_cert_chain(const WOLFSSL* ssl); -/* get wolfSSL alternate peer X509_CHAIN */ -WOLFSSL_API WOLFSSL_X509_CHAIN* wolfSSL_get_peer_alt_chain(WOLFSSL* ssl); -#endif -/* peer chain count */ -WOLFSSL_API int wolfSSL_get_chain_count(WOLFSSL_X509_CHAIN* chain); -/* index cert length */ -WOLFSSL_API int wolfSSL_get_chain_length(WOLFSSL_X509_CHAIN*, int idx); -/* index cert */ -WOLFSSL_API unsigned char* wolfSSL_get_chain_cert(WOLFSSL_X509_CHAIN*, int idx); -/* index cert in X509 */ -WOLFSSL_API WOLFSSL_X509* wolfSSL_get_chain_X509(WOLFSSL_X509_CHAIN*, int idx); -/* free X509 */ -#define wolfSSL_FreeX509(x509) wolfSSL_X509_free((x509)) -WOLFSSL_ABI WOLFSSL_API void wolfSSL_X509_free(WOLFSSL_X509*); -/* get index cert in PEM */ -WOLFSSL_API int wolfSSL_get_chain_cert_pem(WOLFSSL_X509_CHAIN*, int idx, - unsigned char* buf, int inLen, int* outLen); -WOLFSSL_ABI WOLFSSL_API const unsigned char* wolfSSL_get_sessionID( - const WOLFSSL_SESSION* s); -WOLFSSL_API int wolfSSL_X509_get_serial_number(WOLFSSL_X509*,unsigned char*,int*); -WOLFSSL_API char* wolfSSL_X509_get_subjectCN(WOLFSSL_X509*); -WOLFSSL_API const unsigned char* wolfSSL_X509_get_der(WOLFSSL_X509*, int*); -WOLFSSL_API const unsigned char* wolfSSL_X509_get_tbs(WOLFSSL_X509*, int*); -WOLFSSL_ABI WOLFSSL_API const byte* wolfSSL_X509_notBefore(WOLFSSL_X509*); -WOLFSSL_ABI WOLFSSL_API const byte* wolfSSL_X509_notAfter(WOLFSSL_X509*); -WOLFSSL_API int wolfSSL_X509_version(WOLFSSL_X509*); - -WOLFSSL_API int wolfSSL_cmp_peer_cert_to_file(WOLFSSL*, const char*); - -WOLFSSL_ABI WOLFSSL_API char* wolfSSL_X509_get_next_altname(WOLFSSL_X509*); -WOLFSSL_API int wolfSSL_X509_add_altname(WOLFSSL_X509*, const char*, int); - -WOLFSSL_API WOLFSSL_X509* wolfSSL_d2i_X509(WOLFSSL_X509** x509, - const unsigned char** in, int len); -WOLFSSL_API WOLFSSL_X509* - wolfSSL_X509_d2i(WOLFSSL_X509** x509, const unsigned char* in, int len); -WOLFSSL_API int wolfSSL_i2d_X509(WOLFSSL_X509* x509, unsigned char** out); -WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_d2i_X509_CRL(WOLFSSL_X509_CRL **crl, - const unsigned char *in, int len); -#ifndef NO_FILESYSTEM -WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_d2i_X509_CRL_fp(XFILE file, WOLFSSL_X509_CRL **crl); -#endif -WOLFSSL_API void wolfSSL_X509_CRL_free(WOLFSSL_X509_CRL *crl); - -#ifndef NO_FILESYSTEM - #ifndef NO_STDIO_FILESYSTEM - WOLFSSL_API WOLFSSL_X509* - wolfSSL_X509_d2i_fp(WOLFSSL_X509** x509, XFILE file); - #endif -WOLFSSL_ABI WOLFSSL_API WOLFSSL_X509* - wolfSSL_X509_load_certificate_file(const char* fname, int format); -#endif -WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_load_certificate_buffer( - const unsigned char* buf, int sz, int format); - -#ifdef WOLFSSL_SEP - WOLFSSL_API unsigned char* - wolfSSL_X509_get_device_type(WOLFSSL_X509*, unsigned char*, int*); - WOLFSSL_API unsigned char* - wolfSSL_X509_get_hw_type(WOLFSSL_X509*, unsigned char*, int*); - WOLFSSL_API unsigned char* - wolfSSL_X509_get_hw_serial_number(WOLFSSL_X509*, unsigned char*, int*); -#endif - -/* connect enough to get peer cert */ -WOLFSSL_API int wolfSSL_connect_cert(WOLFSSL* ssl); - - - -/* PKCS12 compatibility */ -typedef struct WC_PKCS12 WC_PKCS12; -WOLFSSL_API WC_PKCS12* wolfSSL_d2i_PKCS12_bio(WOLFSSL_BIO* bio, - WC_PKCS12** pkcs12); -WOLFSSL_API int wolfSSL_i2d_PKCS12_bio(WOLFSSL_BIO *bio, WC_PKCS12 *pkcs12); -#ifndef NO_FILESYSTEM -WOLFSSL_API WOLFSSL_X509_PKCS12* wolfSSL_d2i_PKCS12_fp(XFILE fp, - WOLFSSL_X509_PKCS12** pkcs12); -#endif -WOLFSSL_API int wolfSSL_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw, - WOLFSSL_EVP_PKEY** pkey, WOLFSSL_X509** cert, - WOLF_STACK_OF(WOLFSSL_X509)** ca); -WOLFSSL_API WC_PKCS12* wolfSSL_PKCS12_create(char* pass, char* name, - WOLFSSL_EVP_PKEY* pkey, WOLFSSL_X509* cert, - WOLF_STACK_OF(WOLFSSL_X509)* ca, - int keyNID, int certNID, int itt, int macItt, int keytype); -WOLFSSL_API void wolfSSL_PKCS12_PBE_add(void); - - - -#ifndef NO_DH -/* server Diffie-Hellman parameters */ -WOLFSSL_API int wolfSSL_SetTmpDH(WOLFSSL*, const unsigned char* p, int pSz, - const unsigned char* g, int gSz); -WOLFSSL_API int wolfSSL_SetTmpDH_buffer(WOLFSSL*, const unsigned char* b, long sz, - int format); -WOLFSSL_API int wolfSSL_SetEnableDhKeyTest(WOLFSSL*, int); -#ifndef NO_FILESYSTEM - WOLFSSL_API int wolfSSL_SetTmpDH_file(WOLFSSL*, const char* f, int format); -#endif - -/* server ctx Diffie-Hellman parameters */ -WOLFSSL_API int wolfSSL_CTX_SetTmpDH(WOLFSSL_CTX*, const unsigned char* p, - int pSz, const unsigned char* g, int gSz); -WOLFSSL_API int wolfSSL_CTX_SetTmpDH_buffer(WOLFSSL_CTX*, const unsigned char* b, - long sz, int format); - -#ifndef NO_FILESYSTEM - WOLFSSL_API int wolfSSL_CTX_SetTmpDH_file(WOLFSSL_CTX*, const char* f, - int format); -#endif - -WOLFSSL_API int wolfSSL_CTX_SetMinDhKey_Sz(WOLFSSL_CTX*, word16); -WOLFSSL_API int wolfSSL_SetMinDhKey_Sz(WOLFSSL*, word16); -WOLFSSL_API int wolfSSL_CTX_SetMaxDhKey_Sz(WOLFSSL_CTX*, word16); -WOLFSSL_API int wolfSSL_SetMaxDhKey_Sz(WOLFSSL*, word16); -WOLFSSL_API int wolfSSL_GetDhKey_Sz(WOLFSSL*); -#endif /* NO_DH */ - -#ifndef NO_RSA -WOLFSSL_API int wolfSSL_CTX_SetMinRsaKey_Sz(WOLFSSL_CTX*, short); -WOLFSSL_API int wolfSSL_SetMinRsaKey_Sz(WOLFSSL*, short); -#endif /* NO_RSA */ - -#ifdef HAVE_ECC -WOLFSSL_API int wolfSSL_CTX_SetMinEccKey_Sz(WOLFSSL_CTX*, short); -WOLFSSL_API int wolfSSL_SetMinEccKey_Sz(WOLFSSL*, short); -#endif /* NO_RSA */ - -WOLFSSL_API int wolfSSL_SetTmpEC_DHE_Sz(WOLFSSL*, word16); -WOLFSSL_API int wolfSSL_CTX_SetTmpEC_DHE_Sz(WOLFSSL_CTX*, word16); - -/* keyblock size in bytes or -1 */ -/* need to call wolfSSL_KeepArrays before handshake to save keys */ -WOLFSSL_API int wolfSSL_get_keyblock_size(WOLFSSL*); -WOLFSSL_API int wolfSSL_get_keys(WOLFSSL*,unsigned char** ms, unsigned int* msLen, - unsigned char** sr, unsigned int* srLen, - unsigned char** cr, unsigned int* crLen); - -/* Computes EAP-TLS and EAP-TTLS keying material from the master_secret. */ -WOLFSSL_API int wolfSSL_make_eap_keys(WOLFSSL*, void* key, unsigned int len, - const char* label); - - -#ifndef _WIN32 - #ifndef NO_WRITEV - #ifdef __PPU - #include <sys/types.h> - #include <sys/socket.h> - #elif !defined(WOLFSSL_MDK_ARM) && !defined(WOLFSSL_IAR_ARM) && \ - !defined(WOLFSSL_PICOTCP) && !defined(WOLFSSL_ROWLEY_ARM) && \ - !defined(WOLFSSL_EMBOS) && !defined(WOLFSSL_FROSTED) && \ - !defined(WOLFSSL_CHIBIOS) && !defined(WOLFSSL_CONTIKI) && \ - !defined(WOLFSSL_ZEPHYR) - #include <sys/uio.h> - #endif - /* allow writev style writing */ - WOLFSSL_API int wolfSSL_writev(WOLFSSL* ssl, const struct iovec* iov, - int iovcnt); - #endif -#endif - - -#ifndef NO_CERTS - /* SSL_CTX versions */ - WOLFSSL_API int wolfSSL_CTX_UnloadCAs(WOLFSSL_CTX*); -#ifdef WOLFSSL_TRUST_PEER_CERT - WOLFSSL_API int wolfSSL_CTX_Unload_trust_peers(WOLFSSL_CTX*); - WOLFSSL_API int wolfSSL_CTX_trust_peer_buffer(WOLFSSL_CTX*, - const unsigned char*, long, int); -#endif - WOLFSSL_API int wolfSSL_CTX_load_verify_buffer_ex(WOLFSSL_CTX*, - const unsigned char*, long, int, - int, word32); - WOLFSSL_API int wolfSSL_CTX_load_verify_buffer(WOLFSSL_CTX*, - const unsigned char*, long, int); - WOLFSSL_API int wolfSSL_CTX_load_verify_chain_buffer_format(WOLFSSL_CTX*, - const unsigned char*, long, int); - WOLFSSL_API int wolfSSL_CTX_use_certificate_buffer(WOLFSSL_CTX*, - const unsigned char*, long, int); - WOLFSSL_API int wolfSSL_CTX_use_PrivateKey_buffer(WOLFSSL_CTX*, - const unsigned char*, long, int); - WOLFSSL_API int wolfSSL_CTX_use_PrivateKey_id(WOLFSSL_CTX*, - const unsigned char*, long, int, long); - WOLFSSL_API int wolfSSL_CTX_use_certificate_chain_buffer_format(WOLFSSL_CTX*, - const unsigned char*, long, int); - WOLFSSL_API int wolfSSL_CTX_use_certificate_chain_buffer(WOLFSSL_CTX*, - const unsigned char*, long); - - /* SSL versions */ - WOLFSSL_API int wolfSSL_use_certificate_buffer(WOLFSSL*, const unsigned char*, - long, int); - WOLFSSL_API int wolfSSL_use_certificate_ASN1(WOLFSSL* ssl, - const unsigned char* der, int derSz); - WOLFSSL_API int wolfSSL_use_PrivateKey_buffer(WOLFSSL*, const unsigned char*, - long, int); - WOLFSSL_API int wolfSSL_use_PrivateKey_id(WOLFSSL*, const unsigned char*, - long, int, long); - WOLFSSL_API int wolfSSL_use_certificate_chain_buffer_format(WOLFSSL*, - const unsigned char*, long, int); - WOLFSSL_API int wolfSSL_use_certificate_chain_buffer(WOLFSSL*, - const unsigned char*, long); - WOLFSSL_API int wolfSSL_UnloadCertsKeys(WOLFSSL*); - - #if (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) && \ - defined(KEEP_OUR_CERT) - WOLFSSL_API WOLFSSL_X509* wolfSSL_get_certificate(WOLFSSL* ssl); - #endif -#endif - -WOLFSSL_API int wolfSSL_CTX_set_group_messages(WOLFSSL_CTX*); -WOLFSSL_API int wolfSSL_set_group_messages(WOLFSSL*); - - -#ifdef HAVE_FUZZER -enum fuzzer_type { - FUZZ_HMAC = 0, - FUZZ_ENCRYPT = 1, - FUZZ_SIGNATURE = 2, - FUZZ_HASH = 3, - FUZZ_HEAD = 4 -}; - -typedef int (*CallbackFuzzer)(WOLFSSL* ssl, const unsigned char* buf, int sz, - int type, void* fuzzCtx); - -WOLFSSL_API void wolfSSL_SetFuzzerCb(WOLFSSL* ssl, CallbackFuzzer cbf, void* fCtx); -#endif - - -WOLFSSL_API int wolfSSL_DTLS_SetCookieSecret(WOLFSSL*, const byte*, word32); - - -/* I/O Callback default errors */ -enum IOerrors { - WOLFSSL_CBIO_ERR_GENERAL = -1, /* general unexpected err */ - WOLFSSL_CBIO_ERR_WANT_READ = -2, /* need to call read again */ - WOLFSSL_CBIO_ERR_WANT_WRITE = -2, /* need to call write again */ - WOLFSSL_CBIO_ERR_CONN_RST = -3, /* connection reset */ - WOLFSSL_CBIO_ERR_ISR = -4, /* interrupt */ - WOLFSSL_CBIO_ERR_CONN_CLOSE = -5, /* connection closed or epipe */ - WOLFSSL_CBIO_ERR_TIMEOUT = -6 /* socket timeout */ -}; - - -/* CA cache callbacks */ -enum { - WOLFSSL_SSLV3 = 0, - WOLFSSL_TLSV1 = 1, - WOLFSSL_TLSV1_1 = 2, - WOLFSSL_TLSV1_2 = 3, - WOLFSSL_TLSV1_3 = 4, - WOLFSSL_USER_CA = 1, /* user added as trusted */ - WOLFSSL_CHAIN_CA = 2 /* added to cache from trusted chain */ -}; - -WOLFSSL_ABI WOLFSSL_API WC_RNG* wolfSSL_GetRNG(WOLFSSL*); - -WOLFSSL_ABI WOLFSSL_API int wolfSSL_CTX_SetMinVersion(WOLFSSL_CTX*, int); -WOLFSSL_API int wolfSSL_SetMinVersion(WOLFSSL*, int); -WOLFSSL_API int wolfSSL_GetObjectSize(void); /* object size based on build */ -WOLFSSL_API int wolfSSL_CTX_GetObjectSize(void); -WOLFSSL_API int wolfSSL_METHOD_GetObjectSize(void); -WOLFSSL_API int wolfSSL_GetOutputSize(WOLFSSL*, int); -WOLFSSL_API int wolfSSL_GetMaxOutputSize(WOLFSSL*); -WOLFSSL_API int wolfSSL_GetVersion(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_SetVersion(WOLFSSL* ssl, int version); - -/* moved to asn.c, old names kept for backwards compatibility */ -#define wolfSSL_KeyPemToDer wc_KeyPemToDer -#define wolfSSL_CertPemToDer wc_CertPemToDer -#define wolfSSL_PemPubKeyToDer wc_PemPubKeyToDer -#define wolfSSL_PubKeyPemToDer wc_PubKeyPemToDer -#define wolfSSL_PemCertToDer wc_PemCertToDer - - -typedef void (*CallbackCACache)(unsigned char* der, int sz, int type); -typedef void (*CbMissingCRL)(const char* url); -typedef int (*CbOCSPIO)(void*, const char*, int, - unsigned char*, int, unsigned char**); -typedef void (*CbOCSPRespFree)(void*,unsigned char*); - -#ifdef HAVE_CRL_IO -typedef int (*CbCrlIO)(WOLFSSL_CRL* crl, const char* url, int urlSz); -#endif - -/* User Atomic Record Layer CallBacks */ -typedef int (*CallbackMacEncrypt)(WOLFSSL* ssl, unsigned char* macOut, - const unsigned char* macIn, unsigned int macInSz, int macContent, - int macVerify, unsigned char* encOut, const unsigned char* encIn, - unsigned int encSz, void* ctx); -WOLFSSL_API void wolfSSL_CTX_SetMacEncryptCb(WOLFSSL_CTX*, CallbackMacEncrypt); -WOLFSSL_API void wolfSSL_SetMacEncryptCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetMacEncryptCtx(WOLFSSL* ssl); - -typedef int (*CallbackDecryptVerify)(WOLFSSL* ssl, - unsigned char* decOut, const unsigned char* decIn, - unsigned int decSz, int content, int verify, unsigned int* padSz, - void* ctx); -WOLFSSL_API void wolfSSL_CTX_SetDecryptVerifyCb(WOLFSSL_CTX*, - CallbackDecryptVerify); -WOLFSSL_API void wolfSSL_SetDecryptVerifyCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetDecryptVerifyCtx(WOLFSSL* ssl); - -typedef int (*CallbackEncryptMac)(WOLFSSL* ssl, unsigned char* macOut, - int content, int macVerify, unsigned char* encOut, - const unsigned char* encIn, unsigned int encSz, void* ctx); -WOLFSSL_API void wolfSSL_CTX_SetEncryptMacCb(WOLFSSL_CTX*, CallbackEncryptMac); -WOLFSSL_API void wolfSSL_SetEncryptMacCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetEncryptMacCtx(WOLFSSL* ssl); - -typedef int (*CallbackVerifyDecrypt)(WOLFSSL* ssl, - unsigned char* decOut, const unsigned char* decIn, - unsigned int decSz, int content, int verify, unsigned int* padSz, - void* ctx); -WOLFSSL_API void wolfSSL_CTX_SetVerifyDecryptCb(WOLFSSL_CTX*, - CallbackVerifyDecrypt); -WOLFSSL_API void wolfSSL_SetVerifyDecryptCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetVerifyDecryptCtx(WOLFSSL* ssl); - -WOLFSSL_API const unsigned char* wolfSSL_GetMacSecret(WOLFSSL*, int); -WOLFSSL_API const unsigned char* wolfSSL_GetClientWriteKey(WOLFSSL*); -WOLFSSL_API const unsigned char* wolfSSL_GetClientWriteIV(WOLFSSL*); -WOLFSSL_API const unsigned char* wolfSSL_GetServerWriteKey(WOLFSSL*); -WOLFSSL_API const unsigned char* wolfSSL_GetServerWriteIV(WOLFSSL*); -WOLFSSL_API int wolfSSL_GetKeySize(WOLFSSL*); -WOLFSSL_API int wolfSSL_GetIVSize(WOLFSSL*); -WOLFSSL_API int wolfSSL_GetSide(WOLFSSL*); -WOLFSSL_API int wolfSSL_IsTLSv1_1(WOLFSSL*); -WOLFSSL_API int wolfSSL_GetBulkCipher(WOLFSSL*); -WOLFSSL_API int wolfSSL_GetCipherBlockSize(WOLFSSL*); -WOLFSSL_API int wolfSSL_GetAeadMacSize(WOLFSSL*); -WOLFSSL_API int wolfSSL_GetHmacSize(WOLFSSL*); -WOLFSSL_API int wolfSSL_GetHmacType(WOLFSSL*); -WOLFSSL_API int wolfSSL_GetCipherType(WOLFSSL*); -WOLFSSL_API int wolfSSL_SetTlsHmacInner(WOLFSSL*, unsigned char*, - word32, int, int); - -/* Atomic User Needs */ -enum { - WOLFSSL_SERVER_END = 0, - WOLFSSL_CLIENT_END = 1, - WOLFSSL_NEITHER_END = 3, - WOLFSSL_BLOCK_TYPE = 2, - WOLFSSL_STREAM_TYPE = 3, - WOLFSSL_AEAD_TYPE = 4, - WOLFSSL_TLS_HMAC_INNER_SZ = 13 /* SEQ_SZ + ENUM + VERSION_SZ + LEN_SZ */ -}; - -/* for GetBulkCipher and internal use */ -enum BulkCipherAlgorithm { - wolfssl_cipher_null, - wolfssl_rc4, - wolfssl_rc2, - wolfssl_des, - wolfssl_triple_des, /* leading 3 (3des) not valid identifier */ - wolfssl_des40, -#ifdef HAVE_IDEA - wolfssl_idea, -#endif - wolfssl_aes, - wolfssl_aes_gcm, - wolfssl_aes_ccm, - wolfssl_chacha, - wolfssl_camellia, - wolfssl_hc128, /* wolfSSL extensions */ - wolfssl_rabbit -}; - - -/* for KDF TLS 1.2 mac types */ -enum KDF_MacAlgorithm { - wolfssl_sha256 = 4, /* needs to match hash.h wc_MACAlgorithm */ - wolfssl_sha384, - wolfssl_sha512 -}; - - -/* Public Key Callback support */ -#ifdef HAVE_PK_CALLBACKS -#ifdef HAVE_ECC - -struct ecc_key; - -typedef int (*CallbackEccKeyGen)(WOLFSSL* ssl, struct ecc_key* key, - unsigned int keySz, int ecc_curve, void* ctx); -WOLFSSL_API void wolfSSL_CTX_SetEccKeyGenCb(WOLFSSL_CTX*, CallbackEccKeyGen); -WOLFSSL_API void wolfSSL_SetEccKeyGenCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetEccKeyGenCtx(WOLFSSL* ssl); - -typedef int (*CallbackEccSign)(WOLFSSL* ssl, - const unsigned char* in, unsigned int inSz, - unsigned char* out, word32* outSz, - const unsigned char* keyDer, unsigned int keySz, - void* ctx); -WOLFSSL_ABI WOLFSSL_API void wolfSSL_CTX_SetEccSignCb(WOLFSSL_CTX*, - CallbackEccSign); -WOLFSSL_API void wolfSSL_SetEccSignCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetEccSignCtx(WOLFSSL* ssl); - -typedef int (*CallbackEccVerify)(WOLFSSL* ssl, - const unsigned char* sig, unsigned int sigSz, - const unsigned char* hash, unsigned int hashSz, - const unsigned char* keyDer, unsigned int keySz, - int* result, void* ctx); -WOLFSSL_API void wolfSSL_CTX_SetEccVerifyCb(WOLFSSL_CTX*, CallbackEccVerify); -WOLFSSL_API void wolfSSL_SetEccVerifyCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetEccVerifyCtx(WOLFSSL* ssl); - -typedef int (*CallbackEccSharedSecret)(WOLFSSL* ssl, struct ecc_key* otherKey, - unsigned char* pubKeyDer, word32* pubKeySz, - unsigned char* out, word32* outlen, - int side, void* ctx); /* side is WOLFSSL_CLIENT_END or WOLFSSL_SERVER_END */ -WOLFSSL_API void wolfSSL_CTX_SetEccSharedSecretCb(WOLFSSL_CTX*, CallbackEccSharedSecret); -WOLFSSL_API void wolfSSL_SetEccSharedSecretCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetEccSharedSecretCtx(WOLFSSL* ssl); -#endif - -#ifndef NO_DH -/* Public DH Key Callback support */ -struct DhKey; -typedef int (*CallbackDhAgree)(WOLFSSL* ssl, struct DhKey* key, - const unsigned char* priv, unsigned int privSz, - const unsigned char* otherPubKeyDer, unsigned int otherPubKeySz, - unsigned char* out, unsigned int* outlen, - void* ctx); -WOLFSSL_API void wolfSSL_CTX_SetDhAgreeCb(WOLFSSL_CTX*, CallbackDhAgree); -WOLFSSL_API void wolfSSL_SetDhAgreeCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl); -#endif /* !NO_DH */ - -#ifdef HAVE_ED25519 -struct ed25519_key; -typedef int (*CallbackEd25519Sign)(WOLFSSL* ssl, - const unsigned char* in, unsigned int inSz, - unsigned char* out, unsigned int* outSz, - const unsigned char* keyDer, unsigned int keySz, - void* ctx); -WOLFSSL_API void wolfSSL_CTX_SetEd25519SignCb(WOLFSSL_CTX*, - CallbackEd25519Sign); -WOLFSSL_API void wolfSSL_SetEd25519SignCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetEd25519SignCtx(WOLFSSL* ssl); - -typedef int (*CallbackEd25519Verify)(WOLFSSL* ssl, - const unsigned char* sig, unsigned int sigSz, - const unsigned char* msg, unsigned int msgSz, - const unsigned char* keyDer, unsigned int keySz, - int* result, void* ctx); -WOLFSSL_API void wolfSSL_CTX_SetEd25519VerifyCb(WOLFSSL_CTX*, - CallbackEd25519Verify); -WOLFSSL_API void wolfSSL_SetEd25519VerifyCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetEd25519VerifyCtx(WOLFSSL* ssl); -#endif - -#ifdef HAVE_CURVE25519 -struct curve25519_key; - -typedef int (*CallbackX25519KeyGen)(WOLFSSL* ssl, struct curve25519_key* key, - unsigned int keySz, void* ctx); -WOLFSSL_API void wolfSSL_CTX_SetX25519KeyGenCb(WOLFSSL_CTX*, CallbackX25519KeyGen); -WOLFSSL_API void wolfSSL_SetX25519KeyGenCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetX25519KeyGenCtx(WOLFSSL* ssl); - -typedef int (*CallbackX25519SharedSecret)(WOLFSSL* ssl, - struct curve25519_key* otherKey, - unsigned char* pubKeyDer, unsigned int* pubKeySz, - unsigned char* out, unsigned int* outlen, - int side, void* ctx); - /* side is WOLFSSL_CLIENT_END or WOLFSSL_SERVER_END */ -WOLFSSL_API void wolfSSL_CTX_SetX25519SharedSecretCb(WOLFSSL_CTX*, - CallbackX25519SharedSecret); -WOLFSSL_API void wolfSSL_SetX25519SharedSecretCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetX25519SharedSecretCtx(WOLFSSL* ssl); -#endif - -#ifdef HAVE_ED448 -struct ed448_key; -typedef int (*CallbackEd448Sign)(WOLFSSL* ssl, - const unsigned char* in, unsigned int inSz, - unsigned char* out, unsigned int* outSz, - const unsigned char* keyDer, unsigned int keySz, - void* ctx); -WOLFSSL_API void wolfSSL_CTX_SetEd448SignCb(WOLFSSL_CTX*, - CallbackEd448Sign); -WOLFSSL_API void wolfSSL_SetEd448SignCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetEd448SignCtx(WOLFSSL* ssl); - -typedef int (*CallbackEd448Verify)(WOLFSSL* ssl, - const unsigned char* sig, unsigned int sigSz, - const unsigned char* msg, unsigned int msgSz, - const unsigned char* keyDer, unsigned int keySz, - int* result, void* ctx); -WOLFSSL_API void wolfSSL_CTX_SetEd448VerifyCb(WOLFSSL_CTX*, - CallbackEd448Verify); -WOLFSSL_API void wolfSSL_SetEd448VerifyCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetEd448VerifyCtx(WOLFSSL* ssl); -#endif - -#ifdef HAVE_CURVE448 -struct curve448_key; - -typedef int (*CallbackX448KeyGen)(WOLFSSL* ssl, struct curve448_key* key, - unsigned int keySz, void* ctx); -WOLFSSL_API void wolfSSL_CTX_SetX448KeyGenCb(WOLFSSL_CTX*, CallbackX448KeyGen); -WOLFSSL_API void wolfSSL_SetX448KeyGenCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetX448KeyGenCtx(WOLFSSL* ssl); - -typedef int (*CallbackX448SharedSecret)(WOLFSSL* ssl, - struct curve448_key* otherKey, - unsigned char* pubKeyDer, unsigned int* pubKeySz, - unsigned char* out, unsigned int* outlen, - int side, void* ctx); - /* side is WOLFSSL_CLIENT_END or WOLFSSL_SERVER_END */ -WOLFSSL_API void wolfSSL_CTX_SetX448SharedSecretCb(WOLFSSL_CTX*, - CallbackX448SharedSecret); -WOLFSSL_API void wolfSSL_SetX448SharedSecretCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetX448SharedSecretCtx(WOLFSSL* ssl); -#endif - -#ifndef NO_RSA -typedef int (*CallbackRsaSign)(WOLFSSL* ssl, - const unsigned char* in, unsigned int inSz, - unsigned char* out, unsigned int* outSz, - const unsigned char* keyDer, unsigned int keySz, - void* ctx); -WOLFSSL_API void wolfSSL_CTX_SetRsaSignCb(WOLFSSL_CTX*, CallbackRsaSign); -WOLFSSL_API void wolfSSL_SetRsaSignCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetRsaSignCtx(WOLFSSL* ssl); - -typedef int (*CallbackRsaVerify)(WOLFSSL* ssl, - unsigned char* sig, unsigned int sigSz, - unsigned char** out, - const unsigned char* keyDer, unsigned int keySz, - void* ctx); -WOLFSSL_API void wolfSSL_CTX_SetRsaVerifyCb(WOLFSSL_CTX*, CallbackRsaVerify); -WOLFSSL_API void wolfSSL_CTX_SetRsaSignCheckCb(WOLFSSL_CTX*, CallbackRsaVerify); -WOLFSSL_API void wolfSSL_SetRsaVerifyCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetRsaVerifyCtx(WOLFSSL* ssl); - -#ifdef WC_RSA_PSS -typedef int (*CallbackRsaPssSign)(WOLFSSL* ssl, - const unsigned char* in, unsigned int inSz, - unsigned char* out, unsigned int* outSz, - int hash, int mgf, - const unsigned char* keyDer, unsigned int keySz, - void* ctx); -WOLFSSL_API void wolfSSL_CTX_SetRsaPssSignCb(WOLFSSL_CTX*, CallbackRsaPssSign); -WOLFSSL_API void wolfSSL_SetRsaPssSignCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetRsaPssSignCtx(WOLFSSL* ssl); - -typedef int (*CallbackRsaPssVerify)(WOLFSSL* ssl, - unsigned char* sig, unsigned int sigSz, - unsigned char** out, - int hash, int mgf, - const unsigned char* keyDer, unsigned int keySz, - void* ctx); -WOLFSSL_API void wolfSSL_CTX_SetRsaPssVerifyCb(WOLFSSL_CTX*, - CallbackRsaPssVerify); -WOLFSSL_API void wolfSSL_CTX_SetRsaPssSignCheckCb(WOLFSSL_CTX*, - CallbackRsaPssVerify); -WOLFSSL_API void wolfSSL_SetRsaPssVerifyCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetRsaPssVerifyCtx(WOLFSSL* ssl); -#endif - -/* RSA Public Encrypt cb */ -typedef int (*CallbackRsaEnc)(WOLFSSL* ssl, - const unsigned char* in, unsigned int inSz, - unsigned char* out, unsigned int* outSz, - const unsigned char* keyDer, unsigned int keySz, - void* ctx); -WOLFSSL_API void wolfSSL_CTX_SetRsaEncCb(WOLFSSL_CTX*, CallbackRsaEnc); -WOLFSSL_API void wolfSSL_SetRsaEncCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetRsaEncCtx(WOLFSSL* ssl); - -/* RSA Private Decrypt cb */ -typedef int (*CallbackRsaDec)(WOLFSSL* ssl, - unsigned char* in, unsigned int inSz, - unsigned char** out, - const unsigned char* keyDer, unsigned int keySz, - void* ctx); -WOLFSSL_API void wolfSSL_CTX_SetRsaDecCb(WOLFSSL_CTX*, CallbackRsaDec); -WOLFSSL_API void wolfSSL_SetRsaDecCtx(WOLFSSL* ssl, void *ctx); -WOLFSSL_API void* wolfSSL_GetRsaDecCtx(WOLFSSL* ssl); -#endif -#endif /* HAVE_PK_CALLBACKS */ - -#ifndef NO_CERTS - WOLFSSL_API void wolfSSL_CTX_SetCACb(WOLFSSL_CTX*, CallbackCACache); - - WOLFSSL_API WOLFSSL_CERT_MANAGER* wolfSSL_CTX_GetCertManager(WOLFSSL_CTX*); - - WOLFSSL_API WOLFSSL_CERT_MANAGER* wolfSSL_CertManagerNew_ex(void* heap); - WOLFSSL_API WOLFSSL_CERT_MANAGER* wolfSSL_CertManagerNew(void); - WOLFSSL_API void wolfSSL_CertManagerFree(WOLFSSL_CERT_MANAGER*); - - WOLFSSL_API int wolfSSL_CertManagerLoadCA(WOLFSSL_CERT_MANAGER*, const char* f, - const char* d); - WOLFSSL_API int wolfSSL_CertManagerLoadCABuffer(WOLFSSL_CERT_MANAGER*, - const unsigned char* in, long sz, int format); - WOLFSSL_API int wolfSSL_CertManagerUnloadCAs(WOLFSSL_CERT_MANAGER* cm); -#ifdef WOLFSSL_TRUST_PEER_CERT - WOLFSSL_API int wolfSSL_CertManagerUnload_trust_peers(WOLFSSL_CERT_MANAGER* cm); -#endif - WOLFSSL_API int wolfSSL_CertManagerVerify(WOLFSSL_CERT_MANAGER*, const char* f, - int format); - WOLFSSL_API int wolfSSL_CertManagerVerifyBuffer(WOLFSSL_CERT_MANAGER* cm, - const unsigned char* buff, long sz, int format); - WOLFSSL_API int wolfSSL_CertManagerCheckCRL(WOLFSSL_CERT_MANAGER*, - unsigned char*, int sz); - WOLFSSL_API int wolfSSL_CertManagerEnableCRL(WOLFSSL_CERT_MANAGER*, - int options); - WOLFSSL_API int wolfSSL_CertManagerDisableCRL(WOLFSSL_CERT_MANAGER*); - WOLFSSL_API void wolfSSL_CertManagerSetVerify(WOLFSSL_CERT_MANAGER* cm, - VerifyCallback vc); - WOLFSSL_API int wolfSSL_CertManagerLoadCRL(WOLFSSL_CERT_MANAGER*, - const char*, int, int); - WOLFSSL_API int wolfSSL_CertManagerLoadCRLBuffer(WOLFSSL_CERT_MANAGER*, - const unsigned char*, long sz, int); - WOLFSSL_API int wolfSSL_CertManagerSetCRL_Cb(WOLFSSL_CERT_MANAGER*, - CbMissingCRL); - WOLFSSL_API int wolfSSL_CertManagerFreeCRL(WOLFSSL_CERT_MANAGER *); -#ifdef HAVE_CRL_IO - WOLFSSL_API int wolfSSL_CertManagerSetCRL_IOCb(WOLFSSL_CERT_MANAGER*, - CbCrlIO); -#endif -#if defined(HAVE_OCSP) - WOLFSSL_API int wolfSSL_CertManagerCheckOCSPResponse(WOLFSSL_CERT_MANAGER *, - byte *response, int responseSz, WOLFSSL_BUFFER_INFO *responseBuffer, - CertStatus *status, OcspEntry *entry, OcspRequest *ocspRequest); -#endif - WOLFSSL_API int wolfSSL_CertManagerCheckOCSP(WOLFSSL_CERT_MANAGER*, - unsigned char*, int sz); - WOLFSSL_API int wolfSSL_CertManagerEnableOCSP(WOLFSSL_CERT_MANAGER*, - int options); - WOLFSSL_API int wolfSSL_CertManagerDisableOCSP(WOLFSSL_CERT_MANAGER*); - WOLFSSL_API int wolfSSL_CertManagerSetOCSPOverrideURL(WOLFSSL_CERT_MANAGER*, - const char*); - WOLFSSL_API int wolfSSL_CertManagerSetOCSP_Cb(WOLFSSL_CERT_MANAGER*, - CbOCSPIO, CbOCSPRespFree, void*); - - WOLFSSL_API int wolfSSL_CertManagerEnableOCSPStapling( - WOLFSSL_CERT_MANAGER* cm); - WOLFSSL_API int wolfSSL_CertManagerDisableOCSPStapling( - WOLFSSL_CERT_MANAGER* cm); -#if defined(OPENSSL_EXTRA) && defined(WOLFSSL_SIGNER_DER_CERT) && !defined(NO_FILESYSTEM) -WOLFSSL_API WOLFSSL_STACK* wolfSSL_CertManagerGetCerts(WOLFSSL_CERT_MANAGER* cm); -#endif - WOLFSSL_API int wolfSSL_EnableCRL(WOLFSSL* ssl, int options); - WOLFSSL_API int wolfSSL_DisableCRL(WOLFSSL* ssl); - WOLFSSL_API int wolfSSL_LoadCRL(WOLFSSL*, const char*, int, int); - WOLFSSL_API int wolfSSL_LoadCRLBuffer(WOLFSSL*, - const unsigned char*, long sz, int); - WOLFSSL_API int wolfSSL_SetCRL_Cb(WOLFSSL*, CbMissingCRL); -#ifdef HAVE_CRL_IO - WOLFSSL_API int wolfSSL_SetCRL_IOCb(WOLFSSL* ssl, CbCrlIO cb); -#endif - WOLFSSL_API int wolfSSL_EnableOCSP(WOLFSSL*, int options); - WOLFSSL_API int wolfSSL_DisableOCSP(WOLFSSL*); - WOLFSSL_API int wolfSSL_SetOCSP_OverrideURL(WOLFSSL*, const char*); - WOLFSSL_API int wolfSSL_SetOCSP_Cb(WOLFSSL*, CbOCSPIO, CbOCSPRespFree, void*); - WOLFSSL_API int wolfSSL_EnableOCSPStapling(WOLFSSL*); - WOLFSSL_API int wolfSSL_DisableOCSPStapling(WOLFSSL*); - - WOLFSSL_API int wolfSSL_CTX_EnableCRL(WOLFSSL_CTX* ctx, int options); - WOLFSSL_API int wolfSSL_CTX_DisableCRL(WOLFSSL_CTX* ctx); - WOLFSSL_API int wolfSSL_CTX_LoadCRL(WOLFSSL_CTX*, const char*, int, int); - WOLFSSL_API int wolfSSL_CTX_LoadCRLBuffer(WOLFSSL_CTX*, - const unsigned char*, long sz, int); - WOLFSSL_API int wolfSSL_CTX_SetCRL_Cb(WOLFSSL_CTX*, CbMissingCRL); -#ifdef HAVE_CRL_IO - WOLFSSL_API int wolfSSL_CTX_SetCRL_IOCb(WOLFSSL_CTX*, CbCrlIO); -#endif - - WOLFSSL_API int wolfSSL_CTX_EnableOCSP(WOLFSSL_CTX*, int options); - WOLFSSL_API int wolfSSL_CTX_DisableOCSP(WOLFSSL_CTX*); - WOLFSSL_API int wolfSSL_CTX_SetOCSP_OverrideURL(WOLFSSL_CTX*, const char*); - WOLFSSL_API int wolfSSL_CTX_SetOCSP_Cb(WOLFSSL_CTX*, - CbOCSPIO, CbOCSPRespFree, void*); - WOLFSSL_API int wolfSSL_CTX_EnableOCSPStapling(WOLFSSL_CTX*); - WOLFSSL_API int wolfSSL_CTX_DisableOCSPStapling(WOLFSSL_CTX*); -#endif /* !NO_CERTS */ - - -#ifdef SINGLE_THREADED - WOLFSSL_API int wolfSSL_CTX_new_rng(WOLFSSL_CTX*); -#endif - -/* end of handshake frees temporary arrays, if user needs for get_keys or - psk hints, call KeepArrays before handshake and then FreeArrays when done - if don't want to wait for object free */ -WOLFSSL_API void wolfSSL_KeepArrays(WOLFSSL*); -WOLFSSL_API void wolfSSL_FreeArrays(WOLFSSL*); - -WOLFSSL_API int wolfSSL_KeepHandshakeResources(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_FreeHandshakeResources(WOLFSSL* ssl); - -WOLFSSL_API int wolfSSL_CTX_UseClientSuites(WOLFSSL_CTX* ctx); -WOLFSSL_API int wolfSSL_UseClientSuites(WOLFSSL* ssl); - -/* async additions */ -#define wolfSSL_UseAsync wolfSSL_SetDevId -#define wolfSSL_CTX_UseAsync wolfSSL_CTX_SetDevId -WOLFSSL_ABI WOLFSSL_API int wolfSSL_SetDevId(WOLFSSL*, int devId); -WOLFSSL_ABI WOLFSSL_API int wolfSSL_CTX_SetDevId(WOLFSSL_CTX*, int devId); - -/* helpers to get device id and heap */ -WOLFSSL_ABI WOLFSSL_API int wolfSSL_CTX_GetDevId(WOLFSSL_CTX*, WOLFSSL*); -WOLFSSL_API void* wolfSSL_CTX_GetHeap(WOLFSSL_CTX* ctx, WOLFSSL* ssl); - -/* TLS Extensions */ - -/* Server Name Indication */ -#ifdef HAVE_SNI - -/* SNI types */ -enum { - WOLFSSL_SNI_HOST_NAME = 0 -}; - -WOLFSSL_ABI WOLFSSL_API int wolfSSL_UseSNI(WOLFSSL*, unsigned char, - const void*, unsigned short); -WOLFSSL_ABI WOLFSSL_API int wolfSSL_CTX_UseSNI(WOLFSSL_CTX*, unsigned char, - const void*, unsigned short); - -#ifndef NO_WOLFSSL_SERVER - -/* SNI options */ -enum { - /* Do not abort the handshake if the requested SNI didn't match. */ - WOLFSSL_SNI_CONTINUE_ON_MISMATCH = 0x01, - - /* Behave as if the requested SNI matched in a case of mismatch. */ - /* In this case, the status will be set to WOLFSSL_SNI_FAKE_MATCH. */ - WOLFSSL_SNI_ANSWER_ON_MISMATCH = 0x02, - - /* Abort the handshake if the client didn't send a SNI request. */ - WOLFSSL_SNI_ABORT_ON_ABSENCE = 0x04, -}; - -WOLFSSL_API void wolfSSL_SNI_SetOptions(WOLFSSL* ssl, unsigned char type, - unsigned char options); -WOLFSSL_API void wolfSSL_CTX_SNI_SetOptions(WOLFSSL_CTX* ctx, - unsigned char type, unsigned char options); -WOLFSSL_API int wolfSSL_SNI_GetFromBuffer( - const unsigned char* clientHello, unsigned int helloSz, - unsigned char type, unsigned char* sni, unsigned int* inOutSz); - -#endif /* NO_WOLFSSL_SERVER */ - -/* SNI status */ -enum { - WOLFSSL_SNI_NO_MATCH = 0, - WOLFSSL_SNI_FAKE_MATCH = 1, /**< @see WOLFSSL_SNI_ANSWER_ON_MISMATCH */ - WOLFSSL_SNI_REAL_MATCH = 2, - WOLFSSL_SNI_FORCE_KEEP = 3 /** Used with -DWOLFSSL_ALWAYS_KEEP_SNI */ -}; - -WOLFSSL_API unsigned char wolfSSL_SNI_Status(WOLFSSL* ssl, unsigned char type); - -WOLFSSL_API unsigned short wolfSSL_SNI_GetRequest(WOLFSSL *ssl, - unsigned char type, void** data); - -#endif /* HAVE_SNI */ - -/* Trusted CA Key Indication - RFC 6066 (Section 6) */ -#ifdef HAVE_TRUSTED_CA - -/* TCA Identifier Type */ -enum { - WOLFSSL_TRUSTED_CA_PRE_AGREED = 0, - WOLFSSL_TRUSTED_CA_KEY_SHA1 = 1, - WOLFSSL_TRUSTED_CA_X509_NAME = 2, - WOLFSSL_TRUSTED_CA_CERT_SHA1 = 3 -}; - -WOLFSSL_API int wolfSSL_UseTrustedCA(WOLFSSL* ssl, unsigned char type, - const unsigned char* certId, unsigned int certIdSz); -#endif /* HAVE_TRUSTED_CA */ - -/* Application-Layer Protocol Negotiation */ -#ifdef HAVE_ALPN - -/* ALPN status code */ -enum { - WOLFSSL_ALPN_NO_MATCH = 0, - WOLFSSL_ALPN_MATCH = 1, - WOLFSSL_ALPN_CONTINUE_ON_MISMATCH = 2, - WOLFSSL_ALPN_FAILED_ON_MISMATCH = 4, -}; - -enum { - WOLFSSL_MAX_ALPN_PROTO_NAME_LEN = 255, - WOLFSSL_MAX_ALPN_NUMBER = 257 -}; - -#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) -typedef int (*CallbackALPNSelect)(WOLFSSL* ssl, const unsigned char** out, - unsigned char* outLen, const unsigned char* in, unsigned int inLen, - void *arg); -#endif - -WOLFSSL_ABI WOLFSSL_API int wolfSSL_UseALPN(WOLFSSL* ssl, - char *protocol_name_list, - unsigned int protocol_name_listSz, - unsigned char options); - -WOLFSSL_API int wolfSSL_ALPN_GetProtocol(WOLFSSL* ssl, char **protocol_name, - unsigned short *size); - -WOLFSSL_API int wolfSSL_ALPN_GetPeerProtocol(WOLFSSL* ssl, char **list, - unsigned short *listSz); -WOLFSSL_API int wolfSSL_ALPN_FreePeerProtocol(WOLFSSL* ssl, char **list); -#endif /* HAVE_ALPN */ - -/* Maximum Fragment Length */ -#ifdef HAVE_MAX_FRAGMENT - -/* Fragment lengths */ -enum { - WOLFSSL_MFL_2_9 = 1, /* 512 bytes */ - WOLFSSL_MFL_2_10 = 2, /* 1024 bytes */ - WOLFSSL_MFL_2_11 = 3, /* 2048 bytes */ - WOLFSSL_MFL_2_12 = 4, /* 4096 bytes */ - WOLFSSL_MFL_2_13 = 5, /* 8192 bytes *//* wolfSSL ONLY!!! */ - WOLFSSL_MFL_2_8 = 6, /* 256 bytes *//* wolfSSL ONLY!!! */ - WOLFSSL_MFL_MIN = WOLFSSL_MFL_2_9, - WOLFSSL_MFL_MAX = WOLFSSL_MFL_2_8, -}; - -#ifndef NO_WOLFSSL_CLIENT - -WOLFSSL_API int wolfSSL_UseMaxFragment(WOLFSSL* ssl, unsigned char mfl); -WOLFSSL_API int wolfSSL_CTX_UseMaxFragment(WOLFSSL_CTX* ctx, unsigned char mfl); - -#endif -#endif /* HAVE_MAX_FRAGMENT */ - -/* Truncated HMAC */ -#ifdef HAVE_TRUNCATED_HMAC -#ifndef NO_WOLFSSL_CLIENT - -WOLFSSL_API int wolfSSL_UseTruncatedHMAC(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_CTX_UseTruncatedHMAC(WOLFSSL_CTX* ctx); - -#endif -#endif - -/* Certificate Status Request */ -/* Certificate Status Type */ -enum { - WOLFSSL_CSR_OCSP = 1 -}; - -/* Certificate Status Options (flags) */ -enum { - WOLFSSL_CSR_OCSP_USE_NONCE = 0x01 -}; - -#ifdef HAVE_CERTIFICATE_STATUS_REQUEST -#ifndef NO_WOLFSSL_CLIENT - -WOLFSSL_API int wolfSSL_UseOCSPStapling(WOLFSSL* ssl, - unsigned char status_type, unsigned char options); - -WOLFSSL_API int wolfSSL_CTX_UseOCSPStapling(WOLFSSL_CTX* ctx, - unsigned char status_type, unsigned char options); - -#endif -#endif - -/* Certificate Status Request v2 */ -/* Certificate Status Type */ -enum { - WOLFSSL_CSR2_OCSP = 1, - WOLFSSL_CSR2_OCSP_MULTI = 2 -}; - -/* Certificate Status v2 Options (flags) */ -enum { - WOLFSSL_CSR2_OCSP_USE_NONCE = 0x01 -}; - -#ifdef HAVE_CERTIFICATE_STATUS_REQUEST_V2 -#ifndef NO_WOLFSSL_CLIENT - -WOLFSSL_API int wolfSSL_UseOCSPStaplingV2(WOLFSSL* ssl, - unsigned char status_type, unsigned char options); - -WOLFSSL_API int wolfSSL_CTX_UseOCSPStaplingV2(WOLFSSL_CTX* ctx, - unsigned char status_type, unsigned char options); - -#endif -#endif - -/* Named Groups */ -enum { -#if 0 /* Not Supported */ - WOLFSSL_ECC_SECT163K1 = 1, - WOLFSSL_ECC_SECT163R1 = 2, - WOLFSSL_ECC_SECT163R2 = 3, - WOLFSSL_ECC_SECT193R1 = 4, - WOLFSSL_ECC_SECT193R2 = 5, - WOLFSSL_ECC_SECT233K1 = 6, - WOLFSSL_ECC_SECT233R1 = 7, - WOLFSSL_ECC_SECT239K1 = 8, - WOLFSSL_ECC_SECT283K1 = 9, - WOLFSSL_ECC_SECT283R1 = 10, - WOLFSSL_ECC_SECT409K1 = 11, - WOLFSSL_ECC_SECT409R1 = 12, - WOLFSSL_ECC_SECT571K1 = 13, - WOLFSSL_ECC_SECT571R1 = 14, -#endif - WOLFSSL_ECC_SECP160K1 = 15, - WOLFSSL_ECC_SECP160R1 = 16, - WOLFSSL_ECC_SECP160R2 = 17, - WOLFSSL_ECC_SECP192K1 = 18, - WOLFSSL_ECC_SECP192R1 = 19, - WOLFSSL_ECC_SECP224K1 = 20, - WOLFSSL_ECC_SECP224R1 = 21, - WOLFSSL_ECC_SECP256K1 = 22, - WOLFSSL_ECC_SECP256R1 = 23, - WOLFSSL_ECC_SECP384R1 = 24, - WOLFSSL_ECC_SECP521R1 = 25, - WOLFSSL_ECC_BRAINPOOLP256R1 = 26, - WOLFSSL_ECC_BRAINPOOLP384R1 = 27, - WOLFSSL_ECC_BRAINPOOLP512R1 = 28, - WOLFSSL_ECC_X25519 = 29, - WOLFSSL_ECC_X448 = 30, - - WOLFSSL_FFDHE_2048 = 256, - WOLFSSL_FFDHE_3072 = 257, - WOLFSSL_FFDHE_4096 = 258, - WOLFSSL_FFDHE_6144 = 259, - WOLFSSL_FFDHE_8192 = 260, -}; - -enum { - WOLFSSL_EC_PF_UNCOMPRESSED = 0, -#if 0 /* Not Supported */ - WOLFSSL_EC_PF_X962_COMP_PRIME = 1, - WOLFSSL_EC_PF_X962_COMP_CHAR2 = 2, -#endif -}; - -#ifdef HAVE_SUPPORTED_CURVES -#ifndef NO_WOLFSSL_CLIENT - -WOLFSSL_API int wolfSSL_UseSupportedCurve(WOLFSSL* ssl, word16 name); -WOLFSSL_API int wolfSSL_CTX_UseSupportedCurve(WOLFSSL_CTX* ctx, - word16 name); - -#endif -#endif - -#ifdef WOLFSSL_TLS13 -WOLFSSL_API int wolfSSL_UseKeyShare(WOLFSSL* ssl, word16 group); -WOLFSSL_API int wolfSSL_NoKeyShares(WOLFSSL* ssl); -#endif - - -/* Secure Renegotiation */ -#ifdef HAVE_SECURE_RENEGOTIATION - -WOLFSSL_API int wolfSSL_UseSecureRenegotiation(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_CTX_UseSecureRenegotiation(WOLFSSL_CTX* ctx); -WOLFSSL_API int wolfSSL_StartSecureRenegotiation(WOLFSSL* ssl, int resume); -WOLFSSL_API int wolfSSL_Rehandshake(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_SecureResume(WOLFSSL* ssl); -WOLFSSL_API long wolfSSL_SSL_get_secure_renegotiation_support(WOLFSSL* ssl); - -#endif - -/* Session Ticket */ -#ifdef HAVE_SESSION_TICKET - -#ifndef NO_WOLFSSL_CLIENT -WOLFSSL_API int wolfSSL_UseSessionTicket(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_CTX_UseSessionTicket(WOLFSSL_CTX* ctx); -WOLFSSL_API int wolfSSL_get_SessionTicket(WOLFSSL*, unsigned char*, word32*); -WOLFSSL_API int wolfSSL_set_SessionTicket(WOLFSSL*, const unsigned char*, word32); -typedef int (*CallbackSessionTicket)(WOLFSSL*, const unsigned char*, int, void*); -WOLFSSL_API int wolfSSL_set_SessionTicket_cb(WOLFSSL*, - CallbackSessionTicket, void*); -#endif /* NO_WOLFSSL_CLIENT */ - - -#define WOLFSSL_TICKET_NAME_SZ 16 -#define WOLFSSL_TICKET_IV_SZ 16 -#define WOLFSSL_TICKET_MAC_SZ 32 - -enum TicketEncRet { - WOLFSSL_TICKET_RET_FATAL = -1, /* fatal error, don't use ticket */ - WOLFSSL_TICKET_RET_OK = 0, /* ok, use ticket */ - WOLFSSL_TICKET_RET_REJECT, /* don't use ticket, but not fatal */ - WOLFSSL_TICKET_RET_CREATE /* existing ticket ok and create new one */ -}; - -#ifndef NO_WOLFSSL_SERVER - -typedef int (*SessionTicketEncCb)(WOLFSSL*, - unsigned char key_name[WOLFSSL_TICKET_NAME_SZ], - unsigned char iv[WOLFSSL_TICKET_IV_SZ], - unsigned char mac[WOLFSSL_TICKET_MAC_SZ], - int enc, unsigned char*, int, int*, void*); -WOLFSSL_API int wolfSSL_CTX_set_TicketEncCb(WOLFSSL_CTX* ctx, - SessionTicketEncCb); -WOLFSSL_API int wolfSSL_CTX_set_TicketHint(WOLFSSL_CTX* ctx, int); -WOLFSSL_API int wolfSSL_CTX_set_TicketEncCtx(WOLFSSL_CTX* ctx, void*); - -#endif /* NO_WOLFSSL_SERVER */ - -#endif /* HAVE_SESSION_TICKET */ - -#ifdef HAVE_QSH -/* Quantum-safe Crypto Schemes */ -enum { - WOLFSSL_NTRU_EESS439 = 0x0101, /* max plaintext length of 65 */ - WOLFSSL_NTRU_EESS593 = 0x0102, /* max plaintext length of 86 */ - WOLFSSL_NTRU_EESS743 = 0x0103, /* max plaintext length of 106 */ - WOLFSSL_LWE_XXX = 0x0201, /* Learning With Error encryption scheme */ - WOLFSSL_HFE_XXX = 0x0301, /* Hidden Field Equation scheme */ - WOLFSSL_NULL_QSH = 0xFFFF /* QSHScheme is not used */ -}; - - -/* test if the connection is using a QSH secure connection return 1 if so */ -WOLFSSL_API int wolfSSL_isQSH(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_UseSupportedQSH(WOLFSSL* ssl, unsigned short name); -#ifndef NO_WOLFSSL_CLIENT - /* user control over sending client public key in hello - when flag = 1 will send keys if flag is 0 or function is not called - then will not send keys in the hello extension */ - WOLFSSL_API int wolfSSL_UseClientQSHKeys(WOLFSSL* ssl, unsigned char flag); -#endif - -#endif /* QSH */ - -/* TLS Extended Master Secret Extension */ -WOLFSSL_API int wolfSSL_DisableExtendedMasterSecret(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_CTX_DisableExtendedMasterSecret(WOLFSSL_CTX* ctx); - - -#define WOLFSSL_CRL_MONITOR 0x01 /* monitor this dir flag */ -#define WOLFSSL_CRL_START_MON 0x02 /* start monitoring flag */ - - -/* notify user the handshake is done */ -typedef int (*HandShakeDoneCb)(WOLFSSL*, void*); -WOLFSSL_API int wolfSSL_SetHsDoneCb(WOLFSSL*, HandShakeDoneCb, void*); - - -WOLFSSL_API int wolfSSL_PrintSessionStats(void); -WOLFSSL_API int wolfSSL_get_session_stats(unsigned int* active, - unsigned int* total, - unsigned int* peak, - unsigned int* maxSessions); -/* External facing KDF */ -WOLFSSL_API -int wolfSSL_MakeTlsMasterSecret(unsigned char* ms, word32 msLen, - const unsigned char* pms, word32 pmsLen, - const unsigned char* cr, const unsigned char* sr, - int tls1_2, int hash_type); - -WOLFSSL_API -int wolfSSL_MakeTlsExtendedMasterSecret(unsigned char* ms, word32 msLen, - const unsigned char* pms, word32 pmsLen, - const unsigned char* sHash, word32 sHashLen, - int tls1_2, int hash_type); - -WOLFSSL_API -int wolfSSL_DeriveTlsKeys(unsigned char* key_data, word32 keyLen, - const unsigned char* ms, word32 msLen, - const unsigned char* sr, const unsigned char* cr, - int tls1_2, int hash_type); - -#ifdef WOLFSSL_CALLBACKS - -typedef int (*HandShakeCallBack)(HandShakeInfo*); -typedef int (*TimeoutCallBack)(TimeoutInfo*); - -/* wolfSSL connect extension allowing HandShakeCallBack and/or TimeoutCallBack - for diagnostics */ -WOLFSSL_API int wolfSSL_connect_ex(WOLFSSL*, HandShakeCallBack, TimeoutCallBack, - WOLFSSL_TIMEVAL); -WOLFSSL_API int wolfSSL_accept_ex(WOLFSSL*, HandShakeCallBack, TimeoutCallBack, - WOLFSSL_TIMEVAL); - -#endif /* WOLFSSL_CALLBACKS */ - - -#ifdef WOLFSSL_HAVE_WOLFSCEP - WOLFSSL_API void wolfSSL_wolfSCEP(void); -#endif /* WOLFSSL_HAVE_WOLFSCEP */ - -#ifdef WOLFSSL_HAVE_CERT_SERVICE - WOLFSSL_API void wolfSSL_cert_service(void); -#endif - -#if defined(OPENSSL_ALL) || defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) -/* Smaller subset of X509 compatibility functions. Avoid increasing the size of - * this subset and its memory usage */ - -#include <wolfssl/openssl/asn1.h> -struct WOLFSSL_X509_NAME_ENTRY { - WOLFSSL_ASN1_OBJECT object; /* static object just for keeping grp, type */ - WOLFSSL_ASN1_STRING data; - WOLFSSL_ASN1_STRING* value; /* points to data, for lighttpd port */ - int nid; /* i.e. ASN_COMMON_NAME */ - int set; - int size; -}; - -WOLFSSL_API int wolfSSL_X509_NAME_get_index_by_OBJ(WOLFSSL_X509_NAME *name, - const WOLFSSL_ASN1_OBJECT *obj, - int idx); - -#endif /* OPENSSL_ALL || OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ - - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_ALL) - -enum { - WOLFSSL_SYS_ACCEPT = 0, - WOLFSSL_SYS_BIND, - WOLFSSL_SYS_CONNECT, - WOLFSSL_SYS_FOPEN, - WOLFSSL_SYS_FREAD, - WOLFSSL_SYS_GETADDRINFO, - WOLFSSL_SYS_GETSOCKOPT, - WOLFSSL_SYS_GETSOCKNAME, - WOLFSSL_SYS_GETHOSTBYNAME, - WOLFSSL_SYS_GETNAMEINFO, - WOLFSSL_SYS_GETSERVBYNAME, - WOLFSSL_SYS_IOCTLSOCKET, - WOLFSSL_SYS_LISTEN, - WOLFSSL_SYS_OPENDIR, - WOLFSSL_SYS_SETSOCKOPT, - WOLFSSL_SYS_SOCKET -}; - -/* Object functions */ -WOLFSSL_API const char* wolfSSL_OBJ_nid2sn(int n); -WOLFSSL_API int wolfSSL_OBJ_obj2nid(const WOLFSSL_ASN1_OBJECT *o); -WOLFSSL_API int wolfSSL_OBJ_get_type(const WOLFSSL_ASN1_OBJECT *o); -WOLFSSL_API int wolfSSL_OBJ_sn2nid(const char *sn); - -WOLFSSL_API const char* wolfSSL_OBJ_nid2ln(int n); -WOLFSSL_API int wolfSSL_OBJ_ln2nid(const char *ln); -WOLFSSL_API int wolfSSL_OBJ_cmp(const WOLFSSL_ASN1_OBJECT* a, - const WOLFSSL_ASN1_OBJECT* b); -WOLFSSL_API int wolfSSL_OBJ_txt2nid(const char *sn); -WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_OBJ_txt2obj(const char* s, int no_name); - -WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_OBJ_nid2obj(int n); -WOLFSSL_LOCAL WOLFSSL_ASN1_OBJECT* wolfSSL_OBJ_nid2obj_ex(int n, WOLFSSL_ASN1_OBJECT *arg_obj); -WOLFSSL_API int wolfSSL_OBJ_obj2txt(char *buf, int buf_len, WOLFSSL_ASN1_OBJECT *a, int no_name); - -WOLFSSL_API void wolfSSL_OBJ_cleanup(void); -WOLFSSL_API int wolfSSL_OBJ_create(const char *oid, const char *sn, const char *ln); -#ifdef HAVE_ECC -WOLFSSL_LOCAL int NIDToEccEnum(int n); -#endif -/* end of object functions */ - -WOLFSSL_API unsigned long wolfSSL_ERR_peek_last_error_line(const char **file, int *line); -WOLFSSL_API long wolfSSL_ctrl(WOLFSSL* ssl, int cmd, long opt, void* pt); -WOLFSSL_API long wolfSSL_CTX_ctrl(WOLFSSL_CTX* ctx, int cmd, long opt,void* pt); -WOLFSSL_API long wolfSSL_CTX_callback_ctrl(WOLFSSL_CTX* ctx, int cmd, void (*fp)(void)); -WOLFSSL_API long wolfSSL_CTX_clear_extra_chain_certs(WOLFSSL_CTX* ctx); - -#ifndef NO_CERTS -WOLFSSL_API WOLFSSL_X509_NAME_ENTRY* wolfSSL_X509_NAME_ENTRY_create_by_NID( - WOLFSSL_X509_NAME_ENTRY** out, int nid, int type, - const unsigned char* data, int dataSz); -WOLFSSL_API WOLFSSL_X509_NAME_ENTRY* wolfSSL_X509_NAME_ENTRY_create_by_txt( - WOLFSSL_X509_NAME_ENTRY **neIn, const char *txt, int format, - const unsigned char *data, int dataSz); -WOLFSSL_API int wolfSSL_X509_NAME_add_entry(WOLFSSL_X509_NAME* name, - WOLFSSL_X509_NAME_ENTRY* entry, int idx, int set); -WOLFSSL_API int wolfSSL_X509_NAME_add_entry_by_txt(WOLFSSL_X509_NAME *name, - const char *field, int type, const unsigned char *bytes, int len, int loc, - int set); -WOLFSSL_API int wolfSSL_X509_NAME_add_entry_by_NID(WOLFSSL_X509_NAME *name, int nid, - int type, const unsigned char *bytes, - int len, int loc, int set); -WOLFSSL_API int wolfSSL_X509_NAME_cmp(const WOLFSSL_X509_NAME* x, - const WOLFSSL_X509_NAME* y); -WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_NAME_new(void); -WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_dup(WOLFSSL_X509*); -WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_NAME_dup(WOLFSSL_X509_NAME*); -WOLFSSL_API int wolfSSL_check_private_key(const WOLFSSL* ssl); -WOLFSSL_API void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, - int nid, int* c, int* idx); -WOLFSSL_API int wolfSSL_X509_get_ext_count(const WOLFSSL_X509* passedCert); -WOLFSSL_API int wolfSSL_X509_get_ext_by_NID(const WOLFSSL_X509 *x, int nid, int lastpos); -WOLFSSL_API int wolfSSL_X509_add_ext(WOLFSSL_X509 *x, WOLFSSL_X509_EXTENSION *ex, int loc); -WOLFSSL_API WOLFSSL_X509_EXTENSION* wolfSSL_X509V3_EXT_conf_nid( - WOLF_LHASH_OF(CONF_VALUE)* conf, WOLFSSL_X509V3_CTX* ctx, int nid, - char* value); -WOLFSSL_API void wolfSSL_X509V3_set_ctx(WOLFSSL_X509V3_CTX* ctx, - WOLFSSL_X509* issuer, WOLFSSL_X509* subject, WOLFSSL_X509* req, - WOLFSSL_X509_CRL* crl, int flag); -WOLFSSL_API void wolfSSL_X509V3_set_ctx_nodb(WOLFSSL_X509V3_CTX* ctx); -WOLFSSL_API int wolfSSL_X509_digest(const WOLFSSL_X509* x509, - const WOLFSSL_EVP_MD* digest, unsigned char* buf, unsigned int* len); -WOLFSSL_API int wolfSSL_use_certificate(WOLFSSL* ssl, WOLFSSL_X509* x509); -WOLFSSL_API int wolfSSL_use_PrivateKey(WOLFSSL* ssl, WOLFSSL_EVP_PKEY* pkey); -WOLFSSL_API int wolfSSL_use_PrivateKey_ASN1(int pri, WOLFSSL* ssl, - const unsigned char* der, long derSz); -WOLFSSL_API WOLFSSL_EVP_PKEY *wolfSSL_get_privatekey(const WOLFSSL *ssl); -#ifndef NO_RSA -WOLFSSL_API int wolfSSL_use_RSAPrivateKey_ASN1(WOLFSSL* ssl, unsigned char* der, - long derSz); -#endif -WOLFSSL_API int wolfSSL_CTX_use_PrivateKey_ASN1(int pri, WOLFSSL_CTX* ctx, - unsigned char* der, long derSz); - -#if defined(WOLFSSL_QT) || defined(OPENSSL_ALL) -WOLFSSL_API int wolfSSL_X509_cmp(const WOLFSSL_X509* a, const WOLFSSL_X509* b); -WOLFSSL_API WOLFSSL_X509_EXTENSION* wolfSSL_X509_get_ext(const WOLFSSL_X509* x, int loc); -WOLFSSL_API WOLFSSL_X509_EXTENSION* wolfSSL_X509_set_ext(WOLFSSL_X509* x, int loc); -WOLFSSL_API int wolfSSL_X509_EXTENSION_get_critical(const WOLFSSL_X509_EXTENSION* ex); -WOLFSSL_API WOLFSSL_X509_EXTENSION* wolfSSL_X509_EXTENSION_new(void); -WOLFSSL_API int wolfSSL_sk_X509_EXTENSION_push(WOLFSSL_STACK* sk, - WOLFSSL_X509_EXTENSION* ext); -WOLFSSL_API void wolfSSL_sk_X509_EXTENSION_free(WOLFSSL_STACK* sk); -WOLFSSL_API void wolfSSL_X509_EXTENSION_free(WOLFSSL_X509_EXTENSION* ext_to_free); -WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_new_x509_ext(void); -#endif - -WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_X509_EXTENSION_get_object(WOLFSSL_X509_EXTENSION* ext); -WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_X509_EXTENSION_get_data(WOLFSSL_X509_EXTENSION* ext); -#endif /* NO_CERTS */ - -WOLFSSL_API WOLFSSL_DH *wolfSSL_DSA_dup_DH(const WOLFSSL_DSA *r); - -WOLFSSL_API int wolfSSL_SESSION_get_master_key(const WOLFSSL_SESSION* ses, - unsigned char* out, int outSz); -WOLFSSL_API int wolfSSL_SESSION_get_master_key_length(const WOLFSSL_SESSION* ses); - -WOLFSSL_API void wolfSSL_CTX_set_cert_store(WOLFSSL_CTX* ctx, - WOLFSSL_X509_STORE* str); -WOLFSSL_API int wolfSSL_i2d_X509_bio(WOLFSSL_BIO* bio, WOLFSSL_X509* x509); -#if !defined(NO_FILESYSTEM) -WOLFSSL_API WOLFSSL_X509* wolfSSL_d2i_X509_fp(XFILE fp, - WOLFSSL_X509** x509); -WOLFSSL_API WOLFSSL_STACK* wolfSSL_X509_STORE_GetCerts(WOLFSSL_X509_STORE_CTX* s); -#endif -WOLFSSL_API WOLFSSL_X509* wolfSSL_d2i_X509_bio(WOLFSSL_BIO* bio, - WOLFSSL_X509** x509); -WOLFSSL_API WOLFSSL_X509_STORE* wolfSSL_CTX_get_cert_store(WOLFSSL_CTX* ctx); - -WOLFSSL_API size_t wolfSSL_BIO_wpending(const WOLFSSL_BIO *bio); -WOLFSSL_API size_t wolfSSL_BIO_ctrl_pending(WOLFSSL_BIO *b); - -WOLFSSL_API size_t wolfSSL_get_server_random(const WOLFSSL *ssl, - unsigned char *out, size_t outlen); -WOLFSSL_API int wolfSSL_get_server_tmp_key(const WOLFSSL*, WOLFSSL_EVP_PKEY**); - -WOLFSSL_API int wolfSSL_CTX_set_min_proto_version(WOLFSSL_CTX*, int); -WOLFSSL_API int wolfSSL_CTX_set_max_proto_version(WOLFSSL_CTX*, int); - -WOLFSSL_API size_t wolfSSL_get_client_random(const WOLFSSL* ssl, - unsigned char* out, size_t outSz); -WOLFSSL_API int wolfSSL_CTX_use_PrivateKey(WOLFSSL_CTX *ctx, WOLFSSL_EVP_PKEY *pkey); -WOLFSSL_API WOLFSSL_X509 *wolfSSL_PEM_read_bio_X509(WOLFSSL_BIO *bp, WOLFSSL_X509 **x, pem_password_cb *cb, void *u); -WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_PEM_read_bio_X509_CRL(WOLFSSL_BIO *bp, - WOLFSSL_X509_CRL **x, pem_password_cb *cb, void *u); -WOLFSSL_API WOLFSSL_X509 *wolfSSL_PEM_read_bio_X509_AUX - (WOLFSSL_BIO *bp, WOLFSSL_X509 **x, pem_password_cb *cb, void *u); -WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_INFO)* wolfSSL_PEM_X509_INFO_read_bio( - WOLFSSL_BIO* bio, WOLF_STACK_OF(WOLFSSL_X509_INFO)* sk, - pem_password_cb* cb, void* u); -#ifndef NO_FILESYSTEM -WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_PEM_read_X509_CRL(XFILE fp, - WOLFSSL_X509_CRL **x, pem_password_cb *cb, void *u); -#endif -WOLFSSL_API int wolfSSL_PEM_get_EVP_CIPHER_INFO(char* header, - EncryptedInfo* cipher); -WOLFSSL_API int wolfSSL_PEM_do_header(EncryptedInfo* cipher, - unsigned char* data, long* len, - pem_password_cb* callback, void* ctx); - -/*lighttp compatibility */ - -struct WOLFSSL_ASN1_BIT_STRING { - int length; - int type; - byte* data; - long flags; -}; - - -#if defined(OPENSSL_EXTRA) \ - || defined(OPENSSL_ALL) \ - || defined(HAVE_LIGHTY) \ - || defined(WOLFSSL_MYSQL_COMPATIBLE) \ - || defined(HAVE_STUNNEL) \ - || defined(WOLFSSL_NGINX) \ - || defined(WOLFSSL_HAPROXY) -WOLFSSL_API void wolfSSL_X509_NAME_ENTRY_free(WOLFSSL_X509_NAME_ENTRY* ne); -WOLFSSL_API WOLFSSL_X509_NAME_ENTRY* wolfSSL_X509_NAME_ENTRY_new(void); -WOLFSSL_API void wolfSSL_X509_NAME_free(WOLFSSL_X509_NAME* name); -WOLFSSL_API char wolfSSL_CTX_use_certificate(WOLFSSL_CTX*, WOLFSSL_X509*); -WOLFSSL_API int wolfSSL_CTX_add1_chain_cert(WOLFSSL_CTX*, WOLFSSL_X509*); -WOLFSSL_API int wolfSSL_BIO_read_filename(WOLFSSL_BIO *b, const char *name); -/* These are to be merged shortly */ -WOLFSSL_API void wolfSSL_set_verify_depth(WOLFSSL *ssl,int depth); -WOLFSSL_API void* wolfSSL_get_app_data( const WOLFSSL *ssl); -WOLFSSL_API int wolfSSL_set_app_data(WOLFSSL *ssl, void *arg); -WOLFSSL_API WOLFSSL_ASN1_OBJECT * wolfSSL_X509_NAME_ENTRY_get_object(WOLFSSL_X509_NAME_ENTRY *ne); -WOLFSSL_API WOLFSSL_X509_NAME_ENTRY *wolfSSL_X509_NAME_get_entry(WOLFSSL_X509_NAME *name, int loc); -WOLFSSL_API unsigned char *wolfSSL_SHA1(const unsigned char *d, size_t n, unsigned char *md); -WOLFSSL_API unsigned char *wolfSSL_SHA256(const unsigned char *d, size_t n, unsigned char *md); -WOLFSSL_API unsigned char *wolfSSL_SHA384(const unsigned char *d, size_t n, unsigned char *md); -WOLFSSL_API unsigned char *wolfSSL_SHA512(const unsigned char *d, size_t n, unsigned char *md); -WOLFSSL_API int wolfSSL_X509_check_private_key(WOLFSSL_X509*, WOLFSSL_EVP_PKEY*); -WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME) *wolfSSL_dup_CA_list( WOLF_STACK_OF(WOLFSSL_X509_NAME) *sk ); -WOLFSSL_API int wolfSSL_X509_check_ca(WOLFSSL_X509 *x509); - -#ifndef NO_FILESYSTEM -WOLFSSL_API long wolfSSL_BIO_set_fp(WOLFSSL_BIO *bio, XFILE fp, int c); -WOLFSSL_API long wolfSSL_BIO_get_fp(WOLFSSL_BIO *bio, XFILE* fp); -WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new_fp(XFILE fp, int c); -#endif - -#endif /* OPENSSL_EXTRA || OPENSSL_ALL || HAVE_LIGHTY || WOLFSSL_MYSQL_COMPATIBLE || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY */ - -#endif /* OPENSSL_EXTRA || OPENSSL_ALL */ - - -#if defined(OPENSSL_ALL) \ - || defined(HAVE_STUNNEL) \ - || defined(HAVE_LIGHTY) \ - || defined(WOLFSSL_MYSQL_COMPATIBLE) \ - || defined(WOLFSSL_HAPROXY) \ - || defined(OPENSSL_EXTRA) - -WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new_file(const char *filename, const char *mode); -WOLFSSL_API long wolfSSL_CTX_set_tmp_dh(WOLFSSL_CTX*, WOLFSSL_DH*); -WOLFSSL_API WOLFSSL_DH *wolfSSL_PEM_read_bio_DHparams(WOLFSSL_BIO *bp, - WOLFSSL_DH **x, pem_password_cb *cb, void *u); -WOLFSSL_API WOLFSSL_DSA *wolfSSL_PEM_read_bio_DSAparams(WOLFSSL_BIO *bp, - WOLFSSL_DSA **x, pem_password_cb *cb, void *u); -WOLFSSL_API int wolfSSL_PEM_write_bio_X509_REQ(WOLFSSL_BIO *bp,WOLFSSL_X509 *x); -WOLFSSL_API int wolfSSL_PEM_write_bio_X509_AUX(WOLFSSL_BIO *bp,WOLFSSL_X509 *x); -WOLFSSL_API int wolfSSL_PEM_write_bio_X509(WOLFSSL_BIO *bp, WOLFSSL_X509 *x); -#endif /* HAVE_STUNNEL || HAVE_LIGHTY */ - -#if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) && defined(WOLFSSL_CERT_GEN) && \ - defined(WOLFSSL_CERT_REQ) -WOLFSSL_API int wolfSSL_i2d_X509_REQ(WOLFSSL_X509* req, unsigned char** out); -WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_REQ_new(void); -WOLFSSL_API void wolfSSL_X509_REQ_free(WOLFSSL_X509* req); -WOLFSSL_API int wolfSSL_X509_REQ_sign(WOLFSSL_X509 *req, WOLFSSL_EVP_PKEY *pkey, - const WOLFSSL_EVP_MD *md); -WOLFSSL_API int wolfSSL_X509_REQ_add_extensions(WOLFSSL_X509* req, - WOLF_STACK_OF(WOLFSSL_X509_EXTENSION)* ext); -WOLFSSL_API int wolfSSL_X509_REQ_set_subject_name(WOLFSSL_X509 *req, - WOLFSSL_X509_NAME *name); -WOLFSSL_API int wolfSSL_X509_REQ_set_pubkey(WOLFSSL_X509 *req, - WOLFSSL_EVP_PKEY *pkey); -#endif - - -#if defined(OPENSSL_ALL) \ - || defined(HAVE_STUNNEL) \ - || defined(WOLFSSL_NGINX) \ - || defined(WOLFSSL_HAPROXY) \ - || defined(OPENSSL_EXTRA) \ - || defined(HAVE_LIGHTY) - -#include <wolfssl/openssl/crypto.h> - -/* SNI received callback type */ -typedef int (*CallbackSniRecv)(WOLFSSL *ssl, int *ret, void* exArg); - -WOLFSSL_API int wolfSSL_CRYPTO_set_mem_ex_functions(void *(*m) (size_t, const char *, int), - void *(*r) (void *, size_t, const char *, int), void (*f) (void *)); - -WOLFSSL_API void wolfSSL_CRYPTO_cleanup_all_ex_data(void); - -WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_DH_768_prime(WOLFSSL_BIGNUM* bn); -WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_DH_1024_prime(WOLFSSL_BIGNUM* bn); -WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_DH_1536_prime(WOLFSSL_BIGNUM* bn); -WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_DH_2048_prime(WOLFSSL_BIGNUM* bn); -WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_DH_3072_prime(WOLFSSL_BIGNUM* bn); -WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_DH_4096_prime(WOLFSSL_BIGNUM* bn); -WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_DH_6144_prime(WOLFSSL_BIGNUM* bn); -WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_DH_8192_prime(WOLFSSL_BIGNUM* bn); - -WOLFSSL_API WOLFSSL_DH *wolfSSL_DH_generate_parameters(int prime_len, int generator, - void (*callback) (int, int, void *), void *cb_arg); - -WOLFSSL_API int wolfSSL_DH_generate_parameters_ex(WOLFSSL_DH*, int, int, - void (*callback) (int, int, void *)); - -WOLFSSL_API void wolfSSL_ERR_load_crypto_strings(void); - -WOLFSSL_API unsigned long wolfSSL_ERR_peek_last_error(void); - -WOLFSSL_API int wolfSSL_FIPS_mode(void); - -WOLFSSL_API int wolfSSL_FIPS_mode_set(int r); - -WOLFSSL_API int wolfSSL_RAND_set_rand_method(const void *meth); - -WOLFSSL_API int wolfSSL_CIPHER_get_bits(const WOLFSSL_CIPHER *c, int *alg_bits); - -WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_X509_new(void); -WOLFSSL_API int wolfSSL_sk_X509_num(const WOLF_STACK_OF(WOLFSSL_X509) *s); - -WOLFSSL_API WOLFSSL_X509_INFO *wolfSSL_X509_INFO_new(void); -WOLFSSL_API void wolfSSL_X509_INFO_free(WOLFSSL_X509_INFO* info); - -WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_X509_INFO_new_null(void); -WOLFSSL_API int wolfSSL_sk_X509_INFO_num(const WOLF_STACK_OF(WOLFSSL_X509_INFO)*); -WOLFSSL_API WOLFSSL_X509_INFO* wolfSSL_sk_X509_INFO_value( - const WOLF_STACK_OF(WOLFSSL_X509_INFO)*, int); -WOLFSSL_API int wolfSSL_sk_X509_INFO_push(WOLF_STACK_OF(WOLFSSL_X509_INFO)*, - WOLFSSL_X509_INFO*); -WOLFSSL_API WOLFSSL_X509_INFO* wolfSSL_sk_X509_INFO_pop(WOLF_STACK_OF(WOLFSSL_X509_INFO)*); -WOLFSSL_API void wolfSSL_sk_X509_INFO_pop_free(WOLF_STACK_OF(WOLFSSL_X509_INFO)*, - void (*f) (WOLFSSL_X509_INFO*)); -WOLFSSL_API void wolfSSL_sk_X509_INFO_free(WOLF_STACK_OF(WOLFSSL_X509_INFO)*); - -typedef int (*wolf_sk_compare_cb)(const void* const *a, - const void* const *b); -WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME)* wolfSSL_sk_X509_NAME_new( - wolf_sk_compare_cb); -WOLFSSL_API int wolfSSL_sk_X509_NAME_push(WOLF_STACK_OF(WOLFSSL_X509_NAME)*, - WOLFSSL_X509_NAME*); -WOLFSSL_API int wolfSSL_sk_X509_NAME_find(const WOLF_STACK_OF(WOLFSSL_X509_NAME)*, - WOLFSSL_X509_NAME*); -WOLFSSL_API int wolfSSL_sk_X509_NAME_set_cmp_func( - WOLF_STACK_OF(WOLFSSL_X509_NAME)*, wolf_sk_compare_cb); -WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_sk_X509_NAME_value(const WOLF_STACK_OF(WOLFSSL_X509_NAME)*, int); -WOLFSSL_API int wolfSSL_sk_X509_NAME_num(const WOLF_STACK_OF(WOLFSSL_X509_NAME)*); -WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_sk_X509_NAME_pop(WOLF_STACK_OF(WOLFSSL_X509_NAME)*); -WOLFSSL_API void wolfSSL_sk_X509_NAME_pop_free(WOLF_STACK_OF(WOLFSSL_X509_NAME)*, - void (*f) (WOLFSSL_X509_NAME*)); -WOLFSSL_API void wolfSSL_sk_X509_NAME_free(WOLF_STACK_OF(WOLFSSL_X509_NAME) *); - -WOLFSSL_API int wolfSSL_sk_X509_OBJECT_num(const WOLF_STACK_OF(WOLFSSL_X509_OBJECT) *s); - -WOLFSSL_API int wolfSSL_X509_NAME_print_ex(WOLFSSL_BIO*,WOLFSSL_X509_NAME*,int, - unsigned long); - -WOLFSSL_API WOLFSSL_ASN1_BIT_STRING* wolfSSL_ASN1_BIT_STRING_new(void); -WOLFSSL_API void wolfSSL_ASN1_BIT_STRING_free(WOLFSSL_ASN1_BIT_STRING*); -WOLFSSL_API WOLFSSL_ASN1_BIT_STRING* wolfSSL_X509_get0_pubkey_bitstr( - const WOLFSSL_X509*); -WOLFSSL_API int wolfSSL_ASN1_BIT_STRING_get_bit( - const WOLFSSL_ASN1_BIT_STRING*, int); -WOLFSSL_API int wolfSSL_ASN1_BIT_STRING_set_bit( - WOLFSSL_ASN1_BIT_STRING*, int, int); - -WOLFSSL_API int wolfSSL_CTX_add_session(WOLFSSL_CTX*, WOLFSSL_SESSION*); - -WOLFSSL_API int wolfSSL_version(WOLFSSL*); - -WOLFSSL_API int wolfSSL_get_state(const WOLFSSL*); - -WOLFSSL_API WOLFSSL_X509* wolfSSL_sk_X509_value(WOLF_STACK_OF(WOLFSSL_X509)*, int); - -WOLFSSL_API WOLFSSL_X509* wolfSSL_sk_X509_shift(WOLF_STACK_OF(WOLFSSL_X509)*); - -WOLFSSL_API void* wolfSSL_sk_X509_OBJECT_value(WOLF_STACK_OF(WOLFSSL_X509_OBJECT)*, int); - -WOLFSSL_API void* wolfSSL_SESSION_get_ex_data(const WOLFSSL_SESSION*, int); - -WOLFSSL_API int wolfSSL_SESSION_set_ex_data(WOLFSSL_SESSION*, int, void*); - -WOLFSSL_API int wolfSSL_SESSION_get_ex_new_index(long,void*,void*,void*, - CRYPTO_free_func*); - -WOLFSSL_API int wolfSSL_X509_NAME_get_sz(WOLFSSL_X509_NAME*); - - -WOLFSSL_API const unsigned char* wolfSSL_SESSION_get_id(WOLFSSL_SESSION*, - unsigned int*); - -WOLFSSL_API int wolfSSL_SESSION_print(WOLFSSL_BIO*, const WOLFSSL_SESSION*); - -WOLFSSL_API int wolfSSL_set_tlsext_host_name(WOLFSSL *, const char *); - -WOLFSSL_API const char* wolfSSL_get_servername(WOLFSSL *, unsigned char); - -WOLFSSL_API WOLFSSL_CTX* wolfSSL_set_SSL_CTX(WOLFSSL*,WOLFSSL_CTX*); - -WOLFSSL_API VerifyCallback wolfSSL_CTX_get_verify_callback(WOLFSSL_CTX*); - -WOLFSSL_API VerifyCallback wolfSSL_get_verify_callback(WOLFSSL*); - -WOLFSSL_API void wolfSSL_CTX_set_servername_callback(WOLFSSL_CTX *, - CallbackSniRecv); -WOLFSSL_API int wolfSSL_CTX_set_tlsext_servername_callback(WOLFSSL_CTX *, - CallbackSniRecv); - -WOLFSSL_API int wolfSSL_CTX_set_servername_arg(WOLFSSL_CTX *, void*); - -WOLFSSL_API void wolfSSL_ERR_remove_thread_state(void*); - -/* support for deprecated old name */ -#define WOLFSSL_ERR_remove_thread_state wolfSSL_ERR_remove_thread_state - -#ifndef NO_FILESYSTEM -WOLFSSL_API void wolfSSL_print_all_errors_fp(XFILE fp); -#endif - -WOLFSSL_API void wolfSSL_THREADID_set_callback(void (*threadid_func)(void*)); - -WOLFSSL_API void wolfSSL_THREADID_set_numeric(void* id, unsigned long val); - -WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_X509_STORE_get1_certs( - WOLFSSL_X509_STORE_CTX*, WOLFSSL_X509_NAME*); -WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_OBJECT)* - wolfSSL_X509_STORE_get0_objects(WOLFSSL_X509_STORE *); -WOLFSSL_API WOLFSSL_X509_OBJECT* - wolfSSL_sk_X509_OBJECT_delete(WOLF_STACK_OF(WOLFSSL_X509_OBJECT)* sk, int i); -WOLFSSL_API void wolfSSL_X509_OBJECT_free(WOLFSSL_X509_OBJECT *a); - -WOLFSSL_API void wolfSSL_sk_X509_pop_free(WOLF_STACK_OF(WOLFSSL_X509)* sk, void (*f) (WOLFSSL_X509*)); -#endif /* OPENSSL_ALL || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || HAVE_LIGHTY */ - -#if defined(OPENSSL_EXTRA) && defined(HAVE_ECC) -WOLFSSL_API int wolfSSL_CTX_set1_curves_list(WOLFSSL_CTX* ctx, const char* names); -WOLFSSL_API int wolfSSL_set1_curves_list(WOLFSSL* ssl, const char* names); -#endif /* OPENSSL_EXTRA && HAVE_ECC */ - -#if defined(OPENSSL_ALL) || \ - defined(HAVE_STUNNEL) || defined(WOLFSSL_MYSQL_COMPATIBLE) || \ - defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) - -WOLFSSL_API int wolfSSL_CTX_get_verify_mode(WOLFSSL_CTX* ctx); - -#endif - -#ifdef WOLFSSL_JNI -WOLFSSL_API int wolfSSL_set_jobject(WOLFSSL* ssl, void* objPtr); -WOLFSSL_API void* wolfSSL_get_jobject(WOLFSSL* ssl); -#endif /* WOLFSSL_JNI */ - - -#ifdef WOLFSSL_ASYNC_CRYPT -WOLFSSL_API int wolfSSL_AsyncPoll(WOLFSSL* ssl, WOLF_EVENT_FLAG flags); -WOLFSSL_API int wolfSSL_CTX_AsyncPoll(WOLFSSL_CTX* ctx, WOLF_EVENT** events, int maxEvents, - WOLF_EVENT_FLAG flags, int* eventCount); -#endif /* WOLFSSL_ASYNC_CRYPT */ - -#ifdef OPENSSL_EXTRA -typedef void (*SSL_Msg_Cb)(int write_p, int version, int content_type, - const void *buf, size_t len, WOLFSSL *ssl, void *arg); - -WOLFSSL_API int wolfSSL_CTX_set_msg_callback(WOLFSSL_CTX *ctx, SSL_Msg_Cb cb); -WOLFSSL_API int wolfSSL_set_msg_callback(WOLFSSL *ssl, SSL_Msg_Cb cb); -WOLFSSL_API int wolfSSL_CTX_set_msg_callback_arg(WOLFSSL_CTX *ctx, void* arg); -WOLFSSL_API int wolfSSL_set_msg_callback_arg(WOLFSSL *ssl, void* arg); -WOLFSSL_API unsigned long wolfSSL_ERR_peek_error_line_data(const char **file, - int *line, const char **data, int *flags); -WOLFSSL_API int wolfSSL_CTX_set_alpn_protos(WOLFSSL_CTX *ctx, - const unsigned char *protos, unsigned int protos_len); -WOLFSSL_API int wolfSSL_set_alpn_protos(WOLFSSL* ssl, - const unsigned char* protos, unsigned int protos_len); -WOLFSSL_API void *wolfSSL_OPENSSL_memdup(const void *data, - size_t siz, const char* file, int line); -WOLFSSL_API void wolfSSL_ERR_load_BIO_strings(void); -#endif - -#if defined(OPENSSL_ALL) \ - || defined(WOLFSSL_NGINX) \ - || defined(WOLFSSL_HAPROXY) \ - || defined(OPENSSL_EXTRA) -WOLFSSL_API void wolfSSL_OPENSSL_config(char *config_name); -#endif - -#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) -/* Not an OpenSSL API. */ -WOLFSSL_LOCAL int wolfSSL_get_ocsp_response(WOLFSSL* ssl, byte** response); -/* Not an OpenSSL API. */ -WOLFSSL_LOCAL char* wolfSSL_get_ocsp_url(WOLFSSL* ssl); -/* Not an OpenSSL API. */ -WOLFSSL_API int wolfSSL_set_ocsp_url(WOLFSSL* ssl, char* url); -#endif - -#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) \ - || defined(OPENSSL_EXTRA) || defined(HAVE_LIGHTY) -WOLFSSL_API WOLF_STACK_OF(WOLFSSL_CIPHER) *wolfSSL_get_ciphers_compat(const WOLFSSL *ssl); -WOLFSSL_API int wolfSSL_X509_get_ex_new_index(int idx, void *arg, void *a, - void *b, void *c); -WOLFSSL_API void *wolfSSL_X509_get_ex_data(WOLFSSL_X509 *x509, int idx); -WOLFSSL_API int wolfSSL_X509_set_ex_data(WOLFSSL_X509 *x509, int idx, - void *data); -WOLFSSL_API int wolfSSL_X509_NAME_digest(const WOLFSSL_X509_NAME *data, - const WOLFSSL_EVP_MD *type, unsigned char *md, unsigned int *len); - -WOLFSSL_API long wolfSSL_SSL_CTX_get_timeout(const WOLFSSL_CTX *ctx); -WOLFSSL_API long wolfSSL_get_timeout(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_SSL_CTX_set_tmp_ecdh(WOLFSSL_CTX *ctx, - WOLFSSL_EC_KEY *ecdh); -WOLFSSL_API int wolfSSL_SSL_CTX_remove_session(WOLFSSL_CTX *, - WOLFSSL_SESSION *c); - -WOLFSSL_API WOLFSSL_BIO *wolfSSL_SSL_get_rbio(const WOLFSSL *s); -WOLFSSL_API WOLFSSL_BIO *wolfSSL_SSL_get_wbio(const WOLFSSL *s); -WOLFSSL_API int wolfSSL_SSL_do_handshake(WOLFSSL *s); -WOLFSSL_API int wolfSSL_SSL_in_init(WOLFSSL*); -WOLFSSL_API int wolfSSL_SSL_in_connect_init(WOLFSSL*); - -#ifndef NO_SESSION_CACHE - WOLFSSL_API WOLFSSL_SESSION *wolfSSL_SSL_get0_session(const WOLFSSL *s); -#endif -WOLFSSL_API int wolfSSL_X509_check_host(WOLFSSL_X509 *x, const char *chk, - size_t chklen, unsigned int flags, char **peername); - -WOLFSSL_API int wolfSSL_i2a_ASN1_INTEGER(WOLFSSL_BIO *bp, - const WOLFSSL_ASN1_INTEGER *a); - -#ifdef HAVE_SESSION_TICKET -WOLFSSL_API int wolfSSL_CTX_set_tlsext_ticket_key_cb(WOLFSSL_CTX *, int (*)( - WOLFSSL *ssl, unsigned char *name, unsigned char *iv, - WOLFSSL_EVP_CIPHER_CTX *ectx, WOLFSSL_HMAC_CTX *hctx, int enc)); -#endif - -#if defined(HAVE_OCSP) || defined(OPENSSL_EXTRA) || defined(OPENSSL_ALL) || \ - defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) -WOLFSSL_API int wolfSSL_CTX_get_extra_chain_certs(WOLFSSL_CTX* ctx, - WOLF_STACK_OF(X509)** chain); -WOLFSSL_API int wolfSSL_CTX_set_tlsext_status_cb(WOLFSSL_CTX* ctx, - int(*)(WOLFSSL*, void*)); - -WOLFSSL_API int wolfSSL_X509_STORE_CTX_get1_issuer(WOLFSSL_X509 **issuer, - WOLFSSL_X509_STORE_CTX *ctx, WOLFSSL_X509 *x); - -WOLFSSL_API void wolfSSL_X509_email_free(WOLF_STACK_OF(WOLFSSL_STRING) *sk); -WOLFSSL_API WOLF_STACK_OF(WOLFSSL_STRING) *wolfSSL_X509_get1_ocsp(WOLFSSL_X509 *x); - -WOLFSSL_API int wolfSSL_X509_check_issued(WOLFSSL_X509 *issuer, - WOLFSSL_X509 *subject); - -WOLFSSL_API char* wolfSSL_sk_WOLFSSL_STRING_value( - WOLF_STACK_OF(WOLFSSL_STRING)* strings, int idx); -#endif /* HAVE_OCSP */ - -WOLFSSL_API int PEM_write_bio_WOLFSSL_X509(WOLFSSL_BIO *bio, - WOLFSSL_X509 *cert); - -#endif /* OPENSSL_ALL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || - OPENSSL_EXTRA || HAVE_LIGHTY*/ - -WOLFSSL_API void wolfSSL_get0_alpn_selected(const WOLFSSL *ssl, - const unsigned char **data, unsigned int *len); -WOLFSSL_API int wolfSSL_select_next_proto(unsigned char **out, - unsigned char *outlen, - const unsigned char *in, unsigned int inlen, - const unsigned char *client, - unsigned int client_len); -WOLFSSL_API void wolfSSL_CTX_set_alpn_select_cb(WOLFSSL_CTX *ctx, - int (*cb) (WOLFSSL *ssl, - const unsigned char **out, - unsigned char *outlen, - const unsigned char *in, - unsigned int inlen, - void *arg), void *arg); -WOLFSSL_API void wolfSSL_CTX_set_next_protos_advertised_cb(WOLFSSL_CTX *s, - int (*cb) (WOLFSSL *ssl, - const unsigned char **out, - unsigned int *outlen, - void *arg), void *arg); -WOLFSSL_API void wolfSSL_CTX_set_next_proto_select_cb(WOLFSSL_CTX *s, - int (*cb) (WOLFSSL *ssl, - unsigned char **out, - unsigned char *outlen, - const unsigned char *in, - unsigned int inlen, - void *arg), void *arg); -WOLFSSL_API void wolfSSL_get0_next_proto_negotiated(const WOLFSSL *s, const unsigned char **data, - unsigned *len); - - -#ifdef OPENSSL_EXTRA -#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) -WOLFSSL_API const unsigned char *SSL_SESSION_get0_id_context( - const WOLFSSL_SESSION *sess, unsigned int *sid_ctx_length); -WOLFSSL_API size_t SSL_get_finished(const WOLFSSL *s, void *buf, size_t count); -WOLFSSL_API size_t SSL_get_peer_finished(const WOLFSSL *s, void *buf, size_t count); -#endif - -WOLFSSL_API int SSL_SESSION_set1_id(WOLFSSL_SESSION *s, const unsigned char *sid, unsigned int sid_len); -WOLFSSL_API int SSL_SESSION_set1_id_context(WOLFSSL_SESSION *s, const unsigned char *sid_ctx, unsigned int sid_ctx_len); -WOLFSSL_API WOLFSSL_X509_ALGOR* wolfSSL_X509_ALGOR_new(void); -WOLFSSL_API void wolfSSL_X509_ALGOR_free(WOLFSSL_X509_ALGOR *alg); -WOLFSSL_API const WOLFSSL_X509_ALGOR* wolfSSL_X509_get0_tbs_sigalg(const WOLFSSL_X509 *x); -WOLFSSL_API void wolfSSL_X509_ALGOR_get0(const WOLFSSL_ASN1_OBJECT **paobj, int *pptype, const void **ppval, const WOLFSSL_X509_ALGOR *algor); -WOLFSSL_API int wolfSSL_X509_ALGOR_set0(WOLFSSL_X509_ALGOR *algor, WOLFSSL_ASN1_OBJECT *aobj, int ptype, void *pval); -WOLFSSL_API WOLFSSL_ASN1_TYPE* wolfSSL_ASN1_TYPE_new(void); -WOLFSSL_API void wolfSSL_ASN1_TYPE_free(WOLFSSL_ASN1_TYPE* at); -WOLFSSL_API WOLFSSL_X509_PUBKEY *wolfSSL_X509_PUBKEY_new(void); -WOLFSSL_API void wolfSSL_X509_PUBKEY_free(WOLFSSL_X509_PUBKEY *x); -WOLFSSL_API WOLFSSL_X509_PUBKEY *wolfSSL_X509_get_X509_PUBKEY(const WOLFSSL_X509* x509); -WOLFSSL_API int wolfSSL_X509_PUBKEY_get0_param(WOLFSSL_ASN1_OBJECT **ppkalg, const unsigned char **pk, int *ppklen, WOLFSSL_X509_ALGOR **pa, WOLFSSL_X509_PUBKEY *pub); -WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_X509_PUBKEY_get(WOLFSSL_X509_PUBKEY* key); -WOLFSSL_API int wolfSSL_X509_PUBKEY_set(WOLFSSL_X509_PUBKEY **x, WOLFSSL_EVP_PKEY *key); -WOLFSSL_API int i2t_ASN1_OBJECT(char *buf, int buf_len, WOLFSSL_ASN1_OBJECT *a); -WOLFSSL_API int wolfSSL_i2a_ASN1_OBJECT(WOLFSSL_BIO *bp, WOLFSSL_ASN1_OBJECT *a); -WOLFSSL_API void SSL_CTX_set_tmp_dh_callback(WOLFSSL_CTX *ctx, WOLFSSL_DH *(*dh) (WOLFSSL *ssl, int is_export, int keylength)); -WOLFSSL_API WOLF_STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); -WOLFSSL_API int wolfSSL_X509_STORE_load_locations(WOLFSSL_X509_STORE *str, const char *file, const char *dir); -WOLFSSL_API int wolfSSL_X509_STORE_add_crl(WOLFSSL_X509_STORE *ctx, WOLFSSL_X509_CRL *x); -WOLFSSL_API int wolfSSL_sk_SSL_CIPHER_num(const WOLF_STACK_OF(WOLFSSL_CIPHER)* p); -WOLFSSL_API int wolfSSL_sk_SSL_CIPHER_find( - WOLF_STACK_OF(WOLFSSL_CIPHER)* sk, const WOLFSSL_CIPHER* toFind); -WOLFSSL_API WOLF_STACK_OF(WOLFSSL_CIPHER)* wolfSSL_sk_SSL_CIPHER_dup( - WOLF_STACK_OF(WOLFSSL_CIPHER)* in); -WOLFSSL_API void wolfSSL_sk_SSL_CIPHER_free(WOLF_STACK_OF(WOLFSSL_CIPHER)* sk); -WOLFSSL_API int wolfSSL_sk_SSL_COMP_zero(WOLFSSL_STACK* st); -WOLFSSL_API int wolfSSL_sk_SSL_COMP_num(WOLF_STACK_OF(WOLFSSL_COMP)* sk); -WOLFSSL_API WOLFSSL_CIPHER* wolfSSL_sk_SSL_CIPHER_value(void *ciphers, int idx); -WOLFSSL_API void ERR_load_SSL_strings(void); -WOLFSSL_API void wolfSSL_EC_POINT_dump(const char *msg, const WOLFSSL_EC_POINT *p); - -WOLFSSL_API const char *wolfSSL_ASN1_tag2str(int tag); -WOLFSSL_API int wolfSSL_ASN1_STRING_print_ex(WOLFSSL_BIO *out, WOLFSSL_ASN1_STRING *str, unsigned long flags); -WOLFSSL_API int wolfSSL_ASN1_STRING_print(WOLFSSL_BIO *out, WOLFSSL_ASN1_STRING *str); -WOLFSSL_API int wolfSSL_ASN1_TIME_get_length(WOLFSSL_ASN1_TIME *t); -WOLFSSL_API unsigned char* wolfSSL_ASN1_TIME_get_data(WOLFSSL_ASN1_TIME *t); -WOLFSSL_API WOLFSSL_ASN1_TIME *wolfSSL_ASN1_TIME_to_generalizedtime(WOLFSSL_ASN1_TIME *t, - WOLFSSL_ASN1_TIME **out); -WOLFSSL_API int wolfSSL_i2c_ASN1_INTEGER(WOLFSSL_ASN1_INTEGER *a, unsigned char **pp); -WOLFSSL_API int wolfSSL_X509_CA_num(WOLFSSL_X509_STORE *store); -WOLFSSL_API long wolfSSL_X509_get_version(const WOLFSSL_X509 *x); -WOLFSSL_API int wolfSSL_X509_get_signature_nid(const WOLFSSL_X509* x); - -WOLFSSL_API int wolfSSL_PEM_write_bio_PKCS8PrivateKey(WOLFSSL_BIO* bio, - WOLFSSL_EVP_PKEY* pkey, const WOLFSSL_EVP_CIPHER* enc, char* passwd, - int passwdSz, pem_password_cb* cb, void* ctx); -WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PKCS8PrivateKey_bio(WOLFSSL_BIO* bio, - WOLFSSL_EVP_PKEY** pkey, pem_password_cb* cb, void* u); -WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_AutoPrivateKey( - WOLFSSL_EVP_PKEY** pkey, const unsigned char** data, long length); -WOLFSSL_API unsigned long wolfSSL_X509_subject_name_hash(const WOLFSSL_X509* x509); - - -#endif /* OPENSSL_EXTRA */ - -#ifdef HAVE_PK_CALLBACKS -WOLFSSL_API int wolfSSL_IsPrivatePkSet(WOLFSSL* ssl); -WOLFSSL_API int wolfSSL_CTX_IsPrivatePkSet(WOLFSSL_CTX* ctx); -#endif - -#ifdef HAVE_ENCRYPT_THEN_MAC -WOLFSSL_API int wolfSSL_CTX_AllowEncryptThenMac(WOLFSSL_CTX *, int); -WOLFSSL_API int wolfSSL_AllowEncryptThenMac(WOLFSSL *s, int); -#endif - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* WOLFSSL_SSL_H */ diff --git a/client/wolfssl/wolfssl/test.h b/client/wolfssl/wolfssl/test.h deleted file mode 100644 index 2f133f9..0000000 --- a/client/wolfssl/wolfssl/test.h +++ /dev/null @@ -1,3683 +0,0 @@ -/* test.h */ - -#ifndef wolfSSL_TEST_H -#define wolfSSL_TEST_H - -#include <stdio.h> -#include <stdlib.h> -#include <assert.h> -#include <ctype.h> -#include <wolfssl/wolfcrypt/types.h> -#include <wolfssl/wolfcrypt/error-crypt.h> -#include <wolfssl/wolfcrypt/random.h> -#include <wolfssl/wolfcrypt/mem_track.h> -#if defined(SHOW_CERTS) && \ - (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) - #include <wolfssl/wolfcrypt/asn.h> /* for domain component NID value */ -#endif - -#ifdef ATOMIC_USER - #include <wolfssl/wolfcrypt/aes.h> - #include <wolfssl/wolfcrypt/arc4.h> - #include <wolfssl/wolfcrypt/hmac.h> -#endif -#ifdef HAVE_PK_CALLBACKS - #include <wolfssl/wolfcrypt/asn.h> - #ifndef NO_RSA - #include <wolfssl/wolfcrypt/rsa.h> - #endif - #ifdef HAVE_ECC - #include <wolfssl/wolfcrypt/ecc.h> - #endif /* HAVE_ECC */ - #ifndef NO_DH - #include <wolfssl/wolfcrypt/dh.h> - #endif /* !NO_DH */ - #ifdef HAVE_ED25519 - #include <wolfssl/wolfcrypt/ed25519.h> - #endif /* HAVE_ED25519 */ - #ifdef HAVE_CURVE25519 - #include <wolfssl/wolfcrypt/curve25519.h> - #endif /* HAVE_ECC */ - #ifdef HAVE_ED448 - #include <wolfssl/wolfcrypt/ed448.h> - #endif /* HAVE_ED448 */ - #ifdef HAVE_CURVE448 - #include <wolfssl/wolfcrypt/curve448.h> - #endif /* HAVE_ECC */ -#endif /*HAVE_PK_CALLBACKS */ - -#ifdef USE_WINDOWS_API - #include <winsock2.h> - #include <process.h> - #ifdef TEST_IPV6 /* don't require newer SDK for IPV4 */ - #include <ws2tcpip.h> - #include <wspiapi.h> - #endif - #define SOCKET_T SOCKET - #define SNPRINTF _snprintf -#elif defined(WOLFSSL_MDK_ARM) || defined(WOLFSSL_KEIL_TCP_NET) - #include <string.h> - #include "rl_net.h" - #define SOCKET_T int - typedef int socklen_t ; - #define inet_addr wolfSSL_inet_addr - static unsigned long wolfSSL_inet_addr(const char *cp) - { - unsigned int a[4] ; unsigned long ret ; - sscanf(cp, "%d.%d.%d.%d", &a[0], &a[1], &a[2], &a[3]) ; - ret = ((a[3]<<24) + (a[2]<<16) + (a[1]<<8) + a[0]) ; - return(ret) ; - } - #if defined(HAVE_KEIL_RTX) - #define sleep(t) os_dly_wait(t/1000+1); - #elif defined(WOLFSSL_CMSIS_RTOS) || defined(WOLFSSL_CMSIS_RTOSv2) - #define sleep(t) osDelay(t/1000+1); - #endif -#elif defined(WOLFSSL_TIRTOS) - #include <string.h> - #include <netdb.h> - #include <sys/types.h> - #include <arpa/inet.h> - #include <sys/socket.h> - #include <ti/sysbios/knl/Task.h> - struct hostent { - char *h_name; /* official name of host */ - char **h_aliases; /* alias list */ - int h_addrtype; /* host address type */ - int h_length; /* length of address */ - char **h_addr_list; /* list of addresses from name server */ - }; - #define SOCKET_T int -#elif defined(WOLFSSL_VXWORKS) - #include <hostLib.h> - #include <sockLib.h> - #include <arpa/inet.h> - #include <string.h> - #include <selectLib.h> - #include <sys/types.h> - #include <netinet/in.h> - #include <fcntl.h> - #include <sys/time.h> - #include <netdb.h> - #include <pthread.h> - #define SOCKET_T int -#elif defined(WOLFSSL_ZEPHYR) - #include <string.h> - #include <sys/types.h> - #include <net/socket.h> - #define SOCKET_T int - #define SOL_SOCKET 1 - #define SO_REUSEADDR 201 - #define WOLFSSL_USE_GETADDRINFO - - static unsigned long inet_addr(const char *cp) - { - unsigned int a[4]; unsigned long ret; - int i, j; - for (i=0, j=0; i<4; i++) { - a[i] = 0; - while (cp[j] != '.' && cp[j] != '\0') { - a[i] *= 10; - a[i] += cp[j] - '0'; - j++; - } - } - ret = ((a[3]<<24) + (a[2]<<16) + (a[1]<<8) + a[0]) ; - return(ret) ; - } -#else - #include <string.h> - #include <sys/types.h> -#ifndef WOLFSSL_LEANPSK - #include <unistd.h> - #include <netdb.h> - #include <netinet/in.h> - #include <netinet/tcp.h> - #include <arpa/inet.h> - #include <sys/ioctl.h> - #include <sys/time.h> - #include <sys/socket.h> - #include <pthread.h> - #include <fcntl.h> - #ifdef TEST_IPV6 - #include <netdb.h> - #endif -#endif - #define SOCKET_T int - #ifndef SO_NOSIGPIPE - #include <signal.h> /* ignore SIGPIPE */ - #endif - #define SNPRINTF snprintf -#endif /* USE_WINDOWS_API */ - -#ifdef WOLFSSL_ASYNC_CRYPT - #include <wolfssl/wolfcrypt/async.h> -#endif -#ifdef HAVE_CAVIUM - #include <wolfssl/wolfcrypt/port/cavium/cavium_nitrox.h> -#endif -#ifdef _MSC_VER - /* disable conversion warning */ - /* 4996 warning to use MS extensions e.g., strcpy_s instead of strncpy */ - #pragma warning(disable:4244 4996) -#endif - -#ifndef WOLFSSL_CIPHER_LIST_MAX_SIZE - #define WOLFSSL_CIPHER_LIST_MAX_SIZE 4096 -#endif -/* Buffer for benchmark tests */ -#ifndef TEST_BUFFER_SIZE - #define TEST_BUFFER_SIZE 16384 -#endif - -#ifndef WOLFSSL_HAVE_MIN - #define WOLFSSL_HAVE_MIN - static WC_INLINE word32 min(word32 a, word32 b) - { - return a > b ? b : a; - } -#endif /* WOLFSSL_HAVE_MIN */ - -/* Socket Handling */ -#ifndef WOLFSSL_SOCKET_INVALID -#ifdef USE_WINDOWS_API - #define WOLFSSL_SOCKET_INVALID ((SOCKET_T)INVALID_SOCKET) -#elif defined(WOLFSSL_TIRTOS) - #define WOLFSSL_SOCKET_INVALID ((SOCKET_T)-1) -#else - #define WOLFSSL_SOCKET_INVALID (SOCKET_T)(0) -#endif -#endif /* WOLFSSL_SOCKET_INVALID */ - -#ifndef WOLFSSL_SOCKET_IS_INVALID -#if defined(USE_WINDOWS_API) || defined(WOLFSSL_TIRTOS) - #define WOLFSSL_SOCKET_IS_INVALID(s) ((SOCKET_T)(s) == WOLFSSL_SOCKET_INVALID) -#else - #define WOLFSSL_SOCKET_IS_INVALID(s) ((SOCKET_T)(s) < WOLFSSL_SOCKET_INVALID) -#endif -#endif /* WOLFSSL_SOCKET_IS_INVALID */ - -#if defined(__MACH__) || defined(USE_WINDOWS_API) - #ifndef _SOCKLEN_T - typedef int socklen_t; - #endif -#endif - - -/* HPUX doesn't use socklent_t for third parameter to accept, unless - _XOPEN_SOURCE_EXTENDED is defined */ -#if !defined(__hpux__) && !defined(WOLFSSL_MDK_ARM) && !defined(WOLFSSL_IAR_ARM)\ - && !defined(WOLFSSL_ROWLEY_ARM) && !defined(WOLFSSL_KEIL_TCP_NET) - typedef socklen_t* ACCEPT_THIRD_T; -#else - #if defined _XOPEN_SOURCE_EXTENDED - typedef socklen_t* ACCEPT_THIRD_T; - #else - typedef int* ACCEPT_THIRD_T; - #endif -#endif - - - -#ifdef SINGLE_THREADED - typedef unsigned int THREAD_RETURN; - typedef void* THREAD_TYPE; - #define WOLFSSL_THREAD -#else - #if defined(_POSIX_THREADS) && !defined(__MINGW32__) - typedef void* THREAD_RETURN; - typedef pthread_t THREAD_TYPE; - #define WOLFSSL_THREAD - #define INFINITE -1 - #define WAIT_OBJECT_0 0L - #elif defined(WOLFSSL_MDK_ARM)|| defined(WOLFSSL_KEIL_TCP_NET) - typedef unsigned int THREAD_RETURN; - typedef int THREAD_TYPE; - #define WOLFSSL_THREAD - #elif defined(WOLFSSL_TIRTOS) - typedef void THREAD_RETURN; - typedef Task_Handle THREAD_TYPE; - #define WOLFSSL_THREAD - #elif defined(WOLFSSL_ZEPHYR) - typedef void THREAD_RETURN; - typedef struct k_thread THREAD_TYPE; - #define WOLFSSL_THREAD - #else - typedef unsigned int THREAD_RETURN; - typedef intptr_t THREAD_TYPE; - #define WOLFSSL_THREAD __stdcall - #endif -#endif - - -#ifdef TEST_IPV6 - typedef struct sockaddr_in6 SOCKADDR_IN_T; - #define AF_INET_V AF_INET6 -#else - typedef struct sockaddr_in SOCKADDR_IN_T; - #define AF_INET_V AF_INET -#endif - - -#ifndef WOLFSSL_NO_TLS12 -#define SERVER_DEFAULT_VERSION 3 -#else -#define SERVER_DEFAULT_VERSION 4 -#endif -#define SERVER_DTLS_DEFAULT_VERSION (-2) -#define SERVER_INVALID_VERSION (-99) -#define SERVER_DOWNGRADE_VERSION (-98) -#ifndef WOLFSSL_NO_TLS12 -#define CLIENT_DEFAULT_VERSION 3 -#else -#define CLIENT_DEFAULT_VERSION 4 -#endif -#define CLIENT_DTLS_DEFAULT_VERSION (-2) -#define CLIENT_INVALID_VERSION (-99) -#define CLIENT_DOWNGRADE_VERSION (-98) -#define EITHER_DOWNGRADE_VERSION (-97) -#if !defined(NO_FILESYSTEM) && defined(WOLFSSL_MAX_STRENGTH) - #define DEFAULT_MIN_DHKEY_BITS 2048 - #define DEFAULT_MAX_DHKEY_BITS 3072 -#else - #define DEFAULT_MIN_DHKEY_BITS 1024 - #define DEFAULT_MAX_DHKEY_BITS 2048 -#endif -#if !defined(NO_FILESYSTEM) && defined(WOLFSSL_MAX_STRENGTH) - #define DEFAULT_MIN_RSAKEY_BITS 2048 -#else - #define DEFAULT_MIN_RSAKEY_BITS 1024 -#endif -#if !defined(NO_FILESYSTEM) && defined(WOLFSSL_MAX_STRENGTH) - #define DEFAULT_MIN_ECCKEY_BITS 256 -#else - #define DEFAULT_MIN_ECCKEY_BITS 224 -#endif - -/* all certs relative to wolfSSL home directory now */ -#if defined(WOLFSSL_NO_CURRDIR) || defined(WOLFSSL_MDK_SHELL) -#define caCertFile "certs/ca-cert.pem" -#define eccCertFile "certs/server-ecc.pem" -#define eccKeyFile "certs/ecc-key.pem" -#define eccRsaCertFile "certs/server-ecc-rsa.pem" -#define svrCertFile "certs/server-cert.pem" -#define svrKeyFile "certs/server-key.pem" -#define cliCertFile "certs/client-cert.pem" -#define cliCertDerFile "certs/client-cert.der" -#define cliCertFileExt "certs/client-cert-ext.pem" -#define cliCertDerFileExt "certs/client-cert-ext.der" -#define cliKeyFile "certs/client-key.pem" -#define ntruCertFile "certs/ntru-cert.pem" -#define ntruKeyFile "certs/ntru-key.raw" -#define dhParamFile "certs/dh2048.pem" -#define cliEccKeyFile "certs/ecc-client-key.pem" -#define cliEccCertFile "certs/client-ecc-cert.pem" -#define caEccCertFile "certs/ca-ecc-cert.pem" -#define crlPemDir "certs/crl" -#define edCertFile "certs/ed25519/server-ed25519-cert.pem" -#define edKeyFile "certs/ed25519/server-ed25519-priv.pem" -#define cliEdCertFile "certs/ed25519/client-ed25519.pem" -#define cliEdKeyFile "certs/ed25519/client-ed25519-priv.pem" -#define caEdCertFile "certs/ed25519/ca-ed25519.pem" -#define ed448CertFile "certs/ed448/server-ed448-cert.pem" -#define ed448KeyFile "certs/ed448/server-ed448-priv.pem" -#define cliEd448CertFile "certs/ed448/client-ed448.pem" -#define cliEd448KeyFile "certs/ed448/client-ed448-priv.pem" -#define caEd448CertFile "certs/ed448/ca-ed448.pem" -#ifdef HAVE_WNR - /* Whitewood netRandom default config file */ - #define wnrConfig "wnr-example.conf" -#endif -#else -#define caCertFile "./certs/ca-cert.pem" -#define eccCertFile "./certs/server-ecc.pem" -#define eccKeyFile "./certs/ecc-key.pem" -#define eccRsaCertFile "./certs/server-ecc-rsa.pem" -#define svrCertFile "./certs/server-cert.pem" -#define svrKeyFile "./certs/server-key.pem" -#define cliCertFile "./certs/client-cert.pem" -#define cliCertDerFile "./certs/client-cert.der" -#define cliCertFileExt "./certs/client-cert-ext.pem" -#define cliCertDerFileExt "./certs/client-cert-ext.der" -#define cliKeyFile "./certs/client-key.pem" -#define ntruCertFile "./certs/ntru-cert.pem" -#define ntruKeyFile "./certs/ntru-key.raw" -#define dhParamFile "./certs/dh2048.pem" -#define cliEccKeyFile "./certs/ecc-client-key.pem" -#define cliEccCertFile "./certs/client-ecc-cert.pem" -#define caEccCertFile "./certs/ca-ecc-cert.pem" -#define crlPemDir "./certs/crl" -#define edCertFile "./certs/ed25519/server-ed25519-cert.pem" -#define edKeyFile "./certs/ed25519/server-ed25519-priv.pem" -#define cliEdCertFile "./certs/ed25519/client-ed25519.pem" -#define cliEdKeyFile "./certs/ed25519/client-ed25519-priv.pem" -#define caEdCertFile "./certs/ed25519/ca-ed25519.pem" -#define ed448CertFile "./certs/ed448/server-ed448-cert.pem" -#define ed448KeyFile "./certs/ed448/server-ed448-priv.pem" -#define cliEd448CertFile "./certs/ed448/client-ed448.pem" -#define cliEd448KeyFile "./certs/ed448/client-ed448-priv.pem" -#define caEd448CertFile "./certs/ed448/ca-ed448.pem" -#ifdef HAVE_WNR - /* Whitewood netRandom default config file */ - #define wnrConfig "./wnr-example.conf" -#endif -#endif - -typedef struct tcp_ready { - word16 ready; /* predicate */ - word16 port; - char* srfName; /* server ready file name */ -#if defined(_POSIX_THREADS) && !defined(__MINGW32__) - pthread_mutex_t mutex; - pthread_cond_t cond; -#endif -} tcp_ready; - - -static WC_INLINE void InitTcpReady(tcp_ready* ready) -{ - ready->ready = 0; - ready->port = 0; - ready->srfName = NULL; -#ifdef SINGLE_THREADED -#elif defined(_POSIX_THREADS) && !defined(__MINGW32__) - pthread_mutex_init(&ready->mutex, 0); - pthread_cond_init(&ready->cond, 0); -#endif -} - - -static WC_INLINE void FreeTcpReady(tcp_ready* ready) -{ -#ifdef SINGLE_THREADED - (void)ready; -#elif defined(_POSIX_THREADS) && !defined(__MINGW32__) - pthread_mutex_destroy(&ready->mutex); - pthread_cond_destroy(&ready->cond); -#else - (void)ready; -#endif -} - -typedef WOLFSSL_METHOD* (*method_provider)(void); -typedef void (*ctx_callback)(WOLFSSL_CTX* ctx); -typedef void (*ssl_callback)(WOLFSSL* ssl); - -typedef struct callback_functions { - method_provider method; - ctx_callback ctx_ready; - ssl_callback ssl_ready; - ssl_callback on_result; - WOLFSSL_CTX* ctx; -} callback_functions; - -typedef struct func_args { - int argc; - char** argv; - int return_code; - tcp_ready* signal; - callback_functions *callbacks; -} func_args; - - - - -void wait_tcp_ready(func_args*); - -#ifdef WOLFSSL_ZEPHYR -typedef void THREAD_FUNC(void*, void*, void*); -#else -typedef THREAD_RETURN WOLFSSL_THREAD THREAD_FUNC(void*); -#endif - -void start_thread(THREAD_FUNC, func_args*, THREAD_TYPE*); -void join_thread(THREAD_TYPE); - -/* wolfSSL */ -#ifndef TEST_IPV6 - static const char* const wolfSSLIP = "127.0.0.1"; -#else - static const char* const wolfSSLIP = "::1"; -#endif -static const word16 wolfSSLPort = 11111; - - - -#ifndef MY_EX_USAGE -#define MY_EX_USAGE 2 -#endif - -#ifndef EXIT_FAILURE -#define EXIT_FAILURE 1 -#endif - -#if defined(WOLFSSL_FORCE_MALLOC_FAIL_TEST) || defined(WOLFSSL_ZEPHYR) - #ifndef EXIT_SUCCESS - #define EXIT_SUCCESS 0 - #endif - #define XEXIT(rc) return rc - #define XEXIT_T(rc) return (THREAD_RETURN)rc -#else - #define XEXIT(rc) exit((int)(rc)) - #define XEXIT_T(rc) exit((int)(rc)) -#endif - - -static WC_INLINE -#if defined(WOLFSSL_FORCE_MALLOC_FAIL_TEST) || defined(WOLFSSL_ZEPHYR) -THREAD_RETURN -#else -WC_NORETURN void -#endif -err_sys(const char* msg) -{ - printf("wolfSSL error: %s\n", msg); - -#if !defined(__GNUC__) - /* scan-build (which pretends to be gnuc) can get confused and think the - * msg pointer can be null even when hardcoded and then it won't exit, - * making null pointer checks above the err_sys() call useless. - * We could just always exit() but some compilers will complain about no - * possible return, with gcc we know the attribute to handle that with - * WC_NORETURN. */ - if (msg) -#endif - { - XEXIT_T(EXIT_FAILURE); - } -} - - -extern int myoptind; -extern char* myoptarg; - -static WC_INLINE int mygetopt(int argc, char** argv, const char* optstring) -{ - static char* next = NULL; - - char c; - char* cp; - - /* Added sanity check becuase scan-build complains argv[myoptind] access - * results in a null pointer dereference. */ - if (argv == NULL) { - myoptarg = NULL; - return -1; - } - - if (myoptind == 0) - next = NULL; /* we're starting new/over */ - - if (next == NULL || *next == '\0') { - if (myoptind == 0) - myoptind++; - - if (myoptind >= argc || argv[myoptind] == NULL || - argv[myoptind][0] != '-' || argv[myoptind][1] == '\0') { - myoptarg = NULL; - if (myoptind < argc) - myoptarg = argv[myoptind]; - - return -1; - } - - if (strcmp(argv[myoptind], "--") == 0) { - myoptind++; - myoptarg = NULL; - - if (myoptind < argc) - myoptarg = argv[myoptind]; - - return -1; - } - - next = argv[myoptind]; - next++; /* skip - */ - myoptind++; - } - - c = *next++; - /* The C++ strchr can return a different value */ - cp = (char*)strchr(optstring, c); - - if (cp == NULL || c == ':') - return '?'; - - cp++; - - if (*cp == ':') { - if (*next != '\0') { - myoptarg = next; - next = NULL; - } - else if (myoptind < argc) { - myoptarg = argv[myoptind]; - myoptind++; - } - else - return '?'; - } - - return c; -} - - -#ifdef WOLFSSL_ENCRYPTED_KEYS - -static WC_INLINE int PasswordCallBack(char* passwd, int sz, int rw, void* userdata) -{ - (void)rw; - (void)userdata; - if (userdata != NULL) { - strncpy(passwd, (char*)userdata, sz); - return (int)XSTRLEN((char*)userdata); - } - else { - strncpy(passwd, "yassl123", sz); - return 8; - } -} - -#endif - -static const char* client_showpeer_msg[][8] = { - /* English */ - { - "SSL version is", - "SSL cipher suite is", - "SSL curve name is", - "SSL DH size is", - "SSL reused session", - "Alternate cert chain used", - "peer's cert info:", - NULL - }, -#ifndef NO_MULTIBYTE_PRINT - /* Japanese */ - { - "SSL バージョンは", - "SSL 暗号スイートは", - "SSL 曲線名は", - "SSL DH サイズは", - "SSL 再利用セッション", - "代替証明チェーンを使用", - "相手方証明書情報", - NULL - }, -#endif -}; - -#if defined(KEEP_PEER_CERT) || defined(KEEP_OUR_CERT) || defined(SESSION_CERTS) -static const char* client_showx509_msg[][5] = { - /* English */ - { - "issuer", - "subject", - "altname", - "serial number", - NULL - }, -#ifndef NO_MULTIBYTE_PRINT - /* Japanese */ - { - "発行者", - "サブジェクト", - "代替名", - "シリアル番号", - NULL - }, -#endif -}; - -/* lng_index is to specify the language for displaying message. */ -/* 0:English, 1:Japanese */ -static WC_INLINE void ShowX509Ex(WOLFSSL_X509* x509, const char* hdr, - int lng_index) -{ - char* altName; - char* issuer; - char* subject; - byte serial[32]; - int ret; - int sz = sizeof(serial); - const char** words = client_showx509_msg[lng_index]; - - if (x509 == NULL) { - printf("%s No Cert\n", hdr); - return; - } - - issuer = wolfSSL_X509_NAME_oneline( - wolfSSL_X509_get_issuer_name(x509), 0, 0); - subject = wolfSSL_X509_NAME_oneline( - wolfSSL_X509_get_subject_name(x509), 0, 0); - - printf("%s\n %s : %s\n %s: %s\n", hdr, words[0], issuer, words[1], subject); - - while ( (altName = wolfSSL_X509_get_next_altname(x509)) != NULL) - printf(" %s = %s\n", words[2], altName); - - ret = wolfSSL_X509_get_serial_number(x509, serial, &sz); - if (ret == WOLFSSL_SUCCESS) { - int i; - int strLen; - char serialMsg[80]; - - /* testsuite has multiple threads writing to stdout, get output - message ready to write once */ - strLen = sprintf(serialMsg, " %s", words[3]); - for (i = 0; i < sz; i++) - sprintf(serialMsg + strLen + (i*3), ":%02x ", serial[i]); - printf("%s\n", serialMsg); - } - - XFREE(subject, 0, DYNAMIC_TYPE_OPENSSL); - XFREE(issuer, 0, DYNAMIC_TYPE_OPENSSL); - -#if defined(SHOW_CERTS) && defined(OPENSSL_EXTRA) - { - WOLFSSL_BIO* bio; - char buf[256]; /* should be size of ASN_NAME_MAX */ - int textSz; - - /* print out domain component if certificate has it */ - textSz = wolfSSL_X509_NAME_get_text_by_NID( - wolfSSL_X509_get_subject_name(x509), NID_domainComponent, - buf, sizeof(buf)); - if (textSz > 0) { - printf("Domain Component = %s\n", buf); - } - - bio = wolfSSL_BIO_new(wolfSSL_BIO_s_file()); - if (bio != NULL) { - wolfSSL_BIO_set_fp(bio, stdout, BIO_NOCLOSE); - wolfSSL_X509_print(bio, x509); - wolfSSL_BIO_free(bio); - } - } -#endif /* SHOW_CERTS && OPENSSL_EXTRA */ -} -/* original ShowX509 to maintain compatibility */ -static WC_INLINE void ShowX509(WOLFSSL_X509* x509, const char* hdr) -{ - ShowX509Ex(x509, hdr, 0); -} - -#endif /* KEEP_PEER_CERT || KEEP_OUR_CERT || SESSION_CERTS */ - -#if defined(SHOW_CERTS) && defined(SESSION_CERTS) && \ - (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) -static WC_INLINE void ShowX509Chain(WOLFSSL_X509_CHAIN* chain, int count, - const char* hdr) -{ - int i; - int length; - unsigned char buffer[3072]; - WOLFSSL_X509* chainX509; - - for (i = 0; i < count; i++) { - wolfSSL_get_chain_cert_pem(chain, i, buffer, sizeof(buffer), &length); - buffer[length] = 0; - printf("\n%s: %d has length %d data = \n%s\n", hdr, i, length, buffer); - - chainX509 = wolfSSL_get_chain_X509(chain, i); - if (chainX509) - ShowX509(chainX509, hdr); - else - printf("get_chain_X509 failed\n"); - wolfSSL_FreeX509(chainX509); - } -} -#endif /* SHOW_CERTS && SESSION_CERTS */ - -/* lng_index is to specify the language for displaying message. */ -/* 0:English, 1:Japanese */ -static WC_INLINE void showPeerEx(WOLFSSL* ssl, int lng_index) -{ - WOLFSSL_CIPHER* cipher; - const char** words = client_showpeer_msg[lng_index]; - -#if defined(HAVE_ECC) || defined(HAVE_CURVE25519) || defined(HAVE_CURVE448) || \ - !defined(NO_DH) - const char *name; -#endif -#ifndef NO_DH - int bits; -#endif -#ifdef KEEP_PEER_CERT - WOLFSSL_X509* peer = wolfSSL_get_peer_certificate(ssl); - if (peer) - ShowX509Ex(peer, words[6], lng_index); - else - printf("peer has no cert!\n"); - wolfSSL_FreeX509(peer); -#endif -#if defined(SHOW_CERTS) && defined(KEEP_OUR_CERT) && \ - (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) - ShowX509(wolfSSL_get_certificate(ssl), "our cert info:"); - printf("Peer verify result = %lu\n", wolfSSL_get_verify_result(ssl)); -#endif /* SHOW_CERTS && KEEP_OUR_CERT */ - printf("%s %s\n", words[0], wolfSSL_get_version(ssl)); - - cipher = wolfSSL_get_current_cipher(ssl); -#ifdef HAVE_QSH - printf("%s %s%s\n", words[1], (wolfSSL_isQSH(ssl))? "QSH:": "", - wolfSSL_CIPHER_get_name(cipher)); -#else - printf("%s %s\n", words[1], wolfSSL_CIPHER_get_name(cipher)); -#endif -#if defined(HAVE_ECC) || defined(HAVE_CURVE25519) || defined(HAVE_CURVE448) || \ - !defined(NO_DH) - if ((name = wolfSSL_get_curve_name(ssl)) != NULL) - printf("%s %s\n", words[2], name); -#endif -#ifndef NO_DH - else if ((bits = wolfSSL_GetDhKey_Sz(ssl)) > 0) - printf("%s %d bits\n", words[3], bits); -#endif - if (wolfSSL_session_reused(ssl)) - printf("%s\n", words[4]); -#ifdef WOLFSSL_ALT_CERT_CHAINS - if (wolfSSL_is_peer_alt_cert_chain(ssl)) - printf("%s\n", words[5]); -#endif - -#if defined(SHOW_CERTS) && defined(SESSION_CERTS) && \ - (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) - { - WOLFSSL_X509_CHAIN* chain; - - chain = wolfSSL_get_peer_chain(ssl); - ShowX509Chain(chain, wolfSSL_get_chain_count(chain), "session cert"); - - #ifdef WOLFSSL_ALT_CERT_CHAINS - if (wolfSSL_is_peer_alt_cert_chain(ssl)) { - chain = wolfSSL_get_peer_alt_chain(ssl); - ShowX509Chain(chain, wolfSSL_get_chain_count(chain), "alt cert"); - } - #endif - } -#endif /* SHOW_CERTS && SESSION_CERTS */ - (void)ssl; -} -/* original showPeer to maintain compatibility */ -static WC_INLINE void showPeer(WOLFSSL* ssl) -{ - showPeerEx(ssl, 0); -} - -static WC_INLINE void build_addr(SOCKADDR_IN_T* addr, const char* peer, - word16 port, int udp, int sctp) -{ - int useLookup = 0; - (void)useLookup; - (void)udp; - (void)sctp; - - if (addr == NULL) - err_sys("invalid argument to build_addr, addr is NULL"); - - XMEMSET(addr, 0, sizeof(SOCKADDR_IN_T)); - -#ifndef TEST_IPV6 - /* peer could be in human readable form */ - if ( ((size_t)peer != INADDR_ANY) && isalpha((int)peer[0])) { - #ifndef WOLFSSL_USE_GETADDRINFO - #if defined(WOLFSSL_MDK_ARM) || defined(WOLFSSL_KEIL_TCP_NET) - int err; - struct hostent* entry = gethostbyname(peer, &err); - #elif defined(WOLFSSL_TIRTOS) - struct hostent* entry = DNSGetHostByName(peer); - #elif defined(WOLFSSL_VXWORKS) - struct hostent* entry = (struct hostent*)hostGetByName((char*)peer); - #else - struct hostent* entry = gethostbyname(peer); - #endif - - if (entry) { - XMEMCPY(&addr->sin_addr.s_addr, entry->h_addr_list[0], - entry->h_length); - useLookup = 1; - } - #else - struct zsock_addrinfo hints, *addrInfo; - char portStr[6]; - XSNPRINTF(portStr, sizeof(portStr), "%d", port); - memset(&hints, 0, sizeof(hints)); - hints.ai_family = AF_UNSPEC; - hints.ai_socktype = udp ? SOCK_DGRAM : SOCK_STREAM; - hints.ai_protocol = udp ? IPPROTO_UDP : IPPROTO_TCP; - if (getaddrinfo((char*)peer, portStr, &hints, &addrInfo) == 0) { - XMEMCPY(addr, addrInfo->ai_addr, sizeof(*addr)); - useLookup = 1; - } - #endif - else - err_sys("no entry for host"); - } -#endif - - -#ifndef TEST_IPV6 - #if defined(WOLFSSL_MDK_ARM) || defined(WOLFSSL_KEIL_TCP_NET) - addr->sin_family = PF_INET; - #else - addr->sin_family = AF_INET_V; - #endif - addr->sin_port = XHTONS(port); - if ((size_t)peer == INADDR_ANY) - addr->sin_addr.s_addr = INADDR_ANY; - else { - if (!useLookup) - addr->sin_addr.s_addr = inet_addr(peer); - } -#else - addr->sin6_family = AF_INET_V; - addr->sin6_port = XHTONS(port); - if ((size_t)peer == INADDR_ANY) { - addr->sin6_addr = in6addr_any; - } - else { - #if defined(HAVE_GETADDRINFO) || defined(WOLF_C99) - struct addrinfo hints; - struct addrinfo* answer = NULL; - int ret; - char strPort[80]; - - XMEMSET(&hints, 0, sizeof(hints)); - - hints.ai_family = AF_INET_V; - if (udp) { - hints.ai_socktype = SOCK_DGRAM; - hints.ai_protocol = IPPROTO_UDP; - } - #ifdef WOLFSSL_SCTP - else if (sctp) { - hints.ai_socktype = SOCK_STREAM; - hints.ai_protocol = IPPROTO_SCTP; - } - #endif - else { - hints.ai_socktype = SOCK_STREAM; - hints.ai_protocol = IPPROTO_TCP; - } - - SNPRINTF(strPort, sizeof(strPort), "%d", port); - strPort[79] = '\0'; - - ret = getaddrinfo(peer, strPort, &hints, &answer); - if (ret < 0 || answer == NULL) - err_sys("getaddrinfo failed"); - - XMEMCPY(addr, answer->ai_addr, answer->ai_addrlen); - freeaddrinfo(answer); - #else - printf("no ipv6 getaddrinfo, loopback only tests/examples\n"); - addr->sin6_addr = in6addr_loopback; - #endif - } -#endif -} - - -static WC_INLINE void tcp_socket(SOCKET_T* sockfd, int udp, int sctp) -{ - (void)sctp; - - if (udp) - *sockfd = socket(AF_INET_V, SOCK_DGRAM, IPPROTO_UDP); -#ifdef WOLFSSL_SCTP - else if (sctp) - *sockfd = socket(AF_INET_V, SOCK_STREAM, IPPROTO_SCTP); -#endif - else - *sockfd = socket(AF_INET_V, SOCK_STREAM, IPPROTO_TCP); - - if(WOLFSSL_SOCKET_IS_INVALID(*sockfd)) { - err_sys("socket failed\n"); - } - -#ifndef USE_WINDOWS_API -#ifdef SO_NOSIGPIPE - { - int on = 1; - socklen_t len = sizeof(on); - int res = setsockopt(*sockfd, SOL_SOCKET, SO_NOSIGPIPE, &on, len); - if (res < 0) - err_sys("setsockopt SO_NOSIGPIPE failed\n"); - } -#elif defined(WOLFSSL_MDK_ARM) || defined (WOLFSSL_TIRTOS) ||\ - defined(WOLFSSL_KEIL_TCP_NET) || defined(WOLFSSL_ZEPHYR) - /* nothing to define */ -#else /* no S_NOSIGPIPE */ - signal(SIGPIPE, SIG_IGN); -#endif /* S_NOSIGPIPE */ - -#if defined(TCP_NODELAY) - if (!udp && !sctp) - { - int on = 1; - socklen_t len = sizeof(on); - int res = setsockopt(*sockfd, IPPROTO_TCP, TCP_NODELAY, &on, len); - if (res < 0) - err_sys("setsockopt TCP_NODELAY failed\n"); - } -#endif -#endif /* USE_WINDOWS_API */ -} - -static WC_INLINE void tcp_connect(SOCKET_T* sockfd, const char* ip, word16 port, - int udp, int sctp, WOLFSSL* ssl) -{ - SOCKADDR_IN_T addr; - build_addr(&addr, ip, port, udp, sctp); - if (udp) { - wolfSSL_dtls_set_peer(ssl, &addr, sizeof(addr)); - } - tcp_socket(sockfd, udp, sctp); - - if (!udp) { - if (connect(*sockfd, (const struct sockaddr*)&addr, sizeof(addr)) != 0) - err_sys("tcp connect failed"); - } -} - - -static WC_INLINE void udp_connect(SOCKET_T* sockfd, void* addr, int addrSz) -{ - if (connect(*sockfd, (const struct sockaddr*)addr, addrSz) != 0) - err_sys("tcp connect failed"); -} - - -enum { - TEST_SELECT_FAIL, - TEST_TIMEOUT, - TEST_RECV_READY, - TEST_SEND_READY, - TEST_ERROR_READY -}; - - -#if !defined(WOLFSSL_MDK_ARM) && !defined(WOLFSSL_KEIL_TCP_NET) && \ - !defined(WOLFSSL_TIRTOS) -static WC_INLINE int tcp_select_ex(SOCKET_T socketfd, int to_sec, int rx) -{ - fd_set fds, errfds; - fd_set* recvfds = NULL; - fd_set* sendfds = NULL; - SOCKET_T nfds = socketfd + 1; -#if !defined(__INTEGRITY) - struct timeval timeout = {(to_sec > 0) ? to_sec : 0, 0}; -#else - struct timeval timeout; -#endif - int result; - - FD_ZERO(&fds); - FD_SET(socketfd, &fds); - FD_ZERO(&errfds); - FD_SET(socketfd, &errfds); - - if (rx) - recvfds = &fds; - else - sendfds = &fds; - -#if defined(__INTEGRITY) - timeout.tv_sec = (long long)(to_sec > 0) ? to_sec : 0, 0; -#endif - result = select(nfds, recvfds, sendfds, &errfds, &timeout); - - if (result == 0) - return TEST_TIMEOUT; - else if (result > 0) { - if (FD_ISSET(socketfd, &fds)) { - if (rx) - return TEST_RECV_READY; - else - return TEST_SEND_READY; - } - else if(FD_ISSET(socketfd, &errfds)) - return TEST_ERROR_READY; - } - - return TEST_SELECT_FAIL; -} - -static WC_INLINE int tcp_select(SOCKET_T socketfd, int to_sec) -{ - return tcp_select_ex(socketfd, to_sec, 1); -} - -static WC_INLINE int tcp_select_tx(SOCKET_T socketfd, int to_sec) -{ - return tcp_select_ex(socketfd, to_sec, 0); -} - -#elif defined(WOLFSSL_TIRTOS) || defined(WOLFSSL_KEIL_TCP_NET) -static WC_INLINE int tcp_select(SOCKET_T socketfd, int to_sec) -{ - return TEST_RECV_READY; -} -static WC_INLINE int tcp_select_tx(SOCKET_T socketfd, int to_sec) -{ - return TEST_SEND_READY; -} -#endif /* !WOLFSSL_MDK_ARM */ - - -static WC_INLINE void tcp_listen(SOCKET_T* sockfd, word16* port, int useAnyAddr, - int udp, int sctp) -{ - SOCKADDR_IN_T addr; - - /* don't use INADDR_ANY by default, firewall may block, make user switch - on */ - build_addr(&addr, (useAnyAddr ? INADDR_ANY : wolfSSLIP), *port, udp, sctp); - tcp_socket(sockfd, udp, sctp); - -#if !defined(USE_WINDOWS_API) && !defined(WOLFSSL_MDK_ARM)\ - && !defined(WOLFSSL_KEIL_TCP_NET) && !defined(WOLFSSL_ZEPHYR) - { - int res, on = 1; - socklen_t len = sizeof(on); - res = setsockopt(*sockfd, SOL_SOCKET, SO_REUSEADDR, &on, len); - if (res < 0) - err_sys("setsockopt SO_REUSEADDR failed\n"); - } -#endif - - if (bind(*sockfd, (const struct sockaddr*)&addr, sizeof(addr)) != 0) - err_sys("tcp bind failed"); - if (!udp) { - #ifdef WOLFSSL_KEIL_TCP_NET - #define SOCK_LISTEN_MAX_QUEUE 1 - #else - #define SOCK_LISTEN_MAX_QUEUE 5 - #endif - if (listen(*sockfd, SOCK_LISTEN_MAX_QUEUE) != 0) - err_sys("tcp listen failed"); - } - #if !defined(USE_WINDOWS_API) && !defined(WOLFSSL_TIRTOS) \ - && !defined(WOLFSSL_ZEPHYR) - if (*port == 0) { - socklen_t len = sizeof(addr); - if (getsockname(*sockfd, (struct sockaddr*)&addr, &len) == 0) { - #ifndef TEST_IPV6 - *port = XNTOHS(addr.sin_port); - #else - *port = XNTOHS(addr.sin6_port); - #endif - } - } - #endif -} - - -#if 0 -static WC_INLINE int udp_read_connect(SOCKET_T sockfd) -{ - SOCKADDR_IN_T cliaddr; - byte b[1500]; - int n; - socklen_t len = sizeof(cliaddr); - - n = (int)recvfrom(sockfd, (char*)b, sizeof(b), MSG_PEEK, - (struct sockaddr*)&cliaddr, &len); - if (n > 0) { - if (connect(sockfd, (const struct sockaddr*)&cliaddr, - sizeof(cliaddr)) != 0) - err_sys("udp connect failed"); - } - else - err_sys("recvfrom failed"); - - return sockfd; -} -#endif - -static WC_INLINE void udp_accept(SOCKET_T* sockfd, SOCKET_T* clientfd, - int useAnyAddr, word16 port, func_args* args) -{ - SOCKADDR_IN_T addr; - - (void)args; - build_addr(&addr, (useAnyAddr ? INADDR_ANY : wolfSSLIP), port, 1, 0); - tcp_socket(sockfd, 1, 0); - - -#if !defined(USE_WINDOWS_API) && !defined(WOLFSSL_MDK_ARM) \ - && !defined(WOLFSSL_KEIL_TCP_NET) && !defined(WOLFSSL_ZEPHYR) - { - int res, on = 1; - socklen_t len = sizeof(on); - res = setsockopt(*sockfd, SOL_SOCKET, SO_REUSEADDR, &on, len); - if (res < 0) - err_sys("setsockopt SO_REUSEADDR failed\n"); - } -#endif - - if (bind(*sockfd, (const struct sockaddr*)&addr, sizeof(addr)) != 0) - err_sys("tcp bind failed"); - - #if (defined(NO_MAIN_DRIVER) && !defined(USE_WINDOWS_API)) && !defined(WOLFSSL_TIRTOS) - if (port == 0) { - socklen_t len = sizeof(addr); - if (getsockname(*sockfd, (struct sockaddr*)&addr, &len) == 0) { - #ifndef TEST_IPV6 - port = XNTOHS(addr.sin_port); - #else - port = XNTOHS(addr.sin6_port); - #endif - } - } - #endif - -#if defined(_POSIX_THREADS) && defined(NO_MAIN_DRIVER) && !defined(__MINGW32__) - /* signal ready to accept data */ - { - tcp_ready* ready = args->signal; - pthread_mutex_lock(&ready->mutex); - ready->ready = 1; - ready->port = port; - pthread_cond_signal(&ready->cond); - pthread_mutex_unlock(&ready->mutex); - } -#elif defined (WOLFSSL_TIRTOS) - /* Need mutex? */ - tcp_ready* ready = args->signal; - ready->ready = 1; - ready->port = port; -#else - (void)port; -#endif - - *clientfd = *sockfd; -} - -static WC_INLINE void tcp_accept(SOCKET_T* sockfd, SOCKET_T* clientfd, - func_args* args, word16 port, int useAnyAddr, - int udp, int sctp, int ready_file, int do_listen) -{ - SOCKADDR_IN_T client; - socklen_t client_len = sizeof(client); - tcp_ready* ready = NULL; - - (void) ready; /* Account for case when "ready" is not used */ - - if (udp) { - udp_accept(sockfd, clientfd, useAnyAddr, port, args); - return; - } - - if(do_listen) { - tcp_listen(sockfd, &port, useAnyAddr, udp, sctp); - - #if defined(_POSIX_THREADS) && defined(NO_MAIN_DRIVER) && !defined(__MINGW32__) - /* signal ready to tcp_accept */ - if (args) - ready = args->signal; - if (ready) { - pthread_mutex_lock(&ready->mutex); - ready->ready = 1; - ready->port = port; - pthread_cond_signal(&ready->cond); - pthread_mutex_unlock(&ready->mutex); - } - #elif defined (WOLFSSL_TIRTOS) - /* Need mutex? */ - if (args) - ready = args->signal; - if (ready) { - ready->ready = 1; - ready->port = port; - } - #endif - - if (ready_file) { - #if !defined(NO_FILESYSTEM) || defined(FORCE_BUFFER_TEST) - XFILE srf = NULL; - if (args) - ready = args->signal; - - if (ready) { - srf = XFOPEN(ready->srfName, "w"); - - if (srf) { - /* let's write port sever is listening on to ready file - external monitor can then do ephemeral ports by passing - -p 0 to server on supported platforms with -R ready_file - client can then wait for existence of ready_file and see - which port the server is listening on. */ - fprintf(srf, "%d\n", (int)port); - fclose(srf); - } - } - #endif - } - } - - *clientfd = accept(*sockfd, (struct sockaddr*)&client, - (ACCEPT_THIRD_T)&client_len); - if(WOLFSSL_SOCKET_IS_INVALID(*clientfd)) { - err_sys("tcp accept failed"); - } -} - - -static WC_INLINE void tcp_set_nonblocking(SOCKET_T* sockfd) -{ - #ifdef USE_WINDOWS_API - unsigned long blocking = 1; - int ret = ioctlsocket(*sockfd, FIONBIO, &blocking); - if (ret == SOCKET_ERROR) - err_sys("ioctlsocket failed"); - #elif defined(WOLFSSL_MDK_ARM) || defined(WOLFSSL_KEIL_TCP_NET) \ - || defined (WOLFSSL_TIRTOS)|| defined(WOLFSSL_VXWORKS) \ - || defined(WOLFSSL_ZEPHYR) - /* non blocking not supported, for now */ - #else - int flags = fcntl(*sockfd, F_GETFL, 0); - if (flags < 0) - err_sys("fcntl get failed"); - flags = fcntl(*sockfd, F_SETFL, flags | O_NONBLOCK); - if (flags < 0) - err_sys("fcntl set failed"); - #endif -} - - -#ifndef NO_PSK - -/* identity is OpenSSL testing default for openssl s_client, keep same */ -static const char* kIdentityStr = "Client_identity"; - -static WC_INLINE unsigned int my_psk_client_cb(WOLFSSL* ssl, const char* hint, - char* identity, unsigned int id_max_len, unsigned char* key, - unsigned int key_max_len) -{ - (void)ssl; - (void)hint; - (void)key_max_len; - - /* see internal.h MAX_PSK_ID_LEN for PSK identity limit */ - strncpy(identity, kIdentityStr, id_max_len); - - if (wolfSSL_GetVersion(ssl) < WOLFSSL_TLSV1_3) { - /* test key in hex is 0x1a2b3c4d , in decimal 439,041,101 , we're using - unsigned binary */ - key[0] = 0x1a; - key[1] = 0x2b; - key[2] = 0x3c; - key[3] = 0x4d; - - return 4; /* length of key in octets or 0 for error */ - } - else { - int i; - int b = 0x01; - - for (i = 0; i < 32; i++, b += 0x22) { - if (b >= 0x100) - b = 0x01; - key[i] = b; - } - - return 32; /* length of key in octets or 0 for error */ - } -} - - -static WC_INLINE unsigned int my_psk_server_cb(WOLFSSL* ssl, const char* identity, - unsigned char* key, unsigned int key_max_len) -{ - (void)ssl; - (void)key_max_len; - - /* see internal.h MAX_PSK_ID_LEN for PSK identity limit */ - if (strncmp(identity, kIdentityStr, strlen(kIdentityStr)) != 0) - return 0; - - if (wolfSSL_GetVersion(ssl) < WOLFSSL_TLSV1_3) { - /* test key in hex is 0x1a2b3c4d , in decimal 439,041,101 , we're using - unsigned binary */ - key[0] = 0x1a; - key[1] = 0x2b; - key[2] = 0x3c; - key[3] = 0x4d; - - return 4; /* length of key in octets or 0 for error */ - } - else { - int i; - int b = 0x01; - - for (i = 0; i < 32; i++, b += 0x22) { - if (b >= 0x100) - b = 0x01; - key[i] = b; - } - - return 32; /* length of key in octets or 0 for error */ - } -} - - -static WC_INLINE unsigned int my_psk_client_tls13_cb(WOLFSSL* ssl, - const char* hint, char* identity, unsigned int id_max_len, - unsigned char* key, unsigned int key_max_len, const char** ciphersuite) -{ - int i; - int b = 0x01; - - (void)ssl; - (void)hint; - (void)key_max_len; - - /* see internal.h MAX_PSK_ID_LEN for PSK identity limit */ - strncpy(identity, kIdentityStr, id_max_len); - - for (i = 0; i < 32; i++, b += 0x22) { - if (b >= 0x100) - b = 0x01; - key[i] = b; - } - - *ciphersuite = "TLS13-AES128-GCM-SHA256"; - - return 32; /* length of key in octets or 0 for error */ -} - - -static WC_INLINE unsigned int my_psk_server_tls13_cb(WOLFSSL* ssl, - const char* identity, unsigned char* key, unsigned int key_max_len, - const char** ciphersuite) -{ - int i; - int b = 0x01; - - (void)ssl; - (void)key_max_len; - - /* see internal.h MAX_PSK_ID_LEN for PSK identity limit */ - if (strncmp(identity, kIdentityStr, strlen(kIdentityStr)) != 0) - return 0; - - for (i = 0; i < 32; i++, b += 0x22) { - if (b >= 0x100) - b = 0x01; - key[i] = b; - } - - *ciphersuite = "TLS13-AES128-GCM-SHA256"; - - return 32; /* length of key in octets or 0 for error */ -} - -#endif /* NO_PSK */ - - -#if defined(WOLFSSL_USER_CURRTIME) - extern double current_time(int reset); - -#elif defined(USE_WINDOWS_API) - - #define WIN32_LEAN_AND_MEAN - #include <windows.h> - - static WC_INLINE double current_time(int reset) - { - static int init = 0; - static LARGE_INTEGER freq; - - LARGE_INTEGER count; - - if (!init) { - QueryPerformanceFrequency(&freq); - init = 1; - } - - QueryPerformanceCounter(&count); - - (void)reset; - return (double)count.QuadPart / freq.QuadPart; - } - -#elif defined(WOLFSSL_TIRTOS) - extern double current_time(); -#elif defined(WOLFSSL_ZEPHYR) - extern double current_time(); -#else - -#if !defined(WOLFSSL_MDK_ARM) && !defined(WOLFSSL_KEIL_TCP_NET) && !defined(WOLFSSL_CHIBIOS) - #include <sys/time.h> - - static WC_INLINE double current_time(int reset) - { - struct timeval tv; - gettimeofday(&tv, 0); - (void)reset; - - return (double)tv.tv_sec + (double)tv.tv_usec / 1000000; - } -#else - extern double current_time(int reset); -#endif -#endif /* USE_WINDOWS_API */ - - -#if defined(HAVE_OCSP) && defined(WOLFSSL_NONBLOCK_OCSP) -static WC_INLINE int OCSPIOCb(void* ioCtx, const char* url, int urlSz, - unsigned char* request, int requestSz, unsigned char** response) -{ -#ifdef TEST_NONBLOCK_CERTS - static int ioCbCnt = 0; -#endif - - (void)ioCtx; - (void)url; - (void)urlSz; - (void)request; - (void)requestSz; - (void)response; - -#ifdef TEST_NONBLOCK_CERTS - if (ioCbCnt) { - ioCbCnt = 0; - return EmbedOcspLookup(ioCtx, url, urlSz, request, requestSz, response); - } - else { - ioCbCnt = 1; - return WOLFSSL_CBIO_ERR_WANT_READ; - } -#else - return EmbedOcspLookup(ioCtx, url, urlSz, request, requestSz, response); -#endif -} - -static WC_INLINE void OCSPRespFreeCb(void* ioCtx, unsigned char* response) -{ - (void)ioCtx; - (void)response; -} -#endif - -#if !defined(NO_CERTS) - #if !defined(NO_FILESYSTEM) || \ - (defined(NO_FILESYSTEM) && defined(FORCE_BUFFER_TEST)) - - /* reads file size, allocates buffer, reads into buffer, returns buffer */ - static WC_INLINE int load_file(const char* fname, byte** buf, size_t* bufLen) - { - int ret; - long int fileSz; - XFILE file; - - if (fname == NULL || buf == NULL || bufLen == NULL) - return BAD_FUNC_ARG; - - /* set defaults */ - *buf = NULL; - *bufLen = 0; - - /* open file (read-only binary) */ - file = XFOPEN(fname, "rb"); - if (!file) { - printf("Error loading %s\n", fname); - return BAD_PATH_ERROR; - } - - fseek(file, 0, SEEK_END); - fileSz = (int)ftell(file); - rewind(file); - if (fileSz > 0) { - *bufLen = (size_t)fileSz; - *buf = (byte*)malloc(*bufLen); - if (*buf == NULL) { - ret = MEMORY_E; - printf("Error allocating %lu bytes\n", (unsigned long)*bufLen); - } - else { - size_t readLen = fread(*buf, *bufLen, 1, file); - - /* check response code */ - ret = (readLen > 0) ? 0 : -1; - } - } - else { - ret = BUFFER_E; - } - fclose(file); - - return ret; - } - - enum { - WOLFSSL_CA = 1, - WOLFSSL_CERT = 2, - WOLFSSL_KEY = 3, - WOLFSSL_CERT_CHAIN = 4, - }; - - static WC_INLINE void load_buffer(WOLFSSL_CTX* ctx, const char* fname, int type) - { - int format = WOLFSSL_FILETYPE_PEM; - byte* buff = NULL; - size_t sz = 0; - - if (load_file(fname, &buff, &sz) != 0) { - err_sys("can't open file for buffer load " - "Please run from wolfSSL home directory if not"); - } - - /* determine format */ - if (strstr(fname, ".der")) - format = WOLFSSL_FILETYPE_ASN1; - - if (type == WOLFSSL_CA) { - if (wolfSSL_CTX_load_verify_buffer(ctx, buff, (long)sz, format) - != WOLFSSL_SUCCESS) - err_sys("can't load buffer ca file"); - } - else if (type == WOLFSSL_CERT) { - if (wolfSSL_CTX_use_certificate_buffer(ctx, buff, (long)sz, - format) != WOLFSSL_SUCCESS) - err_sys("can't load buffer cert file"); - } - else if (type == WOLFSSL_KEY) { - if (wolfSSL_CTX_use_PrivateKey_buffer(ctx, buff, (long)sz, - format) != WOLFSSL_SUCCESS) - err_sys("can't load buffer key file"); - } - else if (type == WOLFSSL_CERT_CHAIN) { - if (wolfSSL_CTX_use_certificate_chain_buffer_format(ctx, buff, - (long)sz, format) != WOLFSSL_SUCCESS) - err_sys("can't load cert chain buffer"); - } - - if (buff) - free(buff); - } - - static WC_INLINE void load_ssl_buffer(WOLFSSL* ssl, const char* fname, int type) - { - int format = WOLFSSL_FILETYPE_PEM; - byte* buff = NULL; - size_t sz = 0; - - if (load_file(fname, &buff, &sz) != 0) { - err_sys("can't open file for buffer load " - "Please run from wolfSSL home directory if not"); - } - - /* determine format */ - if (strstr(fname, ".der")) - format = WOLFSSL_FILETYPE_ASN1; - - if (type == WOLFSSL_CA) { - /* verify certs (CA's) use the shared ctx->cm (WOLFSSL_CERT_MANAGER) */ - WOLFSSL_CTX* ctx = wolfSSL_get_SSL_CTX(ssl); - if (wolfSSL_CTX_load_verify_buffer(ctx, buff, (long)sz, format) - != WOLFSSL_SUCCESS) - err_sys("can't load buffer ca file"); - } - else if (type == WOLFSSL_CERT) { - if (wolfSSL_use_certificate_buffer(ssl, buff, (long)sz, - format) != WOLFSSL_SUCCESS) - err_sys("can't load buffer cert file"); - } - else if (type == WOLFSSL_KEY) { - if (wolfSSL_use_PrivateKey_buffer(ssl, buff, (long)sz, - format) != WOLFSSL_SUCCESS) - err_sys("can't load buffer key file"); - } - else if (type == WOLFSSL_CERT_CHAIN) { - if (wolfSSL_use_certificate_chain_buffer_format(ssl, buff, - (long)sz, format) != WOLFSSL_SUCCESS) - err_sys("can't load cert chain buffer"); - } - - if (buff) - free(buff); - } - - #ifdef TEST_PK_PRIVKEY - static WC_INLINE int load_key_file(const char* fname, byte** derBuf, word32* derLen) - { - int ret; - byte* buf = NULL; - size_t bufLen; - - ret = load_file(fname, &buf, &bufLen); - if (ret != 0) - return ret; - - *derBuf = (byte*)malloc(bufLen); - if (*derBuf == NULL) { - free(buf); - return MEMORY_E; - } - - ret = wc_KeyPemToDer(buf, (word32)bufLen, *derBuf, (word32)bufLen, NULL); - if (ret < 0) { - free(buf); - free(*derBuf); - return ret; - } - *derLen = ret; - free(buf); - - return 0; - } - #endif /* TEST_PK_PRIVKEY */ - - #endif /* !NO_FILESYSTEM || (NO_FILESYSTEM && FORCE_BUFFER_TEST) */ -#endif /* !NO_CERTS */ - -static int myVerifyFail = 0; - -/* The verify callback is called for every certificate only when - * --enable-opensslextra is defined because it sets WOLFSSL_ALWAYS_VERIFY_CB and - * WOLFSSL_VERIFY_CB_ALL_CERTS. - * Normal cases of the verify callback only occur on certificate failures when the - * wolfSSL_set_verify(ssl, SSL_VERIFY_PEER, myVerifyCb); is called -*/ - -static WC_INLINE int myVerify(int preverify, WOLFSSL_X509_STORE_CTX* store) -{ - char buffer[WOLFSSL_MAX_ERROR_SZ]; -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) - WOLFSSL_X509* peer; -#if defined(SHOW_CERTS) && !defined(NO_FILESYSTEM) - WOLFSSL_BIO* bio = NULL; - WOLFSSL_STACK* sk = NULL; - X509* x509 = NULL; - int i = 0; -#endif -#endif - (void)preverify; - - /* Verify Callback Arguments: - * preverify: 1=Verify Okay, 0=Failure - * store->error: Failure error code (0 indicates no failure) - * store->current_cert: Current WOLFSSL_X509 object (only with OPENSSL_EXTRA) - * store->error_depth: Current Index - * store->domain: Subject CN as string (null term) - * store->totalCerts: Number of certs presented by peer - * store->certs[i]: A `WOLFSSL_BUFFER_INFO` with plain DER for each cert - * store->store: WOLFSSL_X509_STORE with CA cert chain - * store->store->cm: WOLFSSL_CERT_MANAGER - * store->ex_data: The WOLFSSL object pointer - * store->discardSessionCerts: When set to non-zero value session certs - will be discarded (only with SESSION_CERTS) - */ - - printf("In verification callback, error = %d, %s\n", store->error, - wolfSSL_ERR_error_string(store->error, buffer)); -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) - peer = store->current_cert; - if (peer) { - char* issuer = wolfSSL_X509_NAME_oneline( - wolfSSL_X509_get_issuer_name(peer), 0, 0); - char* subject = wolfSSL_X509_NAME_oneline( - wolfSSL_X509_get_subject_name(peer), 0, 0); - printf("\tPeer's cert info:\n issuer : %s\n subject: %s\n", issuer, - subject); - XFREE(subject, 0, DYNAMIC_TYPE_OPENSSL); - XFREE(issuer, 0, DYNAMIC_TYPE_OPENSSL); -#if defined(SHOW_CERTS) && !defined(NO_FILESYSTEM) -/* avoid printing duplicate certs */ - if (store->depth == 1) { - /* retrieve x509 certs and display them on stdout */ - sk = wolfSSL_X509_STORE_GetCerts(store); - - for (i = 0; i < wolfSSL_sk_X509_num(sk); i++) { - x509 = wolfSSL_sk_X509_value(sk, i); - bio = wolfSSL_BIO_new(wolfSSL_BIO_s_file()); - if (bio != NULL) { - wolfSSL_BIO_set_fp(bio, stdout, BIO_NOCLOSE); - wolfSSL_X509_print(bio, x509); - wolfSSL_BIO_free(bio); - } - } - wolfSSL_sk_X509_free(sk); - } -#endif - } - else - printf("\tPeer has no cert!\n"); -#else - printf("\tPeer certs: %d\n", store->totalCerts); - #ifdef SHOW_CERTS - { int i; - for (i=0; i<store->totalCerts; i++) { - WOLFSSL_BUFFER_INFO* cert = &store->certs[i]; - printf("\t\tCert %d: Ptr %p, Len %u\n", i, cert->buffer, cert->length); - } - } - #endif /* SHOW_CERTS */ -#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ - - printf("\tSubject's domain name at %d is %s\n", store->error_depth, store->domain); - - /* Testing forced fail case by return zero */ - if (myVerifyFail) { - return 0; /* test failure case */ - } - - /* If error indicate we are overriding it for testing purposes */ - if (store->error != 0) { - printf("\tAllowing failed certificate check, testing only " - "(shouldn't do this in production)\n"); - } - - /* A non-zero return code indicates failure override */ - return 1; -} - - -static WC_INLINE int myDateCb(int preverify, WOLFSSL_X509_STORE_CTX* store) -{ - char buffer[WOLFSSL_MAX_ERROR_SZ]; - (void)preverify; - - printf("In verification callback, error = %d, %s\n", store->error, - wolfSSL_ERR_error_string(store->error, buffer)); - printf("Subject's domain name is %s\n", store->domain); - - if (store->error == ASN_BEFORE_DATE_E || store->error == ASN_AFTER_DATE_E) { - printf("Overriding cert date error as example for bad clock testing\n"); - return 1; - } - printf("Cert error is not date error, not overriding\n"); - - return 0; -} - - -#ifdef HAVE_EXT_CACHE - -static WC_INLINE WOLFSSL_SESSION* mySessGetCb(WOLFSSL* ssl, unsigned char* id, - int id_len, int* copy) -{ - (void)ssl; - (void)id; - (void)id_len; - (void)copy; - - /* using internal cache, this is for testing only */ - return NULL; -} - -static WC_INLINE int mySessNewCb(WOLFSSL* ssl, WOLFSSL_SESSION* session) -{ - (void)ssl; - (void)session; - - /* using internal cache, this is for testing only */ - return 0; -} - -static WC_INLINE void mySessRemCb(WOLFSSL_CTX* ctx, WOLFSSL_SESSION* session) -{ - (void)ctx; - (void)session; - - /* using internal cache, this is for testing only */ -} - -#endif /* HAVE_EXT_CACHE */ - - -#ifdef HAVE_CRL - -static WC_INLINE void CRL_CallBack(const char* url) -{ - printf("CRL callback url = %s\n", url); -} - -#endif - -#ifndef NO_DH -static WC_INLINE void SetDH(WOLFSSL* ssl) -{ - /* dh1024 p */ - static const unsigned char p[] = - { - 0xE6, 0x96, 0x9D, 0x3D, 0x49, 0x5B, 0xE3, 0x2C, 0x7C, 0xF1, 0x80, 0xC3, - 0xBD, 0xD4, 0x79, 0x8E, 0x91, 0xB7, 0x81, 0x82, 0x51, 0xBB, 0x05, 0x5E, - 0x2A, 0x20, 0x64, 0x90, 0x4A, 0x79, 0xA7, 0x70, 0xFA, 0x15, 0xA2, 0x59, - 0xCB, 0xD5, 0x23, 0xA6, 0xA6, 0xEF, 0x09, 0xC4, 0x30, 0x48, 0xD5, 0xA2, - 0x2F, 0x97, 0x1F, 0x3C, 0x20, 0x12, 0x9B, 0x48, 0x00, 0x0E, 0x6E, 0xDD, - 0x06, 0x1C, 0xBC, 0x05, 0x3E, 0x37, 0x1D, 0x79, 0x4E, 0x53, 0x27, 0xDF, - 0x61, 0x1E, 0xBB, 0xBE, 0x1B, 0xAC, 0x9B, 0x5C, 0x60, 0x44, 0xCF, 0x02, - 0x3D, 0x76, 0xE0, 0x5E, 0xEA, 0x9B, 0xAD, 0x99, 0x1B, 0x13, 0xA6, 0x3C, - 0x97, 0x4E, 0x9E, 0xF1, 0x83, 0x9E, 0xB5, 0xDB, 0x12, 0x51, 0x36, 0xF7, - 0x26, 0x2E, 0x56, 0xA8, 0x87, 0x15, 0x38, 0xDF, 0xD8, 0x23, 0xC6, 0x50, - 0x50, 0x85, 0xE2, 0x1F, 0x0D, 0xD5, 0xC8, 0x6B, - }; - - /* dh1024 g */ - static const unsigned char g[] = - { - 0x02, - }; - - wolfSSL_SetTmpDH(ssl, p, sizeof(p), g, sizeof(g)); -} - -static WC_INLINE void SetDHCtx(WOLFSSL_CTX* ctx) -{ - /* dh1024 p */ - static const unsigned char p[] = - { - 0xE6, 0x96, 0x9D, 0x3D, 0x49, 0x5B, 0xE3, 0x2C, 0x7C, 0xF1, 0x80, 0xC3, - 0xBD, 0xD4, 0x79, 0x8E, 0x91, 0xB7, 0x81, 0x82, 0x51, 0xBB, 0x05, 0x5E, - 0x2A, 0x20, 0x64, 0x90, 0x4A, 0x79, 0xA7, 0x70, 0xFA, 0x15, 0xA2, 0x59, - 0xCB, 0xD5, 0x23, 0xA6, 0xA6, 0xEF, 0x09, 0xC4, 0x30, 0x48, 0xD5, 0xA2, - 0x2F, 0x97, 0x1F, 0x3C, 0x20, 0x12, 0x9B, 0x48, 0x00, 0x0E, 0x6E, 0xDD, - 0x06, 0x1C, 0xBC, 0x05, 0x3E, 0x37, 0x1D, 0x79, 0x4E, 0x53, 0x27, 0xDF, - 0x61, 0x1E, 0xBB, 0xBE, 0x1B, 0xAC, 0x9B, 0x5C, 0x60, 0x44, 0xCF, 0x02, - 0x3D, 0x76, 0xE0, 0x5E, 0xEA, 0x9B, 0xAD, 0x99, 0x1B, 0x13, 0xA6, 0x3C, - 0x97, 0x4E, 0x9E, 0xF1, 0x83, 0x9E, 0xB5, 0xDB, 0x12, 0x51, 0x36, 0xF7, - 0x26, 0x2E, 0x56, 0xA8, 0x87, 0x15, 0x38, 0xDF, 0xD8, 0x23, 0xC6, 0x50, - 0x50, 0x85, 0xE2, 0x1F, 0x0D, 0xD5, 0xC8, 0x6B, - }; - - /* dh1024 g */ - static const unsigned char g[] = - { - 0x02, - }; - - wolfSSL_CTX_SetTmpDH(ctx, p, sizeof(p), g, sizeof(g)); -} -#endif /* NO_DH */ - -#ifndef NO_CERTS - -static WC_INLINE void CaCb(unsigned char* der, int sz, int type) -{ - (void)der; - printf("Got CA cache add callback, derSz = %d, type = %d\n", sz, type); -} - -#endif /* !NO_CERTS */ - - -/* Wolf Root Directory Helper */ -/* KEIL-RL File System does not support relative directory */ -#if !defined(WOLFSSL_MDK_ARM) && !defined(WOLFSSL_KEIL_FS) && !defined(WOLFSSL_TIRTOS) - /* Maximum depth to search for WolfSSL root */ - #define MAX_WOLF_ROOT_DEPTH 5 - - static WC_INLINE int ChangeToWolfRoot(void) - { - #if !defined(NO_FILESYSTEM) || defined(FORCE_BUFFER_TEST) - int depth, res; - XFILE file; - for(depth = 0; depth <= MAX_WOLF_ROOT_DEPTH; depth++) { - file = XFOPEN(ntruKeyFile, "rb"); - if (file != NULL) { - fclose(file); - return depth; - } - #ifdef USE_WINDOWS_API - res = SetCurrentDirectoryA("..\\"); - #else - res = chdir("../"); - #endif - if (res < 0) { - printf("chdir to ../ failed!\n"); - break; - } - } - - err_sys("wolf root not found"); - return -1; - #else - return 0; - #endif - } -#endif /* !defined(WOLFSSL_MDK_ARM) && !defined(WOLFSSL_KEIL_FS) && !defined(WOLFSSL_TIRTOS) */ - -#ifdef HAVE_STACK_SIZE - -typedef THREAD_RETURN WOLFSSL_THREAD (*thread_func)(void* args); -#define STACK_CHECK_VAL 0x01 - -static WC_INLINE int StackSizeCheck(func_args* args, thread_func tf) -{ - int ret, i, used; - void* status; - unsigned char* myStack = NULL; - int stackSize = 1024*152; - pthread_attr_t myAttr; - pthread_t threadId; - -#ifdef PTHREAD_STACK_MIN - if (stackSize < PTHREAD_STACK_MIN) - stackSize = PTHREAD_STACK_MIN; -#endif - - ret = posix_memalign((void**)&myStack, sysconf(_SC_PAGESIZE), stackSize); - if (ret != 0 || myStack == NULL) - err_sys("posix_memalign failed\n"); - - XMEMSET(myStack, STACK_CHECK_VAL, stackSize); - - ret = pthread_attr_init(&myAttr); - if (ret != 0) - err_sys("attr_init failed"); - - ret = pthread_attr_setstack(&myAttr, myStack, stackSize); - if (ret != 0) - err_sys("attr_setstackaddr failed"); - - ret = pthread_create(&threadId, &myAttr, tf, args); - if (ret != 0) { - perror("pthread_create failed"); - exit(EXIT_FAILURE); - } - - ret = pthread_join(threadId, &status); - if (ret != 0) - err_sys("pthread_join failed"); - - for (i = 0; i < stackSize; i++) { - if (myStack[i] != STACK_CHECK_VAL) { - break; - } - } - - free(myStack); - - used = stackSize - i; - printf("stack used = %d\n", used); - - return (int)((size_t)status); -} - - -#endif /* HAVE_STACK_SIZE */ - - -#ifdef STACK_TRAP - -/* good settings - --enable-debug --disable-shared C_EXTRA_FLAGS="-DUSER_TIME -DTFM_TIMING_RESISTANT -DPOSITIVE_EXP_ONLY -DSTACK_TRAP" - -*/ - -#ifdef HAVE_STACK_SIZE - /* client only for now, setrlimit will fail if pthread_create() called */ - /* STACK_SIZE does pthread_create() on client */ - #error "can't use STACK_TRAP with STACK_SIZE, setrlimit will fail" -#endif /* HAVE_STACK_SIZE */ - -static WC_INLINE void StackTrap(void) -{ - struct rlimit rl; - if (getrlimit(RLIMIT_STACK, &rl) != 0) - err_sys("getrlimit failed"); - printf("rlim_cur = %llu\n", rl.rlim_cur); - rl.rlim_cur = 1024*21; /* adjust trap size here */ - if (setrlimit(RLIMIT_STACK, &rl) != 0) { - perror("setrlimit"); - err_sys("setrlimit failed"); - } -} - -#else /* STACK_TRAP */ - -static WC_INLINE void StackTrap(void) -{ -} - -#endif /* STACK_TRAP */ - - -#if defined(ATOMIC_USER) && !defined(WOLFSSL_AEAD_ONLY) - -/* Atomic Encrypt Context example */ -typedef struct AtomicEncCtx { - int keySetup; /* have we done key setup yet */ - Aes aes; /* for aes example */ -} AtomicEncCtx; - - -/* Atomic Decrypt Context example */ -typedef struct AtomicDecCtx { - int keySetup; /* have we done key setup yet */ - Aes aes; /* for aes example */ -} AtomicDecCtx; - - -static WC_INLINE int myMacEncryptCb(WOLFSSL* ssl, unsigned char* macOut, - const unsigned char* macIn, unsigned int macInSz, int macContent, - int macVerify, unsigned char* encOut, const unsigned char* encIn, - unsigned int encSz, void* ctx) -{ - int ret; - Hmac hmac; - byte myInner[WOLFSSL_TLS_HMAC_INNER_SZ]; - AtomicEncCtx* encCtx = (AtomicEncCtx*)ctx; - const char* tlsStr = "TLS"; - - /* example supports (d)tls aes */ - if (wolfSSL_GetBulkCipher(ssl) != wolfssl_aes) { - printf("myMacEncryptCb not using AES\n"); - return -1; - } - - if (strstr(wolfSSL_get_version(ssl), tlsStr) == NULL) { - printf("myMacEncryptCb not using (D)TLS\n"); - return -1; - } - - /* hmac, not needed if aead mode */ - wolfSSL_SetTlsHmacInner(ssl, myInner, macInSz, macContent, macVerify); - - ret = wc_HmacInit(&hmac, NULL, INVALID_DEVID); - if (ret != 0) - return ret; - ret = wc_HmacSetKey(&hmac, wolfSSL_GetHmacType(ssl), - wolfSSL_GetMacSecret(ssl, macVerify), wolfSSL_GetHmacSize(ssl)); - if (ret != 0) - return ret; - ret = wc_HmacUpdate(&hmac, myInner, sizeof(myInner)); - if (ret != 0) - return ret; - ret = wc_HmacUpdate(&hmac, macIn, macInSz); - if (ret != 0) - return ret; - ret = wc_HmacFinal(&hmac, macOut); - if (ret != 0) - return ret; - - - /* encrypt setup on first time */ - if (encCtx->keySetup == 0) { - int keyLen = wolfSSL_GetKeySize(ssl); - const byte* key; - const byte* iv; - - if (wolfSSL_GetSide(ssl) == WOLFSSL_CLIENT_END) { - key = wolfSSL_GetClientWriteKey(ssl); - iv = wolfSSL_GetClientWriteIV(ssl); - } - else { - key = wolfSSL_GetServerWriteKey(ssl); - iv = wolfSSL_GetServerWriteIV(ssl); - } - - ret = wc_AesSetKey(&encCtx->aes, key, keyLen, iv, AES_ENCRYPTION); - if (ret != 0) { - printf("AesSetKey failed in myMacEncryptCb\n"); - return ret; - } - encCtx->keySetup = 1; - } - - /* encrypt */ - return wc_AesCbcEncrypt(&encCtx->aes, encOut, encIn, encSz); -} - - -static WC_INLINE int myDecryptVerifyCb(WOLFSSL* ssl, - unsigned char* decOut, const unsigned char* decIn, - unsigned int decSz, int macContent, int macVerify, - unsigned int* padSz, void* ctx) -{ - AtomicDecCtx* decCtx = (AtomicDecCtx*)ctx; - int ret = 0; - int macInSz = 0; - int ivExtra = 0; - int digestSz = wolfSSL_GetHmacSize(ssl); - unsigned int pad = 0; - unsigned int padByte = 0; - Hmac hmac; - byte myInner[WOLFSSL_TLS_HMAC_INNER_SZ]; - byte verify[WC_MAX_DIGEST_SIZE]; - const char* tlsStr = "TLS"; - - /* example supports (d)tls aes */ - if (wolfSSL_GetBulkCipher(ssl) != wolfssl_aes) { - printf("myMacEncryptCb not using AES\n"); - return -1; - } - - if (strstr(wolfSSL_get_version(ssl), tlsStr) == NULL) { - printf("myMacEncryptCb not using (D)TLS\n"); - return -1; - } - - /*decrypt */ - if (decCtx->keySetup == 0) { - int keyLen = wolfSSL_GetKeySize(ssl); - const byte* key; - const byte* iv; - - /* decrypt is from other side (peer) */ - if (wolfSSL_GetSide(ssl) == WOLFSSL_SERVER_END) { - key = wolfSSL_GetClientWriteKey(ssl); - iv = wolfSSL_GetClientWriteIV(ssl); - } - else { - key = wolfSSL_GetServerWriteKey(ssl); - iv = wolfSSL_GetServerWriteIV(ssl); - } - - ret = wc_AesSetKey(&decCtx->aes, key, keyLen, iv, AES_DECRYPTION); - if (ret != 0) { - printf("AesSetKey failed in myDecryptVerifyCb\n"); - return ret; - } - decCtx->keySetup = 1; - } - - /* decrypt */ - ret = wc_AesCbcDecrypt(&decCtx->aes, decOut, decIn, decSz); - if (ret != 0) - return ret; - - if (wolfSSL_GetCipherType(ssl) == WOLFSSL_AEAD_TYPE) { - *padSz = wolfSSL_GetAeadMacSize(ssl); - return 0; /* hmac, not needed if aead mode */ - } - - if (wolfSSL_GetCipherType(ssl) == WOLFSSL_BLOCK_TYPE) { - pad = *(decOut + decSz - 1); - padByte = 1; - if (wolfSSL_IsTLSv1_1(ssl)) - ivExtra = wolfSSL_GetCipherBlockSize(ssl); - } - - *padSz = wolfSSL_GetHmacSize(ssl) + pad + padByte; - macInSz = decSz - ivExtra - digestSz - pad - padByte; - - wolfSSL_SetTlsHmacInner(ssl, myInner, macInSz, macContent, macVerify); - - ret = wc_HmacInit(&hmac, NULL, INVALID_DEVID); - if (ret != 0) - return ret; - ret = wc_HmacSetKey(&hmac, wolfSSL_GetHmacType(ssl), - wolfSSL_GetMacSecret(ssl, macVerify), digestSz); - if (ret != 0) - return ret; - ret = wc_HmacUpdate(&hmac, myInner, sizeof(myInner)); - if (ret != 0) - return ret; - ret = wc_HmacUpdate(&hmac, decOut + ivExtra, macInSz); - if (ret != 0) - return ret; - ret = wc_HmacFinal(&hmac, verify); - if (ret != 0) - return ret; - - if (XMEMCMP(verify, decOut + decSz - digestSz - pad - padByte, - digestSz) != 0) { - printf("myDecryptVerify verify failed\n"); - return -1; - } - - return ret; -} - -#if defined(HAVE_ENCRYPT_THEN_MAC) - -static WC_INLINE int myEncryptMacCb(WOLFSSL* ssl, unsigned char* macOut, - int content, int macVerify, unsigned char* encOut, - const unsigned char* encIn, unsigned int encSz, void* ctx) -{ - int ret; - Hmac hmac; - AtomicEncCtx* encCtx = (AtomicEncCtx*)ctx; - byte myInner[WOLFSSL_TLS_HMAC_INNER_SZ]; - const char* tlsStr = "TLS"; - - /* example supports (d)tls aes */ - if (wolfSSL_GetBulkCipher(ssl) != wolfssl_aes) { - printf("myMacEncryptCb not using AES\n"); - return -1; - } - - if (strstr(wolfSSL_get_version(ssl), tlsStr) == NULL) { - printf("myMacEncryptCb not using (D)TLS\n"); - return -1; - } - - /* encrypt setup on first time */ - if (encCtx->keySetup == 0) { - int keyLen = wolfSSL_GetKeySize(ssl); - const byte* key; - const byte* iv; - - if (wolfSSL_GetSide(ssl) == WOLFSSL_CLIENT_END) { - key = wolfSSL_GetClientWriteKey(ssl); - iv = wolfSSL_GetClientWriteIV(ssl); - } - else { - key = wolfSSL_GetServerWriteKey(ssl); - iv = wolfSSL_GetServerWriteIV(ssl); - } - - ret = wc_AesSetKey(&encCtx->aes, key, keyLen, iv, AES_ENCRYPTION); - if (ret != 0) { - printf("AesSetKey failed in myMacEncryptCb\n"); - return ret; - } - encCtx->keySetup = 1; - } - - /* encrypt */ - ret = wc_AesCbcEncrypt(&encCtx->aes, encOut, encIn, encSz); - if (ret != 0) - return ret; - - /* Reconstruct record header. */ - wolfSSL_SetTlsHmacInner(ssl, myInner, encSz, content, macVerify); - - ret = wc_HmacInit(&hmac, NULL, INVALID_DEVID); - if (ret != 0) - return ret; - ret = wc_HmacSetKey(&hmac, wolfSSL_GetHmacType(ssl), - wolfSSL_GetMacSecret(ssl, macVerify), wolfSSL_GetHmacSize(ssl)); - if (ret != 0) - return ret; - ret = wc_HmacUpdate(&hmac, myInner, sizeof(myInner)); - if (ret != 0) - return ret; - ret = wc_HmacUpdate(&hmac, encOut, encSz); - if (ret != 0) - return ret; - return wc_HmacFinal(&hmac, macOut); -} - - -static WC_INLINE int myVerifyDecryptCb(WOLFSSL* ssl, - unsigned char* decOut, const unsigned char* decIn, - unsigned int decSz, int content, int macVerify, - unsigned int* padSz, void* ctx) -{ - AtomicDecCtx* decCtx = (AtomicDecCtx*)ctx; - int ret = 0; - int digestSz = wolfSSL_GetHmacSize(ssl); - Hmac hmac; - byte myInner[WOLFSSL_TLS_HMAC_INNER_SZ]; - byte verify[WC_MAX_DIGEST_SIZE]; - const char* tlsStr = "TLS"; - - /* example supports (d)tls aes */ - if (wolfSSL_GetBulkCipher(ssl) != wolfssl_aes) { - printf("myMacEncryptCb not using AES\n"); - return -1; - } - - if (strstr(wolfSSL_get_version(ssl), tlsStr) == NULL) { - printf("myMacEncryptCb not using (D)TLS\n"); - return -1; - } - - /* Reconstruct record header. */ - wolfSSL_SetTlsHmacInner(ssl, myInner, decSz, content, macVerify); - - ret = wc_HmacInit(&hmac, NULL, INVALID_DEVID); - if (ret != 0) - return ret; - ret = wc_HmacSetKey(&hmac, wolfSSL_GetHmacType(ssl), - wolfSSL_GetMacSecret(ssl, macVerify), digestSz); - if (ret != 0) - return ret; - ret = wc_HmacUpdate(&hmac, myInner, sizeof(myInner)); - if (ret != 0) - return ret; - ret = wc_HmacUpdate(&hmac, decIn, decSz); - if (ret != 0) - return ret; - ret = wc_HmacFinal(&hmac, verify); - if (ret != 0) - return ret; - - if (XMEMCMP(verify, decOut + decSz, digestSz) != 0) { - printf("myDecryptVerify verify failed\n"); - return -1; - } - - /* decrypt */ - if (decCtx->keySetup == 0) { - int keyLen = wolfSSL_GetKeySize(ssl); - const byte* key; - const byte* iv; - - /* decrypt is from other side (peer) */ - if (wolfSSL_GetSide(ssl) == WOLFSSL_SERVER_END) { - key = wolfSSL_GetClientWriteKey(ssl); - iv = wolfSSL_GetClientWriteIV(ssl); - } - else { - key = wolfSSL_GetServerWriteKey(ssl); - iv = wolfSSL_GetServerWriteIV(ssl); - } - - ret = wc_AesSetKey(&decCtx->aes, key, keyLen, iv, AES_DECRYPTION); - if (ret != 0) { - printf("AesSetKey failed in myDecryptVerifyCb\n"); - return ret; - } - decCtx->keySetup = 1; - } - - /* decrypt */ - ret = wc_AesCbcDecrypt(&decCtx->aes, decOut, decIn, decSz); - if (ret != 0) - return ret; - - *padSz = *(decOut + decSz - 1) + 1; - - return 0; -} - -#endif - - -static WC_INLINE void SetupAtomicUser(WOLFSSL_CTX* ctx, WOLFSSL* ssl) -{ - AtomicEncCtx* encCtx; - AtomicDecCtx* decCtx; - - encCtx = (AtomicEncCtx*)malloc(sizeof(AtomicEncCtx)); - if (encCtx == NULL) - err_sys("AtomicEncCtx malloc failed"); - XMEMSET(encCtx, 0, sizeof(AtomicEncCtx)); - - decCtx = (AtomicDecCtx*)malloc(sizeof(AtomicDecCtx)); - if (decCtx == NULL) { - free(encCtx); - err_sys("AtomicDecCtx malloc failed"); - } - XMEMSET(decCtx, 0, sizeof(AtomicDecCtx)); - - wolfSSL_CTX_SetMacEncryptCb(ctx, myMacEncryptCb); - wolfSSL_SetMacEncryptCtx(ssl, encCtx); - - wolfSSL_CTX_SetDecryptVerifyCb(ctx, myDecryptVerifyCb); - wolfSSL_SetDecryptVerifyCtx(ssl, decCtx); - -#if defined(HAVE_ENCRYPT_THEN_MAC) - wolfSSL_CTX_SetEncryptMacCb(ctx, myEncryptMacCb); - wolfSSL_SetEncryptMacCtx(ssl, encCtx); - - wolfSSL_CTX_SetVerifyDecryptCb(ctx, myVerifyDecryptCb); - wolfSSL_SetVerifyDecryptCtx(ssl, decCtx); -#endif -} - - -static WC_INLINE void FreeAtomicUser(WOLFSSL* ssl) -{ - AtomicEncCtx* encCtx = (AtomicEncCtx*)wolfSSL_GetMacEncryptCtx(ssl); - AtomicDecCtx* decCtx = (AtomicDecCtx*)wolfSSL_GetDecryptVerifyCtx(ssl); - - /* Encrypt-Then-MAC callbacks use same contexts. */ - - free(decCtx); - free(encCtx); -} - -#endif /* ATOMIC_USER */ - -#ifdef WOLFSSL_STATIC_MEMORY -static WC_INLINE int wolfSSL_PrintStats(WOLFSSL_MEM_STATS* stats) -{ - word16 i; - - if (stats == NULL) { - return 0; - } - - /* print to stderr so is on the same pipe as WOLFSSL_DEBUG */ - fprintf(stderr, "Total mallocs = %d\n", stats->totalAlloc); - fprintf(stderr, "Total frees = %d\n", stats->totalFr); - fprintf(stderr, "Current mallocs = %d\n", stats->curAlloc); - fprintf(stderr, "Available IO = %d\n", stats->avaIO); - fprintf(stderr, "Max con. handshakes = %d\n", stats->maxHa); - fprintf(stderr, "Max con. IO = %d\n", stats->maxIO); - fprintf(stderr, "State of memory blocks: size : available \n"); - for (i = 0; i < WOLFMEM_MAX_BUCKETS; i++) { - fprintf(stderr, " : %d\t : %d\n", stats->blockSz[i], - stats->avaBlock[i]); - } - - return 1; -} -#endif /* WOLFSSL_STATIC_MEMORY */ - -#ifdef HAVE_PK_CALLBACKS - -typedef struct PkCbInfo { - const char* ourKey; -#ifdef TEST_PK_PRIVKEY - union { - #ifdef HAVE_ECC - ecc_key ecc; - #endif - #ifdef HAVE_CURVE25519 - curve25519_key curve; - #endif - #ifdef HAVE_CURVE448 - curve448_key curve; - #endif - } keyGen; -#endif -} PkCbInfo; - -#if defined(DEBUG_PK_CB) || defined(TEST_PK_PRIVKEY) - #define WOLFSSL_PKMSG(_f_, ...) printf(_f_, ##__VA_ARGS__) -#else - #define WOLFSSL_PKMSG(_f_, ...) -#endif - -#ifdef HAVE_ECC - -static WC_INLINE int myEccKeyGen(WOLFSSL* ssl, ecc_key* key, word32 keySz, - int ecc_curve, void* ctx) -{ - int ret; - WC_RNG rng; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - ecc_key* new_key; -#ifdef TEST_PK_PRIVKEY - byte qx[MAX_ECC_BYTES], qy[MAX_ECC_BYTES]; - word32 qxLen = sizeof(qx), qyLen = sizeof(qy); - - new_key = &cbInfo->keyGen.ecc; -#else - new_key = key; -#endif - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK ECC KeyGen: keySz %d, Curve ID %d\n", keySz, ecc_curve); - - ret = wc_InitRng(&rng); - if (ret != 0) - return ret; - - ret = wc_ecc_init(new_key); - if (ret == 0) { - /* create new key */ - ret = wc_ecc_make_key_ex(&rng, keySz, new_key, ecc_curve); - - #ifdef TEST_PK_PRIVKEY - if (ret == 0) { - /* extract public portion from new key into `key` arg */ - ret = wc_ecc_export_public_raw(new_key, qx, &qxLen, qy, &qyLen); - if (ret == 0) { - /* load public portion only into key */ - ret = wc_ecc_import_unsigned(key, qx, qy, NULL, ecc_curve); - } - (void)qxLen; - (void)qyLen; - } - #endif - } - - WOLFSSL_PKMSG("PK ECC KeyGen: ret %d\n", ret); - - wc_FreeRng(&rng); - - return ret; -} - -static WC_INLINE int myEccSign(WOLFSSL* ssl, const byte* in, word32 inSz, - byte* out, word32* outSz, const byte* key, word32 keySz, void* ctx) -{ - int ret; - WC_RNG rng; - word32 idx = 0; - ecc_key myKey; - byte* keyBuf = (byte*)key; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK ECC Sign: inSz %d, keySz %d\n", inSz, keySz); - -#ifdef TEST_PK_PRIVKEY - ret = load_key_file(cbInfo->ourKey, &keyBuf, &keySz); - if (ret != 0) - return ret; -#endif - - ret = wc_InitRng(&rng); - if (ret != 0) - return ret; - - ret = wc_ecc_init(&myKey); - if (ret == 0) { - ret = wc_EccPrivateKeyDecode(keyBuf, &idx, &myKey, keySz); - if (ret == 0) { - WOLFSSL_PKMSG("PK ECC Sign: Curve ID %d\n", myKey.dp->id); - ret = wc_ecc_sign_hash(in, inSz, out, outSz, &rng, &myKey); - } - wc_ecc_free(&myKey); - } - wc_FreeRng(&rng); - -#ifdef TEST_PK_PRIVKEY - free(keyBuf); -#endif - - WOLFSSL_PKMSG("PK ECC Sign: ret %d outSz %d\n", ret, *outSz); - - return ret; -} - - -static WC_INLINE int myEccVerify(WOLFSSL* ssl, const byte* sig, word32 sigSz, - const byte* hash, word32 hashSz, const byte* key, word32 keySz, - int* result, void* ctx) -{ - int ret; - word32 idx = 0; - ecc_key myKey; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK ECC Verify: sigSz %d, hashSz %d, keySz %d\n", sigSz, hashSz, keySz); - - ret = wc_ecc_init(&myKey); - if (ret == 0) { - ret = wc_EccPublicKeyDecode(key, &idx, &myKey, keySz); - if (ret == 0) - ret = wc_ecc_verify_hash(sig, sigSz, hash, hashSz, result, &myKey); - wc_ecc_free(&myKey); - } - - WOLFSSL_PKMSG("PK ECC Verify: ret %d, result %d\n", ret, *result); - - return ret; -} - -static WC_INLINE int myEccSharedSecret(WOLFSSL* ssl, ecc_key* otherKey, - unsigned char* pubKeyDer, unsigned int* pubKeySz, - unsigned char* out, unsigned int* outlen, - int side, void* ctx) -{ - int ret; - ecc_key* privKey = NULL; - ecc_key* pubKey = NULL; - ecc_key tmpKey; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK ECC PMS: Side %s, Peer Curve %d\n", - side == WOLFSSL_CLIENT_END ? "client" : "server", otherKey->dp->id); - - ret = wc_ecc_init(&tmpKey); - if (ret != 0) { - return ret; - } - - /* for client: create and export public key */ - if (side == WOLFSSL_CLIENT_END) { - WC_RNG rng; - - privKey = &tmpKey; - pubKey = otherKey; - - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_ecc_make_key_ex(&rng, 0, privKey, otherKey->dp->id); - #ifdef WOLFSSL_ASYNC_CRYPT - if (ret == WC_PENDING_E) { - ret = wc_AsyncWait(ret, &privKey->asyncDev, WC_ASYNC_FLAG_NONE); - } - #endif - if (ret == 0) - ret = wc_ecc_export_x963(privKey, pubKeyDer, pubKeySz); - wc_FreeRng(&rng); - } - } - - /* for server: import public key */ - else if (side == WOLFSSL_SERVER_END) { - #ifdef TEST_PK_PRIVKEY - privKey = &cbInfo->keyGen.ecc; - #else - privKey = otherKey; - #endif - pubKey = &tmpKey; - - ret = wc_ecc_import_x963_ex(pubKeyDer, *pubKeySz, pubKey, - otherKey->dp->id); - } - else { - ret = BAD_FUNC_ARG; - } - - /* generate shared secret and return it */ - if (ret == 0) { - ret = wc_ecc_shared_secret(privKey, pubKey, out, outlen); - - #ifdef WOLFSSL_ASYNC_CRYPT - if (ret == WC_PENDING_E) { - ret = wc_AsyncWait(ret, &privKey->asyncDev, WC_ASYNC_FLAG_CALL_AGAIN); - } - #endif - } - -#ifdef TEST_PK_PRIVKEY - if (side == WOLFSSL_SERVER_END) { - wc_ecc_free(&cbInfo->keyGen.ecc); - } -#endif - - wc_ecc_free(&tmpKey); - - WOLFSSL_PKMSG("PK ECC PMS: ret %d, PubKeySz %d, OutLen %d\n", ret, *pubKeySz, *outlen); - - return ret; -} - -#ifdef HAVE_ED25519 -static WC_INLINE int myEd25519Sign(WOLFSSL* ssl, const byte* in, word32 inSz, - byte* out, word32* outSz, const byte* key, word32 keySz, void* ctx) -{ - int ret; - word32 idx = 0; - ed25519_key myKey; - byte* keyBuf = (byte*)key; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK 25519 Sign: inSz %d, keySz %d\n", inSz, keySz); - -#ifdef TEST_PK_PRIVKEY - ret = load_key_file(cbInfo->ourKey, &keyBuf, &keySz); - if (ret != 0) - return ret; -#endif - - ret = wc_ed25519_init(&myKey); - if (ret == 0) { - ret = wc_Ed25519PrivateKeyDecode(keyBuf, &idx, &myKey, keySz); - if (ret == 0) - ret = wc_ed25519_sign_msg(in, inSz, out, outSz, &myKey); - wc_ed25519_free(&myKey); - } - -#ifdef TEST_PK_PRIVKEY - free(keyBuf); -#endif - - WOLFSSL_PKMSG("PK 25519 Sign: ret %d, outSz %d\n", ret, *outSz); - - return ret; -} - - -static WC_INLINE int myEd25519Verify(WOLFSSL* ssl, const byte* sig, word32 sigSz, - const byte* msg, word32 msgSz, const byte* key, word32 keySz, - int* result, void* ctx) -{ - int ret; - ed25519_key myKey; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK 25519 Verify: sigSz %d, msgSz %d, keySz %d\n", sigSz, msgSz, keySz); - - ret = wc_ed25519_init(&myKey); - if (ret == 0) { - ret = wc_ed25519_import_public(key, keySz, &myKey); - if (ret == 0) { - ret = wc_ed25519_verify_msg(sig, sigSz, msg, msgSz, result, &myKey); - } - wc_ed25519_free(&myKey); - } - - WOLFSSL_PKMSG("PK 25519 Verify: ret %d, result %d\n", ret, *result); - - return ret; -} -#endif /* HAVE_ED25519 */ - -#ifdef HAVE_CURVE25519 -static WC_INLINE int myX25519KeyGen(WOLFSSL* ssl, curve25519_key* key, - unsigned int keySz, void* ctx) -{ - int ret; - WC_RNG rng; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK 25519 KeyGen: keySz %d\n", keySz); - - ret = wc_InitRng(&rng); - if (ret != 0) - return ret; - - ret = wc_curve25519_make_key(&rng, keySz, key); - - wc_FreeRng(&rng); - - WOLFSSL_PKMSG("PK 25519 KeyGen: ret %d\n", ret); - - return ret; -} - -static WC_INLINE int myX25519SharedSecret(WOLFSSL* ssl, curve25519_key* otherKey, - unsigned char* pubKeyDer, unsigned int* pubKeySz, - unsigned char* out, unsigned int* outlen, - int side, void* ctx) -{ - int ret; - curve25519_key* privKey = NULL; - curve25519_key* pubKey = NULL; - curve25519_key tmpKey; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK 25519 PMS: side %s\n", - side == WOLFSSL_CLIENT_END ? "client" : "server"); - - ret = wc_curve25519_init(&tmpKey); - if (ret != 0) { - return ret; - } - - /* for client: create and export public key */ - if (side == WOLFSSL_CLIENT_END) { - WC_RNG rng; - - privKey = &tmpKey; - pubKey = otherKey; - - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_curve25519_make_key(&rng, CURVE25519_KEYSIZE, privKey); - if (ret == 0) { - ret = wc_curve25519_export_public_ex(privKey, pubKeyDer, - pubKeySz, EC25519_LITTLE_ENDIAN); - } - wc_FreeRng(&rng); - } - } - - /* for server: import public key */ - else if (side == WOLFSSL_SERVER_END) { - privKey = otherKey; - pubKey = &tmpKey; - - ret = wc_curve25519_import_public_ex(pubKeyDer, *pubKeySz, pubKey, - EC25519_LITTLE_ENDIAN); - } - else { - ret = BAD_FUNC_ARG; - } - - /* generate shared secret and return it */ - if (ret == 0) { - ret = wc_curve25519_shared_secret_ex(privKey, pubKey, out, outlen, - EC25519_LITTLE_ENDIAN); - } - - wc_curve25519_free(&tmpKey); - - WOLFSSL_PKMSG("PK 25519 PMS: ret %d, pubKeySz %d, outLen %d\n", - ret, *pubKeySz, *outlen); - - return ret; -} -#endif /* HAVE_CURVE25519 */ - -#ifdef HAVE_ED448 -static WC_INLINE int myEd448Sign(WOLFSSL* ssl, const byte* in, word32 inSz, - byte* out, word32* outSz, const byte* key, word32 keySz, void* ctx) -{ - int ret; - word32 idx = 0; - ed448_key myKey; - byte* keyBuf = (byte*)key; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK 448 Sign: inSz %d, keySz %d\n", inSz, keySz); - -#ifdef TEST_PK_PRIVKEY - ret = load_key_file(cbInfo->ourKey, &keyBuf, &keySz); - if (ret != 0) - return ret; -#endif - - ret = wc_ed448_init(&myKey); - if (ret == 0) { - ret = wc_Ed448PrivateKeyDecode(keyBuf, &idx, &myKey, keySz); - if (ret == 0) - ret = wc_ed448_sign_msg(in, inSz, out, outSz, &myKey); - wc_ed448_free(&myKey); - } - -#ifdef TEST_PK_PRIVKEY - free(keyBuf); -#endif - - WOLFSSL_PKMSG("PK 448 Sign: ret %d, outSz %d\n", ret, *outSz); - - return ret; -} - - -static WC_INLINE int myEd448Verify(WOLFSSL* ssl, const byte* sig, word32 sigSz, - const byte* msg, word32 msgSz, const byte* key, word32 keySz, - int* result, void* ctx) -{ - int ret; - ed448_key myKey; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK 448 Verify: sigSz %d, msgSz %d, keySz %d\n", sigSz, msgSz, - keySz); - - ret = wc_ed448_init(&myKey); - if (ret == 0) { - ret = wc_ed448_import_public(key, keySz, &myKey); - if (ret == 0) { - ret = wc_ed448_verify_msg(sig, sigSz, msg, msgSz, result, &myKey); - } - wc_ed448_free(&myKey); - } - - WOLFSSL_PKMSG("PK 448 Verify: ret %d, result %d\n", ret, *result); - - return ret; -} -#endif /* HAVE_ED448 */ - -#ifdef HAVE_CURVE448 -static WC_INLINE int myX448KeyGen(WOLFSSL* ssl, curve448_key* key, - unsigned int keySz, void* ctx) -{ - int ret; - WC_RNG rng; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK 448 KeyGen: keySz %d\n", keySz); - - ret = wc_InitRng(&rng); - if (ret != 0) - return ret; - - ret = wc_curve448_make_key(&rng, keySz, key); - - wc_FreeRng(&rng); - - WOLFSSL_PKMSG("PK 448 KeyGen: ret %d\n", ret); - - return ret; -} - -static WC_INLINE int myX448SharedSecret(WOLFSSL* ssl, curve448_key* otherKey, - unsigned char* pubKeyDer, unsigned int* pubKeySz, - unsigned char* out, unsigned int* outlen, - int side, void* ctx) -{ - int ret; - curve448_key* privKey = NULL; - curve448_key* pubKey = NULL; - curve448_key tmpKey; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK 448 PMS: side %s\n", - side == WOLFSSL_CLIENT_END ? "client" : "server"); - - ret = wc_curve448_init(&tmpKey); - if (ret != 0) { - return ret; - } - - /* for client: create and export public key */ - if (side == WOLFSSL_CLIENT_END) { - WC_RNG rng; - - privKey = &tmpKey; - pubKey = otherKey; - - ret = wc_InitRng(&rng); - if (ret == 0) { - ret = wc_curve448_make_key(&rng, CURVE448_KEY_SIZE, privKey); - if (ret == 0) { - ret = wc_curve448_export_public_ex(privKey, pubKeyDer, - pubKeySz, EC448_LITTLE_ENDIAN); - } - wc_FreeRng(&rng); - } - } - - /* for server: import public key */ - else if (side == WOLFSSL_SERVER_END) { - privKey = otherKey; - pubKey = &tmpKey; - - ret = wc_curve448_import_public_ex(pubKeyDer, *pubKeySz, pubKey, - EC448_LITTLE_ENDIAN); - } - else { - ret = BAD_FUNC_ARG; - } - - /* generate shared secret and return it */ - if (ret == 0) { - ret = wc_curve448_shared_secret_ex(privKey, pubKey, out, outlen, - EC448_LITTLE_ENDIAN); - } - - wc_curve448_free(&tmpKey); - - WOLFSSL_PKMSG("PK 448 PMS: ret %d, pubKeySz %d, outLen %d\n", - ret, *pubKeySz, *outlen); - - return ret; -} -#endif /* HAVE_CURVE448 */ - -#endif /* HAVE_ECC */ - -#ifndef NO_DH -static WC_INLINE int myDhCallback(WOLFSSL* ssl, struct DhKey* key, - const unsigned char* priv, unsigned int privSz, - const unsigned char* pubKeyDer, unsigned int pubKeySz, - unsigned char* out, unsigned int* outlen, - void* ctx) -{ - int ret; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - - (void)ssl; - (void)cbInfo; - - /* return 0 on success */ - ret = wc_DhAgree(key, out, outlen, priv, privSz, pubKeyDer, pubKeySz); - - WOLFSSL_PKMSG("PK ED Agree: ret %d, privSz %d, pubKeySz %d, outlen %d\n", - ret, privSz, pubKeySz, *outlen); - - return ret; -}; - -#endif /* !NO_DH */ - -#ifndef NO_RSA - -static WC_INLINE int myRsaSign(WOLFSSL* ssl, const byte* in, word32 inSz, - byte* out, word32* outSz, const byte* key, word32 keySz, void* ctx) -{ - WC_RNG rng; - int ret; - word32 idx = 0; - RsaKey myKey; - byte* keyBuf = (byte*)key; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK RSA Sign: inSz %d, keySz %d\n", inSz, keySz); - -#ifdef TEST_PK_PRIVKEY - ret = load_key_file(cbInfo->ourKey, &keyBuf, &keySz); - if (ret != 0) - return ret; -#endif - - ret = wc_InitRng(&rng); - if (ret != 0) - return ret; - - ret = wc_InitRsaKey(&myKey, NULL); - if (ret == 0) { - ret = wc_RsaPrivateKeyDecode(keyBuf, &idx, &myKey, keySz); - if (ret == 0) - ret = wc_RsaSSL_Sign(in, inSz, out, *outSz, &myKey, &rng); - if (ret > 0) { /* save and convert to 0 success */ - *outSz = ret; - ret = 0; - } - wc_FreeRsaKey(&myKey); - } - wc_FreeRng(&rng); - -#ifdef TEST_PK_PRIVKEY - free(keyBuf); -#endif - - WOLFSSL_PKMSG("PK RSA Sign: ret %d, outSz %d\n", ret, *outSz); - - return ret; -} - - -static WC_INLINE int myRsaVerify(WOLFSSL* ssl, byte* sig, word32 sigSz, - byte** out, const byte* key, word32 keySz, void* ctx) -{ - int ret; - word32 idx = 0; - RsaKey myKey; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK RSA Verify: sigSz %d, keySz %d\n", sigSz, keySz); - - ret = wc_InitRsaKey(&myKey, NULL); - if (ret == 0) { - ret = wc_RsaPublicKeyDecode(key, &idx, &myKey, keySz); - if (ret == 0) - ret = wc_RsaSSL_VerifyInline(sig, sigSz, out, &myKey); - wc_FreeRsaKey(&myKey); - } - - WOLFSSL_PKMSG("PK RSA Verify: ret %d\n", ret); - - return ret; -} - -static WC_INLINE int myRsaSignCheck(WOLFSSL* ssl, byte* sig, word32 sigSz, - byte** out, const byte* key, word32 keySz, void* ctx) -{ - int ret; - word32 idx = 0; - RsaKey myKey; - byte* keyBuf = (byte*)key; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK RSA SignCheck: sigSz %d, keySz %d\n", sigSz, keySz); - -#ifdef TEST_PK_PRIVKEY - ret = load_key_file(cbInfo->ourKey, &keyBuf, &keySz); - if (ret != 0) - return ret; -#endif - - ret = wc_InitRsaKey(&myKey, NULL); - if (ret == 0) { - ret = wc_RsaPrivateKeyDecode(keyBuf, &idx, &myKey, keySz); - if (ret == 0) - ret = wc_RsaSSL_VerifyInline(sig, sigSz, out, &myKey); - wc_FreeRsaKey(&myKey); - } -#ifdef TEST_PK_PRIVKEY - free(keyBuf); -#endif - - WOLFSSL_PKMSG("PK RSA SignCheck: ret %d\n", ret); - - return ret; -} - -#ifdef WC_RSA_PSS -static WC_INLINE int myRsaPssSign(WOLFSSL* ssl, const byte* in, word32 inSz, - byte* out, word32* outSz, int hash, int mgf, const byte* key, - word32 keySz, void* ctx) -{ - enum wc_HashType hashType = WC_HASH_TYPE_NONE; - WC_RNG rng; - int ret; - word32 idx = 0; - RsaKey myKey; - byte* keyBuf = (byte*)key; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK RSA PSS Sign: inSz %d, hash %d, mgf %d, keySz %d\n", - inSz, hash, mgf, keySz); - -#ifdef TEST_PK_PRIVKEY - ret = load_key_file(cbInfo->ourKey, &keyBuf, &keySz); - if (ret != 0) - return ret; -#endif - - switch (hash) { -#ifndef NO_SHA256 - case SHA256h: - hashType = WC_HASH_TYPE_SHA256; - break; -#endif -#ifdef WOLFSSL_SHA384 - case SHA384h: - hashType = WC_HASH_TYPE_SHA384; - break; -#endif -#ifdef WOLFSSL_SHA512 - case SHA512h: - hashType = WC_HASH_TYPE_SHA512; - break; -#endif - } - - ret = wc_InitRng(&rng); - if (ret != 0) - return ret; - - ret = wc_InitRsaKey(&myKey, NULL); - if (ret == 0) { - ret = wc_RsaPrivateKeyDecode(keyBuf, &idx, &myKey, keySz); - if (ret == 0) { - ret = wc_RsaPSS_Sign(in, inSz, out, *outSz, hashType, mgf, &myKey, - &rng); - } - if (ret > 0) { /* save and convert to 0 success */ - *outSz = ret; - ret = 0; - } - wc_FreeRsaKey(&myKey); - } - wc_FreeRng(&rng); - -#ifdef TEST_PK_PRIVKEY - free(keyBuf); -#endif - - WOLFSSL_PKMSG("PK RSA PSS Sign: ret %d, outSz %d\n", ret, *outSz); - - return ret; -} - - -static WC_INLINE int myRsaPssVerify(WOLFSSL* ssl, byte* sig, word32 sigSz, - byte** out, int hash, int mgf, const byte* key, word32 keySz, void* ctx) -{ - int ret; - word32 idx = 0; - RsaKey myKey; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - enum wc_HashType hashType = WC_HASH_TYPE_NONE; - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK RSA PSS Verify: sigSz %d, hash %d, mgf %d, keySz %d\n", - sigSz, hash, mgf, keySz); - - switch (hash) { -#ifndef NO_SHA256 - case SHA256h: - hashType = WC_HASH_TYPE_SHA256; - break; -#endif -#ifdef WOLFSSL_SHA384 - case SHA384h: - hashType = WC_HASH_TYPE_SHA384; - break; -#endif -#ifdef WOLFSSL_SHA512 - case SHA512h: - hashType = WC_HASH_TYPE_SHA512; - break; -#endif - } - - ret = wc_InitRsaKey(&myKey, NULL); - if (ret == 0) { - ret = wc_RsaPublicKeyDecode(key, &idx, &myKey, keySz); - if (ret == 0) { - ret = wc_RsaPSS_VerifyInline(sig, sigSz, out, hashType, mgf, - &myKey); - } - wc_FreeRsaKey(&myKey); - } - - WOLFSSL_PKMSG("PK RSA PSS Verify: ret %d\n", ret); - - return ret; -} - -static WC_INLINE int myRsaPssSignCheck(WOLFSSL* ssl, byte* sig, word32 sigSz, - byte** out, int hash, int mgf, const byte* key, word32 keySz, void* ctx) -{ - int ret; - word32 idx = 0; - RsaKey myKey; - byte* keyBuf = (byte*)key; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - enum wc_HashType hashType = WC_HASH_TYPE_NONE; - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK RSA PSS SignCheck: sigSz %d, hash %d, mgf %d, keySz %d\n", - sigSz, hash, mgf, keySz); - -#ifdef TEST_PK_PRIVKEY - ret = load_key_file(cbInfo->ourKey, &keyBuf, &keySz); - if (ret != 0) - return ret; -#endif - - switch (hash) { -#ifndef NO_SHA256 - case SHA256h: - hashType = WC_HASH_TYPE_SHA256; - break; -#endif -#ifdef WOLFSSL_SHA384 - case SHA384h: - hashType = WC_HASH_TYPE_SHA384; - break; -#endif -#ifdef WOLFSSL_SHA512 - case SHA512h: - hashType = WC_HASH_TYPE_SHA512; - break; -#endif - } - - ret = wc_InitRsaKey(&myKey, NULL); - if (ret == 0) { - ret = wc_RsaPrivateKeyDecode(keyBuf, &idx, &myKey, keySz); - if (ret == 0) { - ret = wc_RsaPSS_VerifyInline(sig, sigSz, out, hashType, mgf, - &myKey); - } - wc_FreeRsaKey(&myKey); - } - -#ifdef TEST_PK_PRIVKEY - free(keyBuf); -#endif - - WOLFSSL_PKMSG("PK RSA PSS SignCheck: ret %d\n", ret); - - return ret; -} -#endif - - -static WC_INLINE int myRsaEnc(WOLFSSL* ssl, const byte* in, word32 inSz, - byte* out, word32* outSz, const byte* key, - word32 keySz, void* ctx) -{ - int ret; - word32 idx = 0; - RsaKey myKey; - WC_RNG rng; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK RSA Enc: inSz %d, keySz %d\n", inSz, keySz); - - ret = wc_InitRng(&rng); - if (ret != 0) - return ret; - - ret = wc_InitRsaKey(&myKey, NULL); - if (ret == 0) { - ret = wc_RsaPublicKeyDecode(key, &idx, &myKey, keySz); - if (ret == 0) { - ret = wc_RsaPublicEncrypt(in, inSz, out, *outSz, &myKey, &rng); - if (ret > 0) { - *outSz = ret; - ret = 0; /* reset to success */ - } - } - wc_FreeRsaKey(&myKey); - } - wc_FreeRng(&rng); - - WOLFSSL_PKMSG("PK RSA Enc: ret %d, outSz %d\n", ret, *outSz); - - return ret; -} - -static WC_INLINE int myRsaDec(WOLFSSL* ssl, byte* in, word32 inSz, - byte** out, - const byte* key, word32 keySz, void* ctx) -{ - int ret; - word32 idx = 0; - RsaKey myKey; - byte* keyBuf = (byte*)key; - PkCbInfo* cbInfo = (PkCbInfo*)ctx; - - (void)ssl; - (void)cbInfo; - - WOLFSSL_PKMSG("PK RSA Dec: inSz %d, keySz %d\n", inSz, keySz); - -#ifdef TEST_PK_PRIVKEY - ret = load_key_file(cbInfo->ourKey, &keyBuf, &keySz); - if (ret != 0) - return ret; -#endif - - ret = wc_InitRsaKey(&myKey, NULL); - if (ret == 0) { - ret = wc_RsaPrivateKeyDecode(keyBuf, &idx, &myKey, keySz); - if (ret == 0) { - #ifdef WC_RSA_BLINDING - ret = wc_RsaSetRNG(&myKey, wolfSSL_GetRNG(ssl)); - if (ret != 0) { - wc_FreeRsaKey(&myKey); - return ret; - } - #endif - ret = wc_RsaPrivateDecryptInline(in, inSz, out, &myKey); - } - wc_FreeRsaKey(&myKey); - } - -#ifdef TEST_PK_PRIVKEY - free(keyBuf); -#endif - - WOLFSSL_PKMSG("PK RSA Dec: ret %d\n", ret); - - return ret; -} - -#endif /* NO_RSA */ - -static WC_INLINE void SetupPkCallbacks(WOLFSSL_CTX* ctx) -{ - (void)ctx; - - #ifdef HAVE_ECC - wolfSSL_CTX_SetEccKeyGenCb(ctx, myEccKeyGen); - wolfSSL_CTX_SetEccSignCb(ctx, myEccSign); - wolfSSL_CTX_SetEccVerifyCb(ctx, myEccVerify); - wolfSSL_CTX_SetEccSharedSecretCb(ctx, myEccSharedSecret); - #endif /* HAVE_ECC */ - #ifndef NO_DH - wolfSSL_CTX_SetDhAgreeCb(ctx, myDhCallback); - #endif - #ifdef HAVE_ED25519 - wolfSSL_CTX_SetEd25519SignCb(ctx, myEd25519Sign); - wolfSSL_CTX_SetEd25519VerifyCb(ctx, myEd25519Verify); - #endif - #ifdef HAVE_CURVE25519 - wolfSSL_CTX_SetX25519KeyGenCb(ctx, myX25519KeyGen); - wolfSSL_CTX_SetX25519SharedSecretCb(ctx, myX25519SharedSecret); - #endif - #ifdef HAVE_ED448 - wolfSSL_CTX_SetEd448SignCb(ctx, myEd448Sign); - wolfSSL_CTX_SetEd448VerifyCb(ctx, myEd448Verify); - #endif - #ifdef HAVE_CURVE448 - wolfSSL_CTX_SetX448KeyGenCb(ctx, myX448KeyGen); - wolfSSL_CTX_SetX448SharedSecretCb(ctx, myX448SharedSecret); - #endif - #ifndef NO_RSA - wolfSSL_CTX_SetRsaSignCb(ctx, myRsaSign); - wolfSSL_CTX_SetRsaVerifyCb(ctx, myRsaVerify); - wolfSSL_CTX_SetRsaSignCheckCb(ctx, myRsaSignCheck); - #ifdef WC_RSA_PSS - wolfSSL_CTX_SetRsaPssSignCb(ctx, myRsaPssSign); - wolfSSL_CTX_SetRsaPssVerifyCb(ctx, myRsaPssVerify); - wolfSSL_CTX_SetRsaPssSignCheckCb(ctx, myRsaPssSignCheck); - #endif - wolfSSL_CTX_SetRsaEncCb(ctx, myRsaEnc); - wolfSSL_CTX_SetRsaDecCb(ctx, myRsaDec); - #endif /* NO_RSA */ -} - -static WC_INLINE void SetupPkCallbackContexts(WOLFSSL* ssl, void* myCtx) -{ - #ifdef HAVE_ECC - wolfSSL_SetEccKeyGenCtx(ssl, myCtx); - wolfSSL_SetEccSignCtx(ssl, myCtx); - wolfSSL_SetEccVerifyCtx(ssl, myCtx); - wolfSSL_SetEccSharedSecretCtx(ssl, myCtx); - #endif /* HAVE_ECC */ - #ifndef NO_DH - wolfSSL_SetDhAgreeCtx(ssl, myCtx); - #endif - #ifdef HAVE_ED25519 - wolfSSL_SetEd25519SignCtx(ssl, myCtx); - wolfSSL_SetEd25519VerifyCtx(ssl, myCtx); - #endif - #ifdef HAVE_CURVE25519 - wolfSSL_SetX25519KeyGenCtx(ssl, myCtx); - wolfSSL_SetX25519SharedSecretCtx(ssl, myCtx); - #endif - #ifdef HAVE_ED448 - wolfSSL_SetEd448SignCtx(ssl, myCtx); - wolfSSL_SetEd448VerifyCtx(ssl, myCtx); - #endif - #ifdef HAVE_CURVE448 - wolfSSL_SetX448KeyGenCtx(ssl, myCtx); - wolfSSL_SetX448SharedSecretCtx(ssl, myCtx); - #endif - #ifndef NO_RSA - wolfSSL_SetRsaSignCtx(ssl, myCtx); - wolfSSL_SetRsaVerifyCtx(ssl, myCtx); - #ifdef WC_RSA_PSS - wolfSSL_SetRsaPssSignCtx(ssl, myCtx); - wolfSSL_SetRsaPssVerifyCtx(ssl, myCtx); - #endif - wolfSSL_SetRsaEncCtx(ssl, myCtx); - wolfSSL_SetRsaDecCtx(ssl, myCtx); - #endif /* NO_RSA */ -} - -#endif /* HAVE_PK_CALLBACKS */ - - - - -#if defined(__hpux__) || defined(__MINGW32__) || defined (WOLFSSL_TIRTOS) \ - || defined(_MSC_VER) - -/* HP/UX doesn't have strsep, needed by test/suites.c */ -static WC_INLINE char* strsep(char **stringp, const char *delim) -{ - char* start; - char* end; - - start = *stringp; - if (start == NULL) - return NULL; - - if ((end = strpbrk(start, delim))) { - *end++ = '\0'; - *stringp = end; - } else { - *stringp = NULL; - } - - return start; -} - -#endif /* __hpux__ and others */ - -/* Create unique filename, len is length of tempfn name, assuming - len does not include null terminating character, - num is number of characters in tempfn name to randomize */ -static WC_INLINE const char* mymktemp(char *tempfn, int len, int num) -{ - int x, size; - static const char alphanum[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "abcdefghijklmnopqrstuvwxyz"; - WC_RNG rng; - byte out; - - if (tempfn == NULL || len < 1 || num < 1 || len <= num) { - printf("Bad input\n"); - return NULL; - } - - size = len - 1; - - if (wc_InitRng(&rng) != 0) { - printf("InitRng failed\n"); - return NULL; - } - - for (x = size; x > size - num; x--) { - if (wc_RNG_GenerateBlock(&rng,(byte*)&out, sizeof(out)) != 0) { - printf("RNG_GenerateBlock failed\n"); - return NULL; - } - tempfn[x] = alphanum[out % (sizeof(alphanum) - 1)]; - } - tempfn[len] = '\0'; - - wc_FreeRng(&rng); - (void)rng; /* for WC_NO_RNG case */ - - return tempfn; -} - - - -#if defined(HAVE_SESSION_TICKET) && defined(HAVE_CHACHA) && \ - defined(HAVE_POLY1305) - - #include <wolfssl/wolfcrypt/chacha20_poly1305.h> - - typedef struct key_ctx { - byte name[WOLFSSL_TICKET_NAME_SZ]; /* name for this context */ - byte key[CHACHA20_POLY1305_AEAD_KEYSIZE]; /* cipher key */ - } key_ctx; - - static THREAD_LS_T key_ctx myKey_ctx; - static THREAD_LS_T WC_RNG myKey_rng; - - static WC_INLINE int TicketInit(void) - { - int ret = wc_InitRng(&myKey_rng); - if (ret != 0) return ret; - - ret = wc_RNG_GenerateBlock(&myKey_rng, myKey_ctx.key, sizeof(myKey_ctx.key)); - if (ret != 0) return ret; - - ret = wc_RNG_GenerateBlock(&myKey_rng, myKey_ctx.name,sizeof(myKey_ctx.name)); - if (ret != 0) return ret; - - return 0; - } - - static WC_INLINE void TicketCleanup(void) - { - wc_FreeRng(&myKey_rng); - } - - static WC_INLINE int myTicketEncCb(WOLFSSL* ssl, - byte key_name[WOLFSSL_TICKET_NAME_SZ], - byte iv[WOLFSSL_TICKET_IV_SZ], - byte mac[WOLFSSL_TICKET_MAC_SZ], - int enc, byte* ticket, int inLen, int* outLen, - void* userCtx) - { - (void)ssl; - (void)userCtx; - - int ret; - word16 sLen = XHTONS(inLen); - byte aad[WOLFSSL_TICKET_NAME_SZ + WOLFSSL_TICKET_IV_SZ + 2]; - int aadSz = WOLFSSL_TICKET_NAME_SZ + WOLFSSL_TICKET_IV_SZ + 2; - byte* tmp = aad; - - if (enc) { - XMEMCPY(key_name, myKey_ctx.name, WOLFSSL_TICKET_NAME_SZ); - - ret = wc_RNG_GenerateBlock(&myKey_rng, iv, WOLFSSL_TICKET_IV_SZ); - if (ret != 0) return WOLFSSL_TICKET_RET_REJECT; - - /* build aad from key name, iv, and length */ - XMEMCPY(tmp, key_name, WOLFSSL_TICKET_NAME_SZ); - tmp += WOLFSSL_TICKET_NAME_SZ; - XMEMCPY(tmp, iv, WOLFSSL_TICKET_IV_SZ); - tmp += WOLFSSL_TICKET_IV_SZ; - XMEMCPY(tmp, &sLen, 2); - - ret = wc_ChaCha20Poly1305_Encrypt(myKey_ctx.key, iv, - aad, aadSz, - ticket, inLen, - ticket, - mac); - if (ret != 0) return WOLFSSL_TICKET_RET_REJECT; - *outLen = inLen; /* no padding in this mode */ - } else { - /* decrypt */ - - /* see if we know this key */ - if (XMEMCMP(key_name, myKey_ctx.name, WOLFSSL_TICKET_NAME_SZ) != 0){ - printf("client presented unknown ticket key name "); - return WOLFSSL_TICKET_RET_FATAL; - } - - /* build aad from key name, iv, and length */ - XMEMCPY(tmp, key_name, WOLFSSL_TICKET_NAME_SZ); - tmp += WOLFSSL_TICKET_NAME_SZ; - XMEMCPY(tmp, iv, WOLFSSL_TICKET_IV_SZ); - tmp += WOLFSSL_TICKET_IV_SZ; - XMEMCPY(tmp, &sLen, 2); - - ret = wc_ChaCha20Poly1305_Decrypt(myKey_ctx.key, iv, - aad, aadSz, - ticket, inLen, - mac, - ticket); - if (ret != 0) return WOLFSSL_TICKET_RET_REJECT; - *outLen = inLen; /* no padding in this mode */ - } - - return WOLFSSL_TICKET_RET_OK; - } - -#endif /* HAVE_SESSION_TICKET && CHACHA20 && POLY1305 */ - -static WC_INLINE word16 GetRandomPort(void) -{ - word16 port = 0; - - /* Generate random port for testing */ - WC_RNG rng; - if (wc_InitRng(&rng) == 0) { - if (wc_RNG_GenerateBlock(&rng, (byte*)&port, sizeof(port)) == 0) { - port |= 0xC000; /* Make sure its in the 49152 - 65535 range */ - } - wc_FreeRng(&rng); - } - (void)rng; /* for WC_NO_RNG case */ - return port; -} - -#endif /* wolfSSL_TEST_H */ diff --git a/client/wolfssl/wolfssl/version.h b/client/wolfssl/wolfssl/version.h deleted file mode 100644 index 332cadf..0000000 --- a/client/wolfssl/wolfssl/version.h +++ /dev/null @@ -1,40 +0,0 @@ -/* wolfssl_version.h.in - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLFSSL_VERSION_H -#define WOLFSSL_VERSION_H - - -#ifdef __cplusplus -extern "C" { -#endif - -#define LIBWOLFSSL_VERSION_STRING "4.4.0" -#define LIBWOLFSSL_VERSION_HEX 0x04004000 - -#ifdef __cplusplus -} -#endif - - -#endif /* WOLFSSL_VERSION_H */ - diff --git a/client/wolfssl/wolfssl/version.h.in b/client/wolfssl/wolfssl/version.h.in deleted file mode 100644 index 0a25a3b..0000000 --- a/client/wolfssl/wolfssl/version.h.in +++ /dev/null @@ -1,40 +0,0 @@ -/* wolfssl_version.h.in - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLFSSL_VERSION_H -#define WOLFSSL_VERSION_H - - -#ifdef __cplusplus -extern "C" { -#endif - -#define LIBWOLFSSL_VERSION_STRING "@VERSION@" -#define LIBWOLFSSL_VERSION_HEX @HEX_VERSION@ - -#ifdef __cplusplus -} -#endif - - -#endif /* WOLFSSL_VERSION_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/aes.h b/client/wolfssl/wolfssl/wolfcrypt/aes.h deleted file mode 100644 index 8582918..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/aes.h +++ /dev/null @@ -1,437 +0,0 @@ -/* aes.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/aes.h -*/ - - -#ifndef WOLF_CRYPT_AES_H -#define WOLF_CRYPT_AES_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifndef NO_AES - -#if defined(HAVE_FIPS) && \ - defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2) - #include <wolfssl/wolfcrypt/fips.h> -#endif /* HAVE_FIPS_VERSION >= 2 */ - -/* included for fips @wc_fips */ -#if defined(HAVE_FIPS) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 2)) -#include <cyassl/ctaocrypt/aes.h> -#if defined(CYASSL_AES_COUNTER) && !defined(WOLFSSL_AES_COUNTER) - #define WOLFSSL_AES_COUNTER -#endif -#if !defined(WOLFSSL_AES_DIRECT) && defined(CYASSL_AES_DIRECT) - #define WOLFSSL_AES_DIRECT -#endif -#endif - -#ifndef WC_NO_RNG - #include <wolfssl/wolfcrypt/random.h> -#endif -#ifdef STM32_CRYPTO - #include <wolfssl/wolfcrypt/port/st/stm32.h> -#endif - -#ifdef WOLFSSL_AESNI - -#include <wmmintrin.h> -#include <emmintrin.h> -#include <smmintrin.h> - -#endif /* WOLFSSL_AESNI */ - - -#ifdef WOLFSSL_XILINX_CRYPT -#include "xsecure_aes.h" -#endif - -#if defined(WOLFSSL_AFALG) || defined(WOLFSSL_AFALG_XILINX_AES) -/* included for struct msghdr */ -#include <wolfssl/wolfcrypt/port/af_alg/wc_afalg.h> -#endif - -#if defined(WOLFSSL_DEVCRYPTO_AES) || defined(WOLFSSL_DEVCRYPTO_CBC) -#include <wolfssl/wolfcrypt/port/devcrypto/wc_devcrypto.h> -#endif - -#if defined(HAVE_AESGCM) && !defined(WC_NO_RNG) - #include <wolfssl/wolfcrypt/random.h> -#endif - -#if defined(WOLFSSL_CRYPTOCELL) - #include <wolfssl/wolfcrypt/port/arm/cryptoCell.h> -#endif - -#if defined(WOLFSSL_RENESAS_TSIP_TLS) && \ - defined(WOLFSSL_RENESAS_TSIP_TLS_AES_CRYPT) - #include <wolfssl/wolfcrypt/port/Renesas/renesas-tsip-crypt.h> -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -#ifndef WOLFSSL_AES_KEY_SIZE_ENUM -#define WOLFSSL_AES_KEY_SIZE_ENUM -/* these are required for FIPS and non-FIPS */ -enum { - AES_128_KEY_SIZE = 16, /* for 128 bit */ - AES_192_KEY_SIZE = 24, /* for 192 bit */ - AES_256_KEY_SIZE = 32, /* for 256 bit */ - - AES_IV_SIZE = 16, /* always block size */ -}; -#endif - -/* avoid redefinition of structs */ -#if !defined(HAVE_FIPS) || \ - (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)) - -#ifdef WOLFSSL_ASYNC_CRYPT - #include <wolfssl/wolfcrypt/async.h> -#endif - -enum { - AES_ENC_TYPE = WC_CIPHER_AES, /* cipher unique type */ - AES_ENCRYPTION = 0, - AES_DECRYPTION = 1, - - AES_BLOCK_SIZE = 16, - - KEYWRAP_BLOCK_SIZE = 8, - - GCM_NONCE_MAX_SZ = 16, /* wolfCrypt's maximum nonce size allowed. */ - GCM_NONCE_MID_SZ = 12, /* The usual default nonce size for AES-GCM. */ - GCM_NONCE_MIN_SZ = 8, /* wolfCrypt's minimum nonce size allowed. */ - CCM_NONCE_MIN_SZ = 7, - CCM_NONCE_MAX_SZ = 13, - CTR_SZ = 4, - AES_IV_FIXED_SZ = 4, -#ifdef WOLFSSL_AES_CFB - AES_CFB_MODE = 1, -#endif -#ifdef WOLFSSL_AES_OFB - AES_OFB_MODE = 2, -#endif -#ifdef WOLFSSL_AES_XTS - AES_XTS_MODE = 3, -#endif - -#ifdef HAVE_PKCS11 - AES_MAX_ID_LEN = 32, -#endif -}; - - -struct Aes { - /* AESNI needs key first, rounds 2nd, not sure why yet */ - ALIGN16 word32 key[60]; - word32 rounds; - int keylen; - - ALIGN16 word32 reg[AES_BLOCK_SIZE / sizeof(word32)]; /* for CBC mode */ - ALIGN16 word32 tmp[AES_BLOCK_SIZE / sizeof(word32)]; /* same */ - -#if defined(HAVE_AESGCM) || defined(HAVE_AESCCM) - word32 invokeCtr[2]; - word32 nonceSz; -#endif -#ifdef HAVE_AESGCM - ALIGN16 byte H[AES_BLOCK_SIZE]; -#ifdef OPENSSL_EXTRA - word32 aadH[4]; /* additional authenticated data GHASH */ - word32 aadLen; /* additional authenticated data len */ -#endif - -#ifdef GCM_TABLE - /* key-based fast multiplication table. */ - ALIGN16 byte M0[256][AES_BLOCK_SIZE]; -#endif /* GCM_TABLE */ -#ifdef HAVE_CAVIUM_OCTEON_SYNC - word32 y0; -#endif -#endif /* HAVE_AESGCM */ -#ifdef WOLFSSL_AESNI - byte use_aesni; -#endif /* WOLFSSL_AESNI */ -#ifdef WOLF_CRYPTO_CB - int devId; - void* devCtx; -#endif -#ifdef HAVE_PKCS11 - byte id[AES_MAX_ID_LEN]; - int idLen; -#endif -#ifdef WOLFSSL_ASYNC_CRYPT - WC_ASYNC_DEV asyncDev; -#endif /* WOLFSSL_ASYNC_CRYPT */ -#if defined(WOLFSSL_AES_COUNTER) || defined(WOLFSSL_AES_CFB) || \ - defined(WOLFSSL_AES_OFB) || defined(WOLFSSL_AES_XTS) - word32 left; /* unused bytes left from last call */ -#endif -#ifdef WOLFSSL_XILINX_CRYPT - XSecure_Aes xilAes; - XCsuDma dma; - word32 key_init[8]; - word32 kup; -#endif -#if defined(WOLFSSL_AFALG) || defined(WOLFSSL_AFALG_XILINX_AES) - int alFd; /* server socket to bind to */ - int rdFd; /* socket to read from */ - struct msghdr msg; - int dir; /* flag for encrpyt or decrypt */ -#ifdef WOLFSSL_AFALG_XILINX_AES - word32 msgBuf[CMSG_SPACE(4) + CMSG_SPACE(sizeof(struct af_alg_iv) + - GCM_NONCE_MID_SZ)]; -#endif -#endif -#if defined(WOLF_CRYPTO_CB) || (defined(WOLFSSL_DEVCRYPTO) && \ - (defined(WOLFSSL_DEVCRYPTO_AES) || defined(WOLFSSL_DEVCRYPTO_CBC))) || \ - (defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_AES)) - word32 devKey[AES_MAX_KEY_SIZE/WOLFSSL_BIT_SIZE/sizeof(word32)]; /* raw key */ -#ifdef HAVE_CAVIUM_OCTEON_SYNC - int keySet; -#endif -#endif -#if defined(WOLFSSL_DEVCRYPTO) && \ - (defined(WOLFSSL_DEVCRYPTO_AES) || defined(WOLFSSL_DEVCRYPTO_CBC)) - WC_CRYPTODEV ctx; -#endif -#if defined(WOLFSSL_CRYPTOCELL) - aes_context_t ctx; -#endif -#if defined(WOLFSSL_RENESAS_TSIP_TLS) && \ - defined(WOLFSSL_RENESAS_TSIP_TLS_AES_CRYPT) - TSIP_AES_CTX ctx; -#endif - void* heap; /* memory hint to use */ -}; - -#ifndef WC_AES_TYPE_DEFINED - typedef struct Aes Aes; - #define WC_AES_TYPE_DEFINED -#endif - -#ifdef WOLFSSL_AES_XTS -typedef struct XtsAes { - Aes aes; - Aes tweak; -} XtsAes; -#endif - -#ifdef HAVE_AESGCM -typedef struct Gmac { - Aes aes; -} Gmac; -#endif /* HAVE_AESGCM */ -#endif /* HAVE_FIPS */ - - -/* Authenticate cipher function prototypes */ -typedef int (*wc_AesAuthEncryptFunc)(Aes* aes, byte* out, - const byte* in, word32 sz, - const byte* iv, word32 ivSz, - byte* authTag, word32 authTagSz, - const byte* authIn, word32 authInSz); -typedef int (*wc_AesAuthDecryptFunc)(Aes* aes, byte* out, - const byte* in, word32 sz, - const byte* iv, word32 ivSz, - const byte* authTag, word32 authTagSz, - const byte* authIn, word32 authInSz); - -/* AES-CBC */ -WOLFSSL_API int wc_AesSetKey(Aes* aes, const byte* key, word32 len, - const byte* iv, int dir); -WOLFSSL_API int wc_AesSetIV(Aes* aes, const byte* iv); - -#ifdef HAVE_AES_CBC -WOLFSSL_API int wc_AesCbcEncrypt(Aes* aes, byte* out, - const byte* in, word32 sz); -WOLFSSL_API int wc_AesCbcDecrypt(Aes* aes, byte* out, - const byte* in, word32 sz); -#endif - -#ifdef WOLFSSL_AES_CFB -WOLFSSL_API int wc_AesCfbEncrypt(Aes* aes, byte* out, - const byte* in, word32 sz); -WOLFSSL_API int wc_AesCfb1Encrypt(Aes* aes, byte* out, - const byte* in, word32 sz); -WOLFSSL_API int wc_AesCfb8Encrypt(Aes* aes, byte* out, - const byte* in, word32 sz); -#ifdef HAVE_AES_DECRYPT -WOLFSSL_API int wc_AesCfbDecrypt(Aes* aes, byte* out, - const byte* in, word32 sz); -WOLFSSL_API int wc_AesCfb1Decrypt(Aes* aes, byte* out, - const byte* in, word32 sz); -WOLFSSL_API int wc_AesCfb8Decrypt(Aes* aes, byte* out, - const byte* in, word32 sz); -#endif /* HAVE_AES_DECRYPT */ -#endif /* WOLFSSL_AES_CFB */ - -#ifdef WOLFSSL_AES_OFB -WOLFSSL_API int wc_AesOfbEncrypt(Aes* aes, byte* out, - const byte* in, word32 sz); -#ifdef HAVE_AES_DECRYPT -WOLFSSL_API int wc_AesOfbDecrypt(Aes* aes, byte* out, - const byte* in, word32 sz); -#endif /* HAVE_AES_DECRYPT */ -#endif /* WOLFSSL_AES_OFB */ - -#ifdef HAVE_AES_ECB -WOLFSSL_API int wc_AesEcbEncrypt(Aes* aes, byte* out, - const byte* in, word32 sz); -WOLFSSL_API int wc_AesEcbDecrypt(Aes* aes, byte* out, - const byte* in, word32 sz); -#endif - -/* AES-CTR */ -#ifdef WOLFSSL_AES_COUNTER - WOLFSSL_API int wc_AesCtrEncrypt(Aes* aes, byte* out, - const byte* in, word32 sz); -#endif -/* AES-DIRECT */ -#if defined(WOLFSSL_AES_DIRECT) - WOLFSSL_API void wc_AesEncryptDirect(Aes* aes, byte* out, const byte* in); - WOLFSSL_API void wc_AesDecryptDirect(Aes* aes, byte* out, const byte* in); - WOLFSSL_API int wc_AesSetKeyDirect(Aes* aes, const byte* key, word32 len, - const byte* iv, int dir); -#endif - -#ifdef HAVE_AESGCM -#ifdef WOLFSSL_XILINX_CRYPT - WOLFSSL_API int wc_AesGcmSetKey_ex(Aes* aes, const byte* key, word32 len, - word32 kup); -#elif defined(WOLFSSL_AFALG_XILINX_AES) - WOLFSSL_LOCAL int wc_AesGcmSetKey_ex(Aes* aes, const byte* key, word32 len, - word32 kup); -#endif - WOLFSSL_API int wc_AesGcmSetKey(Aes* aes, const byte* key, word32 len); - WOLFSSL_API int wc_AesGcmEncrypt(Aes* aes, byte* out, - const byte* in, word32 sz, - const byte* iv, word32 ivSz, - byte* authTag, word32 authTagSz, - const byte* authIn, word32 authInSz); - WOLFSSL_API int wc_AesGcmDecrypt(Aes* aes, byte* out, - const byte* in, word32 sz, - const byte* iv, word32 ivSz, - const byte* authTag, word32 authTagSz, - const byte* authIn, word32 authInSz); - -#ifndef WC_NO_RNG - WOLFSSL_API int wc_AesGcmSetExtIV(Aes* aes, const byte* iv, word32 ivSz); - WOLFSSL_API int wc_AesGcmSetIV(Aes* aes, word32 ivSz, - const byte* ivFixed, word32 ivFixedSz, - WC_RNG* rng); - WOLFSSL_API int wc_AesGcmEncrypt_ex(Aes* aes, byte* out, - const byte* in, word32 sz, - byte* ivOut, word32 ivOutSz, - byte* authTag, word32 authTagSz, - const byte* authIn, word32 authInSz); -#endif /* WC_NO_RNG */ - - WOLFSSL_API int wc_GmacSetKey(Gmac* gmac, const byte* key, word32 len); - WOLFSSL_API int wc_GmacUpdate(Gmac* gmac, const byte* iv, word32 ivSz, - const byte* authIn, word32 authInSz, - byte* authTag, word32 authTagSz); -#ifndef WC_NO_RNG - WOLFSSL_API int wc_Gmac(const byte* key, word32 keySz, byte* iv, word32 ivSz, - const byte* authIn, word32 authInSz, - byte* authTag, word32 authTagSz, WC_RNG* rng); - WOLFSSL_API int wc_GmacVerify(const byte* key, word32 keySz, - const byte* iv, word32 ivSz, - const byte* authIn, word32 authInSz, - const byte* authTag, word32 authTagSz); -#endif /* WC_NO_RNG */ - WOLFSSL_LOCAL void GHASH(Aes* aes, const byte* a, word32 aSz, const byte* c, - word32 cSz, byte* s, word32 sSz); -#endif /* HAVE_AESGCM */ -#ifdef HAVE_AESCCM - WOLFSSL_API int wc_AesCcmSetKey(Aes* aes, const byte* key, word32 keySz); - WOLFSSL_API int wc_AesCcmEncrypt(Aes* aes, byte* out, - const byte* in, word32 inSz, - const byte* nonce, word32 nonceSz, - byte* authTag, word32 authTagSz, - const byte* authIn, word32 authInSz); - WOLFSSL_API int wc_AesCcmDecrypt(Aes* aes, byte* out, - const byte* in, word32 inSz, - const byte* nonce, word32 nonceSz, - const byte* authTag, word32 authTagSz, - const byte* authIn, word32 authInSz); - WOLFSSL_API int wc_AesCcmSetNonce(Aes* aes, - const byte* nonce, word32 nonceSz); - WOLFSSL_API int wc_AesCcmEncrypt_ex(Aes* aes, byte* out, - const byte* in, word32 sz, - byte* ivOut, word32 ivOutSz, - byte* authTag, word32 authTagSz, - const byte* authIn, word32 authInSz); -#endif /* HAVE_AESCCM */ -#ifdef HAVE_AES_KEYWRAP - WOLFSSL_API int wc_AesKeyWrap(const byte* key, word32 keySz, - const byte* in, word32 inSz, - byte* out, word32 outSz, - const byte* iv); - WOLFSSL_API int wc_AesKeyUnWrap(const byte* key, word32 keySz, - const byte* in, word32 inSz, - byte* out, word32 outSz, - const byte* iv); -#endif /* HAVE_AES_KEYWRAP */ - -#ifdef WOLFSSL_AES_XTS - -WOLFSSL_API int wc_AesXtsSetKey(XtsAes* aes, const byte* key, - word32 len, int dir, void* heap, int devId); - -WOLFSSL_API int wc_AesXtsEncryptSector(XtsAes* aes, byte* out, - const byte* in, word32 sz, word64 sector); - -WOLFSSL_API int wc_AesXtsDecryptSector(XtsAes* aes, byte* out, - const byte* in, word32 sz, word64 sector); - -WOLFSSL_API int wc_AesXtsEncrypt(XtsAes* aes, byte* out, - const byte* in, word32 sz, const byte* i, word32 iSz); - -WOLFSSL_API int wc_AesXtsDecrypt(XtsAes* aes, byte* out, - const byte* in, word32 sz, const byte* i, word32 iSz); - -WOLFSSL_API int wc_AesXtsFree(XtsAes* aes); -#endif - -WOLFSSL_API int wc_AesGetKeySize(Aes* aes, word32* keySize); - -WOLFSSL_API int wc_AesInit(Aes* aes, void* heap, int devId); -#ifdef HAVE_PKCS11 -WOLFSSL_API int wc_AesInit_Id(Aes* aes, unsigned char* id, int len, void* heap, - int devId); -#endif -WOLFSSL_API void wc_AesFree(Aes* aes); - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* NO_AES */ -#endif /* WOLF_CRYPT_AES_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/arc4.h b/client/wolfssl/wolfssl/wolfcrypt/arc4.h deleted file mode 100644 index bcdc907..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/arc4.h +++ /dev/null @@ -1,68 +0,0 @@ -/* arc4.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/arc4.h -*/ - -#ifndef WOLF_CRYPT_ARC4_H -#define WOLF_CRYPT_ARC4_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef __cplusplus - extern "C" { -#endif - -#ifdef WOLFSSL_ASYNC_CRYPT - #include <wolfssl/wolfcrypt/async.h> -#endif - -enum { - ARC4_ENC_TYPE = 4, /* cipher unique type */ - ARC4_STATE_SIZE = 256, - RC4_KEY_SIZE = 16, /* always 128bit */ -}; - -/* ARC4 encryption and decryption */ -typedef struct Arc4 { - byte x; - byte y; - byte state[ARC4_STATE_SIZE]; -#ifdef WOLFSSL_ASYNC_CRYPT - WC_ASYNC_DEV asyncDev; -#endif - void* heap; -} Arc4; - -WOLFSSL_API int wc_Arc4Process(Arc4*, byte*, const byte*, word32); -WOLFSSL_API int wc_Arc4SetKey(Arc4*, const byte*, word32); - -WOLFSSL_API int wc_Arc4Init(Arc4*, void*, int); -WOLFSSL_API void wc_Arc4Free(Arc4*); - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* WOLF_CRYPT_ARC4_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/asn.h b/client/wolfssl/wolfssl/wolfcrypt/asn.h deleted file mode 100644 index 6bdda02..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/asn.h +++ /dev/null @@ -1,1470 +0,0 @@ -/* asn.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/asn.h -*/ - -#ifndef WOLF_CRYPT_ASN_H -#define WOLF_CRYPT_ASN_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifndef NO_ASN - - -#if !defined(NO_ASN_TIME) && defined(NO_TIME_H) - #define NO_ASN_TIME /* backwards compatibility with NO_TIME_H */ -#endif - -#include <wolfssl/wolfcrypt/integer.h> - -/* fips declare of RsaPrivateKeyDecode @wc_fips */ -#if defined(HAVE_FIPS) && !defined(NO_RSA) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 2)) - #include <cyassl/ctaocrypt/rsa.h> -#endif - -#ifndef NO_DH - #include <wolfssl/wolfcrypt/dh.h> -#endif -#ifndef NO_DSA - #include <wolfssl/wolfcrypt/dsa.h> -#endif -#ifndef NO_SHA - #include <wolfssl/wolfcrypt/sha.h> -#endif -#ifndef NO_MD5 - #include <wolfssl/wolfcrypt/md5.h> -#endif -#include <wolfssl/wolfcrypt/sha256.h> -#include <wolfssl/wolfcrypt/asn_public.h> /* public interface */ - -#if defined(NO_SHA) && defined(NO_SHA256) - #define WC_SHA256_DIGEST_SIZE 32 -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -#ifndef EXTERNAL_SERIAL_SIZE - #define EXTERNAL_SERIAL_SIZE 32 -#endif - -enum { - ISSUER = 0, - SUBJECT = 1, - - BEFORE = 0, - AFTER = 1 -}; - -/* ASN Tags */ -enum ASN_Tags { - ASN_EOC = 0x00, - ASN_BOOLEAN = 0x01, - ASN_INTEGER = 0x02, - ASN_BIT_STRING = 0x03, - ASN_OCTET_STRING = 0x04, - ASN_TAG_NULL = 0x05, - ASN_OBJECT_ID = 0x06, - ASN_ENUMERATED = 0x0a, - ASN_UTF8STRING = 0x0c, - ASN_SEQUENCE = 0x10, - ASN_SET = 0x11, - ASN_PRINTABLE_STRING = 0x13, - ASN_UTC_TIME = 0x17, - ASN_OTHER_TYPE = 0x00, - ASN_RFC822_TYPE = 0x01, - ASN_DNS_TYPE = 0x02, - ASN_DIR_TYPE = 0x04, - ASN_URI_TYPE = 0x06, /* the value 6 is from GeneralName OID */ - ASN_IP_TYPE = 0x07, /* the value 7 is from GeneralName OID */ - ASN_GENERALIZED_TIME = 0x18, - CRL_EXTENSIONS = 0xa0, - ASN_EXTENSIONS = 0xa3, - ASN_LONG_LENGTH = 0x80, - ASN_INDEF_LENGTH = 0x80, - - /* ASN_Flags - Bitmask */ - ASN_CONSTRUCTED = 0x20, - ASN_APPLICATION = 0x40, - ASN_CONTEXT_SPECIFIC = 0x80, -}; - -#define ASN_UTC_TIME_SIZE 14 -#define ASN_GENERALIZED_TIME_SIZE 16 -#define ASN_GENERALIZED_TIME_MAX 68 - -enum DN_Tags { - ASN_DN_NULL = 0x00, - ASN_COMMON_NAME = 0x03, /* CN */ - ASN_SUR_NAME = 0x04, /* SN */ - ASN_SERIAL_NUMBER = 0x05, /* serialNumber */ - ASN_COUNTRY_NAME = 0x06, /* C */ - ASN_LOCALITY_NAME = 0x07, /* L */ - ASN_STATE_NAME = 0x08, /* ST */ - ASN_ORG_NAME = 0x0a, /* O */ - ASN_ORGUNIT_NAME = 0x0b, /* OU */ - ASN_BUS_CAT = 0x0f, /* businessCategory */ - ASN_EMAIL_NAME = 0x98, /* not oid number there is 97 in 2.5.4.0-97 */ - - /* pilot attribute types - * OID values of 0.9.2342.19200300.100.1.* */ - ASN_USER_ID = 0x01, /* UID */ - ASN_DOMAIN_COMPONENT = 0x19 /* DC */ -}; - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) -typedef struct WOLFSSL_ObjectInfo { - int nid; - int id; - word32 type; - const char* sName; - const char* lName; -} WOLFSSL_ObjectInfo; -extern const size_t wolfssl_object_info_sz; -extern const WOLFSSL_ObjectInfo wolfssl_object_info[]; -#endif /* defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) */ - -/* DN Tag Strings */ -#define WOLFSSL_COMMON_NAME "/CN=" -#define WOLFSSL_LN_COMMON_NAME "/commonName=" -#define WOLFSSL_SUR_NAME "/SN=" -#define WOLFSSL_SERIAL_NUMBER "/serialNumber=" -#define WOLFSSL_COUNTRY_NAME "/C=" -#define WOLFSSL_LN_COUNTRY_NAME "/countryName=" -#define WOLFSSL_LOCALITY_NAME "/L=" -#define WOLFSSL_LN_LOCALITY_NAME "/localityName=" -#define WOLFSSL_STATE_NAME "/ST=" -#define WOLFSSL_LN_STATE_NAME "/stateOrProvinceName=" -#define WOLFSSL_ORG_NAME "/O=" -#define WOLFSSL_LN_ORG_NAME "/organizationName=" -#define WOLFSSL_ORGUNIT_NAME "/OU=" -#define WOLFSSL_LN_ORGUNIT_NAME "/organizationalUnitName=" -#define WOLFSSL_DOMAIN_COMPONENT "/DC=" -#define WOLFSSL_LN_DOMAIN_COMPONENT "/domainComponent=" -#define WOLFSSL_BUS_CAT "/businessCategory=" -#define WOLFSSL_JOI_C "/jurisdictionC=" -#define WOLFSSL_JOI_ST "/jurisdictionST=" -#define WOLFSSL_EMAIL_ADDR "/emailAddress=" - -#define WOLFSSL_USER_ID "/UID=" -#define WOLFSSL_DOMAIN_COMPONENT "/DC=" - -#if defined(WOLFSSL_APACHE_HTTPD) - /* otherName strings */ - #define WOLFSSL_SN_MS_UPN "msUPN" - #define WOLFSSL_LN_MS_UPN "Microsoft User Principal Name" - #define WOLFSSL_MS_UPN_SUM 265 - #define WOLFSSL_SN_DNS_SRV "id-on-dnsSRV" - #define WOLFSSL_LN_DNS_SRV "SRVName" - /* TLS features extension strings */ - #define WOLFSSL_SN_TLS_FEATURE "tlsfeature" - #define WOLFSSL_LN_TLS_FEATURE "TLS Feature" - #define WOLFSSL_TLS_FEATURE_SUM 92 -#endif - -/* NIDs */ -enum -{ - NID_undef = 0, - NID_netscape_cert_type = NID_undef, - NID_des = 66, - NID_des3 = 67, - NID_sha256 = 672, - NID_sha384 = 673, - NID_sha512 = 674, - NID_hw_name_oid = 73, - NID_id_pkix_OCSP_basic = 74, - NID_any_policy = 75, - NID_anyExtendedKeyUsage = 76, - NID_givenName = 99, - NID_initials = 101, - NID_title = 106, - NID_description = 107, - NID_basic_constraints = 133, - NID_key_usage = 129, /* 2.5.29.15 */ - NID_ext_key_usage = 151, /* 2.5.29.37 */ - NID_subject_key_identifier = 128, - NID_authority_key_identifier = 149, - NID_private_key_usage_period = 130, /* 2.5.29.16 */ - NID_subject_alt_name = 131, - NID_issuer_alt_name = 132, - NID_info_access = 69, - NID_sinfo_access = 79, /* id-pe 11 */ - NID_name_constraints = 144, /* 2.5.29.30 */ - NID_crl_distribution_points = 145, /* 2.5.29.31 */ - NID_certificate_policies = 146, - NID_policy_mappings = 147, - NID_policy_constraints = 150, - NID_inhibit_any_policy = 168, /* 2.5.29.54 */ - NID_tlsfeature = 1020, /* id-pe 24 */ - NID_commonName = 0x03, /* matches ASN_COMMON_NAME in asn.h */ - - - NID_surname = 0x04, /* SN */ - NID_serialNumber = 0x05, /* serialNumber */ - NID_countryName = 0x06, /* C */ - NID_localityName = 0x07, /* L */ - NID_stateOrProvinceName = 0x08, /* ST */ - NID_organizationName = 0x0a, /* O */ - NID_organizationalUnitName = 0x0b, /* OU */ - NID_jurisdictionCountryName = 0xc, - NID_jurisdictionStateOrProvinceName = 0xd, - NID_businessCategory = ASN_BUS_CAT, - NID_domainComponent = ASN_DOMAIN_COMPONENT, - NID_emailAddress = 0x30, /* emailAddress */ - NID_id_on_dnsSRV = 82, /* 1.3.6.1.5.5.7.8.7 */ - NID_ms_upn = 265, /* 1.3.6.1.4.1.311.20.2.3 */ - - NID_X9_62_prime_field = 406 /* 1.2.840.10045.1.1 */ -}; - -enum ECC_TYPES -{ - ECC_PREFIX_0 = 160, - ECC_PREFIX_1 = 161 -}; - -#ifdef WOLFSSL_CERT_PIV - enum PIV_Tags { - ASN_PIV_CERT = 0x0A, - ASN_PIV_NONCE = 0x0B, - ASN_PIV_SIGNED_NONCE = 0x0C, - - ASN_PIV_TAG_CERT = 0x70, - ASN_PIV_TAG_CERT_INFO = 0x71, - ASN_PIV_TAG_MSCUID = 0x72, - ASN_PIV_TAG_ERR_DET = 0xFE, - - /* certificate info masks */ - ASN_PIV_CERT_INFO_COMPRESSED = 0x03, - ASN_PIV_CERT_INFO_ISX509 = 0x04, - }; -#endif /* WOLFSSL_CERT_PIV */ - - -#define ASN_JOI_PREFIX_SZ 10 -#define ASN_JOI_PREFIX "\x2b\x06\x01\x04\x01\x82\x37\x3c\x02\x01" -#define ASN_JOI_C 0x3 -#define ASN_JOI_ST 0x2 - -#ifndef WC_ASN_NAME_MAX - #ifdef OPENSSL_EXTRA - #define WC_ASN_NAME_MAX 300 - #else - #define WC_ASN_NAME_MAX 256 - #endif -#endif -#define ASN_NAME_MAX WC_ASN_NAME_MAX - -enum Misc_ASN { - MAX_SALT_SIZE = 64, /* MAX PKCS Salt length */ - MAX_IV_SIZE = 64, /* MAX PKCS Iv length */ - ASN_BOOL_SIZE = 2, /* including type */ - ASN_ECC_HEADER_SZ = 2, /* String type + 1 byte len */ - ASN_ECC_CONTEXT_SZ = 2, /* Content specific type + 1 byte len */ -#ifdef NO_SHA - KEYID_SIZE = WC_SHA256_DIGEST_SIZE, -#else - KEYID_SIZE = WC_SHA_DIGEST_SIZE, -#endif - RSA_INTS = 8, /* RSA ints in private key */ - DSA_INTS = 5, /* DSA ints in private key */ - MIN_DATE_SIZE = 13, - MAX_DATE_SIZE = 32, - ASN_GEN_TIME_SZ = 15, /* 7 numbers * 2 + Zulu tag */ -#ifndef NO_RSA - MAX_ENCODED_SIG_SZ = 512, -#elif defined(HAVE_ECC) - MAX_ENCODED_SIG_SZ = 140, -#elif defined(HAVE_CURVE448) - MAX_ENCODED_SIG_SZ = 114, -#else - MAX_ENCODED_SIG_SZ = 64, -#endif - MAX_SIG_SZ = 256, - MAX_ALGO_SZ = 20, - MAX_SHORT_SZ = 6, /* asn int + byte len + 4 byte length */ - MAX_SEQ_SZ = 5, /* enum(seq | con) + length(4) */ - MAX_SET_SZ = 5, /* enum(set | con) + length(4) */ - MAX_OCTET_STR_SZ = 5, /* enum(set | con) + length(4) */ - MAX_EXP_SZ = 5, /* enum(contextspec|con|exp) + length(4) */ - MAX_PRSTR_SZ = 5, /* enum(prstr) + length(4) */ - MAX_VERSION_SZ = 5, /* enum + id + version(byte) + (header(2))*/ - MAX_ENCODED_DIG_ASN_SZ= 9, /* enum(bit or octet) + length(4) */ - MAX_ENCODED_DIG_SZ = 64 + MAX_ENCODED_DIG_ASN_SZ, /* asn header + sha512 */ - MAX_RSA_INT_SZ = 517, /* RSA raw sz 4096 for bits + tag + len(4) */ - MAX_DSA_INT_SZ = 261, /* DSA raw sz 2048 for bits + tag + len(4) */ - MAX_NTRU_KEY_SZ = 610, /* NTRU 112 bit public key */ - MAX_NTRU_ENC_SZ = 628, /* NTRU 112 bit DER public encoding */ - MAX_LENGTH_SZ = 4, /* Max length size for DER encoding */ - MAX_RSA_E_SZ = 16, /* Max RSA public e size */ - MAX_CA_SZ = 32, /* Max encoded CA basic constraint length */ - MAX_SN_SZ = 35, /* Max encoded serial number (INT) length */ - MAX_DER_DIGEST_SZ = MAX_ENCODED_DIG_SZ + MAX_ALGO_SZ + MAX_SEQ_SZ, - /* Maximum DER digest size */ - MAX_DER_DIGEST_ASN_SZ = MAX_ENCODED_DIG_ASN_SZ + MAX_ALGO_SZ + MAX_SEQ_SZ, - /* Maximum DER digest ASN header size */ -#ifdef WOLFSSL_CERT_GEN - #ifdef WOLFSSL_CERT_REQ - /* Max encoded cert req attributes length */ - MAX_ATTRIB_SZ = MAX_SEQ_SZ * 3 + (11 + MAX_SEQ_SZ) * 2 + - MAX_PRSTR_SZ + CTC_NAME_SIZE, /* 11 is the OID size */ - #endif - #if defined(WOLFSSL_ALT_NAMES) || defined(WOLFSSL_CERT_EXT) - MAX_EXTENSIONS_SZ = 1 + MAX_LENGTH_SZ + CTC_MAX_ALT_SIZE, - #else - MAX_EXTENSIONS_SZ = 1 + MAX_LENGTH_SZ + MAX_CA_SZ, - #endif - /* Max total extensions, id + len + others */ -#endif -#if defined(WOLFSSL_CERT_EXT) || defined(OPENSSL_EXTRA) || defined(HAVE_PKCS7) - MAX_OID_SZ = 32, /* Max DER length of OID*/ - MAX_OID_STRING_SZ = 64, /* Max string length representation of OID*/ -#endif -#ifdef WOLFSSL_CERT_EXT - MAX_KID_SZ = 45, /* Max encoded KID length (SHA-256 case) */ - MAX_KEYUSAGE_SZ = 18, /* Max encoded Key Usage length */ - MAX_EXTKEYUSAGE_SZ = 12 + (6 * (8 + 2)) + - CTC_MAX_EKU_OID_SZ, /* Max encoded ExtKeyUsage - (SEQ/LEN + OBJID + OCTSTR/LEN + SEQ + - (6 * (SEQ + OID))) */ - MAX_CERTPOL_NB = CTC_MAX_CERTPOL_NB,/* Max number of Cert Policy */ - MAX_CERTPOL_SZ = CTC_MAX_CERTPOL_SZ, -#endif - MAX_AIA_SZ = 2, /* Max Authority Info Access extension size*/ - MAX_NAME_ENTRIES = 5, /* extra entries added to x509 name struct */ - OCSP_NONCE_EXT_SZ = 35, /* OCSP Nonce Extension size */ - MAX_OCSP_EXT_SZ = 58, /* Max OCSP Extension length */ - MAX_OCSP_NONCE_SZ = 16, /* OCSP Nonce size */ - EIGHTK_BUF = 8192, /* Tmp buffer size */ - MAX_PUBLIC_KEY_SZ = MAX_NTRU_ENC_SZ + MAX_ALGO_SZ + MAX_SEQ_SZ * 2, - /* use bigger NTRU size */ -#ifdef WOLFSSL_ENCRYPTED_KEYS - HEADER_ENCRYPTED_KEY_SIZE = 88,/* Extra header size for encrypted key */ -#else - HEADER_ENCRYPTED_KEY_SIZE = 0, -#endif - TRAILING_ZERO = 1, /* Used for size of zero pad */ - ASN_TAG_SZ = 1, /* single byte ASN.1 tag */ - MIN_VERSION_SZ = 3, /* Min bytes needed for GetMyVersion */ -#if defined(OPENSSL_ALL) || defined(WOLFSSL_MYSQL_COMPATIBLE) || \ - defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) || \ - defined(OPENSSL_EXTRA) || defined(HAVE_PKCS7) - MAX_TIME_STRING_SZ = 25, /* Max length of formatted time string */ -#endif - - PKCS5_SALT_SZ = 8, - - PEM_LINE_LEN = 80, /* PEM line max + fudge */ -}; - - -enum Oid_Types { - oidHashType = 0, - oidSigType = 1, - oidKeyType = 2, - oidCurveType = 3, - oidBlkType = 4, - oidOcspType = 5, - oidCertExtType = 6, - oidCertAuthInfoType = 7, - oidCertPolicyType = 8, - oidCertAltNameType = 9, - oidCertKeyUseType = 10, - oidKdfType = 11, - oidKeyWrapType = 12, - oidCmsKeyAgreeType = 13, - oidPBEType = 14, - oidHmacType = 15, - oidCompressType = 16, - oidCertNameType = 17, - oidTlsExtType = 18, - oidCrlExtType = 19, - oidIgnoreType -}; - - -enum Hash_Sum { - MD2h = 646, - MD5h = 649, - SHAh = 88, - SHA224h = 417, - SHA256h = 414, - SHA384h = 415, - SHA512h = 416, - SHA3_224h = 420, - SHA3_256h = 421, - SHA3_384h = 422, - SHA3_512h = 423 -}; - - -#if !defined(NO_DES3) || !defined(NO_AES) -enum Block_Sum { -#ifdef WOLFSSL_AES_128 - AES128CBCb = 414, - AES128GCMb = 418, - AES128CCMb = 419, -#endif -#ifdef WOLFSSL_AES_192 - AES192CBCb = 434, - AES192GCMb = 438, - AES192CCMb = 439, -#endif -#ifdef WOLFSSL_AES_256 - AES256CBCb = 454, - AES256GCMb = 458, - AES256CCMb = 459, -#endif -#ifndef NO_DES3 - DESb = 69, - DES3b = 652 -#endif -}; -#endif /* !NO_DES3 || !NO_AES */ - - -enum Key_Sum { - DSAk = 515, - RSAk = 645, - NTRUk = 274, - ECDSAk = 518, - ED25519k = 256, - ED448k = 257, - DHk = 647, /* dhKeyAgreement OID: 1.2.840.113549.1.3.1 */ -}; - -#if !defined(NO_AES) || defined(HAVE_PKCS7) -enum KeyWrap_Sum { -#ifdef WOLFSSL_AES_128 - AES128_WRAP = 417, -#endif -#ifdef WOLFSSL_AES_192 - AES192_WRAP = 437, -#endif -#ifdef WOLFSSL_AES_256 - AES256_WRAP = 457, -#endif -#ifdef HAVE_PKCS7 - PWRI_KEK_WRAP = 680 /*id-alg-PWRI-KEK, 1.2.840.113549.1.9.16.3.9 */ -#endif -}; -#endif /* !NO_AES || PKCS7 */ - -enum Key_Agree { - dhSinglePass_stdDH_sha1kdf_scheme = 464, - dhSinglePass_stdDH_sha224kdf_scheme = 188, - dhSinglePass_stdDH_sha256kdf_scheme = 189, - dhSinglePass_stdDH_sha384kdf_scheme = 190, - dhSinglePass_stdDH_sha512kdf_scheme = 191, -}; - - - -enum KDF_Sum { - PBKDF2_OID = 660 -}; - - -enum HMAC_Sum { - HMAC_SHA224_OID = 652, - HMAC_SHA256_OID = 653, - HMAC_SHA384_OID = 654, - HMAC_SHA512_OID = 655, - HMAC_SHA3_224_OID = 426, - HMAC_SHA3_256_OID = 427, - HMAC_SHA3_384_OID = 428, - HMAC_SHA3_512_OID = 429 -}; - - -enum Extensions_Sum { - BASIC_CA_OID = 133, - ALT_NAMES_OID = 131, - CRL_DIST_OID = 145, - AUTH_INFO_OID = 69, /* id-pe 1 */ - AUTH_KEY_OID = 149, - SUBJ_KEY_OID = 128, - CERT_POLICY_OID = 146, - KEY_USAGE_OID = 129, /* 2.5.29.15 */ - INHIBIT_ANY_OID = 168, /* 2.5.29.54 */ - EXT_KEY_USAGE_OID = 151, /* 2.5.29.37 */ - NAME_CONS_OID = 144, /* 2.5.29.30 */ - PRIV_KEY_USAGE_PERIOD_OID = 130, /* 2.5.29.16 */ - SUBJECT_INFO_ACCESS = 79, /* id-pe 11 */ - POLICY_MAP_OID = 147, - POLICY_CONST_OID = 150, - ISSUE_ALT_NAMES_OID = 132, - TLS_FEATURE_OID = 92, /* id-pe 24 */ - NETSCAPE_CT_OID = 753 /* 2.16.840.1.113730.1.1 */ -}; - -enum CertificatePolicy_Sum { - CP_ANY_OID = 146 /* id-ce 32 0 */ -}; - -enum SepHardwareName_Sum { - HW_NAME_OID = 79 /* 1.3.6.1.5.5.7.8.4 from RFC 4108*/ -}; - -enum AuthInfo_Sum { - AIA_OCSP_OID = 116, /* 1.3.6.1.5.5.7.48.1 */ - AIA_CA_ISSUER_OID = 117 /* 1.3.6.1.5.5.7.48.2 */ -}; - -enum ExtKeyUsage_Sum { /* From RFC 5280 */ - EKU_ANY_OID = 151, /* 2.5.29.37.0, anyExtendedKeyUsage */ - EKU_SERVER_AUTH_OID = 71, /* 1.3.6.1.5.5.7.3.1, id-kp-serverAuth */ - EKU_CLIENT_AUTH_OID = 72, /* 1.3.6.1.5.5.7.3.2, id-kp-clientAuth */ - EKU_CODESIGNING_OID = 73, /* 1.3.6.1.5.5.7.3.3, id-kp-codeSigning */ - EKU_EMAILPROTECT_OID = 74, /* 1.3.6.1.5.5.7.3.4, id-kp-emailProtection */ - EKU_TIMESTAMP_OID = 78, /* 1.3.6.1.5.5.7.3.8, id-kp-timeStamping */ - EKU_OCSP_SIGN_OID = 79 /* 1.3.6.1.5.5.7.3.9, id-kp-OCSPSigning */ -}; - -#ifdef HAVE_LIBZ -enum CompressAlg_Sum { - ZLIBc = 679 /* 1.2.840.113549.1.9.16.3.8, id-alg-zlibCompress */ -}; -#endif - -enum VerifyType { - NO_VERIFY = 0, - VERIFY = 1, - VERIFY_CRL = 2, - VERIFY_OCSP = 3, - VERIFY_NAME = 4, - VERIFY_SKIP_DATE = 5, -}; - -#ifdef WOLFSSL_CERT_EXT -enum KeyIdType { - SKID_TYPE = 0, - AKID_TYPE = 1 -}; -#endif - -/* Key usage extension bits (based on RFC 5280) */ -#define KEYUSE_DIGITAL_SIG 0x0080 -#define KEYUSE_CONTENT_COMMIT 0x0040 -#define KEYUSE_KEY_ENCIPHER 0x0020 -#define KEYUSE_DATA_ENCIPHER 0x0010 -#define KEYUSE_KEY_AGREE 0x0008 -#define KEYUSE_KEY_CERT_SIGN 0x0004 -#define KEYUSE_CRL_SIGN 0x0002 -#define KEYUSE_ENCIPHER_ONLY 0x0001 -#define KEYUSE_DECIPHER_ONLY 0x8000 - -/* Extended Key Usage bits (internal mapping only) */ -#define EXTKEYUSE_USER 0x80 -#define EXTKEYUSE_OCSP_SIGN 0x40 -#define EXTKEYUSE_TIMESTAMP 0x20 -#define EXTKEYUSE_EMAILPROT 0x10 -#define EXTKEYUSE_CODESIGN 0x08 -#define EXTKEYUSE_CLIENT_AUTH 0x04 -#define EXTKEYUSE_SERVER_AUTH 0x02 -#define EXTKEYUSE_ANY 0x01 - -typedef struct DNS_entry DNS_entry; - -struct DNS_entry { - DNS_entry* next; /* next on DNS list */ - int type; /* i.e. ASN_DNS_TYPE */ - int len; /* actual DNS len */ - char* name; /* actual DNS name */ -}; - - -typedef struct Base_entry Base_entry; - -struct Base_entry { - Base_entry* next; /* next on name base list */ - char* name; /* actual name base */ - int nameSz; /* name length */ - byte type; /* Name base type (DNS or RFC822) */ -}; - -#define DOMAIN_COMPONENT_MAX 10 -#define DN_NAMES_MAX 9 - -struct DecodedName { - char* fullName; - int fullNameLen; - int entryCount; - int cnIdx; - int cnLen; - int cnNid; - int snIdx; - int snLen; - int snNid; - int cIdx; - int cLen; - int cNid; - int lIdx; - int lLen; - int lNid; - int stIdx; - int stLen; - int stNid; - int oIdx; - int oLen; - int oNid; - int ouIdx; - int ouLen; -#ifdef WOLFSSL_CERT_EXT - int bcIdx; - int bcLen; - int jcIdx; - int jcLen; - int jsIdx; - int jsLen; -#endif - int ouNid; - int emailIdx; - int emailLen; - int emailNid; - int uidIdx; - int uidLen; - int uidNid; - int serialIdx; - int serialLen; - int serialNid; - int dcIdx[DOMAIN_COMPONENT_MAX]; - int dcLen[DOMAIN_COMPONENT_MAX]; - int dcNum; - int dcMode; -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) - /* hold the location / order with which each of the DN tags was found - * - * example of ASN_DOMAIN_COMPONENT at index 0 if first found and so on. - */ - int loc[DOMAIN_COMPONENT_MAX + DN_NAMES_MAX]; - int locSz; -#endif -}; - -enum SignatureState { - SIG_STATE_BEGIN, - SIG_STATE_HASH, - SIG_STATE_KEY, - SIG_STATE_DO, - SIG_STATE_CHECK, -}; - - -#ifdef HAVE_PK_CALLBACKS -#ifdef HAVE_ECC - typedef int (*wc_CallbackEccVerify)( - const unsigned char* sig, unsigned int sigSz, - const unsigned char* hash, unsigned int hashSz, - const unsigned char* keyDer, unsigned int keySz, - int* result, void* ctx); -#endif -#ifndef NO_RSA - typedef int (*wc_CallbackRsaVerify)( - unsigned char* sig, unsigned int sigSz, - unsigned char** out, - const unsigned char* keyDer, unsigned int keySz, - void* ctx); -#endif -#endif /* HAVE_PK_CALLBACKS */ - -struct SignatureCtx { - void* heap; - byte* digest; -#ifndef NO_RSA - byte* out; - byte* plain; -#endif -#if defined(HAVE_ECC) || defined(HAVE_ED25519) || defined(HAVE_ED448) - int verify; -#endif - union { - #ifndef NO_RSA - struct RsaKey* rsa; - #endif - #ifdef HAVE_ECC - struct ecc_key* ecc; - #endif - #ifdef HAVE_ED25519 - struct ed25519_key* ed25519; - #endif - #ifdef HAVE_ED448 - struct ed448_key* ed448; - #endif - void* ptr; - } key; - int devId; - int state; - int typeH; - int digestSz; - word32 keyOID; -#ifdef WOLFSSL_ASYNC_CRYPT - WC_ASYNC_DEV* asyncDev; - void* asyncCtx; -#endif - -#ifdef HAVE_PK_CALLBACKS -#ifdef HAVE_ECC - wc_CallbackEccVerify pkCbEcc; - void* pkCtxEcc; -#endif -#ifndef NO_RSA - wc_CallbackRsaVerify pkCbRsa; - void* pkCtxRsa; -#endif -#endif /* HAVE_PK_CALLBACKS */ -#ifndef NO_RSA -#ifdef WOLFSSL_RENESAS_TSIP_TLS - byte verifyByTSIP; - word32 certBegin; - word32 pubkey_n_start; - word32 pubkey_n_len; - word32 pubkey_e_start; - word32 pubkey_e_len; -#endif -#endif -}; - -enum CertSignState { - CERTSIGN_STATE_BEGIN, - CERTSIGN_STATE_DIGEST, - CERTSIGN_STATE_ENCODE, - CERTSIGN_STATE_DO, -}; - -struct CertSignCtx { - byte* sig; - byte* digest; - #ifndef NO_RSA - byte* encSig; - int encSigSz; - #endif - int state; /* enum CertSignState */ -}; - -#ifndef WOLFSSL_MAX_PATH_LEN - /* RFC 5280 Section 6.1.2. "Initialization" - item (k) defines - * (k) max_path_length: this integer is initialized to "n", is - * decremented for each non-self-issued certificate in the path, - * and may be reduced to the value in the path length constraint - * field within the basic constraints extension of a CA - * certificate. - * - * wolfSSL has arbitrarily selected the value 127 for "n" in the above - * description. Users can modify the maximum path length by setting - * WOLFSSL_MAX_PATH_LEN to a preferred value at build time - */ - #define WOLFSSL_MAX_PATH_LEN 127 -#endif - -typedef struct DecodedCert DecodedCert; -typedef struct DecodedName DecodedName; -typedef struct Signer Signer; -#ifdef WOLFSSL_TRUST_PEER_CERT -typedef struct TrustedPeerCert TrustedPeerCert; -#endif /* WOLFSSL_TRUST_PEER_CERT */ -typedef struct SignatureCtx SignatureCtx; -typedef struct CertSignCtx CertSignCtx; - - -struct DecodedCert { - const byte* publicKey; - word32 pubKeySize; - int pubKeyStored; - word32 certBegin; /* offset to start of cert */ - word32 sigIndex; /* offset to start of signature */ - word32 sigLength; /* length of signature */ - word32 signatureOID; /* sum of algorithm object id */ - word32 keyOID; /* sum of key algo object id */ - int version; /* cert version, 1 or 3 */ - DNS_entry* altNames; /* alt names list of dns entries */ -#ifndef IGNORE_NAME_CONSTRAINTS - DNS_entry* altEmailNames; /* alt names list of RFC822 entries */ - Base_entry* permittedNames; /* Permitted name bases */ - Base_entry* excludedNames; /* Excluded name bases */ -#endif /* IGNORE_NAME_CONSTRAINTS */ - byte subjectHash[KEYID_SIZE]; /* hash of all Names */ - byte issuerHash[KEYID_SIZE]; /* hash of all Names */ -#ifdef HAVE_OCSP - byte subjectKeyHash[KEYID_SIZE]; /* hash of the public Key */ - byte issuerKeyHash[KEYID_SIZE]; /* hash of the public Key */ -#endif /* HAVE_OCSP */ - const byte* signature; /* not owned, points into raw cert */ - char* subjectCN; /* CommonName */ - int subjectCNLen; /* CommonName Length */ - char subjectCNEnc; /* CommonName Encoding */ - char issuer[ASN_NAME_MAX]; /* full name including common name */ - char subject[ASN_NAME_MAX]; /* full name including common name */ - int verify; /* Default to yes, but could be off */ - const byte* source; /* byte buffer holder cert, NOT owner */ - word32 srcIdx; /* current offset into buffer */ - word32 maxIdx; /* max offset based on init size */ - void* heap; /* for user memory overrides */ - byte serial[EXTERNAL_SERIAL_SIZE]; /* raw serial number */ - int serialSz; /* raw serial bytes stored */ - const byte* extensions; /* not owned, points into raw cert */ - int extensionsSz; /* length of cert extensions */ - word32 extensionsIdx; /* if want to go back and parse later */ - const byte* extAuthInfo; /* Authority Information Access URI */ - int extAuthInfoSz; /* length of the URI */ -#if defined(OPENSSL_ALL) || defined(WOLFSSL_QT) - const byte* extAuthInfoCaIssuer; /* Authority Info Access caIssuer URI */ - int extAuthInfoCaIssuerSz; /* length of the caIssuer URI */ -#endif - const byte* extCrlInfo; /* CRL Distribution Points */ - int extCrlInfoSz; /* length of the URI */ - byte extSubjKeyId[KEYID_SIZE]; /* Subject Key ID */ - byte extAuthKeyId[KEYID_SIZE]; /* Authority Key ID */ - byte pathLength; /* CA basic constraint path length */ - byte maxPathLen; /* max_path_len see RFC 5280 section - * 6.1.2 "Initialization" - (k) for - * description of max_path_len */ - word16 extKeyUsage; /* Key usage bitfield */ - byte extExtKeyUsage; /* Extended Key usage bitfield */ - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) - const byte* extExtKeyUsageSrc; - word32 extExtKeyUsageSz; - word32 extExtKeyUsageCount; - const byte* extAuthKeyIdSrc; - word32 extAuthKeyIdSz; - const byte* extSubjKeyIdSrc; - word32 extSubjKeyIdSz; -#endif - -#if defined(HAVE_ECC) || defined(HAVE_ED25519) || defined(HAVE_ED448) - word32 pkCurveOID; /* Public Key's curve OID */ -#endif /* HAVE_ECC */ - const byte* beforeDate; - int beforeDateLen; - const byte* afterDate; - int afterDateLen; -#if defined(HAVE_PKCS7) || defined(WOLFSSL_CERT_EXT) - const byte* issuerRaw; /* pointer to issuer inside source */ - int issuerRawLen; -#endif -#if !defined(IGNORE_NAME_CONSTRAINTS) || defined(WOLFSSL_CERT_EXT) - const byte* subjectRaw; /* pointer to subject inside source */ - int subjectRawLen; -#endif -#if defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_CERT_EXT) - /* easy access to subject info for other sign */ - char* subjectSN; - int subjectSNLen; - char subjectSNEnc; - char* subjectC; - int subjectCLen; - char subjectCEnc; - char* subjectL; - int subjectLLen; - char subjectLEnc; - char* subjectST; - int subjectSTLen; - char subjectSTEnc; - char* subjectO; - int subjectOLen; - char subjectOEnc; - char* subjectOU; - int subjectOULen; - char subjectOUEnc; - char* subjectSND; - int subjectSNDLen; - char subjectSNDEnc; -#ifdef WOLFSSL_CERT_EXT - char* subjectBC; - int subjectBCLen; - char subjectBCEnc; - char* subjectJC; - int subjectJCLen; - char subjectJCEnc; - char* subjectJS; - int subjectJSLen; - char subjectJSEnc; -#endif - char* subjectEmail; - int subjectEmailLen; -#endif /* WOLFSSL_CERT_GEN */ -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) - DecodedName issuerName; - DecodedName subjectName; -#endif /* OPENSSL_EXTRA */ -#ifdef WOLFSSL_SEP - int deviceTypeSz; - byte* deviceType; - int hwTypeSz; - byte* hwType; - int hwSerialNumSz; - byte* hwSerialNum; -#endif /* WOLFSSL_SEP */ -#ifdef WOLFSSL_CERT_EXT - char extCertPolicies[MAX_CERTPOL_NB][MAX_CERTPOL_SZ]; - int extCertPoliciesNb; -#endif /* defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_CERT_EXT) */ - - Signer* ca; -#ifndef NO_CERTS - SignatureCtx sigCtx; -#endif -#ifdef WOLFSSL_RENESAS_TSIP - byte* tsip_encRsaKeyIdx; -#endif - - int badDate; - int criticalExt; - - /* Option Bits */ - byte subjectCNStored : 1; /* have we saved a copy we own */ - byte extSubjKeyIdSet : 1; /* Set when the SKID was read from cert */ - byte extAuthKeyIdSet : 1; /* Set when the AKID was read from cert */ -#ifndef IGNORE_NAME_CONSTRAINTS - byte extNameConstraintSet : 1; -#endif - byte isCA : 1; /* CA basic constraint true */ - byte pathLengthSet : 1; /* CA basic const path length set */ - byte weOwnAltNames : 1; /* altNames haven't been given to copy */ - byte extKeyUsageSet : 1; - byte extExtKeyUsageSet : 1; /* Extended Key Usage set */ - byte extCRLdistSet : 1; - byte extAuthInfoSet : 1; - byte extBasicConstSet : 1; - byte extSubjAltNameSet : 1; - byte inhibitAnyOidSet : 1; - byte selfSigned : 1; /* Indicates subject and issuer are same */ -#if defined(WOLFSSL_SEP) || defined(WOLFSSL_QT) - byte extCertPolicySet : 1; -#endif -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) - byte extCRLdistCrit : 1; - byte extAuthInfoCrit : 1; - byte extBasicConstCrit : 1; - byte extSubjAltNameCrit : 1; - byte extAuthKeyIdCrit : 1; - #ifndef IGNORE_NAME_CONSTRAINTS - byte extNameConstraintCrit : 1; - #endif - byte extSubjKeyIdCrit : 1; - byte extKeyUsageCrit : 1; - byte extExtKeyUsageCrit : 1; -#endif /* OPENSSL_EXTRA */ -#if defined(WOLFSSL_SEP) || defined(WOLFSSL_QT) - byte extCertPolicyCrit : 1; -#endif - -}; - - -#ifdef NO_SHA - #define SIGNER_DIGEST_SIZE WC_SHA256_DIGEST_SIZE -#else - #define SIGNER_DIGEST_SIZE WC_SHA_DIGEST_SIZE -#endif - -/* CA Signers */ -/* if change layout change PERSIST_CERT_CACHE functions too */ -struct Signer { - word32 pubKeySize; - word32 keyOID; /* key type */ - word16 keyUsage; - byte maxPathLen; - byte pathLength; - byte pathLengthSet : 1; - byte selfSigned : 1; - const byte* publicKey; - int nameLen; - char* name; /* common name */ -#ifndef IGNORE_NAME_CONSTRAINTS - Base_entry* permittedNames; - Base_entry* excludedNames; -#endif /* IGNORE_NAME_CONSTRAINTS */ - byte subjectNameHash[SIGNER_DIGEST_SIZE]; - /* sha hash of names in certificate */ - #ifndef NO_SKID - byte subjectKeyIdHash[SIGNER_DIGEST_SIZE]; - /* sha hash of names in certificate */ - #endif - #ifdef HAVE_OCSP - byte subjectKeyHash[KEYID_SIZE]; - #endif -#ifdef WOLFSSL_SIGNER_DER_CERT - DerBuffer* derCert; -#endif -#ifdef WOLFSSL_RENESAS_TSIP_TLS - word32 cm_idx; -#endif - Signer* next; -}; - - -#ifdef WOLFSSL_TRUST_PEER_CERT -/* used for having trusted peer certs rather then CA */ -struct TrustedPeerCert { - int nameLen; - char* name; /* common name */ - #ifndef IGNORE_NAME_CONSTRAINTS - Base_entry* permittedNames; - Base_entry* excludedNames; - #endif /* IGNORE_NAME_CONSTRAINTS */ - byte subjectNameHash[SIGNER_DIGEST_SIZE]; - /* sha hash of names in certificate */ - #ifndef NO_SKID - byte subjectKeyIdHash[SIGNER_DIGEST_SIZE]; - /* sha hash of names in certificate */ - #endif - word32 sigLen; - byte* sig; - struct TrustedPeerCert* next; -}; -#endif /* WOLFSSL_TRUST_PEER_CERT */ - - -/* for testing or custom openssl wrappers */ -#if defined(WOLFSSL_TEST_CERT) || defined(OPENSSL_EXTRA) || \ - defined(OPENSSL_EXTRA_X509_SMALL) - #define WOLFSSL_ASN_API WOLFSSL_API -#else - #define WOLFSSL_ASN_API WOLFSSL_LOCAL -#endif - -WOLFSSL_LOCAL int CalcHashId(const byte* data, word32 len, byte* hash); - -WOLFSSL_ASN_API int wc_BerToDer(const byte* ber, word32 berSz, byte* der, - word32* derSz); - -WOLFSSL_ASN_API void FreeAltNames(DNS_entry*, void*); -#ifndef IGNORE_NAME_CONSTRAINTS - WOLFSSL_ASN_API void FreeNameSubtrees(Base_entry*, void*); -#endif /* IGNORE_NAME_CONSTRAINTS */ -WOLFSSL_ASN_API void InitDecodedCert(DecodedCert*, const byte*, word32, void*); -WOLFSSL_ASN_API void FreeDecodedCert(DecodedCert*); -WOLFSSL_ASN_API int ParseCert(DecodedCert*, int type, int verify, void* cm); - -WOLFSSL_LOCAL int DecodePolicyOID(char *o, word32 oSz, - const byte *in, word32 inSz); -WOLFSSL_LOCAL int EncodePolicyOID(byte *out, word32 *outSz, - const char *in, void* heap); -WOLFSSL_API int CheckCertSignature(const byte*,word32,void*,void* cm); -WOLFSSL_LOCAL int CheckCertSignaturePubKey(const byte* cert, word32 certSz, - void* heap, const byte* pubKey, word32 pubKeySz, int pubKeyOID); -WOLFSSL_LOCAL int ParseCertRelative(DecodedCert*,int type,int verify,void* cm); -WOLFSSL_LOCAL int DecodeToKey(DecodedCert*, int verify); -WOLFSSL_LOCAL int wc_GetPubX509(DecodedCert* cert, int verify, int* badDate); - -WOLFSSL_LOCAL const byte* OidFromId(word32 id, word32 type, word32* oidSz); -WOLFSSL_LOCAL Signer* MakeSigner(void*); -WOLFSSL_LOCAL void FreeSigner(Signer*, void*); -WOLFSSL_LOCAL void FreeSignerTable(Signer**, int, void*); -#ifdef WOLFSSL_TRUST_PEER_CERT -WOLFSSL_LOCAL void FreeTrustedPeer(TrustedPeerCert*, void*); -WOLFSSL_LOCAL void FreeTrustedPeerTable(TrustedPeerCert**, int, void*); -#endif /* WOLFSSL_TRUST_PEER_CERT */ - -WOLFSSL_ASN_API int ToTraditional(byte* buffer, word32 length); -WOLFSSL_ASN_API int ToTraditional_ex(byte* buffer, word32 length, - word32* algId); -WOLFSSL_LOCAL int ToTraditionalInline(const byte* input, word32* inOutIdx, - word32 length); -WOLFSSL_LOCAL int ToTraditionalInline_ex(const byte* input, word32* inOutIdx, - word32 length, word32* algId); -WOLFSSL_LOCAL int ToTraditionalEnc(byte* buffer, word32 length,const char*,int, - word32* algId); -WOLFSSL_ASN_API int UnTraditionalEnc(byte* key, word32 keySz, byte* out, - word32* outSz, const char* password, int passwordSz, int vPKCS, - int vAlgo, byte* salt, word32 saltSz, int itt, WC_RNG* rng, void* heap); -WOLFSSL_ASN_API int TraditionalEnc(byte* key, word32 keySz, byte* out, - word32* outSz, const char* password, int passwordSz, int vPKCS, - int vAlgo, int encAlgId, byte* salt, word32 saltSz, int itt, - WC_RNG* rng, void* heap); -WOLFSSL_LOCAL int DecryptContent(byte* input, word32 sz,const char* psw,int pswSz); -WOLFSSL_LOCAL int EncryptContent(byte* input, word32 sz, byte* out, word32* outSz, - const char* password,int passwordSz, int vPKCS, int vAlgo, - byte* salt, word32 saltSz, int itt, WC_RNG* rng, void* heap); -WOLFSSL_LOCAL int wc_GetKeyOID(byte* key, word32 keySz, const byte** curveOID, - word32* oidSz, int* algoID, void* heap); - -typedef struct tm wolfssl_tm; -#if defined(OPENSSL_ALL) || defined(WOLFSSL_MYSQL_COMPATIBLE) || defined(OPENSSL_EXTRA) || \ - defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) -WOLFSSL_LOCAL int GetTimeString(byte* date, int format, char* buf, int len); -#endif -#if !defined(NO_ASN_TIME) && defined(HAVE_PKCS7) -WOLFSSL_LOCAL int GetAsnTimeString(void* currTime, byte* buf, word32 len); -#endif -WOLFSSL_LOCAL int ExtractDate(const unsigned char* date, unsigned char format, - wolfssl_tm* certTime, int* idx); -WOLFSSL_LOCAL int DateGreaterThan(const struct tm* a, const struct tm* b); -WOLFSSL_LOCAL int ValidateDate(const byte* date, byte format, int dateType); -WOLFSSL_LOCAL int wc_OBJ_sn2nid(const char *sn); - -/* ASN.1 helper functions */ -#ifdef WOLFSSL_CERT_GEN -WOLFSSL_ASN_API int SetName(byte* output, word32 outputSz, CertName* name); -#endif -WOLFSSL_LOCAL int GetShortInt(const byte* input, word32* inOutIdx, int* number, - word32 maxIdx); -WOLFSSL_LOCAL int SetShortInt(byte* input, word32* inOutIdx, word32 number, - word32 maxIdx); - -WOLFSSL_LOCAL const char* GetSigName(int oid); -WOLFSSL_LOCAL int GetLength(const byte* input, word32* inOutIdx, int* len, - word32 maxIdx); -WOLFSSL_LOCAL int GetLength_ex(const byte* input, word32* inOutIdx, int* len, - word32 maxIdx, int check); -WOLFSSL_LOCAL int GetSequence(const byte* input, word32* inOutIdx, int* len, - word32 maxIdx); -WOLFSSL_LOCAL int GetSequence_ex(const byte* input, word32* inOutIdx, int* len, - word32 maxIdx, int check); -WOLFSSL_LOCAL int GetOctetString(const byte* input, word32* inOutIdx, int* len, - word32 maxIdx); -WOLFSSL_LOCAL int GetSet(const byte* input, word32* inOutIdx, int* len, - word32 maxIdx); -WOLFSSL_LOCAL int GetSet_ex(const byte* input, word32* inOutIdx, int* len, - word32 maxIdx, int check); -WOLFSSL_LOCAL int GetMyVersion(const byte* input, word32* inOutIdx, - int* version, word32 maxIdx); -WOLFSSL_LOCAL int GetInt(mp_int* mpi, const byte* input, word32* inOutIdx, - word32 maxIdx); -#ifdef HAVE_OID_ENCODING - WOLFSSL_LOCAL int EncodeObjectId(const word16* in, word32 inSz, - byte* out, word32* outSz); -#endif -#ifdef HAVE_OID_DECODING - WOLFSSL_LOCAL int DecodeObjectId(const byte* in, word32 inSz, - word16* out, word32* outSz); -#endif -WOLFSSL_LOCAL int GetASNObjectId(const byte* input, word32* inOutIdx, int* len, - word32 maxIdx); -WOLFSSL_LOCAL int SetObjectId(int len, byte* output); -WOLFSSL_LOCAL int GetObjectId(const byte* input, word32* inOutIdx, word32* oid, - word32 oidType, word32 maxIdx); -WOLFSSL_LOCAL int GetAlgoId(const byte* input, word32* inOutIdx, word32* oid, - word32 oidType, word32 maxIdx); -WOLFSSL_LOCAL int GetASNTag(const byte* input, word32* idx, byte* tag, - word32 inputSz); -WOLFSSL_LOCAL word32 SetLength(word32 length, byte* output); -WOLFSSL_LOCAL word32 SetSequence(word32 len, byte* output); -WOLFSSL_LOCAL word32 SetOctetString(word32 len, byte* output); -#if (defined(WOLFSSL_QT) || defined(OPENSSL_ALL)) && !defined(NO_DH) \ - || defined(WOLFSSL_OPENSSH) -WOLFSSL_LOCAL int wc_DhParamsToDer(DhKey* key, byte* out, word32* outSz); -WOLFSSL_LOCAL int wc_DhPubKeyToDer(DhKey* key, byte* out, word32* outSz); -WOLFSSL_LOCAL int wc_DhPrivKeyToDer(DhKey* key, byte* out, word32* outSz); -#endif -WOLFSSL_LOCAL word32 SetBitString(word32 len, byte unusedBits, byte* output); -WOLFSSL_LOCAL word32 SetImplicit(byte tag,byte number,word32 len,byte* output); -WOLFSSL_LOCAL word32 SetExplicit(byte number, word32 len, byte* output); -WOLFSSL_LOCAL word32 SetSet(word32 len, byte* output); -WOLFSSL_LOCAL word32 SetAlgoID(int algoOID,byte* output,int type,int curveSz); -WOLFSSL_LOCAL int SetMyVersion(word32 version, byte* output, int header); -WOLFSSL_LOCAL int SetSerialNumber(const byte* sn, word32 snSz, byte* output, - word32 outputSz, int maxSnSz); -WOLFSSL_LOCAL int GetSerialNumber(const byte* input, word32* inOutIdx, - byte* serial, int* serialSz, word32 maxIdx); -WOLFSSL_LOCAL int GetNameHash(const byte* source, word32* idx, byte* hash, - int maxIdx); -WOLFSSL_LOCAL int wc_CheckPrivateKey(byte* key, word32 keySz, DecodedCert* der); -WOLFSSL_LOCAL int StoreDHparams(byte* out, word32* outLen, mp_int* p, mp_int* g); -WOLFSSL_LOCAL int FlattenAltNames( byte*, word32, const DNS_entry*); - -#ifdef HAVE_ECC - /* ASN sig helpers */ - WOLFSSL_LOCAL int StoreECC_DSA_Sig(byte* out, word32* outLen, mp_int* r, - mp_int* s); - WOLFSSL_LOCAL int DecodeECC_DSA_Sig(const byte* sig, word32 sigLen, - mp_int* r, mp_int* s); -#endif -#if defined HAVE_ECC && (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) -WOLFSSL_API int EccEnumToNID(int n); -#endif - -WOLFSSL_LOCAL void InitSignatureCtx(SignatureCtx* sigCtx, void* heap, int devId); -WOLFSSL_LOCAL void FreeSignatureCtx(SignatureCtx* sigCtx); - -#ifndef NO_CERTS - -WOLFSSL_LOCAL int wc_EncryptedInfoParse(EncryptedInfo* info, char** pBuffer, - size_t bufSz); - -WOLFSSL_LOCAL int PemToDer(const unsigned char* buff, long sz, int type, - DerBuffer** pDer, void* heap, EncryptedInfo* info, - int* eccKey); -WOLFSSL_LOCAL int AllocDer(DerBuffer** der, word32 length, int type, void* heap); -WOLFSSL_LOCAL void FreeDer(DerBuffer** der); - -#endif /* !NO_CERTS */ - -#ifdef WOLFSSL_CERT_GEN - -enum cert_enums { -#ifdef WOLFSSL_CERT_EXT - NAME_ENTRIES = 10, -#else - NAME_ENTRIES = 9, -#endif - JOINT_LEN = 2, - EMAIL_JOINT_LEN = 9, - PILOT_JOINT_LEN = 10, - RSA_KEY = 10, - NTRU_KEY = 11, - ECC_KEY = 12, - ED25519_KEY = 13, - ED448_KEY = 14 -}; - -#endif /* WOLFSSL_CERT_GEN */ - - - -/* for pointer use */ -typedef struct CertStatus CertStatus; - -#ifdef HAVE_OCSP - -enum Ocsp_Response_Status { - OCSP_SUCCESSFUL = 0, /* Response has valid confirmations */ - OCSP_MALFORMED_REQUEST = 1, /* Illegal confirmation request */ - OCSP_INTERNAL_ERROR = 2, /* Internal error in issuer */ - OCSP_TRY_LATER = 3, /* Try again later */ - OCSP_SIG_REQUIRED = 5, /* Must sign the request (4 is skipped) */ - OCSP_UNAUTHROIZED = 6 /* Request unauthorized */ -}; - - -enum Ocsp_Cert_Status { - CERT_GOOD = 0, - CERT_REVOKED = 1, - CERT_UNKNOWN = 2 -}; - - -enum Ocsp_Sums { - OCSP_BASIC_OID = 117, - OCSP_NONCE_OID = 118 -}; - -#ifdef OPENSSL_EXTRA -enum Ocsp_Verify_Error { - OCSP_VERIFY_ERROR_NONE = 0, - OCSP_BAD_ISSUER = 1 -}; -#endif - - -typedef struct OcspRequest OcspRequest; -typedef struct OcspResponse OcspResponse; - - -struct CertStatus { - CertStatus* next; - - byte serial[EXTERNAL_SERIAL_SIZE]; - int serialSz; - - int status; - - byte thisDate[MAX_DATE_SIZE]; - byte nextDate[MAX_DATE_SIZE]; - byte thisDateFormat; - byte nextDateFormat; -#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) - WOLFSSL_ASN1_TIME thisDateParsed; - WOLFSSL_ASN1_TIME nextDateParsed; - byte* thisDateAsn; - byte* nextDateAsn; -#endif - - byte* rawOcspResponse; - word32 rawOcspResponseSz; -}; - - -struct OcspResponse { - int responseStatus; /* return code from Responder */ - - byte* response; /* Pointer to beginning of OCSP Response */ - word32 responseSz; /* length of the OCSP Response */ - - byte producedDate[MAX_DATE_SIZE]; - /* Date at which this response was signed */ - byte producedDateFormat; /* format of the producedDate */ - byte* issuerHash; - byte* issuerKeyHash; - - byte* cert; - word32 certSz; - - byte* sig; /* Pointer to sig in source */ - word32 sigSz; /* Length in octets for the sig */ - word32 sigOID; /* OID for hash used for sig */ - - CertStatus* status; /* certificate status to fill out */ - - byte* nonce; /* pointer to nonce inside ASN.1 response */ - int nonceSz; /* length of the nonce string */ - - byte* source; /* pointer to source buffer, not owned */ - word32 maxIdx; /* max offset based on init size */ - -#ifdef OPENSSL_EXTRA - int verifyError; -#endif -}; - - -struct OcspRequest { - byte issuerHash[KEYID_SIZE]; - byte issuerKeyHash[KEYID_SIZE]; - byte* serial; /* copy of the serial number in source cert */ - int serialSz; -#ifdef OPENSSL_EXTRA - WOLFSSL_ASN1_INTEGER* serialInt; -#endif - byte* url; /* copy of the extAuthInfo in source cert */ - int urlSz; - - byte nonce[MAX_OCSP_NONCE_SZ]; - int nonceSz; - void* heap; - void* ssl; -}; - -typedef struct OcspEntry OcspEntry; - -#ifdef NO_SHA -#define OCSP_DIGEST_SIZE WC_SHA256_DIGEST_SIZE -#else -#define OCSP_DIGEST_SIZE WC_SHA_DIGEST_SIZE -#endif - -struct OcspEntry -{ - OcspEntry *next; /* next entry */ - byte issuerHash[OCSP_DIGEST_SIZE]; /* issuer hash */ - byte issuerKeyHash[OCSP_DIGEST_SIZE]; /* issuer public key hash */ - CertStatus *status; /* OCSP response list */ - int totalStatus; /* number on list */ -}; - -WOLFSSL_LOCAL void InitOcspResponse(OcspResponse*, CertStatus*, byte*, word32); -WOLFSSL_LOCAL int OcspResponseDecode(OcspResponse*, void*, void* heap, int); - -WOLFSSL_LOCAL int InitOcspRequest(OcspRequest*, DecodedCert*, byte, void*); -WOLFSSL_LOCAL void FreeOcspRequest(OcspRequest*); -WOLFSSL_LOCAL int EncodeOcspRequest(OcspRequest*, byte*, word32); -WOLFSSL_LOCAL word32 EncodeOcspRequestExtensions(OcspRequest*, byte*, word32); - - -WOLFSSL_LOCAL int CompareOcspReqResp(OcspRequest*, OcspResponse*); - - -#endif /* HAVE_OCSP */ - - -/* for pointer use */ -typedef struct RevokedCert RevokedCert; - -#ifdef HAVE_CRL - -struct RevokedCert { - byte serialNumber[EXTERNAL_SERIAL_SIZE]; - int serialSz; - RevokedCert* next; -}; - -typedef struct DecodedCRL DecodedCRL; - -struct DecodedCRL { - word32 certBegin; /* offset to start of cert */ - word32 sigIndex; /* offset to start of signature */ - word32 sigLength; /* length of signature */ - word32 signatureOID; /* sum of algorithm object id */ - byte* signature; /* pointer into raw source, not owned */ - byte issuerHash[SIGNER_DIGEST_SIZE]; /* issuer name hash */ - byte crlHash[SIGNER_DIGEST_SIZE]; /* raw crl data hash */ - byte lastDate[MAX_DATE_SIZE]; /* last date updated */ - byte nextDate[MAX_DATE_SIZE]; /* next update date */ - byte lastDateFormat; /* format of last date */ - byte nextDateFormat; /* format of next date */ - RevokedCert* certs; /* revoked cert list */ - int totalCerts; /* number on list */ - void* heap; -#ifndef NO_SKID - byte extAuthKeyIdSet; - byte extAuthKeyId[SIGNER_DIGEST_SIZE]; /* Authority Key ID */ -#endif -}; - -WOLFSSL_LOCAL void InitDecodedCRL(DecodedCRL*, void* heap); -WOLFSSL_LOCAL int VerifyCRL_Signature(SignatureCtx* sigCtx, - const byte* toBeSigned, word32 tbsSz, - const byte* signature, word32 sigSz, - word32 signatureOID, Signer *ca, - void* heap); -WOLFSSL_LOCAL int ParseCRL(DecodedCRL*, const byte* buff, word32 sz, void* cm); -WOLFSSL_LOCAL void FreeDecodedCRL(DecodedCRL*); - - -#endif /* HAVE_CRL */ - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* !NO_ASN */ - - -#if !defined(NO_ASN) || !defined(NO_PWDBASED) - -#ifndef MAX_KEY_SIZE - #define MAX_KEY_SIZE 64 /* MAX PKCS Key length */ -#endif -#ifndef MAX_UNICODE_SZ - #define MAX_UNICODE_SZ 256 -#endif - -enum PBESTypes { - PBE_MD5_DES = 0, - PBE_SHA1_RC4_128 = 1, - PBE_SHA1_DES = 2, - PBE_SHA1_DES3 = 3, - PBE_AES256_CBC = 4, - PBE_AES128_CBC = 5, - - PBE_SHA1_RC4_128_SUM = 657, - PBE_SHA1_DES3_SUM = 659, - PBES2 = 13 /* algo ID */ -}; - -enum PKCSTypes { - PKCS5v2 = 6, /* PKCS #5 v2.0 */ - PKCS12v1 = 12, /* PKCS #12 */ - PKCS5 = 5, /* PKCS oid tag */ - PKCS8v0 = 0, /* default PKCS#8 version */ -}; - -#endif /* !NO_ASN || !NO_PWDBASED */ - -#endif /* WOLF_CRYPT_ASN_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/asn_public.h b/client/wolfssl/wolfssl/wolfcrypt/asn_public.h deleted file mode 100644 index 3937800..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/asn_public.h +++ /dev/null @@ -1,610 +0,0 @@ -/* asn_public.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/asn_public.h -*/ - -#ifndef WOLF_CRYPT_ASN_PUBLIC_H -#define WOLF_CRYPT_ASN_PUBLIC_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef __cplusplus - extern "C" { -#endif - -/* guard on redeclaration */ -#ifndef WC_ECCKEY_TYPE_DEFINED - typedef struct ecc_key ecc_key; - #define WC_ECCKEY_TYPE_DEFINED -#endif -#ifndef WC_ED25519KEY_TYPE_DEFINED - typedef struct ed25519_key ed25519_key; - #define WC_ED25519KEY_TYPE_DEFINED -#endif -#ifndef WC_ED448KEY_TYPE_DEFINED - typedef struct ed448_key ed448_key; - #define WC_ED448KEY_TYPE_DEFINED -#endif -#ifndef WC_RSAKEY_TYPE_DEFINED - typedef struct RsaKey RsaKey; - #define WC_RSAKEY_TYPE_DEFINED -#endif -#ifndef WC_RNG_TYPE_DEFINED - typedef struct WC_RNG WC_RNG; - #define WC_RNG_TYPE_DEFINED -#endif - -enum Ecc_Sum { - ECC_SECP112R1_OID = 182, - ECC_SECP112R2_OID = 183, - ECC_SECP128R1_OID = 204, - ECC_SECP128R2_OID = 205, - ECC_SECP160R1_OID = 184, - ECC_SECP160R2_OID = 206, - ECC_SECP160K1_OID = 185, - ECC_BRAINPOOLP160R1_OID = 98, - ECC_SECP192R1_OID = 520, - ECC_PRIME192V2_OID = 521, - ECC_PRIME192V3_OID = 522, - ECC_SECP192K1_OID = 207, - ECC_BRAINPOOLP192R1_OID = 100, - ECC_SECP224R1_OID = 209, - ECC_SECP224K1_OID = 208, - ECC_BRAINPOOLP224R1_OID = 102, - ECC_PRIME239V1_OID = 523, - ECC_PRIME239V2_OID = 524, - ECC_PRIME239V3_OID = 525, - ECC_SECP256R1_OID = 526, - ECC_SECP256K1_OID = 186, - ECC_BRAINPOOLP256R1_OID = 104, - ECC_X25519_OID = 365, - ECC_ED25519_OID = 256, - ECC_BRAINPOOLP320R1_OID = 106, - ECC_X448_OID = 362, - ECC_ED448_OID = 257, - ECC_SECP384R1_OID = 210, - ECC_BRAINPOOLP384R1_OID = 108, - ECC_BRAINPOOLP512R1_OID = 110, - ECC_SECP521R1_OID = 211, -}; - - -/* Certificate file Type */ -enum CertType { - CERT_TYPE = 0, - PRIVATEKEY_TYPE, - DH_PARAM_TYPE, - DSA_PARAM_TYPE, - CRL_TYPE, - CA_TYPE, - ECC_PRIVATEKEY_TYPE, - DSA_PRIVATEKEY_TYPE, - CERTREQ_TYPE, - DSA_TYPE, - ECC_TYPE, - RSA_TYPE, - PUBLICKEY_TYPE, - RSA_PUBLICKEY_TYPE, - ECC_PUBLICKEY_TYPE, - TRUSTED_PEER_TYPE, - EDDSA_PRIVATEKEY_TYPE, - ED25519_TYPE, - ED448_TYPE, - PKCS12_TYPE, - PKCS8_PRIVATEKEY_TYPE, - PKCS8_ENC_PRIVATEKEY_TYPE, - DETECT_CERT_TYPE, - DH_PRIVATEKEY_TYPE, -}; - - -/* Signature type, by OID sum */ -enum Ctc_SigType { - CTC_SHAwDSA = 517, - CTC_MD2wRSA = 646, - CTC_MD5wRSA = 648, - CTC_SHAwRSA = 649, - CTC_SHAwECDSA = 520, - CTC_SHA224wRSA = 658, - CTC_SHA224wECDSA = 523, - CTC_SHA256wRSA = 655, - CTC_SHA256wECDSA = 524, - CTC_SHA384wRSA = 656, - CTC_SHA384wECDSA = 525, - CTC_SHA512wRSA = 657, - CTC_SHA512wECDSA = 526, - CTC_ED25519 = 256, - CTC_ED448 = 257 -}; - -enum Ctc_Encoding { - CTC_UTF8 = 0x0c, /* utf8 */ - CTC_PRINTABLE = 0x13 /* printable */ -}; - -#ifndef WC_CTC_NAME_SIZE - #define WC_CTC_NAME_SIZE 64 -#endif -#ifndef WC_CTC_MAX_ALT_SIZE - #define WC_CTC_MAX_ALT_SIZE 16384 -#endif - -enum Ctc_Misc { - CTC_COUNTRY_SIZE = 2, - CTC_NAME_SIZE = WC_CTC_NAME_SIZE, - CTC_DATE_SIZE = 32, - CTC_MAX_ALT_SIZE = WC_CTC_MAX_ALT_SIZE, /* may be huge, default: 16384 */ - CTC_SERIAL_SIZE = 20, - CTC_GEN_SERIAL_SZ = 16, -#ifdef WOLFSSL_CERT_EXT - /* AKID could contains: hash + (Option) AuthCertIssuer,AuthCertSerialNum - * We support only hash */ - CTC_MAX_SKID_SIZE = 32, /* SHA256_DIGEST_SIZE */ - CTC_MAX_AKID_SIZE = 32, /* SHA256_DIGEST_SIZE */ - CTC_MAX_CERTPOL_SZ = 64, - CTC_MAX_CERTPOL_NB = 2 /* Max number of Certificate Policy */ -#endif /* WOLFSSL_CERT_EXT */ -}; - -/* DER buffer */ -typedef struct DerBuffer { - byte* buffer; - void* heap; - word32 length; - int type; /* enum CertType */ - int dynType; /* DYNAMIC_TYPE_* */ -} DerBuffer; - -typedef struct WOLFSSL_ASN1_TIME { - unsigned char data[CTC_DATE_SIZE]; /* date bytes */ - int length; - int type; -} WOLFSSL_ASN1_TIME; - -enum { - IV_SZ = 32, /* max iv sz */ - NAME_SZ = 80, /* max one line */ - - PEM_PASS_READ = 0, - PEM_PASS_WRITE = 1, -}; - - -typedef int (pem_password_cb)(char* passwd, int sz, int rw, void* userdata); - -typedef struct EncryptedInfo { - pem_password_cb* passwd_cb; - void* passwd_userdata; - - long consumed; /* tracks PEM bytes consumed */ - - int cipherType; - word32 keySz; - word32 ivSz; /* salt or encrypted IV size */ - - char name[NAME_SZ]; /* cipher name, such as "DES-CBC" */ - byte iv[IV_SZ]; /* salt or encrypted IV */ - - word16 set:1; /* if encryption set */ -} EncryptedInfo; - - -#define WOLFSSL_ASN1_INTEGER_MAX 20 -typedef struct WOLFSSL_ASN1_INTEGER { - /* size can be increased set at 20 for tag, length then to hold at least 16 - * byte type */ - unsigned char intData[WOLFSSL_ASN1_INTEGER_MAX]; - /* ASN_INTEGER | LENGTH | hex of number */ - unsigned char negative; /* negative number flag */ - - unsigned char* data; - unsigned int dataMax; /* max size of data buffer */ - unsigned int isDynamic:1; /* flag for if data pointer dynamic (1 is yes 0 is no) */ - - int length; - int type; -} WOLFSSL_ASN1_INTEGER; - - -#if defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_CERT_EXT) -#ifdef WOLFSSL_EKU_OID - #ifndef CTC_MAX_EKU_NB - #define CTC_MAX_EKU_NB 1 - #endif - #ifndef CTC_MAX_EKU_OID_SZ - #define CTC_MAX_EKU_OID_SZ 30 - #endif -#else - #undef CTC_MAX_EKU_OID_SZ - #define CTC_MAX_EKU_OID_SZ 0 -#endif -#endif /* WOLFSSL_CERT_GEN || WOLFSSL_CERT_EXT */ - -#ifdef WOLFSSL_CERT_GEN - -#ifdef WOLFSSL_MULTI_ATTRIB -#ifndef CTC_MAX_ATTRIB - #define CTC_MAX_ATTRIB 4 -#endif - -/* ASN Encoded Name field */ -typedef struct NameAttrib { - int sz; /* actual string value length */ - int id; /* id of name */ - int type; /* enc of name */ - char value[CTC_NAME_SIZE]; /* name */ -} NameAttrib; -#endif /* WOLFSSL_MULTI_ATTRIB */ - - -typedef struct CertName { - char country[CTC_NAME_SIZE]; - char countryEnc; - char state[CTC_NAME_SIZE]; - char stateEnc; - char locality[CTC_NAME_SIZE]; - char localityEnc; - char sur[CTC_NAME_SIZE]; - char surEnc; - char org[CTC_NAME_SIZE]; - char orgEnc; - char unit[CTC_NAME_SIZE]; - char unitEnc; - char commonName[CTC_NAME_SIZE]; - char commonNameEnc; - char serialDev[CTC_NAME_SIZE]; - char serialDevEnc; -#ifdef WOLFSSL_CERT_EXT - char busCat[CTC_NAME_SIZE]; - char busCatEnc; - char joiC[CTC_NAME_SIZE]; - char joiCEnc; - char joiSt[CTC_NAME_SIZE]; - char joiStEnc; -#endif - char email[CTC_NAME_SIZE]; /* !!!! email has to be last !!!! */ -#ifdef WOLFSSL_MULTI_ATTRIB - NameAttrib name[CTC_MAX_ATTRIB]; -#endif -} CertName; - - -/* for user to fill for certificate generation */ -typedef struct Cert { - int version; /* x509 version */ - byte serial[CTC_SERIAL_SIZE]; /* serial number */ - int serialSz; /* serial size */ - int sigType; /* signature algo type */ - CertName issuer; /* issuer info */ - int daysValid; /* validity days */ - int selfSigned; /* self signed flag */ - CertName subject; /* subject info */ - int isCA; /* is this going to be a CA */ - /* internal use only */ - int bodySz; /* pre sign total size */ - int keyType; /* public key type of subject */ -#ifdef WOLFSSL_ALT_NAMES - byte altNames[CTC_MAX_ALT_SIZE]; /* altNames copy */ - int altNamesSz; /* altNames size in bytes */ - byte beforeDate[CTC_DATE_SIZE]; /* before date copy */ - int beforeDateSz; /* size of copy */ - byte afterDate[CTC_DATE_SIZE]; /* after date copy */ - int afterDateSz; /* size of copy */ -#endif -#ifdef WOLFSSL_CERT_EXT - byte skid[CTC_MAX_SKID_SIZE]; /* Subject Key Identifier */ - int skidSz; /* SKID size in bytes */ - byte akid[CTC_MAX_AKID_SIZE]; /* Authority Key Identifier */ - int akidSz; /* AKID size in bytes */ - word16 keyUsage; /* Key Usage */ - byte extKeyUsage; /* Extended Key Usage */ -#ifdef WOLFSSL_EKU_OID - /* Extended Key Usage OIDs */ - byte extKeyUsageOID[CTC_MAX_EKU_NB][CTC_MAX_EKU_OID_SZ]; - byte extKeyUsageOIDSz[CTC_MAX_EKU_NB]; -#endif - char certPolicies[CTC_MAX_CERTPOL_NB][CTC_MAX_CERTPOL_SZ]; - word16 certPoliciesNb; /* Number of Cert Policy */ - byte issRaw[sizeof(CertName)]; /* raw issuer info */ - byte sbjRaw[sizeof(CertName)]; /* raw subject info */ -#endif -#ifdef WOLFSSL_CERT_REQ - char challengePw[CTC_NAME_SIZE]; - int challengePwPrintableString; /* encode as PrintableString */ -#endif - void* decodedCert; /* internal DecodedCert allocated from heap */ - byte* der; /* Pointer to buffer of current DecodedCert cache */ - void* heap; /* heap hint */ -} Cert; - - -/* Initialize and Set Certificate defaults: - version = 3 (0x2) - serial = 0 (Will be randomly generated) - sigType = SHA_WITH_RSA - issuer = blank - daysValid = 500 - selfSigned = 1 (true) use subject as issuer - subject = blank - isCA = 0 (false) - keyType = RSA_KEY (default) -*/ -WOLFSSL_API int wc_InitCert(Cert*); -WOLFSSL_API int wc_MakeCert_ex(Cert* cert, byte* derBuffer, word32 derSz, - int keyType, void* key, WC_RNG* rng); -WOLFSSL_API int wc_MakeCert(Cert*, byte* derBuffer, word32 derSz, RsaKey*, - ecc_key*, WC_RNG*); -#ifdef WOLFSSL_CERT_REQ - WOLFSSL_API int wc_MakeCertReq_ex(Cert*, byte* derBuffer, word32 derSz, - int, void*); - WOLFSSL_API int wc_MakeCertReq(Cert*, byte* derBuffer, word32 derSz, - RsaKey*, ecc_key*); -#endif -WOLFSSL_API int wc_SignCert_ex(int requestSz, int sType, byte* buffer, - word32 buffSz, int keyType, void* key, - WC_RNG* rng); -WOLFSSL_API int wc_SignCert(int requestSz, int sigType, byte* derBuffer, - word32 derSz, RsaKey*, ecc_key*, WC_RNG*); -WOLFSSL_API int wc_MakeSelfCert(Cert*, byte* derBuffer, word32 derSz, RsaKey*, - WC_RNG*); -WOLFSSL_API int wc_SetIssuer(Cert*, const char*); -WOLFSSL_API int wc_SetSubject(Cert*, const char*); -#ifdef WOLFSSL_ALT_NAMES - WOLFSSL_API int wc_SetAltNames(Cert*, const char*); -#endif - -#ifdef WOLFSSL_CERT_GEN_CACHE -WOLFSSL_API void wc_SetCert_Free(Cert* cert); -#endif - -WOLFSSL_API int wc_SetIssuerBuffer(Cert*, const byte*, int); -WOLFSSL_API int wc_SetSubjectBuffer(Cert*, const byte*, int); -WOLFSSL_API int wc_SetAltNamesBuffer(Cert*, const byte*, int); -WOLFSSL_API int wc_SetDatesBuffer(Cert*, const byte*, int); - -#ifndef NO_ASN_TIME -WOLFSSL_API int wc_GetCertDates(Cert* cert, struct tm* before, - struct tm* after); -#endif - -#ifdef WOLFSSL_CERT_EXT -WOLFSSL_API int wc_SetAuthKeyIdFromPublicKey_ex(Cert *cert, int keyType, - void* key); -WOLFSSL_API int wc_SetAuthKeyIdFromPublicKey(Cert *cert, RsaKey *rsakey, - ecc_key *eckey); -WOLFSSL_API int wc_SetAuthKeyIdFromCert(Cert *cert, const byte *der, int derSz); -WOLFSSL_API int wc_SetAuthKeyId(Cert *cert, const char* file); -WOLFSSL_API int wc_SetSubjectKeyIdFromPublicKey_ex(Cert *cert, int keyType, - void* key); -WOLFSSL_API int wc_SetSubjectKeyIdFromPublicKey(Cert *cert, RsaKey *rsakey, - ecc_key *eckey); -WOLFSSL_API int wc_SetSubjectKeyId(Cert *cert, const char* file); -WOLFSSL_API int wc_GetSubjectRaw(byte **subjectRaw, Cert *cert); -WOLFSSL_API int wc_SetSubjectRaw(Cert* cert, const byte* der, int derSz); -WOLFSSL_API int wc_SetIssuerRaw(Cert* cert, const byte* der, int derSz); - -#ifdef HAVE_NTRU -WOLFSSL_API int wc_SetSubjectKeyIdFromNtruPublicKey(Cert *cert, byte *ntruKey, - word16 ntruKeySz); -#endif - -/* Set the KeyUsage. - * Value is a string separated tokens with ','. Accepted tokens are : - * digitalSignature,nonRepudiation,contentCommitment,keyCertSign,cRLSign, - * dataEncipherment,keyAgreement,keyEncipherment,encipherOnly and decipherOnly. - * - * nonRepudiation and contentCommitment are for the same usage. - */ -WOLFSSL_API int wc_SetKeyUsage(Cert *cert, const char *value); - -/* Set ExtendedKeyUsage - * Value is a string separated tokens with ','. Accepted tokens are : - * any,serverAuth,clientAuth,codeSigning,emailProtection,timeStamping,OCSPSigning - */ -WOLFSSL_API int wc_SetExtKeyUsage(Cert *cert, const char *value); - - -#ifdef WOLFSSL_EKU_OID -/* Set ExtendedKeyUsage with unique OID - * oid is expected to be in byte representation - */ -WOLFSSL_API int wc_SetExtKeyUsageOID(Cert *cert, const char *oid, word32 sz, - byte idx, void* heap); -#endif /* WOLFSSL_EKU_OID */ -#endif /* WOLFSSL_CERT_EXT */ - - #ifdef HAVE_NTRU - WOLFSSL_API int wc_MakeNtruCert(Cert*, byte* derBuffer, word32 derSz, - const byte* ntruKey, word16 keySz, - WC_RNG*); - #endif - -#endif /* WOLFSSL_CERT_GEN */ - -WOLFSSL_API int wc_GetDateInfo(const byte* certDate, int certDateSz, - const byte** date, byte* format, int* length); -#ifndef NO_ASN_TIME -WOLFSSL_API int wc_GetDateAsCalendarTime(const byte* date, int length, - byte format, struct tm* time); -#endif - -#if defined(WOLFSSL_PEM_TO_DER) || defined(WOLFSSL_DER_TO_PEM) - - WOLFSSL_API int wc_PemGetHeaderFooter(int type, const char** header, - const char** footer); - -#endif - -WOLFSSL_API int wc_AllocDer(DerBuffer** pDer, word32 length, int type, void* heap); -WOLFSSL_API void wc_FreeDer(DerBuffer** pDer); - -#ifdef WOLFSSL_PEM_TO_DER - WOLFSSL_API int wc_PemToDer(const unsigned char* buff, long longSz, int type, - DerBuffer** pDer, void* heap, EncryptedInfo* info, int* eccKey); - - WOLFSSL_API int wc_KeyPemToDer(const unsigned char*, int, - unsigned char*, int, const char*); - WOLFSSL_API int wc_CertPemToDer(const unsigned char*, int, - unsigned char*, int, int); -#endif /* WOLFSSL_PEM_TO_DER */ - -#if defined(WOLFSSL_CERT_EXT) || defined(WOLFSSL_PUB_PEM_TO_DER) - #ifndef NO_FILESYSTEM - WOLFSSL_API int wc_PemPubKeyToDer(const char* fileName, - unsigned char* derBuf, int derSz); - #endif - - WOLFSSL_API int wc_PubKeyPemToDer(const unsigned char*, int, - unsigned char*, int); -#endif /* WOLFSSL_CERT_EXT || WOLFSSL_PUB_PEM_TO_DER */ - -#ifdef WOLFSSL_CERT_GEN - #ifndef NO_FILESYSTEM - WOLFSSL_API int wc_PemCertToDer(const char* fileName, - unsigned char* derBuf, int derSz); - #endif -#endif /* WOLFSSL_CERT_GEN */ - -#ifdef WOLFSSL_DER_TO_PEM - WOLFSSL_API int wc_DerToPem(const byte* der, word32 derSz, byte* output, - word32 outputSz, int type); - WOLFSSL_API int wc_DerToPemEx(const byte* der, word32 derSz, byte* output, - word32 outputSz, byte *cipherIno, int type); -#endif - -#ifndef NO_RSA - #if !defined(HAVE_USER_RSA) - WOLFSSL_API int wc_RsaPublicKeyDecode_ex(const byte* input, word32* inOutIdx, - word32 inSz, const byte** n, word32* nSz, const byte** e, word32* eSz); - #endif - WOLFSSL_API int wc_RsaPublicKeyDerSize(RsaKey* key, int with_header); -#endif - -#ifdef HAVE_ECC - /* private key helpers */ - WOLFSSL_API int wc_EccPrivateKeyDecode(const byte*, word32*, - ecc_key*, word32); - WOLFSSL_API int wc_EccKeyToDer(ecc_key*, byte* output, word32 inLen); - WOLFSSL_API int wc_EccPrivateKeyToDer(ecc_key* key, byte* output, - word32 inLen); - WOLFSSL_API int wc_EccPrivateKeyToPKCS8(ecc_key* key, byte* output, - word32* outLen); - - /* public key helper */ - WOLFSSL_API int wc_EccPublicKeyDecode(const byte*, word32*, - ecc_key*, word32); - WOLFSSL_API int wc_EccPublicKeyToDer(ecc_key*, byte* output, - word32 inLen, int with_AlgCurve); - WOLFSSL_API int wc_EccPublicKeyDerSize(ecc_key*, int with_AlgCurve); -#endif - -#ifdef HAVE_ED25519 - /* private key helpers */ - WOLFSSL_API int wc_Ed25519PrivateKeyDecode(const byte*, word32*, - ed25519_key*, word32); - WOLFSSL_API int wc_Ed25519KeyToDer(ed25519_key* key, byte* output, - word32 inLen); - WOLFSSL_API int wc_Ed25519PrivateKeyToDer(ed25519_key* key, byte* output, - word32 inLen); - - /* public key helper */ - WOLFSSL_API int wc_Ed25519PublicKeyDecode(const byte*, word32*, - ed25519_key*, word32); - #if (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) - WOLFSSL_API int wc_Ed25519PublicKeyToDer(ed25519_key*, byte* output, - word32 inLen, int with_AlgCurve); - #endif -#endif - -#ifdef HAVE_ED448 - /* private key helpers */ - WOLFSSL_API int wc_Ed448PrivateKeyDecode(const byte*, word32*, - ed448_key*, word32); - WOLFSSL_API int wc_Ed448KeyToDer(ed448_key* key, byte* output, - word32 inLen); - WOLFSSL_API int wc_Ed448PrivateKeyToDer(ed448_key* key, byte* output, - word32 inLen); - - /* public key helper */ - WOLFSSL_API int wc_Ed448PublicKeyDecode(const byte*, word32*, - ed448_key*, word32); - #if (defined(WOLFSSL_CERT_GEN) || defined(WOLFSSL_KEY_GEN)) - WOLFSSL_API int wc_Ed448PublicKeyToDer(ed448_key*, byte* output, - word32 inLen, int with_AlgCurve); - #endif -#endif - -/* DER encode signature */ -WOLFSSL_API word32 wc_EncodeSignature(byte* out, const byte* digest, - word32 digSz, int hashOID); -WOLFSSL_API int wc_GetCTC_HashOID(int type); - -WOLFSSL_API int wc_GetPkcs8TraditionalOffset(byte* input, - word32* inOutIdx, word32 sz); -WOLFSSL_API int wc_CreatePKCS8Key(byte* out, word32* outSz, - byte* key, word32 keySz, int algoID, const byte* curveOID, word32 oidSz); - -#ifndef NO_ASN_TIME -/* Time */ -/* Returns seconds (Epoch/UTC) - * timePtr: is "time_t", which is typically "long" - * Example: - long lTime; - rc = wc_GetTime(&lTime, (word32)sizeof(lTime)); -*/ -WOLFSSL_API int wc_GetTime(void* timePtr, word32 timeSize); -#endif - -#ifdef WOLFSSL_ENCRYPTED_KEYS - WOLFSSL_API int wc_EncryptedInfoGet(EncryptedInfo* info, - const char* cipherInfo); -#endif - - -#ifdef WOLFSSL_CERT_PIV - -typedef struct _wc_CertPIV { - const byte* cert; - word32 certSz; - const byte* certErrDet; - word32 certErrDetSz; - const byte* nonce; /* Identiv Only */ - word32 nonceSz; /* Identiv Only */ - const byte* signedNonce; /* Identiv Only */ - word32 signedNonceSz; /* Identiv Only */ - - /* flags */ - word16 compression:2; - word16 isX509:1; - word16 isIdentiv:1; -} wc_CertPIV; - -WOLFSSL_API int wc_ParseCertPIV(wc_CertPIV* cert, const byte* buf, word32 totalSz); -#endif /* WOLFSSL_CERT_PIV */ - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLF_CRYPT_ASN_PUBLIC_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/async.h b/client/wolfssl/wolfssl/wolfcrypt/async.h deleted file mode 100644 index e69de29..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/async.h +++ /dev/null diff --git a/client/wolfssl/wolfssl/wolfcrypt/blake2-impl.h b/client/wolfssl/wolfssl/wolfcrypt/blake2-impl.h deleted file mode 100644 index cb4df28..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/blake2-impl.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - BLAKE2 reference source code package - reference C implementations - - Written in 2012 by Samuel Neves <[email protected]> - - To the extent possible under law, the author(s) have dedicated all copyright - and related and neighboring rights to this software to the public domain - worldwide. This software is distributed without any warranty. - - You should have received a copy of the CC0 Public Domain Dedication along with - this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>. -*/ -/* blake2-impl.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -#ifndef WOLFCRYPT_BLAKE2_IMPL_H -#define WOLFCRYPT_BLAKE2_IMPL_H - -#include <wolfssl/wolfcrypt/types.h> - -static WC_INLINE word32 load32( const void *src ) -{ -#if defined(LITTLE_ENDIAN_ORDER) - return *( word32 * )( src ); -#else - const byte *p = ( byte * )src; - word32 w = *p++; - w |= ( word32 )( *p++ ) << 8; - w |= ( word32 )( *p++ ) << 16; - w |= ( word32 )( *p++ ) << 24; - return w; -#endif -} - -static WC_INLINE word64 load64( const void *src ) -{ -#if defined(LITTLE_ENDIAN_ORDER) - return *( word64 * )( src ); -#else - const byte *p = ( byte * )src; - word64 w = *p++; - w |= ( word64 )( *p++ ) << 8; - w |= ( word64 )( *p++ ) << 16; - w |= ( word64 )( *p++ ) << 24; - w |= ( word64 )( *p++ ) << 32; - w |= ( word64 )( *p++ ) << 40; - w |= ( word64 )( *p++ ) << 48; - w |= ( word64 )( *p++ ) << 56; - return w; -#endif -} - -static WC_INLINE void store32( void *dst, word32 w ) -{ -#if defined(LITTLE_ENDIAN_ORDER) - *( word32 * )( dst ) = w; -#else - byte *p = ( byte * )dst; - *p++ = ( byte )w; w >>= 8; - *p++ = ( byte )w; w >>= 8; - *p++ = ( byte )w; w >>= 8; - *p++ = ( byte )w; -#endif -} - -static WC_INLINE void store64( void *dst, word64 w ) -{ -#if defined(LITTLE_ENDIAN_ORDER) - *( word64 * )( dst ) = w; -#else - byte *p = ( byte * )dst; - *p++ = ( byte )w; w >>= 8; - *p++ = ( byte )w; w >>= 8; - *p++ = ( byte )w; w >>= 8; - *p++ = ( byte )w; w >>= 8; - *p++ = ( byte )w; w >>= 8; - *p++ = ( byte )w; w >>= 8; - *p++ = ( byte )w; w >>= 8; - *p++ = ( byte )w; -#endif -} - -static WC_INLINE word64 load48( const void *src ) -{ - const byte *p = ( const byte * )src; - word64 w = *p++; - w |= ( word64 )( *p++ ) << 8; - w |= ( word64 )( *p++ ) << 16; - w |= ( word64 )( *p++ ) << 24; - w |= ( word64 )( *p++ ) << 32; - w |= ( word64 )( *p++ ) << 40; - return w; -} - -static WC_INLINE void store48( void *dst, word64 w ) -{ - byte *p = ( byte * )dst; - *p++ = ( byte )w; w >>= 8; - *p++ = ( byte )w; w >>= 8; - *p++ = ( byte )w; w >>= 8; - *p++ = ( byte )w; w >>= 8; - *p++ = ( byte )w; w >>= 8; - *p++ = ( byte )w; -} - -static WC_INLINE word32 rotl32( const word32 w, const unsigned c ) -{ - return ( w << c ) | ( w >> ( 32 - c ) ); -} - -static WC_INLINE word64 rotl64( const word64 w, const unsigned c ) -{ - return ( w << c ) | ( w >> ( 64 - c ) ); -} - -static WC_INLINE word32 rotr32( const word32 w, const unsigned c ) -{ - return ( w >> c ) | ( w << ( 32 - c ) ); -} - -static WC_INLINE word64 rotr64( const word64 w, const unsigned c ) -{ - return ( w >> c ) | ( w << ( 64 - c ) ); -} - -/* prevents compiler optimizing out memset() */ -static WC_INLINE void secure_zero_memory( void *v, word64 n ) -{ - volatile byte *p = ( volatile byte * )v; - - while( n-- ) *p++ = 0; -} - -#endif /* WOLFCRYPT_BLAKE2_IMPL_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/blake2-int.h b/client/wolfssl/wolfssl/wolfcrypt/blake2-int.h deleted file mode 100644 index 6f5610d..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/blake2-int.h +++ /dev/null @@ -1,184 +0,0 @@ -/* - BLAKE2 reference source code package - reference C implementations - - Written in 2012 by Samuel Neves <[email protected]> - - To the extent possible under law, the author(s) have dedicated all copyright - and related and neighboring rights to this software to the public domain - worldwide. This software is distributed without any warranty. - - You should have received a copy of the CC0 Public Domain Dedication along with - this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>. -*/ -/* blake2-int.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - - -#ifndef WOLFCRYPT_BLAKE2_INT_H -#define WOLFCRYPT_BLAKE2_INT_H - -#include <wolfssl/wolfcrypt/types.h> - - -#if defined(_MSC_VER) - #define ALIGN(x) __declspec(align(x)) -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__GNUC__) - #define ALIGN(x) __attribute__((aligned(x))) -#else - #define ALIGN(x) -#endif - - -#if defined(__cplusplus) - extern "C" { -#endif - - enum blake2s_constant - { - BLAKE2S_BLOCKBYTES = 64, - BLAKE2S_OUTBYTES = 32, - BLAKE2S_KEYBYTES = 32, - BLAKE2S_SALTBYTES = 8, - BLAKE2S_PERSONALBYTES = 8 - }; - - enum blake2b_constant - { - BLAKE2B_BLOCKBYTES = 128, - BLAKE2B_OUTBYTES = 64, - BLAKE2B_KEYBYTES = 64, - BLAKE2B_SALTBYTES = 16, - BLAKE2B_PERSONALBYTES = 16 - }; - -#pragma pack(push, 1) - typedef struct __blake2s_param - { - byte digest_length; /* 1 */ - byte key_length; /* 2 */ - byte fanout; /* 3 */ - byte depth; /* 4 */ - word32 leaf_length; /* 8 */ - byte node_offset[6];/* 14 */ - byte node_depth; /* 15 */ - byte inner_length; /* 16 */ - /* byte reserved[0]; */ - byte salt[BLAKE2B_SALTBYTES]; /* 24 */ - byte personal[BLAKE2S_PERSONALBYTES]; /* 32 */ - } blake2s_param; - - ALIGN( 32 ) typedef struct __blake2s_state - { - word32 h[8]; - word32 t[2]; - word32 f[2]; - byte buf[2 * BLAKE2S_BLOCKBYTES]; - word32 buflen; - byte last_node; - } blake2s_state ; - - typedef struct __blake2b_param - { - byte digest_length; /* 1 */ - byte key_length; /* 2 */ - byte fanout; /* 3 */ - byte depth; /* 4 */ - word32 leaf_length; /* 8 */ - word64 node_offset; /* 16 */ - byte node_depth; /* 17 */ - byte inner_length; /* 18 */ - byte reserved[14]; /* 32 */ - byte salt[BLAKE2B_SALTBYTES]; /* 48 */ - byte personal[BLAKE2B_PERSONALBYTES]; /* 64 */ - } blake2b_param; - - ALIGN( 64 ) typedef struct __blake2b_state - { - word64 h[8]; - word64 t[2]; - word64 f[2]; - byte buf[2 * BLAKE2B_BLOCKBYTES]; - word64 buflen; - byte last_node; - } blake2b_state; - - typedef struct __blake2sp_state - { - blake2s_state S[8][1]; - blake2s_state R[1]; - byte buf[8 * BLAKE2S_BLOCKBYTES]; - word32 buflen; - } blake2sp_state; - - typedef struct __blake2bp_state - { - blake2b_state S[4][1]; - blake2b_state R[1]; - byte buf[4 * BLAKE2B_BLOCKBYTES]; - word64 buflen; - } blake2bp_state; -#pragma pack(pop) - - /* Streaming API */ - int blake2s_init( blake2s_state *S, const byte outlen ); - int blake2s_init_key( blake2s_state *S, const byte outlen, const void *key, const byte keylen ); - int blake2s_init_param( blake2s_state *S, const blake2s_param *P ); - int blake2s_update( blake2s_state *S, const byte *in, word32 inlen ); - int blake2s_final( blake2s_state *S, byte *out, byte outlen ); - - int blake2b_init( blake2b_state *S, const byte outlen ); - int blake2b_init_key( blake2b_state *S, const byte outlen, const void *key, const byte keylen ); - int blake2b_init_param( blake2b_state *S, const blake2b_param *P ); - int blake2b_update( blake2b_state *S, const byte *in, word64 inlen ); - int blake2b_final( blake2b_state *S, byte *out, byte outlen ); - - int blake2sp_init( blake2sp_state *S, const byte outlen ); - int blake2sp_init_key( blake2sp_state *S, const byte outlen, const void *key, const byte keylen ); - int blake2sp_update( blake2sp_state *S, const byte *in, word32 inlen ); - int blake2sp_final( blake2sp_state *S, byte *out, byte outlen ); - - int blake2bp_init( blake2bp_state *S, const byte outlen ); - int blake2bp_init_key( blake2bp_state *S, const byte outlen, const void *key, const byte keylen ); - int blake2bp_update( blake2bp_state *S, const byte *in, word64 inlen ); - int blake2bp_final( blake2bp_state *S, byte *out, byte outlen ); - - /* Simple API */ - int blake2s( byte *out, const void *in, const void *key, const byte outlen, const word32 inlen, byte keylen ); - int blake2b( byte *out, const void *in, const void *key, const byte outlen, const word64 inlen, byte keylen ); - - int blake2sp( byte *out, const void *in, const void *key, const byte outlen, const word32 inlen, byte keylen ); - int blake2bp( byte *out, const void *in, const void *key, const byte outlen, const word64 inlen, byte keylen ); - - static WC_INLINE int blake2( byte *out, const void *in, const void *key, const byte outlen, const word64 inlen, byte keylen ) - { - return blake2b( out, in, key, outlen, inlen, keylen ); - } - - - -#if defined(__cplusplus) - } -#endif - -#endif /* WOLFCRYPT_BLAKE2_INT_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/blake2.h b/client/wolfssl/wolfssl/wolfcrypt/blake2.h deleted file mode 100644 index bc80d71..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/blake2.h +++ /dev/null @@ -1,96 +0,0 @@ -/* blake2.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/blake2.h -*/ - -#ifndef WOLF_CRYPT_BLAKE2_H -#define WOLF_CRYPT_BLAKE2_H - -#include <wolfssl/wolfcrypt/settings.h> - -#if defined(HAVE_BLAKE2) || defined(HAVE_BLAKE2S) - -#include <wolfssl/wolfcrypt/blake2-int.h> - -/* call old functions if using fips for the sake of hmac @wc_fips */ -#ifdef HAVE_FIPS - /* Since hmac can call blake functions provide original calls */ - #define wc_InitBlake2b InitBlake2b - #define wc_Blake2bUpdate Blake2bUpdate - #define wc_Blake2bFinal Blake2bFinal -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -/* in bytes, variable digest size up to 512 bits (64 bytes) */ -enum { -#ifdef HAVE_BLAKE2B - BLAKE2B_ID = WC_HASH_TYPE_BLAKE2B, - BLAKE2B_256 = 32, /* 256 bit type, SSL default */ -#endif -#ifdef HAVE_BLAKE2S - BLAKE2S_ID = WC_HASH_TYPE_BLAKE2S, - BLAKE2S_256 = 32 /* 256 bit type */ -#endif -}; - - -#ifdef HAVE_BLAKE2B -/* BLAKE2b digest */ -typedef struct Blake2b { - blake2b_state S[1]; /* our state */ - word32 digestSz; /* digest size used on init */ -} Blake2b; -#endif - -#ifdef HAVE_BLAKE2S -/* BLAKE2s digest */ -typedef struct Blake2s { - blake2s_state S[1]; /* our state */ - word32 digestSz; /* digest size used on init */ -} Blake2s; -#endif - - -#ifdef HAVE_BLAKE2B -WOLFSSL_API int wc_InitBlake2b(Blake2b*, word32); -WOLFSSL_API int wc_Blake2bUpdate(Blake2b*, const byte*, word32); -WOLFSSL_API int wc_Blake2bFinal(Blake2b*, byte*, word32); -#endif - -#ifdef HAVE_BLAKE2S -WOLFSSL_API int wc_InitBlake2s(Blake2s*, word32); -WOLFSSL_API int wc_Blake2sUpdate(Blake2s*, const byte*, word32); -WOLFSSL_API int wc_Blake2sFinal(Blake2s*, byte*, word32); -#endif - - -#ifdef __cplusplus - } -#endif - -#endif /* HAVE_BLAKE2 || HAVE_BLAKE2S */ -#endif /* WOLF_CRYPT_BLAKE2_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/camellia.h b/client/wolfssl/wolfssl/wolfcrypt/camellia.h deleted file mode 100644 index 4b86e6c..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/camellia.h +++ /dev/null @@ -1,101 +0,0 @@ -/* camellia.h ver 1.2.0 - * - * Copyright (c) 2006,2007 - * NTT (Nippon Telegraph and Telephone Corporation) . 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 as - * the first lines of this file unmodified. - * 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. - * - * THIS SOFTWARE IS PROVIDED BY NTT ``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 NTT 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. - */ - -/* camellia.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/camellia.h -*/ - - -#ifndef WOLF_CRYPT_CAMELLIA_H -#define WOLF_CRYPT_CAMELLIA_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef HAVE_CAMELLIA - -#ifdef __cplusplus - extern "C" { -#endif - -enum { - CAMELLIA_BLOCK_SIZE = 16 -}; - -#define CAMELLIA_TABLE_BYTE_LEN 272 -#define CAMELLIA_TABLE_WORD_LEN (CAMELLIA_TABLE_BYTE_LEN / sizeof(word32)) - -typedef word32 KEY_TABLE_TYPE[CAMELLIA_TABLE_WORD_LEN]; - -typedef struct Camellia { - word32 keySz; - KEY_TABLE_TYPE key; - word32 reg[CAMELLIA_BLOCK_SIZE / sizeof(word32)]; /* for CBC mode */ - word32 tmp[CAMELLIA_BLOCK_SIZE / sizeof(word32)]; /* for CBC mode */ -} Camellia; - - -WOLFSSL_API int wc_CamelliaSetKey(Camellia* cam, - const byte* key, word32 len, const byte* iv); -WOLFSSL_API int wc_CamelliaSetIV(Camellia* cam, const byte* iv); -WOLFSSL_API int wc_CamelliaEncryptDirect(Camellia* cam, byte* out, - const byte* in); -WOLFSSL_API int wc_CamelliaDecryptDirect(Camellia* cam, byte* out, - const byte* in); -WOLFSSL_API int wc_CamelliaCbcEncrypt(Camellia* cam, - byte* out, const byte* in, word32 sz); -WOLFSSL_API int wc_CamelliaCbcDecrypt(Camellia* cam, - byte* out, const byte* in, word32 sz); - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* HAVE_CAMELLIA */ -#endif /* WOLF_CRYPT_CAMELLIA_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/chacha.h b/client/wolfssl/wolfssl/wolfcrypt/chacha.h deleted file mode 100644 index 72fc582..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/chacha.h +++ /dev/null @@ -1,83 +0,0 @@ -/* chacha.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/chacha.h -*/ - - -#ifndef WOLF_CRYPT_CHACHA_H -#define WOLF_CRYPT_CHACHA_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef HAVE_CHACHA - -#ifdef __cplusplus - extern "C" { -#endif - -/* Size of the IV */ -#define CHACHA_IV_WORDS 3 -#define CHACHA_IV_BYTES (CHACHA_IV_WORDS * sizeof(word32)) - -/* Size of ChaCha chunks */ -#define CHACHA_CHUNK_WORDS 16 -#define CHACHA_CHUNK_BYTES (CHACHA_CHUNK_WORDS * sizeof(word32)) - -#ifdef WOLFSSL_X86_64_BUILD -#if defined(USE_INTEL_SPEEDUP) && !defined(NO_CHACHA_ASM) - #define USE_INTEL_CHACHA_SPEEDUP - #define HAVE_INTEL_AVX1 -#endif -#endif - -enum { - CHACHA_ENC_TYPE = WC_CIPHER_CHACHA, /* cipher unique type */ - CHACHA_MAX_KEY_SZ = 32, -}; - -typedef struct ChaCha { - word32 X[CHACHA_CHUNK_WORDS]; /* state of cipher */ - word32 left; /* number of bytes leftover */ -#ifdef HAVE_INTEL_AVX1 - /* vpshufd reads 16 bytes but we only use bottom 4. */ - byte extra[12]; -#endif -} ChaCha; - -/** - * IV(nonce) changes with each record - * counter is for what value the block counter should start ... usually 0 - */ -WOLFSSL_API int wc_Chacha_SetIV(ChaCha* ctx, const byte* inIv, word32 counter); - -WOLFSSL_API int wc_Chacha_Process(ChaCha* ctx, byte* cipher, const byte* plain, - word32 msglen); -WOLFSSL_API int wc_Chacha_SetKey(ChaCha* ctx, const byte* key, word32 keySz); - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* HAVE_CHACHA */ -#endif /* WOLF_CRYPT_CHACHA_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/chacha20_poly1305.h b/client/wolfssl/wolfssl/wolfcrypt/chacha20_poly1305.h deleted file mode 100644 index 7d2b1aa..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/chacha20_poly1305.h +++ /dev/null @@ -1,129 +0,0 @@ -/* chacha20_poly1305.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -/* This implementation of the ChaCha20-Poly1305 AEAD is based on "ChaCha20 - * and Poly1305 for IETF protocols" (draft-irtf-cfrg-chacha20-poly1305-10): - * https://tools.ietf.org/html/draft-irtf-cfrg-chacha20-poly1305-10 - */ - -/*! - \file wolfssl/wolfcrypt/chacha20_poly1305.h -*/ - -#ifndef WOLF_CRYPT_CHACHA20_POLY1305_H -#define WOLF_CRYPT_CHACHA20_POLY1305_H - -#include <wolfssl/wolfcrypt/types.h> -#include <wolfssl/wolfcrypt/chacha.h> -#include <wolfssl/wolfcrypt/poly1305.h> - -#if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) - -#ifdef __cplusplus - extern "C" { -#endif - -#define CHACHA20_POLY1305_AEAD_KEYSIZE 32 -#define CHACHA20_POLY1305_AEAD_IV_SIZE 12 -#define CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE 16 - -enum { - CHACHA20_POLY_1305_ENC_TYPE = 8, /* cipher unique type */ - - /* AEAD Cipher Direction */ - CHACHA20_POLY1305_AEAD_DECRYPT = 0, - CHACHA20_POLY1305_AEAD_ENCRYPT = 1, - - /* AEAD State */ - CHACHA20_POLY1305_STATE_INIT = 0, - CHACHA20_POLY1305_STATE_READY = 1, - CHACHA20_POLY1305_STATE_AAD = 2, - CHACHA20_POLY1305_STATE_DATA = 3, -}; - -typedef struct ChaChaPoly_Aead { - ChaCha chacha; - Poly1305 poly; - - word32 aadLen; - word32 dataLen; - - byte state; - byte isEncrypt:1; -} ChaChaPoly_Aead; - - -/* - * The IV for this implementation is 96 bits to give the most flexibility. - * - * Some protocols may have unique per-invocation inputs that are not - * 96-bit in length. For example, IPsec may specify a 64-bit nonce. In - * such a case, it is up to the protocol document to define how to - * transform the protocol nonce into a 96-bit nonce, for example by - * concatenating a constant value. - */ - -WOLFSSL_API -int wc_ChaCha20Poly1305_Encrypt( - const byte inKey[CHACHA20_POLY1305_AEAD_KEYSIZE], - const byte inIV[CHACHA20_POLY1305_AEAD_IV_SIZE], - const byte* inAAD, const word32 inAADLen, - const byte* inPlaintext, const word32 inPlaintextLen, - byte* outCiphertext, - byte outAuthTag[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE]); - -WOLFSSL_API -int wc_ChaCha20Poly1305_Decrypt( - const byte inKey[CHACHA20_POLY1305_AEAD_KEYSIZE], - const byte inIV[CHACHA20_POLY1305_AEAD_IV_SIZE], - const byte* inAAD, const word32 inAADLen, - const byte* inCiphertext, const word32 inCiphertextLen, - const byte inAuthTag[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE], - byte* outPlaintext); - -WOLFSSL_API -int wc_ChaCha20Poly1305_CheckTag( - const byte authTag[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE], - const byte authTagChk[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE]); - - - -/* Implementation of AEAD, which includes support for adding - data, then final calculation of authentication tag */ -WOLFSSL_API int wc_ChaCha20Poly1305_Init(ChaChaPoly_Aead* aead, - const byte inKey[CHACHA20_POLY1305_AEAD_KEYSIZE], - const byte inIV[CHACHA20_POLY1305_AEAD_IV_SIZE], - int isEncrypt); -WOLFSSL_API int wc_ChaCha20Poly1305_UpdateAad(ChaChaPoly_Aead* aead, - const byte* inAAD, word32 inAADLen); -WOLFSSL_API int wc_ChaCha20Poly1305_UpdateData(ChaChaPoly_Aead* aead, - const byte* inData, byte* outData, word32 dataLen); -WOLFSSL_API int wc_ChaCha20Poly1305_Final(ChaChaPoly_Aead* aead, - byte outAuthTag[CHACHA20_POLY1305_AEAD_AUTHTAG_SIZE]); - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* HAVE_CHACHA && HAVE_POLY1305 */ -#endif /* WOLF_CRYPT_CHACHA20_POLY1305_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/cmac.h b/client/wolfssl/wolfssl/wolfcrypt/cmac.h deleted file mode 100644 index 80f13ce..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/cmac.h +++ /dev/null @@ -1,97 +0,0 @@ -/* cmac.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLF_CRYPT_CMAC_H -#define WOLF_CRYPT_CMAC_H - -#include <wolfssl/wolfcrypt/types.h> -#include <wolfssl/wolfcrypt/aes.h> - -#if !defined(NO_AES) && defined(WOLFSSL_CMAC) - -#if defined(HAVE_FIPS) && \ - defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2) - #include <wolfssl/wolfcrypt/fips.h> -#endif /* HAVE_FIPS_VERSION >= 2 */ - -#ifdef __cplusplus - extern "C" { -#endif - -/* avoid redefinition of structs */ -#if !defined(HAVE_FIPS) || \ - (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)) - -#ifndef WC_CMAC_TYPE_DEFINED - typedef struct Cmac Cmac; - #define WC_CMAC_TYPE_DEFINED -#endif -struct Cmac { - Aes aes; - byte buffer[AES_BLOCK_SIZE]; /* partially stored block */ - byte digest[AES_BLOCK_SIZE]; /* running digest */ - byte k1[AES_BLOCK_SIZE]; - byte k2[AES_BLOCK_SIZE]; - word32 bufferSz; - word32 totalSz; -}; - - - -typedef enum CmacType { - WC_CMAC_AES = 1 -} CmacType; - -#define WC_CMAC_TAG_MAX_SZ AES_BLOCK_SIZE -#define WC_CMAC_TAG_MIN_SZ (AES_BLOCK_SIZE/4) - -#endif /* HAVE_FIPS */ - -WOLFSSL_API -int wc_InitCmac(Cmac* cmac, - const byte* key, word32 keySz, - int type, void* unused); -WOLFSSL_API -int wc_CmacUpdate(Cmac* cmac, - const byte* in, word32 inSz); -WOLFSSL_API -int wc_CmacFinal(Cmac* cmac, - byte* out, word32* outSz); - -WOLFSSL_API -int wc_AesCmacGenerate(byte* out, word32* outSz, - const byte* in, word32 inSz, - const byte* key, word32 keySz); - -WOLFSSL_API -int wc_AesCmacVerify(const byte* check, word32 checkSz, - const byte* in, word32 inSz, - const byte* key, word32 keySz); - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* NO_AES && WOLFSSL_CMAC */ -#endif /* WOLF_CRYPT_CMAC_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/coding.h b/client/wolfssl/wolfssl/wolfcrypt/coding.h deleted file mode 100644 index 88b1caf..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/coding.h +++ /dev/null @@ -1,88 +0,0 @@ -/* coding.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/coding.h -*/ - -#ifndef WOLF_CRYPT_CODING_H -#define WOLF_CRYPT_CODING_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef __cplusplus - extern "C" { -#endif - - -WOLFSSL_API int Base64_Decode(const byte* in, word32 inLen, byte* out, - word32* outLen); - -#if defined(OPENSSL_EXTRA) || defined(SESSION_CERTS) || defined(WOLFSSL_KEY_GEN) \ - || defined(WOLFSSL_CERT_GEN) || defined(HAVE_WEBSERVER) || !defined(NO_DSA) - #ifndef WOLFSSL_BASE64_ENCODE - #define WOLFSSL_BASE64_ENCODE - #endif -#endif - - -#ifdef WOLFSSL_BASE64_ENCODE - enum Escaped { - WC_STD_ENC = 0, /* normal \n line ending encoding */ - WC_ESC_NL_ENC, /* use escape sequence encoding */ - WC_NO_NL_ENC /* no encoding at all */ - }; /* Encoding types */ - - /* encode isn't */ - WOLFSSL_API - int Base64_Encode(const byte* in, word32 inLen, byte* out, - word32* outLen); - WOLFSSL_API - int Base64_EncodeEsc(const byte* in, word32 inLen, byte* out, - word32* outLen); - WOLFSSL_API - int Base64_Encode_NoNl(const byte* in, word32 inLen, byte* out, - word32* outLen); -#endif - -#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) || \ - defined(HAVE_WEBSERVER) || defined(HAVE_FIPS) || \ - defined(HAVE_ECC_CDH) || defined(HAVE_SELFTEST) || \ - defined(WOLFSSL_ENCRYPTED_KEYS) - #ifndef WOLFSSL_BASE16 - #define WOLFSSL_BASE16 - #endif -#endif - -#ifdef WOLFSSL_BASE16 - WOLFSSL_API - int Base16_Decode(const byte* in, word32 inLen, byte* out, word32* outLen); - WOLFSSL_API - int Base16_Encode(const byte* in, word32 inLen, byte* out, word32* outLen); -#endif - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLF_CRYPT_CODING_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/compress.h b/client/wolfssl/wolfssl/wolfcrypt/compress.h deleted file mode 100644 index f324a83..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/compress.h +++ /dev/null @@ -1,58 +0,0 @@ -/* compress.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/compress.h -*/ - - -#ifndef WOLF_CRYPT_COMPRESS_H -#define WOLF_CRYPT_COMPRESS_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef HAVE_LIBZ - -#ifdef __cplusplus - extern "C" { -#endif - - -#define COMPRESS_FIXED 1 - -#define LIBZ_WINBITS_GZIP 16 - - -WOLFSSL_API int wc_Compress(byte*, word32, const byte*, word32, word32); -WOLFSSL_API int wc_Compress_ex(byte* out, word32 outSz, const byte* in, - word32 inSz, word32 flags, word32 windowBits); -WOLFSSL_API int wc_DeCompress(byte*, word32, const byte*, word32); -WOLFSSL_API int wc_DeCompress_ex(byte* out, word32 outSz, const byte* in, - word32 inSz, int windowBits); - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* HAVE_LIBZ */ -#endif /* WOLF_CRYPT_COMPRESS_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/cpuid.h b/client/wolfssl/wolfssl/wolfcrypt/cpuid.h deleted file mode 100644 index 3c3d1c2..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/cpuid.h +++ /dev/null @@ -1,62 +0,0 @@ -/* cpuid.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -#ifndef WOLF_CRYPT_CPUID_H -#define WOLF_CRYPT_CPUID_H - - -#include <wolfssl/wolfcrypt/types.h> - - -#ifdef __cplusplus - extern "C" { -#endif - -#if defined(WOLFSSL_X86_64_BUILD) || defined(USE_INTEL_SPEEDUP) || \ - defined(WOLFSSL_AESNI) - #define CPUID_AVX1 0x0001 - #define CPUID_AVX2 0x0002 - #define CPUID_RDRAND 0x0004 - #define CPUID_RDSEED 0x0008 - #define CPUID_BMI2 0x0010 /* MULX, RORX */ - #define CPUID_AESNI 0x0020 - #define CPUID_ADX 0x0040 /* ADCX, ADOX */ - - #define IS_INTEL_AVX1(f) ((f) & CPUID_AVX1) - #define IS_INTEL_AVX2(f) ((f) & CPUID_AVX2) - #define IS_INTEL_RDRAND(f) ((f) & CPUID_RDRAND) - #define IS_INTEL_RDSEED(f) ((f) & CPUID_RDSEED) - #define IS_INTEL_BMI2(f) ((f) & CPUID_BMI2) - #define IS_INTEL_AESNI(f) ((f) & CPUID_AESNI) - #define IS_INTEL_ADX(f) ((f) & CPUID_ADX) - - void cpuid_set_flags(void); - word32 cpuid_get_flags(void); -#endif - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* WOLF_CRYPT_CPUID_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/cryptocb.h b/client/wolfssl/wolfssl/wolfcrypt/cryptocb.h deleted file mode 100644 index eb42d26..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/cryptocb.h +++ /dev/null @@ -1,299 +0,0 @@ -/* cryptocb.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - */ - -#ifndef _WOLF_CRYPTO_CB_H_ -#define _WOLF_CRYPTO_CB_H_ - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef __cplusplus - extern "C" { -#endif - -/* Defines the Crypto Callback interface version, for compatibility */ -/* Increment this when Crypto Callback interface changes are made */ -#define CRYPTO_CB_VER 2 - - -#ifdef WOLF_CRYPTO_CB - -#ifndef NO_RSA - #include <wolfssl/wolfcrypt/rsa.h> -#endif -#ifdef HAVE_ECC - #include <wolfssl/wolfcrypt/ecc.h> -#endif -#ifndef NO_AES - #include <wolfssl/wolfcrypt/aes.h> -#endif -#ifndef NO_SHA - #include <wolfssl/wolfcrypt/sha.h> -#endif -#ifndef NO_SHA256 - #include <wolfssl/wolfcrypt/sha256.h> -#endif -#ifndef NO_HMAC - #include <wolfssl/wolfcrypt/hmac.h> -#endif -#ifndef WC_NO_RNG - #include <wolfssl/wolfcrypt/random.h> -#endif -#ifndef NO_DES3 - #include <wolfssl/wolfcrypt/des3.h> -#endif - - -/* Crypto Information Structure for callbacks */ -typedef struct wc_CryptoInfo { - int algo_type; /* enum wc_AlgoType */ -#if !defined(NO_RSA) || defined(HAVE_ECC) - struct { - int type; /* enum wc_PkType */ - union { - #ifndef NO_RSA - struct { - const byte* in; - word32 inLen; - byte* out; - word32* outLen; - int type; - RsaKey* key; - WC_RNG* rng; - } rsa; - #ifdef WOLFSSL_KEY_GEN - struct { - RsaKey* key; - int size; - long e; - WC_RNG* rng; - } rsakg; - #endif - #endif - #ifdef HAVE_ECC - struct { - WC_RNG* rng; - int size; - ecc_key* key; - int curveId; - } eckg; - struct { - ecc_key* private_key; - ecc_key* public_key; - byte* out; - word32* outlen; - } ecdh; - struct { - const byte* in; - word32 inlen; - byte* out; - word32* outlen; - WC_RNG* rng; - ecc_key* key; - } eccsign; - struct { - const byte* sig; - word32 siglen; - const byte* hash; - word32 hashlen; - int* res; - ecc_key* key; - } eccverify; - #endif - }; - } pk; -#endif /* !NO_RSA || HAVE_ECC */ -#if !defined(NO_AES) || !defined(NO_DES3) - struct { - int type; /* enum wc_CipherType */ - int enc; - union { - #ifdef HAVE_AESGCM - struct { - Aes* aes; - byte* out; - const byte* in; - word32 sz; - const byte* iv; - word32 ivSz; - byte* authTag; - word32 authTagSz; - const byte* authIn; - word32 authInSz; - } aesgcm_enc; - struct { - Aes* aes; - byte* out; - const byte* in; - word32 sz; - const byte* iv; - word32 ivSz; - const byte* authTag; - word32 authTagSz; - const byte* authIn; - word32 authInSz; - } aesgcm_dec; - #endif /* HAVE_AESGCM */ - #ifdef HAVE_AES_CBC - struct { - Aes* aes; - byte* out; - const byte* in; - word32 sz; - } aescbc; - #endif /* HAVE_AES_CBC */ - #ifndef NO_DES3 - struct { - Des3* des; - byte* out; - const byte* in; - word32 sz; - } des3; - #endif - }; - } cipher; -#endif /* !NO_AES || !NO_DES3 */ -#if !defined(NO_SHA) || !defined(NO_SHA256) - struct { - int type; /* enum wc_HashType */ - const byte* in; - word32 inSz; - byte* digest; - union { - #ifndef NO_SHA - wc_Sha* sha1; - #endif - #ifndef NO_SHA256 - wc_Sha256* sha256; - #endif - }; - } hash; -#endif /* !NO_SHA || !NO_SHA256 */ -#ifndef NO_HMAC - struct { - int macType; /* enum wc_HashType */ - const byte* in; - word32 inSz; - byte* digest; - Hmac* hmac; - } hmac; -#endif -#ifndef WC_NO_RNG - struct { - WC_RNG* rng; - byte* out; - word32 sz; - } rng; - struct { - OS_Seed* os; - byte* seed; - word32 sz; - } seed; -#endif -} wc_CryptoInfo; - - -typedef int (*CryptoDevCallbackFunc)(int devId, wc_CryptoInfo* info, void* ctx); - -WOLFSSL_LOCAL void wc_CryptoCb_Init(void); - -WOLFSSL_API int wc_CryptoCb_RegisterDevice(int devId, CryptoDevCallbackFunc cb, void* ctx); -WOLFSSL_API void wc_CryptoCb_UnRegisterDevice(int devId); - -/* old function names */ -#define wc_CryptoDev_RegisterDevice wc_CryptoCb_RegisterDevice -#define wc_CryptoDev_UnRegisterDevice wc_CryptoCb_UnRegisterDevice - - -#ifndef NO_RSA -WOLFSSL_LOCAL int wc_CryptoCb_Rsa(const byte* in, word32 inLen, byte* out, - word32* outLen, int type, RsaKey* key, WC_RNG* rng); - -#ifdef WOLFSSL_KEY_GEN -WOLFSSL_LOCAL int wc_CryptoCb_MakeRsaKey(RsaKey* key, int size, long e, - WC_RNG* rng); -#endif /* WOLFSSL_KEY_GEN */ -#endif /* !NO_RSA */ - -#ifdef HAVE_ECC -WOLFSSL_LOCAL int wc_CryptoCb_MakeEccKey(WC_RNG* rng, int keySize, - ecc_key* key, int curveId); - -WOLFSSL_LOCAL int wc_CryptoCb_Ecdh(ecc_key* private_key, ecc_key* public_key, - byte* out, word32* outlen); - -WOLFSSL_LOCAL int wc_CryptoCb_EccSign(const byte* in, word32 inlen, byte* out, - word32 *outlen, WC_RNG* rng, ecc_key* key); - -WOLFSSL_LOCAL int wc_CryptoCb_EccVerify(const byte* sig, word32 siglen, - const byte* hash, word32 hashlen, int* res, ecc_key* key); -#endif /* HAVE_ECC */ - -#ifndef NO_AES -#ifdef HAVE_AESGCM -WOLFSSL_LOCAL int wc_CryptoCb_AesGcmEncrypt(Aes* aes, byte* out, - const byte* in, word32 sz, const byte* iv, word32 ivSz, - byte* authTag, word32 authTagSz, const byte* authIn, word32 authInSz); - -WOLFSSL_LOCAL int wc_CryptoCb_AesGcmDecrypt(Aes* aes, byte* out, - const byte* in, word32 sz, const byte* iv, word32 ivSz, - const byte* authTag, word32 authTagSz, - const byte* authIn, word32 authInSz); -#endif /* HAVE_AESGCM */ -#ifdef HAVE_AES_CBC -WOLFSSL_LOCAL int wc_CryptoCb_AesCbcEncrypt(Aes* aes, byte* out, - const byte* in, word32 sz); -WOLFSSL_LOCAL int wc_CryptoCb_AesCbcDecrypt(Aes* aes, byte* out, - const byte* in, word32 sz); -#endif /* HAVE_AES_CBC */ -#endif /* !NO_AES */ - -#ifndef NO_DES3 -WOLFSSL_LOCAL int wc_CryptoCb_Des3Encrypt(Des3* des3, byte* out, - const byte* in, word32 sz); -WOLFSSL_LOCAL int wc_CryptoCb_Des3Decrypt(Des3* des3, byte* out, - const byte* in, word32 sz); -#endif /* !NO_DES3 */ - -#ifndef NO_SHA -WOLFSSL_LOCAL int wc_CryptoCb_ShaHash(wc_Sha* sha, const byte* in, - word32 inSz, byte* digest); -#endif /* !NO_SHA */ - -#ifndef NO_SHA256 -WOLFSSL_LOCAL int wc_CryptoCb_Sha256Hash(wc_Sha256* sha256, const byte* in, - word32 inSz, byte* digest); -#endif /* !NO_SHA256 */ -#ifndef NO_HMAC -WOLFSSL_LOCAL int wc_CryptoCb_Hmac(Hmac* hmac, int macType, const byte* in, - word32 inSz, byte* digest); -#endif /* !NO_HMAC */ - -#ifndef WC_NO_RNG -WOLFSSL_LOCAL int wc_CryptoCb_RandomBlock(WC_RNG* rng, byte* out, word32 sz); -WOLFSSL_LOCAL int wc_CryptoCb_RandomSeed(OS_Seed* os, byte* seed, word32 sz); -#endif - -#endif /* WOLF_CRYPTO_CB */ - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* _WOLF_CRYPTO_CB_H_ */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/curve25519.h b/client/wolfssl/wolfssl/wolfcrypt/curve25519.h deleted file mode 100644 index 2b122e7..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/curve25519.h +++ /dev/null @@ -1,165 +0,0 @@ -/* curve25519.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/curve25519.h -*/ - - -#ifndef WOLF_CRYPT_CURVE25519_H -#define WOLF_CRYPT_CURVE25519_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef HAVE_CURVE25519 - -#include <wolfssl/wolfcrypt/fe_operations.h> -#include <wolfssl/wolfcrypt/random.h> - -#ifdef WOLFSSL_ASYNC_CRYPT - #include <wolfssl/wolfcrypt/async.h> -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -#define CURVE25519_KEYSIZE 32 - -#ifdef WOLFSSL_NAMES_STATIC -typedef char curve25519_str[12]; -#else -typedef const char* curve25519_str; -#endif - -/* curve25519 set type */ -typedef struct { - int size; /* The size of the curve in octets */ - curve25519_str name; /* name of this curve */ -} curve25519_set_type; - - -/* ECC point, the internal structure is Little endian - * the mathematical functions used the endianness */ -typedef struct { - byte point[CURVE25519_KEYSIZE]; - #ifdef FREESCALE_LTC_ECC - byte pointY[CURVE25519_KEYSIZE]; - #endif -} ECPoint; - -/* A CURVE25519 Key */ -typedef struct curve25519_key { - int idx; /* Index into the ecc_sets[] for the parameters of - this curve if -1, this key is using user supplied - curve in dp */ - const curve25519_set_type* dp; /* domain parameters, either points to - curves (idx >= 0) or user supplied */ - ECPoint p; /* public key */ - ECPoint k; /* private key */ - -#ifdef WOLFSSL_ASYNC_CRYPT - WC_ASYNC_DEV asyncDev; -#endif -} curve25519_key; - -enum { - EC25519_LITTLE_ENDIAN=0, - EC25519_BIG_ENDIAN=1 -}; - -WOLFSSL_API -int wc_curve25519_make_key(WC_RNG* rng, int keysize, curve25519_key* key); - -WOLFSSL_API -int wc_curve25519_shared_secret(curve25519_key* private_key, - curve25519_key* public_key, - byte* out, word32* outlen); - -WOLFSSL_API -int wc_curve25519_shared_secret_ex(curve25519_key* private_key, - curve25519_key* public_key, - byte* out, word32* outlen, int endian); - -WOLFSSL_API -int wc_curve25519_init(curve25519_key* key); - -WOLFSSL_API -void wc_curve25519_free(curve25519_key* key); - - -/* raw key helpers */ -WOLFSSL_API -int wc_curve25519_import_private(const byte* priv, word32 privSz, - curve25519_key* key); -WOLFSSL_API -int wc_curve25519_import_private_ex(const byte* priv, word32 privSz, - curve25519_key* key, int endian); - -WOLFSSL_API -int wc_curve25519_import_private_raw(const byte* priv, word32 privSz, - const byte* pub, word32 pubSz, curve25519_key* key); -WOLFSSL_API -int wc_curve25519_import_private_raw_ex(const byte* priv, word32 privSz, - const byte* pub, word32 pubSz, - curve25519_key* key, int endian); -WOLFSSL_API -int wc_curve25519_export_private_raw(curve25519_key* key, byte* out, - word32* outLen); -WOLFSSL_API -int wc_curve25519_export_private_raw_ex(curve25519_key* key, byte* out, - word32* outLen, int endian); - -WOLFSSL_API -int wc_curve25519_import_public(const byte* in, word32 inLen, - curve25519_key* key); -WOLFSSL_API -int wc_curve25519_import_public_ex(const byte* in, word32 inLen, - curve25519_key* key, int endian); -WOLFSSL_API -int wc_curve25519_check_public(const byte* pub, word32 pubSz, int endian); - -WOLFSSL_API -int wc_curve25519_export_public(curve25519_key* key, byte* out, word32* outLen); -WOLFSSL_API -int wc_curve25519_export_public_ex(curve25519_key* key, byte* out, - word32* outLen, int endian); - -WOLFSSL_API -int wc_curve25519_export_key_raw(curve25519_key* key, - byte* priv, word32 *privSz, - byte* pub, word32 *pubSz); -WOLFSSL_API -int wc_curve25519_export_key_raw_ex(curve25519_key* key, - byte* priv, word32 *privSz, - byte* pub, word32 *pubSz, - int endian); -/* size helper */ -WOLFSSL_API -int wc_curve25519_size(curve25519_key* key); - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* HAVE_CURVE25519 */ -#endif /* WOLF_CRYPT_CURVE25519_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/curve448.h b/client/wolfssl/wolfssl/wolfcrypt/curve448.h deleted file mode 100644 index 6a9c495..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/curve448.h +++ /dev/null @@ -1,139 +0,0 @@ -/* curve448.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/* Implemented to: RFC 7748 */ - - -#ifndef WOLF_CRYPT_CURVE448_H -#define WOLF_CRYPT_CURVE448_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef HAVE_CURVE448 - -#include <wolfssl/wolfcrypt/fe_448.h> -#include <wolfssl/wolfcrypt/random.h> - -#ifdef WOLFSSL_ASYNC_CRYPT - #include <wolfssl/wolfcrypt/async.h> -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -#define CURVE448_KEY_SIZE 56 -#define CURVE448_PUB_KEY_SIZE 56 - - -/* A CURVE448 Key */ -typedef struct curve448_key { - byte p[CURVE448_PUB_KEY_SIZE]; /* public key */ - byte k[CURVE448_KEY_SIZE]; /* private key */ - -#ifdef WOLFSSL_ASYNC_CRYPT - WC_ASYNC_DEV asyncDev; -#endif -} curve448_key; - -enum { - EC448_LITTLE_ENDIAN = 0, - EC448_BIG_ENDIAN = 1 -}; - -WOLFSSL_API -int wc_curve448_make_key(WC_RNG* rng, int keysize, curve448_key* key); - -WOLFSSL_API -int wc_curve448_shared_secret(curve448_key* private_key, - curve448_key* public_key, - byte* out, word32* outlen); - -WOLFSSL_API -int wc_curve448_shared_secret_ex(curve448_key* private_key, - curve448_key* public_key, - byte* out, word32* outlen, int endian); - -WOLFSSL_API -int wc_curve448_init(curve448_key* key); - -WOLFSSL_API -void wc_curve448_free(curve448_key* key); - - -/* raw key helpers */ -WOLFSSL_API -int wc_curve448_import_private(const byte* priv, word32 privSz, - curve448_key* key); -WOLFSSL_API -int wc_curve448_import_private_ex(const byte* priv, word32 privSz, - curve448_key* key, int endian); - -WOLFSSL_API -int wc_curve448_import_private_raw(const byte* priv, word32 privSz, - const byte* pub, word32 pubSz, - curve448_key* key); -WOLFSSL_API -int wc_curve448_import_private_raw_ex(const byte* priv, word32 privSz, - const byte* pub, word32 pubSz, - curve448_key* key, int endian); -WOLFSSL_API -int wc_curve448_export_private_raw(curve448_key* key, byte* out, - word32* outLen); -WOLFSSL_API -int wc_curve448_export_private_raw_ex(curve448_key* key, byte* out, - word32* outLen, int endian); - -WOLFSSL_API -int wc_curve448_import_public(const byte* in, word32 inLen, - curve448_key* key); -WOLFSSL_API -int wc_curve448_import_public_ex(const byte* in, word32 inLen, - curve448_key* key, int endian); -WOLFSSL_API -int wc_curve448_check_public(const byte* pub, word32 pubSz, int endian); - -WOLFSSL_API -int wc_curve448_export_public(curve448_key* key, byte* out, word32* outLen); -WOLFSSL_API -int wc_curve448_export_public_ex(curve448_key* key, byte* out, - word32* outLen, int endian); - -WOLFSSL_API -int wc_curve448_export_key_raw(curve448_key* key, - byte* priv, word32 *privSz, - byte* pub, word32 *pubSz); -WOLFSSL_API -int wc_curve448_export_key_raw_ex(curve448_key* key, - byte* priv, word32 *privSz, - byte* pub, word32 *pubSz, - int endian); -/* size helper */ -WOLFSSL_API -int wc_curve448_size(curve448_key* key); - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* HAVE_CURVE448 */ -#endif /* WOLF_CRYPT_CURVE448_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/des3.h b/client/wolfssl/wolfssl/wolfcrypt/des3.h deleted file mode 100644 index 705b59e..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/des3.h +++ /dev/null @@ -1,158 +0,0 @@ -/* des3.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/des3.h -*/ - -#ifndef WOLF_CRYPT_DES3_H -#define WOLF_CRYPT_DES3_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifndef NO_DES3 - -#if defined(HAVE_FIPS) && \ - defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2) - #include <wolfssl/wolfcrypt/fips.h> -#endif /* HAVE_FIPS_VERSION >= 2 */ - -#if defined(HAVE_FIPS) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 2)) -/* included for fips @wc_fips */ -#include <cyassl/ctaocrypt/des3.h> -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -/* these are required for FIPS and non-FIPS */ -enum { - DES_KEY_SIZE = 8, /* des */ - DES3_KEY_SIZE = 24, /* 3 des ede */ - DES_IV_SIZE = 8, /* should be the same as DES_BLOCK_SIZE */ -}; - - -/* avoid redefinition of structs */ -#if !defined(HAVE_FIPS) || \ - (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)) - -#ifdef WOLFSSL_ASYNC_CRYPT - #include <wolfssl/wolfcrypt/async.h> -#endif - -enum { - DES_ENC_TYPE = WC_CIPHER_DES, /* cipher unique type */ - DES3_ENC_TYPE = WC_CIPHER_DES3, /* cipher unique type */ - - DES_BLOCK_SIZE = 8, - DES_KS_SIZE = 32, /* internal DES key buffer size */ - - DES_ENCRYPTION = 0, - DES_DECRYPTION = 1 -}; - -#define DES_IVLEN 8 -#define DES_KEYLEN 8 -#define DES3_IVLEN 8 -#define DES3_KEYLEN 24 - - -#if defined(STM32_CRYPTO) -enum { - DES_CBC = 0, - DES_ECB = 1 -}; -#endif - - -/* DES encryption and decryption */ -typedef struct Des { - word32 reg[DES_BLOCK_SIZE / sizeof(word32)]; /* for CBC mode */ - word32 tmp[DES_BLOCK_SIZE / sizeof(word32)]; /* same */ - word32 key[DES_KS_SIZE]; -} Des; - - -/* DES3 encryption and decryption */ -struct Des3 { - word32 key[3][DES_KS_SIZE]; - word32 reg[DES_BLOCK_SIZE / sizeof(word32)]; /* for CBC mode */ - word32 tmp[DES_BLOCK_SIZE / sizeof(word32)]; /* same */ -#ifdef WOLFSSL_ASYNC_CRYPT - WC_ASYNC_DEV asyncDev; -#endif -#if defined(WOLF_CRYPTO_CB) || \ - (defined(WOLFSSL_ASYNC_CRYPT) && defined(WC_ASYNC_ENABLE_3DES)) - word32 devKey[DES3_KEYLEN/sizeof(word32)]; /* raw key */ -#endif -#ifdef WOLF_CRYPTO_CB - int devId; - void* devCtx; -#endif - void* heap; -}; - -#ifndef WC_DES3_TYPE_DEFINED - typedef struct Des3 Des3; - #define WC_DES3_TYPE_DEFINED -#endif -#endif /* HAVE_FIPS */ - - -WOLFSSL_API int wc_Des_SetKey(Des* des, const byte* key, - const byte* iv, int dir); -WOLFSSL_API void wc_Des_SetIV(Des* des, const byte* iv); -WOLFSSL_API int wc_Des_CbcEncrypt(Des* des, byte* out, - const byte* in, word32 sz); -WOLFSSL_API int wc_Des_CbcDecrypt(Des* des, byte* out, - const byte* in, word32 sz); -WOLFSSL_API int wc_Des_EcbEncrypt(Des* des, byte* out, - const byte* in, word32 sz); -WOLFSSL_API int wc_Des3_EcbEncrypt(Des3* des, byte* out, - const byte* in, word32 sz); - -/* ECB decrypt same process as encrypt but with decrypt key */ -#define wc_Des_EcbDecrypt wc_Des_EcbEncrypt -#define wc_Des3_EcbDecrypt wc_Des3_EcbEncrypt - -WOLFSSL_API int wc_Des3_SetKey(Des3* des, const byte* key, - const byte* iv,int dir); -WOLFSSL_API int wc_Des3_SetIV(Des3* des, const byte* iv); -WOLFSSL_API int wc_Des3_CbcEncrypt(Des3* des, byte* out, - const byte* in,word32 sz); -WOLFSSL_API int wc_Des3_CbcDecrypt(Des3* des, byte* out, - const byte* in,word32 sz); - -/* These are only required when using either: - static memory (WOLFSSL_STATIC_MEMORY) or asynchronous (WOLFSSL_ASYNC_CRYPT) */ -WOLFSSL_API int wc_Des3Init(Des3*, void*, int); -WOLFSSL_API void wc_Des3Free(Des3*); - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* NO_DES3 */ -#endif /* WOLF_CRYPT_DES3_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/dh.h b/client/wolfssl/wolfssl/wolfcrypt/dh.h deleted file mode 100644 index a69232c..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/dh.h +++ /dev/null @@ -1,139 +0,0 @@ -/* dh.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/dh.h -*/ - -#ifndef WOLF_CRYPT_DH_H -#define WOLF_CRYPT_DH_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifndef NO_DH - -#if defined(HAVE_FIPS) && \ - defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2) - #include <wolfssl/wolfcrypt/fips.h> -#endif /* HAVE_FIPS_VERSION >= 2 */ - -#include <wolfssl/wolfcrypt/integer.h> -#include <wolfssl/wolfcrypt/random.h> - -#ifdef __cplusplus - extern "C" { -#endif - -#ifdef WOLFSSL_ASYNC_CRYPT - #include <wolfssl/wolfcrypt/async.h> -#endif -typedef struct DhParams { - #ifdef HAVE_FFDHE_Q - const byte* q; - word32 q_len; - #endif /* HAVE_FFDHE_Q */ - const byte* p; - word32 p_len; - const byte* g; - word32 g_len; -} DhParams; - -/* Diffie-Hellman Key */ -struct DhKey { - mp_int p, g, q; /* group parameters */ -#if defined(WOLFSSL_QT) || defined(OPENSSL_ALL) || defined(WOLFSSL_OPENSSH) - mp_int pub; - mp_int priv; -#endif - void* heap; -#ifdef WOLFSSL_ASYNC_CRYPT - WC_ASYNC_DEV asyncDev; -#endif -}; - -#ifndef WC_DH_TYPE_DEFINED - typedef struct DhKey DhKey; - #define WC_DH_TYPE_DEFINED -#endif - -#ifdef HAVE_FFDHE_2048 -WOLFSSL_API const DhParams* wc_Dh_ffdhe2048_Get(void); -#endif -#ifdef HAVE_FFDHE_3072 -WOLFSSL_API const DhParams* wc_Dh_ffdhe3072_Get(void); -#endif -#ifdef HAVE_FFDHE_4096 -WOLFSSL_API const DhParams* wc_Dh_ffdhe4096_Get(void); -#endif -#ifdef HAVE_FFDHE_6144 -WOLFSSL_API const DhParams* wc_Dh_ffdhe6144_Get(void); -#endif -#ifdef HAVE_FFDHE_8192 -WOLFSSL_API const DhParams* wc_Dh_ffdhe8192_Get(void); -#endif - -WOLFSSL_API int wc_InitDhKey(DhKey* key); -WOLFSSL_API int wc_InitDhKey_ex(DhKey* key, void* heap, int devId); -WOLFSSL_API int wc_FreeDhKey(DhKey* key); - -WOLFSSL_API int wc_DhGenerateKeyPair(DhKey* key, WC_RNG* rng, byte* priv, - word32* privSz, byte* pub, word32* pubSz); -WOLFSSL_API int wc_DhAgree(DhKey* key, byte* agree, word32* agreeSz, - const byte* priv, word32 privSz, const byte* otherPub, - word32 pubSz); - -WOLFSSL_API int wc_DhKeyDecode(const byte* input, word32* inOutIdx, DhKey* key, - word32); -WOLFSSL_API int wc_DhSetKey(DhKey* key, const byte* p, word32 pSz, const byte* g, - word32 gSz); -WOLFSSL_API int wc_DhSetKey_ex(DhKey* key, const byte* p, word32 pSz, - const byte* g, word32 gSz, const byte* q, word32 qSz); -#if defined(WOLFSSL_QT) || defined(OPENSSL_ALL) -WOLFSSL_LOCAL int wc_DhSetFullKeys(DhKey* key,const byte* priv_key,word32 privSz, - const byte* pub_key, word32 pubSz); -#endif -WOLFSSL_API int wc_DhSetCheckKey(DhKey* key, const byte* p, word32 pSz, - const byte* g, word32 gSz, const byte* q, word32 qSz, - int trusted, WC_RNG* rng); -WOLFSSL_API int wc_DhParamsLoad(const byte* input, word32 inSz, byte* p, - word32* pInOutSz, byte* g, word32* gInOutSz); -WOLFSSL_API int wc_DhCheckPubKey(DhKey* key, const byte* pub, word32 pubSz); -WOLFSSL_API int wc_DhCheckPubKey_ex(DhKey* key, const byte* pub, word32 pubSz, - const byte* prime, word32 primeSz); -WOLFSSL_API int wc_DhCheckPubValue(const byte* prime, word32 primeSz, - const byte* pub, word32 pubSz); -WOLFSSL_API int wc_DhCheckPrivKey(DhKey* key, const byte* priv, word32 pubSz); -WOLFSSL_API int wc_DhCheckPrivKey_ex(DhKey* key, const byte* priv, word32 pubSz, - const byte* prime, word32 primeSz); -WOLFSSL_API int wc_DhCheckKeyPair(DhKey* key, const byte* pub, word32 pubSz, - const byte* priv, word32 privSz); -WOLFSSL_API int wc_DhGenerateParams(WC_RNG *rng, int modSz, DhKey *dh); -WOLFSSL_API int wc_DhExportParamsRaw(DhKey* dh, byte* p, word32* pSz, - byte* q, word32* qSz, byte* g, word32* gSz); - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* NO_DH */ -#endif /* WOLF_CRYPT_DH_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/dsa.h b/client/wolfssl/wolfssl/wolfcrypt/dsa.h deleted file mode 100644 index acc133e..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/dsa.h +++ /dev/null @@ -1,105 +0,0 @@ -/* dsa.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/dsa.h -*/ - -#ifndef WOLF_CRYPT_DSA_H -#define WOLF_CRYPT_DSA_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifndef NO_DSA - -#include <wolfssl/wolfcrypt/integer.h> -#include <wolfssl/wolfcrypt/random.h> - -/* for DSA reverse compatibility */ -#define InitDsaKey wc_InitDsaKey -#define FreeDsaKey wc_FreeDsaKey -#define DsaSign wc_DsaSign -#define DsaVerify wc_DsaVerify -#define DsaPublicKeyDecode wc_DsaPublicKeyDecode -#define DsaPrivateKeyDecode wc_DsaPrivateKeyDecode -#define DsaKeyToDer wc_DsaKeyToDer - -#ifdef __cplusplus - extern "C" { -#endif - - -enum { - DSA_PUBLIC = 0, - DSA_PRIVATE = 1 -}; - -enum { - DSA_HALF_SIZE = 20, /* r and s size */ - DSA_SIG_SIZE = 40 /* signature size */ -}; - -/* DSA */ -typedef struct DsaKey { - mp_int p, q, g, y, x; - int type; /* public or private */ - void* heap; /* memory hint */ -} DsaKey; - -WOLFSSL_API int wc_InitDsaKey(DsaKey* key); -WOLFSSL_API int wc_InitDsaKey_h(DsaKey* key, void* h); -WOLFSSL_API void wc_FreeDsaKey(DsaKey* key); -WOLFSSL_API int wc_DsaSign(const byte* digest, byte* out, - DsaKey* key, WC_RNG* rng); -WOLFSSL_API int wc_DsaVerify(const byte* digest, const byte* sig, - DsaKey* key, int* answer); -WOLFSSL_API int wc_DsaPublicKeyDecode(const byte* input, word32* inOutIdx, - DsaKey*, word32); -WOLFSSL_API int wc_DsaPrivateKeyDecode(const byte* input, word32* inOutIdx, - DsaKey*, word32); -WOLFSSL_API int wc_DsaKeyToDer(DsaKey* key, byte* output, word32 inLen); -WOLFSSL_API int wc_SetDsaPublicKey(byte* output, DsaKey* key, - int outLen, int with_header); -WOLFSSL_API int wc_DsaKeyToPublicDer(DsaKey* key, byte* output, word32 inLen); - -#ifdef WOLFSSL_KEY_GEN -WOLFSSL_API int wc_MakeDsaKey(WC_RNG *rng, DsaKey *dsa); -WOLFSSL_API int wc_MakeDsaParameters(WC_RNG *rng, int modulus_size, DsaKey *dsa); -#endif - -/* raw export functions */ -WOLFSSL_API int wc_DsaImportParamsRaw(DsaKey* dsa, const char* p, - const char* q, const char* g); -WOLFSSL_API int wc_DsaImportParamsRawCheck(DsaKey* dsa, const char* p, - const char* q, const char* g, - int trusted, WC_RNG* rng); -WOLFSSL_API int wc_DsaExportParamsRaw(DsaKey* dsa, byte* p, word32* pSz, - byte* q, word32* qSz, byte* g, - word32* gSz); -WOLFSSL_API int wc_DsaExportKeyRaw(DsaKey* dsa, byte* x, word32* xSz, byte* y, - word32* ySz); -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* NO_DSA */ -#endif /* WOLF_CRYPT_DSA_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/ecc.h b/client/wolfssl/wolfssl/wolfcrypt/ecc.h deleted file mode 100644 index 27f4206..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/ecc.h +++ /dev/null @@ -1,762 +0,0 @@ -/* ecc.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/ecc.h -*/ - - -#ifndef WOLF_CRYPT_ECC_H -#define WOLF_CRYPT_ECC_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef HAVE_ECC - -#if defined(HAVE_FIPS) && \ - defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2) - #include <wolfssl/wolfcrypt/fips.h> -#endif /* HAVE_FIPS_VERSION >= 2 */ - -#include <wolfssl/wolfcrypt/integer.h> -#include <wolfssl/wolfcrypt/random.h> - -#ifdef HAVE_X963_KDF - #include <wolfssl/wolfcrypt/hash.h> -#endif - -#ifdef WOLFSSL_ASYNC_CRYPT - #include <wolfssl/wolfcrypt/async.h> - #ifdef WOLFSSL_CERT_GEN - #include <wolfssl/wolfcrypt/asn.h> - #endif -#endif - -#ifdef WOLFSSL_ATECC508A - #include <wolfssl/wolfcrypt/port/atmel/atmel.h> -#endif /* WOLFSSL_ATECC508A */ - -#if defined(WOLFSSL_CRYPTOCELL) - #include <wolfssl/wolfcrypt/port/arm/cryptoCell.h> -#endif - -#ifdef __cplusplus - extern "C" { -#endif - - -/* Enable curve B parameter if needed */ -#if defined(HAVE_COMP_KEY) || defined(ECC_CACHE_CURVE) - #ifndef USE_ECC_B_PARAM /* Allow someone to force enable */ - #define USE_ECC_B_PARAM - #endif -#endif - - -/* Use this as the key->idx if a custom ecc_set is used for key->dp */ -#define ECC_CUSTOM_IDX (-1) - - -/* Determine max ECC bits based on enabled curves */ -#if defined(HAVE_ECC521) || defined(HAVE_ALL_CURVES) - #define MAX_ECC_BITS 521 -#elif defined(HAVE_ECC512) - #define MAX_ECC_BITS 512 -#elif defined(HAVE_ECC384) - #define MAX_ECC_BITS 384 -#elif defined(HAVE_ECC320) - #define MAX_ECC_BITS 320 -#elif !defined(NO_ECC256) - #define MAX_ECC_BITS 256 -#elif defined(HAVE_ECC239) - #define MAX_ECC_BITS 239 -#elif defined(HAVE_ECC224) - #define MAX_ECC_BITS 224 -#elif defined(HAVE_ECC192) - #define MAX_ECC_BITS 192 -#elif defined(HAVE_ECC160) - #define MAX_ECC_BITS 160 -#elif defined(HAVE_ECC128) - #define MAX_ECC_BITS 128 -#elif defined(HAVE_ECC112) - #define MAX_ECC_BITS 112 -#endif - -/* calculate max ECC bytes */ -#if ((MAX_ECC_BITS * 2) % 8) == 0 - #define MAX_ECC_BYTES (MAX_ECC_BITS / 8) -#else - /* add byte if not aligned */ - #define MAX_ECC_BYTES ((MAX_ECC_BITS / 8) + 1) -#endif - -#ifndef ECC_MAX_PAD_SZ - /* ECC maximum padding size (when MSB is set extra byte required for R and S) */ - #define ECC_MAX_PAD_SZ 2 -#endif - -enum { - ECC_PUBLICKEY = 1, - ECC_PRIVATEKEY = 2, - ECC_PRIVATEKEY_ONLY = 3, - ECC_MAXNAME = 16, /* MAX CURVE NAME LENGTH */ - SIG_HEADER_SZ = 7, /* ECC signature header size (30 81 87 02 42 [R] 02 42 [S]) */ - ECC_BUFSIZE = 256, /* for exported keys temp buffer */ - ECC_MINSIZE = 20, /* MIN Private Key size */ - ECC_MAXSIZE = 66, /* MAX Private Key size */ - ECC_MAXSIZE_GEN = 74, /* MAX Buffer size required when generating ECC keys*/ - ECC_MAX_OID_LEN = 16, - ECC_MAX_SIG_SIZE= ((MAX_ECC_BYTES * 2) + ECC_MAX_PAD_SZ + SIG_HEADER_SZ), - - /* max crypto hardware size */ -#ifdef WOLFSSL_ATECC508A - ECC_MAX_CRYPTO_HW_SIZE = ATECC_KEY_SIZE, /* from port/atmel/atmel.h */ - ECC_MAX_CRYPTO_HW_PUBKEY_SIZE = (ATECC_KEY_SIZE*2), -#elif defined(PLUTON_CRYPTO_ECC) - ECC_MAX_CRYPTO_HW_SIZE = 32, -#elif defined(WOLFSSL_CRYPTOCELL) - #ifndef CRYPTOCELL_KEY_SIZE - CRYPTOCELL_KEY_SIZE = ECC_MAXSIZE, - #endif - ECC_MAX_CRYPTO_HW_SIZE = CRYPTOCELL_KEY_SIZE, -#endif - - /* point compression type */ - ECC_POINT_COMP_EVEN = 0x02, - ECC_POINT_COMP_ODD = 0x03, - ECC_POINT_UNCOMP = 0x04, - - /* Shamir's dual add constants */ - SHAMIR_PRECOMP_SZ = 16, - -#ifdef HAVE_PKCS11 - ECC_MAX_ID_LEN = 32, -#endif -}; - -/* Curve Types */ -typedef enum ecc_curve_id { - ECC_CURVE_INVALID = -1, - ECC_CURVE_DEF = 0, /* NIST or SECP */ - - /* NIST Prime Curves */ - ECC_SECP192R1, - ECC_PRIME192V2, - ECC_PRIME192V3, - ECC_PRIME239V1, - ECC_PRIME239V2, - ECC_PRIME239V3, - ECC_SECP256R1, - - /* SECP Curves */ - ECC_SECP112R1, - ECC_SECP112R2, - ECC_SECP128R1, - ECC_SECP128R2, - ECC_SECP160R1, - ECC_SECP160R2, - ECC_SECP224R1, - ECC_SECP384R1, - ECC_SECP521R1, - - /* Koblitz */ - ECC_SECP160K1, - ECC_SECP192K1, - ECC_SECP224K1, - ECC_SECP256K1, - - /* Brainpool Curves */ - ECC_BRAINPOOLP160R1, - ECC_BRAINPOOLP192R1, - ECC_BRAINPOOLP224R1, - ECC_BRAINPOOLP256R1, - ECC_BRAINPOOLP320R1, - ECC_BRAINPOOLP384R1, - ECC_BRAINPOOLP512R1, - - /* Twisted Edwards Curves */ -#ifdef HAVE_CURVE25519 - ECC_X25519, -#endif -#ifdef HAVE_CURVE448 - ECC_X448, -#endif - -#ifdef WOLFSSL_CUSTOM_CURVES - ECC_CURVE_CUSTOM, -#endif -} ecc_curve_id; - -#ifdef HAVE_OID_ENCODING -typedef word16 ecc_oid_t; -#else -typedef byte ecc_oid_t; - /* OID encoded with ASN scheme: - first element = (oid[0] * 40) + oid[1] - if any element > 127 then MSB 0x80 indicates additional byte */ -#endif - - -#if !defined(WOLFSSL_ECC_CURVE_STATIC) && defined(USE_WINDOWS_API) - /* MSC does something different with the pointers to the arrays than GCC, - * and it causes the FIPS checksum to fail. In the case of windows builds, - * store everything as arrays instead of pointers to strings. */ - - #define WOLFSSL_ECC_CURVE_STATIC -#endif - -/* ECC set type defined a GF(p) curve */ -#ifndef WOLFSSL_ECC_CURVE_STATIC -typedef struct ecc_set_type { - int size; /* The size of the curve in octets */ - int id; /* id of this curve */ - const char* name; /* name of this curve */ - const char* prime; /* prime that defines the field, curve is in (hex) */ - const char* Af; /* fields A param (hex) */ - const char* Bf; /* fields B param (hex) */ - const char* order; /* order of the curve (hex) */ - const char* Gx; /* x coordinate of the base point on curve (hex) */ - const char* Gy; /* y coordinate of the base point on curve (hex) */ - const ecc_oid_t* oid; - word32 oidSz; - word32 oidSum; /* sum of encoded OID bytes */ - int cofactor; -} ecc_set_type; -#else -#define MAX_ECC_NAME 16 -#define MAX_ECC_STRING ((MAX_ECC_BYTES * 2) + 1) - /* The values are stored as text strings. */ - -typedef struct ecc_set_type { - int size; /* The size of the curve in octets */ - int id; /* id of this curve */ - const char name[MAX_ECC_NAME]; /* name of this curve */ - const char prime[MAX_ECC_STRING]; /* prime that defines the field, curve is in (hex) */ - const char Af[MAX_ECC_STRING]; /* fields A param (hex) */ - const char Bf[MAX_ECC_STRING]; /* fields B param (hex) */ - const char order[MAX_ECC_STRING]; /* order of the curve (hex) */ - const char Gx[MAX_ECC_STRING]; /* x coordinate of the base point on curve (hex) */ - const char Gy[MAX_ECC_STRING]; /* y coordinate of the base point on curve (hex) */ - const ecc_oid_t oid[10]; - word32 oidSz; - word32 oidSum; /* sum of encoded OID bytes */ - int cofactor; -} ecc_set_type; -#endif - - -#ifdef ALT_ECC_SIZE - -/* Note on ALT_ECC_SIZE: - * The fast math code uses an array of a fixed size to store the big integers. - * By default, the array is big enough for RSA keys. There is a size, - * FP_MAX_BITS which can be used to make the array smaller when one wants ECC - * but not RSA. Some people want fast math sized for both RSA and ECC, where - * ECC won't use as much as RSA. The flag ALT_ECC_SIZE switches in an alternate - * ecc_point structure that uses an alternate fp_int that has a shorter array - * of fp_digits. - * - * Now, without ALT_ECC_SIZE, the ecc_point has three single item arrays of - * mp_ints for the components of the point. With ALT_ECC_SIZE, the components - * of the point are pointers that are set to each of a three item array of - * alt_fp_ints. While an mp_int will have 4096 bits of digit inside the - * structure, the alt_fp_int will only have 528 bits. A size value was added - * in the ALT case, as well, and is set by mp_init() and alt_fp_init(). The - * functions fp_zero() and fp_copy() use the size parameter. An int needs to - * be initialized before using it instead of just fp_zeroing it, the init will - * call zero. FP_MAX_BITS_ECC defaults to 528, but can be set to change the - * number of bits used in the alternate FP_INT. - * - * Do not enable ALT_ECC_SIZE and disable fast math in the configuration. - */ - -#ifndef USE_FAST_MATH - #error USE_FAST_MATH must be defined to use ALT_ECC_SIZE -#endif - -/* determine max bits required for ECC math */ -#ifndef FP_MAX_BITS_ECC - /* check alignment */ - #if ((MAX_ECC_BITS * 2) % DIGIT_BIT) == 0 - /* max bits is double */ - #define FP_MAX_BITS_ECC (MAX_ECC_BITS * 2) - #else - /* max bits is doubled, plus one digit of fudge */ - #define FP_MAX_BITS_ECC ((MAX_ECC_BITS * 2) + DIGIT_BIT) - #endif -#else - /* verify alignment */ - #if FP_MAX_BITS_ECC % CHAR_BIT - #error FP_MAX_BITS_ECC must be a multiple of CHAR_BIT - #endif -#endif - -/* determine buffer size */ -#define FP_SIZE_ECC (FP_MAX_BITS_ECC/DIGIT_BIT) - - -/* This needs to match the size of the fp_int struct, except the - * fp_digit array will be shorter. */ -typedef struct alt_fp_int { - int used, sign, size; - mp_digit dp[FP_SIZE_ECC]; -} alt_fp_int; -#endif /* ALT_ECC_SIZE */ - -#ifndef WC_ECCKEY_TYPE_DEFINED - typedef struct ecc_key ecc_key; - #define WC_ECCKEY_TYPE_DEFINED -#endif - - -/* A point on an ECC curve, stored in Jacobian format such that (x,y,z) => - (x/z^2, y/z^3, 1) when interpreted as affine */ -typedef struct { -#ifndef ALT_ECC_SIZE - mp_int x[1]; /* The x coordinate */ - mp_int y[1]; /* The y coordinate */ - mp_int z[1]; /* The z coordinate */ -#else - mp_int* x; /* The x coordinate */ - mp_int* y; /* The y coordinate */ - mp_int* z; /* The z coordinate */ - alt_fp_int xyz[3]; -#endif -#ifdef WOLFSSL_SMALL_STACK_CACHE - ecc_key* key; -#endif -} ecc_point; - -/* ECC Flags */ -enum { - WC_ECC_FLAG_NONE = 0x00, -#ifdef HAVE_ECC_CDH - WC_ECC_FLAG_COFACTOR = 0x01, -#endif -}; - -/* An ECC Key */ -struct ecc_key { - int type; /* Public or Private */ - int idx; /* Index into the ecc_sets[] for the parameters of - this curve if -1, this key is using user supplied - curve in dp */ - int state; - word32 flags; - const ecc_set_type* dp; /* domain parameters, either points to NIST - curves (idx >= 0) or user supplied */ -#ifdef WOLFSSL_CUSTOM_CURVES - int deallocSet; -#endif - void* heap; /* heap hint */ - ecc_point pubkey; /* public key */ - mp_int k; /* private key */ -#ifdef WOLFSSL_ATECC508A - int slot; /* Key Slot Number (-1 unknown) */ - byte pubkey_raw[ECC_MAX_CRYPTO_HW_PUBKEY_SIZE]; -#endif -#if defined(PLUTON_CRYPTO_ECC) || defined(WOLF_CRYPTO_CB) - int devId; -#endif -#ifdef WOLFSSL_ASYNC_CRYPT - mp_int* r; /* sign/verify temps */ - mp_int* s; - WC_ASYNC_DEV asyncDev; - #ifdef HAVE_CAVIUM_V - mp_int* e; /* Sign, Verify and Shared Secret */ - mp_int* signK; - #endif - #ifdef WOLFSSL_CERT_GEN - CertSignCtx certSignCtx; /* context info for cert sign (MakeSignature) */ - #endif -#endif /* WOLFSSL_ASYNC_CRYPT */ -#ifdef HAVE_PKCS11 - byte id[ECC_MAX_ID_LEN]; - int idLen; -#endif -#if defined(WOLFSSL_CRYPTOCELL) - ecc_context_t ctx; -#endif - -#ifdef WOLFSSL_ECDSA_SET_K - mp_int *sign_k; -#endif - -#ifdef WOLFSSL_SMALL_STACK_CACHE - mp_int* t1; - mp_int* t2; -#ifdef ALT_ECC_SIZE - mp_int* x; - mp_int* y; - mp_int* z; -#endif -#endif - -#ifdef WOLFSSL_DSP - remote_handle64 handle; -#endif -}; - - -WOLFSSL_ABI WOLFSSL_API ecc_key* wc_ecc_key_new(void*); -WOLFSSL_ABI WOLFSSL_API void wc_ecc_key_free(ecc_key*); - - -/* ECC predefined curve sets */ -extern const ecc_set_type ecc_sets[]; -extern const size_t ecc_sets_count; - -WOLFSSL_API -const char* wc_ecc_get_name(int curve_id); - -#ifndef WOLFSSL_ATECC508A - -#ifdef WOLFSSL_PUBLIC_ECC_ADD_DBL - #define ECC_API WOLFSSL_API -#else - #define ECC_API WOLFSSL_LOCAL -#endif - -ECC_API int ecc_mul2add(ecc_point* A, mp_int* kA, - ecc_point* B, mp_int* kB, - ecc_point* C, mp_int* a, mp_int* modulus, void* heap); - -ECC_API int ecc_map(ecc_point*, mp_int*, mp_digit); -ECC_API int ecc_map_ex(ecc_point*, mp_int*, mp_digit, int ct); -ECC_API int ecc_projective_add_point(ecc_point* P, ecc_point* Q, ecc_point* R, - mp_int* a, mp_int* modulus, mp_digit mp); -ECC_API int ecc_projective_dbl_point(ecc_point* P, ecc_point* R, mp_int* a, - mp_int* modulus, mp_digit mp); - -#endif - -WOLFSSL_API -int wc_ecc_make_key(WC_RNG* rng, int keysize, ecc_key* key); -WOLFSSL_ABI WOLFSSL_API -int wc_ecc_make_key_ex(WC_RNG* rng, int keysize, ecc_key* key, int curve_id); -WOLFSSL_API -int wc_ecc_make_pub(ecc_key* key, ecc_point* pubOut); -WOLFSSL_API -int wc_ecc_check_key(ecc_key* key); -WOLFSSL_API -int wc_ecc_is_point(ecc_point* ecp, mp_int* a, mp_int* b, mp_int* prime); -WOLFSSL_API -int wc_ecc_get_generator(ecc_point* ecp, int curve_idx); - -#ifdef HAVE_ECC_DHE -WOLFSSL_API -int wc_ecc_shared_secret(ecc_key* private_key, ecc_key* public_key, byte* out, - word32* outlen); -WOLFSSL_LOCAL -int wc_ecc_shared_secret_gen(ecc_key* private_key, ecc_point* point, - byte* out, word32 *outlen); -WOLFSSL_API -int wc_ecc_shared_secret_ex(ecc_key* private_key, ecc_point* point, - byte* out, word32 *outlen); - -#if defined(WOLFSSL_ATECC508A) || defined(PLUTON_CRYPTO_ECC) || defined(WOLFSSL_CRYPTOCELL) -#define wc_ecc_shared_secret_ssh wc_ecc_shared_secret -#else -#define wc_ecc_shared_secret_ssh wc_ecc_shared_secret_ex /* For backwards compat */ -#endif - -#endif /* HAVE_ECC_DHE */ - -#ifdef HAVE_ECC_SIGN -WOLFSSL_ABI WOLFSSL_API -int wc_ecc_sign_hash(const byte* in, word32 inlen, byte* out, word32 *outlen, - WC_RNG* rng, ecc_key* key); -WOLFSSL_API -int wc_ecc_sign_hash_ex(const byte* in, word32 inlen, WC_RNG* rng, - ecc_key* key, mp_int *r, mp_int *s); -#ifdef WOLFSSL_ECDSA_SET_K -WOLFSSL_API -int wc_ecc_sign_set_k(const byte* k, word32 klen, ecc_key* key); -#endif -#endif /* HAVE_ECC_SIGN */ - -#ifdef HAVE_ECC_VERIFY -WOLFSSL_API -int wc_ecc_verify_hash(const byte* sig, word32 siglen, const byte* hash, - word32 hashlen, int* stat, ecc_key* key); -WOLFSSL_API -int wc_ecc_verify_hash_ex(mp_int *r, mp_int *s, const byte* hash, - word32 hashlen, int* stat, ecc_key* key); -#endif /* HAVE_ECC_VERIFY */ - -WOLFSSL_API -int wc_ecc_init(ecc_key* key); -WOLFSSL_ABI WOLFSSL_API -int wc_ecc_init_ex(ecc_key* key, void* heap, int devId); -#ifdef HAVE_PKCS11 -WOLFSSL_API -int wc_ecc_init_id(ecc_key* key, unsigned char* id, int len, void* heap, - int devId); -#endif -#ifdef WOLFSSL_CUSTOM_CURVES -WOLFSSL_LOCAL -void wc_ecc_free_curve(const ecc_set_type* curve, void* heap); -#endif -WOLFSSL_ABI WOLFSSL_API -int wc_ecc_free(ecc_key* key); -WOLFSSL_API -int wc_ecc_set_flags(ecc_key* key, word32 flags); -WOLFSSL_API -void wc_ecc_fp_free(void); - -WOLFSSL_API -int wc_ecc_set_curve(ecc_key* key, int keysize, int curve_id); - -WOLFSSL_API -int wc_ecc_is_valid_idx(int n); -WOLFSSL_API -int wc_ecc_get_curve_idx(int curve_id); -WOLFSSL_API -int wc_ecc_get_curve_id(int curve_idx); -#define wc_ecc_get_curve_name_from_id wc_ecc_get_name -WOLFSSL_API -int wc_ecc_get_curve_size_from_id(int curve_id); - -WOLFSSL_API -int wc_ecc_get_curve_idx_from_name(const char* curveName); -WOLFSSL_API -int wc_ecc_get_curve_size_from_name(const char* curveName); -WOLFSSL_API -int wc_ecc_get_curve_id_from_name(const char* curveName); -WOLFSSL_API -int wc_ecc_get_curve_id_from_params(int fieldSize, - const byte* prime, word32 primeSz, const byte* Af, word32 AfSz, - const byte* Bf, word32 BfSz, const byte* order, word32 orderSz, - const byte* Gx, word32 GxSz, const byte* Gy, word32 GySz, int cofactor); -WOLFSSL_API -int wc_ecc_get_curve_id_from_dp_params(const ecc_set_type* dp); - -WOLFSSL_API -int wc_ecc_get_curve_id_from_oid(const byte* oid, word32 len); - -WOLFSSL_API const ecc_set_type* wc_ecc_get_curve_params(int curve_idx); - -WOLFSSL_API -ecc_point* wc_ecc_new_point(void); -WOLFSSL_API -ecc_point* wc_ecc_new_point_h(void* h); -WOLFSSL_API -void wc_ecc_del_point(ecc_point* p); -WOLFSSL_API -void wc_ecc_del_point_h(ecc_point* p, void* h); -WOLFSSL_API -int wc_ecc_copy_point(ecc_point* p, ecc_point *r); -WOLFSSL_API -int wc_ecc_cmp_point(ecc_point* a, ecc_point *b); -WOLFSSL_API -int wc_ecc_point_is_at_infinity(ecc_point *p); - -#ifndef WOLFSSL_ATECC508A -WOLFSSL_API -int wc_ecc_mulmod(mp_int* k, ecc_point *G, ecc_point *R, - mp_int* a, mp_int* modulus, int map); -WOLFSSL_LOCAL -int wc_ecc_mulmod_ex(mp_int* k, ecc_point *G, ecc_point *R, - mp_int* a, mp_int* modulus, int map, void* heap); -#endif /* !WOLFSSL_ATECC508A */ - - -#ifdef HAVE_ECC_KEY_EXPORT -/* ASN key helpers */ -WOLFSSL_API -int wc_ecc_export_x963(ecc_key*, byte* out, word32* outLen); -WOLFSSL_API -int wc_ecc_export_x963_ex(ecc_key*, byte* out, word32* outLen, int compressed); - /* extended functionality with compressed option */ -#endif /* HAVE_ECC_KEY_EXPORT */ - -#ifdef HAVE_ECC_KEY_IMPORT -WOLFSSL_ABI WOLFSSL_API -int wc_ecc_import_x963(const byte* in, word32 inLen, ecc_key* key); -WOLFSSL_API -int wc_ecc_import_x963_ex(const byte* in, word32 inLen, ecc_key* key, - int curve_id); -WOLFSSL_API -int wc_ecc_import_private_key(const byte* priv, word32 privSz, const byte* pub, - word32 pubSz, ecc_key* key); -WOLFSSL_API -int wc_ecc_import_private_key_ex(const byte* priv, word32 privSz, - const byte* pub, word32 pubSz, ecc_key* key, int curve_id); -WOLFSSL_API -int wc_ecc_rs_to_sig(const char* r, const char* s, byte* out, word32* outlen); -WOLFSSL_API -int wc_ecc_rs_raw_to_sig(const byte* r, word32 rSz, const byte* s, word32 sSz, - byte* out, word32* outlen); -WOLFSSL_API -int wc_ecc_sig_to_rs(const byte* sig, word32 sigLen, byte* r, word32* rLen, - byte* s, word32* sLen); -WOLFSSL_API -int wc_ecc_import_raw(ecc_key* key, const char* qx, const char* qy, - const char* d, const char* curveName); -WOLFSSL_API -int wc_ecc_import_raw_ex(ecc_key* key, const char* qx, const char* qy, - const char* d, int curve_id); -WOLFSSL_API -int wc_ecc_import_unsigned(ecc_key* key, byte* qx, byte* qy, - byte* d, int curve_id); -#endif /* HAVE_ECC_KEY_IMPORT */ - -#ifdef HAVE_ECC_KEY_EXPORT -WOLFSSL_API -int wc_ecc_export_ex(ecc_key* key, byte* qx, word32* qxLen, - byte* qy, word32* qyLen, byte* d, word32* dLen, - int encType); -WOLFSSL_API -int wc_ecc_export_private_only(ecc_key* key, byte* out, word32* outLen); -WOLFSSL_API -int wc_ecc_export_public_raw(ecc_key* key, byte* qx, word32* qxLen, - byte* qy, word32* qyLen); -WOLFSSL_API -int wc_ecc_export_private_raw(ecc_key* key, byte* qx, word32* qxLen, - byte* qy, word32* qyLen, byte* d, word32* dLen); -#endif /* HAVE_ECC_KEY_EXPORT */ - -#ifdef HAVE_ECC_KEY_EXPORT -WOLFSSL_API -int wc_ecc_export_point_der_ex(const int curve_idx, ecc_point* point, byte* out, - word32* outLen, int compressed); -WOLFSSL_API -int wc_ecc_export_point_der(const int curve_idx, ecc_point* point, - byte* out, word32* outLen); -WOLFSSL_LOCAL -int wc_ecc_export_point_der_compressed(const int curve_idx, ecc_point* point, - byte* out, word32* outLen); -#endif /* HAVE_ECC_KEY_EXPORT */ - - -#ifdef HAVE_ECC_KEY_IMPORT -WOLFSSL_API -int wc_ecc_import_point_der_ex(byte* in, word32 inLen, const int curve_idx, - ecc_point* point, int shortKeySize); -WOLFSSL_API -int wc_ecc_import_point_der(byte* in, word32 inLen, const int curve_idx, - ecc_point* point); -#endif /* HAVE_ECC_KEY_IMPORT */ - -/* size helper */ -WOLFSSL_API -int wc_ecc_size(ecc_key* key); -WOLFSSL_API -int wc_ecc_sig_size_calc(int sz); -WOLFSSL_API -int wc_ecc_sig_size(ecc_key* key); - -WOLFSSL_API -int wc_ecc_get_oid(word32 oidSum, const byte** oid, word32* oidSz); - -#ifdef WOLFSSL_CUSTOM_CURVES - WOLFSSL_API - int wc_ecc_set_custom_curve(ecc_key* key, const ecc_set_type* dp); -#endif - -#ifdef HAVE_ECC_ENCRYPT -/* ecc encrypt */ - -enum ecEncAlgo { - ecAES_128_CBC = 1, /* default */ - ecAES_256_CBC = 2 -}; - -enum ecKdfAlgo { - ecHKDF_SHA256 = 1, /* default */ - ecHKDF_SHA1 = 2 -}; - -enum ecMacAlgo { - ecHMAC_SHA256 = 1, /* default */ - ecHMAC_SHA1 = 2 -}; - -enum { - KEY_SIZE_128 = 16, - KEY_SIZE_256 = 32, - IV_SIZE_64 = 8, - IV_SIZE_128 = 16, - EXCHANGE_SALT_SZ = 16, - EXCHANGE_INFO_SZ = 23 -}; - -enum ecFlags { - REQ_RESP_CLIENT = 1, - REQ_RESP_SERVER = 2 -}; - - -typedef struct ecEncCtx ecEncCtx; - -WOLFSSL_API -ecEncCtx* wc_ecc_ctx_new(int flags, WC_RNG* rng); -WOLFSSL_API -ecEncCtx* wc_ecc_ctx_new_ex(int flags, WC_RNG* rng, void* heap); -WOLFSSL_API -void wc_ecc_ctx_free(ecEncCtx*); -WOLFSSL_API -int wc_ecc_ctx_reset(ecEncCtx*, WC_RNG*); /* reset for use again w/o alloc/free */ - -WOLFSSL_API -const byte* wc_ecc_ctx_get_own_salt(ecEncCtx*); -WOLFSSL_API -int wc_ecc_ctx_set_peer_salt(ecEncCtx*, const byte* salt); -WOLFSSL_API -int wc_ecc_ctx_set_info(ecEncCtx*, const byte* info, int sz); - -WOLFSSL_API -int wc_ecc_encrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg, - word32 msgSz, byte* out, word32* outSz, ecEncCtx* ctx); -WOLFSSL_API -int wc_ecc_decrypt(ecc_key* privKey, ecc_key* pubKey, const byte* msg, - word32 msgSz, byte* out, word32* outSz, ecEncCtx* ctx); - -#endif /* HAVE_ECC_ENCRYPT */ - -#ifdef HAVE_X963_KDF -WOLFSSL_API int wc_X963_KDF(enum wc_HashType type, const byte* secret, - word32 secretSz, const byte* sinfo, word32 sinfoSz, - byte* out, word32 outSz); -#endif - -#ifdef ECC_CACHE_CURVE -WOLFSSL_API int wc_ecc_curve_cache_init(void); -WOLFSSL_API void wc_ecc_curve_cache_free(void); -#endif - -WOLFSSL_API -int wc_ecc_gen_k(WC_RNG* rng, int size, mp_int* k, mp_int* order); - -#ifdef WOLFSSL_DSP -WOLFSSL_API -int wc_ecc_set_handle(ecc_key* key, remote_handle64 handle); -WOLFSSL_LOCAL -int sp_dsp_ecc_verify_256(remote_handle64 handle, const byte* hash, word32 hashLen, mp_int* pX, - mp_int* pY, mp_int* pZ, mp_int* r, mp_int* sm, int* res, void* heap); -#endif - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* HAVE_ECC */ -#endif /* WOLF_CRYPT_ECC_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/ed25519.h b/client/wolfssl/wolfssl/wolfcrypt/ed25519.h deleted file mode 100644 index f5487ad..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/ed25519.h +++ /dev/null @@ -1,169 +0,0 @@ -/* ed25519.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/ed25519.h -*/ - - -#ifndef WOLF_CRYPT_ED25519_H -#define WOLF_CRYPT_ED25519_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef HAVE_ED25519 - -#include <wolfssl/wolfcrypt/fe_operations.h> -#include <wolfssl/wolfcrypt/ge_operations.h> -#include <wolfssl/wolfcrypt/random.h> -#include <wolfssl/wolfcrypt/sha512.h> - -#ifdef WOLFSSL_ASYNC_CRYPT - #include <wolfssl/wolfcrypt/async.h> -#endif - -#ifdef __cplusplus - extern "C" { -#endif - - -/* info about EdDSA curve specifically ed25519, defined as an elliptic curve - over GF(p) */ -/* - 32, key size - "ED25519", curve name - "2^255-19", prime number - "SHA512", hash function - "-121665/121666", value of d -*/ - -#define ED25519_KEY_SIZE 32 /* private key only */ -#define ED25519_SIG_SIZE 64 - -#define ED25519_PUB_KEY_SIZE 32 /* compressed */ -/* both private and public key */ -#define ED25519_PRV_KEY_SIZE (ED25519_PUB_KEY_SIZE+ED25519_KEY_SIZE) - - -enum { - Ed25519 = -1, - Ed25519ctx = 0, - Ed25519ph = 1, -}; - -#ifndef WC_ED25519KEY_TYPE_DEFINED - typedef struct ed25519_key ed25519_key; - #define WC_ED25519KEY_TYPE_DEFINED -#endif - -/* An ED25519 Key */ -struct ed25519_key { - byte p[ED25519_PUB_KEY_SIZE]; /* compressed public key */ - byte k[ED25519_PRV_KEY_SIZE]; /* private key : 32 secret -- 32 public */ -#ifdef FREESCALE_LTC_ECC - /* uncompressed point coordinates */ - byte pointX[ED25519_KEY_SIZE]; /* recovered X coordinate */ - byte pointY[ED25519_KEY_SIZE]; /* Y coordinate is the public key with The most significant bit of the final octet always zero. */ -#endif - word16 pubKeySet:1; -#ifdef WOLFSSL_ASYNC_CRYPT - WC_ASYNC_DEV asyncDev; -#endif -}; - - -WOLFSSL_API -int wc_ed25519_make_public(ed25519_key* key, unsigned char* pubKey, - word32 pubKeySz); -WOLFSSL_API -int wc_ed25519_make_key(WC_RNG* rng, int keysize, ed25519_key* key); -WOLFSSL_API -int wc_ed25519_sign_msg(const byte* in, word32 inLen, byte* out, - word32 *outLen, ed25519_key* key); -WOLFSSL_API -int wc_ed25519ctx_sign_msg(const byte* in, word32 inLen, byte* out, - word32 *outLen, ed25519_key* key, - const byte* context, byte contextLen); -WOLFSSL_API -int wc_ed25519ph_sign_hash(const byte* hash, word32 hashLen, byte* out, - word32 *outLen, ed25519_key* key, - const byte* context, byte contextLen); -WOLFSSL_API -int wc_ed25519ph_sign_msg(const byte* in, word32 inLen, byte* out, - word32 *outLen, ed25519_key* key, const byte* context, - byte contextLen); -WOLFSSL_API -int wc_ed25519_verify_msg(const byte* sig, word32 sigLen, const byte* msg, - word32 msgLen, int* stat, ed25519_key* key); -WOLFSSL_API -int wc_ed25519ctx_verify_msg(const byte* sig, word32 sigLen, const byte* msg, - word32 msgLen, int* stat, ed25519_key* key, - const byte* context, byte contextLen); -WOLFSSL_API -int wc_ed25519ph_verify_hash(const byte* sig, word32 sigLen, const byte* hash, - word32 hashLen, int* stat, ed25519_key* key, - const byte* context, byte contextLen); -WOLFSSL_API -int wc_ed25519ph_verify_msg(const byte* sig, word32 sigLen, const byte* msg, - word32 msgLen, int* stat, ed25519_key* key, - const byte* context, byte contextLen); -WOLFSSL_API -int wc_ed25519_init(ed25519_key* key); -WOLFSSL_API -void wc_ed25519_free(ed25519_key* key); -WOLFSSL_API -int wc_ed25519_import_public(const byte* in, word32 inLen, ed25519_key* key); -WOLFSSL_API -int wc_ed25519_import_private_only(const byte* priv, word32 privSz, - ed25519_key* key); -WOLFSSL_API -int wc_ed25519_import_private_key(const byte* priv, word32 privSz, - const byte* pub, word32 pubSz, ed25519_key* key); -WOLFSSL_API -int wc_ed25519_export_public(ed25519_key*, byte* out, word32* outLen); -WOLFSSL_API -int wc_ed25519_export_private_only(ed25519_key* key, byte* out, word32* outLen); -WOLFSSL_API -int wc_ed25519_export_private(ed25519_key* key, byte* out, word32* outLen); -WOLFSSL_API -int wc_ed25519_export_key(ed25519_key* key, - byte* priv, word32 *privSz, - byte* pub, word32 *pubSz); - -WOLFSSL_API -int wc_ed25519_check_key(ed25519_key* key); - -/* size helper */ -WOLFSSL_API -int wc_ed25519_size(ed25519_key* key); -WOLFSSL_API -int wc_ed25519_priv_size(ed25519_key* key); -WOLFSSL_API -int wc_ed25519_pub_size(ed25519_key* key); -WOLFSSL_API -int wc_ed25519_sig_size(ed25519_key* key); - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* HAVE_ED25519 */ -#endif /* WOLF_CRYPT_ED25519_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/ed448.h b/client/wolfssl/wolfssl/wolfcrypt/ed448.h deleted file mode 100644 index 4f868b5..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/ed448.h +++ /dev/null @@ -1,160 +0,0 @@ -/* ed448.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/ed448.h -*/ - - -#ifndef WOLF_CRYPT_ED448_H -#define WOLF_CRYPT_ED448_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef HAVE_ED448 - -#include <wolfssl/wolfcrypt/fe_448.h> -#include <wolfssl/wolfcrypt/ge_448.h> -#include <wolfssl/wolfcrypt/random.h> -#include <wolfssl/wolfcrypt/sha3.h> - -#ifdef WOLFSSL_ASYNC_CRYPT - #include <wolfssl/wolfcrypt/async.h> -#endif - -#ifdef __cplusplus - extern "C" { -#endif - - -/* info about EdDSA curve specifically ed448, defined as an elliptic curve - * over GF(p) - * - * 56 key size - * "ED448" curve name - * "2^448-2^224-1" prime number - * "-39081" value of d - * "SHAKE256" hash function - */ - -#define ED448_KEY_SIZE 57 /* private key only */ -#define ED448_SIG_SIZE 114 /* two elements */ - -#define ED448_PUB_KEY_SIZE 57 /* compressed */ -/* both private and public key */ -#define ED448_PRV_KEY_SIZE (ED448_PUB_KEY_SIZE+ED448_KEY_SIZE) - - -enum { - Ed448 = 0, - Ed448ph = 1, -}; - -#ifndef WC_ED448KEY_TYPE_DEFINED - typedef struct ed448_key ed448_key; - #define WC_ED448KEY_TYPE_DEFINED -#endif - -/* An ED448 Key */ -struct ed448_key { - byte p[ED448_PUB_KEY_SIZE]; /* compressed public key */ - byte k[ED448_PRV_KEY_SIZE]; /* private key : 56 secret -- 56 public */ -#ifdef FREESCALE_LTC_ECC - /* uncompressed point coordinates */ - byte pointX[ED448_KEY_SIZE]; /* recovered X coordinate */ - byte pointY[ED448_KEY_SIZE]; /* Y coordinate is the public key with The most significant bit of the final octet always zero. */ -#endif - word16 pubKeySet:1; -#ifdef WOLFSSL_ASYNC_CRYPT - WC_ASYNC_DEV asyncDev; -#endif -}; - - -WOLFSSL_API -int wc_ed448_make_public(ed448_key* key, unsigned char* pubKey, - word32 pubKeySz); -WOLFSSL_API -int wc_ed448_make_key(WC_RNG* rng, int keysize, ed448_key* key); -WOLFSSL_API -int wc_ed448_sign_msg(const byte* in, word32 inLen, byte* out, word32 *outLen, - ed448_key* key, const byte* context, byte contextLen); -WOLFSSL_API -int wc_ed448ph_sign_hash(const byte* hash, word32 hashLen, byte* out, - word32 *outLen, ed448_key* key, - const byte* context, byte contextLen); -WOLFSSL_API -int wc_ed448ph_sign_msg(const byte* in, word32 inLen, byte* out, - word32 *outLen, ed448_key* key, const byte* context, - byte contextLen); -WOLFSSL_API -int wc_ed448_verify_msg(const byte* sig, word32 sigLen, const byte* msg, - word32 msgLen, int* stat, ed448_key* key, - const byte* context, byte contextLen); -WOLFSSL_API -int wc_ed448ph_verify_hash(const byte* sig, word32 sigLen, const byte* hash, - word32 hashLen, int* stat, ed448_key* key, - const byte* context, byte contextLen); -WOLFSSL_API -int wc_ed448ph_verify_msg(const byte* sig, word32 sigLen, const byte* msg, - word32 msgLen, int* stat, ed448_key* key, - const byte* context, byte contextLen); -WOLFSSL_API -int wc_ed448_init(ed448_key* key); -WOLFSSL_API -void wc_ed448_free(ed448_key* key); -WOLFSSL_API -int wc_ed448_import_public(const byte* in, word32 inLen, ed448_key* key); -WOLFSSL_API -int wc_ed448_import_private_only(const byte* priv, word32 privSz, - ed448_key* key); -WOLFSSL_API -int wc_ed448_import_private_key(const byte* priv, word32 privSz, - const byte* pub, word32 pubSz, ed448_key* key); -WOLFSSL_API -int wc_ed448_export_public(ed448_key*, byte* out, word32* outLen); -WOLFSSL_API -int wc_ed448_export_private_only(ed448_key* key, byte* out, word32* outLen); -WOLFSSL_API -int wc_ed448_export_private(ed448_key* key, byte* out, word32* outLen); -WOLFSSL_API -int wc_ed448_export_key(ed448_key* key, byte* priv, word32 *privSz, - byte* pub, word32 *pubSz); - -WOLFSSL_API -int wc_ed448_check_key(ed448_key* key); - -/* size helper */ -WOLFSSL_API -int wc_ed448_size(ed448_key* key); -WOLFSSL_API -int wc_ed448_priv_size(ed448_key* key); -WOLFSSL_API -int wc_ed448_pub_size(ed448_key* key); -WOLFSSL_API -int wc_ed448_sig_size(ed448_key* key); - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* HAVE_ED448 */ -#endif /* WOLF_CRYPT_ED448_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/error-crypt.h b/client/wolfssl/wolfssl/wolfcrypt/error-crypt.h deleted file mode 100644 index 445611a..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/error-crypt.h +++ /dev/null @@ -1,255 +0,0 @@ -/* error-crypt.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/error-crypt.h -*/ - -#ifndef WOLF_CRYPT_ERROR_H -#define WOLF_CRYPT_ERROR_H - -#include <wolfssl/wolfcrypt/types.h> - -#if defined(HAVE_FIPS) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 2)) - #include <cyassl/ctaocrypt/error-crypt.h> -#endif /* HAVE_FIPS V1 */ - -#ifdef __cplusplus - extern "C" { -#endif - - -/* error codes, add string for new errors !!! */ -enum { - MAX_CODE_E = -100, /* errors -101 - -299 */ - OPEN_RAN_E = -101, /* opening random device error */ - READ_RAN_E = -102, /* reading random device error */ - WINCRYPT_E = -103, /* windows crypt init error */ - CRYPTGEN_E = -104, /* windows crypt generation error */ - RAN_BLOCK_E = -105, /* reading random device would block */ - BAD_MUTEX_E = -106, /* Bad mutex operation */ - WC_TIMEOUT_E = -107, /* timeout error */ - WC_PENDING_E = -108, /* wolfCrypt operation pending (would block) */ - WC_NOT_PENDING_E = -109, /* wolfCrypt operation not pending */ - - MP_INIT_E = -110, /* mp_init error state */ - MP_READ_E = -111, /* mp_read error state */ - MP_EXPTMOD_E = -112, /* mp_exptmod error state */ - MP_TO_E = -113, /* mp_to_xxx error state, can't convert */ - MP_SUB_E = -114, /* mp_sub error state, can't subtract */ - MP_ADD_E = -115, /* mp_add error state, can't add */ - MP_MUL_E = -116, /* mp_mul error state, can't multiply */ - MP_MULMOD_E = -117, /* mp_mulmod error state, can't multiply mod */ - MP_MOD_E = -118, /* mp_mod error state, can't mod */ - MP_INVMOD_E = -119, /* mp_invmod error state, can't inv mod */ - MP_CMP_E = -120, /* mp_cmp error state */ - MP_ZERO_E = -121, /* got a mp zero result, not expected */ - - MEMORY_E = -125, /* out of memory error */ - VAR_STATE_CHANGE_E = -126, /* var state modified by different thread */ - - RSA_WRONG_TYPE_E = -130, /* RSA wrong block type for RSA function */ - RSA_BUFFER_E = -131, /* RSA buffer error, output too small or - input too large */ - BUFFER_E = -132, /* output buffer too small or input too large */ - ALGO_ID_E = -133, /* setting algo id error */ - PUBLIC_KEY_E = -134, /* setting public key error */ - DATE_E = -135, /* setting date validity error */ - SUBJECT_E = -136, /* setting subject name error */ - ISSUER_E = -137, /* setting issuer name error */ - CA_TRUE_E = -138, /* setting CA basic constraint true error */ - EXTENSIONS_E = -139, /* setting extensions error */ - - ASN_PARSE_E = -140, /* ASN parsing error, invalid input */ - ASN_VERSION_E = -141, /* ASN version error, invalid number */ - ASN_GETINT_E = -142, /* ASN get big int error, invalid data */ - ASN_RSA_KEY_E = -143, /* ASN key init error, invalid input */ - ASN_OBJECT_ID_E = -144, /* ASN object id error, invalid id */ - ASN_TAG_NULL_E = -145, /* ASN tag error, not null */ - ASN_EXPECT_0_E = -146, /* ASN expect error, not zero */ - ASN_BITSTR_E = -147, /* ASN bit string error, wrong id */ - ASN_UNKNOWN_OID_E = -148, /* ASN oid error, unknown sum id */ - ASN_DATE_SZ_E = -149, /* ASN date error, bad size */ - ASN_BEFORE_DATE_E = -150, /* ASN date error, current date before */ - ASN_AFTER_DATE_E = -151, /* ASN date error, current date after */ - ASN_SIG_OID_E = -152, /* ASN signature error, mismatched oid */ - ASN_TIME_E = -153, /* ASN time error, unknown time type */ - ASN_INPUT_E = -154, /* ASN input error, not enough data */ - ASN_SIG_CONFIRM_E = -155, /* ASN sig error, confirm failure */ - ASN_SIG_HASH_E = -156, /* ASN sig error, unsupported hash type */ - ASN_SIG_KEY_E = -157, /* ASN sig error, unsupported key type */ - ASN_DH_KEY_E = -158, /* ASN key init error, invalid input */ - ASN_NTRU_KEY_E = -159, /* ASN ntru key decode error, invalid input */ - ASN_CRIT_EXT_E = -160, /* ASN unsupported critical extension */ - ASN_ALT_NAME_E = -161, /* ASN alternate name error */ - ASN_NO_PEM_HEADER = -162, /* ASN no PEM header found */ - - ECC_BAD_ARG_E = -170, /* ECC input argument of wrong type */ - ASN_ECC_KEY_E = -171, /* ASN ECC bad input */ - ECC_CURVE_OID_E = -172, /* Unsupported ECC OID curve type */ - BAD_FUNC_ARG = -173, /* Bad function argument provided */ - NOT_COMPILED_IN = -174, /* Feature not compiled in */ - UNICODE_SIZE_E = -175, /* Unicode password too big */ - NO_PASSWORD = -176, /* no password provided by user */ - ALT_NAME_E = -177, /* alt name size problem, too big */ - BAD_OCSP_RESPONDER = -178, /* missing key usage extensions */ - - AES_GCM_AUTH_E = -180, /* AES-GCM Authentication check failure */ - AES_CCM_AUTH_E = -181, /* AES-CCM Authentication check failure */ - - ASYNC_INIT_E = -182, /* Async Init type error */ - - COMPRESS_INIT_E = -183, /* Compress init error */ - COMPRESS_E = -184, /* Compress error */ - DECOMPRESS_INIT_E = -185, /* DeCompress init error */ - DECOMPRESS_E = -186, /* DeCompress error */ - - BAD_ALIGN_E = -187, /* Bad alignment for operation, no alloc */ - ASN_NO_SIGNER_E = -188, /* ASN no signer to confirm failure */ - ASN_CRL_CONFIRM_E = -189, /* ASN CRL signature confirm failure */ - ASN_CRL_NO_SIGNER_E = -190, /* ASN CRL no signer to confirm failure */ - ASN_OCSP_CONFIRM_E = -191, /* ASN OCSP signature confirm failure */ - - BAD_STATE_E = -192, /* Bad state operation */ - BAD_PADDING_E = -193, /* Bad padding, msg not correct length */ - - REQ_ATTRIBUTE_E = -194, /* setting cert request attributes error */ - - PKCS7_OID_E = -195, /* PKCS#7, mismatched OID error */ - PKCS7_RECIP_E = -196, /* PKCS#7, recipient error */ - FIPS_NOT_ALLOWED_E = -197, /* FIPS not allowed error */ - ASN_NAME_INVALID_E = -198, /* ASN name constraint error */ - - RNG_FAILURE_E = -199, /* RNG Failed, Reinitialize */ - HMAC_MIN_KEYLEN_E = -200, /* FIPS Mode HMAC Minimum Key Length error */ - RSA_PAD_E = -201, /* RSA Padding Error */ - LENGTH_ONLY_E = -202, /* Returning output length only */ - - IN_CORE_FIPS_E = -203, /* In Core Integrity check failure */ - AES_KAT_FIPS_E = -204, /* AES KAT failure */ - DES3_KAT_FIPS_E = -205, /* DES3 KAT failure */ - HMAC_KAT_FIPS_E = -206, /* HMAC KAT failure */ - RSA_KAT_FIPS_E = -207, /* RSA KAT failure */ - DRBG_KAT_FIPS_E = -208, /* HASH DRBG KAT failure */ - DRBG_CONT_FIPS_E = -209, /* HASH DRBG Continuous test failure */ - AESGCM_KAT_FIPS_E = -210, /* AESGCM KAT failure */ - THREAD_STORE_KEY_E = -211, /* Thread local storage key create failure */ - THREAD_STORE_SET_E = -212, /* Thread local storage key set failure */ - - MAC_CMP_FAILED_E = -213, /* MAC comparison failed */ - IS_POINT_E = -214, /* ECC is point on curve failed */ - ECC_INF_E = -215, /* ECC point infinity error */ - ECC_PRIV_KEY_E = -216, /* ECC private key not valid error */ - ECC_OUT_OF_RANGE_E = -217, /* ECC key component out of range */ - - SRP_CALL_ORDER_E = -218, /* SRP function called in the wrong order. */ - SRP_VERIFY_E = -219, /* SRP proof verification failed. */ - SRP_BAD_KEY_E = -220, /* SRP bad ephemeral values. */ - - ASN_NO_SKID = -221, /* ASN no Subject Key Identifier found */ - ASN_NO_AKID = -222, /* ASN no Authority Key Identifier found */ - ASN_NO_KEYUSAGE = -223, /* ASN no Key Usage found */ - SKID_E = -224, /* setting Subject Key Identifier error */ - AKID_E = -225, /* setting Authority Key Identifier error */ - KEYUSAGE_E = -226, /* Bad Key Usage value */ - CERTPOLICIES_E = -227, /* setting Certificate Policies error */ - - WC_INIT_E = -228, /* wolfcrypt failed to initialize */ - SIG_VERIFY_E = -229, /* wolfcrypt signature verify error */ - BAD_COND_E = -230, /* Bad condition variable operation */ - SIG_TYPE_E = -231, /* Signature Type not enabled/available */ - HASH_TYPE_E = -232, /* Hash Type not enabled/available */ - - WC_KEY_SIZE_E = -234, /* Key size error, either too small or large */ - ASN_COUNTRY_SIZE_E = -235, /* ASN Cert Gen, invalid country code size */ - MISSING_RNG_E = -236, /* RNG required but not provided */ - ASN_PATHLEN_SIZE_E = -237, /* ASN CA path length too large error */ - ASN_PATHLEN_INV_E = -238, /* ASN CA path length inversion error */ - - BAD_KEYWRAP_ALG_E = -239, - BAD_KEYWRAP_IV_E = -240, /* Decrypted AES key wrap IV incorrect */ - WC_CLEANUP_E = -241, /* wolfcrypt cleanup failed */ - ECC_CDH_KAT_FIPS_E = -242, /* ECC CDH Known Answer Test failure */ - DH_CHECK_PUB_E = -243, /* DH Check Pub Key error */ - BAD_PATH_ERROR = -244, /* Bad path for opendir */ - - ASYNC_OP_E = -245, /* Async operation error */ - - ECC_PRIVATEONLY_E = -246, /* Invalid use of private only ECC key*/ - EXTKEYUSAGE_E = -247, /* Bad Extended Key Usage value */ - WC_HW_E = -248, /* Error with hardware crypto use */ - WC_HW_WAIT_E = -249, /* Hardware waiting on resource */ - - PSS_SALTLEN_E = -250, /* PSS length of salt is too long for hash */ - PRIME_GEN_E = -251, /* Failure finding a prime. */ - BER_INDEF_E = -252, /* Cannot decode indefinite length BER. */ - RSA_OUT_OF_RANGE_E = -253, /* Ciphertext to decrypt out of range. */ - RSAPSS_PAT_FIPS_E = -254, /* RSA-PSS PAT failure */ - ECDSA_PAT_FIPS_E = -255, /* ECDSA PAT failure */ - DH_KAT_FIPS_E = -256, /* DH KAT failure */ - AESCCM_KAT_FIPS_E = -257, /* AESCCM KAT failure */ - SHA3_KAT_FIPS_E = -258, /* SHA-3 KAT failure */ - ECDHE_KAT_FIPS_E = -259, /* ECDHE KAT failure */ - AES_GCM_OVERFLOW_E = -260, /* AES-GCM invocation counter overflow. */ - AES_CCM_OVERFLOW_E = -261, /* AES-CCM invocation counter overflow. */ - RSA_KEY_PAIR_E = -262, /* RSA Key Pair-Wise Consistency check fail. */ - DH_CHECK_PRIV_E = -263, /* DH Check Priv Key error */ - - WC_AFALG_SOCK_E = -264, /* AF_ALG socket error */ - WC_DEVCRYPTO_E = -265, /* /dev/crypto error */ - - ZLIB_INIT_ERROR = -266, /* zlib init error */ - ZLIB_COMPRESS_ERROR = -267, /* zlib compression error */ - ZLIB_DECOMPRESS_ERROR = -268, /* zlib decompression error */ - - PKCS7_NO_SIGNER_E = -269, /* No signer in PKCS#7 signed data msg */ - WC_PKCS7_WANT_READ_E= -270, /* PKCS7 operations wants more input */ - - CRYPTOCB_UNAVAILABLE= -271, /* Crypto callback unavailable */ - PKCS7_SIGNEEDS_CHECK= -272, /* signature needs verified by caller */ - PSS_SALTLEN_RECOVER_E=-273, /* PSS slat length not recoverable */ - - ASN_SELF_SIGNED_E = -274, /* ASN self-signed certificate error */ - - WC_LAST_E = -274, /* Update this to indicate last error */ - MIN_CODE_E = -300 /* errors -101 - -299 */ - - /* add new companion error id strings for any new error codes - wolfcrypt/src/error.c !!! */ -}; - - -#ifdef NO_ERROR_STRINGS - #define wc_GetErrorString(error) "no support for error strings built in" - #define wc_ErrorString(err, buf) \ - (void)err; XSTRNCPY((buf), wc_GetErrorString((err)), \ - WOLFSSL_MAX_ERROR_SZ); - -#else -WOLFSSL_API void wc_ErrorString(int err, char* buff); -WOLFSSL_API const char* wc_GetErrorString(int error); -#endif - -#ifdef __cplusplus - } /* extern "C" */ -#endif -#endif /* WOLF_CRYPT_ERROR_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/fe_448.h b/client/wolfssl/wolfssl/wolfcrypt/fe_448.h deleted file mode 100644 index 6bcd87d..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/fe_448.h +++ /dev/null @@ -1,116 +0,0 @@ -/* fe448_448.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLF_CRYPT_FE_448_H -#define WOLF_CRYPT_FE_448_H - -#include <wolfssl/wolfcrypt/settings.h> - -#if defined(HAVE_CURVE448) || defined(HAVE_ED448) - -#include <stdint.h> - -#include <wolfssl/wolfcrypt/types.h> - -#if defined(HAVE___UINT128_T) && !defined(NO_CURVED448_128BIT) - #define CURVED448_128BIT -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -/* default to be faster but take more memory */ -#if !defined(CURVE448_SMALL) || !defined(ED448_SMALL) - -#if defined(CURVED448_128BIT) - typedef int64_t fe448; - #ifdef __SIZEOF_INT128__ - typedef __uint128_t uint128_t; - typedef __int128_t int128_t; - #else - typedef unsigned long uint128_t __attribute__ ((mode(TI))); - typedef long int128_t __attribute__ ((mode(TI))); - #endif -#else - typedef int32_t fe448; -#endif - -WOLFSSL_LOCAL void fe448_init(void); -WOLFSSL_LOCAL int curve448(byte* r, const byte* n, const byte* a); - -#if !defined(CURVED448_128BIT) -WOLFSSL_LOCAL void fe448_reduce(fe448*); -#else -#define fe448_reduce(a) -#endif -WOLFSSL_LOCAL void fe448_neg(fe448*,const fe448*); -WOLFSSL_LOCAL void fe448_add(fe448*, const fe448*, const fe448*); -WOLFSSL_LOCAL void fe448_sub(fe448*, const fe448*, const fe448*); -WOLFSSL_LOCAL void fe448_mul(fe448*,const fe448*,const fe448*); -WOLFSSL_LOCAL void fe448_sqr(fe448*, const fe448*); -WOLFSSL_LOCAL void fe448_mul39081(fe448*, const fe448*); -WOLFSSL_LOCAL void fe448_invert(fe448*, const fe448*); - -WOLFSSL_LOCAL void fe448_0(fe448*); -WOLFSSL_LOCAL void fe448_1(fe448*); -WOLFSSL_LOCAL void fe448_copy(fe448*, const fe448*); -WOLFSSL_LOCAL int fe448_isnonzero(const fe448*); -WOLFSSL_LOCAL int fe448_isnegative(const fe448*); - -WOLFSSL_LOCAL void fe448_from_bytes(fe448*,const unsigned char *); -WOLFSSL_LOCAL void fe448_to_bytes(unsigned char *, const fe448*); - -WOLFSSL_LOCAL void fe448_cmov(fe448*,const fe448*, int); -WOLFSSL_LOCAL void fe448_pow_2_446_222_1(fe448*,const fe448*); - -#else - -WOLFSSL_LOCAL void fe448_init(void); -WOLFSSL_LOCAL int curve448(byte* r, const byte* n, const byte* a); - -#define fe448_reduce(a) -WOLFSSL_LOCAL void fe448_neg(uint8_t*,const uint8_t*); -WOLFSSL_LOCAL void fe448_add(uint8_t*, const uint8_t*, const uint8_t*); -WOLFSSL_LOCAL void fe448_sub(uint8_t*, const uint8_t*, const uint8_t*); -WOLFSSL_LOCAL void fe448_mul(uint8_t*,const uint8_t*,const uint8_t*); -WOLFSSL_LOCAL void fe448_sqr(uint8_t*, const uint8_t*); -WOLFSSL_LOCAL void fe448_mul39081(uint8_t*, const uint8_t*); -WOLFSSL_LOCAL void fe448_invert(uint8_t*, const uint8_t*); - -WOLFSSL_LOCAL void fe448_copy(uint8_t*, const uint8_t*); -WOLFSSL_LOCAL int fe448_isnonzero(const uint8_t*); - -WOLFSSL_LOCAL void fe448_norm(byte *a); - -WOLFSSL_LOCAL void fe448_cmov(uint8_t*,const uint8_t*, int); -WOLFSSL_LOCAL void fe448_pow_2_446_222_1(uint8_t*,const uint8_t*); - -#endif /* !CURVE448_SMALL || !ED448_SMALL */ - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* HAVE_CURVE448 || HAVE_ED448 */ - -#endif /* WOLF_CRYPT_FE_448_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/fe_operations.h b/client/wolfssl/wolfssl/wolfcrypt/fe_operations.h deleted file mode 100644 index 336da81..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/fe_operations.h +++ /dev/null @@ -1,210 +0,0 @@ -/* fe_operations.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLF_CRYPT_FE_OPERATIONS_H -#define WOLF_CRYPT_FE_OPERATIONS_H - -#include <wolfssl/wolfcrypt/settings.h> - -#if defined(HAVE_CURVE25519) || defined(HAVE_ED25519) - -#if !defined(CURVE25519_SMALL) || !defined(ED25519_SMALL) - #include <stdint.h> -#endif - -#include <wolfssl/wolfcrypt/types.h> - -#if defined(USE_INTEL_SPEEDUP) && !defined(NO_CURVED25519_X64) - #define CURVED25519_X64 -#elif defined(HAVE___UINT128_T) && !defined(NO_CURVED25519_128BIT) - #define CURVED25519_128BIT -#endif - -#if defined(CURVED25519_X64) - #define CURVED25519_ASM_64BIT - #define CURVED25519_ASM -#endif -#if defined(WOLFSSL_ARMASM) - #ifdef __aarch64__ - #define CURVED25519_ASM_64BIT - #else - #define CURVED25519_ASM_32BIT - #endif - #define CURVED25519_ASM -#endif - -/* -fe means field element. -Here the field is \Z/(2^255-19). -An element t, entries t[0]...t[9], represents the integer -t[0]+2^26 t[1]+2^51 t[2]+2^77 t[3]+2^102 t[4]+...+2^230 t[9]. -Bounds on each t[i] vary depending on context. -*/ - -#ifdef __cplusplus - extern "C" { -#endif - -#if defined(CURVE25519_SMALL) || defined(ED25519_SMALL) - #define F25519_SIZE 32 - - WOLFSSL_LOCAL void lm_copy(byte*, const byte*); - WOLFSSL_LOCAL void lm_add(byte*, const byte*, const byte*); - WOLFSSL_LOCAL void lm_sub(byte*, const byte*, const byte*); - WOLFSSL_LOCAL void lm_neg(byte*,const byte*); - WOLFSSL_LOCAL void lm_invert(byte*, const byte*); - WOLFSSL_LOCAL void lm_mul(byte*,const byte*,const byte*); -#endif - - -#if !defined(FREESCALE_LTC_ECC) -WOLFSSL_LOCAL void fe_init(void); - -WOLFSSL_LOCAL int curve25519(byte * q, byte * n, byte * p); -#endif - -/* default to be faster but take more memory */ -#if !defined(CURVE25519_SMALL) || !defined(ED25519_SMALL) - -#ifdef CURVED25519_ASM_64BIT - typedef int64_t fe[4]; -#elif defined(CURVED25519_ASM_32BIT) - typedef int32_t fe[8]; -#elif defined(CURVED25519_128BIT) - typedef int64_t fe[5]; -#else - typedef int32_t fe[10]; -#endif - -WOLFSSL_LOCAL void fe_copy(fe, const fe); -WOLFSSL_LOCAL void fe_add(fe, const fe, const fe); -WOLFSSL_LOCAL void fe_neg(fe,const fe); -WOLFSSL_LOCAL void fe_sub(fe, const fe, const fe); -WOLFSSL_LOCAL void fe_invert(fe, const fe); -WOLFSSL_LOCAL void fe_mul(fe,const fe,const fe); - - -/* Based On Daniel J Bernstein's curve25519 and ed25519 Public Domain ref10 - work. */ - -WOLFSSL_LOCAL void fe_0(fe); -WOLFSSL_LOCAL void fe_1(fe); -WOLFSSL_LOCAL int fe_isnonzero(const fe); -WOLFSSL_LOCAL int fe_isnegative(const fe); -WOLFSSL_LOCAL void fe_tobytes(unsigned char *, const fe); -WOLFSSL_LOCAL void fe_sq(fe, const fe); -WOLFSSL_LOCAL void fe_sq2(fe,const fe); -WOLFSSL_LOCAL void fe_frombytes(fe,const unsigned char *); -WOLFSSL_LOCAL void fe_cswap(fe, fe, int); -WOLFSSL_LOCAL void fe_mul121666(fe,fe); -WOLFSSL_LOCAL void fe_cmov(fe,const fe, int); -WOLFSSL_LOCAL void fe_pow22523(fe,const fe); - -/* 64 type needed for SHA512 */ -WOLFSSL_LOCAL uint64_t load_3(const unsigned char *in); -WOLFSSL_LOCAL uint64_t load_4(const unsigned char *in); - -#ifdef CURVED25519_ASM -WOLFSSL_LOCAL void fe_ge_to_p2(fe rx, fe ry, fe rz, const fe px, const fe py, - const fe pz, const fe pt); -WOLFSSL_LOCAL void fe_ge_to_p3(fe rx, fe ry, fe rz, fe rt, const fe px, - const fe py, const fe pz, const fe pt); -WOLFSSL_LOCAL void fe_ge_dbl(fe rx, fe ry, fe rz, fe rt, const fe px, - const fe py, const fe pz); -WOLFSSL_LOCAL void fe_ge_madd(fe rx, fe ry, fe rz, fe rt, const fe px, - const fe py, const fe pz, const fe pt, - const fe qxy2d, const fe qyplusx, - const fe qyminusx); -WOLFSSL_LOCAL void fe_ge_msub(fe rx, fe ry, fe rz, fe rt, const fe px, - const fe py, const fe pz, const fe pt, - const fe qxy2d, const fe qyplusx, - const fe qyminusx); -WOLFSSL_LOCAL void fe_ge_add(fe rx, fe ry, fe rz, fe rt, const fe px, - const fe py, const fe pz, const fe pt, const fe qz, - const fe qt2d, const fe qyplusx, - const fe qyminusx); -WOLFSSL_LOCAL void fe_ge_sub(fe rx, fe ry, fe rz, fe rt, const fe px, - const fe py, const fe pz, const fe pt, const fe qz, - const fe qt2d, const fe qyplusx, - const fe qyminusx); -WOLFSSL_LOCAL void fe_cmov_table(fe* r, fe* base, signed char b); -#endif /* CURVED25519_ASM */ -#endif /* !CURVE25519_SMALL || !ED25519_SMALL */ - -/* Use less memory and only 32bit types or less, but is slower - Based on Daniel Beer's public domain work. */ -#if defined(CURVE25519_SMALL) || defined(ED25519_SMALL) -static const byte c25519_base_x[F25519_SIZE] = {9}; -static const byte f25519_zero[F25519_SIZE] = {0}; -static const byte f25519_one[F25519_SIZE] = {1}; -static const byte fprime_zero[F25519_SIZE] = {0}; -static const byte fprime_one[F25519_SIZE] = {1}; - -WOLFSSL_LOCAL void fe_load(byte *x, word32 c); -WOLFSSL_LOCAL void fe_normalize(byte *x); -WOLFSSL_LOCAL void fe_inv__distinct(byte *r, const byte *x); - -/* Conditional copy. If condition == 0, then zero is copied to dst. If - * condition == 1, then one is copied to dst. Any other value results in - * undefined behavior. - */ -WOLFSSL_LOCAL void fe_select(byte *dst, const byte *zero, const byte *one, - byte condition); - -/* Multiply a point by a small constant. The two pointers are not - * required to be distinct. - * - * The constant must be less than 2^24. - */ -WOLFSSL_LOCAL void fe_mul_c(byte *r, const byte *a, word32 b); -WOLFSSL_LOCAL void fe_mul__distinct(byte *r, const byte *a, const byte *b); - -/* Compute one of the square roots of the field element, if the element - * is square. The other square is -r. - * - * If the input is not square, the returned value is a valid field - * element, but not the correct answer. If you don't already know that - * your element is square, you should square the return value and test. - */ -WOLFSSL_LOCAL void fe_sqrt(byte *r, const byte *x); - -/* Conditional copy. If condition == 0, then zero is copied to dst. If - * condition == 1, then one is copied to dst. Any other value results in - * undefined behavior. - */ -WOLFSSL_LOCAL void fprime_select(byte *dst, const byte *zero, const byte *one, - byte condition); -WOLFSSL_LOCAL void fprime_add(byte *r, const byte *a, const byte *modulus); -WOLFSSL_LOCAL void fprime_sub(byte *r, const byte *a, const byte *modulus); -WOLFSSL_LOCAL void fprime_mul(byte *r, const byte *a, const byte *b, - const byte *modulus); -WOLFSSL_LOCAL void fprime_copy(byte *x, const byte *a); - -#endif /* CURVE25519_SMALL || ED25519_SMALL */ - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* HAVE_CURVE25519 || HAVE_ED25519 */ - -#endif /* WOLF_CRYPT_FE_OPERATIONS_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/fips.h b/client/wolfssl/wolfssl/wolfcrypt/fips.h deleted file mode 100644 index e69de29..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/fips.h +++ /dev/null diff --git a/client/wolfssl/wolfssl/wolfcrypt/fips_test.h b/client/wolfssl/wolfssl/wolfcrypt/fips_test.h deleted file mode 100644 index a78b074..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/fips_test.h +++ /dev/null @@ -1,59 +0,0 @@ -/* fips_test.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -#ifndef WOLF_CRYPT_FIPS_TEST_H -#define WOLF_CRYPT_FIPS_TEST_H - -#include <wolfssl/wolfcrypt/types.h> - - -#ifdef __cplusplus - extern "C" { -#endif - -/* Known Answer Test string inputs are hex, internal */ -WOLFSSL_LOCAL int DoKnownAnswerTests(char*, int); - - -/* FIPS failure callback */ -typedef void(*wolfCrypt_fips_cb)(int ok, int err, const char* hash); - -/* Public set function */ -WOLFSSL_API int wolfCrypt_SetCb_fips(wolfCrypt_fips_cb cbf); - -/* Public get status functions */ -WOLFSSL_API int wolfCrypt_GetStatus_fips(void); -WOLFSSL_API const char* wolfCrypt_GetCoreHash_fips(void); - -#ifdef HAVE_FORCE_FIPS_FAILURE - /* Public function to force failure mode for operational testing */ - WOLFSSL_API int wolfCrypt_SetStatus_fips(int); -#endif - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLF_CRYPT_FIPS_TEST_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/ge_448.h b/client/wolfssl/wolfssl/wolfcrypt/ge_448.h deleted file mode 100644 index 51cb02a..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/ge_448.h +++ /dev/null @@ -1,86 +0,0 @@ -/* ge_448.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLF_CRYPT_GE_448_H -#define WOLF_CRYPT_GE_448_H - -#include <wolfssl/wolfcrypt/settings.h> - -#ifdef HAVE_ED448 - -#include <wolfssl/wolfcrypt/fe_448.h> - -/* -ge448 means group element. - -Here the group is the set of pairs (x,y) of field elements (see fe.h) -satisfying -x^2 + y^2 = 1 + d x^2y^2 -where d = -39081. - -Representations: - ge448_p2 (projective) : (X:Y:Z) satisfying x=X/Z, y=Y/Z - ge448_precomp (affine): (x,y) -*/ - -#ifdef ED448_SMALL - typedef byte ge448; - #define GE448_WORDS 56 -#elif defined(CURVED448_128BIT) - typedef int64_t ge448; - #define GE448_WORDS 8 -#else - typedef int32_t ge448; - #define GE448_WORDS 16 -#endif - -typedef struct { - ge448 X[GE448_WORDS]; - ge448 Y[GE448_WORDS]; - ge448 Z[GE448_WORDS]; -} ge448_p2; - - -WOLFSSL_LOCAL int ge448_compress_key(byte*, const byte*, const byte*); -WOLFSSL_LOCAL int ge448_from_bytes_negate_vartime(ge448_p2 *, - const unsigned char *); - -WOLFSSL_LOCAL int ge448_double_scalarmult_vartime(ge448_p2 *, - const unsigned char *, - const ge448_p2 *, - const unsigned char *); -WOLFSSL_LOCAL void ge448_scalarmult_base(ge448_p2 *, const unsigned char *); -WOLFSSL_LOCAL void sc448_reduce(byte*); -WOLFSSL_LOCAL void sc448_muladd(byte*, const byte*, const byte*, const byte*); -WOLFSSL_LOCAL void ge448_to_bytes(unsigned char *, const ge448_p2 *); - - -#ifndef ED448_SMALL -typedef struct { - ge448 x[GE448_WORDS]; - ge448 y[GE448_WORDS]; -} ge448_precomp; - -#endif /* !ED448_SMALL */ - -#endif /* HAVE_ED448 */ - -#endif /* WOLF_CRYPT_GE_448_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/ge_operations.h b/client/wolfssl/wolfssl/wolfcrypt/ge_operations.h deleted file mode 100644 index 9d89c0a..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/ge_operations.h +++ /dev/null @@ -1,113 +0,0 @@ -/* ge_operations.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - /* Based On Daniel J Bernstein's ed25519 Public Domain ref10 work. */ - -#ifndef WOLF_CRYPT_GE_OPERATIONS_H -#define WOLF_CRYPT_GE_OPERATIONS_H - -#include <wolfssl/wolfcrypt/settings.h> - -#ifdef HAVE_ED25519 - -#include <wolfssl/wolfcrypt/fe_operations.h> - -/* -ge means group element. - -Here the group is the set of pairs (x,y) of field elements (see fe.h) -satisfying -x^2 + y^2 = 1 + d x^2y^2 -where d = -121665/121666. - -Representations: - ge_p2 (projective): (X:Y:Z) satisfying x=X/Z, y=Y/Z - ge_p3 (extended): (X:Y:Z:T) satisfying x=X/Z, y=Y/Z, XY=ZT - ge_p1p1 (completed): ((X:Z),(Y:T)) satisfying x=X/Z, y=Y/T - ge_precomp (Duif): (y+x,y-x,2dxy) -*/ - -#ifdef ED25519_SMALL - typedef byte ge[F25519_SIZE]; -#elif defined(CURVED25519_ASM_64BIT) - typedef int64_t ge[4]; -#elif defined(CURVED25519_ASM_32BIT) - typedef int32_t ge[8]; -#elif defined(CURVED25519_128BIT) - typedef int64_t ge[5]; -#else - typedef int32_t ge[10]; -#endif - -typedef struct { - ge X; - ge Y; - ge Z; -} ge_p2; - -typedef struct { - ge X; - ge Y; - ge Z; - ge T; -} ge_p3; - - -WOLFSSL_LOCAL int ge_compress_key(byte* out, const byte* xIn, const byte* yIn, - word32 keySz); -WOLFSSL_LOCAL int ge_frombytes_negate_vartime(ge_p3 *,const unsigned char *); - -WOLFSSL_LOCAL int ge_double_scalarmult_vartime(ge_p2 *,const unsigned char *, - const ge_p3 *,const unsigned char *); -WOLFSSL_LOCAL void ge_scalarmult_base(ge_p3 *,const unsigned char *); -WOLFSSL_LOCAL void sc_reduce(byte* s); -WOLFSSL_LOCAL void sc_muladd(byte* s, const byte* a, const byte* b, - const byte* c); -WOLFSSL_LOCAL void ge_tobytes(unsigned char *,const ge_p2 *); -WOLFSSL_LOCAL void ge_p3_tobytes(unsigned char *,const ge_p3 *); - - -#ifndef ED25519_SMALL -typedef struct { - ge X; - ge Y; - ge Z; - ge T; -} ge_p1p1; - -typedef struct { - ge yplusx; - ge yminusx; - ge xy2d; -} ge_precomp; - -typedef struct { - ge YplusX; - ge YminusX; - ge Z; - ge T2d; -} ge_cached; - -#endif /* !ED25519_SMALL */ - -#endif /* HAVE_ED25519 */ - -#endif /* WOLF_CRYPT_GE_OPERATIONS_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/hash.h b/client/wolfssl/wolfssl/wolfcrypt/hash.h deleted file mode 100644 index 73222ca..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/hash.h +++ /dev/null @@ -1,247 +0,0 @@ -/* hash.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/hash.h -*/ - -#ifndef WOLF_CRYPT_HASH_H -#define WOLF_CRYPT_HASH_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifndef NO_MD5 - #include <wolfssl/wolfcrypt/md5.h> -#endif -#ifndef NO_SHA - #include <wolfssl/wolfcrypt/sha.h> -#endif -#if defined(WOLFSSL_SHA224) || !defined(NO_SHA256) - #include <wolfssl/wolfcrypt/sha256.h> -#endif -#if defined(WOLFSSL_SHA384) || defined(WOLFSSL_SHA512) - #include <wolfssl/wolfcrypt/sha512.h> -#endif -#ifdef HAVE_BLAKE2 - #include <wolfssl/wolfcrypt/blake2.h> -#endif -#ifdef WOLFSSL_SHA3 - #include <wolfssl/wolfcrypt/sha3.h> -#endif -#ifndef NO_MD4 - #include <wolfssl/wolfcrypt/md4.h> -#endif -#ifdef WOLFSSL_MD2 - #include <wolfssl/wolfcrypt/md2.h> -#endif -#if defined(HAVE_BLAKE2) || defined(HAVE_BLAKE2S) - #include <wolfssl/wolfcrypt/blake2.h> -#endif - - -#ifdef __cplusplus - extern "C" { -#endif - -#if !defined(HAVE_FIPS) && !defined(NO_OLD_WC_NAMES) - #define MAX_DIGEST_SIZE WC_MAX_DIGEST_SIZE -#endif - - -/* Supported Message Authentication Codes from page 43 */ -enum wc_MACAlgorithm { - no_mac, - md5_mac, - sha_mac, - sha224_mac, - sha256_mac, /* needs to match external KDF_MacAlgorithm */ - sha384_mac, - sha512_mac, - rmd_mac, - blake2b_mac -}; - -enum wc_HashFlags { - WC_HASH_FLAG_NONE = 0x00000000, - WC_HASH_FLAG_WILLCOPY = 0x00000001, /* flag to indicate hash will be copied */ - WC_HASH_FLAG_ISCOPY = 0x00000002, /* hash is copy */ -#ifdef WOLFSSL_SHA3 - WC_HASH_SHA3_KECCAK256 =0x00010000, /* Older KECCAK256 */ -#endif -}; - - -typedef union { - #ifndef NO_MD5 - wc_Md5 md5; - #endif - #ifndef NO_SHA - wc_Sha sha; - #endif - #ifdef WOLFSSL_SHA224 - wc_Sha224 sha224; - #endif - #ifndef NO_SHA256 - wc_Sha256 sha256; - #endif - #ifdef WOLFSSL_SHA384 - wc_Sha384 sha384; - #endif - #ifdef WOLFSSL_SHA512 - wc_Sha512 sha512; - #endif - #ifdef WOLFSSL_SHA3 - wc_Sha3 sha3; - #endif -} wc_HashAlg; - -/* Find largest possible digest size - Note if this gets up to the size of 80 or over check smallstack build */ -#if defined(WOLFSSL_SHA3) - #define WC_MAX_DIGEST_SIZE WC_SHA3_512_DIGEST_SIZE - #define WC_MAX_BLOCK_SIZE WC_SHA3_224_BLOCK_SIZE /* 224 is the largest block size */ -#elif defined(WOLFSSL_SHA512) - #define WC_MAX_DIGEST_SIZE WC_SHA512_DIGEST_SIZE - #define WC_MAX_BLOCK_SIZE WC_SHA512_BLOCK_SIZE -#elif defined(HAVE_BLAKE2) - #define WC_MAX_DIGEST_SIZE BLAKE2B_OUTBYTES - #define WC_MAX_BLOCK_SIZE BLAKE2B_BLOCKBYTES -#elif defined(WOLFSSL_SHA384) - #define WC_MAX_DIGEST_SIZE WC_SHA384_DIGEST_SIZE - #define WC_MAX_BLOCK_SIZE WC_SHA384_BLOCK_SIZE -#elif !defined(NO_SHA256) - #define WC_MAX_DIGEST_SIZE WC_SHA256_DIGEST_SIZE - #define WC_MAX_BLOCK_SIZE WC_SHA256_BLOCK_SIZE -#elif defined(WOLFSSL_SHA224) - #define WC_MAX_DIGEST_SIZE WC_SHA224_DIGEST_SIZE - #define WC_MAX_BLOCK_SIZE WC_SHA224_BLOCK_SIZE -#elif !defined(NO_SHA) - #define WC_MAX_DIGEST_SIZE WC_SHA_DIGEST_SIZE - #define WC_MAX_BLOCK_SIZE WC_SHA_BLOCK_SIZE -#elif !defined(NO_MD5) - #define WC_MAX_DIGEST_SIZE WC_MD5_DIGEST_SIZE - #define WC_MAX_BLOCK_SIZE WC_MD5_BLOCK_SIZE -#else - #define WC_MAX_DIGEST_SIZE 64 /* default to max size of 64 */ - #define WC_MAX_BLOCK_SIZE 128 -#endif - -#if !defined(NO_ASN) || !defined(NO_DH) || defined(HAVE_ECC) -WOLFSSL_API int wc_HashGetOID(enum wc_HashType hash_type); -WOLFSSL_API enum wc_HashType wc_OidGetHash(int oid); -#endif - -WOLFSSL_API enum wc_HashType wc_HashTypeConvert(int hashType); - -WOLFSSL_API int wc_HashGetDigestSize(enum wc_HashType hash_type); -WOLFSSL_API int wc_HashGetBlockSize(enum wc_HashType hash_type); -WOLFSSL_API int wc_Hash(enum wc_HashType hash_type, - const byte* data, word32 data_len, - byte* hash, word32 hash_len); - -/* generic hash operation wrappers */ -WOLFSSL_API int wc_HashInit_ex(wc_HashAlg* hash, enum wc_HashType type, - void* heap, int devId); -WOLFSSL_API int wc_HashInit(wc_HashAlg* hash, enum wc_HashType type); -WOLFSSL_API int wc_HashUpdate(wc_HashAlg* hash, enum wc_HashType type, - const byte* data, word32 dataSz); -WOLFSSL_API int wc_HashFinal(wc_HashAlg* hash, enum wc_HashType type, - byte* out); -WOLFSSL_API int wc_HashFree(wc_HashAlg* hash, enum wc_HashType type); - -#if defined(WOLFSSL_HASH_FLAGS) || defined(WOLF_CRYPTO_CB) - WOLFSSL_API int wc_HashSetFlags(wc_HashAlg* hash, enum wc_HashType type, - word32 flags); - WOLFSSL_API int wc_HashGetFlags(wc_HashAlg* hash, enum wc_HashType type, - word32* flags); -#endif - -#ifndef NO_MD5 -#include <wolfssl/wolfcrypt/md5.h> -WOLFSSL_API int wc_Md5Hash(const byte* data, word32 len, byte* hash); -#endif - -#ifndef NO_SHA -#include <wolfssl/wolfcrypt/sha.h> -WOLFSSL_API int wc_ShaHash(const byte*, word32, byte*); -#endif - -#ifdef WOLFSSL_SHA224 -#include <wolfssl/wolfcrypt/sha256.h> -WOLFSSL_API int wc_Sha224Hash(const byte*, word32, byte*); -#endif /* defined(WOLFSSL_SHA224) */ - -#ifndef NO_SHA256 -#include <wolfssl/wolfcrypt/sha256.h> -WOLFSSL_API int wc_Sha256Hash(const byte*, word32, byte*); -#endif - -#ifdef WOLFSSL_SHA384 -#include <wolfssl/wolfcrypt/sha512.h> -WOLFSSL_API int wc_Sha384Hash(const byte*, word32, byte*); -#endif /* defined(WOLFSSL_SHA384) */ - -#ifdef WOLFSSL_SHA512 -#include <wolfssl/wolfcrypt/sha512.h> -WOLFSSL_API int wc_Sha512Hash(const byte*, word32, byte*); -#endif /* WOLFSSL_SHA512 */ - -#ifdef WOLFSSL_SHA3 -#include <wolfssl/wolfcrypt/sha3.h> -WOLFSSL_API int wc_Sha3_224Hash(const byte*, word32, byte*); -WOLFSSL_API int wc_Sha3_256Hash(const byte*, word32, byte*); -WOLFSSL_API int wc_Sha3_384Hash(const byte*, word32, byte*); -WOLFSSL_API int wc_Sha3_512Hash(const byte*, word32, byte*); -#ifdef WOLFSSL_SHAKE256 -WOLFSSL_API int wc_Shake256Hash(const byte*, word32, byte*, word32); -#endif -#endif /* WOLFSSL_SHA3 */ - -enum max_prf { -#ifdef HAVE_FFDHE_8192 - MAX_PRF_HALF = 516, /* Maximum half secret len */ -#elif defined(HAVE_FFDHE_6144) - MAX_PRF_HALF = 388, /* Maximum half secret len */ -#else - MAX_PRF_HALF = 260, /* Maximum half secret len */ -#endif - MAX_PRF_LABSEED = 128, /* Maximum label + seed len */ - MAX_PRF_DIG = 224 /* Maximum digest len */ -}; - -#ifdef WOLFSSL_HAVE_PRF -WOLFSSL_API int wc_PRF(byte* result, word32 resLen, const byte* secret, - word32 secLen, const byte* seed, word32 seedLen, int hash, - void* heap, int devId); -WOLFSSL_API int wc_PRF_TLSv1(byte* digest, word32 digLen, const byte* secret, - word32 secLen, const byte* label, word32 labLen, - const byte* seed, word32 seedLen, void* heap, int devId); -WOLFSSL_API int wc_PRF_TLS(byte* digest, word32 digLen, const byte* secret, - word32 secLen, const byte* label, word32 labLen, - const byte* seed, word32 seedLen, int useAtLeastSha256, - int hash_type, void* heap, int devId); -#endif /* WOLFSSL_HAVE_PRF */ - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLF_CRYPT_HASH_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/hc128.h b/client/wolfssl/wolfssl/wolfcrypt/hc128.h deleted file mode 100644 index 19906be..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/hc128.h +++ /dev/null @@ -1,67 +0,0 @@ -/* hc128.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/hc128.h -*/ - - -#ifndef WOLF_CRYPT_HC128_H -#define WOLF_CRYPT_HC128_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifndef NO_HC128 - -#ifdef __cplusplus - extern "C" { -#endif - -enum { - HC128_ENC_TYPE = WC_CIPHER_HC128, /* cipher unique type */ -}; - -/* HC-128 stream cipher */ -typedef struct HC128 { - word32 T[1024]; /* P[i] = T[i]; Q[i] = T[1024 + i ]; */ - word32 X[16]; - word32 Y[16]; - word32 counter1024; /* counter1024 = i mod 1024 at the ith step */ - word32 key[8]; - word32 iv[8]; -#ifdef XSTREAM_ALIGN - void* heap; /* heap hint, currently XMALLOC only used with aligning */ -#endif -} HC128; - - -WOLFSSL_API int wc_Hc128_Process(HC128*, byte*, const byte*, word32); -WOLFSSL_API int wc_Hc128_SetKey(HC128*, const byte* key, const byte* iv); - -WOLFSSL_LOCAL int wc_Hc128_SetHeap(HC128* ctx, void* heap); - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* HAVE_HC128 */ -#endif /* WOLF_CRYPT_HC128_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/hmac.h b/client/wolfssl/wolfssl/wolfcrypt/hmac.h deleted file mode 100644 index f6744db..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/hmac.h +++ /dev/null @@ -1,207 +0,0 @@ -/* hmac.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/hmac.h -*/ - -#ifndef NO_HMAC - -#ifndef WOLF_CRYPT_HMAC_H -#define WOLF_CRYPT_HMAC_H - -#include <wolfssl/wolfcrypt/hash.h> - -#if defined(HAVE_FIPS) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 2)) -/* for fips @wc_fips */ - #include <cyassl/ctaocrypt/hmac.h> - #define WC_HMAC_BLOCK_SIZE HMAC_BLOCK_SIZE -#endif - - -#if defined(HAVE_FIPS) && \ - defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2) - #include <wolfssl/wolfcrypt/fips.h> -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -/* avoid redefinition of structs */ -#if !defined(HAVE_FIPS) || \ - (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)) - -#ifdef WOLFSSL_ASYNC_CRYPT - #include <wolfssl/wolfcrypt/async.h> -#endif - -#ifndef NO_OLD_WC_NAMES - #define HMAC_BLOCK_SIZE WC_HMAC_BLOCK_SIZE -#endif - -#define WC_HMAC_INNER_HASH_KEYED_SW 1 -#define WC_HMAC_INNER_HASH_KEYED_DEV 2 - -enum { - HMAC_FIPS_MIN_KEY = 14, /* 112 bit key length minimum */ - - IPAD = 0x36, - OPAD = 0x5C, - -/* If any hash is not enabled, add the ID here. */ -#ifdef NO_MD5 - WC_MD5 = WC_HASH_TYPE_MD5, -#endif -#ifdef NO_SHA - WC_SHA = WC_HASH_TYPE_SHA, -#endif -#ifdef NO_SHA256 - WC_SHA256 = WC_HASH_TYPE_SHA256, -#endif -#ifndef WOLFSSL_SHA512 - WC_SHA512 = WC_HASH_TYPE_SHA512, -#endif -#ifndef WOLFSSL_SHA384 - WC_SHA384 = WC_HASH_TYPE_SHA384, -#endif -#ifndef WOLFSSL_SHA224 - WC_SHA224 = WC_HASH_TYPE_SHA224, -#endif -#ifndef WOLFSSL_SHA3 - WC_SHA3_224 = WC_HASH_TYPE_SHA3_224, - WC_SHA3_256 = WC_HASH_TYPE_SHA3_256, - WC_SHA3_384 = WC_HASH_TYPE_SHA3_384, - WC_SHA3_512 = WC_HASH_TYPE_SHA3_512, -#endif -#ifdef HAVE_PKCS11 - HMAC_MAX_ID_LEN = 32, -#endif -}; - -/* Select the largest available hash for the buffer size. */ -#define WC_HMAC_BLOCK_SIZE WC_MAX_BLOCK_SIZE - -#if !defined(WOLFSSL_SHA3) && !defined(WOLFSSL_SHA512) && \ - !defined(WOLFSSL_SHA384) && defined(NO_SHA256) && \ - defined(WOLFSSL_SHA224) && defined(NO_SHA) && defined(NO_MD5) - #error "You have to have some kind of hash if you want to use HMAC." -#endif - - -/* hash union */ -typedef union { -#ifndef NO_MD5 - wc_Md5 md5; -#endif -#ifndef NO_SHA - wc_Sha sha; -#endif -#ifdef WOLFSSL_SHA224 - wc_Sha224 sha224; -#endif -#ifndef NO_SHA256 - wc_Sha256 sha256; -#endif -#ifdef WOLFSSL_SHA384 - wc_Sha384 sha384; -#endif -#ifdef WOLFSSL_SHA512 - wc_Sha512 sha512; -#endif -#ifdef WOLFSSL_SHA3 - wc_Sha3 sha3; -#endif -} Hash; - -/* Hmac digest */ -struct Hmac { - Hash hash; - word32 ipad[WC_HMAC_BLOCK_SIZE / sizeof(word32)]; /* same block size all*/ - word32 opad[WC_HMAC_BLOCK_SIZE / sizeof(word32)]; - word32 innerHash[WC_MAX_DIGEST_SIZE / sizeof(word32)]; - void* heap; /* heap hint */ - byte macType; /* md5 sha or sha256 */ - byte innerHashKeyed; /* keyed flag */ -#ifdef WOLFSSL_ASYNC_CRYPT - WC_ASYNC_DEV asyncDev; -#endif /* WOLFSSL_ASYNC_CRYPT */ -#ifdef WOLF_CRYPTO_CB - int devId; - void* devCtx; - const byte* keyRaw; -#endif -#ifdef HAVE_PKCS11 - byte id[HMAC_MAX_ID_LEN]; - int idLen; -#endif -#if defined(WOLFSSL_ASYNC_CRYPT) || defined(WOLF_CRYPTO_CB) - word16 keyLen; /* hmac key length (key in ipad) */ -#endif -}; - -#ifndef WC_HMAC_TYPE_DEFINED - typedef struct Hmac Hmac; - #define WC_HMAC_TYPE_DEFINED -#endif - - -#endif /* HAVE_FIPS */ - -/* does init */ -WOLFSSL_API int wc_HmacSetKey(Hmac*, int type, const byte* key, word32 keySz); -WOLFSSL_API int wc_HmacUpdate(Hmac*, const byte*, word32); -WOLFSSL_API int wc_HmacFinal(Hmac*, byte*); -WOLFSSL_API int wc_HmacSizeByType(int type); - -WOLFSSL_API int wc_HmacInit(Hmac* hmac, void* heap, int devId); -WOLFSSL_API int wc_HmacInit_Id(Hmac* hmac, byte* id, int len, void* heap, - int devId); -WOLFSSL_API void wc_HmacFree(Hmac*); - -WOLFSSL_API int wolfSSL_GetHmacMaxSize(void); - -WOLFSSL_LOCAL int _InitHmac(Hmac* hmac, int type, void* heap); - -#ifdef HAVE_HKDF - -WOLFSSL_API int wc_HKDF_Extract(int type, const byte* salt, word32 saltSz, - const byte* inKey, word32 inKeySz, byte* out); -WOLFSSL_API int wc_HKDF_Expand(int type, const byte* inKey, word32 inKeySz, - const byte* info, word32 infoSz, - byte* out, word32 outSz); - -WOLFSSL_API int wc_HKDF(int type, const byte* inKey, word32 inKeySz, - const byte* salt, word32 saltSz, - const byte* info, word32 infoSz, - byte* out, word32 outSz); - -#endif /* HAVE_HKDF */ - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLF_CRYPT_HMAC_H */ - -#endif /* NO_HMAC */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/idea.h b/client/wolfssl/wolfssl/wolfcrypt/idea.h deleted file mode 100644 index 8dbffb2..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/idea.h +++ /dev/null @@ -1,70 +0,0 @@ -/* idea.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/idea.h -*/ - -#ifndef WOLF_CRYPT_IDEA_H -#define WOLF_CRYPT_IDEA_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef HAVE_IDEA - -#ifdef __cplusplus - extern "C" { -#endif - -enum { - IDEA_MODULO = 0x10001, /* 2^16+1 */ - IDEA_2EXP16 = 0x10000, /* 2^16 */ - IDEA_MASK = 0xFFFF, /* 16 bits set to one */ - IDEA_ROUNDS = 8, /* number of rounds for IDEA */ - IDEA_SK_NUM = (6*IDEA_ROUNDS + 4), /* number of subkeys */ - IDEA_KEY_SIZE = 16, /* size of key in bytes */ - IDEA_BLOCK_SIZE = 8, /* size of IDEA blocks in bytes */ - IDEA_IV_SIZE = 8, /* size of IDEA IV in bytes */ - IDEA_ENCRYPTION = 0, - IDEA_DECRYPTION = 1 -}; - -/* IDEA encryption and decryption */ -typedef struct Idea { - word32 reg[IDEA_BLOCK_SIZE / sizeof(word32)]; /* for CBC mode */ - word32 tmp[IDEA_BLOCK_SIZE / sizeof(word32)]; /* for CBC mode */ - word16 skey[IDEA_SK_NUM]; /* 832 bits expanded key */ -} Idea; - -WOLFSSL_API int wc_IdeaSetKey(Idea *idea, const byte* key, word16 keySz, - const byte *iv, int dir); -WOLFSSL_API int wc_IdeaSetIV(Idea *idea, const byte* iv); -WOLFSSL_API int wc_IdeaCipher(Idea *idea, byte* out, const byte* in); -WOLFSSL_API int wc_IdeaCbcEncrypt(Idea *idea, byte* out, - const byte* in, word32 len); -WOLFSSL_API int wc_IdeaCbcDecrypt(Idea *idea, byte* out, - const byte* in, word32 len); -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* HAVE_IDEA */ -#endif /* WOLF_CRYPT_IDEA_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/include.am b/client/wolfssl/wolfssl/wolfcrypt/include.am deleted file mode 100644 index 0df7046..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/include.am +++ /dev/null @@ -1,141 +0,0 @@ -# vim:ft=automake -# All paths should be given relative to the root - -nobase_include_HEADERS+= \ - wolfssl/wolfcrypt/aes.h \ - wolfssl/wolfcrypt/arc4.h \ - wolfssl/wolfcrypt/asn.h \ - wolfssl/wolfcrypt/asn_public.h \ - wolfssl/wolfcrypt/poly1305.h \ - wolfssl/wolfcrypt/camellia.h \ - wolfssl/wolfcrypt/cmac.h \ - wolfssl/wolfcrypt/coding.h \ - wolfssl/wolfcrypt/compress.h \ - wolfssl/wolfcrypt/des3.h \ - wolfssl/wolfcrypt/dh.h \ - wolfssl/wolfcrypt/dsa.h \ - wolfssl/wolfcrypt/ecc.h \ - wolfssl/wolfcrypt/curve25519.h \ - wolfssl/wolfcrypt/ed25519.h \ - wolfssl/wolfcrypt/fe_operations.h \ - wolfssl/wolfcrypt/ge_operations.h \ - wolfssl/wolfcrypt/curve448.h \ - wolfssl/wolfcrypt/ed448.h \ - wolfssl/wolfcrypt/fe_448.h \ - wolfssl/wolfcrypt/ge_448.h \ - wolfssl/wolfcrypt/error-crypt.h \ - wolfssl/wolfcrypt/fips_test.h \ - wolfssl/wolfcrypt/hash.h \ - wolfssl/wolfcrypt/hc128.h \ - wolfssl/wolfcrypt/hmac.h \ - wolfssl/wolfcrypt/integer.h \ - wolfssl/wolfcrypt/md2.h \ - wolfssl/wolfcrypt/md4.h \ - wolfssl/wolfcrypt/md5.h \ - wolfssl/wolfcrypt/misc.h \ - wolfssl/wolfcrypt/pkcs7.h \ - wolfssl/wolfcrypt/wc_encrypt.h \ - wolfssl/wolfcrypt/wc_port.h \ - wolfssl/wolfcrypt/pwdbased.h \ - wolfssl/wolfcrypt/rabbit.h \ - wolfssl/wolfcrypt/chacha.h \ - wolfssl/wolfcrypt/chacha20_poly1305.h \ - wolfssl/wolfcrypt/random.h \ - wolfssl/wolfcrypt/ripemd.h \ - wolfssl/wolfcrypt/rsa.h \ - wolfssl/wolfcrypt/settings.h \ - wolfssl/wolfcrypt/sha256.h \ - wolfssl/wolfcrypt/sha512.h \ - wolfssl/wolfcrypt/sha.h \ - wolfssl/wolfcrypt/signature.h \ - wolfssl/wolfcrypt/blake2.h \ - wolfssl/wolfcrypt/blake2-int.h \ - wolfssl/wolfcrypt/blake2-impl.h \ - wolfssl/wolfcrypt/tfm.h \ - wolfssl/wolfcrypt/srp.h \ - wolfssl/wolfcrypt/idea.h \ - wolfssl/wolfcrypt/types.h \ - wolfssl/wolfcrypt/visibility.h \ - wolfssl/wolfcrypt/logging.h \ - wolfssl/wolfcrypt/memory.h \ - wolfssl/wolfcrypt/mpi_class.h \ - wolfssl/wolfcrypt/mpi_superclass.h \ - wolfssl/wolfcrypt/mem_track.h \ - wolfssl/wolfcrypt/wolfevent.h \ - wolfssl/wolfcrypt/pkcs12.h \ - wolfssl/wolfcrypt/wolfmath.h \ - wolfssl/wolfcrypt/sha3.h \ - wolfssl/wolfcrypt/cpuid.h \ - wolfssl/wolfcrypt/cryptocb.h - -noinst_HEADERS+= \ - wolfssl/wolfcrypt/port/pic32/pic32mz-crypt.h \ - wolfssl/wolfcrypt/port/ti/ti-hash.h \ - wolfssl/wolfcrypt/port/ti/ti-ccm.h \ - wolfssl/wolfcrypt/port/nrf51.h \ - wolfssl/wolfcrypt/port/nxp/ksdk_port.h \ - wolfssl/wolfcrypt/port/xilinx/xil-sha3.h \ - wolfssl/wolfcrypt/port/caam/caam_driver.h \ - wolfssl/wolfcrypt/port/caam/wolfcaam.h \ - wolfssl/wolfcrypt/port/caam/wolfcaam_sha.h \ - wolfssl/wolfcrypt/port/st/stm32.h \ - wolfssl/wolfcrypt/port/st/stsafe.h \ - wolfssl/wolfcrypt/port/Espressif/esp32-crypt.h \ - wolfssl/wolfcrypt/port/arm/cryptoCell.h \ - wolfssl/wolfcrypt/port/Renesas/renesas-tsip-crypt.h - -if BUILD_CRYPTOAUTHLIB -nobase_include_HEADERS+= wolfssl/wolfcrypt/port/atmel/atmel.h -endif - -if BUILD_AFALG -nobase_include_HEADERS+= wolfssl/wolfcrypt/port/af_alg/afalg_hash.h -nobase_include_HEADERS+= wolfssl/wolfcrypt/port/af_alg/wc_afalg.h -endif - -if BUILD_DEVCRYPTO -nobase_include_HEADERS+= wolfssl/wolfcrypt/port/devcrypto/wc_devcrypto.h -endif - -if BUILD_ASYNCCRYPT -nobase_include_HEADERS+= wolfssl/wolfcrypt/async.h -endif - -if BUILD_PKCS11 -nobase_include_HEADERS+= wolfssl/wolfcrypt/wc_pkcs11.h -nobase_include_HEADERS+= wolfssl/wolfcrypt/pkcs11.h -endif - -if BUILD_CAVIUM -nobase_include_HEADERS+= wolfssl/wolfcrypt/port/cavium/cavium_nitrox.h -endif - -if BUILD_OCTEON_SYNC -nobase_include_HEADERS+= wolfssl/wolfcrypt/port/cavium/cavium_octeon_sync.h -endif - -if BUILD_INTEL_QA -nobase_include_HEADERS+= wolfssl/wolfcrypt/port/intel/quickassist.h -nobase_include_HEADERS+= wolfssl/wolfcrypt/port/intel/quickassist_mem.h -endif - -if BUILD_INTEL_QA_SYNC -nobase_include_HEADERS+= wolfssl/wolfcrypt/port/intel/quickassist_sync.h -endif - -if BUILD_SP -nobase_include_HEADERS+= wolfssl/wolfcrypt/sp.h -nobase_include_HEADERS+= wolfssl/wolfcrypt/sp_int.h -endif - -if BUILD_SELFTEST -nobase_include_HEADERS+= wolfssl/wolfcrypt/selftest.h -endif - -if BUILD_FIPS_V2 -nobase_include_HEADERS+= wolfssl/wolfcrypt/fips.h -endif - -if BUILD_FIPS_RAND -nobase_include_HEADERS+= wolfssl/wolfcrypt/fips.h -endif diff --git a/client/wolfssl/wolfssl/wolfcrypt/integer.h b/client/wolfssl/wolfssl/wolfcrypt/integer.h deleted file mode 100644 index 03ea908..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/integer.h +++ /dev/null @@ -1,409 +0,0 @@ -/* integer.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -/* - * Based on public domain LibTomMath 0.38 by Tom St Denis, [email protected], - * http://math.libtomcrypt.com - */ - - -#ifndef WOLF_CRYPT_INTEGER_H -#define WOLF_CRYPT_INTEGER_H - -/* may optionally use fast math instead, not yet supported on all platforms and - may not be faster on all -*/ -#include <wolfssl/wolfcrypt/types.h> /* will set MP_xxBIT if not default */ -#ifdef WOLFSSL_SP_MATH - #include <wolfssl/wolfcrypt/sp_int.h> -#elif defined(USE_FAST_MATH) - #include <wolfssl/wolfcrypt/tfm.h> -#else - -#include <wolfssl/wolfcrypt/random.h> - -#ifndef CHAR_BIT - #include <limits.h> -#endif - -#include <wolfssl/wolfcrypt/mpi_class.h> - - -#ifdef __cplusplus -extern "C" { - -/* C++ compilers don't like assigning void * to mp_digit * */ -#define OPT_CAST(x) (x *) - -#elif defined(_SH3) - -/* SuperH SH3 compiler doesn't like assigning voi* to mp_digit* */ -#define OPT_CAST(x) (x *) - -#else - -/* C on the other hand doesn't care */ -#define OPT_CAST(x) - -#endif /* __cplusplus */ - - -/* detect 64-bit mode if possible */ -#if defined(__x86_64__) && !(defined (_MSC_VER) && defined(__clang__)) - #if !(defined(MP_64BIT) && defined(MP_16BIT) && defined(MP_8BIT)) - #define MP_64BIT - #endif -#endif -/* if intel compiler doesn't provide 128 bit type don't turn on 64bit */ -#if defined(MP_64BIT) && defined(__INTEL_COMPILER) && !defined(HAVE___UINT128_T) - #undef MP_64BIT -#endif - - -/* allow user to define on mp_digit, mp_word, DIGIT_BIT types */ -#ifndef WOLFSSL_BIGINT_TYPES - -/* some default configurations. - * - * A "mp_digit" must be able to hold DIGIT_BIT + 1 bits - * A "mp_word" must be able to hold 2*DIGIT_BIT + 1 bits - * - * At the very least a mp_digit must be able to hold 7 bits - * [any size beyond that is ok provided it doesn't overflow the data type] - */ -#ifdef MP_8BIT - /* 8-bit */ - typedef unsigned char mp_digit; - typedef unsigned short mp_word; - /* don't define DIGIT_BIT, so its calculated below */ -#elif defined(MP_16BIT) - /* 16-bit */ - typedef unsigned int mp_digit; - typedef unsigned long mp_word; - /* don't define DIGIT_BIT, so its calculated below */ -#elif defined(NO_64BIT) - /* 32-bit forced to 16-bit */ - typedef unsigned short mp_digit; - typedef unsigned int mp_word; - #define DIGIT_BIT 12 -#elif defined(MP_64BIT) - /* 64-bit */ - /* for GCC only on supported platforms */ - typedef unsigned long long mp_digit; /* 64 bit type, 128 uses mode(TI) */ - typedef unsigned long mp_word __attribute__ ((mode(TI))); - #define DIGIT_BIT 60 -#else - /* 32-bit default case */ - - #if defined(_MSC_VER) || defined(__BORLANDC__) - typedef unsigned __int64 ulong64; - #else - typedef unsigned long long ulong64; - #endif - - typedef unsigned int mp_digit; /* long could be 64 now, changed TAO */ - typedef ulong64 mp_word; - - #ifdef MP_31BIT - /* this is an extension that uses 31-bit digits */ - #define DIGIT_BIT 31 - #else - /* default case is 28-bit digits, defines MP_28BIT as a handy test macro */ - #define DIGIT_BIT 28 - #define MP_28BIT - #endif -#endif - -#endif /* WOLFSSL_BIGINT_TYPES */ - -/* otherwise the bits per digit is calculated automatically from the size of - a mp_digit */ -#ifndef DIGIT_BIT - #define DIGIT_BIT ((int)((CHAR_BIT * sizeof(mp_digit) - 1))) - /* bits per digit */ -#endif - -#define MP_DIGIT_BIT DIGIT_BIT -#define MP_MASK ((((mp_digit)1)<<((mp_digit)DIGIT_BIT))-((mp_digit)1)) -#define MP_DIGIT_MAX MP_MASK - -/* equalities */ -#define MP_LT -1 /* less than */ -#define MP_EQ 0 /* equal to */ -#define MP_GT 1 /* greater than */ - -#define MP_ZPOS 0 /* positive integer */ -#define MP_NEG 1 /* negative */ - -#define MP_OKAY 0 /* ok result */ -#define MP_MEM -2 /* out of mem */ -#define MP_VAL -3 /* invalid input */ -#define MP_NOT_INF -4 /* point not at infinity */ -#define MP_RANGE MP_NOT_INF - -#define MP_YES 1 /* yes response */ -#define MP_NO 0 /* no response */ - -/* Primality generation flags */ -#define LTM_PRIME_BBS 0x0001 /* BBS style prime */ -#define LTM_PRIME_SAFE 0x0002 /* Safe prime (p-1)/2 == prime */ -#define LTM_PRIME_2MSB_ON 0x0008 /* force 2nd MSB to 1 */ - -typedef int mp_err; - -/* define this to use lower memory usage routines (exptmods mostly) */ -#define MP_LOW_MEM - -/* default precision */ -#ifndef MP_PREC - #ifndef MP_LOW_MEM - #define MP_PREC 32 /* default digits of precision */ - #else - #define MP_PREC 1 /* default digits of precision */ - #endif -#endif - -/* size of comba arrays, should be at least 2 * 2**(BITS_PER_WORD - - BITS_PER_DIGIT*2) */ -#define MP_WARRAY ((mp_word)1 << (sizeof(mp_word) * CHAR_BIT - 2 * DIGIT_BIT + 1)) - -#ifdef HAVE_WOLF_BIGINT - /* raw big integer */ - typedef struct WC_BIGINT { - byte* buf; - word32 len; - void* heap; - } WC_BIGINT; - #define WOLF_BIGINT_DEFINED -#endif - -/* the mp_int structure */ -typedef struct mp_int { - int used, alloc, sign; - mp_digit *dp; - -#ifdef HAVE_WOLF_BIGINT - struct WC_BIGINT raw; /* unsigned binary (big endian) */ -#endif -} mp_int; - -/* wolf big int and common functions */ -#include <wolfssl/wolfcrypt/wolfmath.h> - - -/* callback for mp_prime_random, should fill dst with random bytes and return - how many read [up to len] */ -typedef int ltm_prime_callback(unsigned char *dst, int len, void *dat); - - -#define USED(m) ((m)->used) -#define DIGIT(m,k) ((m)->dp[(k)]) -#define SIGN(m) ((m)->sign) - - -/* ---> Basic Manipulations <--- */ -#define mp_iszero(a) (((a)->used == 0) ? MP_YES : MP_NO) -#define mp_isone(a) \ - (((((a)->used == 1)) && ((a)->dp[0] == 1u)) ? MP_YES : MP_NO) -#define mp_iseven(a) \ - (((a)->used > 0 && (((a)->dp[0] & 1u) == 0u)) ? MP_YES : MP_NO) -#define mp_isodd(a) \ - (((a)->used > 0 && (((a)->dp[0] & 1u) == 1u)) ? MP_YES : MP_NO) -#define mp_isneg(a) (((a)->sign != MP_ZPOS) ? MP_YES : MP_NO) -#define mp_isword(a, w) \ - ((((a)->used == 1) && ((a)->dp[0] == w)) || ((w == 0) && ((a)->used == 0)) \ - ? MP_YES : MP_NO) - -/* number of primes */ -#ifdef MP_8BIT - #define PRIME_SIZE 31 -#else - #define PRIME_SIZE 256 -#endif - -#ifndef MAX_INVMOD_SZ - #if defined(WOLFSSL_MYSQL_COMPATIBLE) - #define MAX_INVMOD_SZ 8192 - #else - #define MAX_INVMOD_SZ 4096 - #endif -#endif - -#define mp_prime_random(a, t, size, bbs, cb, dat) \ - mp_prime_random_ex(a, t, ((size) * 8) + 1, (bbs==1)?LTM_PRIME_BBS:0, cb, dat) - -#define mp_read_raw(mp, str, len) mp_read_signed_bin((mp), (str), (len)) -#define mp_raw_size(mp) mp_signed_bin_size(mp) -#define mp_toraw(mp, str) mp_to_signed_bin((mp), (str)) -#define mp_read_mag(mp, str, len) mp_read_unsigned_bin((mp), (str), (len)) -#define mp_mag_size(mp) mp_unsigned_bin_size(mp) -#define mp_tomag(mp, str) mp_to_unsigned_bin((mp), (str)) - -#define MP_RADIX_BIN 2 -#define MP_RADIX_OCT 8 -#define MP_RADIX_DEC 10 -#define MP_RADIX_HEX 16 -#define MP_RADIX_MAX 64 - -#define mp_tobinary(M, S) mp_toradix((M), (S), MP_RADIX_BIN) -#define mp_tooctal(M, S) mp_toradix((M), (S), MP_RADIX_OCT) -#define mp_todecimal(M, S) mp_toradix((M), (S), MP_RADIX_DEC) -#define mp_tohex(M, S) mp_toradix((M), (S), MP_RADIX_HEX) - -#define s_mp_mul(a, b, c) s_mp_mul_digs(a, b, c, (a)->used + (b)->used + 1) - -#if defined(HAVE_ECC) || defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY) || \ - defined(WOLFSSL_DEBUG_MATH) || defined(DEBUG_WOLFSSL) -extern const char *mp_s_rmap; -#endif - -/* 6 functions needed by Rsa */ -MP_API int mp_init (mp_int * a); -MP_API void mp_clear (mp_int * a); -MP_API void mp_free (mp_int * a); -MP_API void mp_forcezero(mp_int * a); -MP_API int mp_unsigned_bin_size(mp_int * a); -MP_API int mp_read_unsigned_bin (mp_int * a, const unsigned char *b, int c); -MP_API int mp_to_unsigned_bin_at_pos(int x, mp_int *t, unsigned char *b); -MP_API int mp_to_unsigned_bin (mp_int * a, unsigned char *b); -MP_API int mp_to_unsigned_bin_len(mp_int * a, unsigned char *b, int c); -MP_API int mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y); -MP_API int mp_exptmod_ex (mp_int * G, mp_int * X, int digits, mp_int * P, - mp_int * Y); -/* end functions needed by Rsa */ - -/* functions added to support above needed, removed TOOM and KARATSUBA */ -MP_API int mp_count_bits (mp_int * a); -MP_API int mp_leading_bit (mp_int * a); -MP_API int mp_init_copy (mp_int * a, mp_int * b); -MP_API int mp_copy (mp_int * a, mp_int * b); -MP_API int mp_grow (mp_int * a, int size); -MP_API int mp_div_2d (mp_int * a, int b, mp_int * c, mp_int * d); -MP_API void mp_zero (mp_int * a); -MP_API void mp_clamp (mp_int * a); -MP_API void mp_exch (mp_int * a, mp_int * b); -MP_API void mp_rshd (mp_int * a, int b); -MP_API void mp_rshb (mp_int * a, int b); -MP_API int mp_mod_2d (mp_int * a, int b, mp_int * c); -MP_API int mp_mul_2d (mp_int * a, int b, mp_int * c); -MP_API int mp_lshd (mp_int * a, int b); -MP_API int mp_abs (mp_int * a, mp_int * b); -MP_API int mp_invmod (mp_int * a, mp_int * b, mp_int * c); -int fast_mp_invmod (mp_int * a, mp_int * b, mp_int * c); -MP_API int mp_invmod_slow (mp_int * a, mp_int * b, mp_int * c); -MP_API int mp_cmp_mag (mp_int * a, mp_int * b); -MP_API int mp_cmp (mp_int * a, mp_int * b); -MP_API int mp_cmp_d(mp_int * a, mp_digit b); -MP_API int mp_set (mp_int * a, mp_digit b); -MP_API int mp_is_bit_set (mp_int * a, mp_digit b); -MP_API int mp_mod (mp_int * a, mp_int * b, mp_int * c); -MP_API int mp_div(mp_int * a, mp_int * b, mp_int * c, mp_int * d); -MP_API int mp_div_2(mp_int * a, mp_int * b); -MP_API int mp_add (mp_int * a, mp_int * b, mp_int * c); -int s_mp_add (mp_int * a, mp_int * b, mp_int * c); -int s_mp_sub (mp_int * a, mp_int * b, mp_int * c); -MP_API int mp_sub (mp_int * a, mp_int * b, mp_int * c); -MP_API int mp_reduce_is_2k_l(mp_int *a); -MP_API int mp_reduce_is_2k(mp_int *a); -MP_API int mp_dr_is_modulus(mp_int *a); -MP_API int mp_exptmod_fast (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, - int); -MP_API int mp_exptmod_base_2 (mp_int * X, mp_int * P, mp_int * Y); -#define mp_exptmod_nct(G,X,P,Y) mp_exptmod_fast(G,X,P,Y,0) -MP_API int mp_montgomery_setup (mp_int * n, mp_digit * rho); -int fast_mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho); -MP_API int mp_montgomery_reduce (mp_int * x, mp_int * n, mp_digit rho); -MP_API void mp_dr_setup(mp_int *a, mp_digit *d); -MP_API int mp_dr_reduce (mp_int * x, mp_int * n, mp_digit k); -MP_API int mp_reduce_2k(mp_int *a, mp_int *n, mp_digit d); -int fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs); -int s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs); -MP_API int mp_reduce_2k_setup_l(mp_int *a, mp_int *d); -MP_API int mp_reduce_2k_l(mp_int *a, mp_int *n, mp_int *d); -MP_API int mp_reduce (mp_int * x, mp_int * m, mp_int * mu); -MP_API int mp_reduce_setup (mp_int * a, mp_int * b); -int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y, int redmode); -MP_API int mp_montgomery_calc_normalization (mp_int * a, mp_int * b); -int s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs); -int s_mp_sqr (mp_int * a, mp_int * b); -int fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs); -int fast_s_mp_sqr (mp_int * a, mp_int * b); -MP_API int mp_init_size (mp_int * a, int size); -MP_API int mp_div_3 (mp_int * a, mp_int *c, mp_digit * d); -MP_API int mp_mul_2(mp_int * a, mp_int * b); -MP_API int mp_mul (mp_int * a, mp_int * b, mp_int * c); -MP_API int mp_sqr (mp_int * a, mp_int * b); -MP_API int mp_mulmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d); -MP_API int mp_submod (mp_int* a, mp_int* b, mp_int* c, mp_int* d); -MP_API int mp_addmod (mp_int* a, mp_int* b, mp_int* c, mp_int* d); -MP_API int mp_mul_d (mp_int * a, mp_digit b, mp_int * c); -MP_API int mp_2expt (mp_int * a, int b); -MP_API int mp_set_bit (mp_int * a, int b); -MP_API int mp_reduce_2k_setup(mp_int *a, mp_digit *d); -MP_API int mp_add_d (mp_int* a, mp_digit b, mp_int* c); -MP_API int mp_set_int (mp_int * a, unsigned long b); -MP_API int mp_sub_d (mp_int * a, mp_digit b, mp_int * c); -/* end support added functions */ - -/* added */ -MP_API int mp_init_multi(mp_int* a, mp_int* b, mp_int* c, mp_int* d, mp_int* e, - mp_int* f); -MP_API int mp_toradix (mp_int *a, char *str, int radix); -MP_API int mp_radix_size (mp_int * a, int radix, int *size); - -#ifdef WOLFSSL_DEBUG_MATH - MP_API void mp_dump(const char* desc, mp_int* a, byte verbose); -#else - #define mp_dump(desc, a, verbose) -#endif - -#if defined(HAVE_ECC) || defined(WOLFSSL_KEY_GEN) || !defined(NO_RSA) || \ - !defined(NO_DSA) || !defined(NO_DH) - MP_API int mp_sqrmod(mp_int* a, mp_int* b, mp_int* c); -#endif -#if !defined(NO_DSA) || defined(HAVE_ECC) - MP_API int mp_read_radix(mp_int* a, const char* str, int radix); -#endif - -#if defined(WOLFSSL_KEY_GEN) || !defined(NO_RSA) || !defined(NO_DSA) || !defined(NO_DH) - MP_API int mp_prime_is_prime (mp_int * a, int t, int *result); - MP_API int mp_prime_is_prime_ex (mp_int * a, int t, int *result, WC_RNG*); -#endif /* WOLFSSL_KEY_GEN NO_RSA NO_DSA NO_DH */ -#ifdef WOLFSSL_KEY_GEN - MP_API int mp_gcd (mp_int * a, mp_int * b, mp_int * c); - MP_API int mp_lcm (mp_int * a, mp_int * b, mp_int * c); - MP_API int mp_rand_prime(mp_int* N, int len, WC_RNG* rng, void* heap); -#endif - -MP_API int mp_cnt_lsb(mp_int *a); -MP_API int mp_mod_d(mp_int* a, mp_digit b, mp_digit* c); - - -#ifdef __cplusplus - } -#endif - - -#endif /* USE_FAST_MATH */ - -#endif /* WOLF_CRYPT_INTEGER_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/logging.h b/client/wolfssl/wolfssl/wolfcrypt/logging.h deleted file mode 100644 index 3dcd7de..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/logging.h +++ /dev/null @@ -1,194 +0,0 @@ -/* logging.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/logging.h -*/ - - -/* submitted by eof */ - - -#ifndef WOLFSSL_LOGGING_H -#define WOLFSSL_LOGGING_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef __cplusplus - extern "C" { -#endif - - -enum wc_LogLevels { - ERROR_LOG = 0, - INFO_LOG, - ENTER_LOG, - LEAVE_LOG, - OTHER_LOG -}; - -#ifdef WOLFSSL_FUNC_TIME -/* WARNING: This code is only to be used for debugging performance. - * The code is not thread-safe. - * Do not use WOLFSSL_FUNC_TIME in production code. - */ -enum wc_FuncNum { - WC_FUNC_HELLO_REQUEST_SEND = 0, - WC_FUNC_HELLO_REQUEST_DO, - WC_FUNC_CLIENT_HELLO_SEND, - WC_FUNC_CLIENT_HELLO_DO, - WC_FUNC_SERVER_HELLO_SEND, - WC_FUNC_SERVER_HELLO_DO, - WC_FUNC_ENCRYPTED_EXTENSIONS_SEND, - WC_FUNC_ENCRYPTED_EXTENSIONS_DO, - WC_FUNC_CERTIFICATE_REQUEST_SEND, - WC_FUNC_CERTIFICATE_REQUEST_DO, - WC_FUNC_CERTIFICATE_SEND, - WC_FUNC_CERTIFICATE_DO, - WC_FUNC_CERTIFICATE_VERIFY_SEND, - WC_FUNC_CERTIFICATE_VERIFY_DO, - WC_FUNC_FINISHED_SEND, - WC_FUNC_FINISHED_DO, - WC_FUNC_KEY_UPDATE_SEND, - WC_FUNC_KEY_UPDATE_DO, - WC_FUNC_EARLY_DATA_SEND, - WC_FUNC_EARLY_DATA_DO, - WC_FUNC_NEW_SESSION_TICKET_SEND, - WC_FUNC_NEW_SESSION_TICKET_DO, - WC_FUNC_SERVER_HELLO_DONE_SEND, - WC_FUNC_SERVER_HELLO_DONE_DO, - WC_FUNC_TICKET_SEND, - WC_FUNC_TICKET_DO, - WC_FUNC_CLIENT_KEY_EXCHANGE_SEND, - WC_FUNC_CLIENT_KEY_EXCHANGE_DO, - WC_FUNC_CERTIFICATE_STATUS_SEND, - WC_FUNC_CERTIFICATE_STATUS_DO, - WC_FUNC_SERVER_KEY_EXCHANGE_SEND, - WC_FUNC_SERVER_KEY_EXCHANGE_DO, - WC_FUNC_END_OF_EARLY_DATA_SEND, - WC_FUNC_END_OF_EARLY_DATA_DO, - WC_FUNC_COUNT -}; -#endif - -typedef void (*wolfSSL_Logging_cb)(const int logLevel, - const char *const logMessage); - -WOLFSSL_API int wolfSSL_SetLoggingCb(wolfSSL_Logging_cb log_function); -WOLFSSL_API wolfSSL_Logging_cb wolfSSL_GetLoggingCb(void); - -/* turn logging on, only if compiled in */ -WOLFSSL_API int wolfSSL_Debugging_ON(void); -/* turn logging off */ -WOLFSSL_API void wolfSSL_Debugging_OFF(void); - - -#if defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE) - WOLFSSL_LOCAL int wc_LoggingInit(void); - WOLFSSL_LOCAL int wc_LoggingCleanup(void); - WOLFSSL_LOCAL int wc_AddErrorNode(int error, int line, char* buf, - char* file); - WOLFSSL_LOCAL int wc_PeekErrorNode(int index, const char **file, - const char **reason, int *line); - WOLFSSL_LOCAL void wc_RemoveErrorNode(int index); - WOLFSSL_LOCAL void wc_ClearErrorNodes(void); - WOLFSSL_LOCAL int wc_PullErrorNode(const char **file, const char **reason, - int *line); - WOLFSSL_API int wc_SetLoggingHeap(void* h); - WOLFSSL_API int wc_ERR_remove_state(void); - #if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM) - WOLFSSL_API void wc_ERR_print_errors_fp(XFILE fp); - WOLFSSL_API void wc_ERR_print_errors_cb(int (*cb)(const char *str, - size_t len, void *u), void *u); - #endif -#endif /* OPENSSL_EXTRA || DEBUG_WOLFSSL_VERBOSE */ - -#ifdef WOLFSSL_FUNC_TIME - /* WARNING: This code is only to be used for debugging performance. - * The code is not thread-safe. - * Do not use WOLFSSL_FUNC_TIME in production code. - */ - WOLFSSL_API void WOLFSSL_START(int funcNum); - WOLFSSL_API void WOLFSSL_END(int funcNum); - WOLFSSL_API void WOLFSSL_TIME(int count); -#else - #define WOLFSSL_START(n) - #define WOLFSSL_END(n) - #define WOLFSSL_TIME(n) -#endif - -#if defined(DEBUG_WOLFSSL) && !defined(WOLFSSL_DEBUG_ERRORS_ONLY) - #if defined(_WIN32) - #if defined(INTIME_RTOS) - #define __func__ NULL - #else - #define __func__ __FUNCTION__ - #endif - #endif - - /* a is prepended to m and b is appended, creating a log msg a + m + b */ - #define WOLFSSL_LOG_CAT(a, m, b) #a " " m " " #b - - WOLFSSL_API void WOLFSSL_ENTER(const char* msg); - WOLFSSL_API void WOLFSSL_LEAVE(const char* msg, int ret); - #define WOLFSSL_STUB(m) \ - WOLFSSL_MSG(WOLFSSL_LOG_CAT(wolfSSL Stub, m, not implemented)) - WOLFSSL_API int WOLFSSL_IS_DEBUG_ON(void); - - WOLFSSL_API void WOLFSSL_MSG(const char* msg); - WOLFSSL_API void WOLFSSL_BUFFER(const byte* buffer, word32 length); - -#else - - #define WOLFSSL_ENTER(m) - #define WOLFSSL_LEAVE(m, r) - #define WOLFSSL_STUB(m) - #define WOLFSSL_IS_DEBUG_ON() 0 - - #define WOLFSSL_MSG(m) - #define WOLFSSL_BUFFER(b, l) - -#endif /* DEBUG_WOLFSSL && !WOLFSSL_DEBUG_ERRORS_ONLY */ - -#if defined(DEBUG_WOLFSSL) || defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) ||\ - defined(WOLFSSL_HAPROXY) || defined(OPENSSL_EXTRA) - - #if (!defined(NO_ERROR_QUEUE) && defined(OPENSSL_EXTRA) && !defined(_WIN32))\ - || defined(DEBUG_WOLFSSL_VERBOSE) - WOLFSSL_API void WOLFSSL_ERROR_LINE(int err, const char* func, unsigned int line, - const char* file, void* ctx); - #define WOLFSSL_ERROR(x) \ - WOLFSSL_ERROR_LINE((x), __func__, __LINE__, __FILE__, NULL) - #else - WOLFSSL_API void WOLFSSL_ERROR(int err); - #endif - WOLFSSL_API void WOLFSSL_ERROR_MSG(const char* msg); - -#else - #define WOLFSSL_ERROR(e) - #define WOLFSSL_ERROR_MSG(m) -#endif - -#ifdef __cplusplus -} -#endif -#endif /* WOLFSSL_LOGGING_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/md2.h b/client/wolfssl/wolfssl/wolfcrypt/md2.h deleted file mode 100644 index 565385e..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/md2.h +++ /dev/null @@ -1,69 +0,0 @@ -/* md2.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/md2.h -*/ - - -#ifndef WOLF_CRYPT_MD2_H -#define WOLF_CRYPT_MD2_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef WOLFSSL_MD2 - -#ifdef __cplusplus - extern "C" { -#endif - -/* in bytes */ -enum { - MD2 = WC_HASH_TYPE_MD2, - MD2_BLOCK_SIZE = 16, - MD2_DIGEST_SIZE = 16, - MD2_PAD_SIZE = 16, - MD2_X_SIZE = 48 -}; - - -/* Md2 digest */ -typedef struct Md2 { - word32 count; /* bytes % PAD_SIZE */ - byte X[MD2_X_SIZE]; - byte C[MD2_BLOCK_SIZE]; - byte buffer[MD2_BLOCK_SIZE]; -} Md2; - - -WOLFSSL_API void wc_InitMd2(Md2*); -WOLFSSL_API void wc_Md2Update(Md2*, const byte*, word32); -WOLFSSL_API void wc_Md2Final(Md2*, byte*); -WOLFSSL_API int wc_Md2Hash(const byte*, word32, byte*); - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_MD2 */ -#endif /* WOLF_CRYPT_MD2_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/md4.h b/client/wolfssl/wolfssl/wolfcrypt/md4.h deleted file mode 100644 index 1344f8b..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/md4.h +++ /dev/null @@ -1,67 +0,0 @@ -/* md4.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/md4.h -*/ - -#ifndef WOLF_CRYPT_MD4_H -#define WOLF_CRYPT_MD4_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifndef NO_MD4 - -#ifdef __cplusplus - extern "C" { -#endif - -/* in bytes */ -enum { - MD4 = WC_HASH_TYPE_MD4, - MD4_BLOCK_SIZE = 64, - MD4_DIGEST_SIZE = 16, - MD4_PAD_SIZE = 56 -}; - - -/* MD4 digest */ -typedef struct Md4 { - word32 buffLen; /* in bytes */ - word32 loLen; /* length in bytes */ - word32 hiLen; /* length in bytes */ - word32 digest[MD4_DIGEST_SIZE / sizeof(word32)]; - word32 buffer[MD4_BLOCK_SIZE / sizeof(word32)]; -} Md4; - - -WOLFSSL_API void wc_InitMd4(Md4*); -WOLFSSL_API void wc_Md4Update(Md4*, const byte*, word32); -WOLFSSL_API void wc_Md4Final(Md4*, byte*); - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* NO_MD4 */ -#endif /* WOLF_CRYPT_MD4_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/md5.h b/client/wolfssl/wolfssl/wolfcrypt/md5.h deleted file mode 100644 index e2ee13c..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/md5.h +++ /dev/null @@ -1,130 +0,0 @@ -/* md5.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/md5.h -*/ - - -#ifndef WOLF_CRYPT_MD5_H -#define WOLF_CRYPT_MD5_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifndef NO_MD5 - -#ifdef HAVE_FIPS - #define wc_InitMd5 InitMd5 - #define wc_Md5Update Md5Update - #define wc_Md5Final Md5Final - #define wc_Md5Hash Md5Hash -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -#ifndef NO_OLD_WC_NAMES - #define Md5 wc_Md5 - #define MD5 WC_MD5 - #define MD5_BLOCK_SIZE WC_MD5_BLOCK_SIZE - #define MD5_DIGEST_SIZE WC_MD5_DIGEST_SIZE - #define WC_MD5_PAD_SIZE WC_MD5_PAD_SIZE -#endif - -/* in bytes */ -enum { - WC_MD5 = WC_HASH_TYPE_MD5, - WC_MD5_BLOCK_SIZE = 64, - WC_MD5_DIGEST_SIZE = 16, - WC_MD5_PAD_SIZE = 56 -}; - - -#ifdef WOLFSSL_MICROCHIP_PIC32MZ - #include <wolfssl/wolfcrypt/port/pic32/pic32mz-crypt.h> -#endif -#ifdef STM32_HASH - #include <wolfssl/wolfcrypt/port/st/stm32.h> -#endif -#ifdef WOLFSSL_ASYNC_CRYPT - #include <wolfssl/wolfcrypt/async.h> -#endif - -#ifdef WOLFSSL_TI_HASH - #include "wolfssl/wolfcrypt/port/ti/ti-hash.h" -#elif defined(WOLFSSL_IMX6_CAAM) - #include "wolfssl/wolfcrypt/port/caam/wolfcaam_sha.h" -#else - -/* MD5 digest */ -typedef struct wc_Md5 { -#ifdef STM32_HASH - STM32_HASH_Context stmCtx; -#else - word32 buffLen; /* in bytes */ - word32 loLen; /* length in bytes */ - word32 hiLen; /* length in bytes */ - word32 buffer[WC_MD5_BLOCK_SIZE / sizeof(word32)]; -#ifdef WOLFSSL_PIC32MZ_HASH - word32 digest[PIC32_DIGEST_SIZE / sizeof(word32)]; -#else - word32 digest[WC_MD5_DIGEST_SIZE / sizeof(word32)]; -#endif - void* heap; -#ifdef WOLFSSL_PIC32MZ_HASH - hashUpdCache cache; /* cache for updates */ -#endif -#endif /* STM32_HASH */ -#ifdef WOLFSSL_ASYNC_CRYPT - WC_ASYNC_DEV asyncDev; -#endif /* WOLFSSL_ASYNC_CRYPT */ -#if defined(WOLFSSL_HASH_FLAGS) || defined(WOLF_CRYPTO_CB) - word32 flags; /* enum wc_HashFlags in hash.h */ -#endif -} wc_Md5; - -#endif /* WOLFSSL_TI_HASH */ - -WOLFSSL_API int wc_InitMd5(wc_Md5*); -WOLFSSL_API int wc_InitMd5_ex(wc_Md5*, void*, int); -WOLFSSL_API int wc_Md5Update(wc_Md5*, const byte*, word32); -WOLFSSL_API int wc_Md5Final(wc_Md5*, byte*); -WOLFSSL_API void wc_Md5Free(wc_Md5*); - -WOLFSSL_API int wc_Md5GetHash(wc_Md5*, byte*); -WOLFSSL_API int wc_Md5Copy(wc_Md5*, wc_Md5*); - -#ifdef WOLFSSL_PIC32MZ_HASH -WOLFSSL_API void wc_Md5SizeSet(wc_Md5* md5, word32 len); -#endif - -#if defined(WOLFSSL_HASH_FLAGS) || defined(WOLF_CRYPTO_CB) - WOLFSSL_API int wc_Md5SetFlags(wc_Md5* md5, word32 flags); - WOLFSSL_API int wc_Md5GetFlags(wc_Md5* md5, word32* flags); -#endif - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* NO_MD5 */ -#endif /* WOLF_CRYPT_MD5_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/mem_track.h b/client/wolfssl/wolfssl/wolfcrypt/mem_track.h deleted file mode 100644 index d33e90e..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/mem_track.h +++ /dev/null @@ -1,401 +0,0 @@ -/* mem_track.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -/* The memory tracker overrides the wolfSSL memory callback system and uses a - * static to track the total, peak and currently allocated bytes. - * - * If you are already using the memory callbacks then enabling this will - * override the memory callbacks and prevent your memory callbacks from - * working. This assumes malloc() and free() are available. Feel free to - * customize this for your needs. - - * The enable this feature define the following: - * #define USE_WOLFSSL_MEMORY - * #define WOLFSSL_TRACK_MEMORY - * - * On startup call: - * InitMemoryTracker(); - * - * When ready to dump the memory report call: - * ShowMemoryTracker(); - * - * Report example: - * total Allocs = 228 - * total Bytes = 93442 - * peak Bytes = 8840 - * current Bytes = 0 - * - * - * You can also: - * #define WOLFSSL_DEBUG_MEMORY - * - * To print every alloc/free along with the function and line number. - * Example output: - * Alloc: 0x7fa14a500010 -> 120 at wc_InitRng:496 - * Free: 0x7fa14a500010 -> 120 at wc_FreeRng:606 - */ - - -#ifndef WOLFSSL_MEM_TRACK_H -#define WOLFSSL_MEM_TRACK_H - -#if defined(USE_WOLFSSL_MEMORY) && !defined(WOLFSSL_STATIC_MEMORY) - - #include "wolfssl/wolfcrypt/logging.h" - - #if defined(WOLFSSL_TRACK_MEMORY) - #define DO_MEM_STATS - #if defined(__linux__) || defined(__MACH__) - #define DO_MEM_LIST - #endif - #endif - - - typedef struct memoryStats { - long totalAllocs; /* number of allocations */ - long totalDeallocs; /* number of deallocations */ - long totalBytes; /* total number of bytes allocated */ - long peakBytes; /* concurrent max bytes */ - long currentBytes; /* total current bytes in use */ - } memoryStats; - - typedef struct memHint { - size_t thisSize; /* size of this memory */ - - #ifdef DO_MEM_LIST - struct memHint* next; - struct memHint* prev; - #ifdef WOLFSSL_DEBUG_MEMORY - const char* func; - unsigned int line; - #endif - #endif - void* thisMemory; /* actual memory for user */ - } memHint; - - typedef struct memoryTrack { - union { - memHint hint; - byte alignit[sizeof(memHint) + ((16-1) & ~(16-1))]; /* make sure we have strong alignment */ - } u; - } memoryTrack; - -#ifdef DO_MEM_LIST - /* track allocations and report at end */ - typedef struct memoryList { - memHint* head; - memHint* tail; - word32 count; - } memoryList; -#endif - -#if defined(WOLFSSL_TRACK_MEMORY) - static memoryStats ourMemStats; - - #ifdef DO_MEM_LIST - #include <pthread.h> - static memoryList ourMemList; - static pthread_mutex_t memLock = PTHREAD_MUTEX_INITIALIZER; - #endif -#endif - - - /* if defined to not using inline then declare function prototypes */ - #ifdef NO_INLINE - #define WC_STATIC - #ifdef WOLFSSL_DEBUG_MEMORY - WOLFSSL_LOCAL void* TrackMalloc(size_t sz, const char* func, unsigned int line); - WOLFSSL_LOCAL void TrackFree(void* ptr, const char* func, unsigned int line); - WOLFSSL_LOCAL void* TrackRealloc(void* ptr, size_t sz, const char* func, unsigned int line); - #else - WOLFSSL_LOCAL void* TrackMalloc(size_t sz); - WOLFSSL_LOCAL void TrackFree(void* ptr); - WOLFSSL_LOCAL void* TrackRealloc(void* ptr, size_t sz); - #endif - WOLFSSL_LOCAL int InitMemoryTracker(void); - WOLFSSL_LOCAL void ShowMemoryTracker(void); - #else - #define WC_STATIC static - #endif - -#ifdef WOLFSSL_DEBUG_MEMORY - WC_STATIC WC_INLINE void* TrackMalloc(size_t sz, const char* func, unsigned int line) -#else - WC_STATIC WC_INLINE void* TrackMalloc(size_t sz) -#endif - { - memoryTrack* mt; - memHint* header; - - if (sz == 0) - return NULL; - - mt = (memoryTrack*)malloc(sizeof(memoryTrack) + sz); - if (mt == NULL) - return NULL; - - header = &mt->u.hint; - header->thisSize = sz; - header->thisMemory = (byte*)mt + sizeof(memoryTrack); - - #ifdef WOLFSSL_DEBUG_MEMORY - #ifdef WOLFSSL_DEBUG_MEMORY_PRINT - printf("Alloc: %p -> %u at %s:%d\n", header->thisMemory, (word32)sz, func, line); - #else - (void)func; - (void)line; - #endif - #endif - - #ifdef DO_MEM_STATS - ourMemStats.totalAllocs++; - ourMemStats.totalBytes += sz; - ourMemStats.currentBytes += sz; - if (ourMemStats.currentBytes > ourMemStats.peakBytes) - ourMemStats.peakBytes = ourMemStats.currentBytes; - #endif - #ifdef DO_MEM_LIST - if (pthread_mutex_lock(&memLock) == 0) { - #ifdef WOLFSSL_DEBUG_MEMORY - header->func = func; - header->line = line; - #endif - - /* Setup event */ - header->next = NULL; - if (ourMemList.tail == NULL) { - ourMemList.head = header; - header->prev = NULL; - } - else { - ourMemList.tail->next = header; - header->prev = ourMemList.tail; - } - ourMemList.tail = header; /* add to the end either way */ - ourMemList.count++; - - pthread_mutex_unlock(&memLock); - } - #endif - - return header->thisMemory; - } - - -#ifdef WOLFSSL_DEBUG_MEMORY - WC_STATIC WC_INLINE void TrackFree(void* ptr, const char* func, unsigned int line) -#else - WC_STATIC WC_INLINE void TrackFree(void* ptr) -#endif - { - memoryTrack* mt; - memHint* header; - size_t sz; - - if (ptr == NULL) { - return; - } - - mt = (memoryTrack*)((byte*)ptr - sizeof(memoryTrack)); - header = &mt->u.hint; - sz = header->thisSize; - - #ifdef DO_MEM_LIST - if (pthread_mutex_lock(&memLock) == 0) - { - #endif - - #ifdef DO_MEM_STATS - ourMemStats.currentBytes -= header->thisSize; - ourMemStats.totalDeallocs++; - #endif - - #ifdef DO_MEM_LIST - if (header == ourMemList.head && header == ourMemList.tail) { - ourMemList.head = NULL; - ourMemList.tail = NULL; - } - else if (header == ourMemList.head) { - ourMemList.head = header->next; - ourMemList.head->prev = NULL; - } - else if (header == ourMemList.tail) { - ourMemList.tail = header->prev; - ourMemList.tail->next = NULL; - } - else { - memHint* next = header->next; - memHint* prev = header->prev; - if (next) - next->prev = prev; - if (prev) - prev->next = next; - } - ourMemList.count--; - - pthread_mutex_unlock(&memLock); - } - #endif - -#ifdef WOLFSSL_DEBUG_MEMORY -#ifdef WOLFSSL_DEBUG_MEMORY_PRINT - printf("Free: %p -> %u at %s:%d\n", ptr, (word32)sz, func, line); -#else - (void)func; - (void)line; -#endif -#endif - (void)sz; - - free(mt); - } - - -#ifdef WOLFSSL_DEBUG_MEMORY - WC_STATIC WC_INLINE void* TrackRealloc(void* ptr, size_t sz, const char* func, unsigned int line) -#else - WC_STATIC WC_INLINE void* TrackRealloc(void* ptr, size_t sz) -#endif - { - #ifdef WOLFSSL_DEBUG_MEMORY - void* ret = TrackMalloc(sz, func, line); - #else - void* ret = TrackMalloc(sz); - #endif - - if (ptr) { - /* if realloc is bigger, don't overread old ptr */ - memoryTrack* mt; - memHint* header; - - mt = (memoryTrack*)((byte*)ptr - sizeof(memoryTrack)); - header = &mt->u.hint; - - if (header->thisSize < sz) - sz = header->thisSize; - } - - if (ret && ptr) - XMEMCPY(ret, ptr, sz); - - if (ret) { - #ifdef WOLFSSL_DEBUG_MEMORY - TrackFree(ptr, func, line); - #else - TrackFree(ptr); - #endif - } - - return ret; - } - -#ifdef WOLFSSL_TRACK_MEMORY - static wolfSSL_Malloc_cb mfDefault = NULL; - static wolfSSL_Free_cb ffDefault = NULL; - static wolfSSL_Realloc_cb rfDefault = NULL; - - WC_STATIC WC_INLINE int InitMemoryTracker(void) - { - int ret; - - ret = wolfSSL_GetAllocators(&mfDefault, &ffDefault, &rfDefault); - if (ret < 0) { - printf("wolfSSL GetAllocators failed to get the defaults\n"); - } - ret = wolfSSL_SetAllocators(TrackMalloc, TrackFree, TrackRealloc); - if (ret < 0) { - printf("wolfSSL SetAllocators failed for track memory\n"); - return ret; - } - - #ifdef DO_MEM_LIST - if (pthread_mutex_lock(&memLock) == 0) - { - #endif - - #ifdef DO_MEM_STATS - ourMemStats.totalAllocs = 0; - ourMemStats.totalDeallocs = 0; - ourMemStats.totalBytes = 0; - ourMemStats.peakBytes = 0; - ourMemStats.currentBytes = 0; - #endif - - #ifdef DO_MEM_LIST - XMEMSET(&ourMemList, 0, sizeof(ourMemList)); - - pthread_mutex_unlock(&memLock); - } - #endif - - return ret; - } - - WC_STATIC WC_INLINE void ShowMemoryTracker(void) - { - #ifdef DO_MEM_LIST - if (pthread_mutex_lock(&memLock) == 0) - { - #endif - - #ifdef DO_MEM_STATS - printf("total Allocs = %9ld\n", ourMemStats.totalAllocs); - printf("total Deallocs = %9ld\n", ourMemStats.totalDeallocs); - printf("total Bytes = %9ld\n", ourMemStats.totalBytes); - printf("peak Bytes = %9ld\n", ourMemStats.peakBytes); - printf("current Bytes = %9ld\n", ourMemStats.currentBytes); - #endif - - #ifdef DO_MEM_LIST - if (ourMemList.count > 0) { - /* print list of allocations */ - memHint* header; - for (header = ourMemList.head; header != NULL; header = header->next) { - printf("Leak: Ptr %p, Size %u" - #ifdef WOLFSSL_DEBUG_MEMORY - ", Func %s, Line %d" - #endif - "\n", - (byte*)header + sizeof(memHint), (unsigned int)header->thisSize - #ifdef WOLFSSL_DEBUG_MEMORY - , header->func, header->line - #endif - ); - } - } - - pthread_mutex_unlock(&memLock); - } - #endif - } - - WC_STATIC WC_INLINE int CleanupMemoryTracker(void) - { - /* restore default allocators */ - return wolfSSL_SetAllocators(mfDefault, ffDefault, rfDefault); - } -#endif - -#endif /* USE_WOLFSSL_MEMORY */ - -#endif /* WOLFSSL_MEM_TRACK_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/memory.h b/client/wolfssl/wolfssl/wolfcrypt/memory.h deleted file mode 100644 index 486fd39..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/memory.h +++ /dev/null @@ -1,233 +0,0 @@ -/* memory.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -/* submitted by eof */ - -/*! - \file wolfssl/wolfcrypt/memory.h -*/ - -#ifndef WOLFSSL_MEMORY_H -#define WOLFSSL_MEMORY_H - -#ifndef STRING_USER -#include <stdlib.h> -#endif -#include <wolfssl/wolfcrypt/types.h> - -#ifdef __cplusplus - extern "C" { -#endif - -#ifdef WOLFSSL_FORCE_MALLOC_FAIL_TEST - WOLFSSL_API void wolfSSL_SetMemFailCount(int memFailCount); -#endif - -#ifdef WOLFSSL_STATIC_MEMORY - #ifdef WOLFSSL_DEBUG_MEMORY - typedef void *(*wolfSSL_Malloc_cb)(size_t size, void* heap, int type, const char* func, unsigned int line); - typedef void (*wolfSSL_Free_cb)(void *ptr, void* heap, int type, const char* func, unsigned int line); - typedef void *(*wolfSSL_Realloc_cb)(void *ptr, size_t size, void* heap, int type, const char* func, unsigned int line); - WOLFSSL_API void* wolfSSL_Malloc(size_t size, void* heap, int type, const char* func, unsigned int line); - WOLFSSL_API void wolfSSL_Free(void *ptr, void* heap, int type, const char* func, unsigned int line); - WOLFSSL_API void* wolfSSL_Realloc(void *ptr, size_t size, void* heap, int type, const char* func, unsigned int line); - #else - typedef void *(*wolfSSL_Malloc_cb)(size_t size, void* heap, int type); - typedef void (*wolfSSL_Free_cb)(void *ptr, void* heap, int type); - typedef void *(*wolfSSL_Realloc_cb)(void *ptr, size_t size, void* heap, int type); - WOLFSSL_API void* wolfSSL_Malloc(size_t size, void* heap, int type); - WOLFSSL_API void wolfSSL_Free(void *ptr, void* heap, int type); - WOLFSSL_API void* wolfSSL_Realloc(void *ptr, size_t size, void* heap, int type); - #endif /* WOLFSSL_DEBUG_MEMORY */ -#else - #ifdef WOLFSSL_DEBUG_MEMORY - typedef void *(*wolfSSL_Malloc_cb)(size_t size, const char* func, unsigned int line); - typedef void (*wolfSSL_Free_cb)(void *ptr, const char* func, unsigned int line); - typedef void *(*wolfSSL_Realloc_cb)(void *ptr, size_t size, const char* func, unsigned int line); - - /* Public in case user app wants to use XMALLOC/XFREE */ - WOLFSSL_API void* wolfSSL_Malloc(size_t size, const char* func, unsigned int line); - WOLFSSL_API void wolfSSL_Free(void *ptr, const char* func, unsigned int line); - WOLFSSL_API void* wolfSSL_Realloc(void *ptr, size_t size, const char* func, unsigned int line); - #else - typedef void *(*wolfSSL_Malloc_cb)(size_t size); - typedef void (*wolfSSL_Free_cb)(void *ptr); - typedef void *(*wolfSSL_Realloc_cb)(void *ptr, size_t size); - /* Public in case user app wants to use XMALLOC/XFREE */ - WOLFSSL_API void* wolfSSL_Malloc(size_t size); - WOLFSSL_API void wolfSSL_Free(void *ptr); - WOLFSSL_API void* wolfSSL_Realloc(void *ptr, size_t size); - #endif /* WOLFSSL_DEBUG_MEMORY */ -#endif /* WOLFSSL_STATIC_MEMORY */ - -/* Public get/set functions */ -WOLFSSL_API int wolfSSL_SetAllocators(wolfSSL_Malloc_cb, - wolfSSL_Free_cb, - wolfSSL_Realloc_cb); -WOLFSSL_API int wolfSSL_GetAllocators(wolfSSL_Malloc_cb*, - wolfSSL_Free_cb*, - wolfSSL_Realloc_cb*); - -#ifdef WOLFSSL_STATIC_MEMORY - #define WOLFSSL_STATIC_TIMEOUT 1 - #ifndef WOLFSSL_STATIC_ALIGN - #define WOLFSSL_STATIC_ALIGN 16 - #endif - #ifndef WOLFMEM_MAX_BUCKETS - #define WOLFMEM_MAX_BUCKETS 9 - #endif - #define WOLFMEM_DEF_BUCKETS 9 /* number of default memory blocks */ - #ifndef WOLFMEM_IO_SZ - #define WOLFMEM_IO_SZ 16992 /* 16 byte aligned */ - #endif - #ifndef WOLFMEM_BUCKETS - #ifndef SESSION_CERTS - /* default size of chunks of memory to separate into */ - #ifndef LARGEST_MEM_BUCKET - #define LARGEST_MEM_BUCKET 16128 - #endif - #define WOLFMEM_BUCKETS 64,128,256,512,1024,2432,3456,4544,\ - LARGEST_MEM_BUCKET - #elif defined (OPENSSL_EXTRA) - /* extra storage in structs for multiple attributes and order */ - #ifndef LARGEST_MEM_BUCKET - #define LARGEST_MEM_BUCKET 25600 - #endif - #define WOLFMEM_BUCKETS 64,128,256,512,1024,2432,3360,4480,\ - LARGEST_MEM_BUCKET - #elif defined (WOLFSSL_CERT_EXT) - /* certificate extensions requires 24k for the SSL struct */ - #ifndef LARGEST_MEM_BUCKET - #define LARGEST_MEM_BUCKET 24576 - #endif - #define WOLFMEM_BUCKETS 64,128,256,512,1024,2432,3456,4544,\ - LARGEST_MEM_BUCKET - #else - /* increase 23k for object member of WOLFSSL_X509_NAME_ENTRY */ - #ifndef LARGEST_MEM_BUCKET - #define LARGEST_MEM_BUCKET 23440 - #endif - #define WOLFMEM_BUCKETS 64,128,256,512,1024,2432,3456,4544,\ - LARGEST_MEM_BUCKET - #endif - #endif - #ifndef WOLFMEM_DIST - #ifndef WOLFSSL_STATIC_MEMORY_SMALL - #define WOLFMEM_DIST 49,10,6,14,5,6,9,1,1 - #else - /* Low resource and not RSA */ - #define WOLFMEM_DIST 29, 7,6, 9,4,4,0,0,0 - #endif - #endif - - /* flags for loading static memory (one hot bit) */ - #define WOLFMEM_GENERAL 0x01 - #define WOLFMEM_IO_POOL 0x02 - #define WOLFMEM_IO_POOL_FIXED 0x04 - #define WOLFMEM_TRACK_STATS 0x08 - - #ifndef WOLFSSL_MEM_GUARD - #define WOLFSSL_MEM_GUARD - typedef struct WOLFSSL_MEM_STATS WOLFSSL_MEM_STATS; - typedef struct WOLFSSL_MEM_CONN_STATS WOLFSSL_MEM_CONN_STATS; - #endif - - struct WOLFSSL_MEM_CONN_STATS { - word32 peakMem; /* peak memory usage */ - word32 curMem; /* current memory usage */ - word32 peakAlloc; /* peak memory allocations */ - word32 curAlloc; /* current memory allocations */ - word32 totalAlloc;/* total memory allocations for lifetime */ - word32 totalFr; /* total frees for lifetime */ - }; - - struct WOLFSSL_MEM_STATS { - word32 curAlloc; /* current memory allocations */ - word32 totalAlloc;/* total memory allocations for lifetime */ - word32 totalFr; /* total frees for lifetime */ - word32 totalUse; /* total amount of memory used in blocks */ - word32 avaIO; /* available IO specific pools */ - word32 maxHa; /* max number of concurrent handshakes allowed */ - word32 maxIO; /* max number of concurrent IO connections allowed */ - word32 blockSz[WOLFMEM_MAX_BUCKETS]; /* block sizes in stacks */ - word32 avaBlock[WOLFMEM_MAX_BUCKETS];/* ava block sizes */ - word32 usedBlock[WOLFMEM_MAX_BUCKETS]; - int flag; /* flag used */ - }; - - typedef struct wc_Memory wc_Memory; /* internal structure for mem bucket */ - typedef struct WOLFSSL_HEAP { - wc_Memory* ava[WOLFMEM_MAX_BUCKETS]; - wc_Memory* io; /* list of buffers to use for IO */ - word32 maxHa; /* max concurrent handshakes */ - word32 curHa; - word32 maxIO; /* max concurrent IO connections */ - word32 curIO; - word32 sizeList[WOLFMEM_MAX_BUCKETS];/* memory sizes in ava list */ - word32 distList[WOLFMEM_MAX_BUCKETS];/* general distribution */ - word32 inUse; /* amount of memory currently in use */ - word32 ioUse; - word32 alloc; /* total number of allocs */ - word32 frAlc; /* total number of frees */ - int flag; - wolfSSL_Mutex memory_mutex; - } WOLFSSL_HEAP; - - /* structure passed into XMALLOC as heap hint - * having this abstraction allows tracking statistics of individual ssl's - */ - typedef struct WOLFSSL_HEAP_HINT { - WOLFSSL_HEAP* memory; - WOLFSSL_MEM_CONN_STATS* stats; /* hold individual connection stats */ - wc_Memory* outBuf; /* set if using fixed io buffers */ - wc_Memory* inBuf; - byte haFlag; /* flag used for checking handshake count */ - } WOLFSSL_HEAP_HINT; - - WOLFSSL_API int wc_LoadStaticMemory(WOLFSSL_HEAP_HINT** pHint, - unsigned char* buf, unsigned int sz, int flag, int max); - - WOLFSSL_LOCAL int wolfSSL_init_memory_heap(WOLFSSL_HEAP* heap); - WOLFSSL_LOCAL int wolfSSL_load_static_memory(byte* buffer, word32 sz, - int flag, WOLFSSL_HEAP* heap); - WOLFSSL_LOCAL int wolfSSL_GetMemStats(WOLFSSL_HEAP* heap, - WOLFSSL_MEM_STATS* stats); - WOLFSSL_LOCAL int SetFixedIO(WOLFSSL_HEAP* heap, wc_Memory** io); - WOLFSSL_LOCAL int FreeFixedIO(WOLFSSL_HEAP* heap, wc_Memory** io); - - WOLFSSL_API int wolfSSL_StaticBufferSz(byte* buffer, word32 sz, int flag); - WOLFSSL_API int wolfSSL_MemoryPaddingSz(void); -#endif /* WOLFSSL_STATIC_MEMORY */ - -#ifdef WOLFSSL_STACK_LOG - WOLFSSL_API void __attribute__((no_instrument_function)) - __cyg_profile_func_enter(void *func, void *caller); - WOLFSSL_API void __attribute__((no_instrument_function)) - __cyg_profile_func_exit(void *func, void *caller); -#endif /* WOLFSSL_STACK_LOG */ - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_MEMORY_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/misc.h b/client/wolfssl/wolfssl/wolfcrypt/misc.h deleted file mode 100644 index d5237de..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/misc.h +++ /dev/null @@ -1,118 +0,0 @@ -/* misc.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -#ifndef WOLF_CRYPT_MISC_H -#define WOLF_CRYPT_MISC_H - - -#include <wolfssl/wolfcrypt/types.h> - - -#ifdef __cplusplus - extern "C" { -#endif - - -#ifdef NO_INLINE -WOLFSSL_LOCAL -word32 rotlFixed(word32, word32); -WOLFSSL_LOCAL -word32 rotrFixed(word32, word32); - -WOLFSSL_LOCAL -word32 ByteReverseWord32(word32); -WOLFSSL_LOCAL -void ByteReverseWords(word32*, const word32*, word32); - -WOLFSSL_LOCAL -void XorWords(wolfssl_word*, const wolfssl_word*, word32); -WOLFSSL_LOCAL -void xorbuf(void*, const void*, word32); - -WOLFSSL_LOCAL -void ForceZero(const void*, word32); - -WOLFSSL_LOCAL -int ConstantCompare(const byte*, const byte*, int); - -#ifdef WORD64_AVAILABLE -WOLFSSL_LOCAL -word64 rotlFixed64(word64, word64); -WOLFSSL_LOCAL -word64 rotrFixed64(word64, word64); - -WOLFSSL_LOCAL -word64 ByteReverseWord64(word64); -WOLFSSL_LOCAL -void ByteReverseWords64(word64*, const word64*, word32); -#endif /* WORD64_AVAILABLE */ - -#ifndef WOLFSSL_HAVE_MIN - #if defined(HAVE_FIPS) && !defined(min) /* so ifdef check passes */ - #define min min - #endif - WOLFSSL_LOCAL word32 min(word32 a, word32 b); -#endif - -#ifndef WOLFSSL_HAVE_MAX - #if defined(HAVE_FIPS) && !defined(max) /* so ifdef check passes */ - #define max max - #endif - WOLFSSL_LOCAL word32 max(word32 a, word32 b); -#endif /* WOLFSSL_HAVE_MAX */ - - -void c32to24(word32 in, word24 out); -void c16toa(word16 u16, byte* c); -void c32toa(word32 u32, byte* c); -void c24to32(const word24 u24, word32* u32); -void ato16(const byte* c, word16* u16); -void ato24(const byte* c, word32* u24); -void ato32(const byte* c, word32* u32); -word32 btoi(byte b); - - -WOLFSSL_LOCAL byte ctMaskGT(int a, int b); -WOLFSSL_LOCAL byte ctMaskGTE(int a, int b); -WOLFSSL_LOCAL int ctMaskIntGTE(int a, int b); -WOLFSSL_LOCAL byte ctMaskLT(int a, int b); -WOLFSSL_LOCAL byte ctMaskLTE(int a, int b); -WOLFSSL_LOCAL byte ctMaskEq(int a, int b); -WOLFSSL_LOCAL word16 ctMask16GT(int a, int b); -WOLFSSL_LOCAL word16 ctMask16LT(int a, int b); -WOLFSSL_LOCAL word16 ctMask16Eq(int a, int b); -WOLFSSL_LOCAL byte ctMaskNotEq(int a, int b); -WOLFSSL_LOCAL byte ctMaskSel(byte m, byte a, byte b); -WOLFSSL_LOCAL int ctMaskSelInt(byte m, int a, int b); -WOLFSSL_LOCAL byte ctSetLTE(int a, int b); - -#endif /* NO_INLINE */ - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - - -#endif /* WOLF_CRYPT_MISC_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/mpi_class.h b/client/wolfssl/wolfssl/wolfcrypt/mpi_class.h deleted file mode 100644 index ae2fa83..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/mpi_class.h +++ /dev/null @@ -1,1021 +0,0 @@ -/* mpi_class.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -#if !(defined(LTM1) && defined(LTM2) && defined(LTM3)) -#if defined(LTM2) -#define LTM3 -#endif -#if defined(LTM1) -#define LTM2 -#endif -#define LTM1 - -#if defined(LTM_ALL) -#define BN_ERROR_C -#define BN_FAST_MP_INVMOD_C -#define BN_FAST_MP_MONTGOMERY_REDUCE_C -#define BN_FAST_S_MP_MUL_DIGS_C -#define BN_FAST_S_MP_MUL_HIGH_DIGS_C -#define BN_FAST_S_MP_SQR_C -#define BN_MP_2EXPT_C -#define BN_MP_ABS_C -#define BN_MP_ADD_C -#define BN_MP_ADD_D_C -#define BN_MP_ADDMOD_C -#define BN_MP_AND_C -#define BN_MP_CLAMP_C -#define BN_MP_CLEAR_C -#define BN_MP_CLEAR_MULTI_C -#define BN_MP_CMP_C -#define BN_MP_CMP_D_C -#define BN_MP_CMP_MAG_C -#define BN_MP_CNT_LSB_C -#define BN_MP_COPY_C -#define BN_MP_COUNT_BITS_C -#define BN_MP_DIV_C -#define BN_MP_DIV_2_C -#define BN_MP_DIV_2D_C -#define BN_MP_DIV_3_C -#define BN_MP_DIV_D_C -#define BN_MP_DR_IS_MODULUS_C -#define BN_MP_DR_REDUCE_C -#define BN_MP_DR_SETUP_C -#define BN_MP_EXCH_C -#define BN_MP_EXPT_D_C -#define BN_MP_EXPTMOD_BASE_2 -#define BN_MP_EXPTMOD_C -#define BN_MP_EXPTMOD_FAST_C -#define BN_MP_EXTEUCLID_C -#define BN_MP_FREAD_C -#define BN_MP_FWRITE_C -#define BN_MP_GCD_C -#define BN_MP_GET_INT_C -#define BN_MP_GROW_C -#define BN_MP_INIT_C -#define BN_MP_INIT_COPY_C -#define BN_MP_INIT_MULTI_C -#define BN_MP_INIT_SET_C -#define BN_MP_INIT_SET_INT_C -#define BN_MP_INIT_SIZE_C -#define BN_MP_INVMOD_C -#define BN_MP_INVMOD_SLOW_C -#define BN_MP_IS_SQUARE_C -#define BN_MP_JACOBI_C -#define BN_MP_KARATSUBA_MUL_C -#define BN_MP_KARATSUBA_SQR_C -#define BN_MP_LCM_C -#define BN_MP_LSHD_C -#define BN_MP_MOD_C -#define BN_MP_MOD_2D_C -#define BN_MP_MOD_D_C -#define BN_MP_MONTGOMERY_CALC_NORMALIZATION_C -#define BN_MP_MONTGOMERY_REDUCE_C -#define BN_MP_MONTGOMERY_SETUP_C -#define BN_MP_MUL_C -#define BN_MP_MUL_2_C -#define BN_MP_MUL_2D_C -#define BN_MP_MUL_D_C -#define BN_MP_MULMOD_C -#define BN_MP_N_ROOT_C -#define BN_MP_NEG_C -#define BN_MP_OR_C -#define BN_MP_PRIME_FERMAT_C -#define BN_MP_PRIME_IS_DIVISIBLE_C -#define BN_MP_PRIME_IS_PRIME_C -#define BN_MP_PRIME_MILLER_RABIN_C -#define BN_MP_PRIME_NEXT_PRIME_C -#define BN_MP_PRIME_RABIN_MILLER_TRIALS_C -#define BN_MP_PRIME_RANDOM_EX_C -#define BN_MP_RADIX_SIZE_C -#define BN_MP_RADIX_SMAP_C -#define BN_MP_RAND_C -#define BN_MP_READ_RADIX_C -#define BN_MP_READ_SIGNED_BIN_C -#define BN_MP_READ_UNSIGNED_BIN_C -#define BN_MP_REDUCE_C -#define BN_MP_REDUCE_2K_C -#define BN_MP_REDUCE_2K_L_C -#define BN_MP_REDUCE_2K_SETUP_C -#define BN_MP_REDUCE_2K_SETUP_L_C -#define BN_MP_REDUCE_IS_2K_C -#define BN_MP_REDUCE_IS_2K_L_C -#define BN_MP_REDUCE_SETUP_C -#define BN_MP_RSHD_C -#define BN_MP_SET_C -#define BN_MP_SET_INT_C -#define BN_MP_SHRINK_C -#define BN_MP_SIGNED_BIN_SIZE_C -#define BN_MP_SQR_C -#define BN_MP_SQRMOD_C -#define BN_MP_SQRT_C -#define BN_MP_SUB_C -#define BN_MP_SUB_D_C -#define BN_MP_SUBMOD_C -#define BN_MP_TO_SIGNED_BIN_C -#define BN_MP_TO_SIGNED_BIN_N_C -#define BN_MP_TO_UNSIGNED_BIN_C -#define BN_MP_TO_UNSIGNED_BIN_N_C -#define BN_MP_TOOM_MUL_C -#define BN_MP_TOOM_SQR_C -#define BN_MP_TORADIX_C -#define BN_MP_TORADIX_N_C -#define BN_MP_UNSIGNED_BIN_SIZE_C -#define BN_MP_XOR_C -#define BN_MP_ZERO_C -#define BN_PRIME_TAB_C -#define BN_REVERSE_C -#define BN_S_MP_ADD_C -#define BN_S_MP_EXPTMOD_C -#define BN_S_MP_MUL_DIGS_C -#define BN_S_MP_MUL_HIGH_DIGS_C -#define BN_S_MP_SQR_C -#define BN_S_MP_SUB_C -#define BNCORE_C -#endif - -#if defined(BN_ERROR_C) - #define BN_MP_ERROR_TO_STRING_C -#endif - -#if defined(BN_FAST_MP_INVMOD_C) - #define BN_MP_ISEVEN_C - #define BN_MP_INIT_MULTI_C - #define BN_MP_COPY_C - #define BN_MP_MOD_C - #define BN_MP_SET_C - #define BN_MP_DIV_2_C - #define BN_MP_ISODD_C - #define BN_MP_SUB_C - #define BN_MP_CMP_C - #define BN_MP_ISZERO_C - #define BN_MP_CMP_D_C - #define BN_MP_ADD_C - #define BN_MP_EXCH_C - #define BN_MP_CLEAR_MULTI_C -#endif - -#if defined(BN_FAST_MP_MONTGOMERY_REDUCE_C) - #define BN_MP_GROW_C - #define BN_MP_RSHD_C - #define BN_MP_CLAMP_C - #define BN_MP_CMP_MAG_C - #define BN_S_MP_SUB_C -#endif - -#if defined(BN_FAST_S_MP_MUL_DIGS_C) - #define BN_MP_GROW_C - #define BN_MP_CLAMP_C -#endif - -#if defined(BN_FAST_S_MP_MUL_HIGH_DIGS_C) - #define BN_MP_GROW_C - #define BN_MP_CLAMP_C -#endif - -#if defined(BN_FAST_S_MP_SQR_C) - #define BN_MP_GROW_C - #define BN_MP_CLAMP_C -#endif - -#if defined(BN_MP_2EXPT_C) - #define BN_MP_ZERO_C - #define BN_MP_GROW_C -#endif - -#if defined(BN_MP_ABS_C) - #define BN_MP_COPY_C -#endif - -#if defined(BN_MP_ADD_C) - #define BN_S_MP_ADD_C - #define BN_MP_CMP_MAG_C - #define BN_S_MP_SUB_C -#endif - -#if defined(BN_MP_ADD_D_C) - #define BN_MP_GROW_C - #define BN_MP_SUB_D_C - #define BN_MP_CLAMP_C -#endif - -#if defined(BN_MP_ADDMOD_C) - #define BN_MP_INIT_C - #define BN_MP_ADD_C - #define BN_MP_CLEAR_C - #define BN_MP_MOD_C -#endif - -#if defined(BN_MP_AND_C) - #define BN_MP_INIT_COPY_C - #define BN_MP_CLAMP_C - #define BN_MP_EXCH_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_CLAMP_C) -#endif - -#if defined(BN_MP_CLEAR_C) -#endif - -#if defined(BN_MP_CLEAR_MULTI_C) - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_CMP_C) - #define BN_MP_CMP_MAG_C -#endif - -#if defined(BN_MP_CMP_D_C) -#endif - -#if defined(BN_MP_CMP_MAG_C) -#endif - -#if defined(BN_MP_CNT_LSB_C) - #define BN_MP_ISZERO_C -#endif - -#if defined(BN_MP_COPY_C) - #define BN_MP_GROW_C -#endif - -#if defined(BN_MP_COUNT_BITS_C) -#endif - -#if defined(BN_MP_DIV_C) - #define BN_MP_ISZERO_C - #define BN_MP_CMP_MAG_C - #define BN_MP_COPY_C - #define BN_MP_ZERO_C - #define BN_MP_INIT_MULTI_C - #define BN_MP_SET_C - #define BN_MP_COUNT_BITS_C - #define BN_MP_ABS_C - #define BN_MP_MUL_2D_C - #define BN_MP_CMP_C - #define BN_MP_SUB_C - #define BN_MP_ADD_C - #define BN_MP_DIV_2D_C - #define BN_MP_EXCH_C - #define BN_MP_CLEAR_MULTI_C - #define BN_MP_INIT_SIZE_C - #define BN_MP_INIT_C - #define BN_MP_INIT_COPY_C - #define BN_MP_LSHD_C - #define BN_MP_RSHD_C - #define BN_MP_MUL_D_C - #define BN_MP_CLAMP_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_DIV_2_C) - #define BN_MP_GROW_C - #define BN_MP_CLAMP_C -#endif - -#if defined(BN_MP_DIV_2D_C) - #define BN_MP_COPY_C - #define BN_MP_ZERO_C - #define BN_MP_INIT_C - #define BN_MP_MOD_2D_C - #define BN_MP_CLEAR_C - #define BN_MP_RSHD_C - #define BN_MP_CLAMP_C - #define BN_MP_EXCH_C -#endif - -#if defined(BN_MP_DIV_3_C) - #define BN_MP_INIT_SIZE_C - #define BN_MP_CLAMP_C - #define BN_MP_EXCH_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_DIV_D_C) - #define BN_MP_ISZERO_C - #define BN_MP_COPY_C - #define BN_MP_DIV_2D_C - #define BN_MP_DIV_3_C - #define BN_MP_INIT_SIZE_C - #define BN_MP_CLAMP_C - #define BN_MP_EXCH_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_DR_IS_MODULUS_C) -#endif - -#if defined(BN_MP_DR_REDUCE_C) - #define BN_MP_GROW_C - #define BN_MP_CLAMP_C - #define BN_MP_CMP_MAG_C - #define BN_S_MP_SUB_C -#endif - -#if defined(BN_MP_DR_SETUP_C) -#endif - -#if defined(BN_MP_EXCH_C) -#endif - -#if defined(BN_MP_EXPT_D_C) - #define BN_MP_INIT_COPY_C - #define BN_MP_SET_C - #define BN_MP_SQR_C - #define BN_MP_CLEAR_C - #define BN_MP_MUL_C -#endif - -#if defined(BN_MP_EXPTMOD_C) - #define BN_MP_INIT_C - #define BN_MP_INVMOD_C - #define BN_MP_CLEAR_C - #define BN_MP_ABS_C - #define BN_MP_CLEAR_MULTI_C - #define BN_MP_REDUCE_IS_2K_L_C - #define BN_S_MP_EXPTMOD_C - #define BN_MP_DR_IS_MODULUS_C - #define BN_MP_REDUCE_IS_2K_C - #define BN_MP_ISODD_C - #define BN_MP_EXPTMOD_FAST_C - #define BN_MP_EXPTMOD_BASE_2 -#endif - -#if defined(BN_MP_EXPTMOD_FAST_C) - #define BN_MP_COUNT_BITS_C - #define BN_MP_INIT_C - #define BN_MP_CLEAR_C - #define BN_MP_MONTGOMERY_SETUP_C - #define BN_FAST_MP_MONTGOMERY_REDUCE_C - #define BN_MP_MONTGOMERY_REDUCE_C - #define BN_MP_DR_SETUP_C - #define BN_MP_DR_REDUCE_C - #define BN_MP_REDUCE_2K_SETUP_C - #define BN_MP_REDUCE_2K_C - #define BN_MP_MONTGOMERY_CALC_NORMALIZATION_C - #define BN_MP_MULMOD_C - #define BN_MP_SET_C - #define BN_MP_MOD_C - #define BN_MP_COPY_C - #define BN_MP_SQR_C - #define BN_MP_MUL_C - #define BN_MP_EXCH_C -#endif - -#if defined(BN_MP_EXTEUCLID_C) - #define BN_MP_INIT_MULTI_C - #define BN_MP_SET_C - #define BN_MP_COPY_C - #define BN_MP_ISZERO_C - #define BN_MP_DIV_C - #define BN_MP_MUL_C - #define BN_MP_SUB_C - #define BN_MP_NEG_C - #define BN_MP_EXCH_C - #define BN_MP_CLEAR_MULTI_C -#endif - -#if defined(BN_MP_FREAD_C) - #define BN_MP_ZERO_C - #define BN_MP_S_RMAP_C - #define BN_MP_MUL_D_C - #define BN_MP_ADD_D_C - #define BN_MP_CMP_D_C -#endif - -#if defined(BN_MP_FWRITE_C) - #define BN_MP_RADIX_SIZE_C - #define BN_MP_TORADIX_C -#endif - -#if defined(BN_MP_GCD_C) - #define BN_MP_ISZERO_C - #define BN_MP_ABS_C - #define BN_MP_ZERO_C - #define BN_MP_INIT_COPY_C - #define BN_MP_CNT_LSB_C - #define BN_MP_DIV_2D_C - #define BN_MP_CMP_MAG_C - #define BN_MP_EXCH_C - #define BN_S_MP_SUB_C - #define BN_MP_MUL_2D_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_GET_INT_C) -#endif - -#if defined(BN_MP_GROW_C) -#endif - -#if defined(BN_MP_INIT_C) -#endif - -#if defined(BN_MP_INIT_COPY_C) - #define BN_MP_COPY_C -#endif - -#if defined(BN_MP_INIT_MULTI_C) - #define BN_MP_ERR_C - #define BN_MP_INIT_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_INIT_SET_C) - #define BN_MP_INIT_C - #define BN_MP_SET_C -#endif - -#if defined(BN_MP_INIT_SET_INT_C) - #define BN_MP_INIT_C - #define BN_MP_SET_INT_C -#endif - -#if defined(BN_MP_INIT_SIZE_C) - #define BN_MP_INIT_C -#endif - -#if defined(BN_MP_INVMOD_C) - #define BN_MP_ISZERO_C - #define BN_MP_ISODD_C - #define BN_FAST_MP_INVMOD_C - #define BN_MP_INVMOD_SLOW_C -#endif - -#if defined(BN_MP_INVMOD_SLOW_C) - #define BN_MP_ISZERO_C - #define BN_MP_INIT_MULTI_C - #define BN_MP_MOD_C - #define BN_MP_COPY_C - #define BN_MP_ISEVEN_C - #define BN_MP_SET_C - #define BN_MP_DIV_2_C - #define BN_MP_ISODD_C - #define BN_MP_ADD_C - #define BN_MP_SUB_C - #define BN_MP_CMP_C - #define BN_MP_CMP_D_C - #define BN_MP_CMP_MAG_C - #define BN_MP_EXCH_C - #define BN_MP_CLEAR_MULTI_C -#endif - -#if defined(BN_MP_IS_SQUARE_C) - #define BN_MP_MOD_D_C - #define BN_MP_INIT_SET_INT_C - #define BN_MP_MOD_C - #define BN_MP_GET_INT_C - #define BN_MP_SQRT_C - #define BN_MP_SQR_C - #define BN_MP_CMP_MAG_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_JACOBI_C) - #define BN_MP_CMP_D_C - #define BN_MP_ISZERO_C - #define BN_MP_INIT_COPY_C - #define BN_MP_CNT_LSB_C - #define BN_MP_DIV_2D_C - #define BN_MP_MOD_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_KARATSUBA_MUL_C) - #define BN_MP_MUL_C - #define BN_MP_INIT_SIZE_C - #define BN_MP_CLAMP_C - #define BN_MP_SUB_C - #define BN_MP_ADD_C - #define BN_MP_LSHD_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_KARATSUBA_SQR_C) - #define BN_MP_INIT_SIZE_C - #define BN_MP_CLAMP_C - #define BN_MP_SQR_C - #define BN_MP_SUB_C - #define BN_S_MP_ADD_C - #define BN_MP_LSHD_C - #define BN_MP_ADD_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_LCM_C) - #define BN_MP_INIT_MULTI_C - #define BN_MP_GCD_C - #define BN_MP_CMP_MAG_C - #define BN_MP_DIV_C - #define BN_MP_MUL_C - #define BN_MP_CLEAR_MULTI_C -#endif - -#if defined(BN_MP_LSHD_C) - #define BN_MP_GROW_C - #define BN_MP_RSHD_C -#endif - -#if defined(BN_MP_MOD_C) - #define BN_MP_INIT_C - #define BN_MP_DIV_C - #define BN_MP_CLEAR_C - #define BN_MP_ADD_C - #define BN_MP_EXCH_C -#endif - -#if defined(BN_MP_MOD_2D_C) - #define BN_MP_ZERO_C - #define BN_MP_COPY_C - #define BN_MP_CLAMP_C -#endif - -#if defined(BN_MP_MOD_D_C) - #define BN_MP_DIV_D_C -#endif - -#if defined(BN_MP_MONTGOMERY_CALC_NORMALIZATION_C) - #define BN_MP_COUNT_BITS_C - #define BN_MP_2EXPT_C - #define BN_MP_SET_C - #define BN_MP_MUL_2_C - #define BN_MP_CMP_MAG_C - #define BN_S_MP_SUB_C -#endif - -#if defined(BN_MP_MONTGOMERY_REDUCE_C) - #define BN_FAST_MP_MONTGOMERY_REDUCE_C - #define BN_MP_GROW_C - #define BN_MP_CLAMP_C - #define BN_MP_RSHD_C - #define BN_MP_CMP_MAG_C - #define BN_S_MP_SUB_C -#endif - -#if defined(BN_MP_MONTGOMERY_SETUP_C) -#endif - -#if defined(BN_MP_MUL_C) - #define BN_MP_TOOM_MUL_C - #define BN_MP_KARATSUBA_MUL_C - #define BN_FAST_S_MP_MUL_DIGS_C - #define BN_S_MP_MUL_C - #define BN_S_MP_MUL_DIGS_C -#endif - -#if defined(BN_MP_MUL_2_C) - #define BN_MP_GROW_C -#endif - -#if defined(BN_MP_MUL_2D_C) - #define BN_MP_COPY_C - #define BN_MP_GROW_C - #define BN_MP_LSHD_C - #define BN_MP_CLAMP_C -#endif - -#if defined(BN_MP_MUL_D_C) - #define BN_MP_GROW_C - #define BN_MP_CLAMP_C -#endif - -#if defined(BN_MP_MULMOD_C) - #define BN_MP_INIT_C - #define BN_MP_MUL_C - #define BN_MP_CLEAR_C - #define BN_MP_MOD_C -#endif - -#if defined(BN_MP_N_ROOT_C) - #define BN_MP_INIT_C - #define BN_MP_SET_C - #define BN_MP_COPY_C - #define BN_MP_EXPT_D_C - #define BN_MP_MUL_C - #define BN_MP_SUB_C - #define BN_MP_MUL_D_C - #define BN_MP_DIV_C - #define BN_MP_CMP_C - #define BN_MP_SUB_D_C - #define BN_MP_EXCH_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_NEG_C) - #define BN_MP_COPY_C - #define BN_MP_ISZERO_C -#endif - -#if defined(BN_MP_OR_C) - #define BN_MP_INIT_COPY_C - #define BN_MP_CLAMP_C - #define BN_MP_EXCH_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_PRIME_FERMAT_C) - #define BN_MP_CMP_D_C - #define BN_MP_INIT_C - #define BN_MP_EXPTMOD_C - #define BN_MP_CMP_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_PRIME_IS_DIVISIBLE_C) - #define BN_MP_MOD_D_C -#endif - -#if defined(BN_MP_PRIME_IS_PRIME_C) - #define BN_MP_CMP_D_C - #define BN_MP_PRIME_IS_DIVISIBLE_C - #define BN_MP_INIT_C - #define BN_MP_SET_C - #define BN_MP_PRIME_MILLER_RABIN_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_PRIME_MILLER_RABIN_C) - #define BN_MP_CMP_D_C - #define BN_MP_INIT_COPY_C - #define BN_MP_SUB_D_C - #define BN_MP_CNT_LSB_C - #define BN_MP_DIV_2D_C - #define BN_MP_EXPTMOD_C - #define BN_MP_CMP_C - #define BN_MP_SQRMOD_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_PRIME_NEXT_PRIME_C) - #define BN_MP_CMP_D_C - #define BN_MP_SET_C - #define BN_MP_SUB_D_C - #define BN_MP_ISEVEN_C - #define BN_MP_MOD_D_C - #define BN_MP_INIT_C - #define BN_MP_ADD_D_C - #define BN_MP_PRIME_MILLER_RABIN_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_PRIME_RABIN_MILLER_TRIALS_C) -#endif - -#if defined(BN_MP_PRIME_RANDOM_EX_C) - #define BN_MP_READ_UNSIGNED_BIN_C - #define BN_MP_PRIME_IS_PRIME_C - #define BN_MP_SUB_D_C - #define BN_MP_DIV_2_C - #define BN_MP_MUL_2_C - #define BN_MP_ADD_D_C -#endif - -#if defined(BN_MP_RADIX_SIZE_C) - #define BN_MP_COUNT_BITS_C - #define BN_MP_INIT_COPY_C - #define BN_MP_ISZERO_C - #define BN_MP_DIV_D_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_RADIX_SMAP_C) - #define BN_MP_S_RMAP_C -#endif - -#if defined(BN_MP_RAND_C) - #define BN_MP_ZERO_C - #define BN_MP_ADD_D_C - #define BN_MP_LSHD_C -#endif - -#if defined(BN_MP_READ_RADIX_C) - #define BN_MP_ZERO_C - #define BN_MP_S_RMAP_C - #define BN_MP_RADIX_SMAP_C - #define BN_MP_MUL_D_C - #define BN_MP_ADD_D_C - #define BN_MP_ISZERO_C -#endif - -#if defined(BN_MP_READ_SIGNED_BIN_C) - #define BN_MP_READ_UNSIGNED_BIN_C -#endif - -#if defined(BN_MP_READ_UNSIGNED_BIN_C) - #define BN_MP_GROW_C - #define BN_MP_ZERO_C - #define BN_MP_MUL_2D_C - #define BN_MP_CLAMP_C -#endif - -#if defined(BN_MP_REDUCE_C) - #define BN_MP_REDUCE_SETUP_C - #define BN_MP_INIT_COPY_C - #define BN_MP_RSHD_C - #define BN_MP_MUL_C - #define BN_S_MP_MUL_HIGH_DIGS_C - #define BN_FAST_S_MP_MUL_HIGH_DIGS_C - #define BN_MP_MOD_2D_C - #define BN_S_MP_MUL_DIGS_C - #define BN_MP_SUB_C - #define BN_MP_CMP_D_C - #define BN_MP_SET_C - #define BN_MP_LSHD_C - #define BN_MP_ADD_C - #define BN_MP_CMP_C - #define BN_S_MP_SUB_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_REDUCE_2K_C) - #define BN_MP_INIT_C - #define BN_MP_COUNT_BITS_C - #define BN_MP_DIV_2D_C - #define BN_MP_MUL_D_C - #define BN_S_MP_ADD_C - #define BN_MP_CMP_MAG_C - #define BN_S_MP_SUB_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_REDUCE_2K_L_C) - #define BN_MP_INIT_C - #define BN_MP_COUNT_BITS_C - #define BN_MP_DIV_2D_C - #define BN_MP_MUL_C - #define BN_S_MP_ADD_C - #define BN_MP_CMP_MAG_C - #define BN_S_MP_SUB_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_REDUCE_2K_SETUP_C) - #define BN_MP_INIT_C - #define BN_MP_COUNT_BITS_C - #define BN_MP_2EXPT_C - #define BN_MP_CLEAR_C - #define BN_S_MP_SUB_C -#endif - -#if defined(BN_MP_REDUCE_2K_SETUP_L_C) - #define BN_MP_INIT_C - #define BN_MP_2EXPT_C - #define BN_MP_COUNT_BITS_C - #define BN_S_MP_SUB_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_REDUCE_IS_2K_C) - #define BN_MP_REDUCE_2K_C - #define BN_MP_COUNT_BITS_C -#endif - -#if defined(BN_MP_REDUCE_IS_2K_L_C) -#endif - -#if defined(BN_MP_REDUCE_SETUP_C) - #define BN_MP_2EXPT_C - #define BN_MP_DIV_C -#endif - -#if defined(BN_MP_RSHD_C) - #define BN_MP_ZERO_C -#endif - -#if defined(BN_MP_SET_C) - #define BN_MP_ZERO_C -#endif - -#if defined(BN_MP_SET_INT_C) - #define BN_MP_ZERO_C - #define BN_MP_MUL_2D_C - #define BN_MP_CLAMP_C -#endif - -#if defined(BN_MP_SHRINK_C) -#endif - -#if defined(BN_MP_SIGNED_BIN_SIZE_C) - #define BN_MP_UNSIGNED_BIN_SIZE_C -#endif - -#if defined(BN_MP_SQR_C) - #define BN_MP_TOOM_SQR_C - #define BN_MP_KARATSUBA_SQR_C - #define BN_FAST_S_MP_SQR_C - #define BN_S_MP_SQR_C -#endif - -#if defined(BN_MP_SQRMOD_C) - #define BN_MP_INIT_C - #define BN_MP_SQR_C - #define BN_MP_CLEAR_C - #define BN_MP_MOD_C -#endif - -#if defined(BN_MP_SQRT_C) - #define BN_MP_N_ROOT_C - #define BN_MP_ISZERO_C - #define BN_MP_ZERO_C - #define BN_MP_INIT_COPY_C - #define BN_MP_RSHD_C - #define BN_MP_DIV_C - #define BN_MP_ADD_C - #define BN_MP_DIV_2_C - #define BN_MP_CMP_MAG_C - #define BN_MP_EXCH_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_SUB_C) - #define BN_S_MP_ADD_C - #define BN_MP_CMP_MAG_C - #define BN_S_MP_SUB_C -#endif - -#if defined(BN_MP_SUB_D_C) - #define BN_MP_GROW_C - #define BN_MP_ADD_D_C - #define BN_MP_CLAMP_C -#endif - -#if defined(BN_MP_SUBMOD_C) - #define BN_MP_INIT_C - #define BN_MP_SUB_C - #define BN_MP_CLEAR_C - #define BN_MP_MOD_C -#endif - -#if defined(BN_MP_TO_SIGNED_BIN_C) - #define BN_MP_TO_UNSIGNED_BIN_C -#endif - -#if defined(BN_MP_TO_SIGNED_BIN_N_C) - #define BN_MP_SIGNED_BIN_SIZE_C - #define BN_MP_TO_SIGNED_BIN_C -#endif - -#if defined(BN_MP_TO_UNSIGNED_BIN_C) - #define BN_MP_INIT_COPY_C - #define BN_MP_ISZERO_C - #define BN_MP_DIV_2D_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_TO_UNSIGNED_BIN_N_C) - #define BN_MP_UNSIGNED_BIN_SIZE_C - #define BN_MP_TO_UNSIGNED_BIN_C -#endif - -#if defined(BN_MP_TOOM_MUL_C) - #define BN_MP_INIT_MULTI_C - #define BN_MP_MOD_2D_C - #define BN_MP_COPY_C - #define BN_MP_RSHD_C - #define BN_MP_MUL_C - #define BN_MP_MUL_2_C - #define BN_MP_ADD_C - #define BN_MP_SUB_C - #define BN_MP_DIV_2_C - #define BN_MP_MUL_2D_C - #define BN_MP_MUL_D_C - #define BN_MP_DIV_3_C - #define BN_MP_LSHD_C - #define BN_MP_CLEAR_MULTI_C -#endif - -#if defined(BN_MP_TOOM_SQR_C) - #define BN_MP_INIT_MULTI_C - #define BN_MP_MOD_2D_C - #define BN_MP_COPY_C - #define BN_MP_RSHD_C - #define BN_MP_SQR_C - #define BN_MP_MUL_2_C - #define BN_MP_ADD_C - #define BN_MP_SUB_C - #define BN_MP_DIV_2_C - #define BN_MP_MUL_2D_C - #define BN_MP_MUL_D_C - #define BN_MP_DIV_3_C - #define BN_MP_LSHD_C - #define BN_MP_CLEAR_MULTI_C -#endif - -#if defined(BN_MP_TORADIX_C) - #define BN_MP_ISZERO_C - #define BN_MP_INIT_COPY_C - #define BN_MP_DIV_D_C - #define BN_MP_CLEAR_C - #define BN_MP_S_RMAP_C -#endif - -#if defined(BN_MP_TORADIX_N_C) - #define BN_MP_ISZERO_C - #define BN_MP_INIT_COPY_C - #define BN_MP_DIV_D_C - #define BN_MP_CLEAR_C - #define BN_MP_S_RMAP_C -#endif - -#if defined(BN_MP_UNSIGNED_BIN_SIZE_C) - #define BN_MP_COUNT_BITS_C -#endif - -#if defined(BN_MP_XOR_C) - #define BN_MP_INIT_COPY_C - #define BN_MP_CLAMP_C - #define BN_MP_EXCH_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_MP_ZERO_C) -#endif - -#if defined(BN_PRIME_TAB_C) -#endif - -#if defined(BN_REVERSE_C) -#endif - -#if defined(BN_S_MP_ADD_C) - #define BN_MP_GROW_C - #define BN_MP_CLAMP_C -#endif - -#if defined(BN_S_MP_EXPTMOD_C) - #define BN_MP_COUNT_BITS_C - #define BN_MP_INIT_C - #define BN_MP_CLEAR_C - #define BN_MP_REDUCE_SETUP_C - #define BN_MP_REDUCE_C - #define BN_MP_REDUCE_2K_SETUP_L_C - #define BN_MP_REDUCE_2K_L_C - #define BN_MP_MOD_C - #define BN_MP_COPY_C - #define BN_MP_SQR_C - #define BN_MP_MUL_C - #define BN_MP_SET_C - #define BN_MP_EXCH_C -#endif - -#if defined(BN_S_MP_MUL_DIGS_C) - #define BN_FAST_S_MP_MUL_DIGS_C - #define BN_MP_INIT_SIZE_C - #define BN_MP_CLAMP_C - #define BN_MP_EXCH_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_S_MP_MUL_HIGH_DIGS_C) - #define BN_FAST_S_MP_MUL_HIGH_DIGS_C - #define BN_MP_INIT_SIZE_C - #define BN_MP_CLAMP_C - #define BN_MP_EXCH_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_S_MP_SQR_C) - #define BN_MP_INIT_SIZE_C - #define BN_MP_CLAMP_C - #define BN_MP_EXCH_C - #define BN_MP_CLEAR_C -#endif - -#if defined(BN_S_MP_SUB_C) - #define BN_MP_GROW_C - #define BN_MP_CLAMP_C -#endif - -#if defined(BNCORE_C) -#endif - -#ifdef LTM3 -#define LTM_LAST -#endif -#include "mpi_superclass.h" -#include "mpi_class.h" -#else -#define LTM_LAST -#endif - diff --git a/client/wolfssl/wolfssl/wolfcrypt/mpi_superclass.h b/client/wolfssl/wolfssl/wolfcrypt/mpi_superclass.h deleted file mode 100644 index 186ac75..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/mpi_superclass.h +++ /dev/null @@ -1,96 +0,0 @@ -/* mpi_superclass.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -/* super class file for PK algos */ - -/* default ... include all MPI */ -#define LTM_ALL - -/* RSA only (does not support DH/DSA/ECC) */ -/* #define SC_RSA_1 */ - -/* For reference.... On an Athlon64 optimizing for speed... - - LTM's mpi.o with all functions [striped] is 142KiB in size. - -*/ - -/* Works for RSA only, mpi.o is 68KiB */ -#ifdef SC_RSA_1 - #define BN_MP_SHRINK_C - #define BN_MP_LCM_C - #define BN_MP_PRIME_RANDOM_EX_C - #define BN_MP_INVMOD_C - #define BN_MP_GCD_C - #define BN_MP_MOD_C - #define BN_MP_MULMOD_C - #define BN_MP_ADDMOD_C - #define BN_MP_EXPTMOD_C - #define BN_MP_SET_INT_C - #define BN_MP_INIT_MULTI_C - #define BN_MP_CLEAR_MULTI_C - #define BN_MP_UNSIGNED_BIN_SIZE_C - #define BN_MP_TO_UNSIGNED_BIN_C - #define BN_MP_MOD_D_C - #define BN_MP_PRIME_RABIN_MILLER_TRIALS_C - #define BN_REVERSE_C - #define BN_PRIME_TAB_C - - /* other modifiers */ - #define BN_MP_DIV_SMALL /* Slower division, not critical */ - - /* here we are on the last pass so we turn things off. The functions classes are still there - * but we remove them specifically from the build. This also invokes tweaks in functions - * like removing support for even moduli, etc... - */ -#ifdef LTM_LAST - #undef BN_MP_TOOM_MUL_C - #undef BN_MP_TOOM_SQR_C - #undef BN_MP_KARATSUBA_MUL_C - #undef BN_MP_KARATSUBA_SQR_C - #undef BN_MP_REDUCE_C - #undef BN_MP_REDUCE_SETUP_C - #undef BN_MP_DR_IS_MODULUS_C - #undef BN_MP_DR_SETUP_C - #undef BN_MP_DR_REDUCE_C - #undef BN_MP_REDUCE_IS_2K_C - #undef BN_MP_REDUCE_2K_SETUP_C - #undef BN_MP_REDUCE_2K_C - #undef BN_S_MP_EXPTMOD_C - #undef BN_MP_DIV_3_C - #undef BN_S_MP_MUL_HIGH_DIGS_C - #undef BN_FAST_S_MP_MUL_HIGH_DIGS_C - #undef BN_FAST_MP_INVMOD_C - - /* To safely undefine these you have to make sure your RSA key won't exceed the Comba threshold - * which is roughly 255 digits [7140 bits for 32-bit machines, 15300 bits for 64-bit machines] - * which means roughly speaking you can handle up to 2536-bit RSA keys with these defined without - * trouble. - */ - #undef BN_S_MP_MUL_DIGS_C - #undef BN_S_MP_SQR_C - #undef BN_MP_MONTGOMERY_REDUCE_C -#endif - -#endif - diff --git a/client/wolfssl/wolfssl/wolfcrypt/pkcs11.h b/client/wolfssl/wolfssl/wolfcrypt/pkcs11.h deleted file mode 100644 index 93e1af1..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/pkcs11.h +++ /dev/null @@ -1,537 +0,0 @@ -/* pkcs11.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -#ifndef _PKCS11_H_ -#define _PKCS11_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef NULL_PTR -#define NULL_PTR 0 -#endif -#define CK_TRUE 1 -#define CK_FALSE 0 - - -#define CK_INVALID_HANDLE 0UL - -#define CKN_SURRENDER 0UL - -#define CKF_TOKEN_PRESENT 0x00000001UL -#define CKF_REMOVABLE_DEVICE 0x00000002UL -#define CKF_HW_SLOT 0x00000004UL - -#define CKF_HW 0x00000001UL -#define CKF_ENCRYPT 0x00000100UL -#define CKF_DECRYPT 0x00000200UL -#define CKF_DIGEST 0x00000400UL -#define CKF_SIGN 0x00000800UL -#define CKF_SIGN_RECOVER 0x00001000UL -#define CKF_VERIFY 0x00002000UL -#define CKF_VERIFY_RECOVER 0x00004000UL -#define CKF_GENERATE 0x00008000UL -#define CKF_GENERATE_KEY_PAIR 0x00010000UL -#define CKF_WRAP 0x00020000UL -#define CKF_UNWRAP 0x00040000UL -#define CKF_DERIVE 0x00080000UL -#define CKF_EC_F_P 0x00100000UL -#define CKF_EC_F_2M 0x00200000UL -#define CKF_EC_ECPARAMETERS 0x00400000UL -#define CKF_EC_NAMEDCURVE 0x00800000UL -#define CKF_EC_UNCOMPRESS 0x01000000UL -#define CKF_EC_COMPRESS 0x02000000UL - -#define CKF_LIBRARY_CANT_CREATE_OS_THREADS 0x00000001UL -#define CKF_OS_LOCKING_OK 0x00000002UL - -#define CKU_SO 0UL -#define CKU_USER 1UL -#define CKU_CONTEXT_SPECIFIC 2UL - -#define CKF_RW_SESSION 0x00000002UL -#define CKF_SERIAL_SESSION 0x00000004UL - -#define CKO_PUBLIC_KEY 0x00000002UL -#define CKO_PRIVATE_KEY 0x00000003UL -#define CKO_SECRET_KEY 0x00000004UL - -#define CKK_RSA 0x00000000UL -#define CKK_DH 0x00000002UL -#define CKK_EC 0x00000003UL -#define CKK_GENERIC_SECRET 0x00000010UL -#define CKK_AES 0x0000001FUL -#define CKK_MD5_HMAC 0x00000027UL -#define CKK_SHA_1_HMAC 0x00000028UL -#define CKK_SHA256_HMAC 0x0000002bUL -#define CKK_SHA384_HMAC 0x0000002cUL -#define CKK_SHA512_HMAC 0x0000002dUL -#define CKK_SHA224_HMAC 0x0000002eUL - -#define CKA_CLASS 0x00000000UL -#define CKA_TOKEN 0x00000001UL -#define CKA_PRIVATE 0x00000002UL -#define CKA_LABEL 0x00000003UL -#define CKA_VALUE 0x00000011UL -#define CKA_OBJECT_ID 0x00000012UL -#define CKA_OWNER 0x00000084UL -#define CKA_TRUSTED 0x00000086UL -#define CKA_KEY_TYPE 0x00000100UL -#define CKA_ID 0x00000102UL -#define CKA_SENSITIVE 0x00000103UL -#define CKA_ENCRYPT 0x00000104UL -#define CKA_DECRYPT 0x00000105UL -#define CKA_WRAP 0x00000106UL -#define CKA_UNWRAP 0x00000107UL -#define CKA_SIGN 0x00000108UL -#define CKA_SIGN_RECOVER 0x00000109UL -#define CKA_VERIFY 0x0000010AUL -#define CKA_VERIFY_RECOVER 0x0000010BUL -#define CKA_DERIVE 0x0000010CUL -#define CKA_MODULUS 0x00000120UL -#define CKA_MODULUS_BITS 0x00000121UL -#define CKA_PUBLIC_EXPONENT 0x00000122UL -#define CKA_PRIVATE_EXPONENT 0x00000123UL -#define CKA_PRIME_1 0x00000124UL -#define CKA_PRIME_2 0x00000125UL -#define CKA_EXPONENT_1 0x00000126UL -#define CKA_EXPONENT_2 0x00000127UL -#define CKA_COEFFICIENT 0x00000128UL -#define CKA_PUBLIC_KEY_INFO 0x00000129UL -#define CKA_PRIME 0x00000130UL -#define CKA_BASE 0x00000132UL -#define CKA_PRIME_BITS 0x00000133UL -#define CKA_VALUE_BITS 0x00000160UL -#define CKA_VALUE_LEN 0x00000161UL -#define CKA_EXTRACTABLE 0x00000162UL -#define CKA_LOCAL 0x00000163UL -#define CKA_NEVER_EXTRACTABLE 0x00000164UL -#define CKA_ALWAYS_SENSITIVE 0x00000165UL -#define CKA_KEY_GEN_MECHANISM 0x00000166UL -#define CKA_MODIFIABLE 0x00000170UL -#define CKA_COPYABLE 0x00000171UL -#define CKA_DESTROYABLE 0x00000172UL -#define CKA_EC_PARAMS 0x00000180UL -#define CKA_EC_POINT 0x00000181UL -#define CKA_ALWAYS_AUTHENTICATE 0x00000202UL -#define CKA_HW_FEATURE_TYPE 0x00000300UL -#define CKA_RESET_ON_INIT 0x00000301UL -#define CKA_HAS_RESET 0x00000302UL - -#define CKM_RSA_PKCS_KEY_PAIR_GEN 0x00000000UL -#define CKM_RSA_X_509 0x00000003UL -#define CKM_DH_PKCS_KEY_PAIR_GEN 0x00000020UL -#define CKM_DH_PKCS_DERIVE 0x00000021UL -#define CKM_MD5_HMAC 0x00000211UL -#define CKM_SHA_1_HMAC 0x00000221UL -#define CKM_SHA256_HMAC 0x00000251UL -#define CKM_SHA224_HMAC 0x00000256UL -#define CKM_SHA384_HMAC 0x00000261UL -#define CKM_SHA512_HMAC 0x00000271UL -#define CKM_GENERIC_SECRET_KEY_GEN 0x00000350UL -#define CKM_EC_KEY_PAIR_GEN 0x00001040UL -#define CKM_ECDSA 0x00001041UL -#define CKM_ECDH1_DERIVE 0x00001050UL -#define CKM_ECDH1_COFACTOR_DERIVE 0x00001051UL -#define CKM_AES_KEY_GEN 0x00001080UL -#define CKM_AES_CBC 0x00001082UL -#define CKM_AES_GCM 0x00001087UL - -#define CKR_OK 0x00000000UL -#define CKR_MECHANISM_INVALID 0x00000070UL -#define CKR_SIGNATURE_INVALID 0x000000C0UL - -#define CKD_NULL 0x00000001UL - - -typedef unsigned char CK_BYTE; -typedef CK_BYTE CK_CHAR; -typedef CK_BYTE CK_UTF8CHAR; -typedef CK_BYTE CK_BBOOL; -typedef unsigned long int CK_ULONG; -typedef long int CK_LONG; -typedef CK_ULONG CK_FLAGS; -typedef CK_BYTE* CK_BYTE_PTR; -typedef CK_CHAR* CK_CHAR_PTR; -typedef CK_UTF8CHAR* CK_UTF8CHAR_PTR; -typedef CK_ULONG* CK_ULONG_PTR; -typedef void* CK_VOID_PTR; -typedef CK_VOID_PTR* CK_VOID_PTR_PTR; - - -typedef CK_ULONG CK_RV; - - -typedef struct CK_VERSION { - CK_BYTE major; - CK_BYTE minor; -} CK_VERSION; -typedef CK_VERSION* CK_VERSION_PTR; - - -/* Info Types */ -typedef struct CK_INFO { - CK_VERSION cryptokiVersion; - CK_UTF8CHAR manufacturerID[32]; - CK_FLAGS flags; - CK_UTF8CHAR libraryDescription[32]; - CK_VERSION libraryVersion; -} CK_INFO; -typedef CK_INFO* CK_INFO_PTR; - - -/* Slot Types */ -typedef CK_ULONG CK_SLOT_ID; -typedef CK_SLOT_ID* CK_SLOT_ID_PTR; - -typedef struct CK_SLOT_INFO { - CK_UTF8CHAR slotDescription[64]; - CK_UTF8CHAR manufacturerID[32]; - CK_FLAGS flags; - - CK_VERSION hardwareVersion; - CK_VERSION firmwareVersion; -} CK_SLOT_INFO; -typedef CK_SLOT_INFO* CK_SLOT_INFO_PTR; - - -/* Token Types */ -typedef struct CK_TOKEN_INFO { - CK_UTF8CHAR label[32]; - CK_UTF8CHAR manufacturerID[32]; - CK_UTF8CHAR model[16]; - CK_CHAR serialNumber[16]; - CK_FLAGS flags; - CK_ULONG ulMaxSessionCount; - CK_ULONG ulSessionCount; - CK_ULONG ulMaxRwSessionCount; - CK_ULONG ulRwSessionCount; - CK_ULONG ulMaxPinLen; - CK_ULONG ulMinPinLen; - CK_ULONG ulTotalPublicMemory; - CK_ULONG ulFreePublicMemory; - CK_ULONG ulTotalPrivateMemory; - CK_ULONG ulFreePrivateMemory; - CK_VERSION hardwareVersion; - CK_VERSION firmwareVersion; - CK_CHAR utcTime[16]; -} CK_TOKEN_INFO; -typedef CK_TOKEN_INFO* CK_TOKEN_INFO_PTR; - - -/* Session Types */ -typedef CK_ULONG CK_SESSION_HANDLE; -typedef CK_SESSION_HANDLE* CK_SESSION_HANDLE_PTR; - -typedef CK_ULONG CK_USER_TYPE; - -typedef CK_ULONG CK_STATE; - -typedef struct CK_SESSION_INFO { - CK_SLOT_ID slotID; - CK_STATE state; - CK_FLAGS flags; - CK_ULONG ulDeviceError; -} CK_SESSION_INFO; -typedef CK_SESSION_INFO* CK_SESSION_INFO_PTR; - - -/* Object Types */ -typedef CK_ULONG CK_OBJECT_HANDLE; -typedef CK_OBJECT_HANDLE* CK_OBJECT_HANDLE_PTR; - -typedef CK_ULONG CK_OBJECT_CLASS; -typedef CK_OBJECT_CLASS* CK_OBJECT_CLASS_PTR; - -typedef CK_ULONG CK_KEY_TYPE; - -typedef CK_ULONG CK_ATTRIBUTE_TYPE; - -typedef struct CK_ATTRIBUTE { - CK_ATTRIBUTE_TYPE type; - CK_VOID_PTR pValue; - CK_ULONG ulValueLen; -} CK_ATTRIBUTE; -typedef CK_ATTRIBUTE* CK_ATTRIBUTE_PTR; - - -/* Mechanism Types */ -typedef CK_ULONG CK_MECHANISM_TYPE; -typedef CK_MECHANISM_TYPE* CK_MECHANISM_TYPE_PTR; - -typedef struct CK_MECHANISM { - CK_MECHANISM_TYPE mechanism; - CK_VOID_PTR pParameter; - CK_ULONG ulParameterLen; -} CK_MECHANISM; -typedef CK_MECHANISM* CK_MECHANISM_PTR; - -typedef struct CK_MECHANISM_INFO { - CK_ULONG ulMinKeySize; - CK_ULONG ulMaxKeySize; - CK_FLAGS flags; -} CK_MECHANISM_INFO; -typedef CK_MECHANISM_INFO * CK_MECHANISM_INFO_PTR; - - -typedef CK_ULONG CK_NOTIFICATION; - -typedef CK_RV (*CK_NOTIFY)(CK_SESSION_HANDLE hSession, CK_NOTIFICATION event, - CK_VOID_PTR pApplication); - - -/* Threading types. */ -typedef CK_RV (*CK_CREATEMUTEX)(CK_VOID_PTR_PTR ppMutex); -typedef CK_RV (*CK_DESTROYMUTEX)(CK_VOID_PTR pMutex); -typedef CK_RV (*CK_LOCKMUTEX)(CK_VOID_PTR pMutex); -typedef CK_RV (*CK_UNLOCKMUTEX)(CK_VOID_PTR pMutex); - -typedef struct CK_C_INITIALIZE_ARGS { - CK_CREATEMUTEX CreateMutex; - CK_DESTROYMUTEX DestroyMutex; - CK_LOCKMUTEX LockMutex; - CK_UNLOCKMUTEX UnlockMutex; - CK_FLAGS flags; - CK_VOID_PTR pReserved; -} CK_C_INITIALIZE_ARGS; -typedef CK_C_INITIALIZE_ARGS* CK_C_INITIALIZE_ARGS_PTR; - - -/* Cryptographic algorithm types. */ -typedef CK_ULONG CK_EC_KDF_TYPE; - -typedef struct CK_ECDH1_DERIVE_PARAMS { - CK_EC_KDF_TYPE kdf; - CK_ULONG ulSharedDataLen; - CK_BYTE_PTR pSharedData; - CK_ULONG ulPublicDataLen; - CK_BYTE_PTR pPublicData; -} CK_ECDH1_DERIVE_PARAMS; -typedef CK_ECDH1_DERIVE_PARAMS* CK_ECDH1_DERIVE_PARAMS_PTR; - - -typedef struct CK_GCM_PARAMS { - CK_BYTE_PTR pIv; - CK_ULONG ulIvLen; - CK_ULONG ulIvBits; - CK_BYTE_PTR pAAD; - CK_ULONG ulAADLen; - CK_ULONG ulTagBits; -} CK_GCM_PARAMS; -typedef CK_GCM_PARAMS* CK_GCM_PARAMS_PTR; - -/* Function list types. */ -typedef struct CK_FUNCTION_LIST CK_FUNCTION_LIST; -typedef CK_FUNCTION_LIST* CK_FUNCTION_LIST_PTR; -typedef CK_FUNCTION_LIST_PTR* CK_FUNCTION_LIST_PTR_PTR; - -typedef CK_RV (*CK_C_GetFunctionList)(CK_FUNCTION_LIST_PTR_PTR ppFunctionList); - -struct CK_FUNCTION_LIST { - CK_VERSION version; - - CK_RV (*C_Initialize)(CK_VOID_PTR pInitArgs); - CK_RV (*C_Finalize)(CK_VOID_PTR pReserved); - CK_RV (*C_GetInfo)(CK_INFO_PTR pInfo); - CK_RV (*C_GetFunctionList)(CK_FUNCTION_LIST_PTR_PTR ppFunctionList); - CK_RV (*C_GetSlotList)(CK_BBOOL tokenPresent, CK_SLOT_ID_PTR pSlotList, - CK_ULONG_PTR pulCount); - CK_RV (*C_GetSlotInfo)(CK_SLOT_ID slotID, CK_SLOT_INFO_PTR pInfo); - CK_RV (*C_GetTokenInfo)(CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo); - CK_RV (*C_GetMechanismList)(CK_SLOT_ID slotID, - CK_MECHANISM_TYPE_PTR pMechanismList, - CK_ULONG_PTR pulCount); - CK_RV (*C_GetMechanismInfo)(CK_SLOT_ID slotID, CK_MECHANISM_TYPE type, - CK_MECHANISM_INFO_PTR pInfo); - CK_RV (*C_InitToken)(CK_SLOT_ID slotID, CK_UTF8CHAR_PTR pPin, - CK_ULONG ulPinLen, CK_UTF8CHAR_PTR pLabel); - CK_RV (*C_InitPIN)(CK_SESSION_HANDLE hSession, CK_UTF8CHAR_PTR pPin, - CK_ULONG ulPinLen); - CK_RV (*C_SetPIN)(CK_SESSION_HANDLE hSession, CK_UTF8CHAR_PTR pOldPin, - CK_ULONG ulOldLen, CK_UTF8CHAR_PTR pNewPin, - CK_ULONG ulNewLen); - CK_RV (*C_OpenSession)(CK_SLOT_ID slotID, CK_FLAGS flags, - CK_VOID_PTR pApplication, CK_NOTIFY Notify, - CK_SESSION_HANDLE_PTR phSession); - CK_RV (*C_CloseSession)(CK_SESSION_HANDLE hSession); - CK_RV (*C_CloseAllSessions)(CK_SLOT_ID slotID); - CK_RV (*C_GetSessionInfo)(CK_SESSION_HANDLE hSession, - CK_SESSION_INFO_PTR pInfo); - CK_RV (*C_GetOperationState)(CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pOperationState, - CK_ULONG_PTR pulOperationStateLen); - CK_RV (*C_SetOperationState)(CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pOperationState, - CK_ULONG ulOperationStateLen, - CK_OBJECT_HANDLE hEncryptionKey, - CK_OBJECT_HANDLE hAuthenticationKey); - CK_RV (*C_Login)(CK_SESSION_HANDLE hSession, CK_USER_TYPE userType, - CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen); - CK_RV (*C_Logout)(CK_SESSION_HANDLE hSession); - CK_RV (*C_CreateObject)(CK_SESSION_HANDLE hSession, - CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, - CK_OBJECT_HANDLE_PTR phObject); - CK_RV (*C_CopyObject)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, - CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, - CK_OBJECT_HANDLE_PTR phNewObject); - CK_RV (*C_DestroyObject)(CK_SESSION_HANDLE hSession, - CK_OBJECT_HANDLE hObject); - CK_RV (*C_GetObjectSize)(CK_SESSION_HANDLE hSession, - CK_OBJECT_HANDLE hObject, CK_ULONG_PTR pulSize); - CK_RV (*C_GetAttributeValue)(CK_SESSION_HANDLE hSession, - CK_OBJECT_HANDLE hObject, - CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount); - CK_RV (*C_SetAttributeValue)(CK_SESSION_HANDLE hSession, - CK_OBJECT_HANDLE hObject, - CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount); - CK_RV (*C_FindObjectsInit)(CK_SESSION_HANDLE hSession, - CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount); - CK_RV (*C_FindObjects)(CK_SESSION_HANDLE hSession, - CK_OBJECT_HANDLE_PTR phObject, - CK_ULONG ulMaxObjectCount, - CK_ULONG_PTR pulObjectCount); - CK_RV (*C_FindObjectsFinal)(CK_SESSION_HANDLE hSession); - CK_RV (*C_EncryptInit)(CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey); - CK_RV (*C_Encrypt)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, - CK_ULONG ulDataLen, CK_BYTE_PTR pEncryptedData, - CK_ULONG_PTR pulEncryptedDataLen); - CK_RV (*C_EncryptUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, - CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, - CK_ULONG_PTR pulEncryptedPartLen); - CK_RV (*C_EncryptFinal)(CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pLastEncryptedPart, - CK_ULONG_PTR pulLastEncryptedPartLen); - CK_RV (*C_DecryptInit)(CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey); - CK_RV (*C_Decrypt)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedData, - CK_ULONG ulEncryptedDataLen, CK_BYTE_PTR pData, - CK_ULONG_PTR pulDataLen); - CK_RV (*C_DecryptUpdate)(CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pEncryptedPart, - CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, - CK_ULONG_PTR pulPartLen); - CK_RV (*C_DecryptFinal)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pLastPart, - CK_ULONG_PTR pulLastPartLen); - CK_RV (*C_DigestInit)(CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism); - CK_RV (*C_Digest)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, - CK_ULONG ulDataLen, CK_BYTE_PTR pDigest, - CK_ULONG_PTR pulDigestLen); - CK_RV (*C_DigestUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, - CK_ULONG ulPartLen); - CK_RV (*C_DigestKey)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hKey); - CK_RV (*C_DigestFinal)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pDigest, - CK_ULONG_PTR pulDigestLen); - CK_RV (*C_SignInit)(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hKey); - CK_RV (*C_Sign)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, - CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, - CK_ULONG_PTR pulSignatureLen); - CK_RV (*C_SignUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, - CK_ULONG ulPartLen); - CK_RV (*C_SignFinal)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, - CK_ULONG_PTR pulSignatureLen); - CK_RV (*C_SignRecoverInit)(CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hKey); - CK_RV (*C_SignRecover)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, - CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, - CK_ULONG_PTR pulSignatureLen); - CK_RV (*C_VerifyInit)(CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey); - CK_RV (*C_Verify)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, - CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, - CK_ULONG ulSignatureLen); - CK_RV (*C_VerifyUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, - CK_ULONG ulPartLen); - CK_RV (*C_VerifyFinal)(CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen); - CK_RV (*C_VerifyRecoverInit)(CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hKey); - CK_RV (*C_VerifyRecover)(CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen, - CK_BYTE_PTR pData, CK_ULONG_PTR pulDataLen); - CK_RV (*C_DigestEncryptUpdate)(CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pPart, CK_ULONG ulPartLen, - CK_BYTE_PTR pEncryptedPart, - CK_ULONG_PTR pulEncryptedPartLen); - CK_RV (*C_DecryptDigestUpdate)(CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pEncryptedPart, - CK_ULONG ulEncryptedPartLen, - CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen); - CK_RV (*C_SignEncryptUpdate)(CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pPart, CK_ULONG ulPartLen, - CK_BYTE_PTR pEncryptedPart, - CK_ULONG_PTR pulEncryptedPartLen); - CK_RV (*C_DecryptVerifyUpdate)(CK_SESSION_HANDLE hSession, - CK_BYTE_PTR pEncryptedPart, - CK_ULONG ulEncryptedPartLen, - CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen); - CK_RV (*C_GenerateKey)(CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, - CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, - CK_OBJECT_HANDLE_PTR phKey); - CK_RV (*C_GenerateKeyPair)(CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, - CK_ATTRIBUTE_PTR pPublicKeyTemplate, - CK_ULONG ulPublicKeyAttributeCount, - CK_ATTRIBUTE_PTR pPrivateKeyTemplate, - CK_ULONG ulPrivateKeyAttributeCount, - CK_OBJECT_HANDLE_PTR phPublicKey, - CK_OBJECT_HANDLE_PTR phPrivateKey); - CK_RV (*C_WrapKey)(CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hWrappingKey, CK_OBJECT_HANDLE hKey, - CK_BYTE_PTR pWrappedKey, - CK_ULONG_PTR pulWrappedKeyLen); - CK_RV (*C_UnwrapKey)(CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hUnwrappingKey, - CK_BYTE_PTR pWrappedKey, CK_ULONG ulWrappedKeyLen, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulAttributeCount, - CK_OBJECT_HANDLE_PTR phKey); - CK_RV (*C_DeriveKey)(CK_SESSION_HANDLE hSession, - CK_MECHANISM_PTR pMechanism, - CK_OBJECT_HANDLE hBaseKey, - CK_ATTRIBUTE_PTR pTemplate, - CK_ULONG ulAttributeCount, - CK_OBJECT_HANDLE_PTR phKey); - CK_RV (*C_SeedRandom)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSeed, - CK_ULONG ulSeedLen); - CK_RV (*C_GenerateRandom)(CK_SESSION_HANDLE hSession, - CK_BYTE_PTR RandomData, CK_ULONG ulRandomLen); - CK_RV (*C_GetFunctionStatus)(CK_SESSION_HANDLE hSession); - CK_RV (*C_CancelFunction)(CK_SESSION_HANDLE hSession); - CK_RV (*C_WaitForSlotEvent)(CK_FLAGS flags, CK_SLOT_ID_PTR pSlot, - CK_VOID_PTR pRserved); - -}; - -#ifdef __cplusplus -} -#endif - -#endif /* _PKCS11_H_ */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/pkcs12.h b/client/wolfssl/wolfssl/wolfcrypt/pkcs12.h deleted file mode 100644 index 7082b62..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/pkcs12.h +++ /dev/null @@ -1,72 +0,0 @@ -/* pkcs12.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLF_CRYPT_PKCS12_H -#define WOLF_CRYPT_PKCS12_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef __cplusplus - extern "C" { -#endif - -#ifndef WOLFSSL_TYPES_DEFINED /* do not redeclare from ssl.h */ - typedef struct WC_PKCS12 WC_PKCS12; -#endif - -typedef struct WC_DerCertList { /* dereferenced in ssl.c */ - byte* buffer; - word32 bufferSz; - struct WC_DerCertList* next; -} WC_DerCertList; - -/* default values for creating PKCS12 */ -enum { - WC_PKCS12_ITT_DEFAULT = 2048, - WC_PKCS12_VERSION_DEFAULT = 3, - WC_PKCS12_MAC_DEFAULT = 1, -}; - -WOLFSSL_API WC_PKCS12* wc_PKCS12_new(void); -WOLFSSL_API void wc_PKCS12_free(WC_PKCS12* pkcs12); -WOLFSSL_API int wc_d2i_PKCS12(const byte* der, word32 derSz, WC_PKCS12* pkcs12); -WOLFSSL_API int wc_i2d_PKCS12(WC_PKCS12* pkcs12, byte** der, int* derSz); -WOLFSSL_API int wc_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw, - byte** pkey, word32* pkeySz, byte** cert, word32* certSz, - WC_DerCertList** ca); -WOLFSSL_API WC_PKCS12* wc_PKCS12_create(char* pass, word32 passSz, - char* name, byte* key, word32 keySz, byte* cert, word32 certSz, - WC_DerCertList* ca, int nidKey, int nidCert, int iter, int macIter, - int keyType, void* heap); - - -WOLFSSL_LOCAL int wc_PKCS12_SetHeap(WC_PKCS12* pkcs12, void* heap); -WOLFSSL_LOCAL void* wc_PKCS12_GetHeap(WC_PKCS12* pkcs12); - -WOLFSSL_LOCAL void wc_FreeCertList(WC_DerCertList* list, void* heap); - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLF_CRYPT_PKCS12_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/pkcs7.h b/client/wolfssl/wolfssl/wolfcrypt/pkcs7.h deleted file mode 100644 index 0292d1d..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/pkcs7.h +++ /dev/null @@ -1,504 +0,0 @@ -/* pkcs7.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/pkcs7.h -*/ - -#ifndef WOLF_CRYPT_PKCS7_H -#define WOLF_CRYPT_PKCS7_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef HAVE_PKCS7 - -#ifndef NO_ASN - #include <wolfssl/wolfcrypt/asn.h> -#endif -#include <wolfssl/wolfcrypt/asn_public.h> -#include <wolfssl/wolfcrypt/random.h> -#ifndef NO_AES - #include <wolfssl/wolfcrypt/aes.h> -#endif -#ifndef NO_DES3 - #include <wolfssl/wolfcrypt/des3.h> -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -/* Max number of certificates that PKCS7 structure can parse */ -#ifndef MAX_PKCS7_CERTS - #define MAX_PKCS7_CERTS 4 -#endif - -#ifndef MAX_ORI_TYPE_SZ - #define MAX_ORI_TYPE_SZ MAX_OID_SZ -#endif -#ifndef MAX_ORI_VALUE_SZ - #define MAX_ORI_VALUE_SZ 512 -#endif - -#ifndef MAX_SIGNED_ATTRIBS_SZ - #define MAX_SIGNED_ATTRIBS_SZ 7 -#endif - -#ifndef MAX_AUTH_ATTRIBS_SZ - #define MAX_AUTH_ATTRIBS_SZ 7 -#endif - -#ifndef MAX_UNAUTH_ATTRIBS_SZ - #define MAX_UNAUTH_ATTRIBS_SZ 7 -#endif - -/* PKCS#7 content types, ref RFC 2315 (Section 14) */ -enum PKCS7_TYPES { - PKCS7_MSG = 650, /* 1.2.840.113549.1.7 */ - DATA = 651, /* 1.2.840.113549.1.7.1 */ - SIGNED_DATA = 652, /* 1.2.840.113549.1.7.2 */ - ENVELOPED_DATA = 653, /* 1.2.840.113549.1.7.3 */ - SIGNED_AND_ENVELOPED_DATA = 654, /* 1.2.840.113549.1.7.4 */ - DIGESTED_DATA = 655, /* 1.2.840.113549.1.7.5 */ - ENCRYPTED_DATA = 656, /* 1.2.840.113549.1.7.6 */ -#if defined(HAVE_LIBZ) && !defined(NO_PKCS7_COMPRESSED_DATA) - COMPRESSED_DATA = 678, /* 1.2.840.113549.1.9.16.1.9, RFC 3274 */ -#endif - FIRMWARE_PKG_DATA = 685, /* 1.2.840.113549.1.9.16.1.16, RFC 4108 */ - AUTH_ENVELOPED_DATA = 692 /* 1.2.840.113549.1.9.16.1.23, RFC 5083 */ -}; - -enum PKCS7_STATE { - WC_PKCS7_START = 0, - - /* decode encrypted */ - WC_PKCS7_STAGE2, - WC_PKCS7_STAGE3, - WC_PKCS7_STAGE4, - WC_PKCS7_STAGE5, - WC_PKCS7_STAGE6, - - WC_PKCS7_VERIFY_STAGE2, - WC_PKCS7_VERIFY_STAGE3, - WC_PKCS7_VERIFY_STAGE4, - WC_PKCS7_VERIFY_STAGE5, - WC_PKCS7_VERIFY_STAGE6, - - /* parse info set */ - WC_PKCS7_INFOSET_START, - WC_PKCS7_INFOSET_BER, - WC_PKCS7_INFOSET_STAGE1, - WC_PKCS7_INFOSET_STAGE2, - WC_PKCS7_INFOSET_END, - - /* decode enveloped data */ - WC_PKCS7_ENV_2, - WC_PKCS7_ENV_3, - WC_PKCS7_ENV_4, - WC_PKCS7_ENV_5, - - /* decode auth enveloped */ - WC_PKCS7_AUTHENV_2, - WC_PKCS7_AUTHENV_3, - WC_PKCS7_AUTHENV_4, - WC_PKCS7_AUTHENV_5, - WC_PKCS7_AUTHENV_6, - WC_PKCS7_AUTHENV_ATRB, - WC_PKCS7_AUTHENV_ATRBEND, - WC_PKCS7_AUTHENV_7, - - /* decryption state types */ - WC_PKCS7_DECRYPT_KTRI, - WC_PKCS7_DECRYPT_KTRI_2, - WC_PKCS7_DECRYPT_KTRI_3, - - - WC_PKCS7_DECRYPT_KARI, - WC_PKCS7_DECRYPT_KEKRI, - WC_PKCS7_DECRYPT_PWRI, - WC_PKCS7_DECRYPT_ORI, - - WC_PKCS7_DECRYPT_DONE, - -}; - -enum Pkcs7_Misc { - PKCS7_NONCE_SZ = 16, - MAX_ENCRYPTED_KEY_SZ = 512, /* max enc. key size, RSA <= 4096 */ - MAX_CONTENT_KEY_LEN = 32, /* highest current cipher is AES-256-CBC */ - MAX_CONTENT_IV_SIZE = 16, /* highest current is AES128 */ -#ifndef NO_AES - MAX_CONTENT_BLOCK_LEN = AES_BLOCK_SIZE, -#else - MAX_CONTENT_BLOCK_LEN = DES_BLOCK_SIZE, -#endif - MAX_RECIP_SZ = MAX_VERSION_SZ + - MAX_SEQ_SZ + ASN_NAME_MAX + MAX_SN_SZ + - MAX_SEQ_SZ + MAX_ALGO_SZ + 1 + MAX_ENCRYPTED_KEY_SZ, -#if (defined(HAVE_FIPS) && defined(HAVE_FIPS_VERSION) && \ - (HAVE_FIPS_VERSION >= 2)) || defined(HAVE_SELFTEST) - /* In the event of fips cert 3389 or CAVP selftest build, these enums are - * not in aes.h for use with pkcs7 so enumerate it here outside the fips - * boundary */ - GCM_NONCE_MID_SZ = 12, /* The usual default nonce size for AES-GCM. */ - CCM_NONCE_MIN_SZ = 7, -#endif -}; - -enum Cms_Options { - CMS_SKID = 1, - CMS_ISSUER_AND_SERIAL_NUMBER = 2, -}; -#define DEGENERATE_SID 3 - -/* CMS/PKCS#7 RecipientInfo types, RFC 5652, Section 6.2 */ -enum Pkcs7_RecipientInfo_Types { - PKCS7_KTRI = 0, - PKCS7_KARI = 1, - PKCS7_KEKRI = 2, - PKCS7_PWRI = 3, - PKCS7_ORI = 4 -}; - -typedef struct PKCS7Attrib { - const byte* oid; - word32 oidSz; - const byte* value; - word32 valueSz; -} PKCS7Attrib; - - -typedef struct PKCS7DecodedAttrib { - struct PKCS7DecodedAttrib* next; - byte* oid; - word32 oidSz; - byte* value; - word32 valueSz; -} PKCS7DecodedAttrib; - -typedef struct PKCS7State PKCS7State; -typedef struct Pkcs7Cert Pkcs7Cert; -typedef struct Pkcs7EncodedRecip Pkcs7EncodedRecip; -typedef struct PKCS7 PKCS7; -typedef struct PKCS7 PKCS7_SIGNED; -typedef struct PKCS7SignerInfo PKCS7SignerInfo; - -/* OtherRecipientInfo decrypt callback prototype */ -typedef int (*CallbackOriDecrypt)(PKCS7* pkcs7, byte* oriType, word32 oriTypeSz, - byte* oriValue, word32 oriValueSz, - byte* decryptedKey, word32* decryptedKeySz, - void* ctx); -typedef int (*CallbackOriEncrypt)(PKCS7* pkcs7, byte* cek, word32 cekSz, - byte* oriType, word32* oriTypeSz, - byte* oriValue, word32* oriValueSz, - void* ctx); -typedef int (*CallbackDecryptContent)(PKCS7* pkcs7, int encryptOID, - byte* iv, int ivSz, byte* aad, word32 aadSz, - byte* authTag, word32 authTagSz, byte* in, - int inSz, byte* out, void* ctx); -typedef int (*CallbackWrapCEK)(PKCS7* pkcs7, byte* cek, word32 cekSz, - byte* keyId, word32 keyIdSz, - byte* originKey, word32 originKeySz, - byte* out, word32 outSz, - int keyWrapAlgo, int type, int dir); - -#if defined(HAVE_PKCS7_RSA_RAW_SIGN_CALLBACK) && !defined(NO_RSA) -/* RSA sign raw digest callback, user builds DigestInfo */ -typedef int (*CallbackRsaSignRawDigest)(PKCS7* pkcs7, byte* digest, - word32 digestSz, byte* out, word32 outSz, - byte* privateKey, word32 privateKeySz, - int devId, int hashOID); -#endif - -/* Public Structure Warning: - * Existing members must not be changed to maintain backwards compatibility! - */ -struct PKCS7 { - WC_RNG* rng; - PKCS7Attrib* signedAttribs; - byte* content; /* inner content, not owner */ - byte* contentDynamic; /* content if constructed OCTET_STRING */ - byte* singleCert; /* recipient cert, DER, not owner */ - const byte* issuer; /* issuer name of singleCert */ - byte* privateKey; /* private key, DER, not owner */ - void* heap; /* heap hint for dynamic memory */ -#ifdef ASN_BER_TO_DER - byte* der; /* DER encoded version of message */ - word32 derSz; -#endif - byte* cert[MAX_PKCS7_CERTS]; - - /* Encrypted-data Content Type */ - byte* encryptionKey; /* block cipher encryption key */ - PKCS7Attrib* unprotectedAttribs; /* optional */ - PKCS7DecodedAttrib* decodedAttrib; /* linked list of decoded attribs */ - - /* Enveloped-data optional ukm, not owner */ - byte* ukm; - word32 ukmSz; - - word32 encryptionKeySz; /* size of key buffer, bytes */ - word32 unprotectedAttribsSz; - word32 contentSz; /* content size */ - word32 singleCertSz; /* size of recipient cert buffer, bytes */ - word32 issuerSz; /* length of issuer name */ - word32 issuerSnSz; /* length of serial number */ - - word32 publicKeySz; - word32 publicKeyOID; /* key OID (RSAk, ECDSAk, etc) */ - word32 privateKeySz; /* size of private key buffer, bytes */ - word32 signedAttribsSz; - int contentOID; /* PKCS#7 content type OID sum */ - int hashOID; - int encryptOID; /* key encryption algorithm OID */ - int keyWrapOID; /* key wrap algorithm OID */ - int keyAgreeOID; /* key agreement algorithm OID */ - int devId; /* device ID for HW based private key */ - byte issuerHash[KEYID_SIZE]; /* hash of all alt Names */ - byte issuerSn[MAX_SN_SZ]; /* singleCert's serial number */ - byte publicKey[MAX_RSA_INT_SZ + MAX_RSA_E_SZ]; /* MAX RSA key size (m + e)*/ - word32 certSz[MAX_PKCS7_CERTS]; - - /* flags - up to 16-bits */ - word16 isDynamic:1; - word16 noDegenerate:1; /* allow degenerate case in verify function */ - word16 detached:1; /* generate detached SignedData signature bundles */ - - byte contentType[MAX_OID_SZ]; /* custom contentType byte array */ - word32 contentTypeSz; /* size of contentType, bytes */ - - int sidType; /* SignerIdentifier type to use, of type - Pkcs7_SignerIdentifier_Types, default to - SID_ISSUER_AND_SERIAL_NUMBER */ - byte issuerSubjKeyId[KEYID_SIZE]; /* SubjectKeyIdentifier of singleCert */ - Pkcs7Cert* certList; /* certificates list for SignedData set */ - Pkcs7EncodedRecip* recipList; /* recipients list */ - byte* cek; /* content encryption key, random, dynamic */ - word32 cekSz; /* size of cek, bytes */ - byte* pass; /* password, for PWRI decryption */ - word32 passSz; /* size of pass, bytes */ - int kekEncryptOID; /* KEK encryption algorithm OID */ - - CallbackOriEncrypt oriEncryptCb; /* ORI encrypt callback */ - CallbackOriDecrypt oriDecryptCb; /* ORI decrypt callback */ - void* oriEncryptCtx; /* ORI encrypt user context ptr */ - void* oriDecryptCtx; /* ORI decrypt user context ptr */ - - PKCS7Attrib* authAttribs; /* authenticated attribs */ - word32 authAttribsSz; - PKCS7Attrib* unauthAttribs; /* unauthenticated attribs */ - word32 unauthAttribsSz; - -#ifndef NO_PKCS7_STREAM - PKCS7State* stream; -#endif - word32 state; - - word16 skipDefaultSignedAttribs:1; /* skip adding default signed attribs */ - - byte version; /* 1 for RFC 2315 and 3 for RFC 4108 */ - PKCS7SignerInfo* signerInfo; - CallbackDecryptContent decryptionCb; - CallbackWrapCEK wrapCEKCb; - void* decryptionCtx; - - byte* signature; - byte* plainDigest; - byte* pkcs7Digest; - word32 signatureSz; - word32 plainDigestSz; - word32 pkcs7DigestSz; - -#if defined(HAVE_PKCS7_RSA_RAW_SIGN_CALLBACK) && !defined(NO_RSA) - CallbackRsaSignRawDigest rsaSignRawDigestCb; -#endif - - /* used by DecodeEnvelopedData with multiple encrypted contents */ - byte* cachedEncryptedContent; - word32 cachedEncryptedContentSz; - /* !! NEW DATA MEMBERS MUST BE ADDED AT END !! */ -}; - -WOLFSSL_API PKCS7* wc_PKCS7_New(void* heap, int devId); -WOLFSSL_API int wc_PKCS7_Init(PKCS7* pkcs7, void* heap, int devId); -WOLFSSL_API int wc_PKCS7_InitWithCert(PKCS7* pkcs7, byte* der, word32 derSz); -WOLFSSL_API int wc_PKCS7_AddCertificate(PKCS7* pkcs7, byte* der, word32 derSz); -WOLFSSL_API void wc_PKCS7_Free(PKCS7* pkcs7); - -WOLFSSL_API int wc_PKCS7_GetAttributeValue(PKCS7* pkcs7, const byte* oid, - word32 oidSz, byte* out, word32* outSz); - -WOLFSSL_API int wc_PKCS7_SetSignerIdentifierType(PKCS7* pkcs7, int type); -WOLFSSL_API int wc_PKCS7_SetContentType(PKCS7* pkcs7, byte* contentType, - word32 sz); -WOLFSSL_API int wc_PKCS7_GetPadSize(word32 inputSz, word32 blockSz); -WOLFSSL_API int wc_PKCS7_PadData(byte* in, word32 inSz, byte* out, word32 outSz, - word32 blockSz); - -/* CMS/PKCS#7 Data */ -WOLFSSL_API int wc_PKCS7_EncodeData(PKCS7* pkcs7, byte* output, - word32 outputSz); - -/* CMS/PKCS#7 SignedData */ -WOLFSSL_API int wc_PKCS7_SetDetached(PKCS7* pkcs7, word16 flag); -WOLFSSL_API int wc_PKCS7_NoDefaultSignedAttribs(PKCS7* pkcs7); -WOLFSSL_API int wc_PKCS7_EncodeSignedData(PKCS7* pkcs7, - byte* output, word32 outputSz); -WOLFSSL_API int wc_PKCS7_EncodeSignedData_ex(PKCS7* pkcs7, const byte* hashBuf, - word32 hashSz, byte* outputHead, - word32* outputHeadSz, - byte* outputFoot, - word32* outputFootSz); -WOLFSSL_API void wc_PKCS7_AllowDegenerate(PKCS7* pkcs7, word16 flag); -WOLFSSL_API int wc_PKCS7_VerifySignedData(PKCS7* pkcs7, - byte* pkiMsg, word32 pkiMsgSz); -WOLFSSL_API int wc_PKCS7_VerifySignedData_ex(PKCS7* pkcs7, const byte* hashBuf, - word32 hashSz, byte* pkiMsgHead, - word32 pkiMsgHeadSz, byte* pkiMsgFoot, - word32 pkiMsgFootSz); - -WOLFSSL_API int wc_PKCS7_GetSignerSID(PKCS7* pkcs7, byte* out, word32* outSz); - -/* CMS single-shot API for Signed FirmwarePkgData */ -WOLFSSL_API int wc_PKCS7_EncodeSignedFPD(PKCS7* pkcs7, byte* privateKey, - word32 privateKeySz, int signOID, - int hashOID, byte* content, - word32 contentSz, - PKCS7Attrib* signedAttribs, - word32 signedAttribsSz, byte* output, - word32 outputSz); -#ifndef NO_PKCS7_ENCRYPTED_DATA -/* CMS single-shot API for Signed Encrypted FirmwarePkgData */ -WOLFSSL_API int wc_PKCS7_EncodeSignedEncryptedFPD(PKCS7* pkcs7, - byte* encryptKey, word32 encryptKeySz, - byte* privateKey, word32 privateKeySz, - int encryptOID, int signOID, - int hashOID, byte* content, - word32 contentSz, - PKCS7Attrib* unprotectedAttribs, - word32 unprotectedAttribsSz, - PKCS7Attrib* signedAttribs, - word32 signedAttribsSz, - byte* output, word32 outputSz); -#endif /* NO_PKCS7_ENCRYPTED_DATA */ -#if defined(HAVE_LIBZ) && !defined(NO_PKCS7_COMPRESSED_DATA) -/* CMS single-shot API for Signed Compressed FirmwarePkgData */ -WOLFSSL_API int wc_PKCS7_EncodeSignedCompressedFPD(PKCS7* pkcs7, - byte* privateKey, word32 privateKeySz, - int signOID, int hashOID, - byte* content, word32 contentSz, - PKCS7Attrib* signedAttribs, - word32 signedAttribsSz, byte* output, - word32 outputSz); - -#ifndef NO_PKCS7_ENCRYPTED_DATA -/* CMS single-shot API for Signed Encrypted Compressed FirmwarePkgData */ -WOLFSSL_API int wc_PKCS7_EncodeSignedEncryptedCompressedFPD(PKCS7* pkcs7, - byte* encryptKey, word32 encryptKeySz, - byte* privateKey, word32 privateKeySz, - int encryptOID, int signOID, - int hashOID, byte* content, - word32 contentSz, - PKCS7Attrib* unprotectedAttribs, - word32 unprotectedAttribsSz, - PKCS7Attrib* signedAttribs, - word32 signedAttribsSz, - byte* output, word32 outputSz); -#endif /* !NO_PKCS7_ENCRYPTED_DATA */ -#endif /* HAVE_LIBZ && !NO_PKCS7_COMPRESSED_DATA */ - -/* EnvelopedData and AuthEnvelopedData RecipientInfo functions */ -WOLFSSL_API int wc_PKCS7_AddRecipient_KTRI(PKCS7* pkcs7, const byte* cert, - word32 certSz, int options); -WOLFSSL_API int wc_PKCS7_AddRecipient_KARI(PKCS7* pkcs7, const byte* cert, - word32 certSz, int keyWrapOID, - int keyAgreeOID, byte* ukm, - word32 ukmSz, int options); - -WOLFSSL_API int wc_PKCS7_SetKey(PKCS7* pkcs7, byte* key, word32 keySz); -WOLFSSL_API int wc_PKCS7_AddRecipient_KEKRI(PKCS7* pkcs7, int keyWrapOID, - byte* kek, word32 kekSz, - byte* keyID, word32 keyIdSz, - void* timePtr, byte* otherOID, - word32 otherOIDSz, byte* other, - word32 otherSz, int options); - -WOLFSSL_API int wc_PKCS7_SetPassword(PKCS7* pkcs7, byte* passwd, word32 pLen); -WOLFSSL_API int wc_PKCS7_AddRecipient_PWRI(PKCS7* pkcs7, byte* passwd, - word32 pLen, byte* salt, - word32 saltSz, int kdfOID, - int prfOID, int iterations, - int kekEncryptOID, int options); -WOLFSSL_API int wc_PKCS7_SetOriEncryptCtx(PKCS7* pkcs7, void* ctx); -WOLFSSL_API int wc_PKCS7_SetOriDecryptCtx(PKCS7* pkcs7, void* ctx); -WOLFSSL_API int wc_PKCS7_SetOriDecryptCb(PKCS7* pkcs7, CallbackOriDecrypt cb); -WOLFSSL_API int wc_PKCS7_AddRecipient_ORI(PKCS7* pkcs7, CallbackOriEncrypt cb, - int options); -WOLFSSL_API int wc_PKCS7_SetWrapCEKCb(PKCS7* pkcs7, - CallbackWrapCEK wrapCEKCb); - -#if defined(HAVE_PKCS7_RSA_RAW_SIGN_CALLBACK) && !defined(NO_RSA) -WOLFSSL_API int wc_PKCS7_SetRsaSignRawDigestCb(PKCS7* pkcs7, - CallbackRsaSignRawDigest cb); -#endif - -/* CMS/PKCS#7 EnvelopedData */ -WOLFSSL_API int wc_PKCS7_EncodeEnvelopedData(PKCS7* pkcs7, - byte* output, word32 outputSz); -WOLFSSL_API int wc_PKCS7_DecodeEnvelopedData(PKCS7* pkcs7, byte* pkiMsg, - word32 pkiMsgSz, byte* output, - word32 outputSz); - -/* CMS/PKCS#7 AuthEnvelopedData */ -WOLFSSL_API int wc_PKCS7_EncodeAuthEnvelopedData(PKCS7* pkcs7, - byte* output, word32 outputSz); -WOLFSSL_API int wc_PKCS7_DecodeAuthEnvelopedData(PKCS7* pkcs7, byte* pkiMsg, - word32 pkiMsgSz, byte* output, - word32 outputSz); - -/* CMS/PKCS#7 EncryptedData */ -#ifndef NO_PKCS7_ENCRYPTED_DATA -WOLFSSL_API int wc_PKCS7_EncodeEncryptedData(PKCS7* pkcs7, - byte* output, word32 outputSz); -WOLFSSL_API int wc_PKCS7_DecodeEncryptedData(PKCS7* pkcs7, byte* pkiMsg, - word32 pkiMsgSz, byte* output, - word32 outputSz); -WOLFSSL_API int wc_PKCS7_SetDecodeEncryptedCb(PKCS7* pkcs7, - CallbackDecryptContent decryptionCb); -WOLFSSL_API int wc_PKCS7_SetDecodeEncryptedCtx(PKCS7* pkcs7, void* ctx); -#endif /* NO_PKCS7_ENCRYPTED_DATA */ - -/* CMS/PKCS#7 CompressedData */ -#if defined(HAVE_LIBZ) && !defined(NO_PKCS7_COMPRESSED_DATA) -WOLFSSL_API int wc_PKCS7_EncodeCompressedData(PKCS7* pkcs7, byte* output, - word32 outputSz); -WOLFSSL_API int wc_PKCS7_DecodeCompressedData(PKCS7* pkcs7, byte* pkiMsg, - word32 pkiMsgSz, byte* output, - word32 outputSz); -#endif /* HAVE_LIBZ && !NO_PKCS7_COMPRESSED_DATA */ - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* HAVE_PKCS7 */ -#endif /* WOLF_CRYPT_PKCS7_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/poly1305.h b/client/wolfssl/wolfssl/wolfcrypt/poly1305.h deleted file mode 100644 index 981ce49..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/poly1305.h +++ /dev/null @@ -1,130 +0,0 @@ -/* poly1305.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/poly1305.h -*/ - -#ifndef WOLF_CRYPT_POLY1305_H -#define WOLF_CRYPT_POLY1305_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef HAVE_POLY1305 - -#ifdef __cplusplus - extern "C" { -#endif - -/* auto detect between 32bit / 64bit */ -#if defined(__SIZEOF_INT128__) && defined(__LP64__) -#define WC_HAS_SIZEOF_INT128_64BIT -#endif - -#if defined(_MSC_VER) && defined(_M_X64) -#define WC_HAS_MSVC_64BIT -#endif - -#if (defined(__GNUC__) && defined(__LP64__) && \ - ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)))) -#define WC_HAS_GCC_4_4_64BIT -#endif - -#ifdef USE_INTEL_SPEEDUP -#elif (defined(WC_HAS_SIZEOF_INT128_64BIT) || defined(WC_HAS_MSVC_64BIT) || \ - defined(WC_HAS_GCC_4_4_64BIT)) -#define POLY130564 -#else -#define POLY130532 -#endif - -enum { - POLY1305 = 7, - POLY1305_BLOCK_SIZE = 16, - POLY1305_DIGEST_SIZE = 16, -}; - -#define WC_POLY1305_PAD_SZ 16 -#define WC_POLY1305_MAC_SZ 16 - -/* Poly1305 state */ -typedef struct Poly1305 { -#ifdef USE_INTEL_SPEEDUP - word64 r[3]; - word64 h[3]; - word64 pad[2]; - word64 hh[20]; - word32 r1[8]; - word32 r2[8]; - word32 r3[8]; - word32 r4[8]; - word64 hm[16]; - unsigned char buffer[8*POLY1305_BLOCK_SIZE]; - size_t leftover; - unsigned char finished; - unsigned char started; -#else -#if defined(WOLFSSL_ARMASM) && defined(__aarch64__) - ALIGN128 word32 r[5]; - ALIGN128 word32 r_2[5]; // r^2 - ALIGN128 word32 r_4[5]; // r^4 - ALIGN128 word32 h[5]; - word32 pad[4]; - word64 leftover; -#else -#if defined(POLY130564) - word64 r[3]; - word64 h[3]; - word64 pad[2]; -#else - word32 r[5]; - word32 h[5]; - word32 pad[4]; -#endif - size_t leftover; -#endif /* WOLFSSL_ARMASM */ - unsigned char buffer[POLY1305_BLOCK_SIZE]; - unsigned char finished; -#endif -} Poly1305; - -/* does init */ - -WOLFSSL_API int wc_Poly1305SetKey(Poly1305* poly1305, const byte* key, - word32 kySz); -WOLFSSL_API int wc_Poly1305Update(Poly1305* poly1305, const byte*, word32); -WOLFSSL_API int wc_Poly1305Final(Poly1305* poly1305, byte* tag); - -/* AEAD Functions */ -WOLFSSL_API int wc_Poly1305_Pad(Poly1305* ctx, word32 lenToPad); -WOLFSSL_API int wc_Poly1305_EncodeSizes(Poly1305* ctx, word32 aadSz, word32 dataSz); -WOLFSSL_API int wc_Poly1305_MAC(Poly1305* ctx, byte* additional, word32 addSz, - byte* input, word32 sz, byte* tag, word32 tagSz); - -void poly1305_block(Poly1305* ctx, const unsigned char *m); -void poly1305_blocks(Poly1305* ctx, const unsigned char *m, - size_t bytes); -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* HAVE_POLY1305 */ -#endif /* WOLF_CRYPT_POLY1305_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/Espressif/esp32-crypt.h b/client/wolfssl/wolfssl/wolfcrypt/port/Espressif/esp32-crypt.h deleted file mode 100644 index 0e342db..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/Espressif/esp32-crypt.h +++ /dev/null @@ -1,152 +0,0 @@ -/* esp32-crypt.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ -#ifndef __ESP32_CRYPT_H__ - -#define __ESP32_CRYPT_H__ - -#include "esp_idf_version.h" -#include "esp_types.h" -#include "esp_log.h" - -#ifdef WOLFSSL_ESP32WROOM32_CRYPT_DEBUG -#undef LOG_LOCAL_LEVEL -#define LOG_LOCAL_LEVEL ESP_LOG_DEBUG -#else -#undef LOG_LOCAL_LEVEL -#define LOG_LOCAL_LEVEL ESP_LOG_ERROR -#endif - -#include <freertos/FreeRTOS.h> -#include "soc/dport_reg.h" -#include "soc/hwcrypto_reg.h" -#include "soc/cpu.h" -#include "driver/periph_ctrl.h" -#if ESP_IDF_VERSION_MAJOR >= 4 && ESP_IDF_VERSION_MINOR >= 1 -#include <esp32/rom/ets_sys.h> -#else -#include <rom/ets_sys.h> -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -int esp_CryptHwMutexInit(wolfSSL_Mutex* mutex); -int esp_CryptHwMutexLock(wolfSSL_Mutex* mutex, TickType_t xBloxkTime); -int esp_CryptHwMutexUnLock(wolfSSL_Mutex* mutex); - -#ifndef NO_AES - -#if ESP_IDF_VERSION_MAJOR >= 4 && ESP_IDF_VERSION_MINOR >= 1 -#include "esp32/rom/aes.h" -#else -#include "rom/aes.h" -#endif - -typedef enum tagES32_AES_PROCESS { - ESP32_AES_LOCKHW = 1, - ESP32_AES_UPDATEKEY_ENCRYPT = 2, - ESP32_AES_UPDATEKEY_DECRYPT = 3, - ESP32_AES_UNLOCKHW = 4 -} ESP32_AESPROCESS; - -struct Aes; -int wc_esp32AesCbcEncrypt(struct Aes* aes, byte* out, const byte* in, word32 sz); -int wc_esp32AesCbcDecrypt(struct Aes* aes, byte* out, const byte* in, word32 sz); -int wc_esp32AesEncrypt(struct Aes *aes, const byte* in, byte* out); -int wc_esp32AesDecrypt(struct Aes *aes, const byte* in, byte* out); - -#endif - -#ifdef WOLFSSL_ESP32WROOM32_CRYPT_DEBUG - -void wc_esp32TimerStart(); -uint64_t wc_esp32elapsedTime(); - -#endif /* WOLFSSL_ESP32WROOM32_CRYPT_DEBUG */ - -#if (!defined(NO_SHA) || !defined(NO_SHA256) || defined(WOLFSSL_SHA384) || \ - defined(WOLFSSL_SHA512)) && \ - !defined(NO_WOLFSSL_ESP32WROOM32_CRYPT_HASH) - -/* RAW hash function APIs are not implemented with esp32 hardware acceleration*/ -#define WOLFSSL_NO_HASH_RAW -#if ESP_IDF_VERSION_MAJOR >= 4 && ESP_IDF_VERSION_MINOR >= 1 -#include "esp32/rom/sha.h" -#else -#include "rom/sha.h" -#endif - -typedef enum { - ESP32_SHA_INIT = 0, - ESP32_SHA_HW = 1, - ESP32_SHA_SW = 2, -} ESP32_DOSHA; - -typedef struct { - byte isfirstblock; - /* 0 , 1 hard, 2 soft */ - byte mode; - /* sha_type */ - enum SHA_TYPE sha_type; -} WC_ESP32SHA; - -int esp_sha_try_hw_lock(WC_ESP32SHA* ctx); -void esp_sha_hw_unlock( void ); - -struct wc_Sha; -int esp_sha_digest_process(struct wc_Sha* sha, byte bockprocess); -int esp_sha_process(struct wc_Sha* sha, const byte* data); - -#ifndef NO_SHA256 - struct wc_Sha256; - int esp_sha256_digest_process(struct wc_Sha256* sha, byte bockprocess); - int esp_sha256_process(struct wc_Sha256* sha, const byte* data); -#endif - -#if defined(WOLFSSL_SHA512) || defined(WOLFSSL_SHA384) - struct wc_Sha512; - int esp_sha512_process(struct wc_Sha512* sha); - int esp_sha512_digest_process(struct wc_Sha512* sha, byte blockproc); -#endif - -#endif /* NO_SHA && */ - -#if !defined(NO_RSA) || defined(HAVE_ECC) - -#ifndef ESP_RSA_TIMEOUT - #define ESP_RSA_TIMEOUT 0xFFFFF -#endif - -struct fp_int; -int esp_mp_mul(struct fp_int* X, struct fp_int* Y, struct fp_int* Z); -int esp_mp_exptmod(struct fp_int* G, struct fp_int* X, word32 Xbits, struct fp_int* P, - struct fp_int* Y); -int esp_mp_mulmod(struct fp_int* X, struct fp_int* Y, struct fp_int* M, - struct fp_int* Z); - -#endif /* NO_RSA || HAVE_ECC*/ - -#ifdef __cplusplus -} -#endif - -#endif /* __ESP32_CRYPT_H__ */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/Renesas/renesas-tsip-crypt.h b/client/wolfssl/wolfssl/wolfcrypt/port/Renesas/renesas-tsip-crypt.h deleted file mode 100644 index 2055ee0..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/Renesas/renesas-tsip-crypt.h +++ /dev/null @@ -1,153 +0,0 @@ -/* renesas-tsip-crypt.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ -#ifndef __RENESAS_TSIP_CRYPT_H__ -#define __RENESAS_TSIP_CRYPT_H__ - -#if defined(WOLFSSL_RENESAS_TSIP_IAREWRX) - #include "r_bsp/mcu/all/r_rx_compiler.h" - #include "r_bsp/platform.h" -#else - #include "platform.h" -#endif - -#include "r_tsip_rx_if.h" -#include <wolfssl/wolfcrypt/logging.h> - -#ifdef __cplusplus -extern "C" { -#endif - -typedef enum { - tsip_Key_SESSION = 1, - tsip_Key_AES128 = 2, - tsip_Key_AES256 = 3, - tsip_Key_RSA1024 = 4, - tsip_Key_RSA2048 = 5, - tsip_Key_tls_Rsa2048 = 6, - tsip_Key_unknown = -1, -} wolfssl_TSIP_KEY_IV; - -enum { - l_TLS_RSA_WITH_AES_128_CBC_SHA = 0x2F, - l_TLS_RSA_WITH_AES_128_CBC_SHA256 = 0x3c, - l_TLS_RSA_WITH_AES_256_CBC_SHA = 0x35, - l_TLS_RSA_WITH_AES_256_CBC_SHA256 = 0x3d, -}; - -typedef struct -{ - uint8_t *encrypted_session_key; - uint8_t *iv; - uint8_t *encrypted_user_tls_key; - tsip_tls_ca_certification_public_key_index_t user_rsa2048_tls_pubindex; -} tsip_key_data; - -struct WOLFSSL; - -int tsip_Open( ); -void tsip_Close( ); -int tsip_hw_lock(); -void tsip_hw_unlock( void ); -int tsip_usable(const struct WOLFSSL *ssl); -void tsip_inform_sflash_signedcacert(const byte *ps_flash, - const byte *psigned_ca_cert, word32 len); -void tsip_inform_cert_sign(const byte *sign); -/* set / get key */ -void tsip_inform_user_keys(byte *encrypted_session_key, byte *iv, - byte *encrypted_user_tls_key); - -byte tsip_rootCAverified( ); -byte tsip_checkCA(word32 cmIdx); -int tsip_tls_RootCertVerify(const byte *cert , word32 cert_len, - word32 key_n_start, word32 key_n_len, - word32 key_e_start, word32 key_e_len, - word32 cm_row); -int tsip_tls_CertVerify(const byte *cert, word32 certSz, - const byte *signature, word32 sigSz, - word32 key_n_start, word32 key_n_len, - word32 key_e_start, word32 key_e_len, - byte *tsip_encRsaKeyIdx); -void tsip_inform_key_position(const word32 key_n_start, const word32 key_n_len, - const word32 key_e_start, const word32 key_e_len); -int tsip_generatePremasterSecret(byte *premaster, word32 preSz); -int tsip_generateEncryptPreMasterSecret(struct WOLFSSL *ssl, byte *out, - word32 *outSz); -int tsip_generateMasterSecret(const byte *pre, const byte *cr,const byte *sr, - byte *ms); -int tsip_generateSeesionKey(struct WOLFSSL *ssl); -int tsip_Sha256Hmac(const struct WOLFSSL *ssl, const byte *myInner, - word32 innerSz, const byte *in, word32 sz, byte *digest, - word32 verify); -int tsip_Sha1Hmac(const struct WOLFSSL *ssl, const byte *myInner, - word32 innerSz, const byte *in, word32 sz, byte *digest, - word32 verify); - -#if (!defined(NO_SHA) || !defined(NO_SHA256)) && \ - !defined(NO_WOLFSSL_RENESAS_TSIP_CRYPT_HASH) - -typedef enum { - TSIP_SHA1 = 0, - TSIP_SHA256 = 1, -} TSIP_SHA_TYPE; - -typedef struct { - byte* msg; - void* heap; - word32 used; - word32 len; - word32 sha_type; -} wolfssl_TSIP_Hash; - -/* RAW hash function APIs are not implemented with TSIP */ -#define WOLFSSL_NO_HASH_RAW - -typedef wolfssl_TSIP_Hash wc_Sha; - -#if !defined(NO_SHA256) - typedef wolfssl_TSIP_Hash wc_Sha256; -#endif - -#endif /* NO_SHA */ - -#if defined(WOLFSSL_RENESAS_TSIP_TLS_AES_CRYPT) -typedef struct { - tsip_aes_key_index_t tsip_keyIdx; - word32 keySize; -} TSIP_AES_CTX; - - struct Aes; - int wc_tsip_AesCbcEncrypt(struct Aes* aes, byte* out, const byte* in, - word32 sz); - int wc_tsip_AesCbcDecrypt(struct Aes* aes, byte* out, const byte* in, - word32 sz); - -#endif /* WOLFSSL_RENESAS_TSIP_TLS_AES */ - -#if defined(WOLFSSL_RENESAS_TSIP_CRYPT_DEBUG) -byte *ret2err(word32 ret); - -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __RENESAS_TSIP_CRYPT_H__ */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/af_alg/afalg_hash.h b/client/wolfssl/wolfssl/wolfcrypt/port/af_alg/afalg_hash.h deleted file mode 100644 index bd02913..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/af_alg/afalg_hash.h +++ /dev/null @@ -1,50 +0,0 @@ -/* afalg_hash.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLF_CRYPT_AFALG_HASH_H -#define WOLF_CRYPT_AFALG_HASH_H - -#include <wolfssl/wolfcrypt/types.h> - -#undef WOLFSSL_NO_HASH_RAW -#define WOLFSSL_NO_HASH_RAW - -typedef struct { - byte* msg; - void* heap; - word32 used; - word32 len; - int alFd; - int rdFd; -} wolfssl_AFALG_Hash; - - - -#if !defined(NO_SHA256) && defined(WOLFSSL_AFALG_HASH) - typedef wolfssl_AFALG_Hash wc_Sha256; -#endif -#if defined(WOLFSSL_SHA3) && defined(WOLFSSL_AFALG_XILINX_SHA3) - typedef wolfssl_AFALG_Hash wc_Sha3; -#endif - -#endif /* WOLF_CRYPT_AFALG_HASH_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/af_alg/wc_afalg.h b/client/wolfssl/wolfssl/wolfcrypt/port/af_alg/wc_afalg.h deleted file mode 100644 index d9f5b71..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/af_alg/wc_afalg.h +++ /dev/null @@ -1,53 +0,0 @@ -/* wc_afalg.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLFSSL_AFALG_H -#define WOLFSSL_AFALG_H - -#include <wolfssl/wolfcrypt/types.h> - -#include <sys/socket.h> -#include <linux/if_alg.h> -#include <linux/socket.h> - -#define WC_SOCK_NOTSET -1 - -/* In some cases these flags are not set in AF_ALG header files. - * Documentation provided at kernel.org/doc/html/v4.16/crypto/userspace-if.html - * suggests using these values if not set */ -#ifndef AF_ALG - #define AF_ALG 38 -#endif -#ifndef SOL_ALG - #define SOL_ALG 279 -#endif - -WOLFSSL_LOCAL void wc_Afalg_SockAddr(struct sockaddr_alg* in, const char* type, const char* name); -WOLFSSL_LOCAL int wc_Afalg_Accept(struct sockaddr_alg* in, int inSz, int sock); -WOLFSSL_LOCAL int wc_Afalg_Socket(void); -WOLFSSL_LOCAL int wc_Afalg_CreateRead(int sock, const char* type, const char* name); -WOLFSSL_LOCAL int wc_Afalg_SetIv(struct cmsghdr* cmsg, byte* iv, word32 ivSz); -WOLFSSL_LOCAL int wc_Afalg_SetOp(struct cmsghdr* cmsg, int dir); -WOLFSSL_LOCAL int wc_Afalg_SetAad(struct cmsghdr* cmsg, word32 sz); - -#endif /* WOLFSSL_AFALG_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/arm/cryptoCell.h b/client/wolfssl/wolfssl/wolfcrypt/port/arm/cryptoCell.h deleted file mode 100644 index 5ca2d8c..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/arm/cryptoCell.h +++ /dev/null @@ -1,117 +0,0 @@ -/* cryptoCell.h - * - * Copyright (C) 2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -#ifndef WOLFSSL_CRYPTOCELL_H -#define WOLFSSL_CRYPTOCELL_H - -#if defined(WOLFSSL_CRYPTOCELL) -#ifdef __cplusplus -extern "C" { -#endif - -#include <wolfssl/wolfcrypt/types.h> - -#include "sns_silib.h" - -#ifndef NO_SHA256 - #include "crys_hash.h" - #include "crys_hash_error.h" - /* largest possible input data on CC310 DMA. */ - #define CC310_MAX_LENGTH_DMA (0xFFFF) -#endif - -#ifndef NO_AES - #include "ssi_aes.h" - - typedef struct aes_context_t { - SaSiAesUserContext_t user_ctx; /* CC310 AES User context */ - SaSiAesUserKeyData_t key; /* CC310 AES key structure */ - SaSiAesEncryptMode_t mode; /* encrypt or decrypt */ - } aes_context_t; - #define CC310_MAX_LENGTH_DMA_AES (0xFFF0) -#endif /* NO_AES */ - -#if !defined(WC_NO_RNG) - #if defined(WOLFSSL_nRF5x_SDK_15_2) - -/* To fix warning. MIN/MAX are defined in tfm.h and Nordic (re)defines them */ - #undef MIN - #undef MAX -/* includes to use RNG on the nRF52 */ - #include "nrf_drv_rng.h" - #include "nrf_assert.h" - #endif - - /*RNG Global variables*/ - extern CRYS_RND_State_t wc_rndState; - extern CRYS_RND_WorkBuff_t wc_rndWorkBuff; - extern SaSiRndGenerateVectWorkFunc_t wc_rndGenVectFunc; - int cc310_random_generate(byte* output, word32 size); -#endif - -#ifndef NO_RSA - #include "crys_rsa_types.h" - #include "crys_rnd.h" - #include "crys_rsa_schemes.h" - #include "crys_rsa_kg.h" - #include "crys_rsa_build.h" - - typedef struct rsa_context_t { - CRYS_RSAUserPrivKey_t privKey; - CRYS_RSAUserPubKey_t pubKey; - } rsa_context_t; -CRYS_RSA_HASH_OpMode_t cc310_hashModeRSA(enum wc_HashType hash_type, int isHashed); -#endif - -#ifdef HAVE_ECC - #include "crys_ecpki_kg.h" - #include "crys_ecpki_dh.h" - #include "crys_ecpki_build.h" - #include "crys_ecpki_domain.h" - #include "crys_ecpki_ecdsa.h" - - typedef struct ecc_context_t { - CRYS_ECPKI_UserPrivKey_t privKey; - CRYS_ECPKI_UserPublKey_t pubKey; - } ecc_context_t; - -CRYS_ECPKI_DomainID_t cc310_mapCurve(int curve_id); -CRYS_ECPKI_HASH_OpMode_t cc310_hashModeECC(int hash_size); -#endif /* HAVE_ECC */ - -#if !defined(NO_CRYPT_BENCHMARK) && defined(WOLFSSL_nRF5x_SDK_15_2) - /* includes to use Real-time counter (RTC) on nRF52840 */ - #include "nrf_gpio.h" - #include "nrf_drv_rtc.h" - #include "nrf_drv_clock.h" - #include "boards.h" - #include <stdint.h> - #include <stdbool.h> -#endif /* NO_CRYPT_BENCHMARK && WOLFSSL_nRF5x_SDK_15_2*/ - -int cc310_Init(void); -void cc310_Free(void); - -#ifdef __cplusplus -} -#endif -#endif /* WOLFSSL_CRYPTOCELL */ -#endif /* WOLFSSL_CRYPTOCELL_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/atmel/atmel.h b/client/wolfssl/wolfssl/wolfcrypt/port/atmel/atmel.h deleted file mode 100644 index 7003513..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/atmel/atmel.h +++ /dev/null @@ -1,134 +0,0 @@ -/* atmel.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -#ifndef _ATECC508_H_ -#define _ATECC508_H_ - -#include <stdint.h> - -#include <wolfssl/wolfcrypt/settings.h> -#include <wolfssl/wolfcrypt/error-crypt.h> - -#if defined(WOLFSSL_ATECC508A) || defined(WOLFSSL_ATECC_PKCB) - #undef SHA_BLOCK_SIZE - #define SHA_BLOCK_SIZE SHA_BLOCK_SIZE_REMAP - #include <cryptoauthlib.h> - #undef SHA_BLOCK_SIZE -#endif - -/* ATECC508A only supports ECC P-256 */ -#define ATECC_KEY_SIZE (32) -#define ATECC_PUBKEY_SIZE (ATECC_KEY_SIZE*2) /* X and Y */ -#define ATECC_SIG_SIZE (ATECC_KEY_SIZE*2) /* R and S */ -#ifndef ATECC_MAX_SLOT -#define ATECC_MAX_SLOT (0x8) /* Only use 0-7 */ -#endif -#define ATECC_INVALID_SLOT (0xFF) - -/* Device Key for signing */ -#ifndef ATECC_SLOT_AUTH_PRIV -#define ATECC_SLOT_AUTH_PRIV (0x0) -#endif -/* Ephemeral key */ -#ifndef ATECC_SLOT_ECDHE_PRIV -#define ATECC_SLOT_ECDHE_PRIV (0x2) -#endif -/* Symmetric encryption key */ -#ifndef ATECC_SLOT_I2C_ENC -#define ATECC_SLOT_I2C_ENC (0x04) -#endif -/* Parent encryption key */ -#ifndef ATECC_SLOT_ENC_PARENT -#define ATECC_SLOT_ENC_PARENT (0x7) -#endif - -/* ATECC_KEY_SIZE required for ecc.h */ -#include <wolfssl/wolfcrypt/ecc.h> - -struct WOLFSSL; -struct WOLFSSL_CTX; -struct WOLFSSL_X509_STORE_CTX; -struct ecc_key; - -/* Atmel port functions */ -int atmel_init(void); -void atmel_finish(void); -int atmel_get_random_number(uint32_t count, uint8_t* rand_out); -#ifndef ATMEL_GET_RANDOM_BLOCK_DEFINED - int atmel_get_random_block(unsigned char* output, unsigned int sz); - #define ATMEL_GET_RANDOM_BLOCK_DEFINED -#endif -long atmel_get_curr_time_and_date(long* tm); - -#ifdef WOLFSSL_ATECC508A - -enum atmelSlotType { - ATMEL_SLOT_ANY, - ATMEL_SLOT_ENCKEY, - ATMEL_SLOT_DEVICE, - ATMEL_SLOT_ECDHE, - ATMEL_SLOT_ECDHE_ENC, -}; - -int atmel_ecc_alloc(int slotType); -void atmel_ecc_free(int slotId); - -typedef int (*atmel_slot_alloc_cb)(int); -typedef void (*atmel_slot_dealloc_cb)(int); -int atmel_set_slot_allocator(atmel_slot_alloc_cb alloc, - atmel_slot_dealloc_cb dealloc); - -int atmel_ecc_translate_err(int status); -int atmel_get_rev_info(word32* revision); -void atmel_show_rev_info(void); - -/* The macro ATECC_GET_ENC_KEY can be set to override the default - encryption key with your own at build-time */ -#ifndef ATECC_GET_ENC_KEY - #define ATECC_GET_ENC_KEY(enckey, keysize) atmel_get_enc_key_default((enckey), (keysize)) -#endif -int atmel_get_enc_key_default(byte* enckey, word16 keysize); -int atmel_ecc_create_pms(int slotId, const uint8_t* peerKey, uint8_t* pms); -int atmel_ecc_create_key(int slotId, byte* peerKey); -int atmel_ecc_sign(int slotId, const byte* message, byte* signature); -int atmel_ecc_verify(const byte* message, const byte* signature, - const byte* pubkey, int* verified); - -#endif /* WOLFSSL_ATECC508A */ - -#ifdef HAVE_PK_CALLBACKS - int atcatls_create_key_cb(struct WOLFSSL* ssl, struct ecc_key* key, unsigned int keySz, - int ecc_curve, void* ctx); - int atcatls_create_pms_cb(struct WOLFSSL* ssl, struct ecc_key* otherKey, - unsigned char* pubKeyDer, word32* pubKeySz, - unsigned char* out, word32* outlen, - int side, void* ctx); - int atcatls_sign_certificate_cb(struct WOLFSSL* ssl, const byte* in, unsigned int inSz, - byte* out, word32* outSz, const byte* key, unsigned int keySz, void* ctx); - int atcatls_verify_signature_cb(struct WOLFSSL* ssl, const byte* sig, unsigned int sigSz, - const byte* hash, unsigned int hashSz, const byte* key, unsigned int keySz, - int* result, void* ctx); - - int atcatls_set_callbacks(struct WOLFSSL_CTX* ctx); - int atcatls_set_callback_ctx(struct WOLFSSL* ssl, void* user_ctx); -#endif - -#endif /* _ATECC508_H_ */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/caam/caam_driver.h b/client/wolfssl/wolfssl/wolfcrypt/port/caam/caam_driver.h deleted file mode 100644 index cac1742..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/caam/caam_driver.h +++ /dev/null @@ -1,187 +0,0 @@ -/* caam_driver.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -#ifndef CAAM_DRIVER_H -#define CAAM_DRIVER_H - -#define CAAM_BASE 0xf2100000 - -#define CAAM_PAGE 0xf0100000 -#define CAAM_PAGE_MAX 6 - -/****************************************************************************** - Basic Descriptors - ****************************************************************************/ - -/* descriptor commands */ -#define CAAM_KEY 0x00000000 -#define CAAM_LOAD 0x10000000 -#define CAAM_LOAD_CTX 0x10200000 -#define CAAM_IMM 0x00800000 -#define CAAM_FIFO_L 0x20000000 -#define CAAM_FIFO_S 0x60000000 -#define CAAM_FIFO_S_SKEY 0x60260000 -#define CAAM_STORE 0x50000000 -#define CAAM_STORE_CTX 0x50200000 -#define CAAM_MOVE 0x78000000 -#define CAAM_OP 0x80000000 -#define CAAM_SIG 0x90000000 -#define CAAM_JUMP 0xA0000000 -#define CAAM_SEQI 0xF0000000/* SEQ in */ -#define CAAM_SEQO 0xF8000000/* SEQ out */ -#define CAAM_HEAD 0xB0800000 -#define CAAM_NWB 0x00200000 - -#define CAAM_BLOB_ENCAP 0x07000000 -#define CAAM_BLOB_DECAP 0x06000000 -#define CAAM_OPID_BLOB 0x000D0000 - -/* algorithms modes and types */ -#define CAAM_CLASS1 0x02000000/* i.e. AES */ -#define CAAM_CLASS2 0x04000000/* i.e. hash algos */ - -#define CAAM_ENC 0x00000001 -#define CAAM_DEC 0x00000000 -#define CAAM_ALG_INIT 0x00000004 -#define CAAM_ALG_INITF 0x0000000C -#define CAAM_ALG_UPDATE 0x00000000 -#define CAAM_ALG_FINAL 0x00000008 - - /* AES 10h */ -#define CAAM_AESCTR 0x00100000 -#define CAAM_AESCBC 0x00100100 -#define CAAM_AESECB 0x00100200 -#define CAAM_AESCFB 0x00100300 -#define CAAM_AESOFB 0x00100400 -#define CAAM_CMAC 0x00100600 -#define CAAM_AESCCM 0x00100800 - - /* HASH 40h */ -#define CAAM_MD5 0x00400000 -#define CAAM_SHA 0x00410000 -#define CAAM_SHA224 0x00420000 -#define CAAM_SHA256 0x00430000 -#define CAAM_SHA384 0x00440000 -#define CAAM_SHA512 0x00450000 - - /* HMAC 40h + 10 AAI */ -#define CAAM_HMAC_MD5 0x00400010 -#define CAAM_HMAC_SHA 0x00410010 -#define CAAM_HMAC_SHA224 0x00420010 -#define CAAM_HMAC_SHA256 0x00430010 -#define CAAM_HMAC_SHA384 0x00440010 -#define CAAM_HMAC_SHA512 0x00450010 - -#define CAAM_MD5_CTXSZ (16 + 8) -#define CAAM_SHA_CTXSZ (20 + 8) -#define CAAM_SHA224_CTXSZ (32 + 8) -#define CAAM_SHA256_CTXSZ (32 + 8) -#define CAAM_SHA384_CTXSZ (64 + 8) -#define CAAM_SHA512_CTXSZ (64 + 8) - - /* RNG 50h */ -#define CAAM_RNG 0x00500000 - - /* Used to get raw entropy from TRNG */ -#define CAAM_ENTROPY 0x00500001 - -#define FIFOL_TYPE_MSG 0x00100000 -#define FIFOL_TYPE_AAD 0x00300000 -#define FIFOL_TYPE_FC1 0x00010000 -#define FIFOL_TYPE_LC1 0x00020000 -#define FIFOL_TYPE_LC2 0x00040000 - -#define FIFOS_TYPE_MSG 0x00300000 - -/* continue bit set if more output is expected */ -#define CAAM_FIFOS_CONT 0x00800000 - -#define CAAM_PAGE_SZ 4096 - -/* RNG Registers */ -#define CAAM_RTMCTL CAAM_BASE + 0X0600 -#define CAAM_RTSDCTL CAAM_BASE + 0X0610 -#define CAAM_RTFRQMIN CAAM_BASE + 0X0618 -#define CAAM_RTFRQMAX CAAM_BASE + 0X061C -#define CAAM_RDSTA CAAM_BASE + 0X06C0 -#define CAAM_RTSTATUS CAAM_BASE + 0x063C - -/* each of the following 11 RTENT registers are an offset of 4 from RTENT0 */ -#define CAAM_RTENT0 CAAM_BASE + 0x0640 -#define CAAM_RTENT11 CAAM_BASE + 0x066C /* Max RTENT register */ - -/* RNG Masks/Values */ -#ifndef CAAM_ENT_DLY - #define CAAM_ENT_DLY 1200 /* @TODO lower value may gain performance */ -#endif -#define CAAM_PRGM 0x00010000 /* Set RTMCTL to program state */ -#define CAAM_TRNG 0x00000020 /* Set TRNG access */ -#define CAAM_CTLERR 0x00001000 -#define CAAM_ENTVAL 0x00000400 /* checking RTMCTL for entropy ready */ - -/* Input Job Ring Registers */ -#define CAAM_IRBAR0 CAAM_BASE + 0x1004 -#define CAAM_IRSR0 CAAM_BASE + 0x100C -#define CAAM_IRJAR0 CAAM_BASE + 0x101C - -/* Output Job Ring Registers */ -#define CAAM_ORBAR0 CAAM_BASE + 0x1024 -#define CAAM_ORSR0 CAAM_BASE + 0x102C -#define CAAM_ORJAR0 CAAM_BASE + 0x103C - - -/* Status Registers */ -#define CAAM_STATUS CAAM_BASE + 0x0FD4 -#define CAAM_VERSION_MS CAAM_BASE + 0x0FE8 -#define CAAM_VERSION_LS CAAM_BASE + 0x0FEC -#define CAMM_SUPPORT_MS CAAM_BASE + 0x0FF0 -#define CAMM_SUPPORT_LS CAAM_BASE + 0x0FF4 - - -#define CAAM_C1DSR_LS CAAM_BASE + 0x8014 -#define CAAM_C1MR CAAM_BASE + 0x8004 - - -/* output FIFO is 16 entries deep and each entry has a two 4 byte registers */ -#define CAAM_FIFOO_MS CAAM_BASE + 0x87F0 -#define CAAM_FIFOO_LS CAAM_BASE + 0x87F4 - -/* input FIFO is 16 entries deep with each entry having two 4 byte registers - All data written to it from IP bus should be in big endian format */ -#define CAAM_FIFOI_LS CAAM_BASE + 0x87E0 - -/* offset of 4 with range 0 .. 13 */ -#define CAAM_CTX1 CAAM_BASE + 0x8100 -#define CAAM_CTRIV CAAM_CTX1 + 8 /* AES-CTR iv is in 2 and 3 */ -#define CAAM_CBCIV CAAM_CTX1 /* AES-CBC iv is in 1 and 2 */ - - -/* instantiate RNG and create JDKEK, TDKEK, and TDSK key */ -static unsigned int wc_rng_start[] = { - CAAM_HEAD | 0x00000006, - CAAM_OP | CAAM_CLASS1 | CAAM_RNG | 0x00000004, /* Instantiate RNG handle 0 with TRNG */ - CAAM_JUMP | 0x02000001, /* wait for Class1 RNG and jump to next cmd */ - CAAM_LOAD | 0x00880004, /* Load to clear written register */ - 0x00000001, /* reset done interrupt */ - CAAM_OP | CAAM_CLASS1 | CAAM_RNG | 0x00001000 /* Generate secure keys */ -}; - -#endif /* CAAM_DRIVER_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/caam/wolfcaam.h b/client/wolfssl/wolfssl/wolfcrypt/port/caam/wolfcaam.h deleted file mode 100644 index 8c39605..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/caam/wolfcaam.h +++ /dev/null @@ -1,63 +0,0 @@ -/* wolfcaam.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -#ifndef WOLF_CRYPT_CAAM_INIT_H -#define WOLF_CRYPT_CAAM_INIT_H - -#include <wolfssl/wolfcrypt/settings.h> - -#if defined(WOLFSSL_IMX6_CAAM) || defined(WOLFSSL_IMX6_CAAM_RNG) - -#include <wolfssl/wolfcrypt/types.h> - -#if defined(__INTEGRITY) || defined(INTEGRITY) - #include <INTEGRITY.h> -#endif - -WOLFSSL_LOCAL int wc_caamInit(void); -WOLFSSL_LOCAL int wc_caamFree(void); -WOLFSSL_LOCAL int wc_caamInitRng(void); -WOLFSSL_LOCAL int wc_caamFreeRng(void); - -WOLFSSL_LOCAL word32 wc_caamReadRegister(word32 reg); -WOLFSSL_LOCAL void wc_caamWriteRegister(word32 reg, word32 value); -WOLFSSL_LOCAL int wc_caamAddAndWait(Buffer* buf, word32 arg[4], word32 type); - -WOLFSSL_API int wc_caamSetResource(IODevice ioDev); - -WOLFSSL_API int wc_caamOpenBlob(byte* data, word32 dataSz, byte* out, - word32* outSz); -WOLFSSL_API int wc_caamCreateBlob(byte* data, word32 dataSz, byte* out, - word32* outSz); - -/* additional size that is added by CAAM when creating a blob */ -#define WC_CAAM_BLOB_SZ 48 - -#ifndef WC_CAAM_READ - #define WC_CAAM_READ(reg) wc_caamReadRegister((reg)) -#endif -#ifndef WC_CAAM_WRITE - #define WC_CAAM_WRITE(reg, x) wc_caamWriteRegister((reg), (x)) -#endif - -#endif /* WOLFSSL_IMX6_CAAM */ - -#endif /* WOLF_CRYPT_CAAM_INIT_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/caam/wolfcaam_sha.h b/client/wolfssl/wolfssl/wolfcrypt/port/caam/wolfcaam_sha.h deleted file mode 100644 index 9f5eaf8..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/caam/wolfcaam_sha.h +++ /dev/null @@ -1,88 +0,0 @@ -/* wolfcaam_sha.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -#ifndef WOLF_CRYPT_CAAM_SHA_H -#define WOLF_CRYPT_CAAM_SHA_H - -#include <wolfssl/wolfcrypt/settings.h> - -#ifdef WOLFSSL_IMX6_CAAM - -#include <wolfssl/wolfcrypt/types.h> - -#define WOLFSSL_NO_HASH_RAW - -#ifndef WC_CAAM_CTXLEN -/* last 8 bytes of context is for length */ -#define WC_CAAM_CTXLEN 8 -#endif - -#ifndef WC_CAAM_HASH_BLOCK -/* define sha structures and also get the max possible digest. Start with SHA - digest size */ -#define WC_CAAM_HASH_BLOCK 64 -#endif - -#ifndef WC_CAAM_MAX_DIGEST -#define WC_CAAM_MAX_DIGEST 20 -#ifdef WOLFSSL_SHA224 - #undef WC_CAAM_MAX_DIGEST - #define WC_CAAM_MAX_DIGEST 32 -#endif - -#ifndef NO_SHA256 - #undef WC_CAAM_MAX_DIGEST - #define WC_CAAM_MAX_DIGEST 32 -#endif - -#ifdef WOLFSSL_SHA384 - #undef WC_CAAM_MAX_DIGEST - #define WC_CAAM_MAX_DIGEST 64 -#endif - -#ifdef WOLFSSL_SHA512 - #undef WC_CAAM_MAX_DIGEST - #define WC_CAAM_MAX_DIGEST 64 -#endif -#endif /* WC_CAAM_MAX_DIGEST */ - - -typedef struct wc_Sha { - word32 ctx[(WC_CAAM_MAX_DIGEST + WC_CAAM_CTXLEN) / sizeof(word32)]; - word32 buffLen; /* in bytes */ - word32 buffer[WC_CAAM_HASH_BLOCK / sizeof(word32)]; -} wc_Sha; - -#ifndef NO_MD5 - typedef struct wc_Sha wc_Md5; -#endif - -#ifndef NO_SHA256 - typedef struct wc_Sha wc_Sha256; -#endif - -#ifdef WOLFSSL_SHA512 - typedef struct wc_Sha wc_Sha512; -#endif - -#endif /* WOLFSSL_IMX6_CAAM */ - -#endif /* WOLF_CRYPT_CAAM_SHA_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/cavium/cavium_nitrox.h b/client/wolfssl/wolfssl/wolfcrypt/port/cavium/cavium_nitrox.h deleted file mode 100644 index e69de29..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/cavium/cavium_nitrox.h +++ /dev/null diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/cavium/cavium_octeon_sync.h b/client/wolfssl/wolfssl/wolfcrypt/port/cavium/cavium_octeon_sync.h deleted file mode 100644 index f7914b8..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/cavium/cavium_octeon_sync.h +++ /dev/null @@ -1,31 +0,0 @@ -/* cavium_octeon_sync.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. (formerly known as CyaSSL) - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#ifndef _CAVIUM_OCTEON_SYNC_H_ -#define _CAVIUM_OCTEON_SYNC_H_ - -#ifdef HAVE_CAVIUM_OCTEON_SYNC - -WOLFSSL_API int wc_CryptoCb_InitOcteon(void); -WOLFSSL_API void wc_CryptoCb_CleanupOcteon(int* id); - -#endif /* HAVE_CAVIUM_OCTEON_SYNC */ -#endif /* _CAVIUM_OCTEON_SYNC_H_ */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/devcrypto/wc_devcrypto.h b/client/wolfssl/wolfssl/wolfcrypt/port/devcrypto/wc_devcrypto.h deleted file mode 100644 index c8ddbe7..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/devcrypto/wc_devcrypto.h +++ /dev/null @@ -1,53 +0,0 @@ -/* wc_devcrypto.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLFSSL_DEVCRYPTO_H -#define WOLFSSL_DEVCRYPTO_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef WOLFSSL_DEVCRYPTO - -#include <unistd.h> -#include <fcntl.h> -#include <sys/ioctl.h> -#include <crypto/cryptodev.h> - -typedef struct WC_CRYPTODEV { - int cfd; - struct session_op sess; -} WC_CRYPTODEV; - -WOLFSSL_LOCAL int wc_DevCryptoCreate(WC_CRYPTODEV* ctx, int type, byte* key, word32 keySz); -WOLFSSL_LOCAL void wc_DevCryptoFree(WC_CRYPTODEV* ctx); -WOLFSSL_LOCAL void wc_SetupCrypt(struct crypt_op* crt, WC_CRYPTODEV* dev, - byte* src, int srcSz, byte* dst, byte* dig, int flag); -WOLFSSL_LOCAL void wc_SetupCryptSym(struct crypt_op* crt, WC_CRYPTODEV* dev, - byte* src, word32 srcSz, byte* dst, byte* iv, int flag); -WOLFSSL_LOCAL void wc_SetupCryptAead(struct crypt_auth_op* crt, WC_CRYPTODEV* dev, - byte* src, word32 srcSz, byte* dst, byte* iv, word32 ivSz, int flag, - byte* authIn, word32 authInSz, byte* authTag, word32 authTagSz); - -#endif /* WOLFSSL_DEVCRYPTO */ -#endif /* WOLFSSL_DEVCRYPTO_H */ - - diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/intel/quickassist.h b/client/wolfssl/wolfssl/wolfcrypt/port/intel/quickassist.h deleted file mode 100644 index e69de29..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/intel/quickassist.h +++ /dev/null diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/intel/quickassist_mem.h b/client/wolfssl/wolfssl/wolfcrypt/port/intel/quickassist_mem.h deleted file mode 100644 index e69de29..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/intel/quickassist_mem.h +++ /dev/null diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/intel/quickassist_sync.h b/client/wolfssl/wolfssl/wolfcrypt/port/intel/quickassist_sync.h deleted file mode 100644 index 8eb9421..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/intel/quickassist_sync.h +++ /dev/null @@ -1,53 +0,0 @@ -/* quickassist_sync.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. (formerly known as CyaSSL) - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#ifndef _INTEL_QUICKASSIST_SYNC_H_ -#define _INTEL_QUICKASSIST_SYNC_H_ - -#ifdef HAVE_INTEL_QA_SYNC - -WOLFSSL_API int wc_CryptoCb_InitIntelQa(void); -WOLFSSL_API void wc_CryptoCb_CleanupIntelQa(int* id); - -WOLFSSL_API void* wc_CryptoCb_IntelQaMalloc(size_t size, - void* heap, int type -#ifdef WOLFSSL_DEBUG_MEMORY - , const char* func, unsigned int line -#endif -); - -WOLFSSL_API void wc_CryptoCb_IntelQaFree(void *ptr, - void* heap, int type -#ifdef WOLFSSL_DEBUG_MEMORY - , const char* func, unsigned int line -#endif -); - -WOLFSSL_API void* wc_CryptoCb_IntelQaRealloc(void *ptr, - size_t size, void* heap, int type -#ifdef WOLFSSL_DEBUG_MEMORY - , const char* func, unsigned int line -#endif -); - -#endif /* HAVE_INTEL_QA_SYNC */ - -#endif /* _INTEL_QUICKASSIST_SYNC_H_ */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/nrf51.h b/client/wolfssl/wolfssl/wolfcrypt/port/nrf51.h deleted file mode 100644 index b18b040..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/nrf51.h +++ /dev/null @@ -1,44 +0,0 @@ -/* nrf51.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLFSSL_NRF51_PORT_H -#define WOLFSSL_NRF51_PORT_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include <wolfssl/wolfcrypt/types.h> - -/* Public Functions */ -int nrf51_random_generate(byte* output, word32 sz); - -int nrf51_aes_set_key(const byte* key); -int nrf51_aes_encrypt(const byte* in, const byte* key, word32 rounds, byte* out); - -double current_time(int reset); - -#ifdef __cplusplus -} -#endif - -#endif /* WOLFSSL_NRF51_PORT_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/nxp/ksdk_port.h b/client/wolfssl/wolfssl/wolfcrypt/port/nxp/ksdk_port.h deleted file mode 100644 index 749a3ee..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/nxp/ksdk_port.h +++ /dev/null @@ -1,93 +0,0 @@ -/* ksdk_port.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -#ifndef _KSDK_PORT_H_ -#define _KSDK_PORT_H_ - -#include <wolfssl/wolfcrypt/settings.h> -#ifdef USE_FAST_MATH - #include <wolfssl/wolfcrypt/tfm.h> -#elif defined WOLFSSL_SP_MATH - #include <wolfssl/wolfcrypt/sp_int.h> -#else - #include <wolfssl/wolfcrypt/integer.h> -#endif -#include <wolfssl/wolfcrypt/ecc.h> -#include <wolfssl/wolfcrypt/curve25519.h> -#include <wolfssl/wolfcrypt/ed25519.h> - - -/* API to init required hardware */ -int ksdk_port_init(void); - -/* software algorithm, by wolfcrypt */ -#if defined(FREESCALE_LTC_TFM) - int wolfcrypt_mp_mul(mp_int *A, mp_int *B, mp_int *C); - int wolfcrypt_mp_mod(mp_int *a, mp_int *b, mp_int *c); - int wolfcrypt_mp_mulmod(mp_int *a, mp_int *b, mp_int *c, mp_int *d); - int wolfcrypt_mp_mod(mp_int *a, mp_int *b, mp_int *c); - int wolfcrypt_mp_invmod(mp_int *a, mp_int *b, mp_int *c); - int wolfcrypt_mp_exptmod(mp_int *G, mp_int *X, mp_int *P, mp_int *Y); - - /* Exported mp_mulmod function */ - int mp_mulmod(mp_int *a, mp_int *b, mp_int *c, mp_int *d); - -#endif /* FREESCALE_LTC_TFM */ - -#if defined(FREESCALE_LTC_ECC) - #include "fsl_ltc.h" - - typedef enum _fsl_ltc_ecc_coordinate_system - { - kLTC_Weierstrass = 0U, /*< Point coordinates on an elliptic curve in Weierstrass form */ - kLTC_Curve25519 = 1U, /*< Point coordinates on an Curve25519 elliptic curve in Montgomery form */ - kLTC_Ed25519 = 2U, /*< Point coordinates on an Ed25519 elliptic curve in twisted Edwards form */ - } fsl_ltc_ecc_coordinate_system_t; - - int wc_ecc_point_add(ecc_point *mG, ecc_point *mQ, ecc_point *mR, mp_int *m); - - #ifdef HAVE_CURVE25519 - int wc_curve25519(ECPoint *q, byte *n, const ECPoint *p, fsl_ltc_ecc_coordinate_system_t type); - const ECPoint *wc_curve25519_GetBasePoint(void); - status_t LTC_PKHA_Curve25519ToWeierstrass(const ltc_pkha_ecc_point_t *ltcPointIn, ltc_pkha_ecc_point_t *ltcPointOut); - status_t LTC_PKHA_WeierstrassToCurve25519(const ltc_pkha_ecc_point_t *ltcPointIn, ltc_pkha_ecc_point_t *ltcPointOut); - status_t LTC_PKHA_Curve25519ComputeY(ltc_pkha_ecc_point_t *ltcPoint); - #endif - - #ifdef HAVE_ED25519 - status_t LTC_PKHA_Ed25519ToWeierstrass(const ltc_pkha_ecc_point_t *ltcPointIn, ltc_pkha_ecc_point_t *ltcPointOut); - status_t LTC_PKHA_WeierstrassToEd25519(const ltc_pkha_ecc_point_t *ltcPointIn, ltc_pkha_ecc_point_t *ltcPointOut); - status_t LTC_PKHA_Ed25519_PointMul(const ltc_pkha_ecc_point_t *ltcPointIn, - const uint8_t *N, - size_t sizeN, - ltc_pkha_ecc_point_t *ltcPointOut, - fsl_ltc_ecc_coordinate_system_t typeOut); - const ltc_pkha_ecc_point_t *LTC_PKHA_Ed25519_BasePoint(void); - status_t LTC_PKHA_Ed25519_PointDecompress(const uint8_t *pubkey, size_t pubKeySize, ltc_pkha_ecc_point_t *ltcPointOut); - status_t LTC_PKHA_sc_reduce(uint8_t *a); - status_t LTC_PKHA_sc_muladd(uint8_t *s, const uint8_t *a, const uint8_t *b, const uint8_t *c); - status_t LTC_PKHA_SignatureForVerify(uint8_t *rcheck, const unsigned char *a, const unsigned char *b, ed25519_key *key); - status_t LTC_PKHA_Ed25519_Compress(const ltc_pkha_ecc_point_t *ltcPointIn, uint8_t *p); - #endif - -#endif /* FREESCALE_LTC_ECC */ - -#endif /* _KSDK_PORT_H_ */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/pic32/pic32mz-crypt.h b/client/wolfssl/wolfssl/wolfcrypt/port/pic32/pic32mz-crypt.h deleted file mode 100644 index bb288c7..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/pic32/pic32mz-crypt.h +++ /dev/null @@ -1,224 +0,0 @@ -/* pic32mz-crypt.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef PIC32MZ_CRYPT_H -#define PIC32MZ_CRYPT_H - -#ifdef __cplusplus - extern "C" { -#endif - -#include <wolfssl/wolfcrypt/settings.h> - -#ifdef WOLFSSL_MICROCHIP_PIC32MZ - -#ifndef MICROCHIP_PIC32 - #define MICROCHIP_PIC32 -#endif - -/* If algos aren't enabled then turn off */ -#ifdef WOLFSSL_PIC32MZ_HASH - #if defined(NO_MD5) && defined(NO_SHA) && defined(NO_SHA256) - #undef WOLFSSL_PIC32MZ_HASH - #endif -#endif - -#ifdef WOLFSSL_PIC32MZ_CRYPT - #if defined(NO_AES) && defined(NO_DES3) - #undef WOLFSSL_PIC32MZ_CRYPT - #endif -#endif - -/* Enables support for large hashing */ -/* requires exclusive access to crypto hardware done at application layer */ -#define WOLFSSL_PIC32MZ_LARGE_HASH - -#include <xc.h> -#include <sys/endian.h> -#include <sys/kmem.h> - - -/* PIC32 Crypto Structures */ -typedef struct saCtrl { - unsigned int CRYPTOALGO : 4; - unsigned int MULTITASK : 3; - unsigned int KEYSIZE : 2; - unsigned int ENCTYPE : 1; - unsigned int ALGO : 7; - unsigned int : 3; - unsigned int FLAGS : 1; - unsigned int FB : 1; - unsigned int LOADIV : 1; - unsigned int LNC : 1; - unsigned int IRFLAG : 1; - unsigned int ICVONLY : 1; - unsigned int OR_EN : 1; - unsigned int NO_RX : 1; - unsigned int : 1; - unsigned int VERIFY : 1; - unsigned int : 2; -} saCtrl; - -typedef struct securityAssociation { - saCtrl SA_CTRL; - unsigned int SA_AUTHKEY[8]; - unsigned int SA_ENCKEY[8]; - unsigned int SA_AUTHIV[8]; - unsigned int SA_ENCIV[4]; -} securityAssociation; - -typedef struct bdCtrl { - unsigned int BUFLEN : 16; - unsigned int CBD_INT_EN : 1; - unsigned int PKT_INT_EN : 1; - unsigned int LIFM : 1; - unsigned int LAST_BD : 1; - unsigned int CRDMA_EN : 1; - unsigned int UPD_RES : 1; - unsigned int SA_FETCH_EN : 1; - unsigned int SEC_CODE : 8; - volatile unsigned int DESC_EN : 1; -} bdCtrl; - -typedef struct bufferDescriptor { - bdCtrl BD_CTRL; - unsigned int SA_ADDR; - unsigned int SRCADDR; - unsigned int DSTADDR; - unsigned int NXTPTR; - unsigned int UPDPTR; - unsigned int MSGLEN; - unsigned int ENCOFF; -} bufferDescriptor; - - -/* Cache Updates Struct */ -typedef struct hashUpdCache { - unsigned char* buf; - unsigned int bufLen; - unsigned int updLen; - int isCopy; -#ifdef WOLFSSL_PIC32MZ_LARGE_HASH - unsigned int finalLen; -#endif -} hashUpdCache; - - -/* Direction */ -#define PIC32_ENCRYPTION 0b1 -#define PIC32_DECRYPTION 0b0 - -/* Algorithm */ -#define PIC32_ALGO_HMAC1 0b01000000 -#define PIC32_ALGO_SHA256 0b00100000 -#define PIC32_ALGO_SHA1 0b00010000 -#define PIC32_ALGO_MD5 0b00001000 - -#define PIC32_ALGO_AES 0b00000100 -#define PIC32_ALGO_TDES 0b00000010 -#define PIC32_ALGO_DES 0b00000001 - -/* Crypto Algo */ -/* AES */ -#define PIC32_CRYPTOALGO_AES_GCM 0b1110 -#define PIC32_CRYPTOALGO_RCTR 0b1101 -#define PIC32_CRYPTOALGO_RCBC_MAC 0b1100 -#define PIC32_CRYPTOALGO_ROFB 0b1011 -#define PIC32_CRYPTOALGO_RCFB 0b1010 -#define PIC32_CRYPTOALGO_RCBC 0b1001 -#define PIC32_CRYPTOALGO_RECB 0b1000 -/* Triple-DES */ -#define PIC32_CRYPTOALGO_TOFB 0b0111 -#define PIC32_CRYPTOALGO_TCFB 0b0110 -#define PIC32_CRYPTOALGO_TCBC 0b0101 -#define PIC32_CRYPTOALGO_TECB 0b0100 -/* DES */ -#define PIC32_CRYPTOALGO_OFB 0b0011 -#define PIC32_CRYPTOALGO_CFB 0b0010 -#define PIC32_CRYPTOALGO_CBC 0b0001 -#define PIC32_CRYPTOALGO_ECB 0b0000 - -/* Key Size */ -#define PIC32_KEYSIZE_256 0b10 -#define PIC32_KEYSIZE_192 0b01 -#define PIC32_KEYSIZE_128 0b00 - -/* PIC32 Minimum Buffer/Block Sizes */ -#define PIC32_BLOCKSIZE_HASH 64 -#define PIC32_BLOCKSIZE_HMAC PIC32_BLOCKSIZE_HASH -#define PIC32_BLOCKSIZE_MD5 PIC32_BLOCKSIZE_HASH -#define PIC32_BLOCKSIZE_SHA1 PIC32_BLOCKSIZE_HASH -#define PIC32_BLOCKSIZE_SHA256 PIC32_BLOCKSIZE_HASH -#define PIC32_BLOCKSIZE_AES 16 -#define PIC32_BLOCKSIZE_TDES 24 -#define PIC32_BLOCKSIZE_DES 8 - -#define PIC32_DIGEST_SIZE 32 - - -/* Helper Macros */ -#define PIC32MZ_IF_RAM(addr) (KVA_TO_PA(addr) < 0x1D000000) - -/* If EF part then Crypto engine supports swapping output bytes */ -#define PIC32_NO_OUT_SWAP ((__PIC32_FEATURE_SET0 == 'E') && \ - (__PIC32_FEATURE_SET1 == 'C')) - - -#ifndef NO_AES -int wc_Pic32AesCrypt(word32 *key, int keyLen, word32 *iv, int ivLen, - byte* out, const byte* in, word32 sz, - int dir, int algo, int cryptoalgo); -#endif -#ifndef NO_DES3 -int wc_Pic32DesCrypt(word32 *key, int keyLen, word32 *iv, int ivLen, - byte* out, const byte* in, word32 sz, - int dir, int algo, int cryptoalgo); -#endif - -#ifdef WOLFSSL_PIC32MZ_HASH -#define WOLFSSL_NO_HASH_RAW - -int wc_Pic32Hash(const byte* in, int inLen, word32* out, int outLen, int algo); -int wc_Pic32HashCopy(hashUpdCache* src, hashUpdCache* dst); - -#ifndef NO_MD5 -struct wc_Md5; -void wc_Md5Pic32Free(struct wc_Md5* md5); -#endif -#ifndef NO_SHA -struct wc_Sha; -void wc_ShaPic32Free(struct wc_Sha* sha); -#endif - -#ifndef NO_SHA256 -struct wc_Sha256; -void wc_Sha256Pic32Free(struct wc_Sha256* sha256); -#endif -#endif /* WOLFSSL_PIC32MZ_HASH */ - -#endif /* WOLFSSL_MICROCHIP_PIC32MZ */ - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* PIC32MZ_CRYPT_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/st/stm32.h b/client/wolfssl/wolfssl/wolfcrypt/port/st/stm32.h deleted file mode 100644 index 4b461a1..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/st/stm32.h +++ /dev/null @@ -1,142 +0,0 @@ -/* stm32.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -#ifndef _WOLFPORT_STM32_H_ -#define _WOLFPORT_STM32_H_ - -/* Generic STM32 Hashing and Crypto Functions */ -/* Supports CubeMX HAL or Standard Peripheral Library */ - -#include <wolfssl/wolfcrypt/settings.h> -#include <wolfssl/wolfcrypt/types.h> - -#if defined(WOLFSSL_STM32_PKA) && defined(HAVE_ECC) - #include <wolfssl/wolfcrypt/integer.h> - #include <wolfssl/wolfcrypt/ecc.h> -#endif - -#ifdef STM32_HASH - -#define WOLFSSL_NO_HASH_RAW - -#ifdef HASH_DIGEST - /* The HASH_DIGEST register indicates SHA224/SHA256 support */ - #define STM32_HASH_SHA2 - #define HASH_CR_SIZE 54 - #define HASH_MAX_DIGEST 32 -#else - #define HASH_CR_SIZE 50 - #define HASH_MAX_DIGEST 20 -#endif - -/* Handle hash differences between CubeMX and StdPeriLib */ -#if !defined(HASH_ALGOMODE_HASH) && defined(HASH_AlgoMode_HASH) - #define HASH_ALGOMODE_HASH HASH_AlgoMode_HASH -#endif -#if !defined(HASH_DATATYPE_8B) && defined(HASH_DataType_8b) - #define HASH_DATATYPE_8B HASH_DataType_8b -#endif - -#ifndef STM32_HASH_TIMEOUT - #define STM32_HASH_TIMEOUT 0xFFFF -#endif - - -/* STM32 register size in bytes */ -#define STM32_HASH_REG_SIZE 4 - -/* STM32 Hash Context */ -typedef struct { - /* Context switching registers */ - uint32_t HASH_IMR; - uint32_t HASH_STR; - uint32_t HASH_CR; - uint32_t HASH_CSR[HASH_CR_SIZE]; - - /* Hash state / buffers */ - word32 buffer[STM32_HASH_REG_SIZE / sizeof(word32)]; /* partial word buffer */ - word32 buffLen; /* partial word remain */ - word32 loLen; /* total update bytes - (only lsb 6-bits is used for nbr valid bytes in last word) */ -} STM32_HASH_Context; - - -/* API's */ -void wc_Stm32_Hash_Init(STM32_HASH_Context* stmCtx); -int wc_Stm32_Hash_Update(STM32_HASH_Context* stmCtx, word32 algo, - const byte* data, int len); -int wc_Stm32_Hash_Final(STM32_HASH_Context* stmCtx, word32 algo, - byte* hash, int digestSize); - -#endif /* STM32_HASH */ - - -#ifdef STM32_CRYPTO - -#ifndef NO_AES - #if !defined(STM32_CRYPTO_AES_GCM) && (defined(WOLFSSL_STM32F4) || \ - defined(WOLFSSL_STM32F7) || defined(WOLFSSL_STM32L4)) - /* Hardware supports AES GCM acceleration */ - #define STM32_CRYPTO_AES_GCM - #endif - - #ifdef WOLFSSL_STM32L4 - #define STM32_CRYPTO_AES_ONLY /* crypto engine only supports AES */ - #define CRYP AES - #endif - - /* Detect newer CubeMX crypto HAL (HAL_CRYP_Encrypt / HAL_CRYP_Decrypt) */ - #if !defined(STM32_HAL_V2) && \ - defined(WOLFSSL_STM32F7) && defined(CRYP_AES_GCM) - #define STM32_HAL_V2 - #endif - - /* The datatype for STM32 CubeMX HAL Crypt calls */ - #ifdef STM32_HAL_V2 - #define STM_CRYPT_TYPE uint32_t - #else - #define STM_CRYPT_TYPE uint8_t - #endif - - /* CRYPT_AES_GCM starts the IV with 2 */ - #define STM32_GCM_IV_START 2 - - struct Aes; - #ifdef WOLFSSL_STM32_CUBEMX - int wc_Stm32_Aes_Init(struct Aes* aes, CRYP_HandleTypeDef* hcryp); - #else /* STD_PERI_LIB */ - int wc_Stm32_Aes_Init(struct Aes* aes, CRYP_InitTypeDef* cryptInit, - CRYP_KeyInitTypeDef* keyInit); - #endif /* WOLFSSL_STM32_CUBEMX */ -#endif /* !NO_AES */ - -#endif /* STM32_CRYPTO */ - -#if defined(WOLFSSL_STM32_PKA) && defined(HAVE_ECC) -int stm32_ecc_verify_hash_ex(mp_int *r, mp_int *s, const byte* hash, - word32 hashlen, int* res, ecc_key* key); - -int stm32_ecc_sign_hash_ex(const byte* hash, word32 hashlen, WC_RNG* rng, - ecc_key* key, mp_int *r, mp_int *s); -#endif - - -#endif /* _WOLFPORT_STM32_H_ */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/st/stsafe.h b/client/wolfssl/wolfssl/wolfcrypt/port/st/stsafe.h deleted file mode 100644 index 3cee446..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/st/stsafe.h +++ /dev/null @@ -1,99 +0,0 @@ -/* stsafe.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -#ifndef _WOLFPORT_STSAFE_H_ -#define _WOLFPORT_STSAFE_H_ - -#include <wolfssl/wolfcrypt/settings.h> -#include <wolfssl/wolfcrypt/ecc.h> -#include <wolfssl/wolfcrypt/error-crypt.h> - -#ifdef WOLF_CRYPTO_CB -#include <wolfssl/wolfcrypt/cryptocb.h> -#endif - -#if !defined(WOLFCRYPT_ONLY) && defined(HAVE_PK_CALLBACKS) -#include <wolfssl/ssl.h> -#endif - -#ifdef WOLFSSL_STSAFEA100 - -/* The wolf STSAFE interface layer */ -/* Please contact wolfSSL for the STSAFE port files */ -#include "stsafe_interface.h" - -#ifndef STSAFE_MAX_KEY_LEN - #define STSAFE_MAX_KEY_LEN ((uint32_t)48) /* for up to 384-bit keys */ -#endif -#ifndef STSAFE_MAX_PUBKEY_RAW_LEN - #define STSAFE_MAX_PUBKEY_RAW_LEN ((uint32_t)STSAFE_MAX_KEY_LEN * 2) /* x/y */ -#endif -#ifndef STSAFE_MAX_SIG_LEN - #define STSAFE_MAX_SIG_LEN ((uint32_t)STSAFE_MAX_KEY_LEN * 2) /* r/s */ -#endif - -WOLFSSL_API int SSL_STSAFE_LoadDeviceCertificate(byte** pRawCertificate, - word32* pRawCertificateLen); - -#if !defined(WOLFCRYPT_ONLY) && defined(HAVE_PK_CALLBACKS) -WOLFSSL_API int SSL_STSAFE_CreateKeyCb(WOLFSSL* ssl, ecc_key* key, word32 keySz, - int ecc_curve, void* ctx); -WOLFSSL_API int SSL_STSAFE_VerifyPeerCertCb(WOLFSSL* ssl, - const unsigned char* sig, unsigned int sigSz, - const unsigned char* hash, unsigned int hashSz, - const unsigned char* keyDer, unsigned int keySz, - int* result, void* ctx); -WOLFSSL_API int SSL_STSAFE_SignCertificateCb(WOLFSSL* ssl, - const byte* in, word32 inSz, - byte* out, word32* outSz, - const byte* key, word32 keySz, void* ctx); -WOLFSSL_API int SSL_STSAFE_SharedSecretCb(WOLFSSL* ssl, - ecc_key* otherKey, - unsigned char* pubKeyDer, unsigned int* pubKeySz, - unsigned char* out, unsigned int* outlen, - int side, void* ctx); - -/* Helper API's for setting up callbacks */ -WOLFSSL_API int SSL_STSAFE_SetupPkCallbacks(WOLFSSL_CTX* ctx); -WOLFSSL_API int SSL_STSAFE_SetupPkCallbackCtx(WOLFSSL* ssl, void* user_ctx); -#endif /* HAVE_PK_CALLBACKS */ - - -#ifdef WOLF_CRYPTO_CB - -/* Device ID that's unique and valid (not INVALID_DEVID -2) */ -#define WOLF_STSAFE_DEVID 0x53545341; /* STSA */ - -typedef struct wolfSTSAFE_CryptoCb_Ctx { -#ifdef HAVE_ECC - ecc_key wolfEccKey; -#endif - int devId; -} wolfSTSAFE_CryptoCb_Ctx; - -WOLFSSL_API int wolfSSL_STSAFE_CryptoDevCb(int devId, wc_CryptoInfo* info, - void* ctx); - -#endif /* WOLF_CRYPTO_CB */ - -#endif /* WOLFSSL_STSAFEA100 */ - -#endif /* _WOLFPORT_STSAFE_H_ */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/ti/ti-ccm.h b/client/wolfssl/wolfssl/wolfcrypt/port/ti/ti-ccm.h deleted file mode 100644 index f704d77..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/ti/ti-ccm.h +++ /dev/null @@ -1,47 +0,0 @@ -/* port/ti/ti_ccm.c - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLF_CRYPT_TI_CCM_H -#define WOLF_CRYPT_TI_CCM_H - -#ifdef HAVE_CONFIG_H - #include <config.h> -#endif - -#include <wolfssl/wolfcrypt/settings.h> - -#if defined(WOLFSSL_TI_CRYPT) || defined(WOLFSSL_TI_HASH) - -int wolfSSL_TI_CCMInit(void) ; - -#ifndef SINGLE_THREADED -void wolfSSL_TI_lockCCM(void) ; -void wolfSSL_TI_unlockCCM(void) ; -#else -#define wolfSSL_TI_lockCCM() -#define wolfSSL_TI_unlockCCM() -#endif - -#endif - -#endif - diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/ti/ti-hash.h b/client/wolfssl/wolfssl/wolfcrypt/port/ti/ti-hash.h deleted file mode 100644 index 1c21245..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/ti/ti-hash.h +++ /dev/null @@ -1,63 +0,0 @@ -/* port/ti/ti-hash.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLF_CRYPT_TI_HASH_H -#define WOLF_CRYPT_TI_HASH_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifndef WOLFSSL_TI_INITBUFF - #define WOLFSSL_TI_INITBUFF 64 -#endif - -#ifndef WOLFSSL_MAX_HASH_SIZE - #define WOLFSSL_MAX_HASH_SIZE 64 -#endif - -#define WOLFSSL_NO_HASH_RAW - -typedef struct { - byte *msg; - word32 used; - word32 len; - byte hash[WOLFSSL_MAX_HASH_SIZE]; -} wolfssl_TI_Hash; - - -#ifndef TI_HASH_TEST - -#if !defined(NO_MD5) - typedef wolfssl_TI_Hash wc_Md5; -#endif -#if !defined(NO_SHA) - typedef wolfssl_TI_Hash wc_Sha; -#endif -#if !defined(NO_SHA256) - typedef wolfssl_TI_Hash wc_Sha256; -#endif -#if defined(WOLFSSL_SHA224) - typedef wolfssl_TI_Hash wc_Sha224; -#endif - -#endif /* !TI_HASH_TEST */ - -#endif /* WOLF_CRYPT_TI_HASH_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/port/xilinx/xil-sha3.h b/client/wolfssl/wolfssl/wolfcrypt/port/xilinx/xil-sha3.h deleted file mode 100644 index 47b4624..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/port/xilinx/xil-sha3.h +++ /dev/null @@ -1,45 +0,0 @@ -/* xil-sha3.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLF_XIL_CRYPT_SHA3_H -#define WOLF_XIL_CRYPT_SHA3_H - -#ifdef WOLFSSL_SHA3 -#include "xsecure_sha.h" - -#ifdef __cplusplus - extern "C" { -#endif - -/* Sha3 digest */ -typedef struct Sha3 { - XSecure_Sha3 hw; - XCsuDma dma; -} wc_Sha3; - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_SHA3 */ -#endif /* WOLF_XIL_CRYPT_SHA3_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/pwdbased.h b/client/wolfssl/wolfssl/wolfcrypt/pwdbased.h deleted file mode 100644 index 13860fe..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/pwdbased.h +++ /dev/null @@ -1,77 +0,0 @@ -/* pwdbased.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/pwdbased.h -*/ - -#ifndef WOLF_CRYPT_PWDBASED_H -#define WOLF_CRYPT_PWDBASED_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifndef NO_PWDBASED - - -#ifdef __cplusplus - extern "C" { -#endif - -/* - * hashType renamed to typeH to avoid shadowing global declaration here: - * wolfssl/wolfcrypt/asn.h line 173 in enum Oid_Types - */ -WOLFSSL_API int wc_PBKDF1_ex(byte* key, int keyLen, byte* iv, int ivLen, - const byte* passwd, int passwdLen, - const byte* salt, int saltLen, int iterations, - int hashType, void* heap); -WOLFSSL_API int wc_PBKDF1(byte* output, const byte* passwd, int pLen, - const byte* salt, int sLen, int iterations, int kLen, - int typeH); -WOLFSSL_API int wc_PBKDF2_ex(byte* output, const byte* passwd, int pLen, - const byte* salt, int sLen, int iterations, int kLen, - int typeH, void* heap, int devId); -WOLFSSL_API int wc_PBKDF2(byte* output, const byte* passwd, int pLen, - const byte* salt, int sLen, int iterations, int kLen, - int typeH); -WOLFSSL_API int wc_PKCS12_PBKDF(byte* output, const byte* passwd, int pLen, - const byte* salt, int sLen, int iterations, - int kLen, int typeH, int purpose); -WOLFSSL_API int wc_PKCS12_PBKDF_ex(byte* output, const byte* passwd,int passLen, - const byte* salt, int saltLen, int iterations, int kLen, - int hashType, int id, void* heap); - -#ifdef HAVE_SCRYPT -WOLFSSL_API int wc_scrypt(byte* output, const byte* passwd, int passLen, - const byte* salt, int saltLen, int cost, - int blockSize, int parallel, int dkLen); -WOLFSSL_API int wc_scrypt_ex(byte* output, const byte* passwd, int passLen, - const byte* salt, int saltLen, word32 iterations, - int blockSize, int parallel, int dkLen); -#endif - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* NO_PWDBASED */ -#endif /* WOLF_CRYPT_PWDBASED_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/rabbit.h b/client/wolfssl/wolfssl/wolfcrypt/rabbit.h deleted file mode 100644 index 20c2693..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/rabbit.h +++ /dev/null @@ -1,73 +0,0 @@ -/* rabbit.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/rabbit.h -*/ - - -#ifndef WOLF_CRYPT_RABBIT_H -#define WOLF_CRYPT_RABBIT_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifndef NO_RABBIT - -#ifdef __cplusplus - extern "C" { -#endif - - -enum { - RABBIT_ENC_TYPE = 5 /* cipher unique type */ -}; - - -/* Rabbit Context */ -typedef struct RabbitCtx { - word32 x[8]; - word32 c[8]; - word32 carry; -} RabbitCtx; - - -/* Rabbit stream cipher */ -typedef struct Rabbit { - RabbitCtx masterCtx; - RabbitCtx workCtx; -#ifdef XSTREAM_ALIGN - void* heap; /* heap hint, currently XMALLOC only used with aligning */ -#endif -} Rabbit; - - -WOLFSSL_API int wc_RabbitProcess(Rabbit*, byte*, const byte*, word32); -WOLFSSL_API int wc_RabbitSetKey(Rabbit*, const byte* key, const byte* iv); - -WOLFSSL_LOCAL int wc_Rabbit_SetHeap(Rabbit* ctx, void* heap); - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* NO_RABBIT */ -#endif /* WOLF_CRYPT_RABBIT_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/random.h b/client/wolfssl/wolfssl/wolfcrypt/random.h deleted file mode 100644 index aaa21c4..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/random.h +++ /dev/null @@ -1,250 +0,0 @@ -/* random.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/random.h -*/ - - - -#ifndef WOLF_CRYPT_RANDOM_H -#define WOLF_CRYPT_RANDOM_H - -#include <wolfssl/wolfcrypt/types.h> - -#if defined(HAVE_FIPS) && \ - defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2) - #include <wolfssl/wolfcrypt/fips.h> -#endif /* HAVE_FIPS_VERSION >= 2 */ - -/* included for fips @wc_fips */ -#if defined(HAVE_FIPS) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 2)) -#include <cyassl/ctaocrypt/random.h> -#endif - -#ifdef __cplusplus - extern "C" { -#endif - - /* Maximum generate block length */ -#ifndef RNG_MAX_BLOCK_LEN - #ifdef HAVE_INTEL_QA - #define RNG_MAX_BLOCK_LEN (0xFFFFl) - #else - #define RNG_MAX_BLOCK_LEN (0x10000l) - #endif -#endif - -/* Size of the BRBG seed */ -#ifndef DRBG_SEED_LEN - #define DRBG_SEED_LEN (440/8) -#endif - - -#if !defined(CUSTOM_RAND_TYPE) - /* To maintain compatibility the default is byte */ - #define CUSTOM_RAND_TYPE byte -#endif - -/* make sure Hash DRBG is enabled, unless WC_NO_HASHDRBG is defined - or CUSTOM_RAND_GENERATE_BLOCK is defined */ -#if !defined(WC_NO_HASHDRBG) && !defined(CUSTOM_RAND_GENERATE_BLOCK) - #undef HAVE_HASHDRBG - #define HAVE_HASHDRBG - #ifndef WC_RESEED_INTERVAL - #define WC_RESEED_INTERVAL (1000000) - #endif -#endif - - -/* avoid redefinition of structs */ -#if !defined(HAVE_FIPS) || \ - (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)) - -/* RNG supports the following sources (in order): - * 1. CUSTOM_RAND_GENERATE_BLOCK: Defines name of function as RNG source and - * bypasses the options below. - * 2. HAVE_INTEL_RDRAND: Uses the Intel RDRAND if supported by CPU. - * 3. HAVE_HASHDRBG (requires SHA256 enabled): Uses SHA256 based P-RNG - * seeded via wc_GenerateSeed. This is the default source. - */ - - /* Seed source can be overridden by defining one of these: - CUSTOM_RAND_GENERATE_SEED - CUSTOM_RAND_GENERATE_SEED_OS - CUSTOM_RAND_GENERATE */ - - -#if defined(CUSTOM_RAND_GENERATE_BLOCK) - /* To use define the following: - * #define CUSTOM_RAND_GENERATE_BLOCK myRngFunc - * extern int myRngFunc(byte* output, word32 sz); - */ -#elif defined(HAVE_HASHDRBG) - #ifdef NO_SHA256 - #error "Hash DRBG requires SHA-256." - #endif /* NO_SHA256 */ - #include <wolfssl/wolfcrypt/sha256.h> -#elif defined(HAVE_WNR) - /* allow whitewood as direct RNG source using wc_GenerateSeed directly */ -#elif defined(HAVE_INTEL_RDRAND) - /* Intel RDRAND or RDSEED */ -#elif !defined(WC_NO_RNG) - #error No RNG source defined! -#endif - -#ifdef HAVE_WNR - #include <wnr.h> -#endif - -#ifdef WOLFSSL_ASYNC_CRYPT - #include <wolfssl/wolfcrypt/async.h> -#endif - - -#if defined(USE_WINDOWS_API) - #if defined(_WIN64) - typedef unsigned __int64 ProviderHandle; - /* type HCRYPTPROV, avoid #include <windows.h> */ - #else - typedef unsigned long ProviderHandle; - #endif -#endif - - -/* OS specific seeder */ -typedef struct OS_Seed { - #if defined(USE_WINDOWS_API) - ProviderHandle handle; - #else - int fd; - #endif - #if defined(WOLF_CRYPTO_CB) - int devId; - #endif -} OS_Seed; - - -#ifndef WC_RNG_TYPE_DEFINED /* guard on redeclaration */ - typedef struct WC_RNG WC_RNG; - #define WC_RNG_TYPE_DEFINED -#endif - -/* RNG context */ -struct WC_RNG { - OS_Seed seed; - void* heap; -#ifdef HAVE_HASHDRBG - /* Hash-based Deterministic Random Bit Generator */ - struct DRBG* drbg; -#if defined(WOLFSSL_NO_MALLOC) && !defined(WOLFSSL_STATIC_MEMORY) - #define DRBG_STRUCT_SZ ((sizeof(word32)*3) + (DRBG_SEED_LEN*2)) - #ifdef WOLFSSL_SMALL_STACK_CACHE - #define DRBG_STRUCT_SZ_SHA256 (sizeof(wc_Sha256)) - #else - #define DRBG_STRUCT_SZ_SHA256 0 - #endif - #if defined(WOLFSSL_ASYNC_CRYPT) || defined(WOLF_CRYPTO_CB) - #define DRBG_STRUCT_SZ_ASYNC (sizeof(void*) + sizeof(int)) - #else - #define DRBG_STRUCT_SZ_ASYNC 0 - #endif - byte drbg_data[DRBG_STRUCT_SZ + DRBG_STRUCT_SZ_SHA256 + DRBG_STRUCT_SZ_ASYNC]; -#endif - byte status; -#endif -#ifdef WOLFSSL_ASYNC_CRYPT - WC_ASYNC_DEV asyncDev; -#endif -#if defined(WOLFSSL_ASYNC_CRYPT) || defined(WOLF_CRYPTO_CB) - int devId; -#endif -}; - -#endif /* NO FIPS or have FIPS v2*/ - -/* NO_OLD_RNGNAME removes RNG struct name to prevent possible type conflicts, - * can't be used with CTaoCrypt FIPS */ -#if !defined(NO_OLD_RNGNAME) && !defined(HAVE_FIPS) - #define RNG WC_RNG -#endif - - -WOLFSSL_LOCAL -int wc_GenerateSeed(OS_Seed* os, byte* seed, word32 sz); - - -#ifdef HAVE_WNR - /* Whitewood netRandom client library */ - WOLFSSL_API int wc_InitNetRandom(const char*, wnr_hmac_key, int); - WOLFSSL_API int wc_FreeNetRandom(void); -#endif /* HAVE_WNR */ - - -WOLFSSL_ABI WOLFSSL_API WC_RNG* wc_rng_new(byte*, word32, void*); -WOLFSSL_ABI WOLFSSL_API void wc_rng_free(WC_RNG*); - - -#ifndef WC_NO_RNG -WOLFSSL_API int wc_InitRng(WC_RNG*); -WOLFSSL_API int wc_InitRng_ex(WC_RNG* rng, void* heap, int devId); -WOLFSSL_API int wc_InitRngNonce(WC_RNG* rng, byte* nonce, word32 nonceSz); -WOLFSSL_API int wc_InitRngNonce_ex(WC_RNG* rng, byte* nonce, word32 nonceSz, - void* heap, int devId); -WOLFSSL_ABI WOLFSSL_API int wc_RNG_GenerateBlock(WC_RNG*, byte*, word32 sz); -WOLFSSL_API int wc_RNG_GenerateByte(WC_RNG*, byte*); -WOLFSSL_API int wc_FreeRng(WC_RNG*); -#else -#include <wolfssl/wolfcrypt/error-crypt.h> -#define wc_InitRng(rng) NOT_COMPILED_IN -#define wc_InitRng_ex(rng, h, d) NOT_COMPILED_IN -#define wc_InitRngNonce(rng, n, s) NOT_COMPILED_IN -#define wc_InitRngNonce_ex(rng, n, s, h, d) NOT_COMPILED_IN -#define wc_RNG_GenerateBlock(rng, b, s) NOT_COMPILED_IN -#define wc_RNG_GenerateByte(rng, b) NOT_COMPILED_IN -#define wc_FreeRng(rng) (void)NOT_COMPILED_IN -#endif - - - -#ifdef HAVE_HASHDRBG - WOLFSSL_LOCAL int wc_RNG_DRBG_Reseed(WC_RNG* rng, const byte* entropy, - word32 entropySz); - WOLFSSL_API int wc_RNG_TestSeed(const byte* seed, word32 seedSz); - WOLFSSL_API int wc_RNG_HealthTest(int reseed, - const byte* entropyA, word32 entropyASz, - const byte* entropyB, word32 entropyBSz, - byte* output, word32 outputSz); - WOLFSSL_API int wc_RNG_HealthTest_ex(int reseed, - const byte* nonce, word32 nonceSz, - const byte* entropyA, word32 entropyASz, - const byte* entropyB, word32 entropyBSz, - byte* output, word32 outputSz, - void* heap, int devId); -#endif /* HAVE_HASHDRBG */ - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLF_CRYPT_RANDOM_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/ripemd.h b/client/wolfssl/wolfssl/wolfcrypt/ripemd.h deleted file mode 100644 index 9368648..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/ripemd.h +++ /dev/null @@ -1,67 +0,0 @@ -/* ripemd.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/ripemd.h -*/ - -#ifndef WOLF_CRYPT_RIPEMD_H -#define WOLF_CRYPT_RIPEMD_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef WOLFSSL_RIPEMD - -#ifdef __cplusplus - extern "C" { -#endif - - -/* in bytes */ -enum { - RIPEMD = 3, /* hash type unique */ - RIPEMD_BLOCK_SIZE = 64, - RIPEMD_DIGEST_SIZE = 20, - RIPEMD_PAD_SIZE = 56 -}; - - -/* RipeMd 160 digest */ -typedef struct RipeMd { - word32 buffLen; /* in bytes */ - word32 loLen; /* length in bytes */ - word32 hiLen; /* length in bytes */ - word32 digest[RIPEMD_DIGEST_SIZE / sizeof(word32)]; - word32 buffer[RIPEMD_BLOCK_SIZE / sizeof(word32)]; -} RipeMd; - - -WOLFSSL_API int wc_InitRipeMd(RipeMd*); -WOLFSSL_API int wc_RipeMdUpdate(RipeMd*, const byte*, word32); -WOLFSSL_API int wc_RipeMdFinal(RipeMd*, byte*); - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_RIPEMD */ -#endif /* WOLF_CRYPT_RIPEMD_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/rsa.h b/client/wolfssl/wolfssl/wolfcrypt/rsa.h deleted file mode 100644 index 3965dc4..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/rsa.h +++ /dev/null @@ -1,371 +0,0 @@ -/* rsa.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/rsa.h -*/ - - -#ifndef WOLF_CRYPT_RSA_H -#define WOLF_CRYPT_RSA_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifndef NO_RSA - - -/* RSA default exponent */ -#ifndef WC_RSA_EXPONENT - #define WC_RSA_EXPONENT 65537L -#endif - -#if defined(WC_RSA_NONBLOCK) - /* enable support for fast math based non-blocking exptmod */ - /* this splits the RSA function into many smaller operations */ - #ifndef USE_FAST_MATH - #error RSA non-blocking mode only supported using fast math - #endif - #ifndef TFM_TIMING_RESISTANT - #error RSA non-blocking mode only supported with timing resistance enabled - #endif - - /* RSA bounds check is not supported with RSA non-blocking mode */ - #undef NO_RSA_BOUNDS_CHECK - #define NO_RSA_BOUNDS_CHECK -#endif - -/* allow for user to plug in own crypto */ -#if !defined(HAVE_FIPS) && (defined(HAVE_USER_RSA) || defined(HAVE_FAST_RSA)) - #include "user_rsa.h" -#else - -#if defined(HAVE_FIPS) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 2)) -/* for fips @wc_fips */ -#include <cyassl/ctaocrypt/rsa.h> -#if defined(CYASSL_KEY_GEN) && !defined(WOLFSSL_KEY_GEN) - #define WOLFSSL_KEY_GEN -#endif -#else - #include <wolfssl/wolfcrypt/integer.h> - #include <wolfssl/wolfcrypt/random.h> -#endif /* HAVE_FIPS && HAVE_FIPS_VERION 1 */ -#if defined(HAVE_FIPS) && \ - defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2) -#include <wolfssl/wolfcrypt/fips.h> -#endif - -/* header file needed for OAEP padding */ -#include <wolfssl/wolfcrypt/hash.h> - -#ifdef WOLFSSL_XILINX_CRYPT -#include "xsecure_rsa.h" -#endif - -#if defined(WOLFSSL_CRYPTOCELL) - #include <wolfssl/wolfcrypt/port/arm/cryptoCell.h> -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -enum { - RSA_MIN_SIZE = 512, - RSA_MAX_SIZE = 4096, -}; - -/* avoid redefinition of structs */ -#if !defined(HAVE_FIPS) || \ - (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)) - -#ifdef WOLFSSL_ASYNC_CRYPT - #include <wolfssl/wolfcrypt/async.h> - #ifdef WOLFSSL_CERT_GEN - #include <wolfssl/wolfcrypt/asn.h> - #endif -#endif - -enum { - RSA_PUBLIC = 0, - RSA_PRIVATE = 1, - - RSA_TYPE_UNKNOWN = -1, - RSA_PUBLIC_ENCRYPT = 0, - RSA_PUBLIC_DECRYPT = 1, - RSA_PRIVATE_ENCRYPT = 2, - RSA_PRIVATE_DECRYPT = 3, - - RSA_BLOCK_TYPE_1 = 1, - RSA_BLOCK_TYPE_2 = 2, - - RSA_MIN_PAD_SZ = 11, /* separator + 0 + pad value + 8 pads */ - - RSA_PSS_PAD_SZ = 8, - RSA_PSS_SALT_MAX_SZ = 62, - -#ifdef OPENSSL_EXTRA - RSA_PKCS1_PADDING_SIZE = 11, - RSA_PKCS1_OAEP_PADDING_SIZE = 42, /* (2 * hashlen(SHA-1)) + 2 */ -#endif -#ifdef WC_RSA_PSS - RSA_PSS_PAD_TERM = 0xBC, -#endif - - RSA_PSS_SALT_LEN_DEFAULT = -1, -#ifdef WOLFSSL_PSS_SALT_LEN_DISCOVER - RSA_PSS_SALT_LEN_DISCOVER = -2, -#endif - -#ifdef HAVE_PKCS11 - RSA_MAX_ID_LEN = 32, -#endif -}; - -#ifdef WC_RSA_NONBLOCK -typedef struct RsaNb { - exptModNb_t exptmod; /* non-block expt_mod */ - mp_int tmp; -} RsaNb; -#endif - -/* RSA */ -struct RsaKey { - mp_int n, e; -#ifndef WOLFSSL_RSA_PUBLIC_ONLY - mp_int d, p, q; -#if defined(WOLFSSL_KEY_GEN) || defined(OPENSSL_EXTRA) || !defined(RSA_LOW_MEM) - mp_int dP, dQ, u; -#endif -#endif - void* heap; /* for user memory overrides */ - byte* data; /* temp buffer for async RSA */ - int type; /* public or private */ - int state; - word32 dataLen; -#ifdef WC_RSA_BLINDING - WC_RNG* rng; /* for PrivateDecrypt blinding */ -#endif -#ifdef WOLF_CRYPTO_CB - int devId; -#endif -#ifdef WOLFSSL_ASYNC_CRYPT - WC_ASYNC_DEV asyncDev; - #ifdef WOLFSSL_CERT_GEN - CertSignCtx certSignCtx; /* context info for cert sign (MakeSignature) */ - #endif -#endif /* WOLFSSL_ASYNC_CRYPT */ -#ifdef WOLFSSL_XILINX_CRYPT - word32 pubExp; /* to keep values in scope they are here in struct */ - byte* mod; - XSecure_Rsa xRsa; -#endif -#ifdef HAVE_PKCS11 - byte id[RSA_MAX_ID_LEN]; - int idLen; -#endif -#if defined(WOLFSSL_ASYNC_CRYPT) || !defined(WOLFSSL_RSA_VERIFY_INLINE) - byte dataIsAlloc; -#endif -#ifdef WC_RSA_NONBLOCK - RsaNb* nb; -#endif -#ifdef WOLFSSL_AFALG_XILINX_RSA - int alFd; - int rdFd; -#endif -#if defined(WOLFSSL_CRYPTOCELL) - rsa_context_t ctx; -#endif -}; - -#ifndef WC_RSAKEY_TYPE_DEFINED - typedef struct RsaKey RsaKey; - #define WC_RSAKEY_TYPE_DEFINED -#endif - -#endif /*HAVE_FIPS */ - -WOLFSSL_API int wc_InitRsaKey(RsaKey* key, void* heap); -WOLFSSL_API int wc_InitRsaKey_ex(RsaKey* key, void* heap, int devId); -WOLFSSL_API int wc_FreeRsaKey(RsaKey* key); -#ifdef HAVE_PKCS11 -WOLFSSL_API int wc_InitRsaKey_Id(RsaKey* key, unsigned char* id, int len, - void* heap, int devId); -#endif -WOLFSSL_API int wc_CheckRsaKey(RsaKey* key); -#ifdef WOLFSSL_XILINX_CRYPT -WOLFSSL_LOCAL int wc_InitRsaHw(RsaKey* key); -#endif /* WOLFSSL_XILINX_CRYPT */ - -WOLFSSL_API int wc_RsaFunction(const byte* in, word32 inLen, byte* out, - word32* outLen, int type, RsaKey* key, WC_RNG* rng); - -WOLFSSL_API int wc_RsaPublicEncrypt(const byte* in, word32 inLen, byte* out, - word32 outLen, RsaKey* key, WC_RNG* rng); -WOLFSSL_API int wc_RsaPrivateDecryptInline(byte* in, word32 inLen, byte** out, - RsaKey* key); -WOLFSSL_API int wc_RsaPrivateDecrypt(const byte* in, word32 inLen, byte* out, - word32 outLen, RsaKey* key); -WOLFSSL_API int wc_RsaSSL_Sign(const byte* in, word32 inLen, byte* out, - word32 outLen, RsaKey* key, WC_RNG* rng); -WOLFSSL_API int wc_RsaPSS_Sign(const byte* in, word32 inLen, byte* out, - word32 outLen, enum wc_HashType hash, int mgf, - RsaKey* key, WC_RNG* rng); -WOLFSSL_API int wc_RsaPSS_Sign_ex(const byte* in, word32 inLen, byte* out, - word32 outLen, enum wc_HashType hash, - int mgf, int saltLen, RsaKey* key, - WC_RNG* rng); -WOLFSSL_API int wc_RsaSSL_VerifyInline(byte* in, word32 inLen, byte** out, - RsaKey* key); -WOLFSSL_API int wc_RsaSSL_Verify(const byte* in, word32 inLen, byte* out, - word32 outLen, RsaKey* key); -WOLFSSL_API int wc_RsaSSL_Verify_ex(const byte* in, word32 inLen, byte* out, - word32 outLen, RsaKey* key, int pad_type); -WOLFSSL_API int wc_RsaPSS_VerifyInline(byte* in, word32 inLen, byte** out, - enum wc_HashType hash, int mgf, - RsaKey* key); -WOLFSSL_API int wc_RsaPSS_VerifyInline_ex(byte* in, word32 inLen, byte** out, - enum wc_HashType hash, int mgf, - int saltLen, RsaKey* key); -WOLFSSL_API int wc_RsaPSS_Verify(byte* in, word32 inLen, byte* out, - word32 outLen, enum wc_HashType hash, int mgf, - RsaKey* key); -WOLFSSL_API int wc_RsaPSS_Verify_ex(byte* in, word32 inLen, byte* out, - word32 outLen, enum wc_HashType hash, - int mgf, int saltLen, RsaKey* key); -WOLFSSL_API int wc_RsaPSS_CheckPadding(const byte* in, word32 inLen, byte* sig, - word32 sigSz, - enum wc_HashType hashType); -WOLFSSL_API int wc_RsaPSS_CheckPadding_ex(const byte* in, word32 inLen, - byte* sig, word32 sigSz, - enum wc_HashType hashType, - int saltLen, int bits); -WOLFSSL_API int wc_RsaPSS_VerifyCheckInline(byte* in, word32 inLen, byte** out, - const byte* digest, word32 digentLen, - enum wc_HashType hash, int mgf, - RsaKey* key); -WOLFSSL_API int wc_RsaPSS_VerifyCheck(byte* in, word32 inLen, - byte* out, word32 outLen, - const byte* digest, word32 digestLen, - enum wc_HashType hash, int mgf, - RsaKey* key); - -WOLFSSL_API int wc_RsaEncryptSize(RsaKey* key); - -#if !defined(HAVE_FIPS) || \ - (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)) -/* to avoid asn duplicate symbols @wc_fips */ -WOLFSSL_API int wc_RsaPrivateKeyDecode(const byte* input, word32* inOutIdx, - RsaKey*, word32); -WOLFSSL_API int wc_RsaPublicKeyDecode(const byte* input, word32* inOutIdx, - RsaKey*, word32); -WOLFSSL_API int wc_RsaPublicKeyDecodeRaw(const byte* n, word32 nSz, - const byte* e, word32 eSz, RsaKey* key); -WOLFSSL_API int wc_RsaKeyToDer(RsaKey*, byte* output, word32 inLen); - - -#ifdef WC_RSA_BLINDING - WOLFSSL_API int wc_RsaSetRNG(RsaKey* key, WC_RNG* rng); -#endif -#ifdef WC_RSA_NONBLOCK - WOLFSSL_API int wc_RsaSetNonBlock(RsaKey* key, RsaNb* nb); - #ifdef WC_RSA_NONBLOCK_TIME - WOLFSSL_API int wc_RsaSetNonBlockTime(RsaKey* key, word32 maxBlockUs, - word32 cpuMHz); - #endif -#endif - -/* - choice of padding added after fips, so not available when using fips RSA - */ - -/* Mask Generation Function Identifiers */ -#define WC_MGF1NONE 0 -#define WC_MGF1SHA1 26 -#define WC_MGF1SHA224 4 -#define WC_MGF1SHA256 1 -#define WC_MGF1SHA384 2 -#define WC_MGF1SHA512 3 - -/* Padding types */ -#define WC_RSA_PKCSV15_PAD 0 -#define WC_RSA_OAEP_PAD 1 -#define WC_RSA_PSS_PAD 2 -#define WC_RSA_NO_PAD 3 - -WOLFSSL_API int wc_RsaPublicEncrypt_ex(const byte* in, word32 inLen, byte* out, - word32 outLen, RsaKey* key, WC_RNG* rng, int type, - enum wc_HashType hash, int mgf, byte* label, word32 lableSz); -WOLFSSL_API int wc_RsaPrivateDecrypt_ex(const byte* in, word32 inLen, - byte* out, word32 outLen, RsaKey* key, int type, - enum wc_HashType hash, int mgf, byte* label, word32 lableSz); -WOLFSSL_API int wc_RsaPrivateDecryptInline_ex(byte* in, word32 inLen, - byte** out, RsaKey* key, int type, enum wc_HashType hash, - int mgf, byte* label, word32 lableSz); -#if defined(WC_RSA_DIRECT) || defined(WC_RSA_NO_PADDING) -WOLFSSL_API int wc_RsaDirect(byte* in, word32 inLen, byte* out, word32* outSz, - RsaKey* key, int type, WC_RNG* rng); -#endif - -#endif /* HAVE_FIPS */ - -WOLFSSL_API int wc_RsaFlattenPublicKey(RsaKey*, byte*, word32*, byte*, - word32*); -WOLFSSL_API int wc_RsaExportKey(RsaKey* key, - byte* e, word32* eSz, - byte* n, word32* nSz, - byte* d, word32* dSz, - byte* p, word32* pSz, - byte* q, word32* qSz); - -WOLFSSL_API int wc_RsaKeyToPublicDer(RsaKey*, byte* output, word32 inLen); - -#ifdef WOLFSSL_KEY_GEN - WOLFSSL_API int wc_MakeRsaKey(RsaKey* key, int size, long e, WC_RNG* rng); - WOLFSSL_API int wc_CheckProbablePrime_ex(const byte* p, word32 pSz, - const byte* q, word32 qSz, - const byte* e, word32 eSz, - int nlen, int* isPrime, WC_RNG* rng); - WOLFSSL_API int wc_CheckProbablePrime(const byte* p, word32 pSz, - const byte* q, word32 qSz, - const byte* e, word32 eSz, - int nlen, int* isPrime); -#endif - -WOLFSSL_LOCAL int wc_RsaPad_ex(const byte* input, word32 inputLen, byte* pkcsBlock, - word32 pkcsBlockLen, byte padValue, WC_RNG* rng, int padType, - enum wc_HashType hType, int mgf, byte* optLabel, word32 labelLen, - int saltLen, int bits, void* heap); -WOLFSSL_LOCAL int wc_RsaUnPad_ex(byte* pkcsBlock, word32 pkcsBlockLen, byte** out, - byte padValue, int padType, enum wc_HashType hType, - int mgf, byte* optLabel, word32 labelLen, int saltLen, - int bits, void* heap); - -#endif /* HAVE_USER_RSA */ - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* NO_RSA */ -#endif /* WOLF_CRYPT_RSA_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/selftest.h b/client/wolfssl/wolfssl/wolfcrypt/selftest.h deleted file mode 100644 index 826b90d..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/selftest.h +++ /dev/null @@ -1,48 +0,0 @@ -/* selftest.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -#ifndef WOLFCRYPT_SELF_TEST_H -#define WOLFCRYPT_SELF_TEST_H - -#include <wolfssl/wolfcrypt/types.h> - - -#ifdef __cplusplus - extern "C" { -#endif - -#ifdef HAVE_SELFTEST - /* Get wolfCrypt CAVP version */ - WOLFSSL_API const char* wolfCrypt_GetVersion_CAVP_selftest(void); - - /* wolfCrypt self test, runs CAVP KATs */ - WOLFSSL_API int wolfCrypt_SelfTest(void); -#endif - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFCRYPT_SELF_TEST_H */ - - diff --git a/client/wolfssl/wolfssl/wolfcrypt/settings.h b/client/wolfssl/wolfssl/wolfcrypt/settings.h deleted file mode 100644 index e0620a9..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/settings.h +++ /dev/null @@ -1,2195 +0,0 @@ -/* settings.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -/* Place OS specific preprocessor flags, defines, includes here, will be - included into every file because types.h includes it */ - - -#ifndef WOLF_CRYPT_SETTINGS_H -#define WOLF_CRYPT_SETTINGS_H - -#ifdef __cplusplus - extern "C" { -#endif - -/* This flag allows wolfSSL to include options.h instead of having client - * projects do it themselves. This should *NEVER* be defined when building - * wolfSSL as it can cause hard to debug problems. */ -#ifdef EXTERNAL_OPTS_OPENVPN -#include <wolfssl/options.h> -#endif - -/* Uncomment next line if using IPHONE */ -/* #define IPHONE */ - -/* Uncomment next line if using ThreadX */ -/* #define THREADX */ - -/* Uncomment next line if using Micrium uC/OS-III */ -/* #define MICRIUM */ - -/* Uncomment next line if using Deos RTOS*/ -/* #define WOLFSSL_DEOS*/ - -/* Uncomment next line if using Mbed */ -/* #define MBED */ - -/* Uncomment next line if using Microchip PIC32 ethernet starter kit */ -/* #define MICROCHIP_PIC32 */ - -/* Uncomment next line if using Microchip TCP/IP stack, version 5 */ -/* #define MICROCHIP_TCPIP_V5 */ - -/* Uncomment next line if using Microchip TCP/IP stack, version 6 or later */ -/* #define MICROCHIP_TCPIP */ - -/* Uncomment next line if using PIC32MZ Crypto Engine */ -/* #define WOLFSSL_MICROCHIP_PIC32MZ */ - -/* Uncomment next line if using FreeRTOS */ -/* #define FREERTOS */ - -/* Uncomment next line if using FreeRTOS+ TCP */ -/* #define FREERTOS_TCP */ - -/* Uncomment next line if using FreeRTOS Windows Simulator */ -/* #define FREERTOS_WINSIM */ - -/* Uncomment next line if using RTIP */ -/* #define EBSNET */ - -/* Uncomment next line if using lwip */ -/* #define WOLFSSL_LWIP */ - -/* Uncomment next line if building wolfSSL for a game console */ -/* #define WOLFSSL_GAME_BUILD */ - -/* Uncomment next line if building wolfSSL for LSR */ -/* #define WOLFSSL_LSR */ - -/* Uncomment next line if building for Freescale Classic MQX version 5.0 */ -/* #define FREESCALE_MQX_5_0 */ - -/* Uncomment next line if building for Freescale Classic MQX version 4.0 */ -/* #define FREESCALE_MQX_4_0 */ - -/* Uncomment next line if building for Freescale Classic MQX/RTCS/MFS */ -/* #define FREESCALE_MQX */ - -/* Uncomment next line if building for Freescale KSDK MQX/RTCS/MFS */ -/* #define FREESCALE_KSDK_MQX */ - -/* Uncomment next line if building for Freescale KSDK Bare Metal */ -/* #define FREESCALE_KSDK_BM */ - -/* Uncomment next line if building for Freescale KSDK FreeRTOS, */ -/* (old name FREESCALE_FREE_RTOS) */ -/* #define FREESCALE_KSDK_FREERTOS */ - -/* Uncomment next line if using STM32F2 */ -/* #define WOLFSSL_STM32F2 */ - -/* Uncomment next line if using STM32F4 */ -/* #define WOLFSSL_STM32F4 */ - -/* Uncomment next line if using STM32FL */ -/* #define WOLFSSL_STM32FL */ - -/* Uncomment next line if using STM32F7 */ -/* #define WOLFSSL_STM32F7 */ - -/* Uncomment next line if using QL SEP settings */ -/* #define WOLFSSL_QL */ - -/* Uncomment next line if building for EROAD */ -/* #define WOLFSSL_EROAD */ - -/* Uncomment next line if building for IAR EWARM */ -/* #define WOLFSSL_IAR_ARM */ - -/* Uncomment next line if building for Rowley CrossWorks ARM */ -/* #define WOLFSSL_ROWLEY_ARM */ - -/* Uncomment next line if using TI-RTOS settings */ -/* #define WOLFSSL_TIRTOS */ - -/* Uncomment next line if building with PicoTCP */ -/* #define WOLFSSL_PICOTCP */ - -/* Uncomment next line if building for PicoTCP demo bundle */ -/* #define WOLFSSL_PICOTCP_DEMO */ - -/* Uncomment next line if building for uITRON4 */ -/* #define WOLFSSL_uITRON4 */ - -/* Uncomment next line if building for uT-Kernel */ -/* #define WOLFSSL_uTKERNEL2 */ - -/* Uncomment next line if using Max Strength build */ -/* #define WOLFSSL_MAX_STRENGTH */ - -/* Uncomment next line if building for VxWorks */ -/* #define WOLFSSL_VXWORKS */ - -/* Uncomment next line if building for Nordic nRF5x platform */ -/* #define WOLFSSL_NRF5x */ - -/* Uncomment next line to enable deprecated less secure static DH suites */ -/* #define WOLFSSL_STATIC_DH */ - -/* Uncomment next line to enable deprecated less secure static RSA suites */ -/* #define WOLFSSL_STATIC_RSA */ - -/* Uncomment next line if building for ARDUINO */ -/* Uncomment both lines if building for ARDUINO on INTEL_GALILEO */ -/* #define WOLFSSL_ARDUINO */ -/* #define INTEL_GALILEO */ - -/* Uncomment next line to enable asynchronous crypto WC_PENDING_E */ -/* #define WOLFSSL_ASYNC_CRYPT */ - -/* Uncomment next line if building for uTasker */ -/* #define WOLFSSL_UTASKER */ - -/* Uncomment next line if building for embOS */ -/* #define WOLFSSL_EMBOS */ - -/* Uncomment next line if building for RIOT-OS */ -/* #define WOLFSSL_RIOT_OS */ - -/* Uncomment next line if building for using XILINX hardened crypto */ -/* #define WOLFSSL_XILINX_CRYPT */ - -/* Uncomment next line if building for using XILINX */ -/* #define WOLFSSL_XILINX */ - -/* Uncomment next line if building for WICED Studio. */ -/* #define WOLFSSL_WICED */ - -/* Uncomment next line if building for Nucleus 1.2 */ -/* #define WOLFSSL_NUCLEUS_1_2 */ - -/* Uncomment next line if building for using Apache mynewt */ -/* #define WOLFSSL_APACHE_MYNEWT */ - -/* Uncomment next line if building for using ESP-IDF */ -/* #define WOLFSSL_ESPIDF */ - -/* Uncomment next line if using Espressif ESP32-WROOM-32 */ -/* #define WOLFSSL_ESPWROOM32 */ - -/* Uncomment next line if using Espressif ESP32-WROOM-32SE */ -/* #define WOLFSSL_ESPWROOM32SE */ - -/* Uncomment next line if using ARM CRYPTOCELL*/ -/* #define WOLFSSL_CRYPTOCELL */ - -/* Uncomment next line if using RENESAS TSIP */ -/* #define WOLFSSL_RENESAS_TSIP */ - -/* Uncomment next line if using RENESAS RX64N */ -/* #define WOLFSSL_RENESAS_RX65N */ - -#include <wolfssl/wolfcrypt/visibility.h> - -#ifdef WOLFSSL_USER_SETTINGS - #include "user_settings.h" -#endif - - -/* make sure old RNG name is used with CTaoCrypt FIPS */ -#ifdef HAVE_FIPS - #if !defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 2) - #define WC_RNG RNG - #else - #ifndef WOLFSSL_STM32L4 - #define RNG WC_RNG - #endif - #endif - /* blinding adds API not available yet in FIPS mode */ - #undef WC_RSA_BLINDING -#endif - - -#if defined(_WIN32) && !defined(_M_X64) && \ - defined(HAVE_AESGCM) && defined(WOLFSSL_AESNI) - -/* The _M_X64 macro is what's used in the headers for MSC to tell if it - * has the 64-bit versions of the 128-bit integers available. If one is - * building on 32-bit Windows with AES-NI, turn off the AES-GCMloop - * unrolling. */ - - #define AES_GCM_AESNI_NO_UNROLL -#endif - -#ifdef IPHONE - #define SIZEOF_LONG_LONG 8 -#endif - -#ifdef THREADX - #define SIZEOF_LONG_LONG 8 -#endif - -#ifdef HAVE_NETX - #ifdef NEED_THREADX_TYPES - #include <types.h> - #endif - #include <nx_api.h> -#endif - -#if defined(WOLFSSL_ESPIDF) - #define FREERTOS - #define WOLFSSL_LWIP - #define NO_WRITEV - #define SIZEOF_LONG_LONG 8 - #define NO_WOLFSSL_DIR - #define WOLFSSL_NO_CURRDIR - - #define TFM_TIMING_RESISTANT - #define ECC_TIMING_RESISTANT - #define WC_RSA_BLINDING - -#if defined(WOLFSSL_ESPWROOM32) || defined(WOLFSSL_ESPWROOM32SE) - #ifndef NO_ESP32WROOM32_CRYPT - #define WOLFSSL_ESP32WROOM32_CRYPT - #if defined(ESP32_USE_RSA_PRIMITIVE) && \ - !defined(NO_WOLFSSL_ESP32WROOM32_CRYPT_RSA_PRI) - #define WOLFSSL_ESP32WROOM32_CRYPT_RSA_PRI - #define USE_FAST_MATH - #define WOLFSSL_SMALL_STACK - #endif - #endif -#endif -#endif /* WOLFSSL_ESPIDF */ - -#if defined(WOLFSSL_RENESAS_TSIP) - #define TSIP_TLS_HMAC_KEY_INDEX_WORDSIZE 64 - #define TSIP_TLS_MASTERSECRET_SIZE 80 /* 20 words */ - #define TSIP_TLS_ENCPUBKEY_SZ_BY_CERTVRFY 560 /* in byte */ - #if !defined(NO_RENESAS_TSIP_CRYPT) && defined(WOLFSSL_RENESAS_RX65N) - #define WOLFSSL_RENESAS_TSIP_CRYPT - #define WOLFSSL_RENESAS_TSIP_TLS - #define WOLFSSL_RENESAS_TSIP_TLS_AES_CRYPT - #endif -#endif - -#if defined(WOLFSSL_RENESAS_RA6M3G) - /* settings in user_settings.h */ -#endif - -#if defined(HAVE_LWIP_NATIVE) /* using LwIP native TCP socket */ - #define WOLFSSL_LWIP - #define NO_WRITEV - #define SINGLE_THREADED - #define WOLFSSL_USER_IO - #define NO_FILESYSTEM -#endif - -#if defined(WOLFSSL_CONTIKI) - #include <contiki.h> - #define WOLFSSL_UIP - #define NO_WOLFSSL_MEMORY - #define NO_WRITEV - #define SINGLE_THREADED - #define WOLFSSL_USER_IO - #define NO_FILESYSTEM - #define CUSTOM_RAND_TYPE uint16_t - #define CUSTOM_RAND_GENERATE random_rand - static inline word32 LowResTimer(void) - { - return clock_seconds(); - } -#endif - -#if defined(WOLFSSL_IAR_ARM) || defined(WOLFSSL_ROWLEY_ARM) - #define NO_MAIN_DRIVER - #define SINGLE_THREADED - #if !defined(USE_CERT_BUFFERS_2048) && !defined(USE_CERT_BUFFERS_4096) - #define USE_CERT_BUFFERS_1024 - #endif - #define BENCH_EMBEDDED - #define NO_FILESYSTEM - #define NO_WRITEV - #define WOLFSSL_USER_IO - #define BENCH_EMBEDDED -#endif - -#ifdef MICROCHIP_PIC32 - /* #define WOLFSSL_MICROCHIP_PIC32MZ */ - #define SIZEOF_LONG_LONG 8 - #define SINGLE_THREADED - #define WOLFSSL_USER_IO - #define NO_WRITEV - #define NO_DEV_RANDOM - #define NO_FILESYSTEM - #define USE_FAST_MATH - #define TFM_TIMING_RESISTANT - #define WOLFSSL_HAVE_MIN - #define WOLFSSL_HAVE_MAX - #define NO_BIG_INT -#endif - -#ifdef WOLFSSL_MICROCHIP_PIC32MZ - #ifndef NO_PIC32MZ_CRYPT - #define WOLFSSL_PIC32MZ_CRYPT - #endif - #ifndef NO_PIC32MZ_RNG - #define WOLFSSL_PIC32MZ_RNG - #endif - #ifndef NO_PIC32MZ_HASH - #define WOLFSSL_PIC32MZ_HASH - #endif -#endif - -#ifdef MICROCHIP_TCPIP_V5 - /* include timer functions */ - #include "TCPIP Stack/TCPIP.h" -#endif - -#ifdef MICROCHIP_TCPIP - /* include timer, NTP functions */ - #ifdef MICROCHIP_MPLAB_HARMONY - #include "tcpip/tcpip.h" - #else - #include "system/system_services.h" - #include "tcpip/sntp.h" - #endif -#endif - -#ifdef MBED - #define WOLFSSL_USER_IO - #define NO_FILESYSTEM - #define NO_CERTS - #if !defined(USE_CERT_BUFFERS_2048) && !defined(USE_CERT_BUFFERS_4096) - #define USE_CERT_BUFFERS_1024 - #endif - #define NO_WRITEV - #define NO_DEV_RANDOM - #define NO_SHA512 - #define NO_DH - /* Allows use of DH with fixed points if uncommented and NO_DH is removed */ - /* WOLFSSL_DH_CONST */ - #define NO_DSA - #define NO_HC128 - #define HAVE_ECC - #define NO_SESSION_CACHE - #define WOLFSSL_CMSIS_RTOS -#endif - - -#ifdef WOLFSSL_EROAD - #define FREESCALE_MQX - #define FREESCALE_MMCAU - #define SINGLE_THREADED - #define NO_STDIO_FILESYSTEM - #define WOLFSSL_LEANPSK - #define HAVE_NULL_CIPHER - #define NO_OLD_TLS - #define NO_ASN - #define NO_BIG_INT - #define NO_RSA - #define NO_DSA - #define NO_DH - /* Allows use of DH with fixed points if uncommented and NO_DH is removed */ - /* WOLFSSL_DH_CONST */ - #define NO_CERTS - #define NO_PWDBASED - #define NO_DES3 - #define NO_MD4 - #define NO_RC4 - #define NO_MD5 - #define NO_SESSION_CACHE - #define NO_MAIN_DRIVER -#endif - -#ifdef WOLFSSL_PICOTCP - #ifndef errno - #define errno pico_err - #endif - #include "pico_defines.h" - #include "pico_stack.h" - #include "pico_constants.h" - #include "pico_protocol.h" - #define CUSTOM_RAND_GENERATE pico_rand -#endif - -#ifdef WOLFSSL_PICOTCP_DEMO - #define WOLFSSL_STM32 - #define USE_FAST_MATH - #define TFM_TIMING_RESISTANT - #define XMALLOC(s, h, type) PICO_ZALLOC((s)) - #define XFREE(p, h, type) PICO_FREE((p)) - #define SINGLE_THREADED - #define NO_WRITEV - #define WOLFSSL_USER_IO - #define NO_DEV_RANDOM - #define NO_FILESYSTEM -#endif - -#ifdef FREERTOS_WINSIM - #define FREERTOS - #define USE_WINDOWS_API -#endif - - -#ifdef WOLFSSL_VXWORKS - /* VxWorks simulator incorrectly detects building for i386 */ - #ifdef VXWORKS_SIM - #define TFM_NO_ASM - #endif - /* For VxWorks pthreads wrappers for mutexes uncomment the next line. */ - /* #define WOLFSSL_PTHREADS */ - #define WOLFSSL_HAVE_MIN - #define WOLFSSL_HAVE_MAX - #define USE_FAST_MATH - #define TFM_TIMING_RESISTANT - #define NO_MAIN_DRIVER - #define NO_DEV_RANDOM - #define NO_WRITEV - #define HAVE_STRINGS_H -#endif - - -#ifdef WOLFSSL_ARDUINO - #define NO_WRITEV - #define NO_WOLFSSL_DIR - #define SINGLE_THREADED - #define NO_DEV_RANDOM - #ifndef INTEL_GALILEO /* Galileo has time.h compatibility */ - #define TIME_OVERRIDES - #ifndef XTIME - #error "Must define XTIME externally see porting guide" - #error "https://www.wolfssl.com/docs/porting-guide/" - #endif - #ifndef XGMTIME - #error "Must define XGMTIME externally see porting guide" - #error "https://www.wolfssl.com/docs/porting-guide/" - #endif - #endif - #define WOLFSSL_USER_IO - #define HAVE_ECC - #define NO_DH - #define NO_SESSION_CACHE -#endif - - -#ifdef WOLFSSL_UTASKER - /* uTasker configuration - used for fnRandom() */ - #include "config.h" - - #define SINGLE_THREADED - #define NO_WOLFSSL_DIR - #define WOLFSSL_HAVE_MIN - #define NO_WRITEV - - #define HAVE_ECC - #define ALT_ECC_SIZE - #define USE_FAST_MATH - #define TFM_TIMING_RESISTANT - #define ECC_TIMING_RESISTANT - - /* used in wolfCrypt test */ - #define NO_MAIN_DRIVER - #define USE_CERT_BUFFERS_2048 - - /* uTasker port uses RAW sockets, use I/O callbacks - * See wolfSSL uTasker example for sample callbacks */ - #define WOLFSSL_USER_IO - - /* uTasker filesystem not ported */ - #define NO_FILESYSTEM - - /* uTasker RNG is abstracted, calls HW RNG when available */ - #define CUSTOM_RAND_GENERATE fnRandom - #define CUSTOM_RAND_TYPE unsigned short - - /* user needs to define XTIME to function that provides - * seconds since Unix epoch */ - #ifndef XTIME - #error XTIME must be defined in wolfSSL settings.h - /* #define XTIME fnSecondsSinceEpoch */ - #endif - - /* use uTasker std library replacements where available */ - #define STRING_USER - #define XMEMCPY(d,s,l) uMemcpy((d),(s),(l)) - #define XMEMSET(b,c,l) uMemset((b),(c),(l)) - #define XMEMCMP(s1,s2,n) uMemcmp((s1),(s2),(n)) - #define XMEMMOVE(d,s,l) memmove((d),(s),(l)) - - #define XSTRLEN(s1) uStrlen((s1)) - #define XSTRNCPY(s1,s2,n) strncpy((s1),(s2),(n)) - #define XSTRSTR(s1,s2) strstr((s1),(s2)) - #define XSTRNSTR(s1,s2,n) mystrnstr((s1),(s2),(n)) - #define XSTRNCMP(s1,s2,n) strncmp((s1),(s2),(n)) - #define XSTRNCAT(s1,s2,n) strncat((s1),(s2),(n)) - #define XSTRNCASECMP(s1,s2,n) _strnicmp((s1),(s2),(n)) - #if defined(WOLFSSL_CERT_EXT) || defined(OPENSSL_EXTRA) \ - || defined(HAVE_ALPN) - #define XSTRTOK strtok_r - #endif -#endif - -#ifdef WOLFSSL_EMBOS - #define NO_FILESYSTEM /* Not ported at this time */ - #define USE_CERT_BUFFERS_2048 /* use when NO_FILESYSTEM */ - #define NO_MAIN_DRIVER - #define NO_RC4 - #define SINGLE_THREADED /* Not ported at this time */ -#endif - -#ifdef WOLFSSL_RIOT_OS - #define NO_WRITEV - #define TFM_NO_ASM - #define NO_FILESYSTEM - #define USE_CERT_BUFFERS_2048 - #if defined(WOLFSSL_GNRC) && !defined(WOLFSSL_DTLS) - #define WOLFSSL_DTLS - #endif -#endif - -#ifdef WOLFSSL_CHIBIOS - /* ChibiOS definitions. This file is distributed with chibiOS. */ - #include "wolfssl_chibios.h" -#endif - -#ifdef WOLFSSL_PB - /* PB is using older 1.2 version of Nucleus */ - #undef WOLFSSL_NUCLEUS - #define WOLFSSL_NUCLEUS_1_2 -#endif - -#ifdef WOLFSSL_NUCLEUS_1_2 - #define NO_WRITEV - #define NO_WOLFSSL_DIR - - #if !defined(NO_ASN_TIME) && !defined(USER_TIME) - #error User must define XTIME, see manual - #endif - - #if !defined(XMALLOC_OVERRIDE) && !defined(XMALLOC_USER) - extern void* nucleus_malloc(unsigned long size, void* heap, int type); - extern void* nucleus_realloc(void* ptr, unsigned long size, void* heap, - int type); - extern void nucleus_free(void* ptr, void* heap, int type); - - #define XMALLOC(s, h, type) nucleus_malloc((s), (h), (type)) - #define XREALLOC(p, n, h, t) nucleus_realloc((p), (n), (h), (t)) - #define XFREE(p, h, type) nucleus_free((p), (h), (type)) - #endif -#endif - -#ifdef WOLFSSL_NRF5x - #define SIZEOF_LONG 4 - #define SIZEOF_LONG_LONG 8 - #define NO_ASN_TIME - #define NO_DEV_RANDOM - #define NO_FILESYSTEM - #define NO_MAIN_DRIVER - #define NO_WRITEV - #define SINGLE_THREADED - #define USE_FAST_MATH - #define TFM_TIMING_RESISTANT - #define USE_WOLFSSL_MEMORY - #define WOLFSSL_NRF51 - #define WOLFSSL_USER_IO - #define NO_SESSION_CACHE -#endif - -/* Micrium will use Visual Studio for compilation but not the Win32 API */ -#if defined(_WIN32) && !defined(MICRIUM) && !defined(FREERTOS) && \ - !defined(FREERTOS_TCP) && !defined(EBSNET) && !defined(WOLFSSL_EROAD) && \ - !defined(WOLFSSL_UTASKER) && !defined(INTIME_RTOS) - #define USE_WINDOWS_API -#endif - -#if defined(WOLFSSL_uITRON4) - -#define XMALLOC_USER -#include <stddef.h> -#define ITRON_POOL_SIZE 1024*20 -extern int uITRON4_minit(size_t poolsz) ; -extern void *uITRON4_malloc(size_t sz) ; -extern void *uITRON4_realloc(void *p, size_t sz) ; -extern void uITRON4_free(void *p) ; - -#define XMALLOC(sz, heap, type) uITRON4_malloc(sz) -#define XREALLOC(p, sz, heap, type) uITRON4_realloc(p, sz) -#define XFREE(p, heap, type) uITRON4_free(p) -#endif - -#if defined(WOLFSSL_uTKERNEL2) - #ifndef NO_TKERNEL_MEM_POOL - #define XMALLOC_OVERRIDE - int uTKernel_init_mpool(unsigned int sz); /* initializing malloc pool */ - void* uTKernel_malloc(unsigned int sz); - void* uTKernel_realloc(void *p, unsigned int sz); - void uTKernel_free(void *p); - #define XMALLOC(s, h, type) uTKernel_malloc((s)) - #define XREALLOC(p, n, h, t) uTKernel_realloc((p), (n)) - #define XFREE(p, h, type) uTKernel_free((p)) - #endif - - #ifndef NO_STDIO_FGETS_REMAP - #include <stdio.h> - #include "tm/tmonitor.h" - - /* static char* gets(char *buff); */ - static char* fgets(char *buff, int sz, XFILE fp) { - char * p = buff; - *p = '\0'; - while (1) { - *p = tm_getchar(-1); - tm_putchar(*p); - if (*p == '\r') { - tm_putchar('\n'); - *p = '\0'; - break; - } - p++; - } - return buff; - } - #endif /* !NO_STDIO_FGETS_REMAP */ -#endif - - -#if defined(WOLFSSL_LEANPSK) && !defined(XMALLOC_USER) && \ - !defined(NO_WOLFSSL_MEMORY) - #include <stdlib.h> - #define XMALLOC(s, h, type) malloc((s)) - #define XFREE(p, h, type) free((p)) - #define XREALLOC(p, n, h, t) realloc((p), (n)) -#endif - -#if defined(XMALLOC_USER) && defined(SSN_BUILDING_LIBYASSL) - #undef XMALLOC - #define XMALLOC yaXMALLOC - #undef XFREE - #define XFREE yaXFREE - #undef XREALLOC - #define XREALLOC yaXREALLOC -#endif - - -#ifdef FREERTOS - #include "FreeRTOS.h" - - #if !defined(XMALLOC_USER) && !defined(NO_WOLFSSL_MEMORY) && \ - !defined(WOLFSSL_STATIC_MEMORY) - #define XMALLOC(s, h, type) pvPortMalloc((s)) - #define XFREE(p, h, type) vPortFree((p)) - #endif - /* FreeRTOS pvPortRealloc() implementation can be found here: - https://github.com/wolfSSL/wolfssl-freertos/pull/3/files */ - #if !defined(USE_FAST_MATH) || defined(HAVE_ED25519) || defined(HAVE_ED448) - #if defined(WOLFSSL_ESPIDF) - /*In IDF, realloc(p, n) is equivalent to - heap_caps_realloc(p, s, MALLOC_CAP_8BIT) */ - #define XREALLOC(p, n, h, t) realloc((p), (n)) - #else - #define XREALLOC(p, n, h, t) pvPortRealloc((p), (n)) - #endif - #endif - #ifndef NO_WRITEV - #define NO_WRITEV - #endif - #ifndef HAVE_SHA512 - #ifndef NO_SHA512 - #define NO_SHA512 - #endif - #endif - #ifndef HAVE_DH - #ifndef NO_DH - #define NO_DH - #endif - #endif - #ifndef NO_DSA - #define NO_DSA - #endif - #ifndef NO_HC128 - #define NO_HC128 - #endif - - #ifndef SINGLE_THREADED - #include "semphr.h" - #endif -#endif - -#ifdef FREERTOS_TCP - #if !defined(NO_WOLFSSL_MEMORY) && !defined(XMALLOC_USER) && \ - !defined(WOLFSSL_STATIC_MEMORY) - #define XMALLOC(s, h, type) pvPortMalloc((s)) - #define XFREE(p, h, type) vPortFree((p)) - #endif - - #define WOLFSSL_GENSEED_FORTEST - - #define NO_WOLFSSL_DIR - #define NO_WRITEV - #define USE_FAST_MATH - #define TFM_TIMING_RESISTANT - #define NO_MAIN_DRIVER -#endif - -#ifdef WOLFSSL_TIRTOS - #define SIZEOF_LONG_LONG 8 - #define NO_WRITEV - #define NO_WOLFSSL_DIR - #define USE_FAST_MATH - #define TFM_TIMING_RESISTANT - #define ECC_TIMING_RESISTANT - #define WC_RSA_BLINDING - #define NO_DEV_RANDOM - #define NO_FILESYSTEM - #define USE_CERT_BUFFERS_2048 - #define NO_ERROR_STRINGS - /* Uncomment this setting if your toolchain does not offer time.h header */ - /* #define USER_TIME */ - #define HAVE_ECC - #define HAVE_ALPN - #define USE_WOLF_STRTOK /* use with HAVE_ALPN */ - #define HAVE_TLS_EXTENSIONS - #define HAVE_AESGCM - #ifdef WOLFSSL_TI_CRYPT - #define NO_GCM_ENCRYPT_EXTRA - #define NO_PUBLIC_GCM_SET_IV - #define NO_PUBLIC_CCM_SET_NONCE - #endif - #define HAVE_SUPPORTED_CURVES - #define ALT_ECC_SIZE - - #ifdef __IAR_SYSTEMS_ICC__ - #pragma diag_suppress=Pa089 - #elif !defined(__GNUC__) - /* Suppress the sslpro warning */ - #pragma diag_suppress=11 - #endif - - #include <ti/sysbios/hal/Seconds.h> -#endif - -#ifdef EBSNET - #include "rtip.h" - - /* #define DEBUG_WOLFSSL */ - #define NO_WOLFSSL_DIR /* tbd */ - - #if (POLLOS) - #define SINGLE_THREADED - #endif - - #if (RTPLATFORM) - #if (!RTP_LITTLE_ENDIAN) - #define BIG_ENDIAN_ORDER - #endif - #else - #if (!KS_LITTLE_ENDIAN) - #define BIG_ENDIAN_ORDER - #endif - #endif - - #if (WINMSP3) - #undef SIZEOF_LONG - #define SIZEOF_LONG_LONG 8 - #else - #error settings.h - please implement SIZEOF_LONG and SIZEOF_LONG_LONG - #endif - - #define XMALLOC(s, h, type) ((void *)rtp_malloc((s), SSL_PRO_MALLOC)) - #define XFREE(p, h, type) (rtp_free(p)) - #define XREALLOC(p, n, h, t) (rtp_realloc((p), (n))) - - #if (WINMSP3) - #define XSTRNCASECMP(s1,s2,n) _strnicmp((s1),(s2),(n)) - #else - #sslpro: settings.h - please implement XSTRNCASECMP - needed for HAVE_ECC - #endif - - #define WOLFSSL_HAVE_MAX - #define WOLFSSL_HAVE_MIN - - #define USE_FAST_MATH - #define TFM_TIMING_RESISTANT - #define WC_RSA_BLINDING - #define ECC_TIMING_RESISTANT - - #define HAVE_ECC - -#endif /* EBSNET */ - -#ifdef WOLFSSL_GAME_BUILD - #define SIZEOF_LONG_LONG 8 - #if defined(__PPU) || defined(__XENON) - #define BIG_ENDIAN_ORDER - #endif -#endif - -#ifdef WOLFSSL_LSR - #define HAVE_WEBSERVER - #define SIZEOF_LONG_LONG 8 - #define WOLFSSL_LOW_MEMORY - #define NO_WRITEV - #define NO_SHA512 - #define NO_DH - /* Allows use of DH with fixed points if uncommented and NO_DH is removed */ - /* WOLFSSL_DH_CONST */ - #define NO_DSA - #define NO_HC128 - #define NO_DEV_RANDOM - #define NO_WOLFSSL_DIR - #define NO_RABBIT - #ifndef NO_FILESYSTEM - #define LSR_FS - #include "inc/hw_types.h" - #include "fs.h" - #endif - #define WOLFSSL_LWIP - #include <errno.h> /* for tcp errno */ - #define WOLFSSL_SAFERTOS - #if defined(__IAR_SYSTEMS_ICC__) - /* enum uses enum */ - #pragma diag_suppress=Pa089 - #endif -#endif - -#ifdef WOLFSSL_SAFERTOS - #ifndef SINGLE_THREADED - #include "SafeRTOS/semphr.h" - #endif - #ifndef WOLFSSL_NO_MALLOC - #include "SafeRTOS/heap.h" - #endif - #if !defined(XMALLOC_USER) && !defined(NO_WOLFSSL_MEMORY) && \ - !defined(WOLFSSL_STATIC_MEMORY) - #define XMALLOC(s, h, type) pvPortMalloc((s)) - #define XFREE(p, h, type) vPortFree((p)) - #endif - /* FreeRTOS pvPortRealloc() implementation can be found here: - https://github.com/wolfSSL/wolfssl-freertos/pull/3/files */ - #if !defined(USE_FAST_MATH) || defined(HAVE_ED25519) || defined(HAVE_ED448) - #define XREALLOC(p, n, h, t) pvPortRealloc((p), (n)) - #endif -#endif - -#ifdef WOLFSSL_LOW_MEMORY - #undef RSA_LOW_MEM - #define RSA_LOW_MEM - #undef WOLFSSL_SMALL_STACK - #define WOLFSSL_SMALL_STACK - #undef TFM_TIMING_RESISTANT - #define TFM_TIMING_RESISTANT -#endif - -#ifdef FREESCALE_MQX_5_0 - /* use normal Freescale MQX port, but with minor changes for 5.0 */ - #define FREESCALE_MQX -#endif - -#ifdef FREESCALE_MQX_4_0 - /* use normal Freescale MQX port, but with minor changes for 4.0 */ - #define FREESCALE_MQX -#endif - -#ifdef FREESCALE_MQX - #define FREESCALE_COMMON - #include "mqx.h" - #ifndef NO_FILESYSTEM - #include "mfs.h" - #if (defined(MQX_USE_IO_OLD) && MQX_USE_IO_OLD) || \ - defined(FREESCALE_MQX_5_0) - #include "fio.h" - #define NO_STDIO_FILESYSTEM - #else - #include "nio.h" - #endif - #endif - #ifndef SINGLE_THREADED - #include "mutex.h" - #endif - - #if !defined(XMALLOC_OVERRIDE) && !defined(XMALLOC_USER) - #define XMALLOC_OVERRIDE - #define XMALLOC(s, h, t) (void *)_mem_alloc_system((s)) - #define XFREE(p, h, t) {void* xp = (p); if ((xp)) _mem_free((xp));} - /* Note: MQX has no realloc, using fastmath above */ - #endif -#endif - -#ifdef FREESCALE_KSDK_MQX - #define FREESCALE_COMMON - #include <mqx.h> - #ifndef NO_FILESYSTEM - #if (defined(MQX_USE_IO_OLD) && MQX_USE_IO_OLD) || \ - defined(FREESCALE_MQX_5_0) - #include <fio.h> - #else - #include <stdio.h> - #include <nio.h> - #endif - #endif - #ifndef SINGLE_THREADED - #include <mutex.h> - #endif - - #define XMALLOC(s, h, t) (void *)_mem_alloc_system((s)) - #define XFREE(p, h, t) {void* xp = (p); if ((xp)) _mem_free((xp));} - #define XREALLOC(p, n, h, t) _mem_realloc((p), (n)) /* since MQX 4.1.2 */ - - #define MQX_FILE_PTR FILE * - #define IO_SEEK_SET SEEK_SET - #define IO_SEEK_END SEEK_END -#endif /* FREESCALE_KSDK_MQX */ - -#if defined(FREESCALE_FREE_RTOS) || defined(FREESCALE_KSDK_FREERTOS) - #define NO_FILESYSTEM - #define WOLFSSL_CRYPT_HW_MUTEX 1 - - #if !defined(XMALLOC_USER) && !defined(NO_WOLFSSL_MEMORY) - #define XMALLOC(s, h, type) pvPortMalloc((s)) - #define XFREE(p, h, type) vPortFree((p)) - #endif - - //#define USER_TICKS - /* Allows use of DH with fixed points if uncommented and NO_DH is removed */ - /* WOLFSSL_DH_CONST */ - #define WOLFSSL_LWIP - #define FREERTOS_TCP - - #define FREESCALE_FREE_RTOS - #define FREERTOS_SOCKET_ERROR ( -1 ) - #define FREERTOS_EWOULDBLOCK ( -2 ) - #define FREERTOS_EINVAL ( -4 ) - #define FREERTOS_EADDRNOTAVAIL ( -5 ) - #define FREERTOS_EADDRINUSE ( -6 ) - #define FREERTOS_ENOBUFS ( -7 ) - #define FREERTOS_ENOPROTOOPT ( -8 ) -#endif /* FREESCALE_FREE_RTOS || FREESCALE_KSDK_FREERTOS */ - -#ifdef FREESCALE_KSDK_BM - #define FREESCALE_COMMON - #define WOLFSSL_USER_IO - #define SINGLE_THREADED - #define NO_FILESYSTEM - #ifndef TIME_OVERRIDES - #define USER_TICKS - #endif -#endif /* FREESCALE_KSDK_BM */ - -#ifdef FREESCALE_COMMON - #define SIZEOF_LONG_LONG 8 - - /* disable features */ - #undef NO_WRITEV - #define NO_WRITEV - #undef NO_DEV_RANDOM - #define NO_DEV_RANDOM - #undef NO_RABBIT - #define NO_RABBIT - #undef NO_WOLFSSL_DIR - #define NO_WOLFSSL_DIR - #undef NO_RC4 - #define NO_RC4 - - /* enable features */ - #undef USE_FAST_MATH - #define USE_FAST_MATH - - #define USE_CERT_BUFFERS_2048 - #define BENCH_EMBEDDED - - #define TFM_TIMING_RESISTANT - #define ECC_TIMING_RESISTANT - - #undef HAVE_ECC - #define HAVE_ECC - #ifndef NO_AES - #undef HAVE_AESCCM - #define HAVE_AESCCM - #undef HAVE_AESGCM - #define HAVE_AESGCM - #undef WOLFSSL_AES_COUNTER - #define WOLFSSL_AES_COUNTER - #undef WOLFSSL_AES_DIRECT - #define WOLFSSL_AES_DIRECT - #endif - - #ifdef FREESCALE_KSDK_1_3 - #include "fsl_device_registers.h" - #elif !defined(FREESCALE_MQX) - /* Classic MQX does not have fsl_common.h */ - #include "fsl_common.h" - #endif - - /* random seed */ - #define NO_OLD_RNGNAME - #if defined(FSL_FEATURE_SOC_TRNG_COUNT) && (FSL_FEATURE_SOC_TRNG_COUNT > 0) - #define FREESCALE_KSDK_2_0_TRNG - #elif defined(FSL_FEATURE_SOC_RNG_COUNT) && (FSL_FEATURE_SOC_RNG_COUNT > 0) - #ifdef FREESCALE_KSDK_1_3 - #include "fsl_rnga_driver.h" - #define FREESCALE_RNGA - #define RNGA_INSTANCE (0) - #else - #define FREESCALE_KSDK_2_0_RNGA - #endif - #elif !defined(FREESCALE_KSDK_BM) && !defined(FREESCALE_FREE_RTOS) && !defined(FREESCALE_KSDK_FREERTOS) - #define FREESCALE_RNGA - #define RNGA_INSTANCE (0) - /* defaulting to K70 RNGA, user should change if different */ - /* #define FREESCALE_K53_RNGB */ - #define FREESCALE_K70_RNGA - #endif - - /* HW crypto */ - /* automatic enable based on Kinetis feature */ - /* if case manual selection is required, for example for benchmarking purposes, - * just define FREESCALE_USE_MMCAU or FREESCALE_USE_LTC or none of these two macros (for software only) - * both can be enabled simultaneously as LTC has priority over MMCAU in source code. - */ - /* #define FSL_HW_CRYPTO_MANUAL_SELECTION */ - #ifndef FSL_HW_CRYPTO_MANUAL_SELECTION - #if defined(FSL_FEATURE_SOC_MMCAU_COUNT) && FSL_FEATURE_SOC_MMCAU_COUNT - #define FREESCALE_USE_MMCAU - #endif - - #if defined(FSL_FEATURE_SOC_LTC_COUNT) && FSL_FEATURE_SOC_LTC_COUNT - #define FREESCALE_USE_LTC - #endif - #else - /* #define FREESCALE_USE_MMCAU */ - /* #define FREESCALE_USE_LTC */ - #endif -#endif /* FREESCALE_COMMON */ - -/* Classic pre-KSDK mmCAU library */ -#ifdef FREESCALE_USE_MMCAU_CLASSIC - #define FREESCALE_USE_MMCAU - #define FREESCALE_MMCAU_CLASSIC - #define FREESCALE_MMCAU_CLASSIC_SHA -#endif - -/* KSDK mmCAU library */ -#ifdef FREESCALE_USE_MMCAU - /* AES and DES */ - #define FREESCALE_MMCAU - /* MD5, SHA-1 and SHA-256 */ - #define FREESCALE_MMCAU_SHA -#endif /* FREESCALE_USE_MMCAU */ - -#ifdef FREESCALE_USE_LTC - #if defined(FSL_FEATURE_SOC_LTC_COUNT) && FSL_FEATURE_SOC_LTC_COUNT - #define FREESCALE_LTC - #define LTC_BASE LTC0 - - #if defined(FSL_FEATURE_LTC_HAS_DES) && FSL_FEATURE_LTC_HAS_DES - #define FREESCALE_LTC_DES - #endif - - #if defined(FSL_FEATURE_LTC_HAS_GCM) && FSL_FEATURE_LTC_HAS_GCM - #define FREESCALE_LTC_AES_GCM - #endif - - #if defined(FSL_FEATURE_LTC_HAS_SHA) && FSL_FEATURE_LTC_HAS_SHA - #define FREESCALE_LTC_SHA - #endif - - #if defined(FSL_FEATURE_LTC_HAS_PKHA) && FSL_FEATURE_LTC_HAS_PKHA - #define FREESCALE_LTC_ECC - #define FREESCALE_LTC_TFM - - /* the LTC PKHA hardware limit is 2048 bits (256 bytes) for integer arithmetic. - the LTC_MAX_INT_BYTES defines the size of local variables that hold big integers. */ - #ifndef LTC_MAX_INT_BYTES - #define LTC_MAX_INT_BYTES (256) - #endif - - /* This FREESCALE_LTC_TFM_RSA_4096_ENABLE macro can be defined. - * In such a case both software and hardware algorithm - * for TFM is linked in. The decision for which algorithm is used is determined at runtime - * from size of inputs. If inputs and result can fit into LTC (see LTC_MAX_INT_BYTES) - * then we call hardware algorithm, otherwise we call software algorithm. - * - * Chinese reminder theorem is used to break RSA 4096 exponentiations (both public and private key) - * into several computations with 2048-bit modulus and exponents. - */ - /* #define FREESCALE_LTC_TFM_RSA_4096_ENABLE */ - - /* ECC-384, ECC-256, ECC-224 and ECC-192 have been enabled with LTC PKHA acceleration */ - #ifdef HAVE_ECC - #undef ECC_TIMING_RESISTANT - #define ECC_TIMING_RESISTANT - - /* the LTC PKHA hardware limit is 512 bits (64 bytes) for ECC. - the LTC_MAX_ECC_BITS defines the size of local variables that hold ECC parameters - and point coordinates */ - #ifndef LTC_MAX_ECC_BITS - #define LTC_MAX_ECC_BITS (384) - #endif - - /* Enable curves up to 384 bits */ - #if !defined(ECC_USER_CURVES) && !defined(HAVE_ALL_CURVES) - #define ECC_USER_CURVES - #define HAVE_ECC192 - #define HAVE_ECC224 - #undef NO_ECC256 - #define HAVE_ECC384 - #endif - #endif - #endif - #endif -#endif /* FREESCALE_USE_LTC */ - -#ifdef FREESCALE_LTC_TFM_RSA_4096_ENABLE - #undef USE_CERT_BUFFERS_4096 - #define USE_CERT_BUFFERS_4096 - #undef FP_MAX_BITS - #define FP_MAX_BITS (8192) - - #undef NO_DH - #define NO_DH - #undef NO_DSA - #define NO_DSA -#endif /* FREESCALE_LTC_TFM_RSA_4096_ENABLE */ - -/* if LTC has AES engine but doesn't have GCM, use software with LTC AES ECB mode */ -#if defined(FREESCALE_USE_LTC) && !defined(FREESCALE_LTC_AES_GCM) - #define GCM_TABLE -#endif - -#if defined(WOLFSSL_STM32F2) || defined(WOLFSSL_STM32F4) || \ - defined(WOLFSSL_STM32F7) || defined(WOLFSSL_STM32F1) || \ - defined(WOLFSSL_STM32L4) - - #define SIZEOF_LONG_LONG 8 - #ifndef CHAR_BIT - #define CHAR_BIT 8 - #endif - #define NO_DEV_RANDOM - #define NO_WOLFSSL_DIR - #undef NO_RABBIT - #define NO_RABBIT - #ifndef NO_STM32_RNG - #undef STM32_RNG - #define STM32_RNG - #ifdef WOLFSSL_STM32F427_RNG - #include "stm32f427xx.h" - #endif - #endif - #ifndef NO_STM32_CRYPTO - #undef STM32_CRYPTO - #define STM32_CRYPTO - - #ifdef WOLFSSL_STM32L4 - #define NO_AES_192 /* hardware does not support 192-bit */ - #endif - #endif - #ifndef NO_STM32_HASH - #undef STM32_HASH - #define STM32_HASH - #endif - #if !defined(__GNUC__) && !defined(__ICCARM__) - #define KEIL_INTRINSICS - #endif - #define NO_OLD_RNGNAME - #ifdef WOLFSSL_STM32_CUBEMX - #if defined(WOLFSSL_STM32F2) - #include "stm32f2xx_hal.h" - #elif defined(WOLFSSL_STM32L4) - #include "stm32l4xx_hal.h" - #elif defined(WOLFSSL_STM32F4) - #include "stm32f4xx_hal.h" - #elif defined(WOLFSSL_STM32F7) - #include "stm32f7xx_hal.h" - #elif defined(WOLFSSL_STM32F1) - #include "stm32f1xx_hal.h" - #endif - #if defined(WOLFSSL_CUBEMX_USE_LL) && defined(WOLFSSL_STM32L4) - #include "stm32l4xx_ll_rng.h" - #endif - - #ifndef STM32_HAL_TIMEOUT - #define STM32_HAL_TIMEOUT 0xFF - #endif - #else - #if defined(WOLFSSL_STM32F2) - #include "stm32f2xx.h" - #ifdef STM32_CRYPTO - #include "stm32f2xx_cryp.h" - #endif - #ifdef STM32_HASH - #include "stm32f2xx_hash.h" - #endif - #elif defined(WOLFSSL_STM32F4) - #include "stm32f4xx.h" - #ifdef STM32_CRYPTO - #include "stm32f4xx_cryp.h" - #endif - #ifdef STM32_HASH - #include "stm32f4xx_hash.h" - #endif - #elif defined(WOLFSSL_STM32L4) - #include "stm32l4xx.h" - #ifdef STM32_CRYPTO - #include "stm32l4xx_cryp.h" - #endif - #ifdef STM32_HASH - #include "stm32l4xx_hash.h" - #endif - #elif defined(WOLFSSL_STM32F7) - #include "stm32f7xx.h" - #elif defined(WOLFSSL_STM32F1) - #include "stm32f1xx.h" - #endif - #endif /* WOLFSSL_STM32_CUBEMX */ -#endif /* WOLFSSL_STM32F2 || WOLFSSL_STM32F4 || WOLFSSL_STM32L4 || WOLFSSL_STM32F7 */ -#ifdef WOLFSSL_DEOS - #include <deos.h> - #include <timeout.h> - #include <socketapi.h> - #include <lwip-socket.h> - #include <mem.h> - #include <string.h> - #include <stdlib.h> /* for rand_r: pseudo-random number generator */ - #include <stdio.h> /* for snprintf */ - - /* use external memory XMALLOC, XFREE and XREALLOC functions */ - #define XMALLOC_USER - - /* disable fall-back case, malloc, realloc and free are unavailable */ - #define WOLFSSL_NO_MALLOC - - /* file system has not been ported since it is a separate product. */ - - #define NO_FILESYSTEM - - #ifdef NO_FILESYSTEM - #define NO_WOLFSSL_DIR - #define NO_WRITEV - #endif - - #define USE_FAST_MATH - #define TFM_TIMING_RESISTANT - #define ECC_TIMING_RESISTANT - #define WC_RSA_BLINDING - - #define HAVE_ECC - #define ALT_ECC_SIZE - #define TFM_ECC192 - #define TFM_ECC224 - #define TFM_ECC256 - #define TFM_ECC384 - #define TFM_ECC521 - - #define HAVE_TLS_EXTENSIONS - #define HAVE_SUPPORTED_CURVES - #define HAVE_EXTENDED_MASTER - - #if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) - #define BIG_ENDIAN_ORDER - #else - #undef BIG_ENDIAN_ORDER - #define LITTLE_ENDIAN_ORDER - #endif -#endif /* WOLFSSL_DEOS*/ - -#ifdef MICRIUM - #include <stdlib.h> - #include <os.h> - #include <net_cfg.h> - #include <net_sock.h> - #include <net_err.h> - #include <lib_mem.h> - #include <lib_math.h> - - #define USE_FAST_MATH - #define TFM_TIMING_RESISTANT - #define ECC_TIMING_RESISTANT - #define WC_RSA_BLINDING - #define HAVE_HASHDRBG - - #define HAVE_ECC - #define ALT_ECC_SIZE - #define TFM_ECC192 - #define TFM_ECC224 - #define TFM_ECC256 - #define TFM_ECC384 - #define TFM_ECC521 - - #define NO_RC4 - #define HAVE_TLS_EXTENSIONS - #define HAVE_SUPPORTED_CURVES - #define HAVE_EXTENDED_MASTER - - #define NO_WOLFSSL_DIR - #define NO_WRITEV - - #ifndef CUSTOM_RAND_GENERATE - #define CUSTOM_RAND_TYPE RAND_NBR - #define CUSTOM_RAND_GENERATE Math_Rand - #endif - #define STRING_USER - #define XSTRLEN(pstr) ((CPU_SIZE_T)Str_Len((CPU_CHAR *)(pstr))) - #define XSTRNCPY(pstr_dest, pstr_src, len_max) \ - ((CPU_CHAR *)Str_Copy_N((CPU_CHAR *)(pstr_dest), \ - (CPU_CHAR *)(pstr_src), (CPU_SIZE_T)(len_max))) - #define XSTRNCMP(pstr_1, pstr_2, len_max) \ - ((CPU_INT16S)Str_Cmp_N((CPU_CHAR *)(pstr_1), \ - (CPU_CHAR *)(pstr_2), (CPU_SIZE_T)(len_max))) - #define XSTRNCASECMP(pstr_1, pstr_2, len_max) \ - ((CPU_INT16S)Str_CmpIgnoreCase_N((CPU_CHAR *)(pstr_1), \ - (CPU_CHAR *)(pstr_2), (CPU_SIZE_T)(len_max))) - #define XSTRSTR(pstr, pstr_srch) \ - ((CPU_CHAR *)Str_Str((CPU_CHAR *)(pstr), \ - (CPU_CHAR *)(pstr_srch))) - #define XSTRNSTR(pstr, pstr_srch, len_max) \ - ((CPU_CHAR *)Str_Str_N((CPU_CHAR *)(pstr), \ - (CPU_CHAR *)(pstr_srch),(CPU_SIZE_T)(len_max))) - #define XSTRNCAT(pstr_dest, pstr_cat, len_max) \ - ((CPU_CHAR *)Str_Cat_N((CPU_CHAR *)(pstr_dest), \ - (const CPU_CHAR *)(pstr_cat),(CPU_SIZE_T)(len_max))) - #define XMEMSET(pmem, data_val, size) \ - ((void)Mem_Set((void *)(pmem), \ - (CPU_INT08U) (data_val), \ - (CPU_SIZE_T)(size))) - #define XMEMCPY(pdest, psrc, size) ((void)Mem_Copy((void *)(pdest), \ - (void *)(psrc), (CPU_SIZE_T)(size))) - #define XMEMCMP(pmem_1, pmem_2, size) \ - (((CPU_BOOLEAN)Mem_Cmp((void *)(pmem_1), \ - (void *)(pmem_2), \ - (CPU_SIZE_T)(size))) ? DEF_NO : DEF_YES) - #define XMEMMOVE XMEMCPY - - #if (OS_CFG_MUTEX_EN == DEF_DISABLED) - #define SINGLE_THREADED - #endif - - #if (CPU_CFG_ENDIAN_TYPE == CPU_ENDIAN_TYPE_BIG) - #define BIG_ENDIAN_ORDER - #else - #undef BIG_ENDIAN_ORDER - #define LITTLE_ENDIAN_ORDER - #endif -#endif /* MICRIUM */ - -#ifdef WOLFSSL_MCF5441X - #define BIG_ENDIAN_ORDER - #ifndef SIZEOF_LONG - #define SIZEOF_LONG 4 - #endif - #ifndef SIZEOF_LONG_LONG - #define SIZEOF_LONG_LONG 8 - #endif -#endif - -#ifdef WOLFSSL_QL - #ifndef WOLFSSL_SEP - #define WOLFSSL_SEP - #endif - #ifndef OPENSSL_EXTRA - #define OPENSSL_EXTRA - #endif - #ifndef SESSION_CERTS - #define SESSION_CERTS - #endif - #ifndef HAVE_AESCCM - #define HAVE_AESCCM - #endif - #ifndef ATOMIC_USER - #define ATOMIC_USER - #endif - #ifndef WOLFSSL_DER_LOAD - #define WOLFSSL_DER_LOAD - #endif - #ifndef KEEP_PEER_CERT - #define KEEP_PEER_CERT - #endif - #ifndef HAVE_ECC - #define HAVE_ECC - #endif - #ifndef SESSION_INDEX - #define SESSION_INDEX - #endif -#endif /* WOLFSSL_QL */ - - -#if defined(WOLFSSL_XILINX) - #define NO_WOLFSSL_DIR - #define NO_DEV_RANDOM - #define HAVE_AESGCM -#endif - -#if defined(WOLFSSL_XILINX_CRYPT) || defined(WOLFSSL_AFALG_XILINX) - #if defined(WOLFSSL_ARMASM) - #error can not use both ARMv8 instructions and XILINX hardened crypto - #endif - #if defined(WOLFSSL_SHA3) - /* only SHA3-384 is supported */ - #undef WOLFSSL_NOSHA3_224 - #undef WOLFSSL_NOSHA3_256 - #undef WOLFSSL_NOSHA3_512 - #define WOLFSSL_NOSHA3_224 - #define WOLFSSL_NOSHA3_256 - #define WOLFSSL_NOSHA3_512 - #endif - #ifdef WOLFSSL_AFALG_XILINX_AES - #undef WOLFSSL_AES_DIRECT - #define WOLFSSL_AES_DIRECT - #endif -#endif /*(WOLFSSL_XILINX_CRYPT)*/ - -#if defined(WOLFSSL_APACHE_MYNEWT) - #include "os/os_malloc.h" - #if !defined(WOLFSSL_LWIP) - #include <mn_socket/mn_socket.h> - #endif - - #if !defined(SIZEOF_LONG) - #define SIZEOF_LONG 4 - #endif - #if !defined(SIZEOF_LONG_LONG) - #define SIZEOF_LONG_LONG 8 - #endif - #if (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) - #define BIG_ENDIAN_ORDER - #else - #undef BIG_ENDIAN_ORDER - #define LITTLE_ENDIAN_ORDER - #endif - #define NO_WRITEV - #define WOLFSSL_USER_IO - #define SINGLE_THREADED - #define NO_DEV_RANDOM - #define NO_DH - #define NO_WOLFSSL_DIR - #define NO_ERROR_STRINGS - #define HAVE_ECC - #define NO_SESSION_CACHE - #define NO_ERROR_STRINGS - #define XMALLOC_USER - #define XMALLOC(sz, heap, type) os_malloc(sz) - #define XREALLOC(p, sz, heap, type) os_realloc(p, sz) - #define XFREE(p, heap, type) os_free(p) - -#endif /*(WOLFSSL_APACHE_MYNEWT)*/ - -#ifdef WOLFSSL_ZEPHYR - #include <zephyr.h> - #include <misc/printk.h> - #include <misc/util.h> - #include <stdlib.h> - - #define WOLFSSL_DH_CONST - #define WOLFSSL_HAVE_MIN - #define WOLFSSL_HAVE_MAX - #define NO_WRITEV - - #define USE_FLAT_BENCHMARK_H - #define USE_FLAT_TEST_H - #define EXIT_FAILURE 1 - #define MAIN_NO_ARGS - - void *z_realloc(void *ptr, size_t size); - #define realloc z_realloc - - #define CONFIG_NET_SOCKETS_POSIX_NAMES -#endif - -#ifdef WOLFSSL_IMX6 - #ifndef SIZEOF_LONG_LONG - #define SIZEOF_LONG_LONG 8 - #endif -#endif - -/* if defined turn on all CAAM support */ -#ifdef WOLFSSL_IMX6_CAAM - #undef WOLFSSL_IMX6_CAAM_RNG - #define WOLFSSL_IMX6_CAAM_RNG - - #undef WOLFSSL_IMX6_CAAM_BLOB - #define WOLFSSL_IMX6_CAAM_BLOB - -#if defined(HAVE_AESGCM) || defined(WOLFSSL_AES_XTS) - /* large performance gain with HAVE_AES_ECB defined */ - #undef HAVE_AES_ECB - #define HAVE_AES_ECB -#endif -#endif - -#if !defined(XMALLOC_USER) && !defined(MICRIUM_MALLOC) && \ - !defined(WOLFSSL_LEANPSK) && !defined(NO_WOLFSSL_MEMORY) && \ - !defined(XMALLOC_OVERRIDE) - #define USE_WOLFSSL_MEMORY -#endif - - -#if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) - #undef KEEP_PEER_CERT - #define KEEP_PEER_CERT -#endif - - -/* stream ciphers except arc4 need 32bit alignment, intel ok without */ -#ifndef XSTREAM_ALIGN - #if defined(__x86_64__) || defined(__ia64__) || defined(__i386__) - #define NO_XSTREAM_ALIGN - #else - #define XSTREAM_ALIGN - #endif -#endif - -/* write dup cannot be used with secure renegotiation because write dup - * make write side write only and read side read only */ -#if defined(HAVE_WRITE_DUP) && defined(HAVE_SECURE_RENEGOTIATION) - #error "WRITE DUP and SECURE RENEGOTIATION cannot both be on" -#endif - -#ifdef WOLFSSL_SGX - #ifdef _MSC_VER - #define NO_RC4 - #ifndef HAVE_FIPS - #define WOLFCRYPT_ONLY - #define NO_DES3 - #define NO_SHA - #define NO_MD5 - #else - #define TFM_TIMING_RESISTANT - #define NO_WOLFSSL_DIR - #define NO_WRITEV - #define NO_MAIN_DRIVER - #define WOLFSSL_LOG_PRINTF - #define WOLFSSL_DH_CONST - #endif - #else - #define HAVE_ECC - #define NO_WRITEV - #define NO_MAIN_DRIVER - #define USER_TICKS - #define WOLFSSL_LOG_PRINTF - #define WOLFSSL_DH_CONST - #endif /* _MSC_VER */ - #if !defined(HAVE_FIPS) && !defined(NO_RSA) - #define WC_RSA_BLINDING - #endif - - #define NO_FILESYSTEM - #define ECC_TIMING_RESISTANT - #define TFM_TIMING_RESISTANT - #define SINGLE_THREADED - #define NO_ASN_TIME /* can not use headers such as windows.h */ - #define HAVE_AESGCM - #define USE_CERT_BUFFERS_2048 - #define USE_FAST_MATH -#endif /* WOLFSSL_SGX */ - -/* FreeScale MMCAU hardware crypto has 4 byte alignment. - However, KSDK fsl_mmcau.h gives API with no alignment - requirements (4 byte alignment is managed internally by fsl_mmcau.c) */ -#ifdef FREESCALE_MMCAU - #ifdef FREESCALE_MMCAU_CLASSIC - #define WOLFSSL_MMCAU_ALIGNMENT 4 - #else - #define WOLFSSL_MMCAU_ALIGNMENT 0 - #endif -#endif - -/* if using hardware crypto and have alignment requirements, specify the - requirement here. The record header of SSL/TLS will prevent easy alignment. - This hint tries to help as much as possible. */ -#ifndef WOLFSSL_GENERAL_ALIGNMENT - #ifdef WOLFSSL_AESNI - #define WOLFSSL_GENERAL_ALIGNMENT 16 - #elif defined(XSTREAM_ALIGN) - #define WOLFSSL_GENERAL_ALIGNMENT 4 - #elif defined(FREESCALE_MMCAU) || defined(FREESCALE_MMCAU_CLASSIC) - #define WOLFSSL_GENERAL_ALIGNMENT WOLFSSL_MMCAU_ALIGNMENT - #else - #define WOLFSSL_GENERAL_ALIGNMENT 0 - #endif -#endif - -#if defined(WOLFSSL_GENERAL_ALIGNMENT) && (WOLFSSL_GENERAL_ALIGNMENT > 0) - #if defined(_MSC_VER) - #define XGEN_ALIGN __declspec(align(WOLFSSL_GENERAL_ALIGNMENT)) - #elif defined(__GNUC__) - #define XGEN_ALIGN __attribute__((aligned(WOLFSSL_GENERAL_ALIGNMENT))) - #else - #define XGEN_ALIGN - #endif -#else - #define XGEN_ALIGN -#endif - - -#ifdef __INTEL_COMPILER - #pragma warning(disable:2259) /* explicit casts to smaller sizes, disable */ -#endif - -/* user can specify what curves they want with ECC_USER_CURVES otherwise - * all curves are on by default for now */ -#ifndef ECC_USER_CURVES - #if !defined(WOLFSSL_SP_MATH) && !defined(HAVE_ALL_CURVES) - #define HAVE_ALL_CURVES - #endif -#endif - -/* ECC Configs */ -#ifdef HAVE_ECC - /* By default enable Sign, Verify, DHE, Key Import and Key Export unless explicitly disabled */ - #ifndef NO_ECC_SIGN - #undef HAVE_ECC_SIGN - #define HAVE_ECC_SIGN - #endif - #ifndef NO_ECC_VERIFY - #undef HAVE_ECC_VERIFY - #define HAVE_ECC_VERIFY - #endif - #ifndef NO_ECC_CHECK_KEY - #undef HAVE_ECC_CHECK_KEY - #define HAVE_ECC_CHECK_KEY - #endif - #ifndef NO_ECC_DHE - #undef HAVE_ECC_DHE - #define HAVE_ECC_DHE - #endif - #ifndef NO_ECC_KEY_IMPORT - #undef HAVE_ECC_KEY_IMPORT - #define HAVE_ECC_KEY_IMPORT - #endif - #ifndef NO_ECC_KEY_EXPORT - #undef HAVE_ECC_KEY_EXPORT - #define HAVE_ECC_KEY_EXPORT - #endif -#endif /* HAVE_ECC */ - -/* Curve25519 Configs */ -#ifdef HAVE_CURVE25519 - /* By default enable shared secret, key export and import */ - #ifndef NO_CURVE25519_SHARED_SECRET - #undef HAVE_CURVE25519_SHARED_SECRET - #define HAVE_CURVE25519_SHARED_SECRET - #endif - #ifndef NO_CURVE25519_KEY_EXPORT - #undef HAVE_CURVE25519_KEY_EXPORT - #define HAVE_CURVE25519_KEY_EXPORT - #endif - #ifndef NO_CURVE25519_KEY_IMPORT - #undef HAVE_CURVE25519_KEY_IMPORT - #define HAVE_CURVE25519_KEY_IMPORT - #endif -#endif /* HAVE_CURVE25519 */ - -/* Ed25519 Configs */ -#ifdef HAVE_ED25519 - /* By default enable sign, verify, key export and import */ - #ifndef NO_ED25519_SIGN - #undef HAVE_ED25519_SIGN - #define HAVE_ED25519_SIGN - #endif - #ifndef NO_ED25519_VERIFY - #undef HAVE_ED25519_VERIFY - #define HAVE_ED25519_VERIFY - #endif - #ifndef NO_ED25519_KEY_EXPORT - #undef HAVE_ED25519_KEY_EXPORT - #define HAVE_ED25519_KEY_EXPORT - #endif - #ifndef NO_ED25519_KEY_IMPORT - #undef HAVE_ED25519_KEY_IMPORT - #define HAVE_ED25519_KEY_IMPORT - #endif -#endif /* HAVE_ED25519 */ - -/* Curve448 Configs */ -#ifdef HAVE_CURVE448 - /* By default enable shared secret, key export and import */ - #ifndef NO_CURVE448_SHARED_SECRET - #undef HAVE_CURVE448_SHARED_SECRET - #define HAVE_CURVE448_SHARED_SECRET - #endif - #ifndef NO_CURVE448_KEY_EXPORT - #undef HAVE_CURVE448_KEY_EXPORT - #define HAVE_CURVE448_KEY_EXPORT - #endif - #ifndef NO_CURVE448_KEY_IMPORT - #undef HAVE_CURVE448_KEY_IMPORT - #define HAVE_CURVE448_KEY_IMPORT - #endif -#endif /* HAVE_CURVE448 */ - -/* Ed448 Configs */ -#ifdef HAVE_ED448 - /* By default enable sign, verify, key export and import */ - #ifndef NO_ED448_SIGN - #undef HAVE_ED448_SIGN - #define HAVE_ED448_SIGN - #endif - #ifndef NO_ED448_VERIFY - #undef HAVE_ED448_VERIFY - #define HAVE_ED448_VERIFY - #endif - #ifndef NO_ED448_KEY_EXPORT - #undef HAVE_ED448_KEY_EXPORT - #define HAVE_ED448_KEY_EXPORT - #endif - #ifndef NO_ED448_KEY_IMPORT - #undef HAVE_ED448_KEY_IMPORT - #define HAVE_ED448_KEY_IMPORT - #endif -#endif /* HAVE_ED448 */ - -/* AES Config */ -#ifndef NO_AES - /* By default enable all AES key sizes, decryption and CBC */ - #ifndef AES_MAX_KEY_SIZE - #undef AES_MAX_KEY_SIZE - #define AES_MAX_KEY_SIZE 256 - #endif - - #ifndef NO_AES_128 - #undef WOLFSSL_AES_128 - #define WOLFSSL_AES_128 - #endif - #if !defined(NO_AES_192) && AES_MAX_KEY_SIZE >= 192 - #undef WOLFSSL_AES_192 - #define WOLFSSL_AES_192 - #endif - #if !defined(NO_AES_256) && AES_MAX_KEY_SIZE >= 256 - #undef WOLFSSL_AES_256 - #define WOLFSSL_AES_256 - #endif - #if !defined(WOLFSSL_AES_128) && defined(HAVE_ECC_ENCRYPT) - #warning HAVE_ECC_ENCRYPT uses AES 128 bit keys - #endif - - #ifndef NO_AES_DECRYPT - #undef HAVE_AES_DECRYPT - #define HAVE_AES_DECRYPT - #endif - #ifndef NO_AES_CBC - #undef HAVE_AES_CBC - #define HAVE_AES_CBC - #endif - #ifdef WOLFSSL_AES_XTS - /* AES-XTS makes calls to AES direct functions */ - #ifndef WOLFSSL_AES_DIRECT - #define WOLFSSL_AES_DIRECT - #endif - #endif - #ifdef WOLFSSL_AES_CFB - /* AES-CFB makes calls to AES direct functions */ - #ifndef WOLFSSL_AES_DIRECT - #define WOLFSSL_AES_DIRECT - #endif - #endif -#endif - -#if (defined(WOLFSSL_TLS13) && defined(WOLFSSL_NO_TLS12)) || \ - (!defined(HAVE_AES_CBC) && defined(NO_DES3) && defined(NO_RC4) && \ - !defined(HAVE_CAMELLIA) && !defined(HAVE_IDEA) && \ - !defined(HAVE_NULL_CIPHER) && !defined(HAVE_HC128)) - #define WOLFSSL_AEAD_ONLY -#endif - -#if !defined(NO_DH) && !defined(HAVE_FFDHE) - #if defined(HAVE_FFDHE_2048) || defined(HAVE_FFDHE_3072) || \ - defined(HAVE_FFDHE_4096) || defined(HAVE_FFDHE_6144) || \ - defined(HAVE_FFDHE_8192) - #define HAVE_FFDHE - #endif -#endif -#if defined(HAVE_FFDHE_8192) - #define MIN_FFDHE_FP_MAX_BITS 16384 -#elif defined(HAVE_FFDHE_6144) - #define MIN_FFDHE_FP_MAX_BITS 12288 -#elif defined(HAVE_FFDHE_4096) - #define MIN_FFDHE_FP_MAX_BITS 8192 -#elif defined(HAVE_FFDHE_3072) - #define MIN_FFDHE_FP_MAX_BITS 6144 -#elif defined(HAVE_FFDHE_2048) - #define MIN_FFDHE_FP_MAX_BITS 4096 -#else - #define MIN_FFDHE_FP_MAX_BITS 0 -#endif -#if defined(HAVE_FFDHE) && defined(FP_MAX_BITS) - #if MIN_FFDHE_FP_MAX_BITS > FP_MAX_BITS - #error "FFDHE parameters are too large for FP_MAX_BIT as set" - #endif -#endif - -/* if desktop type system and fastmath increase default max bits */ -#ifdef WOLFSSL_X86_64_BUILD - #if defined(USE_FAST_MATH) && !defined(FP_MAX_BITS) - #if MIN_FFDHE_FP_MAX_BITS <= 8192 - #define FP_MAX_BITS 8192 - #else - #define FP_MAX_BITS MIN_FFDHE_FP_MAX_BITS - #endif - #endif -#endif - -/* If using the max strength build, ensure OLD TLS is disabled. */ -#ifdef WOLFSSL_MAX_STRENGTH - #undef NO_OLD_TLS - #define NO_OLD_TLS -#endif - - -/* Default AES minimum auth tag sz, allow user to override */ -#ifndef WOLFSSL_MIN_AUTH_TAG_SZ - #define WOLFSSL_MIN_AUTH_TAG_SZ 12 -#endif - - -/* sniffer requires: - * static RSA cipher suites - * session stats and peak stats - */ -#ifdef WOLFSSL_SNIFFER - #ifndef WOLFSSL_STATIC_RSA - #define WOLFSSL_STATIC_RSA - #endif - #ifndef WOLFSSL_STATIC_DH - #define WOLFSSL_STATIC_DH - #endif - /* Allow option to be disabled. */ - #ifndef WOLFSSL_NO_SESSION_STATS - #ifndef WOLFSSL_SESSION_STATS - #define WOLFSSL_SESSION_STATS - #endif - #ifndef WOLFSSL_PEAK_SESSIONS - #define WOLFSSL_PEAK_SESSIONS - #endif - #endif -#endif - -/* Decode Public Key extras on by default, user can turn off with - * WOLFSSL_NO_DECODE_EXTRA */ -#ifndef WOLFSSL_NO_DECODE_EXTRA - #ifndef RSA_DECODE_EXTRA - #define RSA_DECODE_EXTRA - #endif - #ifndef ECC_DECODE_EXTRA - #define ECC_DECODE_EXTRA - #endif -#endif - -/* C Sharp wrapper defines */ -#ifdef HAVE_CSHARP - #ifndef WOLFSSL_DTLS - #define WOLFSSL_DTLS - #endif - #undef NO_PSK - #undef NO_SHA256 - #undef NO_DH -#endif - -/* Asynchronous Crypto */ -#ifdef WOLFSSL_ASYNC_CRYPT - /* Make sure wolf events are enabled */ - #undef HAVE_WOLF_EVENT - #define HAVE_WOLF_EVENT - - #ifdef WOLFSSL_ASYNC_CRYPT_TEST - #define WC_ASYNC_DEV_SIZE 168 - #else - #define WC_ASYNC_DEV_SIZE 336 - #endif - - #if !defined(HAVE_CAVIUM) && !defined(HAVE_INTEL_QA) && \ - !defined(WOLFSSL_ASYNC_CRYPT_TEST) - #error No async hardware defined with WOLFSSL_ASYNC_CRYPT! - #endif - - /* Enable ECC_CACHE_CURVE for ASYNC */ - #if !defined(ECC_CACHE_CURVE) - #define ECC_CACHE_CURVE - #endif -#endif /* WOLFSSL_ASYNC_CRYPT */ -#ifndef WC_ASYNC_DEV_SIZE - #define WC_ASYNC_DEV_SIZE 0 -#endif - -/* leantls checks */ -#ifdef WOLFSSL_LEANTLS - #ifndef HAVE_ECC - #error leantls build needs ECC - #endif -#endif /* WOLFSSL_LEANTLS*/ - -/* restriction with static memory */ -#ifdef WOLFSSL_STATIC_MEMORY - #if defined(HAVE_IO_POOL) || defined(XMALLOC_USER) || defined(NO_WOLFSSL_MEMORY) - #error static memory cannot be used with HAVE_IO_POOL, XMALLOC_USER or NO_WOLFSSL_MEMORY - #endif - #if !defined(USE_FAST_MATH) && !defined(NO_BIG_INT) - #error static memory requires fast math please define USE_FAST_MATH - #endif - #ifdef WOLFSSL_SMALL_STACK - #error static memory does not support small stack please undefine - #endif -#endif /* WOLFSSL_STATIC_MEMORY */ - -#ifdef HAVE_AES_KEYWRAP - #ifndef WOLFSSL_AES_DIRECT - #error AES key wrap requires AES direct please define WOLFSSL_AES_DIRECT - #endif -#endif - -#ifdef HAVE_PKCS7 - #if defined(NO_AES) && defined(NO_DES3) - #error PKCS7 needs either AES or 3DES enabled, please enable one - #endif - #ifndef HAVE_AES_KEYWRAP - #error PKCS7 requires AES key wrap please define HAVE_AES_KEYWRAP - #endif - #if defined(HAVE_ECC) && !defined(HAVE_X963_KDF) - #error PKCS7 requires X963 KDF please define HAVE_X963_KDF - #endif -#endif - -#ifndef NO_PKCS12 - #undef HAVE_PKCS12 - #define HAVE_PKCS12 -#endif - -#ifndef NO_PKCS8 - #undef HAVE_PKCS8 - #define HAVE_PKCS8 -#endif - -#if !defined(NO_PBKDF1) || defined(WOLFSSL_ENCRYPTED_KEYS) || defined(HAVE_PKCS8) || defined(HAVE_PKCS12) - #undef HAVE_PBKDF1 - #define HAVE_PBKDF1 -#endif - -#if !defined(NO_PBKDF2) || defined(HAVE_PKCS7) || defined(HAVE_SCRYPT) - #undef HAVE_PBKDF2 - #define HAVE_PBKDF2 -#endif - - -#if !defined(WOLFCRYPT_ONLY) && !defined(NO_OLD_TLS) && \ - (defined(NO_SHA) || defined(NO_MD5)) - #error old TLS requires MD5 and SHA -#endif - -/* for backwards compatibility */ -#if defined(TEST_IPV6) && !defined(WOLFSSL_IPV6) - #define WOLFSSL_IPV6 -#endif - - -/* Place any other flags or defines here */ - -#if defined(WOLFSSL_MYSQL_COMPATIBLE) && defined(_WIN32) \ - && defined(HAVE_GMTIME_R) - #undef HAVE_GMTIME_R /* don't trust macro with windows */ -#endif /* WOLFSSL_MYSQL_COMPATIBLE */ - -#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) - #define SSL_OP_NO_COMPRESSION SSL_OP_NO_COMPRESSION - #define OPENSSL_NO_ENGINE - #define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT - #ifndef OPENSSL_EXTRA - #define OPENSSL_EXTRA - #endif - #ifndef HAVE_SESSION_TICKET - #define HAVE_SESSION_TICKET - #endif - #ifndef HAVE_OCSP - #define HAVE_OCSP - #endif - #ifndef KEEP_OUR_CERT - #define KEEP_OUR_CERT - #endif - #ifndef HAVE_SNI - #define HAVE_SNI - #endif -#endif - -#if defined(WOLFSSL_NGINX) || defined(WOLFSSL_QT) || defined(OPENSSL_ALL) - #define SSL_CTRL_SET_TLSEXT_HOSTNAME 55 -#endif - - -/* both CURVE and ED small math should be enabled */ -#ifdef CURVED25519_SMALL - #define CURVE25519_SMALL - #define ED25519_SMALL -#endif - -/* both CURVE and ED small math should be enabled */ -#ifdef CURVED448_SMALL - #define CURVE448_SMALL - #define ED448_SMALL -#endif - - -#ifndef WOLFSSL_ALERT_COUNT_MAX - #define WOLFSSL_ALERT_COUNT_MAX 5 -#endif - -/* warning for not using harden build options (default with ./configure) */ -#ifndef WC_NO_HARDEN - #if (defined(USE_FAST_MATH) && !defined(TFM_TIMING_RESISTANT)) || \ - (defined(HAVE_ECC) && !defined(ECC_TIMING_RESISTANT)) || \ - (!defined(NO_RSA) && !defined(WC_RSA_BLINDING) && !defined(HAVE_FIPS) && \ - !defined(WC_NO_RNG)) - - #ifndef _MSC_VER - #warning "For timing resistance / side-channel attack prevention consider using harden options" - #else - #pragma message("Warning: For timing resistance / side-channel attack prevention consider using harden options") - #endif - #endif -#endif - -#if defined(NO_OLD_WC_NAMES) || defined(OPENSSL_EXTRA) - /* added to have compatibility with SHA256() */ - #if !defined(NO_OLD_SHA_NAMES) && !defined(HAVE_FIPS) - #define NO_OLD_SHA_NAMES - #endif -#endif - -/* switch for compatibility layer functionality. Has subparts i.e. BIO/X509 - * When opensslextra is enabled all subparts should be turned on. */ -#ifdef OPENSSL_EXTRA - #undef OPENSSL_EXTRA_X509_SMALL - #define OPENSSL_EXTRA_X509_SMALL -#endif /* OPENSSL_EXTRA */ - -/* support for converting DER to PEM */ -#if (defined(WOLFSSL_KEY_GEN) && !defined(WOLFSSL_NO_DER_TO_PEM)) || \ - defined(WOLFSSL_CERT_GEN) || defined(OPENSSL_EXTRA) - #undef WOLFSSL_DER_TO_PEM - #define WOLFSSL_DER_TO_PEM -#endif - -/* keep backwards compatibility enabling encrypted private key */ -#ifndef WOLFSSL_ENCRYPTED_KEYS - #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) || \ - defined(HAVE_WEBSERVER) - #define WOLFSSL_ENCRYPTED_KEYS - #endif -#endif - -/* support for disabling PEM to DER */ -#if !defined(WOLFSSL_NO_PEM) - #undef WOLFSSL_PEM_TO_DER - #define WOLFSSL_PEM_TO_DER -#endif - -/* Parts of the openssl compatibility layer require peer certs */ -#if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) - #undef KEEP_PEER_CERT - #define KEEP_PEER_CERT -#endif - -/* RAW hash function APIs are not implemented with ARMv8 hardware acceleration*/ -#ifdef WOLFSSL_ARMASM - #undef WOLFSSL_NO_HASH_RAW - #define WOLFSSL_NO_HASH_RAW -#endif - -#if !defined(WOLFSSL_SHA384) && !defined(WOLFSSL_SHA512) && defined(NO_AES) && \ - !defined(WOLFSSL_SHA3) - #undef WOLFSSL_NO_WORD64_OPS - #define WOLFSSL_NO_WORD64_OPS -#endif - -#if !defined(WOLFCRYPT_ONLY) && !defined(WOLFSSL_NO_TLS12) - #undef WOLFSSL_HAVE_PRF - #define WOLFSSL_HAVE_PRF -#endif - -#if defined(NO_AES) && defined(NO_DES3) && !defined(HAVE_CAMELLIA) && \ - !defined(WOLFSSL_HAVE_PRF) && defined(NO_PWDBASED) && !defined(HAVE_IDEA) - #undef WOLFSSL_NO_XOR_OPS - #define WOLFSSL_NO_XOR_OPS -#endif - -#if defined(NO_ASN) && defined(WOLFCRYPT_ONLY) - #undef WOLFSSL_NO_INT_ENCODE - #define WOLFSSL_NO_INT_ENCODE - #undef WOLFSSL_NO_INT_DECODE - #define WOLFSSL_NO_INT_DECODE -#endif - -#if defined(WOLFCRYPT_ONLY) && defined(WOLFSSL_RSA_VERIFY_ONLY) && \ - defined(WC_NO_RSA_OAEP) - #undef WOLFSSL_NO_CT_OPS - #define WOLFSSL_NO_CT_OPS -#endif - -#if defined(WOLFCRYPT_ONLY) && defined(NO_AES) && !defined(HAVE_CURVE25519) && \ - !defined(HAVE_CURVE448) && defined(WC_NO_RNG) && defined(WC_NO_RSA_OAEP) - #undef WOLFSSL_NO_CONST_CMP - #define WOLFSSL_NO_CONST_CMP -#endif - -#if defined(WOLFCRYPT_ONLY) && defined(NO_AES) && !defined(WOLFSSL_SHA384) && \ - !defined(WOLFSSL_SHA512) && defined(WC_NO_RNG) && \ - defined(WOLFSSL_SP_MATH) && defined(WOLFSSL_RSA_PUBLIC_ONLY) - #undef WOLFSSL_NO_FORCE_ZERO - #define WOLFSSL_NO_FORCE_ZERO -#endif - -/* Detect old cryptodev name */ -#if defined(WOLF_CRYPTO_DEV) && !defined(WOLF_CRYPTO_CB) - #define WOLF_CRYPTO_CB -#endif - -#if defined(WOLFSSL_TLS13) && defined(WOLFSSL_NO_SIGALG) - #error TLS 1.3 requires the Signature Algorithms extension to be enabled -#endif - -#ifndef NO_WOLFSSL_BASE64_DECODE - #define WOLFSSL_BASE64_DECODE -#endif - -#if defined(HAVE_EX_DATA) || defined(FORTRESS) - #define MAX_EX_DATA 5 /* allow for five items of ex_data */ -#endif - -#ifdef NO_WOLFSSL_SMALL_STACK - #undef WOLFSSL_SMALL_STACK -#endif - -/* The client session cache requires time for timeout */ -#if defined(NO_ASN_TIME) && !defined(NO_SESSION_CACHE) - #define NO_SESSION_CACHE -#endif - -/* Use static ECC structs for Position Independant Code (PIC) */ -#if defined(__IAR_SYSTEMS_ICC__) && defined(__ROPI__) - #define WOLFSSL_ECC_CURVE_STATIC - #define WOLFSSL_NAMES_STATIC - #define WOLFSSL_NO_CONSTCHARCONST -#endif - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif diff --git a/client/wolfssl/wolfssl/wolfcrypt/sha.h b/client/wolfssl/wolfssl/wolfcrypt/sha.h deleted file mode 100644 index 0b7f654..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/sha.h +++ /dev/null @@ -1,178 +0,0 @@ -/* sha.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/sha.h -*/ - - -#ifndef WOLF_CRYPT_SHA_H -#define WOLF_CRYPT_SHA_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifndef NO_SHA - -#if defined(HAVE_FIPS) && \ - defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2) - #include <wolfssl/wolfcrypt/fips.h> -#endif /* HAVE_FIPS_VERSION >= 2 */ - -#if defined(HAVE_FIPS) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 2)) -#define wc_Sha Sha -#define WC_SHA SHA -#define WC_SHA_BLOCK_SIZE SHA_BLOCK_SIZE -#define WC_SHA_DIGEST_SIZE SHA_DIGEST_SIZE -#define WC_SHA_PAD_SIZE SHA_PAD_SIZE - -/* for fips @wc_fips */ -#include <cyassl/ctaocrypt/sha.h> -#endif - -#ifdef FREESCALE_LTC_SHA - #include "fsl_ltc.h" -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -/* avoid redefinition of structs */ -#if !defined(HAVE_FIPS) || \ - (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)) - -#ifdef WOLFSSL_MICROCHIP_PIC32MZ - #include <wolfssl/wolfcrypt/port/pic32/pic32mz-crypt.h> -#endif -#ifdef STM32_HASH - #include <wolfssl/wolfcrypt/port/st/stm32.h> -#endif -#ifdef WOLFSSL_ASYNC_CRYPT - #include <wolfssl/wolfcrypt/async.h> -#endif -#ifdef WOLFSSL_ESP32WROOM32_CRYPT - #include <wolfssl/wolfcrypt/port/Espressif/esp32-crypt.h> -#endif - -#if !defined(NO_OLD_SHA_NAMES) - #define SHA WC_SHA -#endif - -#ifndef NO_OLD_WC_NAMES - #define Sha wc_Sha - #define SHA_BLOCK_SIZE WC_SHA_BLOCK_SIZE - #define SHA_DIGEST_SIZE WC_SHA_DIGEST_SIZE - #define SHA_PAD_SIZE WC_SHA_PAD_SIZE -#endif - -/* in bytes */ -enum { - WC_SHA = WC_HASH_TYPE_SHA, - WC_SHA_BLOCK_SIZE = 64, - WC_SHA_DIGEST_SIZE = 20, - WC_SHA_PAD_SIZE = 56 -}; - - -#if defined(WOLFSSL_TI_HASH) - #include "wolfssl/wolfcrypt/port/ti/ti-hash.h" - -#elif defined(WOLFSSL_IMX6_CAAM) - #include "wolfssl/wolfcrypt/port/caam/wolfcaam_sha.h" -#elif defined(WOLFSSL_RENESAS_TSIP_CRYPT) && \ - !defined(NO_WOLFSSL_RENESAS_TSIP_CRYPT_HASH) - #include "wolfssl/wolfcrypt/port/Renesas/renesas-tsip-crypt.h" -#else - -/* Sha digest */ -struct wc_Sha { -#ifdef FREESCALE_LTC_SHA - ltc_hash_ctx_t ctx; -#elif defined(STM32_HASH) - STM32_HASH_Context stmCtx; -#else - word32 buffLen; /* in bytes */ - word32 loLen; /* length in bytes */ - word32 hiLen; /* length in bytes */ - word32 buffer[WC_SHA_BLOCK_SIZE / sizeof(word32)]; - #ifdef WOLFSSL_PIC32MZ_HASH - word32 digest[PIC32_DIGEST_SIZE / sizeof(word32)]; - #else - word32 digest[WC_SHA_DIGEST_SIZE / sizeof(word32)]; - #endif - void* heap; - #ifdef WOLFSSL_PIC32MZ_HASH - hashUpdCache cache; /* cache for updates */ - #endif - #ifdef WOLFSSL_ASYNC_CRYPT - WC_ASYNC_DEV asyncDev; - #endif /* WOLFSSL_ASYNC_CRYPT */ - #ifdef WOLF_CRYPTO_CB - int devId; - void* devCtx; /* generic crypto callback context */ - #endif -#endif -#if defined(WOLFSSL_ESP32WROOM32_CRYPT) && \ - !defined(NO_WOLFSSL_ESP32WROOM32_CRYPT_HASH) - WC_ESP32SHA ctx; -#endif -#if defined(WOLFSSL_HASH_FLAGS) || defined(WOLF_CRYPTO_CB) - word32 flags; /* enum wc_HashFlags in hash.h */ -#endif -}; - -#ifndef WC_SHA_TYPE_DEFINED - typedef struct wc_Sha wc_Sha; - #define WC_SHA_TYPE_DEFINED -#endif - -#endif /* WOLFSSL_TI_HASH */ - - -#endif /* HAVE_FIPS */ - -WOLFSSL_API int wc_InitSha(wc_Sha*); -WOLFSSL_API int wc_InitSha_ex(wc_Sha* sha, void* heap, int devId); -WOLFSSL_API int wc_ShaUpdate(wc_Sha*, const byte*, word32); -WOLFSSL_API int wc_ShaFinalRaw(wc_Sha*, byte*); -WOLFSSL_API int wc_ShaFinal(wc_Sha*, byte*); -WOLFSSL_API void wc_ShaFree(wc_Sha*); - -WOLFSSL_API int wc_ShaGetHash(wc_Sha*, byte*); -WOLFSSL_API int wc_ShaCopy(wc_Sha*, wc_Sha*); - -#ifdef WOLFSSL_PIC32MZ_HASH -WOLFSSL_API void wc_ShaSizeSet(wc_Sha* sha, word32 len); -#endif - -#if defined(WOLFSSL_HASH_FLAGS) || defined(WOLF_CRYPTO_CB) - WOLFSSL_API int wc_ShaSetFlags(wc_Sha* sha, word32 flags); - WOLFSSL_API int wc_ShaGetFlags(wc_Sha* sha, word32* flags); -#endif - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* NO_SHA */ -#endif /* WOLF_CRYPT_SHA_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/sha256.h b/client/wolfssl/wolfssl/wolfcrypt/sha256.h deleted file mode 100644 index 798f309..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/sha256.h +++ /dev/null @@ -1,255 +0,0 @@ -/* sha256.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/sha256.h -*/ - - - -#ifndef WOLF_CRYPT_SHA256_H -#define WOLF_CRYPT_SHA256_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifndef NO_SHA256 - -#if defined(HAVE_FIPS) && \ - defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2) - #include <wolfssl/wolfcrypt/fips.h> -#endif /* HAVE_FIPS_VERSION >= 2 */ - -#if defined(HAVE_FIPS) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 2)) - #define wc_Sha256 Sha256 - #define WC_SHA256 SHA256 - #define WC_SHA256_BLOCK_SIZE SHA256_BLOCK_SIZE - #define WC_SHA256_DIGEST_SIZE SHA256_DIGEST_SIZE - #define WC_SHA256_PAD_SIZE SHA256_PAD_SIZE - - #ifdef WOLFSSL_SHA224 - #define wc_Sha224 Sha224 - #define WC_SHA224 SHA224 - #define WC_SHA224_BLOCK_SIZE SHA224_BLOCK_SIZE - #define WC_SHA224_DIGEST_SIZE SHA224_DIGEST_SIZE - #define WC_SHA224_PAD_SIZE SHA224_PAD_SIZE - #endif - - /* for fips @wc_fips */ - #include <cyassl/ctaocrypt/sha256.h> -#endif - -#ifdef FREESCALE_LTC_SHA - #include "fsl_ltc.h" -#endif - - -#ifdef __cplusplus - extern "C" { -#endif - -/* avoid redefinition of structs */ -#if !defined(HAVE_FIPS) || \ - (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)) - -#ifdef WOLFSSL_MICROCHIP_PIC32MZ - #include <wolfssl/wolfcrypt/port/pic32/pic32mz-crypt.h> -#endif -#ifdef STM32_HASH - #include <wolfssl/wolfcrypt/port/st/stm32.h> -#endif -#ifdef WOLFSSL_ASYNC_CRYPT - #include <wolfssl/wolfcrypt/async.h> -#endif -#if defined(WOLFSSL_DEVCRYPTO) && defined(WOLFSSL_DEVCRYPTO_HASH) - #include <wolfssl/wolfcrypt/port/devcrypto/wc_devcrypto.h> -#endif -#if defined(WOLFSSL_ESP32WROOM32_CRYPT) - #include "wolfssl/wolfcrypt/port/Espressif/esp32-crypt.h" -#endif -#if defined(WOLFSSL_CRYPTOCELL) - #include <wolfssl/wolfcrypt/port/arm/cryptoCell.h> -#endif - -#if defined(_MSC_VER) - #define SHA256_NOINLINE __declspec(noinline) -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__GNUC__) - #define SHA256_NOINLINE __attribute__((noinline)) -#else - #define SHA256_NOINLINE -#endif - -#if !defined(NO_OLD_SHA_NAMES) - #define SHA256 WC_SHA256 -#endif - -#ifndef NO_OLD_WC_NAMES - #define Sha256 wc_Sha256 - #define SHA256_BLOCK_SIZE WC_SHA256_BLOCK_SIZE - #define SHA256_DIGEST_SIZE WC_SHA256_DIGEST_SIZE - #define SHA256_PAD_SIZE WC_SHA256_PAD_SIZE -#endif - -/* in bytes */ -enum { - WC_SHA256 = WC_HASH_TYPE_SHA256, - WC_SHA256_BLOCK_SIZE = 64, - WC_SHA256_DIGEST_SIZE = 32, - WC_SHA256_PAD_SIZE = 56 -}; - - -#ifdef WOLFSSL_TI_HASH - #include "wolfssl/wolfcrypt/port/ti/ti-hash.h" -#elif defined(WOLFSSL_IMX6_CAAM) - #include "wolfssl/wolfcrypt/port/caam/wolfcaam_sha.h" -#elif defined(WOLFSSL_AFALG_HASH) - #include "wolfssl/wolfcrypt/port/af_alg/afalg_hash.h" -#elif defined(WOLFSSL_RENESAS_TSIP_CRYPT) && \ - !defined(NO_WOLFSSL_RENESAS_TSIP_CRYPT_HASH) - #include "wolfssl/wolfcrypt/port/Renesas/renesas-tsip-crypt.h" -#else - -/* wc_Sha256 digest */ -struct wc_Sha256 { -#ifdef FREESCALE_LTC_SHA - ltc_hash_ctx_t ctx; -#elif defined(STM32_HASH_SHA2) - STM32_HASH_Context stmCtx; -#else - /* alignment on digest and buffer speeds up ARMv8 crypto operations */ - ALIGN16 word32 digest[WC_SHA256_DIGEST_SIZE / sizeof(word32)]; - ALIGN16 word32 buffer[WC_SHA256_BLOCK_SIZE / sizeof(word32)]; - word32 buffLen; /* in bytes */ - word32 loLen; /* length in bytes */ - word32 hiLen; /* length in bytes */ - void* heap; -#ifdef WOLFSSL_PIC32MZ_HASH - hashUpdCache cache; /* cache for updates */ -#endif -#ifdef WOLFSSL_ASYNC_CRYPT - WC_ASYNC_DEV asyncDev; -#endif /* WOLFSSL_ASYNC_CRYPT */ -#ifdef WOLFSSL_SMALL_STACK_CACHE - word32* W; -#endif -#ifdef WOLFSSL_DEVCRYPTO_HASH - WC_CRYPTODEV ctx; - byte* msg; - word32 used; - word32 len; -#endif -#if defined(WOLFSSL_ESP32WROOM32_CRYPT) && \ - !defined(NO_WOLFSSL_ESP32WROOM32_CRYPT_HASH) - WC_ESP32SHA ctx; -#endif -#ifdef WOLFSSL_CRYPTOCELL - CRYS_HASHUserContext_t ctx; -#endif -#ifdef WOLF_CRYPTO_CB - int devId; - void* devCtx; /* generic crypto callback context */ -#endif -#endif -#if defined(WOLFSSL_HASH_FLAGS) || defined(WOLF_CRYPTO_CB) - word32 flags; /* enum wc_HashFlags in hash.h */ -#endif -}; - -#ifndef WC_SHA256_TYPE_DEFINED - typedef struct wc_Sha256 wc_Sha256; - #define WC_SHA256_TYPE_DEFINED -#endif - -#endif - -#endif /* HAVE_FIPS */ - -WOLFSSL_API int wc_InitSha256(wc_Sha256*); -WOLFSSL_API int wc_InitSha256_ex(wc_Sha256*, void*, int); -WOLFSSL_API int wc_Sha256Update(wc_Sha256*, const byte*, word32); -WOLFSSL_API int wc_Sha256FinalRaw(wc_Sha256*, byte*); -WOLFSSL_API int wc_Sha256Final(wc_Sha256*, byte*); -WOLFSSL_API void wc_Sha256Free(wc_Sha256*); - -WOLFSSL_API int wc_Sha256GetHash(wc_Sha256*, byte*); -WOLFSSL_API int wc_Sha256Copy(wc_Sha256* src, wc_Sha256* dst); - -#ifdef WOLFSSL_PIC32MZ_HASH -WOLFSSL_API void wc_Sha256SizeSet(wc_Sha256*, word32); -#endif - -#if defined(WOLFSSL_HASH_FLAGS) || defined(WOLF_CRYPTO_CB) - WOLFSSL_API int wc_Sha256SetFlags(wc_Sha256* sha256, word32 flags); - WOLFSSL_API int wc_Sha256GetFlags(wc_Sha256* sha256, word32* flags); -#endif - -#ifdef WOLFSSL_SHA224 -/* avoid redefinition of structs */ -#if !defined(HAVE_FIPS) || \ - (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)) - -#ifndef NO_OLD_WC_NAMES - #define Sha224 wc_Sha224 - #define SHA224 WC_SHA224 - #define SHA224_BLOCK_SIZE WC_SHA224_BLOCK_SIZE - #define SHA224_DIGEST_SIZE WC_SHA224_DIGEST_SIZE - #define SHA224_PAD_SIZE WC_SHA224_PAD_SIZE -#endif - -/* in bytes */ -enum { - WC_SHA224 = WC_HASH_TYPE_SHA224, - WC_SHA224_BLOCK_SIZE = WC_SHA256_BLOCK_SIZE, - WC_SHA224_DIGEST_SIZE = 28, - WC_SHA224_PAD_SIZE = WC_SHA256_PAD_SIZE -}; - - -#ifndef WC_SHA224_TYPE_DEFINED - typedef struct wc_Sha256 wc_Sha224; - #define WC_SHA224_TYPE_DEFINED -#endif -#endif /* HAVE_FIPS */ - -WOLFSSL_API int wc_InitSha224(wc_Sha224*); -WOLFSSL_API int wc_InitSha224_ex(wc_Sha224*, void*, int); -WOLFSSL_API int wc_Sha224Update(wc_Sha224*, const byte*, word32); -WOLFSSL_API int wc_Sha224Final(wc_Sha224*, byte*); -WOLFSSL_API void wc_Sha224Free(wc_Sha224*); - -WOLFSSL_API int wc_Sha224GetHash(wc_Sha224*, byte*); -WOLFSSL_API int wc_Sha224Copy(wc_Sha224* src, wc_Sha224* dst); - -#if defined(WOLFSSL_HASH_FLAGS) || defined(WOLF_CRYPTO_CB) - WOLFSSL_API int wc_Sha224SetFlags(wc_Sha224* sha224, word32 flags); - WOLFSSL_API int wc_Sha224GetFlags(wc_Sha224* sha224, word32* flags); -#endif - -#endif /* WOLFSSL_SHA224 */ - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* NO_SHA256 */ -#endif /* WOLF_CRYPT_SHA256_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/sha3.h b/client/wolfssl/wolfssl/wolfcrypt/sha3.h deleted file mode 100644 index 47e2e2c..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/sha3.h +++ /dev/null @@ -1,165 +0,0 @@ -/* sha3.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLF_CRYPT_SHA3_H -#define WOLF_CRYPT_SHA3_H - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef WOLFSSL_SHA3 - -#ifdef HAVE_FIPS - /* for fips @wc_fips */ - #include <wolfssl/wolfcrypt/fips.h> -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -#ifdef WOLFSSL_ASYNC_CRYPT - #include <wolfssl/wolfcrypt/async.h> -#endif - -/* in bytes */ -enum { - WC_SHA3_224 = WC_HASH_TYPE_SHA3_224, - WC_SHA3_224_DIGEST_SIZE = 28, - WC_SHA3_224_COUNT = 18, - - WC_SHA3_256 = WC_HASH_TYPE_SHA3_256, - WC_SHA3_256_DIGEST_SIZE = 32, - WC_SHA3_256_COUNT = 17, - - WC_SHA3_384 = WC_HASH_TYPE_SHA3_384, - WC_SHA3_384_DIGEST_SIZE = 48, - WC_SHA3_384_COUNT = 13, - - WC_SHA3_512 = WC_HASH_TYPE_SHA3_512, - WC_SHA3_512_DIGEST_SIZE = 64, - WC_SHA3_512_COUNT = 9, - -#ifndef HAVE_SELFTEST - /* These values are used for HMAC, not SHA-3 directly. - * They come from from FIPS PUB 202. */ - WC_SHA3_224_BLOCK_SIZE = 144, - WC_SHA3_256_BLOCK_SIZE = 136, - WC_SHA3_384_BLOCK_SIZE = 104, - WC_SHA3_512_BLOCK_SIZE = 72, -#endif -}; - -#ifndef NO_OLD_WC_NAMES - #define SHA3_224 WC_SHA3_224 - #define SHA3_224_DIGEST_SIZE WC_SHA3_224_DIGEST_SIZE - #define SHA3_256 WC_SHA3_256 - #define SHA3_256_DIGEST_SIZE WC_SHA3_256_DIGEST_SIZE - #define SHA3_384 WC_SHA3_384 - #define SHA3_384_DIGEST_SIZE WC_SHA3_384_DIGEST_SIZE - #define SHA3_512 WC_SHA3_512 - #define SHA3_512_DIGEST_SIZE WC_SHA3_512_DIGEST_SIZE - #define Sha3 wc_Sha3 -#endif - - - -#ifdef WOLFSSL_XILINX_CRYPT - #include "wolfssl/wolfcrypt/port/xilinx/xil-sha3.h" -#elif defined(WOLFSSL_AFALG_XILINX_SHA3) - #include <wolfssl/wolfcrypt/port/af_alg/afalg_hash.h> -#else - -/* Sha3 digest */ -struct Sha3 { - /* State data that is processed for each block. */ - word64 s[25]; - /* Unprocessed message data. */ - byte t[200]; - /* Index into unprocessed data to place next message byte. */ - byte i; - - void* heap; - -#ifdef WOLFSSL_ASYNC_CRYPT - WC_ASYNC_DEV asyncDev; -#endif /* WOLFSSL_ASYNC_CRYPT */ -#if defined(WOLFSSL_HASH_FLAGS) || defined(WOLF_CRYPTO_CB) - word32 flags; /* enum wc_HashFlags in hash.h */ -#endif -}; - -#ifndef WC_SHA3_TYPE_DEFINED - typedef struct Sha3 wc_Sha3; - #define WC_SHA3_TYPE_DEFINED -#endif - -#endif - -typedef wc_Sha3 wc_Shake; - - -WOLFSSL_API int wc_InitSha3_224(wc_Sha3*, void*, int); -WOLFSSL_API int wc_Sha3_224_Update(wc_Sha3*, const byte*, word32); -WOLFSSL_API int wc_Sha3_224_Final(wc_Sha3*, byte*); -WOLFSSL_API void wc_Sha3_224_Free(wc_Sha3*); -WOLFSSL_API int wc_Sha3_224_GetHash(wc_Sha3*, byte*); -WOLFSSL_API int wc_Sha3_224_Copy(wc_Sha3* src, wc_Sha3* dst); - -WOLFSSL_API int wc_InitSha3_256(wc_Sha3*, void*, int); -WOLFSSL_API int wc_Sha3_256_Update(wc_Sha3*, const byte*, word32); -WOLFSSL_API int wc_Sha3_256_Final(wc_Sha3*, byte*); -WOLFSSL_API void wc_Sha3_256_Free(wc_Sha3*); -WOLFSSL_API int wc_Sha3_256_GetHash(wc_Sha3*, byte*); -WOLFSSL_API int wc_Sha3_256_Copy(wc_Sha3* src, wc_Sha3* dst); - -WOLFSSL_API int wc_InitSha3_384(wc_Sha3*, void*, int); -WOLFSSL_API int wc_Sha3_384_Update(wc_Sha3*, const byte*, word32); -WOLFSSL_API int wc_Sha3_384_Final(wc_Sha3*, byte*); -WOLFSSL_API void wc_Sha3_384_Free(wc_Sha3*); -WOLFSSL_API int wc_Sha3_384_GetHash(wc_Sha3*, byte*); -WOLFSSL_API int wc_Sha3_384_Copy(wc_Sha3* src, wc_Sha3* dst); - -WOLFSSL_API int wc_InitSha3_512(wc_Sha3*, void*, int); -WOLFSSL_API int wc_Sha3_512_Update(wc_Sha3*, const byte*, word32); -WOLFSSL_API int wc_Sha3_512_Final(wc_Sha3*, byte*); -WOLFSSL_API void wc_Sha3_512_Free(wc_Sha3*); -WOLFSSL_API int wc_Sha3_512_GetHash(wc_Sha3*, byte*); -WOLFSSL_API int wc_Sha3_512_Copy(wc_Sha3* src, wc_Sha3* dst); - -WOLFSSL_API int wc_InitShake256(wc_Shake*, void*, int); -WOLFSSL_API int wc_Shake256_Update(wc_Shake*, const byte*, word32); -WOLFSSL_API int wc_Shake256_Final(wc_Shake*, byte*, word32); -WOLFSSL_API void wc_Shake256_Free(wc_Shake*); -WOLFSSL_API int wc_Shake256_Copy(wc_Shake* src, wc_Sha3* dst); - -#if defined(WOLFSSL_HASH_FLAGS) || defined(WOLF_CRYPTO_CB) - WOLFSSL_API int wc_Sha3_SetFlags(wc_Sha3* sha3, word32 flags); - WOLFSSL_API int wc_Sha3_GetFlags(wc_Sha3* sha3, word32* flags); -#endif - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_SHA3 */ -#endif /* WOLF_CRYPT_SHA3_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/sha512.h b/client/wolfssl/wolfssl/wolfcrypt/sha512.h deleted file mode 100644 index 3aac948..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/sha512.h +++ /dev/null @@ -1,228 +0,0 @@ -/* sha512.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/sha512.h -*/ - - -#ifndef WOLF_CRYPT_SHA512_H -#define WOLF_CRYPT_SHA512_H - -#include <wolfssl/wolfcrypt/types.h> - -#if defined(WOLFSSL_SHA512) || defined(WOLFSSL_SHA384) - -#if defined(HAVE_FIPS) && \ - defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2) - #include <wolfssl/wolfcrypt/fips.h> -#endif /* HAVE_FIPS_VERSION >= 2 */ - -#if defined(HAVE_FIPS) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 2)) - #ifdef WOLFSSL_SHA512 - #define wc_Sha512 Sha512 - #define WC_SHA512 SHA512 - #define WC_SHA512_BLOCK_SIZE SHA512_BLOCK_SIZE - #define WC_SHA512_DIGEST_SIZE SHA512_DIGEST_SIZE - #define WC_SHA512_PAD_SIZE SHA512_PAD_SIZE - #endif /* WOLFSSL_SHA512 */ - #ifdef WOLFSSL_SHA384 - #define wc_Sha384 Sha384 - #define WC_SHA384 SHA384 - #define WC_SHA384_BLOCK_SIZE SHA384_BLOCK_SIZE - #define WC_SHA384_DIGEST_SIZE SHA384_DIGEST_SIZE - #define WC_SHA384_PAD_SIZE SHA384_PAD_SIZE - #endif /* WOLFSSL_SHA384 */ - - #define CYASSL_SHA512 - #if defined(WOLFSSL_SHA384) - #define CYASSL_SHA384 - #endif - /* for fips @wc_fips */ - #include <cyassl/ctaocrypt/sha512.h> -#endif - -#ifdef __cplusplus - extern "C" { -#endif - -/* avoid redefinition of structs */ -#if !defined(HAVE_FIPS) || \ - (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)) - -#ifdef WOLFSSL_ASYNC_CRYPT - #include <wolfssl/wolfcrypt/async.h> -#endif -#ifdef WOLFSSL_ESP32WROOM32_CRYPT - #include <wolfssl/wolfcrypt/port/Espressif/esp32-crypt.h> -#endif -#if defined(_MSC_VER) - #define SHA512_NOINLINE __declspec(noinline) -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__GNUC__) - #define SHA512_NOINLINE __attribute__((noinline)) -#else - #define SHA512_NOINLINE -#endif - -#ifdef WOLFSSL_SHA512 - -#if !defined(NO_OLD_SHA_NAMES) - #define SHA512 WC_SHA512 -#endif - -#if !defined(NO_OLD_WC_NAMES) - #define Sha512 wc_Sha512 - #define SHA512_BLOCK_SIZE WC_SHA512_BLOCK_SIZE - #define SHA512_DIGEST_SIZE WC_SHA512_DIGEST_SIZE - #define SHA512_PAD_SIZE WC_SHA512_PAD_SIZE -#endif - -#endif /* WOLFSSL_SHA512 */ - -/* in bytes */ -enum { -#ifdef WOLFSSL_SHA512 - WC_SHA512 = WC_HASH_TYPE_SHA512, -#endif - WC_SHA512_BLOCK_SIZE = 128, - WC_SHA512_DIGEST_SIZE = 64, - WC_SHA512_PAD_SIZE = 112 -}; - - -#ifdef WOLFSSL_IMX6_CAAM - #include "wolfssl/wolfcrypt/port/caam/wolfcaam_sha.h" -#else -/* wc_Sha512 digest */ -struct wc_Sha512 { - word64 digest[WC_SHA512_DIGEST_SIZE / sizeof(word64)]; - word64 buffer[WC_SHA512_BLOCK_SIZE / sizeof(word64)]; - word32 buffLen; /* in bytes */ - word64 loLen; /* length in bytes */ - word64 hiLen; /* length in bytes */ - void* heap; -#ifdef USE_INTEL_SPEEDUP - const byte* data; -#endif -#ifdef WOLFSSL_ASYNC_CRYPT - WC_ASYNC_DEV asyncDev; -#endif /* WOLFSSL_ASYNC_CRYPT */ -#ifdef WOLFSSL_SMALL_STACK_CACHE - word64* W; -#endif -#if defined(WOLFSSL_ESP32WROOM32_CRYPT) && \ - !defined(NO_WOLFSSL_ESP32WROOM32_CRYPT_HASH) - WC_ESP32SHA ctx; -#endif -#if defined(WOLFSSL_HASH_FLAGS) || defined(WOLF_CRYPTO_CB) - word32 flags; /* enum wc_HashFlags in hash.h */ -#endif -}; - -#ifndef WC_SHA512_TYPE_DEFINED - typedef struct wc_Sha512 wc_Sha512; - #define WC_SHA512_TYPE_DEFINED -#endif -#endif - -#endif /* HAVE_FIPS */ - -#ifdef WOLFSSL_ARMASM -WOLFSSL_LOCAL void Transform_Sha512_Len(wc_Sha512* sha512, const byte* data, - word32 len); -#endif - -#ifdef WOLFSSL_SHA512 - -WOLFSSL_API int wc_InitSha512(wc_Sha512*); -WOLFSSL_API int wc_InitSha512_ex(wc_Sha512*, void*, int); -WOLFSSL_API int wc_Sha512Update(wc_Sha512*, const byte*, word32); -WOLFSSL_API int wc_Sha512FinalRaw(wc_Sha512*, byte*); -WOLFSSL_API int wc_Sha512Final(wc_Sha512*, byte*); -WOLFSSL_API void wc_Sha512Free(wc_Sha512*); - -WOLFSSL_API int wc_Sha512GetHash(wc_Sha512*, byte*); -WOLFSSL_API int wc_Sha512Copy(wc_Sha512* src, wc_Sha512* dst); - -#if defined(WOLFSSL_HASH_FLAGS) || defined(WOLF_CRYPTO_CB) - WOLFSSL_API int wc_Sha512SetFlags(wc_Sha512* sha512, word32 flags); - WOLFSSL_API int wc_Sha512GetFlags(wc_Sha512* sha512, word32* flags); -#endif - -#endif /* WOLFSSL_SHA512 */ - -#if defined(WOLFSSL_SHA384) - -/* avoid redefinition of structs */ -#if !defined(HAVE_FIPS) || \ - (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)) - -#if !defined(NO_OLD_SHA_NAMES) - #define SHA384 WC_SHA384 -#endif - -#if !defined(NO_OLD_WC_NAMES) - #define Sha384 wc_Sha384 - #define SHA384_BLOCK_SIZE WC_SHA384_BLOCK_SIZE - #define SHA384_DIGEST_SIZE WC_SHA384_DIGEST_SIZE - #define SHA384_PAD_SIZE WC_SHA384_PAD_SIZE -#endif - -/* in bytes */ -enum { - WC_SHA384 = WC_HASH_TYPE_SHA384, - WC_SHA384_BLOCK_SIZE = WC_SHA512_BLOCK_SIZE, - WC_SHA384_DIGEST_SIZE = 48, - WC_SHA384_PAD_SIZE = WC_SHA512_PAD_SIZE -}; - - -#ifndef WC_SHA384_TYPE_DEFINED - typedef struct wc_Sha512 wc_Sha384; - #define WC_SHA384_TYPE_DEFINED -#endif -#endif /* HAVE_FIPS */ - -WOLFSSL_API int wc_InitSha384(wc_Sha384*); -WOLFSSL_API int wc_InitSha384_ex(wc_Sha384*, void*, int); -WOLFSSL_API int wc_Sha384Update(wc_Sha384*, const byte*, word32); -WOLFSSL_API int wc_Sha384FinalRaw(wc_Sha384*, byte*); -WOLFSSL_API int wc_Sha384Final(wc_Sha384*, byte*); -WOLFSSL_API void wc_Sha384Free(wc_Sha384*); - -WOLFSSL_API int wc_Sha384GetHash(wc_Sha384*, byte*); -WOLFSSL_API int wc_Sha384Copy(wc_Sha384* src, wc_Sha384* dst); - -#if defined(WOLFSSL_HASH_FLAGS) || defined(WOLF_CRYPTO_CB) - WOLFSSL_API int wc_Sha384SetFlags(wc_Sha384* sha384, word32 flags); - WOLFSSL_API int wc_Sha384GetFlags(wc_Sha384* sha384, word32* flags); -#endif - -#endif /* WOLFSSL_SHA384 */ - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_SHA512 || WOLFSSL_SHA384 */ -#endif /* WOLF_CRYPT_SHA512_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/signature.h b/client/wolfssl/wolfssl/wolfcrypt/signature.h deleted file mode 100644 index afaf2ec..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/signature.h +++ /dev/null @@ -1,87 +0,0 @@ -/* signature.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/signature.h -*/ - - -#ifndef WOLF_CRYPT_SIGNATURE_H -#define WOLF_CRYPT_SIGNATURE_H - -#include <wolfssl/wolfcrypt/types.h> -#include <wolfssl/wolfcrypt/hash.h> -#include <wolfssl/wolfcrypt/random.h> - -#ifdef __cplusplus - extern "C" { -#endif - -enum wc_SignatureType { - WC_SIGNATURE_TYPE_NONE = 0, - WC_SIGNATURE_TYPE_ECC = 1, - WC_SIGNATURE_TYPE_RSA = 2, - WC_SIGNATURE_TYPE_RSA_W_ENC = 3, /* Adds DER header via wc_EncodeSignature */ -}; - -WOLFSSL_API int wc_SignatureGetSize(enum wc_SignatureType sig_type, - const void* key, word32 key_len); - -WOLFSSL_API int wc_SignatureVerifyHash( - enum wc_HashType hash_type, enum wc_SignatureType sig_type, - const byte* hash_data, word32 hash_len, - const byte* sig, word32 sig_len, - const void* key, word32 key_len); - -WOLFSSL_API int wc_SignatureVerify( - enum wc_HashType hash_type, enum wc_SignatureType sig_type, - const byte* data, word32 data_len, - const byte* sig, word32 sig_len, - const void* key, word32 key_len); - -WOLFSSL_API int wc_SignatureGenerateHash( - enum wc_HashType hash_type, enum wc_SignatureType sig_type, - const byte* hash_data, word32 hash_len, - byte* sig, word32 *sig_len, - const void* key, word32 key_len, WC_RNG* rng); -WOLFSSL_API int wc_SignatureGenerateHash_ex( - enum wc_HashType hash_type, enum wc_SignatureType sig_type, - const byte* hash_data, word32 hash_len, - byte* sig, word32 *sig_len, - const void* key, word32 key_len, WC_RNG* rng, int verify); -WOLFSSL_API int wc_SignatureGenerate( - enum wc_HashType hash_type, enum wc_SignatureType sig_type, - const byte* data, word32 data_len, - byte* sig, word32 *sig_len, - const void* key, word32 key_len, - WC_RNG* rng); -WOLFSSL_API int wc_SignatureGenerate_ex( - enum wc_HashType hash_type, enum wc_SignatureType sig_type, - const byte* data, word32 data_len, - byte* sig, word32 *sig_len, - const void* key, word32 key_len, - WC_RNG* rng, int verify); - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLF_CRYPT_SIGNATURE_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/sp.h b/client/wolfssl/wolfssl/wolfcrypt/sp.h deleted file mode 100644 index e468a06..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/sp.h +++ /dev/null @@ -1,154 +0,0 @@ -/* sp.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLF_CRYPT_SP_H -#define WOLF_CRYPT_SP_H - -#include <wolfssl/wolfcrypt/types.h> - -#if defined(WOLFSSL_HAVE_SP_RSA) || defined(WOLFSSL_HAVE_SP_DH) || \ - defined(WOLFSSL_HAVE_SP_ECC) - -#include <stdint.h> - -#include <wolfssl/wolfcrypt/integer.h> -#include <wolfssl/wolfcrypt/sp_int.h> - -#include <wolfssl/wolfcrypt/ecc.h> - -#if defined(_MSC_VER) - #define SP_NOINLINE __declspec(noinline) -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__GNUC__) || defined(__KEIL__) - #define SP_NOINLINE __attribute__((noinline)) -#else - #define SP_NOINLINE -#endif - - -#ifdef __cplusplus - extern "C" { -#endif - -#ifdef WOLFSSL_HAVE_SP_RSA - -WOLFSSL_LOCAL int sp_RsaPublic_2048(const byte* in, word32 inLen, - mp_int* em, mp_int* mm, byte* out, word32* outLen); -WOLFSSL_LOCAL int sp_RsaPrivate_2048(const byte* in, word32 inLen, - mp_int* dm, mp_int* pm, mp_int* qm, mp_int* dpm, mp_int* dqm, mp_int* qim, - mp_int* mm, byte* out, word32* outLen); - -WOLFSSL_LOCAL int sp_RsaPublic_3072(const byte* in, word32 inLen, - mp_int* em, mp_int* mm, byte* out, word32* outLen); -WOLFSSL_LOCAL int sp_RsaPrivate_3072(const byte* in, word32 inLen, - mp_int* dm, mp_int* pm, mp_int* qm, mp_int* dpm, mp_int* dqm, mp_int* qim, - mp_int* mm, byte* out, word32* outLen); - -WOLFSSL_LOCAL int sp_RsaPublic_4096(const byte* in, word32 inLen, - mp_int* em, mp_int* mm, byte* out, word32* outLen); -WOLFSSL_LOCAL int sp_RsaPrivate_4096(const byte* in, word32 inLen, - mp_int* dm, mp_int* pm, mp_int* qm, mp_int* dpm, mp_int* dqm, mp_int* qim, - mp_int* mm, byte* out, word32* outLen); - -#endif /* WOLFSSL_HAVE_SP_RSA */ - -#if defined(WOLFSSL_HAVE_SP_DH) || defined(WOLFSSL_HAVE_SP_RSA) - -WOLFSSL_LOCAL int sp_ModExp_1024(mp_int* base, mp_int* exp, mp_int* mod, - mp_int* res); -WOLFSSL_LOCAL int sp_ModExp_1536(mp_int* base, mp_int* exp, mp_int* mod, - mp_int* res); -WOLFSSL_LOCAL int sp_ModExp_2048(mp_int* base, mp_int* exp, mp_int* mod, - mp_int* res); -WOLFSSL_LOCAL int sp_ModExp_3072(mp_int* base, mp_int* exp, mp_int* mod, - mp_int* res); -WOLFSSL_LOCAL int sp_ModExp_4096(mp_int* base, mp_int* exp, mp_int* mod, - mp_int* res); - -#endif - -#ifdef WOLFSSL_HAVE_SP_DH - -WOLFSSL_LOCAL int sp_DhExp_2048(mp_int* base, const byte* exp, word32 expLen, - mp_int* mod, byte* out, word32* outLen); -WOLFSSL_LOCAL int sp_DhExp_3072(mp_int* base, const byte* exp, word32 expLen, - mp_int* mod, byte* out, word32* outLen); -WOLFSSL_LOCAL int sp_DhExp_4096(mp_int* base, const byte* exp, word32 expLen, - mp_int* mod, byte* out, word32* outLen); - -#endif /* WOLFSSL_HAVE_SP_DH */ - -#ifdef WOLFSSL_HAVE_SP_ECC - -int sp_ecc_mulmod_256(mp_int* km, ecc_point* gm, ecc_point* rm, int map, - void* heap); -int sp_ecc_mulmod_base_256(mp_int* km, ecc_point* rm, int map, void* heap); - -int sp_ecc_make_key_256(WC_RNG* rng, mp_int* priv, ecc_point* pub, void* heap); -int sp_ecc_secret_gen_256(mp_int* priv, ecc_point* pub, byte* out, - word32* outlen, void* heap); -int sp_ecc_sign_256(const byte* hash, word32 hashLen, WC_RNG* rng, mp_int* priv, - mp_int* rm, mp_int* sm, mp_int* km, void* heap); -int sp_ecc_verify_256(const byte* hash, word32 hashLen, mp_int* pX, mp_int* pY, - mp_int* pZ, mp_int* r, mp_int* sm, int* res, void* heap); -int sp_ecc_is_point_256(mp_int* pX, mp_int* pY); -int sp_ecc_check_key_256(mp_int* pX, mp_int* pY, mp_int* privm, void* heap); -int sp_ecc_proj_add_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, - mp_int* qX, mp_int* qY, mp_int* qZ, - mp_int* rX, mp_int* rY, mp_int* rZ); -int sp_ecc_proj_dbl_point_256(mp_int* pX, mp_int* pY, mp_int* pZ, - mp_int* rX, mp_int* rY, mp_int* rZ); -int sp_ecc_map_256(mp_int* pX, mp_int* pY, mp_int* pZ); -int sp_ecc_uncompress_256(mp_int* xm, int odd, mp_int* ym); - - -int sp_ecc_mulmod_384(mp_int* km, ecc_point* gm, ecc_point* rm, int map, - void* heap); -int sp_ecc_mulmod_base_384(mp_int* km, ecc_point* rm, int map, void* heap); - -int sp_ecc_make_key_384(WC_RNG* rng, mp_int* priv, ecc_point* pub, void* heap); -int sp_ecc_secret_gen_384(mp_int* priv, ecc_point* pub, byte* out, - word32* outlen, void* heap); -int sp_ecc_sign_384(const byte* hash, word32 hashLen, WC_RNG* rng, mp_int* priv, - mp_int* rm, mp_int* sm, mp_int* km, void* heap); -int sp_ecc_verify_384(const byte* hash, word32 hashLen, mp_int* pX, mp_int* pY, - mp_int* pZ, mp_int* r, mp_int* sm, int* res, void* heap); -int sp_ecc_is_point_384(mp_int* pX, mp_int* pY); -int sp_ecc_check_key_384(mp_int* pX, mp_int* pY, mp_int* privm, void* heap); -int sp_ecc_proj_add_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, - mp_int* qX, mp_int* qY, mp_int* qZ, - mp_int* rX, mp_int* rY, mp_int* rZ); -int sp_ecc_proj_dbl_point_384(mp_int* pX, mp_int* pY, mp_int* pZ, - mp_int* rX, mp_int* rY, mp_int* rZ); -int sp_ecc_map_384(mp_int* pX, mp_int* pY, mp_int* pZ); -int sp_ecc_uncompress_384(mp_int* xm, int odd, mp_int* ym); - -#endif /*ifdef WOLFSSL_HAVE_SP_ECC */ - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_HAVE_SP_RSA || WOLFSSL_HAVE_SP_DH || WOLFSSL_HAVE_SP_ECC */ - -#endif /* WOLF_CRYPT_SP_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/sp_int.h b/client/wolfssl/wolfssl/wolfcrypt/sp_int.h deleted file mode 100644 index df96395..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/sp_int.h +++ /dev/null @@ -1,287 +0,0 @@ -/* sp_int.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -#ifndef WOLF_CRYPT_SP_INT_H -#define WOLF_CRYPT_SP_INT_H - -#include <stdint.h> -#include <limits.h> - -/* Make sure WOLFSSL_SP_ASM build option defined when requested */ -#if !defined(WOLFSSL_SP_ASM) && ( \ - defined(WOLFSSL_SP_X86_64_ASM) || defined(WOLFSSL_SP_ARM32_ASM) || \ - defined(WOLFSSL_SP_ARM64_ASM) || defined(WOLFSSL_SP_ARM_THUMB_ASM) || \ - defined(WOLFSSL_SP_ARM_CORTEX_M_ASM)) - #define WOLFSSL_SP_ASM -#endif - - -#ifdef WOLFSSL_SP_X86_64_ASM - #define SP_WORD_SIZE 64 - - #define HAVE_INTEL_AVX1 - #define HAVE_INTEL_AVX2 -#elif defined(WOLFSSL_SP_ARM64_ASM) - #define SP_WORD_SIZE 64 -#elif defined(WOLFSSL_SP_ARM32_ASM) - #define SP_WORD_SIZE 32 -#elif defined(WOLFSSL_SP_ARM_THUMB_ASM) - #define SP_WORD_SIZE 32 -#endif - -#ifndef SP_WORD_SIZE - #if defined(NO_64BIT) || !defined(HAVE___UINT128_T) - #define SP_WORD_SIZE 32 - #else - #define SP_WORD_SIZE 64 - #endif -#endif - -#ifdef WOLFSSL_DSP_BUILD - typedef int32 sp_digit; - typedef uint32 sp_int_digit; - typedef uint64 sp_int_word; - #undef SP_WORD_SIZE - #define SP_WORD_SIZE 32 -#elif !defined(WOLFSSL_SP_ASM) - #if SP_WORD_SIZE == 32 - typedef int32_t sp_digit; - typedef uint32_t sp_int_digit; - typedef uint64_t sp_int_word; - #elif SP_WORD_SIZE == 64 - typedef int64_t sp_digit; - typedef uint64_t sp_int_digit; - #ifdef __SIZEOF_INT128__ - typedef __uint128_t uint128_t; - typedef __int128_t int128_t; - #else - typedef unsigned long uint128_t __attribute__ ((mode(TI))); - typedef long int128_t __attribute__ ((mode(TI))); - #endif - typedef uint128_t sp_int_word; - #else - #error Word size not defined - #endif -#else - #if SP_WORD_SIZE == 32 - typedef uint32_t sp_digit; - typedef uint32_t sp_int_digit; - typedef uint64_t sp_int_word; - #elif SP_WORD_SIZE == 64 - typedef uint64_t sp_digit; - typedef uint64_t sp_int_digit; - #ifdef __SIZEOF_INT128__ - typedef __uint128_t uint128_t; - typedef __int128_t int128_t; - #else - typedef unsigned long uint128_t __attribute__ ((mode(TI))); - typedef long int128_t __attribute__ ((mode(TI))); - #endif - typedef uint128_t sp_int_word; - #else - #error Word size not defined - #endif -#endif - -#define SP_MASK (sp_digit)(-1) - -#ifdef WOLFSSL_SP_MATH -#include <wolfssl/wolfcrypt/random.h> - -#if !defined(WOLFSSL_HAVE_SP_RSA) && !defined(WOLFSSL_HAVE_SP_DH) - #if !defined(NO_PWDBASED) && defined(WOLFSSL_SHA512) - #define SP_INT_DIGITS ((512 + SP_WORD_SIZE) / SP_WORD_SIZE) - #elif defined(WOLFSSL_SP_384) - #define SP_INT_DIGITS ((384 + SP_WORD_SIZE) / SP_WORD_SIZE) - #else - #define SP_INT_DIGITS ((256 + SP_WORD_SIZE) / SP_WORD_SIZE) - #endif -#elif defined(WOLFSSL_SP_4096) - #if defined(WOLFSSL_HAVE_SP_DH) - #define SP_INT_DIGITS ((8192 + SP_WORD_SIZE) / SP_WORD_SIZE) - #else - #define SP_INT_DIGITS ((4096 + SP_WORD_SIZE) / SP_WORD_SIZE) - #endif -#elif !defined(WOLFSSL_SP_NO_3072) - #if defined(WOLFSSL_HAVE_SP_DH) - #define SP_INT_DIGITS ((6144 + SP_WORD_SIZE) / SP_WORD_SIZE) - #else - #define SP_INT_DIGITS ((3072 + SP_WORD_SIZE) / SP_WORD_SIZE) - #endif -#else - #if defined(WOLFSSL_HAVE_SP_DH) - #define SP_INT_DIGITS ((4096 + SP_WORD_SIZE) / SP_WORD_SIZE) - #else - #define SP_INT_DIGITS ((2048 + SP_WORD_SIZE) / SP_WORD_SIZE) - #endif -#endif - -#define sp_isodd(a) ((a)->used != 0 && ((a)->dp[0] & 1)) -#define sp_iseven(a) ((a)->used != 0 && ((a)->dp[0] & 1) == 0) -#define sp_iszero(a) ((a)->used == 0) -#define sp_isone(a) ((a)->used == 1 && (a)->dp[0] == 1) -#define sp_abs(a, b) sp_copy(a, b) - -#ifdef HAVE_WOLF_BIGINT - /* raw big integer */ - typedef struct WC_BIGINT { - byte* buf; - word32 len; - void* heap; - } WC_BIGINT; - #define WOLF_BIGINT_DEFINED -#endif - -typedef struct sp_int { - int used; - int size; - sp_int_digit dp[SP_INT_DIGITS]; -#ifdef HAVE_WOLF_BIGINT - struct WC_BIGINT raw; /* unsigned binary (big endian) */ -#endif -} sp_int; - -typedef sp_int mp_int; -typedef sp_int_digit mp_digit; - -#include <wolfssl/wolfcrypt/wolfmath.h> - - -MP_API int sp_init(sp_int* a); -MP_API int sp_init_multi(sp_int* a, sp_int* b, sp_int* c, sp_int* d, - sp_int* e, sp_int* f); -MP_API void sp_clear(sp_int* a); -MP_API int sp_unsigned_bin_size(sp_int* a); -MP_API int sp_read_unsigned_bin(sp_int* a, const byte* in, int inSz); -MP_API int sp_read_radix(sp_int* a, const char* in, int radix); -MP_API int sp_cmp(sp_int* a, sp_int* b); -MP_API int sp_count_bits(sp_int* a); -MP_API int sp_leading_bit(sp_int* a); -MP_API int sp_to_unsigned_bin(sp_int* a, byte* out); -MP_API int sp_to_unsigned_bin_len(sp_int* a, byte* out, int outSz); -MP_API void sp_forcezero(sp_int* a); -MP_API int sp_copy(sp_int* a, sp_int* r); -MP_API int sp_set(sp_int* a, sp_int_digit d); -MP_API void sp_clamp(sp_int* a); -MP_API int sp_grow(sp_int* a, int l); -MP_API int sp_sub_d(sp_int* a, sp_int_digit d, sp_int* r); -MP_API int sp_cmp_d(sp_int* a, sp_int_digit d); -MP_API int sp_sub(sp_int* a, sp_int* b, sp_int* r); -MP_API int sp_mod(sp_int* a, sp_int* m, sp_int* r); -MP_API void sp_zero(sp_int* a); -MP_API int sp_add_d(sp_int* a, sp_int_digit d, sp_int* r); -MP_API int sp_lshd(sp_int* a, int s); -MP_API int sp_add(sp_int* a, sp_int* b, sp_int* r); -MP_API int sp_set_int(sp_int* a, unsigned long b); -MP_API int sp_tohex(sp_int* a, char* str); -MP_API int sp_set_bit(sp_int* a, int i); -MP_API int sp_2expt(sp_int* a, int e); -MP_API int sp_rand_prime(sp_int* r, int len, WC_RNG* rng, void* heap); -MP_API int sp_mul(sp_int* a, sp_int* b, sp_int* r); -MP_API int sp_mulmod(sp_int* a, sp_int* b, sp_int* m, sp_int* r); -MP_API int sp_gcd(sp_int* a, sp_int* b, sp_int* r); -MP_API int sp_invmod(sp_int* a, sp_int* m, sp_int* r); -MP_API int sp_lcm(sp_int* a, sp_int* b, sp_int* r); -MP_API int sp_exptmod(sp_int* b, sp_int* e, sp_int* m, sp_int* r); -MP_API int sp_prime_is_prime(mp_int* a, int t, int* result); -MP_API int sp_prime_is_prime_ex(mp_int* a, int t, int* result, WC_RNG* rng); -MP_API int sp_exch(sp_int* a, sp_int* b); -MP_API int sp_get_digit_count(sp_int *a); -MP_API int sp_init_copy (sp_int * a, sp_int * b); -MP_API void sp_rshb(sp_int* a, int n, sp_int* r); -MP_API int sp_mul_d(sp_int* a, sp_int_digit n, sp_int* r); - - -#define MP_OKAY 0 -#define MP_NO 0 -#define MP_YES 1 - -#define MP_RADIX_HEX 16 - -#define MP_GT 1 -#define MP_EQ 0 -#define MP_LT -1 - -#define MP_MEM -2 -#define MP_VAL -3 - -#define DIGIT_BIT SP_WORD_SIZE -#define MP_MASK SP_MASK - -#define CheckFastMathSettings() 1 - -#define mp_free(a) - -#define mp_isodd sp_isodd -#define mp_iseven sp_iseven -#define mp_iszero sp_iszero -#define mp_isone sp_isone -#define mp_abs sp_abs - -#define mp_init sp_init -#define mp_init_multi sp_init_multi -#define mp_clear sp_clear -#define mp_read_unsigned_bin sp_read_unsigned_bin -#define mp_unsigned_bin_size sp_unsigned_bin_size -#define mp_read_radix sp_read_radix -#define mp_cmp sp_cmp -#define mp_count_bits sp_count_bits -#define mp_leading_bit sp_leading_bit -#define mp_to_unsigned_bin sp_to_unsigned_bin -#define mp_to_unsigned_bin_len sp_to_unsigned_bin_len -#define mp_forcezero sp_forcezero -#define mp_copy sp_copy -#define mp_set sp_set -#define mp_clamp sp_clamp -#define mp_grow sp_grow -#define mp_sub_d sp_sub_d -#define mp_cmp_d sp_cmp_d -#define mp_sub sp_sub -#define mp_mod sp_mod -#define mp_zero sp_zero -#define mp_add_d sp_add_d -#define mp_lshd sp_lshd -#define mp_add sp_add -#define mp_set_int sp_set_int -#define mp_tohex sp_tohex -#define mp_set_bit sp_set_bit -#define mp_2expt sp_2expt -#define mp_rand_prime sp_rand_prime -#define mp_mul sp_mul -#define mp_mulmod sp_mulmod -#define mp_gcd sp_gcd -#define mp_invmod sp_invmod -#define mp_lcm sp_lcm -#define mp_exptmod sp_exptmod -#define mp_exptmod_nct sp_exptmod -#define mp_prime_is_prime sp_prime_is_prime -#define mp_prime_is_prime_ex sp_prime_is_prime_ex -#define mp_exch sp_exch -#define get_digit_count sp_get_digit_count -#define mp_init_copy sp_init_copy -#define mp_rshb(A,x) sp_rshb(A,x,A) -#define mp_mul_d sp_mul_d - -#endif - -#endif /* WOLF_CRYPT_SP_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/srp.h b/client/wolfssl/wolfssl/wolfcrypt/srp.h deleted file mode 100644 index 94f198d..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/srp.h +++ /dev/null @@ -1,311 +0,0 @@ -/* srp.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/srp.h -*/ - -#ifdef WOLFCRYPT_HAVE_SRP - -#ifndef WOLFCRYPT_SRP_H -#define WOLFCRYPT_SRP_H - -#include <wolfssl/wolfcrypt/types.h> -#include <wolfssl/wolfcrypt/sha.h> -#include <wolfssl/wolfcrypt/sha256.h> -#include <wolfssl/wolfcrypt/sha512.h> -#include <wolfssl/wolfcrypt/integer.h> - -#ifdef __cplusplus - extern "C" { -#endif - -/* Select the largest available hash for the buffer size. */ -#if defined(WOLFSSL_SHA512) - #define SRP_MAX_DIGEST_SIZE WC_SHA512_DIGEST_SIZE -#elif defined(WOLFSSL_SHA384) - #define SRP_MAX_DIGEST_SIZE WC_SHA384_DIGEST_SIZE -#elif !defined(NO_SHA256) - #define SRP_MAX_DIGEST_SIZE WC_SHA256_DIGEST_SIZE -#elif !defined(NO_SHA) - #define SRP_MAX_DIGEST_SIZE WC_SHA_DIGEST_SIZE -#else - #error "You have to have some kind of SHA hash if you want to use SRP." -#endif - -/* Set the minimum number of bits acceptable in an SRP modulus */ -#define SRP_MODULUS_MIN_BITS 512 - -/* Set the minimum number of bits acceptable for private keys (RFC 5054) */ -#define SRP_PRIVATE_KEY_MIN_BITS 256 - -/* salt size for SRP password */ -#define SRP_SALT_SIZE 16 - -/** - * SRP side, client or server. - */ -typedef enum { - SRP_CLIENT_SIDE = 0, - SRP_SERVER_SIDE = 1, -} SrpSide; - -/** - * SRP hash type, SHA[1|256|384|512]. - */ -typedef enum { - SRP_TYPE_SHA = 1, - SRP_TYPE_SHA256 = 2, - SRP_TYPE_SHA384 = 3, - SRP_TYPE_SHA512 = 4, -} SrpType; - - -/** - * SRP hash struct. - */ -typedef struct { - byte type; - union { - #ifndef NO_SHA - wc_Sha sha; - #endif - #ifndef NO_SHA256 - wc_Sha256 sha256; - #endif - #ifdef WOLFSSL_SHA384 - wc_Sha384 sha384; - #endif - #ifdef WOLFSSL_SHA512 - wc_Sha512 sha512; - #endif - } data; -} SrpHash; - -typedef struct Srp { - SrpSide side; /**< Client or Server, @see SrpSide. */ - SrpType type; /**< Hash type, @see SrpType. */ - byte* user; /**< Username, login. */ - word32 userSz; /**< Username length. */ - byte* salt; /**< Small salt. */ - word32 saltSz; /**< Salt length. */ - mp_int N; /**< Modulus. N = 2q+1, [q, N] are primes.*/ - mp_int g; /**< Generator. A generator modulo N. */ - byte k[SRP_MAX_DIGEST_SIZE]; /**< Multiplier parameter. k = H(N, g) */ - mp_int auth; /**< Client: x = H(salt + H(user:pswd)) */ - /**< Server: v = g ^ x % N */ - mp_int priv; /**< Private ephemeral value. */ - SrpHash client_proof; /**< Client proof. Sent to the Server. */ - SrpHash server_proof; /**< Server proof. Sent to the Client. */ - byte* key; /**< Session key. */ - word32 keySz; /**< Session key length. */ - int (*keyGenFunc_cb) (struct Srp* srp, byte* secret, word32 size); - /**< Function responsible for generating the session key. */ - /**< It MUST use XMALLOC with type DYNAMIC_TYPE_SRP to allocate the */ - /**< key buffer for this structure and set keySz to the buffer size. */ - /**< The default function used by this implementation is a modified */ - /**< version of t_mgf1 that uses the proper hash function according */ - /**< to srp->type. */ - void* heap; /**< heap hint pointer */ -} Srp; - -/** - * Initializes the Srp struct for usage. - * - * @param[out] srp the Srp structure to be initialized. - * @param[in] type the hash type to be used. - * @param[in] side the side of the communication. - * - * @return 0 on success, {@literal <} 0 on error. @see error-crypt.h - */ -WOLFSSL_API int wc_SrpInit(Srp* srp, SrpType type, SrpSide side); - -/** - * Releases the Srp struct resources after usage. - * - * @param[in,out] srp the Srp structure to be terminated. - */ -WOLFSSL_API void wc_SrpTerm(Srp* srp); - -/** - * Sets the username. - * - * This function MUST be called after wc_SrpInit. - * - * @param[in,out] srp the Srp structure. - * @param[in] username the buffer containing the username. - * @param[in] size the username size in bytes - * - * @return 0 on success, {@literal <} 0 on error. @see error-crypt.h - */ -WOLFSSL_API int wc_SrpSetUsername(Srp* srp, const byte* username, word32 size); - - -/** - * Sets the srp parameters based on the username. - * - * This function MUST be called after wc_SrpSetUsername. - * - * @param[in,out] srp the Srp structure. - * @param[in] N the Modulus. N = 2q+1, [q, N] are primes. - * @param[in] nSz the N size in bytes. - * @param[in] g the Generator modulo N. - * @param[in] gSz the g size in bytes - * @param[in] salt a small random salt. Specific for each username. - * @param[in] saltSz the salt size in bytes - * - * @return 0 on success, {@literal <} 0 on error. @see error-crypt.h - */ -WOLFSSL_API int wc_SrpSetParams(Srp* srp, const byte* N, word32 nSz, - const byte* g, word32 gSz, - const byte* salt, word32 saltSz); - -/** - * Sets the password. - * - * Setting the password does not persists the clear password data in the - * srp structure. The client calculates x = H(salt + H(user:pswd)) and stores - * it in the auth field. - * - * This function MUST be called after wc_SrpSetParams and is CLIENT SIDE ONLY. - * - * @param[in,out] srp the Srp structure. - * @param[in] password the buffer containing the password. - * @param[in] size the password size in bytes. - * - * @return 0 on success, {@literal <} 0 on error. @see error-crypt.h - */ -WOLFSSL_API int wc_SrpSetPassword(Srp* srp, const byte* password, word32 size); - -/** - * Sets the verifier. - * - * This function MUST be called after wc_SrpSetParams and is SERVER SIDE ONLY. - * - * @param[in,out] srp the Srp structure. - * @param[in] verifier the buffer containing the verifier. - * @param[in] size the verifier size in bytes. - * - * @return 0 on success, {@literal <} 0 on error. @see error-crypt.h - */ -WOLFSSL_API int wc_SrpSetVerifier(Srp* srp, const byte* verifier, word32 size); - -/** - * Gets the verifier. - * - * The client calculates the verifier with v = g ^ x % N. - * This function MAY be called after wc_SrpSetPassword and is CLIENT SIDE ONLY. - * - * @param[in,out] srp the Srp structure. - * @param[out] verifier the buffer to write the verifier. - * @param[in,out] size the buffer size in bytes. Will be updated with the - * verifier size. - * - * @return 0 on success, {@literal <} 0 on error. @see error-crypt.h - */ -WOLFSSL_API int wc_SrpGetVerifier(Srp* srp, byte* verifier, word32* size); - -/** - * Sets the private ephemeral value. - * - * The private ephemeral value is known as: - * a at the client side. a = random() - * b at the server side. b = random() - * This function is handy for unit test cases or if the developer wants to use - * an external random source to set the ephemeral value. - * This function MAY be called before wc_SrpGetPublic. - * - * @param[in,out] srp the Srp structure. - * @param[in] priv the ephemeral value. - * @param[in] size the private size in bytes. - * - * @return 0 on success, {@literal <} 0 on error. @see error-crypt.h - */ -WOLFSSL_API int wc_SrpSetPrivate(Srp* srp, const byte* priv, word32 size); - -/** - * Gets the public ephemeral value. - * - * The public ephemeral value is known as: - * A at the client side. A = g ^ a % N - * B at the server side. B = (k * v + (g ˆ b % N)) % N - * This function MUST be called after wc_SrpSetPassword or wc_SrpSetVerifier. - * - * @param[in,out] srp the Srp structure. - * @param[out] pub the buffer to write the public ephemeral value. - * @param[in,out] size the the buffer size in bytes. Will be updated with - * the ephemeral value size. - * - * @return 0 on success, {@literal <} 0 on error. @see error-crypt.h - */ -WOLFSSL_API int wc_SrpGetPublic(Srp* srp, byte* pub, word32* size); - - -/** - * Computes the session key. - * - * The key can be accessed at srp->key after success. - * - * @param[in,out] srp the Srp structure. - * @param[in] clientPubKey the client's public ephemeral value. - * @param[in] clientPubKeySz the client's public ephemeral value size. - * @param[in] serverPubKey the server's public ephemeral value. - * @param[in] serverPubKeySz the server's public ephemeral value size. - * - * @return 0 on success, {@literal <} 0 on error. @see error-crypt.h - */ -WOLFSSL_API int wc_SrpComputeKey(Srp* srp, - byte* clientPubKey, word32 clientPubKeySz, - byte* serverPubKey, word32 serverPubKeySz); - -/** - * Gets the proof. - * - * This function MUST be called after wc_SrpComputeKey. - * - * @param[in,out] srp the Srp structure. - * @param[out] proof the buffer to write the proof. - * @param[in,out] size the buffer size in bytes. Will be updated with the - * proof size. - * - * @return 0 on success, {@literal <} 0 on error. @see error-crypt.h - */ -WOLFSSL_API int wc_SrpGetProof(Srp* srp, byte* proof, word32* size); - -/** - * Verifies the peers proof. - * - * This function MUST be called before wc_SrpGetSessionKey. - * - * @param[in,out] srp the Srp structure. - * @param[in] proof the peers proof. - * @param[in] size the proof size in bytes. - * - * @return 0 on success, {@literal <} 0 on error. @see error-crypt.h - */ -WOLFSSL_API int wc_SrpVerifyPeersProof(Srp* srp, byte* proof, word32 size); - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFCRYPT_SRP_H */ -#endif /* WOLFCRYPT_HAVE_SRP */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/tfm.h b/client/wolfssl/wolfssl/wolfcrypt/tfm.h deleted file mode 100644 index b11c7f5..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/tfm.h +++ /dev/null @@ -1,839 +0,0 @@ -/* tfm.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - - -/* - * Based on public domain TomsFastMath 0.10 by Tom St Denis, [email protected], - * http://math.libtomcrypt.com - */ - - -/** - * Edited by Moises Guimaraes ([email protected]) - * to fit CyaSSL's needs. - */ - -/*! - \file wolfssl/wolfcrypt/tfm.h -*/ - -#ifndef WOLF_CRYPT_TFM_H -#define WOLF_CRYPT_TFM_H - -#include <wolfssl/wolfcrypt/types.h> -#ifndef CHAR_BIT - #include <limits.h> -#endif - -#include <wolfssl/wolfcrypt/random.h> - -#ifdef __cplusplus - extern "C" { -#endif - -#ifdef WOLFSSL_NO_ASM - #undef TFM_NO_ASM - #define TFM_NO_ASM -#endif - -#ifdef NO_64BIT - #undef NO_TFM_64BIT - #define NO_TFM_64BIT -#endif - -#ifndef NO_TFM_64BIT -/* autodetect x86-64 and make sure we are using 64-bit digits with x86-64 asm */ -#if defined(__x86_64__) - #if defined(TFM_X86) || defined(TFM_SSE2) || defined(TFM_ARM) - #error x86-64 detected, x86-32/SSE2/ARM optimizations are not valid! - #endif - #if !defined(TFM_X86_64) && !defined(TFM_NO_ASM) - #define TFM_X86_64 - #endif -#endif -#if defined(TFM_X86_64) - #if !defined(FP_64BIT) - #define FP_64BIT - #endif -#endif -/* use 64-bit digit even if not using asm on x86_64 */ -#if defined(__x86_64__) && !defined(FP_64BIT) - #define FP_64BIT -#endif -/* if intel compiler doesn't provide 128 bit type don't turn on 64bit */ -#if defined(FP_64BIT) && defined(__INTEL_COMPILER) && !defined(HAVE___UINT128_T) - #undef FP_64BIT - #undef TFM_X86_64 -#endif -#endif /* NO_TFM_64BIT */ - -/* try to detect x86-32 */ -#if defined(__i386__) && !defined(TFM_SSE2) - #if defined(TFM_X86_64) || defined(TFM_ARM) - #error x86-32 detected, x86-64/ARM optimizations are not valid! - #endif - #if !defined(TFM_X86) && !defined(TFM_NO_ASM) - #define TFM_X86 - #endif -#endif - -/* make sure we're 32-bit for x86-32/sse/arm/ppc32 */ -#if (defined(TFM_X86) || defined(TFM_SSE2) || defined(TFM_ARM) || defined(TFM_PPC32)) && defined(FP_64BIT) - #warning x86-32, SSE2 and ARM, PPC32 optimizations require 32-bit digits (undefining) - #undef FP_64BIT -#endif - -/* multi asms? */ -#ifdef TFM_X86 - #define TFM_ASM -#endif -#ifdef TFM_X86_64 - #ifdef TFM_ASM - #error TFM_ASM already defined! - #endif - #define TFM_ASM -#endif -#ifdef TFM_SSE2 - #ifdef TFM_ASM - #error TFM_ASM already defined! - #endif - #define TFM_ASM -#endif -#ifdef TFM_ARM - #ifdef TFM_ASM - #error TFM_ASM already defined! - #endif - #define TFM_ASM -#endif -#ifdef TFM_PPC32 - #ifdef TFM_ASM - #error TFM_ASM already defined! - #endif - #define TFM_ASM -#endif -#ifdef TFM_PPC64 - #ifdef TFM_ASM - #error TFM_ASM already defined! - #endif - #define TFM_ASM -#endif -#ifdef TFM_AVR32 - #ifdef TFM_ASM - #error TFM_ASM already defined! - #endif - #define TFM_ASM -#endif - -/* we want no asm? */ -#ifdef TFM_NO_ASM - #undef TFM_X86 - #undef TFM_X86_64 - #undef TFM_SSE2 - #undef TFM_ARM - #undef TFM_PPC32 - #undef TFM_PPC64 - #undef TFM_AVR32 - #undef TFM_ASM -#endif - -/* ECC helpers */ -#ifdef TFM_ECC192 - #ifdef FP_64BIT - #define TFM_MUL3 - #define TFM_SQR3 - #else - #define TFM_MUL6 - #define TFM_SQR6 - #endif -#endif - -#ifdef TFM_ECC224 - #ifdef FP_64BIT - #define TFM_MUL4 - #define TFM_SQR4 - #else - #define TFM_MUL7 - #define TFM_SQR7 - #endif -#endif - -#ifdef TFM_ECC256 - #ifdef FP_64BIT - #define TFM_MUL4 - #define TFM_SQR4 - #else - #define TFM_MUL8 - #define TFM_SQR8 - #endif -#endif - -#ifdef TFM_ECC384 - #ifdef FP_64BIT - #define TFM_MUL6 - #define TFM_SQR6 - #else - #define TFM_MUL12 - #define TFM_SQR12 - #endif -#endif - -#ifdef TFM_ECC521 - #ifdef FP_64BIT - #define TFM_MUL9 - #define TFM_SQR9 - #else - #define TFM_MUL17 - #define TFM_SQR17 - #endif -#endif - - -/* allow user to define on fp_digit, fp_word types */ -#ifndef WOLFSSL_BIGINT_TYPES - -/* some default configurations. - */ -#if defined(WC_16BIT_CPU) - typedef unsigned int fp_digit; - #define SIZEOF_FP_DIGIT 2 - typedef unsigned long fp_word; -#elif defined(FP_64BIT) - /* for GCC only on supported platforms */ - typedef unsigned long long fp_digit; /* 64bit, 128 uses mode(TI) below */ - #define SIZEOF_FP_DIGIT 8 - typedef unsigned long fp_word __attribute__ ((mode(TI))); -#else - - #ifndef NO_TFM_64BIT - #if defined(_MSC_VER) || defined(__BORLANDC__) - typedef unsigned __int64 ulong64; - #else - typedef unsigned long long ulong64; - #endif - typedef unsigned int fp_digit; - #define SIZEOF_FP_DIGIT 4 - typedef ulong64 fp_word; - #define FP_32BIT - #else - /* some procs like coldfire prefer not to place multiply into 64bit type - even though it exists */ - typedef unsigned short fp_digit; - #define SIZEOF_FP_DIGIT 2 - typedef unsigned int fp_word; - #endif -#endif - -#endif /* WOLFSSL_BIGINT_TYPES */ - - -/* # of digits this is */ -#define DIGIT_BIT ((CHAR_BIT) * SIZEOF_FP_DIGIT) - -/* Max size of any number in bits. Basically the largest size you will be - * multiplying should be half [or smaller] of FP_MAX_SIZE-four_digit - * - * It defaults to 4096-bits [allowing multiplications up to 2048x2048 bits ] - */ - - -#ifndef FP_MAX_BITS - #define FP_MAX_BITS 4096 -#endif -#ifdef WOLFSSL_OPENSSH - /* OpenSSH uses some BIG primes so we need to accommodate for that */ - #undef FP_MAX_BITS - #define FP_MAX_BITS 16384 -#endif -#define FP_MAX_SIZE (FP_MAX_BITS+(8*DIGIT_BIT)) - -/* will this lib work? */ -#if (CHAR_BIT & 7) - #error CHAR_BIT must be a multiple of eight. -#endif -#if FP_MAX_BITS % CHAR_BIT - #error FP_MAX_BITS must be a multiple of CHAR_BIT -#endif - -#define FP_MASK (fp_digit)(-1) -#define FP_DIGIT_MAX FP_MASK -#define FP_SIZE (FP_MAX_SIZE/DIGIT_BIT) - -#define FP_MAX_PRIME_SIZE (FP_MAX_BITS/(2*CHAR_BIT)) -/* In terms of FP_MAX_BITS, it is double the size possible for a number - * to allow for multiplication, divide that 2 out. Also divide by CHAR_BIT - * to convert from bits to bytes. (Note, FP_PRIME_SIZE is the number of - * values in the canned prime number list.) */ - -/* signs */ -#define FP_ZPOS 0 -#define FP_NEG 1 - -/* return codes */ -#define FP_OKAY 0 -#define FP_VAL -1 -#define FP_MEM -2 -#define FP_NOT_INF -3 -#define FP_WOULDBLOCK -4 - -/* equalities */ -#define FP_LT -1 /* less than */ -#define FP_EQ 0 /* equal to */ -#define FP_GT 1 /* greater than */ - -/* replies */ -#define FP_YES 1 /* yes response */ -#define FP_NO 0 /* no response */ - -#ifdef HAVE_WOLF_BIGINT - /* raw big integer */ - typedef struct WC_BIGINT { - byte* buf; - word32 len; - void* heap; - } WC_BIGINT; - #define WOLF_BIGINT_DEFINED -#endif - -/* a FP type */ -typedef struct fp_int { - int used; - int sign; -#if defined(ALT_ECC_SIZE) || defined(HAVE_WOLF_BIGINT) - int size; -#endif - fp_digit dp[FP_SIZE]; - -#ifdef HAVE_WOLF_BIGINT - struct WC_BIGINT raw; /* unsigned binary (big endian) */ -#endif -} fp_int; - -/* Types */ -typedef fp_digit mp_digit; -typedef fp_word mp_word; -typedef fp_int mp_int; - - -/* wolf big int and common functions */ -#include <wolfssl/wolfcrypt/wolfmath.h> - - -/* externally define this symbol to ignore the default settings, useful for changing the build from the make process */ -#ifndef TFM_ALREADY_SET - -/* do we want the large set of small multiplications ? - Enable these if you are going to be doing a lot of small (<= 16 digit) multiplications say in ECC - Or if you're on a 64-bit machine doing RSA as a 1024-bit integer == 16 digits ;-) - */ -/* need to refactor the function */ -/*#define TFM_SMALL_SET */ - -/* do we want huge code - Enable these if you are doing 20, 24, 28, 32, 48, 64 digit multiplications (useful for RSA) - Less important on 64-bit machines as 32 digits == 2048 bits - */ -#if 0 -#define TFM_MUL3 -#define TFM_MUL4 -#define TFM_MUL6 -#define TFM_MUL7 -#define TFM_MUL8 -#define TFM_MUL9 -#define TFM_MUL12 -#define TFM_MUL17 -#endif -#ifdef TFM_HUGE_SET -#define TFM_MUL20 -#define TFM_MUL24 -#define TFM_MUL28 -#define TFM_MUL32 -#if (FP_MAX_BITS >= 6144) && defined(FP_64BIT) - #define TFM_MUL48 -#endif -#if (FP_MAX_BITS >= 8192) && defined(FP_64BIT) - #define TFM_MUL64 -#endif -#endif - -#if 0 -#define TFM_SQR3 -#define TFM_SQR4 -#define TFM_SQR6 -#define TFM_SQR7 -#define TFM_SQR8 -#define TFM_SQR9 -#define TFM_SQR12 -#define TFM_SQR17 -#endif -#ifdef TFM_HUGE_SET -#define TFM_SQR20 -#define TFM_SQR24 -#define TFM_SQR28 -#define TFM_SQR32 -#define TFM_SQR48 -#define TFM_SQR64 -#endif - -/* Optional math checks (enable WOLFSSL_DEBUG_MATH to print info) */ -/* #define TFM_CHECK */ - -/* Is the target a P4 Prescott - */ -/* #define TFM_PRESCOTT */ - -/* Do we want timing resistant fp_exptmod() ? - * This makes it slower but also timing invariant with respect to the exponent - */ -/* #define TFM_TIMING_RESISTANT */ - -#endif /* TFM_ALREADY_SET */ - -/* functions */ - -/* returns a TFM ident string useful for debugging... */ -/*const char *fp_ident(void);*/ - -/* initialize [or zero] an fp int */ -void fp_init(fp_int *a); -MP_API void fp_zero(fp_int *a); -MP_API void fp_clear(fp_int *a); /* uses ForceZero to clear sensitive memory */ -MP_API void fp_forcezero (fp_int * a); -MP_API void fp_free(fp_int* a); - -/* zero/one/even/odd/neg/word ? */ -#define fp_iszero(a) (((a)->used == 0) ? FP_YES : FP_NO) -#define fp_isone(a) \ - ((((a)->used == 1) && ((a)->dp[0] == 1)) ? FP_YES : FP_NO) -#define fp_iseven(a) (((a)->used > 0 && (((a)->dp[0] & 1) == 0)) ? FP_YES : FP_NO) -#define fp_isodd(a) (((a)->used > 0 && (((a)->dp[0] & 1) == 1)) ? FP_YES : FP_NO) -#define fp_isneg(a) (((a)->sign != 0) ? FP_YES : FP_NO) -#define fp_isword(a, w) \ - ((((a)->used == 1) && ((a)->dp[0] == w)) || ((w == 0) && ((a)->used == 0)) \ - ? FP_YES : FP_NO) - -/* set to a small digit */ -void fp_set(fp_int *a, fp_digit b); -void fp_set_int(fp_int *a, unsigned long b); - -/* check if a bit is set */ -int fp_is_bit_set(fp_int *a, fp_digit b); -/* set the b bit to 1 */ -int fp_set_bit (fp_int * a, fp_digit b); - -/* copy from a to b */ -void fp_copy(fp_int *a, fp_int *b); -void fp_init_copy(fp_int *a, fp_int *b); - -/* clamp digits */ -#define fp_clamp(a) { while ((a)->used && (a)->dp[(a)->used-1] == 0) --((a)->used); (a)->sign = (a)->used ? (a)->sign : FP_ZPOS; } -#define mp_clamp(a) fp_clamp(a) -#define mp_grow(a,s) MP_OKAY - -/* negate and absolute */ -#define fp_neg(a, b) { fp_copy(a, b); (b)->sign ^= 1; fp_clamp(b); } -#define fp_abs(a, b) { fp_copy(a, b); (b)->sign = 0; } - -/* right shift x digits */ -void fp_rshd(fp_int *a, int x); - -/* right shift x bits */ -void fp_rshb(fp_int *a, int x); - -/* left shift x digits */ -void fp_lshd(fp_int *a, int x); - -/* signed comparison */ -int fp_cmp(fp_int *a, fp_int *b); - -/* unsigned comparison */ -int fp_cmp_mag(fp_int *a, fp_int *b); - -/* power of 2 operations */ -void fp_div_2d(fp_int *a, int b, fp_int *c, fp_int *d); -void fp_mod_2d(fp_int *a, int b, fp_int *c); -void fp_mul_2d(fp_int *a, int b, fp_int *c); -void fp_2expt (fp_int *a, int b); -void fp_mul_2(fp_int *a, fp_int *c); -void fp_div_2(fp_int *a, fp_int *c); - -/* Counts the number of lsbs which are zero before the first zero bit */ -int fp_cnt_lsb(fp_int *a); - -/* c = a + b */ -void fp_add(fp_int *a, fp_int *b, fp_int *c); - -/* c = a - b */ -void fp_sub(fp_int *a, fp_int *b, fp_int *c); - -/* c = a * b */ -int fp_mul(fp_int *a, fp_int *b, fp_int *c); - -/* b = a*a */ -int fp_sqr(fp_int *a, fp_int *b); - -/* a/b => cb + d == a */ -int fp_div(fp_int *a, fp_int *b, fp_int *c, fp_int *d); - -/* c = a mod b, 0 <= c < b */ -int fp_mod(fp_int *a, fp_int *b, fp_int *c); - -/* compare against a single digit */ -int fp_cmp_d(fp_int *a, fp_digit b); - -/* c = a + b */ -void fp_add_d(fp_int *a, fp_digit b, fp_int *c); - -/* c = a - b */ -int fp_sub_d(fp_int *a, fp_digit b, fp_int *c); - -/* c = a * b */ -void fp_mul_d(fp_int *a, fp_digit b, fp_int *c); - -/* a/b => cb + d == a */ -/*int fp_div_d(fp_int *a, fp_digit b, fp_int *c, fp_digit *d);*/ - -/* c = a mod b, 0 <= c < b */ -/*int fp_mod_d(fp_int *a, fp_digit b, fp_digit *c);*/ - -/* ---> number theory <--- */ -/* d = a + b (mod c) */ -/*int fp_addmod(fp_int *a, fp_int *b, fp_int *c, fp_int *d);*/ - -/* d = a - b (mod c) */ -/*int fp_submod(fp_int *a, fp_int *b, fp_int *c, fp_int *d);*/ - -/* d = a * b (mod c) */ -int fp_mulmod(fp_int *a, fp_int *b, fp_int *c, fp_int *d); - -/* d = a - b (mod c) */ -int fp_submod(fp_int *a, fp_int *b, fp_int *c, fp_int *d); - -/* d = a + b (mod c) */ -int fp_addmod(fp_int *a, fp_int *b, fp_int *c, fp_int *d); - -/* c = a * a (mod b) */ -int fp_sqrmod(fp_int *a, fp_int *b, fp_int *c); - -/* c = 1/a (mod b) */ -int fp_invmod(fp_int *a, fp_int *b, fp_int *c); -int fp_invmod_mont_ct(fp_int *a, fp_int *b, fp_int *c, fp_digit mp); - -/* c = (a, b) */ -/*int fp_gcd(fp_int *a, fp_int *b, fp_int *c);*/ - -/* c = [a, b] */ -/*int fp_lcm(fp_int *a, fp_int *b, fp_int *c);*/ - -/* setups the montgomery reduction */ -int fp_montgomery_setup(fp_int *a, fp_digit *mp); - -/* computes a = B**n mod b without division or multiplication useful for - * normalizing numbers in a Montgomery system. - */ -void fp_montgomery_calc_normalization(fp_int *a, fp_int *b); - -/* computes x/R == x (mod N) via Montgomery Reduction */ -int fp_montgomery_reduce(fp_int *a, fp_int *m, fp_digit mp); - -/* d = a**b (mod c) */ -int fp_exptmod(fp_int *a, fp_int *b, fp_int *c, fp_int *d); -int fp_exptmod_ex(fp_int *a, fp_int *b, int minDigits, fp_int *c, fp_int *d); -int fp_exptmod_nct(fp_int *a, fp_int *b, fp_int *c, fp_int *d); - -#ifdef WC_RSA_NONBLOCK - -enum tfmExptModNbState { - TFM_EXPTMOD_NB_INIT = 0, - TFM_EXPTMOD_NB_MONT, - TFM_EXPTMOD_NB_MONT_RED, - TFM_EXPTMOD_NB_MONT_MUL, - TFM_EXPTMOD_NB_MONT_MOD, - TFM_EXPTMOD_NB_MONT_MODCHK, - TFM_EXPTMOD_NB_NEXT, - TFM_EXPTMOD_NB_MUL, - TFM_EXPTMOD_NB_MUL_RED, - TFM_EXPTMOD_NB_SQR, - TFM_EXPTMOD_NB_SQR_RED, - TFM_EXPTMOD_NB_RED, - TFM_EXPTMOD_NB_COUNT /* last item for total state count only */ -}; - -typedef struct { -#ifndef WC_NO_CACHE_RESISTANT - fp_int R[3]; -#else - fp_int R[2]; -#endif - fp_digit buf; - fp_digit mp; - int bitcnt; - int digidx; - int y; - int state; /* tfmExptModNbState */ -#ifdef WC_RSA_NONBLOCK_TIME - word32 maxBlockInst; /* maximum instructions to block */ - word32 totalInst; /* tracks total instructions */ -#endif -} exptModNb_t; - -#ifdef WC_RSA_NONBLOCK_TIME -enum { - TFM_EXPTMOD_NB_STOP = 0, /* stop and return FP_WOULDBLOCK */ - TFM_EXPTMOD_NB_CONTINUE = 1, /* keep blocking */ -}; -#endif - -/* non-blocking version of timing resistant fp_exptmod function */ -/* supports cache resistance */ -int fp_exptmod_nb(exptModNb_t* nb, fp_int* G, fp_int* X, fp_int* P, fp_int* Y); - -#endif /* WC_RSA_NONBLOCK */ - -/* primality stuff */ - -/* perform a Miller-Rabin test of a to the base b and store result in "result" */ -/*void fp_prime_miller_rabin (fp_int * a, fp_int * b, int *result);*/ - -#define FP_PRIME_SIZE 256 -/* 256 trial divisions + 8 Miller-Rabins, returns FP_YES if probable prime */ -/*int fp_isprime(fp_int *a);*/ -/* extended version of fp_isprime, do 't' Miller-Rabins instead of only 8 */ -/*int fp_isprime_ex(fp_int *a, int t, int* result);*/ - -/* Primality generation flags */ -/*#define TFM_PRIME_BBS 0x0001 */ /* BBS style prime */ -/*#define TFM_PRIME_SAFE 0x0002 */ /* Safe prime (p-1)/2 == prime */ -/*#define TFM_PRIME_2MSB_OFF 0x0004 */ /* force 2nd MSB to 0 */ -/*#define TFM_PRIME_2MSB_ON 0x0008 */ /* force 2nd MSB to 1 */ - -/* callback for fp_prime_random, should fill dst with random bytes and return how many read [up to len] */ -/*typedef int tfm_prime_callback(unsigned char *dst, int len, void *dat);*/ - -/*#define fp_prime_random(a, t, size, bbs, cb, dat) fp_prime_random_ex(a, t, ((size) * 8) + 1, (bbs==1)?TFM_PRIME_BBS:0, cb, dat)*/ - -/*int fp_prime_random_ex(fp_int *a, int t, int size, int flags, tfm_prime_callback cb, void *dat);*/ - -/* radix conversions */ -int fp_count_bits(fp_int *a); -int fp_leading_bit(fp_int *a); - -int fp_unsigned_bin_size(fp_int *a); -void fp_read_unsigned_bin(fp_int *a, const unsigned char *b, int c); -int fp_to_unsigned_bin(fp_int *a, unsigned char *b); -int fp_to_unsigned_bin_len(fp_int *a, unsigned char *b, int c); -int fp_to_unsigned_bin_at_pos(int x, fp_int *t, unsigned char *b); - -/*int fp_signed_bin_size(fp_int *a);*/ -/*void fp_read_signed_bin(fp_int *a, const unsigned char *b, int c);*/ -/*void fp_to_signed_bin(fp_int *a, unsigned char *b);*/ - -/*int fp_read_radix(fp_int *a, char *str, int radix);*/ -/*int fp_toradix(fp_int *a, char *str, int radix);*/ -/*int fp_toradix_n(fp_int * a, char *str, int radix, int maxlen);*/ - - -/* VARIOUS LOW LEVEL STUFFS */ -void s_fp_add(fp_int *a, fp_int *b, fp_int *c); -void s_fp_sub(fp_int *a, fp_int *b, fp_int *c); -void fp_reverse(unsigned char *s, int len); - -int fp_mul_comba(fp_int *a, fp_int *b, fp_int *c); - -int fp_mul_comba_small(fp_int *a, fp_int *b, fp_int *c); -int fp_mul_comba3(fp_int *a, fp_int *b, fp_int *c); -int fp_mul_comba4(fp_int *a, fp_int *b, fp_int *c); -int fp_mul_comba6(fp_int *a, fp_int *b, fp_int *c); -int fp_mul_comba7(fp_int *a, fp_int *b, fp_int *c); -int fp_mul_comba8(fp_int *a, fp_int *b, fp_int *c); -int fp_mul_comba9(fp_int *a, fp_int *b, fp_int *c); -int fp_mul_comba12(fp_int *a, fp_int *b, fp_int *c); -int fp_mul_comba17(fp_int *a, fp_int *b, fp_int *c); -int fp_mul_comba20(fp_int *a, fp_int *b, fp_int *c); -int fp_mul_comba24(fp_int *a, fp_int *b, fp_int *c); -int fp_mul_comba28(fp_int *a, fp_int *b, fp_int *c); -int fp_mul_comba32(fp_int *a, fp_int *b, fp_int *c); -int fp_mul_comba48(fp_int *a, fp_int *b, fp_int *c); -int fp_mul_comba64(fp_int *a, fp_int *b, fp_int *c); -int fp_sqr_comba(fp_int *a, fp_int *b); -int fp_sqr_comba_small(fp_int *a, fp_int *b); -int fp_sqr_comba3(fp_int *a, fp_int *b); -int fp_sqr_comba4(fp_int *a, fp_int *b); -int fp_sqr_comba6(fp_int *a, fp_int *b); -int fp_sqr_comba7(fp_int *a, fp_int *b); -int fp_sqr_comba8(fp_int *a, fp_int *b); -int fp_sqr_comba9(fp_int *a, fp_int *b); -int fp_sqr_comba12(fp_int *a, fp_int *b); -int fp_sqr_comba17(fp_int *a, fp_int *b); -int fp_sqr_comba20(fp_int *a, fp_int *b); -int fp_sqr_comba24(fp_int *a, fp_int *b); -int fp_sqr_comba28(fp_int *a, fp_int *b); -int fp_sqr_comba32(fp_int *a, fp_int *b); -int fp_sqr_comba48(fp_int *a, fp_int *b); -int fp_sqr_comba64(fp_int *a, fp_int *b); - - -/** - * Used by wolfSSL - */ - -/* Constants */ -#define MP_LT FP_LT /* less than */ -#define MP_EQ FP_EQ /* equal to */ -#define MP_GT FP_GT /* greater than */ -#define MP_VAL FP_VAL /* invalid */ -#define MP_MEM FP_MEM /* memory error */ -#define MP_NOT_INF FP_NOT_INF /* point not at infinity */ -#define MP_OKAY FP_OKAY /* ok result */ -#define MP_NO FP_NO /* yes/no result */ -#define MP_YES FP_YES /* yes/no result */ -#define MP_ZPOS FP_ZPOS -#define MP_NEG FP_NEG -#define MP_MASK FP_MASK - -/* Prototypes */ -#define mp_zero(a) fp_zero(a) -#define mp_isone(a) fp_isone(a) -#define mp_iseven(a) fp_iseven(a) -#define mp_isneg(a) fp_isneg(a) -#define mp_isword(a, w) fp_isword(a, w) - -#define MP_RADIX_BIN 2 -#define MP_RADIX_OCT 8 -#define MP_RADIX_DEC 10 -#define MP_RADIX_HEX 16 -#define MP_RADIX_MAX 64 - -#define mp_tobinary(M, S) mp_toradix((M), (S), MP_RADIX_BIN) -#define mp_tooctal(M, S) mp_toradix((M), (S), MP_RADIX_OCT) -#define mp_todecimal(M, S) mp_toradix((M), (S), MP_RADIX_DEC) -#define mp_tohex(M, S) mp_toradix((M), (S), MP_RADIX_HEX) - -MP_API int mp_init (mp_int * a); -MP_API void mp_clear (mp_int * a); -MP_API void mp_free (mp_int * a); -MP_API void mp_forcezero (mp_int * a); -MP_API int mp_init_multi(mp_int* a, mp_int* b, mp_int* c, mp_int* d, mp_int* e, - mp_int* f); - -MP_API int mp_add (mp_int * a, mp_int * b, mp_int * c); -MP_API int mp_sub (mp_int * a, mp_int * b, mp_int * c); -MP_API int mp_add_d (mp_int * a, mp_digit b, mp_int * c); - -MP_API int mp_mul (mp_int * a, mp_int * b, mp_int * c); -MP_API int mp_mul_d (mp_int * a, mp_digit b, mp_int * c); -MP_API int mp_mulmod (mp_int * a, mp_int * b, mp_int * c, mp_int * d); -MP_API int mp_submod (mp_int* a, mp_int* b, mp_int* c, mp_int* d); -MP_API int mp_addmod (mp_int* a, mp_int* b, mp_int* c, mp_int* d); -MP_API int mp_mod(mp_int *a, mp_int *b, mp_int *c); -MP_API int mp_invmod(mp_int *a, mp_int *b, mp_int *c); -MP_API int mp_invmod_mont_ct(mp_int *a, mp_int *b, mp_int *c, fp_digit mp); -MP_API int mp_exptmod (mp_int * g, mp_int * x, mp_int * p, mp_int * y); -MP_API int mp_exptmod_ex (mp_int * g, mp_int * x, int minDigits, mp_int * p, - mp_int * y); -MP_API int mp_exptmod_nct (mp_int * g, mp_int * x, mp_int * p, mp_int * y); -MP_API int mp_mul_2d(mp_int *a, int b, mp_int *c); -MP_API int mp_2expt(mp_int* a, int b); - -MP_API int mp_div(mp_int * a, mp_int * b, mp_int * c, mp_int * d); - -MP_API int mp_cmp(mp_int *a, mp_int *b); -MP_API int mp_cmp_d(mp_int *a, mp_digit b); - -MP_API int mp_unsigned_bin_size(mp_int * a); -MP_API int mp_read_unsigned_bin (mp_int * a, const unsigned char *b, int c); -MP_API int mp_to_unsigned_bin_at_pos(int x, mp_int *t, unsigned char *b); -MP_API int mp_to_unsigned_bin (mp_int * a, unsigned char *b); -MP_API int mp_to_unsigned_bin_len(mp_int * a, unsigned char *b, int c); - -MP_API int mp_sub_d(fp_int *a, fp_digit b, fp_int *c); -MP_API int mp_copy(fp_int* a, fp_int* b); -MP_API int mp_isodd(mp_int* a); -MP_API int mp_iszero(mp_int* a); -MP_API int mp_count_bits(mp_int *a); -MP_API int mp_leading_bit(mp_int *a); -MP_API int mp_set_int(mp_int *a, unsigned long b); -MP_API int mp_is_bit_set (mp_int * a, mp_digit b); -MP_API int mp_set_bit (mp_int * a, mp_digit b); -MP_API void mp_rshb(mp_int *a, int x); -MP_API void mp_rshd(mp_int *a, int x); -MP_API int mp_toradix (mp_int *a, char *str, int radix); -MP_API int mp_radix_size (mp_int * a, int radix, int *size); - -#ifdef WOLFSSL_DEBUG_MATH - MP_API void mp_dump(const char* desc, mp_int* a, byte verbose); -#else - #define mp_dump(desc, a, verbose) -#endif - -#if !defined(NO_DSA) || defined(HAVE_ECC) - MP_API int mp_read_radix(mp_int* a, const char* str, int radix); -#endif - -#ifdef HAVE_ECC - MP_API int mp_sqr(fp_int *a, fp_int *b); - MP_API int mp_montgomery_reduce(fp_int *a, fp_int *m, fp_digit mp); - MP_API int mp_montgomery_setup(fp_int *a, fp_digit *rho); - MP_API int mp_div_2(fp_int * a, fp_int * b); - MP_API int mp_init_copy(fp_int * a, fp_int * b); -#endif - -#if defined(HAVE_ECC) || !defined(NO_RSA) || !defined(NO_DSA) || \ - defined(WOLFSSL_KEY_GEN) - MP_API int mp_set(fp_int *a, fp_digit b); -#endif - -#if defined(HAVE_ECC) || defined(WOLFSSL_KEY_GEN) || !defined(NO_RSA) || \ - !defined(NO_DSA) || !defined(NO_DH) - MP_API int mp_sqrmod(mp_int* a, mp_int* b, mp_int* c); - MP_API int mp_montgomery_calc_normalization(mp_int *a, mp_int *b); -#endif - -#if !defined(NO_DH) || !defined(NO_DSA) || !defined(NO_RSA) || defined(WOLFSSL_KEY_GEN) -MP_API int mp_prime_is_prime(mp_int* a, int t, int* result); -MP_API int mp_prime_is_prime_ex(mp_int* a, int t, int* result, WC_RNG* rng); -#endif /* !NO_DH || !NO_DSA || !NO_RSA || WOLFSSL_KEY_GEN */ -#ifdef WOLFSSL_KEY_GEN -MP_API int mp_gcd(fp_int *a, fp_int *b, fp_int *c); -MP_API int mp_lcm(fp_int *a, fp_int *b, fp_int *c); -MP_API int mp_rand_prime(mp_int* N, int len, WC_RNG* rng, void* heap); -MP_API int mp_exch(mp_int *a, mp_int *b); -#endif /* WOLFSSL_KEY_GEN */ - -MP_API int mp_cnt_lsb(fp_int *a); -MP_API int mp_div_2d(fp_int *a, int b, fp_int *c, fp_int *d); -MP_API int mp_mod_d(fp_int* a, fp_digit b, fp_digit* c); -MP_API int mp_lshd (mp_int * a, int b); -MP_API int mp_abs(mp_int* a, mp_int* b); - -WOLFSSL_API word32 CheckRunTimeFastMath(void); - -/* If user uses RSA, DH, DSA, or ECC math lib directly then fast math FP_SIZE - must match, return 1 if a match otherwise 0 */ -#define CheckFastMathSettings() (FP_SIZE == CheckRunTimeFastMath()) - - -#ifdef __cplusplus - } -#endif - -#endif /* WOLF_CRYPT_TFM_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/types.h b/client/wolfssl/wolfssl/wolfcrypt/types.h deleted file mode 100644 index 362784b..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/types.h +++ /dev/null @@ -1,950 +0,0 @@ -/* types.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/types.h -*/ - -#ifndef WOLF_CRYPT_TYPES_H -#define WOLF_CRYPT_TYPES_H - - #include <wolfssl/wolfcrypt/settings.h> - #include <wolfssl/wolfcrypt/wc_port.h> - - #ifdef __cplusplus - extern "C" { - #endif - - - #define WOLFSSL_ABI - /* Tag for all the APIs that are a part of the fixed ABI. */ - - /* - * This struct is used multiple time by other structs and - * needs to be defined somwhere that all structs can import - * (with minimal depencencies). - */ - #if defined(HAVE_EX_DATA) || defined(FORTRESS) - typedef struct WOLFSSL_CRYPTO_EX_DATA { - void* ex_data[MAX_EX_DATA]; - } WOLFSSL_CRYPTO_EX_DATA; - #endif - - #if defined(WORDS_BIGENDIAN) - #define BIG_ENDIAN_ORDER - #endif - - #ifndef BIG_ENDIAN_ORDER - #define LITTLE_ENDIAN_ORDER - #endif - - #ifndef WOLFSSL_TYPES - #ifndef byte - typedef unsigned char byte; - #endif - #ifdef WC_16BIT_CPU - typedef unsigned int word16; - typedef unsigned long word32; - #else - typedef unsigned short word16; - typedef unsigned int word32; - #endif - typedef byte word24[3]; - #endif - - - /* constant pointer to a constant char */ - #ifdef WOLFSSL_NO_CONSTCHARCONST - typedef const char* wcchar; - #else - typedef const char* const wcchar; - #endif - - - /* try to set SIZEOF_LONG or SIZEOF_LONG_LONG if user didn't */ - #if defined(_MSC_VER) || defined(HAVE_LIMITS_H) - #if !defined(SIZEOF_LONG_LONG) && !defined(SIZEOF_LONG) - #include <limits.h> - #if defined(ULONG_MAX) && (ULONG_MAX == 0xffffffffUL) - #define SIZEOF_LONG 4 - #endif - #if defined(ULLONG_MAX) && (ULLONG_MAX == 0xffffffffffffffffULL) - #define SIZEOF_LONG_LONG 8 - #endif - #endif - #elif !defined(__BCPLUSPLUS__) && !defined(__EMSCRIPTEN__) - #if !defined(SIZEOF_LONG_LONG) && !defined(SIZEOF_LONG) - #if (defined(__alpha__) || defined(__ia64__) || \ - defined(_ARCH_PPC64) || defined(__mips64) || \ - defined(__x86_64__) || defined(__s390x__ ) || \ - ((defined(sun) || defined(__sun)) && \ - (defined(LP64) || defined(_LP64)))) - /* long should be 64bit */ - #define SIZEOF_LONG 8 - #elif defined(__i386__) || defined(__CORTEX_M3__) - /* long long should be 64bit */ - #define SIZEOF_LONG_LONG 8 - #endif - #endif - #endif - - #if defined(_MSC_VER) || defined(__BCPLUSPLUS__) - #define WORD64_AVAILABLE - #define W64LIT(x) x##ui64 - typedef unsigned __int64 word64; - #elif defined(__EMSCRIPTEN__) - #define WORD64_AVAILABLE - #define W64LIT(x) x##ull - typedef unsigned long long word64; - #elif defined(SIZEOF_LONG) && SIZEOF_LONG == 8 - #define WORD64_AVAILABLE - #define W64LIT(x) x##LL - typedef unsigned long word64; - #elif defined(SIZEOF_LONG_LONG) && SIZEOF_LONG_LONG == 8 - #define WORD64_AVAILABLE - #define W64LIT(x) x##LL - typedef unsigned long long word64; - #elif defined(__SIZEOF_LONG_LONG__) && __SIZEOF_LONG_LONG__ == 8 - #define WORD64_AVAILABLE - #define W64LIT(x) x##LL - typedef unsigned long long word64; - #endif - -#if !defined(NO_64BIT) && defined(WORD64_AVAILABLE) && !defined(WC_16BIT_CPU) - /* These platforms have 64-bit CPU registers. */ - #if (defined(__alpha__) || defined(__ia64__) || defined(_ARCH_PPC64) || \ - defined(__mips64) || defined(__x86_64__) || defined(_M_X64)) || \ - defined(__aarch64__) || defined(__sparc64__) || defined(__s390x__ ) || \ - (defined(__riscv_xlen) && (__riscv_xlen == 64)) - typedef word64 wolfssl_word; - #define WC_64BIT_CPU - #elif (defined(sun) || defined(__sun)) && \ - (defined(LP64) || defined(_LP64)) - /* LP64 with GNU GCC compiler is reserved for when long int is 64 bits - * and int uses 32 bits. When using Solaris Studio sparc and __sparc are - * available for 32 bit detection but __sparc64__ could be missed. This - * uses LP64 for checking 64 bit CPU arch. */ - typedef word64 wolfssl_word; - #define WC_64BIT_CPU - #else - typedef word32 wolfssl_word; - #ifdef WORD64_AVAILABLE - #define WOLFCRYPT_SLOW_WORD64 - #endif - #endif - -#elif defined(WC_16BIT_CPU) - #undef WORD64_AVAILABLE - typedef word16 wolfssl_word; - #define MP_16BIT /* for mp_int, mp_word needs to be twice as big as - mp_digit, no 64 bit type so make mp_digit 16 bit */ - -#else - #undef WORD64_AVAILABLE - typedef word32 wolfssl_word; - #define MP_16BIT /* for mp_int, mp_word needs to be twice as big as - mp_digit, no 64 bit type so make mp_digit 16 bit */ -#endif - - enum { - WOLFSSL_WORD_SIZE = sizeof(wolfssl_word), - WOLFSSL_BIT_SIZE = 8, - WOLFSSL_WORD_BITS = WOLFSSL_WORD_SIZE * WOLFSSL_BIT_SIZE - }; - - #define WOLFSSL_MAX_16BIT 0xffffU - - /* use inlining if compiler allows */ - #ifndef WC_INLINE - #ifndef NO_INLINE - #ifdef _MSC_VER - #define WC_INLINE __inline - #elif defined(__GNUC__) - #ifdef WOLFSSL_VXWORKS - #define WC_INLINE __inline__ - #else - #define WC_INLINE inline - #endif - #elif defined(__IAR_SYSTEMS_ICC__) - #define WC_INLINE inline - #elif defined(THREADX) - #define WC_INLINE _Inline - #elif defined(__ghc__) - #ifndef __cplusplus - #define WC_INLINE __inline - #else - #define WC_INLINE inline - #endif - #else - #define WC_INLINE - #endif - #else - #define WC_INLINE - #endif - #endif - - #if defined(HAVE_FIPS) || defined(HAVE_SELFTEST) - #define INLINE WC_INLINE - #endif - - - /* set up rotate style */ - #if (defined(_MSC_VER) || defined(__BCPLUSPLUS__)) && \ - !defined(WOLFSSL_SGX) && !defined(INTIME_RTOS) - #define INTEL_INTRINSICS - #define FAST_ROTATE - #elif defined(__MWERKS__) && TARGET_CPU_PPC - #define PPC_INTRINSICS - #define FAST_ROTATE - #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) - /* GCC does peephole optimizations which should result in using rotate - instructions */ - #define FAST_ROTATE - #endif - - - /* set up thread local storage if available */ - #ifdef HAVE_THREAD_LS - #if defined(_MSC_VER) - #define THREAD_LS_T __declspec(thread) - /* Thread local storage only in FreeRTOS v8.2.1 and higher */ - #elif defined(FREERTOS) || defined(FREERTOS_TCP) || \ - defined(WOLFSSL_ZEPHYR) - #define THREAD_LS_T - #else - #define THREAD_LS_T __thread - #endif - #else - #define THREAD_LS_T - #endif - - /* GCC 7 has new switch() fall-through detection */ - /* default to FALL_THROUGH stub */ - #ifndef FALL_THROUGH - #define FALL_THROUGH - - #if defined(__GNUC__) - #if ((__GNUC__ > 7) || ((__GNUC__ == 7) && (__GNUC_MINOR__ >= 1))) - #undef FALL_THROUGH - #define FALL_THROUGH __attribute__ ((fallthrough)); - #endif - #endif - #endif /* FALL_THROUGH */ - - /* Micrium will use Visual Studio for compilation but not the Win32 API */ - #if defined(_WIN32) && !defined(MICRIUM) && !defined(FREERTOS) && \ - !defined(FREERTOS_TCP) && !defined(EBSNET) && \ - !defined(WOLFSSL_UTASKER) && !defined(INTIME_RTOS) - #define USE_WINDOWS_API - #endif - - #define XSTR_SIZEOF(x) (sizeof(x) - 1) /* -1 to not count the null char */ - - /* idea to add global alloc override by Moises Guimaraes */ - /* default to libc stuff */ - /* XREALLOC is used once in normal math lib, not in fast math lib */ - /* XFREE on some embedded systems doesn't like free(0) so test */ - #if defined(HAVE_IO_POOL) - WOLFSSL_API void* XMALLOC(size_t n, void* heap, int type); - WOLFSSL_API void* XREALLOC(void *p, size_t n, void* heap, int type); - WOLFSSL_API void XFREE(void *p, void* heap, int type); - #elif (defined(WOLFSSL_ASYNC_CRYPT) && defined(HAVE_INTEL_QA)) || \ - defined(HAVE_INTEL_QA_SYNC) - #ifndef HAVE_INTEL_QA_SYNC - #include <wolfssl/wolfcrypt/port/intel/quickassist_mem.h> - #undef USE_WOLFSSL_MEMORY - #ifdef WOLFSSL_DEBUG_MEMORY - #define XMALLOC(s, h, t) IntelQaMalloc((s), (h), (t), __func__, __LINE__) - #define XFREE(p, h, t) IntelQaFree((p), (h), (t), __func__, __LINE__) - #define XREALLOC(p, n, h, t) IntelQaRealloc((p), (n), (h), (t), __func__, __LINE__) - #else - #define XMALLOC(s, h, t) IntelQaMalloc((s), (h), (t)) - #define XFREE(p, h, t) IntelQaFree((p), (h), (t)) - #define XREALLOC(p, n, h, t) IntelQaRealloc((p), (n), (h), (t)) - #endif /* WOLFSSL_DEBUG_MEMORY */ - #else - #include <wolfssl/wolfcrypt/port/intel/quickassist_sync.h> - #undef USE_WOLFSSL_MEMORY - #ifdef WOLFSSL_DEBUG_MEMORY - #define XMALLOC(s, h, t) wc_CryptoCb_IntelQaMalloc((s), (h), (t), __func__, __LINE__) - #define XFREE(p, h, t) wc_CryptoCb_IntelQaFree((p), (h), (t), __func__, __LINE__) - #define XREALLOC(p, n, h, t) wc_CryptoCb_IntelQaRealloc((p), (n), (h), (t), __func__, __LINE__) - #else - #define XMALLOC(s, h, t) wc_CryptoCb_IntelQaMalloc((s), (h), (t)) - #define XFREE(p, h, t) wc_CryptoCb_IntelQaFree((p), (h), (t)) - #define XREALLOC(p, n, h, t) wc_CryptoCb_IntelQaRealloc((p), (n), (h), (t)) - #endif /* WOLFSSL_DEBUG_MEMORY */ - #endif - #elif defined(XMALLOC_USER) - /* prototypes for user heap override functions */ - #include <stddef.h> /* for size_t */ - extern void *XMALLOC(size_t n, void* heap, int type); - extern void *XREALLOC(void *p, size_t n, void* heap, int type); - extern void XFREE(void *p, void* heap, int type); - #elif defined(WOLFSSL_MEMORY_LOG) - #define XMALLOC(n, h, t) xmalloc(n, h, t, __func__, __FILE__, __LINE__) - #define XREALLOC(p, n, h, t) xrealloc(p, n, h, t, __func__, __FILE__, __LINE__) - #define XFREE(p, h, t) xfree(p, h, t, __func__, __FILE__, __LINE__) - - /* prototypes for user heap override functions */ - #include <stddef.h> /* for size_t */ - #include <stdlib.h> - WOLFSSL_API void *xmalloc(size_t n, void* heap, int type, - const char* func, const char* file, unsigned int line); - WOLFSSL_API void *xrealloc(void *p, size_t n, void* heap, int type, - const char* func, const char* file, unsigned int line); - WOLFSSL_API void xfree(void *p, void* heap, int type, const char* func, - const char* file, unsigned int line); - #elif defined(XMALLOC_OVERRIDE) - /* override the XMALLOC, XFREE and XREALLOC macros */ - #elif defined(WOLFSSL_TELIT_M2MB) - /* Telit M2MB SDK requires use m2mb_os API's, not std malloc/free */ - /* Use of malloc/free will cause CPU reboot */ - #define XMALLOC(s, h, t) ((void)h, (void)t, m2mb_os_malloc((s))) - #define XFREE(p, h, t) {void* xp = (p); if((xp)) m2mb_os_free((xp));} - #define XREALLOC(p, n, h, t) m2mb_os_realloc((p), (n)) - - #elif defined(NO_WOLFSSL_MEMORY) - #ifdef WOLFSSL_NO_MALLOC - /* this platform does not support heap use */ - #ifdef WOLFSSL_MALLOC_CHECK - #include <stdio.h> - static inline void* malloc_check(size_t sz) { - printf("wolfSSL_malloc failed"); - return NULL; - }; - #define XMALLOC(s, h, t) malloc_check((s)) - #define XFREE(p, h, t) - #define XREALLOC(p, n, h, t) (NULL) - #else - #define XMALLOC(s, h, t) (NULL) - #define XFREE(p, h, t) - #define XREALLOC(p, n, h, t) (NULL) - #endif - #else - /* just use plain C stdlib stuff if desired */ - #include <stdlib.h> - #define XMALLOC(s, h, t) malloc((s)) - #define XFREE(p, h, t) {void* xp = (p); if((xp)) free((xp));} - #define XREALLOC(p, n, h, t) realloc((p), (n)) - #endif - #elif !defined(MICRIUM_MALLOC) && !defined(EBSNET) \ - && !defined(WOLFSSL_SAFERTOS) && !defined(FREESCALE_MQX) \ - && !defined(FREESCALE_KSDK_MQX) && !defined(FREESCALE_FREE_RTOS) \ - && !defined(WOLFSSL_LEANPSK) && !defined(WOLFSSL_uITRON4) - /* default C runtime, can install different routines at runtime via cbs */ - #include <wolfssl/wolfcrypt/memory.h> - #ifdef WOLFSSL_STATIC_MEMORY - #ifdef WOLFSSL_DEBUG_MEMORY - #define XMALLOC(s, h, t) wolfSSL_Malloc((s), (h), (t), __func__, __LINE__) - #define XFREE(p, h, t) {void* xp = (p); if((xp)) wolfSSL_Free((xp), (h), (t), __func__, __LINE__);} - #define XREALLOC(p, n, h, t) wolfSSL_Realloc((p), (n), (h), (t), __func__, __LINE__) - #else - #define XMALLOC(s, h, t) wolfSSL_Malloc((s), (h), (t)) - #define XFREE(p, h, t) {void* xp = (p); if((xp)) wolfSSL_Free((xp), (h), (t));} - #define XREALLOC(p, n, h, t) wolfSSL_Realloc((p), (n), (h), (t)) - #endif /* WOLFSSL_DEBUG_MEMORY */ - #elif !defined(FREERTOS) && !defined(FREERTOS_TCP) - #ifdef WOLFSSL_DEBUG_MEMORY - #define XMALLOC(s, h, t) ((void)h, (void)t, wolfSSL_Malloc((s), __func__, __LINE__)) - #define XFREE(p, h, t) {void* xp = (p); if((xp)) wolfSSL_Free((xp), __func__, __LINE__);} - #define XREALLOC(p, n, h, t) wolfSSL_Realloc((p), (n), __func__, __LINE__) - #else - #define XMALLOC(s, h, t) ((void)h, (void)t, wolfSSL_Malloc((s))) - #define XFREE(p, h, t) {void* xp = (p); if((xp)) wolfSSL_Free((xp));} - #define XREALLOC(p, n, h, t) wolfSSL_Realloc((p), (n)) - #endif /* WOLFSSL_DEBUG_MEMORY */ - #endif /* WOLFSSL_STATIC_MEMORY */ - #endif - - /* declare/free variable handling for async */ - #ifdef WOLFSSL_ASYNC_CRYPT - #define DECLARE_VAR(VAR_NAME, VAR_TYPE, VAR_SIZE, HEAP) \ - VAR_TYPE* VAR_NAME = (VAR_TYPE*)XMALLOC(sizeof(VAR_TYPE) * VAR_SIZE, (HEAP), DYNAMIC_TYPE_WOLF_BIGINT); - #define DECLARE_VAR_INIT(VAR_NAME, VAR_TYPE, VAR_SIZE, INIT_VALUE, HEAP) \ - VAR_TYPE* VAR_NAME = ({ \ - VAR_TYPE* ptr = (VAR_TYPE*)XMALLOC(sizeof(VAR_TYPE) * VAR_SIZE, (HEAP), DYNAMIC_TYPE_WOLF_BIGINT); \ - if (ptr && INIT_VALUE) { \ - XMEMCPY(ptr, INIT_VALUE, sizeof(VAR_TYPE) * VAR_SIZE); \ - } \ - ptr; \ - }) - #define DECLARE_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \ - VAR_TYPE* VAR_NAME[VAR_ITEMS]; \ - int idx##VAR_NAME; \ - for (idx##VAR_NAME=0; idx##VAR_NAME<VAR_ITEMS; idx##VAR_NAME++) { \ - VAR_NAME[idx##VAR_NAME] = (VAR_TYPE*)XMALLOC(VAR_SIZE, (HEAP), DYNAMIC_TYPE_WOLF_BIGINT); \ - } - #define FREE_VAR(VAR_NAME, HEAP) \ - XFREE(VAR_NAME, (HEAP), DYNAMIC_TYPE_WOLF_BIGINT); - #define FREE_ARRAY(VAR_NAME, VAR_ITEMS, HEAP) \ - for (idx##VAR_NAME=0; idx##VAR_NAME<VAR_ITEMS; idx##VAR_NAME++) { \ - XFREE(VAR_NAME[idx##VAR_NAME], (HEAP), DYNAMIC_TYPE_WOLF_BIGINT); \ - } - - #define DECLARE_ARRAY_DYNAMIC_DEC(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \ - DECLARE_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) - #define DECLARE_ARRAY_DYNAMIC_EXE(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) - #define FREE_ARRAY_DYNAMIC(VAR_NAME, VAR_ITEMS, HEAP) \ - FREE_ARRAY(VAR_NAME, VAR_ITEMS, HEAP) - #else - #define DECLARE_VAR(VAR_NAME, VAR_TYPE, VAR_SIZE, HEAP) \ - VAR_TYPE VAR_NAME[VAR_SIZE] - #define DECLARE_VAR_INIT(VAR_NAME, VAR_TYPE, VAR_SIZE, INIT_VALUE, HEAP) \ - VAR_TYPE* VAR_NAME = (VAR_TYPE*)INIT_VALUE - #define DECLARE_ARRAY(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \ - VAR_TYPE VAR_NAME[VAR_ITEMS][VAR_SIZE] - #define FREE_VAR(VAR_NAME, HEAP) /* nothing to free, its stack */ - #define FREE_ARRAY(VAR_NAME, VAR_ITEMS, HEAP) /* nothing to free, its stack */ - - #define DECLARE_ARRAY_DYNAMIC_DEC(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \ - VAR_TYPE* VAR_NAME[VAR_ITEMS]; \ - int idx##VAR_NAME; - #define DECLARE_ARRAY_DYNAMIC_EXE(VAR_NAME, VAR_TYPE, VAR_ITEMS, VAR_SIZE, HEAP) \ - for (idx##VAR_NAME=0; idx##VAR_NAME<VAR_ITEMS; idx##VAR_NAME++) { \ - VAR_NAME[idx##VAR_NAME] = (VAR_TYPE*)XMALLOC(VAR_SIZE, (HEAP), DYNAMIC_TYPE_TMP_BUFFER); \ - } - #define FREE_ARRAY_DYNAMIC(VAR_NAME, VAR_ITEMS, HEAP) \ - for (idx##VAR_NAME=0; idx##VAR_NAME<VAR_ITEMS; idx##VAR_NAME++) { \ - XFREE(VAR_NAME[idx##VAR_NAME], (HEAP), DYNAMIC_TYPE_TMP_BUFFER); \ - } - #endif - - #if !defined(USE_WOLF_STRTOK) && \ - ((defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)) || \ - defined(WOLFSSL_TIRTOS) || defined(WOLF_C99)) - #define USE_WOLF_STRTOK - #endif - #if !defined(USE_WOLF_STRSEP) && (defined(WOLF_C99)) - #define USE_WOLF_STRSEP - #endif - - #ifndef STRING_USER - #include <string.h> - #define XMEMCPY(d,s,l) memcpy((d),(s),(l)) - #define XMEMSET(b,c,l) memset((b),(c),(l)) - #define XMEMCMP(s1,s2,n) memcmp((s1),(s2),(n)) - #define XMEMMOVE(d,s,l) memmove((d),(s),(l)) - - #define XSTRLEN(s1) strlen((s1)) - #define XSTRNCPY(s1,s2,n) strncpy((s1),(s2),(n)) - /* strstr, strncmp, and strncat only used by wolfSSL proper, - * not required for wolfCrypt only */ - #define XSTRSTR(s1,s2) strstr((s1),(s2)) - #define XSTRNSTR(s1,s2,n) mystrnstr((s1),(s2),(n)) - #define XSTRNCMP(s1,s2,n) strncmp((s1),(s2),(n)) - #define XSTRNCAT(s1,s2,n) strncat((s1),(s2),(n)) - - #ifdef USE_WOLF_STRSEP - #define XSTRSEP(s1,d) wc_strsep((s1),(d)) - #else - #define XSTRSEP(s1,d) strsep((s1),(d)) - #endif - - #ifndef XSTRNCASECMP - #if defined(MICROCHIP_PIC32) || defined(WOLFSSL_TIRTOS) || \ - defined(WOLFSSL_ZEPHYR) - /* XC32 does not support strncasecmp, so use case sensitive one */ - #define XSTRNCASECMP(s1,s2,n) strncmp((s1),(s2),(n)) - #elif defined(USE_WINDOWS_API) || defined(FREERTOS_TCP_WINSIM) - #define XSTRNCASECMP(s1,s2,n) _strnicmp((s1),(s2),(n)) - #else - #if defined(HAVE_STRINGS_H) && defined(WOLF_C99) && \ - !defined(WOLFSSL_SGX) - #include <strings.h> - #endif - #if defined(WOLFSSL_DEOS) - #define XSTRNCASECMP(s1,s2,n) strnicmp((s1),(s2),(n)) - #else - #define XSTRNCASECMP(s1,s2,n) strncasecmp((s1),(s2),(n)) - #endif - #endif - #endif /* !XSTRNCASECMP */ - - /* snprintf is used in asn.c for GetTimeString, PKCS7 test, and when - debugging is turned on */ - #ifndef USE_WINDOWS_API - #ifndef XSNPRINTF - #if defined(NO_FILESYSTEM) && (defined(OPENSSL_EXTRA) || \ - defined(HAVE_PKCS7)) && !defined(NO_STDIO_FILESYSTEM) - /* case where stdio is not included else where but is needed - for snprintf */ - #include <stdio.h> - #endif - #define XSNPRINTF snprintf - #endif - #else - #if defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW32__) - #if defined(_MSC_VER) && (_MSC_VER >= 1900) - /* Beginning with the UCRT in Visual Studio 2015 and - Windows 10, snprintf is no longer identical to - _snprintf. The snprintf function behavior is now - C99 standard compliant. */ - #include <stdio.h> - #define XSNPRINTF snprintf - #else - /* 4996 warning to use MS extensions e.g., _sprintf_s - instead of _snprintf */ - #if !defined(__MINGW32__) - #pragma warning(disable: 4996) - #endif - static WC_INLINE - int xsnprintf(char *buffer, size_t bufsize, - const char *format, ...) { - va_list ap; - int ret; - - if ((int)bufsize <= 0) return -1; - va_start(ap, format); - ret = vsnprintf(buffer, bufsize, format, ap); - if (ret >= (int)bufsize) - ret = -1; - va_end(ap); - return ret; - } - #define XSNPRINTF xsnprintf - #endif /* (_MSC_VER >= 1900) */ - #else - #define XSNPRINTF snprintf - #endif /* _MSC_VER */ - #endif /* USE_WINDOWS_API */ - - #if defined(WOLFSSL_CERT_EXT) || defined(OPENSSL_EXTRA) \ - || defined(HAVE_ALPN) - /* use only Thread Safe version of strtok */ - #if defined(USE_WOLF_STRTOK) - #define XSTRTOK(s1,d,ptr) wc_strtok((s1),(d),(ptr)) - #elif defined(USE_WINDOWS_API) || defined(INTIME_RTOS) - #define XSTRTOK(s1,d,ptr) strtok_s((s1),(d),(ptr)) - #else - #define XSTRTOK(s1,d,ptr) strtok_r((s1),(d),(ptr)) - #endif - #endif - - #if defined(WOLFSSL_CERT_EXT) || defined(HAVE_OCSP) || \ - defined(HAVE_CRL_IO) || defined(HAVE_HTTP_CLIENT) || \ - !defined(NO_CRYPT_BENCHMARK) - - #ifndef XATOI /* if custom XATOI is not already defined */ - #include <stdlib.h> - #define XATOI(s) atoi((s)) - #endif - #endif - #endif - - #ifdef USE_WOLF_STRTOK - WOLFSSL_API char* wc_strtok(char *str, const char *delim, char **nextp); - #endif - #ifdef USE_WOLF_STRSEP - WOLFSSL_API char* wc_strsep(char **stringp, const char *delim); - #endif - - #if !defined(NO_FILESYSTEM) && defined(OPENSSL_EXTRA) && \ - !defined(NO_STDIO_FILESYSTEM) - #ifndef XGETENV - #include <stdlib.h> - #define XGETENV getenv - #endif - #endif /* OPENSSL_EXTRA */ - - #ifndef CTYPE_USER - #include <ctype.h> - #if defined(HAVE_ECC) || defined(HAVE_OCSP) || \ - defined(WOLFSSL_KEY_GEN) || !defined(NO_DSA) - #define XTOUPPER(c) toupper((c)) - #define XISALPHA(c) isalpha((c)) - #endif - /* needed by wolfSSL_check_domain_name() */ - #define XTOLOWER(c) tolower((c)) - #endif - - - /* memory allocation types for user hints */ - enum { - DYNAMIC_TYPE_CA = 1, - DYNAMIC_TYPE_CERT = 2, - DYNAMIC_TYPE_KEY = 3, - DYNAMIC_TYPE_FILE = 4, - DYNAMIC_TYPE_SUBJECT_CN = 5, - DYNAMIC_TYPE_PUBLIC_KEY = 6, - DYNAMIC_TYPE_SIGNER = 7, - DYNAMIC_TYPE_NONE = 8, - DYNAMIC_TYPE_BIGINT = 9, - DYNAMIC_TYPE_RSA = 10, - DYNAMIC_TYPE_METHOD = 11, - DYNAMIC_TYPE_OUT_BUFFER = 12, - DYNAMIC_TYPE_IN_BUFFER = 13, - DYNAMIC_TYPE_INFO = 14, - DYNAMIC_TYPE_DH = 15, - DYNAMIC_TYPE_DOMAIN = 16, - DYNAMIC_TYPE_SSL = 17, - DYNAMIC_TYPE_CTX = 18, - DYNAMIC_TYPE_WRITEV = 19, - DYNAMIC_TYPE_OPENSSL = 20, - DYNAMIC_TYPE_DSA = 21, - DYNAMIC_TYPE_CRL = 22, - DYNAMIC_TYPE_REVOKED = 23, - DYNAMIC_TYPE_CRL_ENTRY = 24, - DYNAMIC_TYPE_CERT_MANAGER = 25, - DYNAMIC_TYPE_CRL_MONITOR = 26, - DYNAMIC_TYPE_OCSP_STATUS = 27, - DYNAMIC_TYPE_OCSP_ENTRY = 28, - DYNAMIC_TYPE_ALTNAME = 29, - DYNAMIC_TYPE_SUITES = 30, - DYNAMIC_TYPE_CIPHER = 31, - DYNAMIC_TYPE_RNG = 32, - DYNAMIC_TYPE_ARRAYS = 33, - DYNAMIC_TYPE_DTLS_POOL = 34, - DYNAMIC_TYPE_SOCKADDR = 35, - DYNAMIC_TYPE_LIBZ = 36, - DYNAMIC_TYPE_ECC = 37, - DYNAMIC_TYPE_TMP_BUFFER = 38, - DYNAMIC_TYPE_DTLS_MSG = 39, - DYNAMIC_TYPE_X509 = 40, - DYNAMIC_TYPE_TLSX = 41, - DYNAMIC_TYPE_OCSP = 42, - DYNAMIC_TYPE_SIGNATURE = 43, - DYNAMIC_TYPE_HASHES = 44, - DYNAMIC_TYPE_SRP = 45, - DYNAMIC_TYPE_COOKIE_PWD = 46, - DYNAMIC_TYPE_USER_CRYPTO = 47, - DYNAMIC_TYPE_OCSP_REQUEST = 48, - DYNAMIC_TYPE_X509_EXT = 49, - DYNAMIC_TYPE_X509_STORE = 50, - DYNAMIC_TYPE_X509_CTX = 51, - DYNAMIC_TYPE_URL = 52, - DYNAMIC_TYPE_DTLS_FRAG = 53, - DYNAMIC_TYPE_DTLS_BUFFER = 54, - DYNAMIC_TYPE_SESSION_TICK = 55, - DYNAMIC_TYPE_PKCS = 56, - DYNAMIC_TYPE_MUTEX = 57, - DYNAMIC_TYPE_PKCS7 = 58, - DYNAMIC_TYPE_AES_BUFFER = 59, - DYNAMIC_TYPE_WOLF_BIGINT = 60, - DYNAMIC_TYPE_ASN1 = 61, - DYNAMIC_TYPE_LOG = 62, - DYNAMIC_TYPE_WRITEDUP = 63, - DYNAMIC_TYPE_PRIVATE_KEY = 64, - DYNAMIC_TYPE_HMAC = 65, - DYNAMIC_TYPE_ASYNC = 66, - DYNAMIC_TYPE_ASYNC_NUMA = 67, - DYNAMIC_TYPE_ASYNC_NUMA64 = 68, - DYNAMIC_TYPE_CURVE25519 = 69, - DYNAMIC_TYPE_ED25519 = 70, - DYNAMIC_TYPE_SECRET = 71, - DYNAMIC_TYPE_DIGEST = 72, - DYNAMIC_TYPE_RSA_BUFFER = 73, - DYNAMIC_TYPE_DCERT = 74, - DYNAMIC_TYPE_STRING = 75, - DYNAMIC_TYPE_PEM = 76, - DYNAMIC_TYPE_DER = 77, - DYNAMIC_TYPE_CERT_EXT = 78, - DYNAMIC_TYPE_ALPN = 79, - DYNAMIC_TYPE_ENCRYPTEDINFO= 80, - DYNAMIC_TYPE_DIRCTX = 81, - DYNAMIC_TYPE_HASHCTX = 82, - DYNAMIC_TYPE_SEED = 83, - DYNAMIC_TYPE_SYMMETRIC_KEY= 84, - DYNAMIC_TYPE_ECC_BUFFER = 85, - DYNAMIC_TYPE_QSH = 86, - DYNAMIC_TYPE_SALT = 87, - DYNAMIC_TYPE_HASH_TMP = 88, - DYNAMIC_TYPE_BLOB = 89, - DYNAMIC_TYPE_NAME_ENTRY = 90, - DYNAMIC_TYPE_CURVE448 = 91, - DYNAMIC_TYPE_ED448 = 92, - DYNAMIC_TYPE_SNIFFER_SERVER = 1000, - DYNAMIC_TYPE_SNIFFER_SESSION = 1001, - DYNAMIC_TYPE_SNIFFER_PB = 1002, - DYNAMIC_TYPE_SNIFFER_PB_BUFFER = 1003, - DYNAMIC_TYPE_SNIFFER_TICKET_ID = 1004, - DYNAMIC_TYPE_SNIFFER_NAMED_KEY = 1005, - }; - - /* max error buffer string size */ - #ifndef WOLFSSL_MAX_ERROR_SZ - #define WOLFSSL_MAX_ERROR_SZ 80 - #endif - - /* stack protection */ - enum { - MIN_STACK_BUFFER = 8 - }; - - - /* Algorithm Types */ - enum wc_AlgoType { - WC_ALGO_TYPE_NONE = 0, - WC_ALGO_TYPE_HASH = 1, - WC_ALGO_TYPE_CIPHER = 2, - WC_ALGO_TYPE_PK = 3, - WC_ALGO_TYPE_RNG = 4, - WC_ALGO_TYPE_SEED = 5, - WC_ALGO_TYPE_HMAC = 6, - - WC_ALGO_TYPE_MAX = WC_ALGO_TYPE_HMAC - }; - - /* hash types */ - enum wc_HashType { - #if defined(HAVE_SELFTEST) || defined(HAVE_FIPS) - /* In selftest build, WC_* types are not mapped to WC_HASH_TYPE types. - * Values here are based on old selftest hmac.h enum, with additions. - * These values are fixed for backwards FIPS compatibility */ - WC_HASH_TYPE_NONE = 15, - WC_HASH_TYPE_MD2 = 16, - WC_HASH_TYPE_MD4 = 17, - WC_HASH_TYPE_MD5 = 0, - WC_HASH_TYPE_SHA = 1, /* SHA-1 (not old SHA-0) */ - WC_HASH_TYPE_SHA224 = 8, - WC_HASH_TYPE_SHA256 = 2, - WC_HASH_TYPE_SHA384 = 5, - WC_HASH_TYPE_SHA512 = 4, - WC_HASH_TYPE_MD5_SHA = 18, - WC_HASH_TYPE_SHA3_224 = 10, - WC_HASH_TYPE_SHA3_256 = 11, - WC_HASH_TYPE_SHA3_384 = 12, - WC_HASH_TYPE_SHA3_512 = 13, - WC_HASH_TYPE_BLAKE2B = 14, - WC_HASH_TYPE_BLAKE2S = 19, - - WC_HASH_TYPE_MAX = WC_HASH_TYPE_BLAKE2S - #else - WC_HASH_TYPE_NONE = 0, - WC_HASH_TYPE_MD2 = 1, - WC_HASH_TYPE_MD4 = 2, - WC_HASH_TYPE_MD5 = 3, - WC_HASH_TYPE_SHA = 4, /* SHA-1 (not old SHA-0) */ - WC_HASH_TYPE_SHA224 = 5, - WC_HASH_TYPE_SHA256 = 6, - WC_HASH_TYPE_SHA384 = 7, - WC_HASH_TYPE_SHA512 = 8, - WC_HASH_TYPE_MD5_SHA = 9, - WC_HASH_TYPE_SHA3_224 = 10, - WC_HASH_TYPE_SHA3_256 = 11, - WC_HASH_TYPE_SHA3_384 = 12, - WC_HASH_TYPE_SHA3_512 = 13, - WC_HASH_TYPE_BLAKE2B = 14, - WC_HASH_TYPE_BLAKE2S = 15, - - WC_HASH_TYPE_MAX = WC_HASH_TYPE_BLAKE2S - #endif /* HAVE_SELFTEST */ - }; - - /* cipher types */ - enum wc_CipherType { - WC_CIPHER_NONE = 0, - WC_CIPHER_AES = 1, - WC_CIPHER_AES_CBC = 2, - WC_CIPHER_AES_GCM = 3, - WC_CIPHER_AES_CTR = 4, - WC_CIPHER_AES_XTS = 5, - WC_CIPHER_AES_CFB = 6, - WC_CIPHER_DES3 = 7, - WC_CIPHER_DES = 8, - WC_CIPHER_CHACHA = 9, - WC_CIPHER_HC128 = 10, - WC_CIPHER_IDEA = 11, - - WC_CIPHER_MAX = WC_CIPHER_HC128 - }; - - /* PK=public key (asymmetric) based algorithms */ - enum wc_PkType { - WC_PK_TYPE_NONE = 0, - WC_PK_TYPE_RSA = 1, - WC_PK_TYPE_DH = 2, - WC_PK_TYPE_ECDH = 3, - WC_PK_TYPE_ECDSA_SIGN = 4, - WC_PK_TYPE_ECDSA_VERIFY = 5, - WC_PK_TYPE_ED25519 = 6, - WC_PK_TYPE_CURVE25519 = 7, - WC_PK_TYPE_RSA_KEYGEN = 8, - WC_PK_TYPE_EC_KEYGEN = 9, - - WC_PK_TYPE_MAX = WC_PK_TYPE_EC_KEYGEN - }; - - - /* settings detection for compile vs runtime math incompatibilities */ - enum { - #if !defined(USE_FAST_MATH) && !defined(SIZEOF_LONG) && !defined(SIZEOF_LONG_LONG) - CTC_SETTINGS = 0x0 - #elif !defined(USE_FAST_MATH) && defined(SIZEOF_LONG) && (SIZEOF_LONG == 8) - CTC_SETTINGS = 0x1 - #elif !defined(USE_FAST_MATH) && defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 8) - CTC_SETTINGS = 0x2 - #elif !defined(USE_FAST_MATH) && defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 4) - CTC_SETTINGS = 0x4 - #elif defined(USE_FAST_MATH) && !defined(SIZEOF_LONG) && !defined(SIZEOF_LONG_LONG) - CTC_SETTINGS = 0x8 - #elif defined(USE_FAST_MATH) && defined(SIZEOF_LONG) && (SIZEOF_LONG == 8) - CTC_SETTINGS = 0x10 - #elif defined(USE_FAST_MATH) && defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 8) - CTC_SETTINGS = 0x20 - #elif defined(USE_FAST_MATH) && defined(SIZEOF_LONG_LONG) && (SIZEOF_LONG_LONG == 4) - CTC_SETTINGS = 0x40 - #else - #error "bad math long / long long settings" - #endif - }; - - - WOLFSSL_API word32 CheckRunTimeSettings(void); - - /* If user uses RSA, DH, DSA, or ECC math lib directly then fast math and long - types need to match at compile time and run time, CheckCtcSettings will - return 1 if a match otherwise 0 */ - #define CheckCtcSettings() (CTC_SETTINGS == CheckRunTimeSettings()) - - /* invalid device id */ - #define INVALID_DEVID -2 - - - /* AESNI requires alignment and ARMASM gains some performance from it - * Xilinx RSA operations require alignment */ - #if defined(WOLFSSL_AESNI) || defined(WOLFSSL_ARMASM) || \ - defined(USE_INTEL_SPEEDUP) || defined(WOLFSSL_AFALG_XILINX) - #if !defined(ALIGN16) - #if defined(__IAR_SYSTEMS_ICC__) || defined(__GNUC__) - #define ALIGN16 __attribute__ ( (aligned (16))) - #elif defined(_MSC_VER) - /* disable align warning, we want alignment ! */ - #pragma warning(disable: 4324) - #define ALIGN16 __declspec (align (16)) - #else - #define ALIGN16 - #endif - #endif /* !ALIGN16 */ - - #if !defined (ALIGN32) - #if defined(__IAR_SYSTEMS_ICC__) || defined(__GNUC__) - #define ALIGN32 __attribute__ ( (aligned (32))) - #elif defined(_MSC_VER) - /* disable align warning, we want alignment ! */ - #pragma warning(disable: 4324) - #define ALIGN32 __declspec (align (32)) - #else - #define ALIGN32 - #endif - #endif /* !ALIGN32 */ - - #if !defined(ALIGN64) - #if defined(__IAR_SYSTEMS_ICC__) || defined(__GNUC__) - #define ALIGN64 __attribute__ ( (aligned (64))) - #elif defined(_MSC_VER) - /* disable align warning, we want alignment ! */ - #pragma warning(disable: 4324) - #define ALIGN64 __declspec (align (64)) - #else - #define ALIGN64 - #endif - #endif /* !ALIGN64 */ - - #if defined(__IAR_SYSTEMS_ICC__) || defined(__GNUC__) - #define ALIGN128 __attribute__ ( (aligned (128))) - #elif defined(_MSC_VER) - /* disable align warning, we want alignment ! */ - #pragma warning(disable: 4324) - #define ALIGN128 __declspec (align (128)) - #else - #define ALIGN128 - #endif - - #if defined(__IAR_SYSTEMS_ICC__) || defined(__GNUC__) - #define ALIGN256 __attribute__ ( (aligned (256))) - #elif defined(_MSC_VER) - /* disable align warning, we want alignment ! */ - #pragma warning(disable: 4324) - #define ALIGN256 __declspec (align (256)) - #else - #define ALIGN256 - #endif - - #else - #ifndef ALIGN16 - #define ALIGN16 - #endif - #ifndef ALIGN32 - #define ALIGN32 - #endif - #ifndef ALIGN64 - #define ALIGN64 - #endif - #ifndef ALIGN128 - #define ALIGN128 - #endif - #ifndef ALIGN256 - #define ALIGN256 - #endif - #endif /* WOLFSSL_AESNI || WOLFSSL_ARMASM */ - - - #ifndef TRUE - #define TRUE 1 - #endif - #ifndef FALSE - #define FALSE 0 - #endif - - - #if defined(HAVE_STACK_SIZE) - #define EXIT_TEST(ret) return (void*)((size_t)(ret)) - #else - #define EXIT_TEST(ret) return ret - #endif - - - #if (defined(__IAR_SYSTEMS_ICC__) && (__IAR_SYSTEMS_ICC__ > 8)) || \ - defined(__GNUC__) - #define WOLFSSL_PACK __attribute__ ((packed)) - #else - #define WOLFSSL_PACK - #endif - - #ifndef __GNUC_PREREQ - #if defined(__GNUC__) && defined(__GNUC_MINOR__) - #define __GNUC_PREREQ(maj, min) \ - ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) - #else - #define __GNUC_PREREQ(maj, min) (0) /* not GNUC */ - #endif - #endif - - #if defined(__IAR_SYSTEMS_ICC__) || defined(__GNUC__) - #define WC_NORETURN __attribute__((noreturn)) - #else - #define WC_NORETURN - #endif - - #if defined(WOLFSSL_KEY_GEN) || defined(HAVE_COMP_KEY) || \ - defined(WOLFSSL_DEBUG_MATH) || defined(DEBUG_WOLFSSL) || \ - defined(WOLFSSL_PUBLIC_MP) || defined(OPENSSL_EXTRA) || \ - (defined(HAVE_ECC) && defined(HAVE_ECC_KEY_EXPORT)) - #undef WC_MP_TO_RADIX - #define WC_MP_TO_RADIX - #endif - - #ifdef __cplusplus - } /* extern "C" */ - #endif - -#endif /* WOLF_CRYPT_TYPES_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/visibility.h b/client/wolfssl/wolfssl/wolfcrypt/visibility.h deleted file mode 100644 index 8ed57fb..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/visibility.h +++ /dev/null @@ -1,79 +0,0 @@ -/* visibility.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - - -/* Visibility control macros */ - -#ifndef WOLF_CRYPT_VISIBILITY_H -#define WOLF_CRYPT_VISIBILITY_H - - -/* for compatibility and so that fips is using same name of macro @wc_fips */ -/* The following visibility wrappers are for old FIPS. New FIPS should use - * the same as a non-FIPS build. */ -#if defined(HAVE_FIPS) && \ - (!defined(HAVE_FIPS_VERSION) || (HAVE_FIPS_VERSION < 2)) - #include <cyassl/ctaocrypt/visibility.h> - #define WOLFSSL_API CYASSL_API - #define WOLFSSL_LOCAL CYASSL_LOCAL -#else - -/* WOLFSSL_API is used for the public API symbols. - It either imports or exports (or does nothing for static builds) - - WOLFSSL_LOCAL is used for non-API symbols (private). -*/ - -#if defined(BUILDING_WOLFSSL) - #if defined(_MSC_VER) || defined(__MINGW32__) || defined(__CYGWIN__) - #if defined(WOLFSSL_DLL) - #define WOLFSSL_API __declspec(dllexport) - #else - #define WOLFSSL_API - #endif - #define WOLFSSL_LOCAL - #elif defined(HAVE_VISIBILITY) && HAVE_VISIBILITY - #define WOLFSSL_API __attribute__ ((visibility("default"))) - #define WOLFSSL_LOCAL __attribute__ ((visibility("hidden"))) - #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) - #define WOLFSSL_API __global - #define WOLFSSL_LOCAL __hidden - #else - #define WOLFSSL_API - #define WOLFSSL_LOCAL - #endif /* HAVE_VISIBILITY */ -#else /* BUILDING_WOLFSSL */ - #if defined(_MSC_VER) || defined(__MINGW32__) || defined(__CYGWIN__) - #if defined(WOLFSSL_DLL) - #define WOLFSSL_API __declspec(dllimport) - #else - #define WOLFSSL_API - #endif - #define WOLFSSL_LOCAL - #else - #define WOLFSSL_API - #define WOLFSSL_LOCAL - #endif -#endif /* BUILDING_WOLFSSL */ - -#endif /* HAVE_FIPS */ -#endif /* WOLF_CRYPT_VISIBILITY_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/wc_encrypt.h b/client/wolfssl/wolfssl/wolfcrypt/wc_encrypt.h deleted file mode 100644 index 6d26e2c..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/wc_encrypt.h +++ /dev/null @@ -1,101 +0,0 @@ -/* wc_encrypt.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/wc_encrypt.h -*/ - - -#ifndef WOLF_CRYPT_ENCRYPT_H -#define WOLF_CRYPT_ENCRYPT_H - -#include <wolfssl/wolfcrypt/types.h> -#include <wolfssl/wolfcrypt/aes.h> -#include <wolfssl/wolfcrypt/chacha.h> -#include <wolfssl/wolfcrypt/des3.h> -#include <wolfssl/wolfcrypt/arc4.h> - -#ifdef __cplusplus - extern "C" { -#endif - -/* determine max cipher key size */ -#ifndef NO_AES - #define WC_MAX_SYM_KEY_SIZE (AES_MAX_KEY_SIZE/8) -#elif defined(HAVE_CHACHA) - #define WC_MAX_SYM_KEY_SIZE CHACHA_MAX_KEY_SZ -#elif !defined(NO_DES3) - #define WC_MAX_SYM_KEY_SIZE DES3_KEY_SIZE -#elif !defined(NO_RC4) - #define WC_MAX_SYM_KEY_SIZE RC4_KEY_SIZE -#else - #define WC_MAX_SYM_KEY_SIZE 32 -#endif - - -#if !defined(NO_AES) && defined(HAVE_AES_CBC) -WOLFSSL_API int wc_AesCbcEncryptWithKey(byte* out, const byte* in, word32 inSz, - const byte* key, word32 keySz, - const byte* iv); -WOLFSSL_API int wc_AesCbcDecryptWithKey(byte* out, const byte* in, word32 inSz, - const byte* key, word32 keySz, - const byte* iv); -#endif /* !NO_AES */ - - -#ifndef NO_DES3 -WOLFSSL_API int wc_Des_CbcDecryptWithKey(byte* out, - const byte* in, word32 sz, - const byte* key, const byte* iv); -WOLFSSL_API int wc_Des_CbcEncryptWithKey(byte* out, - const byte* in, word32 sz, - const byte* key, const byte* iv); -WOLFSSL_API int wc_Des3_CbcEncryptWithKey(byte* out, - const byte* in, word32 sz, - const byte* key, const byte* iv); -WOLFSSL_API int wc_Des3_CbcDecryptWithKey(byte* out, - const byte* in, word32 sz, - const byte* key, const byte* iv); -#endif /* !NO_DES3 */ - - - - -#ifdef WOLFSSL_ENCRYPTED_KEYS - struct EncryptedInfo; - WOLFSSL_API int wc_BufferKeyDecrypt(struct EncryptedInfo* info, byte* der, word32 derSz, - const byte* password, int passwordSz, int hashType); - WOLFSSL_API int wc_BufferKeyEncrypt(struct EncryptedInfo* info, byte* der, word32 derSz, - const byte* password, int passwordSz, int hashType); -#endif /* WOLFSSL_ENCRYPTED_KEYS */ - -#ifndef NO_PWDBASED - WOLFSSL_LOCAL int wc_CryptKey(const char* password, int passwordSz, - byte* salt, int saltSz, int iterations, int id, byte* input, int length, - int version, byte* cbcIv, int enc, int shaOid); -#endif - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLF_CRYPT_ENCRYPT_H */ - diff --git a/client/wolfssl/wolfssl/wolfcrypt/wc_pkcs11.h b/client/wolfssl/wolfssl/wolfcrypt/wc_pkcs11.h deleted file mode 100644 index d8dfae5..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/wc_pkcs11.h +++ /dev/null @@ -1,94 +0,0 @@ -/* wc_pkcs11.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -#ifndef _WOLFPKCS11_H_ -#define _WOLFPKCS11_H_ - -#include <wolfssl/wolfcrypt/types.h> - -#ifdef HAVE_PKCS11 - -#ifndef WOLF_CRYPTO_CB - #error PKCS11 support requires ./configure --enable-cryptocb or WOLF_CRYPTO_CB to be defined -#endif - -#include <wolfssl/wolfcrypt/cryptocb.h> -#include <wolfssl/wolfcrypt/pkcs11.h> - -#ifdef __cplusplus - extern "C" { -#endif - - -typedef struct Pkcs11Dev { - void* dlHandle; /* Handle to library */ - CK_FUNCTION_LIST* func; /* Array of functions */ - void* heap; -} Pkcs11Dev; - -typedef struct Pkcs11Token { - CK_FUNCTION_LIST* func; /* Table of PKCS#11 function from lib */ - CK_SLOT_ID slotId; /* Id of slot to use */ - CK_SESSION_HANDLE handle; /* Handle to active session */ - CK_UTF8CHAR_PTR userPin; /* User's PIN to login with */ - CK_ULONG userPinSz; /* Size of user's PIN in bytes */ -} Pkcs11Token; - -typedef struct Pkcs11Session { - CK_FUNCTION_LIST* func; /* Table of PKCS#11 function from lib */ - CK_SLOT_ID slotId; /* Id of slot to use */ - CK_SESSION_HANDLE handle; /* Handle to active session */ -} Pkcs11Session; - -/* Types of keys that can be stored. */ -enum Pkcs11KeyType { - PKCS11_KEY_TYPE_AES_GCM, - PKCS11_KEY_TYPE_AES_CBC, - PKCS11_KEY_TYPE_HMAC, - PKCS11_KEY_TYPE_RSA, - PKCS11_KEY_TYPE_EC, -}; - - -WOLFSSL_API int wc_Pkcs11_Initialize(Pkcs11Dev* dev, const char* library, - void* heap); -WOLFSSL_API void wc_Pkcs11_Finalize(Pkcs11Dev* dev); - -WOLFSSL_API int wc_Pkcs11Token_Init(Pkcs11Token* token, Pkcs11Dev* dev, - int slotId, const char* tokenName, const unsigned char *userPin, - int userPinSz); -WOLFSSL_API void wc_Pkcs11Token_Final(Pkcs11Token* token); -WOLFSSL_API int wc_Pkcs11Token_Open(Pkcs11Token* token, int readWrite); -WOLFSSL_API void wc_Pkcs11Token_Close(Pkcs11Token* token); - -WOLFSSL_API int wc_Pkcs11StoreKey(Pkcs11Token* token, int type, int clear, - void* key); - -WOLFSSL_API int wc_Pkcs11_CryptoDevCb(int devId, wc_CryptoInfo* info, - void* ctx); - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* HAVE_PKCS11 */ - -#endif /* _WOLFPKCS11_H_ */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/wc_port.h b/client/wolfssl/wolfssl/wolfcrypt/wc_port.h deleted file mode 100644 index 88c7bfe..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/wc_port.h +++ /dev/null @@ -1,780 +0,0 @@ -/* wc_port.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfcrypt/wc_port.h -*/ - -#ifndef WOLF_CRYPT_PORT_H -#define WOLF_CRYPT_PORT_H - -#include <wolfssl/wolfcrypt/settings.h> -#include <wolfssl/wolfcrypt/visibility.h> - -#ifdef __cplusplus - extern "C" { -#endif - -/* Detect if compiler supports C99. "NO_WOLF_C99" can be defined in - * user_settings.h to disable checking for C99 support. */ -#if !defined(WOLF_C99) && defined(__STDC_VERSION__) && \ - !defined(WOLFSSL_ARDUINO) && !defined(NO_WOLF_C99) - #if __STDC_VERSION__ >= 199901L - #define WOLF_C99 - #endif -#endif - - -/* GENERIC INCLUDE SECTION */ -#if defined(FREESCALE_MQX) || defined(FREESCALE_KSDK_MQX) - #include <mqx.h> - #if (defined(MQX_USE_IO_OLD) && MQX_USE_IO_OLD) || \ - defined(FREESCALE_MQX_5_0) - #include <fio.h> - #else - #include <nio.h> - #endif -#endif - - -/* THREADING/MUTEX SECTION */ -#ifdef USE_WINDOWS_API - #ifdef WOLFSSL_GAME_BUILD - #include "system/xtl.h" - #else - #ifndef WIN32_LEAN_AND_MEAN - #define WIN32_LEAN_AND_MEAN - #endif - #ifndef WOLFSSL_SGX - #if defined(_WIN32_WCE) || defined(WIN32_LEAN_AND_MEAN) - /* On WinCE winsock2.h must be included before windows.h */ - #include <winsock2.h> - #endif - #include <windows.h> - #endif /* WOLFSSL_SGX */ - #endif -#elif defined(THREADX) - #ifndef SINGLE_THREADED - #ifdef NEED_THREADX_TYPES - #include <types.h> - #endif - #include <tx_api.h> - #endif -#elif defined(WOLFSSL_DEOS) - #include "mutexapi.h" -#elif defined(MICRIUM) - /* do nothing, just don't pick Unix */ -#elif defined(FREERTOS) || defined(FREERTOS_TCP) || defined(WOLFSSL_SAFERTOS) - /* do nothing */ -#elif defined(EBSNET) - /* do nothing */ -#elif defined(FREESCALE_MQX) || defined(FREESCALE_KSDK_MQX) - /* do nothing */ -#elif defined(FREESCALE_FREE_RTOS) - #include "fsl_os_abstraction.h" -#elif defined(WOLFSSL_VXWORKS) - #include <semLib.h> -#elif defined(WOLFSSL_uITRON4) - #include "stddef.h" - #include "kernel.h" -#elif defined(WOLFSSL_uTKERNEL2) - #include "tk/tkernel.h" -#elif defined(WOLFSSL_CMSIS_RTOS) - #include "cmsis_os.h" -#elif defined(WOLFSSL_CMSIS_RTOSv2) - #include "cmsis_os2.h" -#elif defined(WOLFSSL_MDK_ARM) - #if defined(WOLFSSL_MDK5) - #include "cmsis_os.h" - #else - #include <rtl.h> - #endif -#elif defined(WOLFSSL_CMSIS_RTOS) - #include "cmsis_os.h" -#elif defined(WOLFSSL_TIRTOS) - #include <ti/sysbios/BIOS.h> - #include <ti/sysbios/knl/Semaphore.h> -#elif defined(WOLFSSL_FROSTED) - #include <semaphore.h> -#elif defined(INTIME_RTOS) - #include <rt.h> - #include <io.h> -#elif defined(WOLFSSL_NUCLEUS_1_2) - /* NU_DEBUG needed struct access in nucleus_realloc */ - #define NU_DEBUG - #include "plus/nucleus.h" - #include "nucleus.h" -#elif defined(WOLFSSL_APACHE_MYNEWT) - /* do nothing */ -#elif defined(WOLFSSL_ZEPHYR) - #ifndef SINGLE_THREADED - #include <kernel.h> - #endif -#elif defined(WOLFSSL_TELIT_M2MB) - - /* Telit SDK uses C++ compile option (--cpp), which causes link issue - to API's if wrapped in extern "C" */ - #ifdef __cplusplus - } /* extern "C" */ - #endif - - #include "m2mb_types.h" - #include "m2mb_os_types.h" - #include "m2mb_os_api.h" - #include "m2mb_os.h" - #include "m2mb_os_mtx.h" - #ifndef NO_ASN_TIME - #include "m2mb_rtc.h" - #endif - #ifndef NO_FILESYSTEM - #include "m2mb_fs_posix.h" - #endif - - #undef kB /* eliminate conflict in asn.h */ - - #ifdef __cplusplus - extern "C" { - #endif - -#else - #ifndef SINGLE_THREADED - #define WOLFSSL_PTHREADS - #include <pthread.h> - #endif - #if (defined(OPENSSL_EXTRA) || defined(GOAHEAD_WS)) && \ - !defined(NO_FILESYSTEM) - #include <unistd.h> /* for close of BIO */ - #endif -#endif - -/* For FIPS keep the function names the same */ -#ifdef HAVE_FIPS -#define wc_InitMutex InitMutex -#define wc_FreeMutex FreeMutex -#define wc_LockMutex LockMutex -#define wc_UnLockMutex UnLockMutex -#endif /* HAVE_FIPS */ - -#ifdef SINGLE_THREADED - typedef int wolfSSL_Mutex; -#else /* MULTI_THREADED */ - /* FREERTOS comes first to enable use of FreeRTOS Windows simulator only */ - #if defined(FREERTOS) - typedef xSemaphoreHandle wolfSSL_Mutex; - #elif defined(FREERTOS_TCP) - #include "FreeRTOS.h" - #include "semphr.h" - typedef SemaphoreHandle_t wolfSSL_Mutex; - #elif defined(WOLFSSL_SAFERTOS) - typedef struct wolfSSL_Mutex { - signed char mutexBuffer[portQUEUE_OVERHEAD_BYTES]; - xSemaphoreHandle mutex; - } wolfSSL_Mutex; - #elif defined(USE_WINDOWS_API) - typedef CRITICAL_SECTION wolfSSL_Mutex; - #elif defined(WOLFSSL_PTHREADS) - typedef pthread_mutex_t wolfSSL_Mutex; - #elif defined(THREADX) - typedef TX_MUTEX wolfSSL_Mutex; - #elif defined(WOLFSSL_DEOS) - typedef mutex_handle_t wolfSSL_Mutex; - #elif defined(MICRIUM) - typedef OS_MUTEX wolfSSL_Mutex; - #elif defined(EBSNET) - typedef RTP_MUTEX wolfSSL_Mutex; - #elif defined(FREESCALE_MQX) || defined(FREESCALE_KSDK_MQX) - typedef MUTEX_STRUCT wolfSSL_Mutex; - #elif defined(FREESCALE_FREE_RTOS) - typedef mutex_t wolfSSL_Mutex; - #elif defined(WOLFSSL_VXWORKS) - typedef SEM_ID wolfSSL_Mutex; - #elif defined(WOLFSSL_uITRON4) - typedef struct wolfSSL_Mutex { - T_CSEM sem ; - ID id ; - } wolfSSL_Mutex; - #elif defined(WOLFSSL_uTKERNEL2) - typedef struct wolfSSL_Mutex { - T_CSEM sem ; - ID id ; - } wolfSSL_Mutex; - #elif defined(WOLFSSL_MDK_ARM) - #if defined(WOLFSSL_CMSIS_RTOS) - typedef osMutexId wolfSSL_Mutex; - #else - typedef OS_MUT wolfSSL_Mutex; - #endif - #elif defined(WOLFSSL_CMSIS_RTOS) - typedef osMutexId wolfSSL_Mutex; - #elif defined(WOLFSSL_CMSIS_RTOSv2) - typedef osMutexId_t wolfSSL_Mutex; - #elif defined(WOLFSSL_TIRTOS) - typedef ti_sysbios_knl_Semaphore_Handle wolfSSL_Mutex; - #elif defined(WOLFSSL_FROSTED) - typedef mutex_t * wolfSSL_Mutex; - #elif defined(INTIME_RTOS) - typedef RTHANDLE wolfSSL_Mutex; - #elif defined(WOLFSSL_NUCLEUS_1_2) - typedef NU_SEMAPHORE wolfSSL_Mutex; - #elif defined(WOLFSSL_ZEPHYR) - typedef struct k_mutex wolfSSL_Mutex; - #elif defined(WOLFSSL_TELIT_M2MB) - typedef M2MB_OS_MTX_HANDLE wolfSSL_Mutex; - #else - #error Need a mutex type in multithreaded mode - #endif /* USE_WINDOWS_API */ -#endif /* SINGLE_THREADED */ - -/* Enable crypt HW mutex for Freescale MMCAU, PIC32MZ or STM32 */ -#if defined(FREESCALE_MMCAU) || defined(WOLFSSL_MICROCHIP_PIC32MZ) || \ - defined(STM32_CRYPTO) - #ifndef WOLFSSL_CRYPT_HW_MUTEX - #define WOLFSSL_CRYPT_HW_MUTEX 1 - #endif -#endif /* FREESCALE_MMCAU */ - -#ifndef WOLFSSL_CRYPT_HW_MUTEX - #define WOLFSSL_CRYPT_HW_MUTEX 0 -#endif - -#if WOLFSSL_CRYPT_HW_MUTEX - /* wolfSSL_CryptHwMutexInit is called on first wolfSSL_CryptHwMutexLock, - however it's recommended to call this directly on Hw init to avoid possible - race condition where two calls to wolfSSL_CryptHwMutexLock are made at - the same time. */ - int wolfSSL_CryptHwMutexInit(void); - int wolfSSL_CryptHwMutexLock(void); - int wolfSSL_CryptHwMutexUnLock(void); -#else - /* Define stubs, since HW mutex is disabled */ - #define wolfSSL_CryptHwMutexInit() 0 /* Success */ - #define wolfSSL_CryptHwMutexLock() 0 /* Success */ - #define wolfSSL_CryptHwMutexUnLock() (void)0 /* Success */ -#endif /* WOLFSSL_CRYPT_HW_MUTEX */ - -/* Mutex functions */ -WOLFSSL_API int wc_InitMutex(wolfSSL_Mutex*); -WOLFSSL_API wolfSSL_Mutex* wc_InitAndAllocMutex(void); -WOLFSSL_API int wc_FreeMutex(wolfSSL_Mutex*); -WOLFSSL_API int wc_LockMutex(wolfSSL_Mutex*); -WOLFSSL_API int wc_UnLockMutex(wolfSSL_Mutex*); -#if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) -/* dynamically set which mutex to use. unlock / lock is controlled by flag */ -typedef void (mutex_cb)(int flag, int type, const char* file, int line); - -WOLFSSL_API int wc_LockMutex_ex(int flag, int type, const char* file, int line); -WOLFSSL_API int wc_SetMutexCb(mutex_cb* cb); -#endif - -/* main crypto initialization function */ -WOLFSSL_API int wolfCrypt_Init(void); -WOLFSSL_API int wolfCrypt_Cleanup(void); - - -/* FILESYSTEM SECTION */ -/* filesystem abstraction layer, used by ssl.c */ -#ifndef NO_FILESYSTEM - -#if defined(EBSNET) - #include "vfapi.h" - #include "vfile.h" - - int ebsnet_fseek(int a, long b, int c); /* Not prototyped in vfile.h per - * EBSnet feedback */ - - #define XFILE int - #define XFOPEN(NAME, MODE) vf_open((const char *)NAME, VO_RDONLY, 0); - #define XFSEEK ebsnet_fseek - #define XFTELL vf_tell - #define XREWIND vf_rewind - #define XFREAD(BUF, SZ, AMT, FD) vf_read(FD, BUF, SZ*AMT) - #define XFWRITE(BUF, SZ, AMT, FD) vf_write(FD, BUF, SZ*AMT) - #define XFCLOSE vf_close - #define XSEEK_END VSEEK_END - #define XBADFILE -1 - #define XFGETS(b,s,f) -2 /* Not ported yet */ -#elif defined(LSR_FS) - #include <fs.h> - #define XFILE struct fs_file* - #define XFOPEN(NAME, MODE) fs_open((char*)NAME); - #define XFSEEK(F, O, W) (void)F - #define XFTELL(F) (F)->len - #define XREWIND(F) (void)F - #define XFREAD(BUF, SZ, AMT, F) fs_read(F, (char*)BUF, SZ*AMT) - #define XFWRITE(BUF, SZ, AMT, F) fs_write(F, (char*)BUF, SZ*AMT) - #define XFCLOSE fs_close - #define XSEEK_END 0 - #define XBADFILE NULL - #define XFGETS(b,s,f) -2 /* Not ported yet */ -#elif defined(FREESCALE_MQX) || defined(FREESCALE_KSDK_MQX) - #define XFILE MQX_FILE_PTR - #define XFOPEN fopen - #define XFSEEK fseek - #define XFTELL ftell - #define XREWIND(F) fseek(F, 0, IO_SEEK_SET) - #define XFREAD fread - #define XFWRITE fwrite - #define XFCLOSE fclose - #define XSEEK_END IO_SEEK_END - #define XBADFILE NULL - #define XFGETS fgets -#elif defined(WOLFSSL_DEOS) - #define NO_FILESYSTEM - #warning "TODO - DDC-I Certifiable Fast File System for Deos is not integrated" - //#define XFILE bfd * - -#elif defined(MICRIUM) - #include <fs_api.h> - #define XFILE FS_FILE* - #define XFOPEN fs_fopen - #define XFSEEK fs_fseek - #define XFTELL fs_ftell - #define XREWIND fs_rewind - #define XFREAD fs_fread - #define XFWRITE fs_fwrite - #define XFCLOSE fs_fclose - #define XSEEK_END FS_SEEK_END - #define XBADFILE NULL - #define XFGETS(b,s,f) -2 /* Not ported yet */ -#elif defined(WOLFSSL_NUCLEUS_1_2) - #include "fal/inc/fal.h" - #define XFILE FILE* - #define XFOPEN fopen - #define XFSEEK fseek - #define XFTELL ftell - #define XREWIND rewind - #define XFREAD fread - #define XFWRITE fwrite - #define XFCLOSE fclose - #define XSEEK_END PSEEK_END - #define XBADFILE NULL -#elif defined(WOLFSSL_APACHE_MYNEWT) - #include <fs/fs.h> - #define XFILE struct fs_file* - - #define XFOPEN mynewt_fopen - #define XFSEEK mynewt_fseek - #define XFTELL mynewt_ftell - #define XREWIND mynewt_rewind - #define XFREAD mynewt_fread - #define XFWRITE mynewt_fwrite - #define XFCLOSE mynewt_fclose - #define XSEEK_END 2 - #define XBADFILE NULL - #define XFGETS(b,s,f) -2 /* Not ported yet */ -#elif defined(WOLFSSL_ZEPHYR) - #include <fs.h> - - #define XFILE struct fs_file_t* - #define STAT struct fs_dirent - - XFILE z_fs_open(const char* filename, const char* perm); - int z_fs_close(XFILE file); - - #define XFOPEN z_fs_open - #define XFCLOSE z_fs_close - #define XFSEEK fs_seek - #define XFTELL fs_tell - #define XFREWIND fs_rewind - #define XREWIND(F) fs_seek(F, 0, FS_SEEK_SET) - #define XFREAD(P,S,N,F) fs_read(F, P, S*N) - #define XFWRITE(P,S,N,F) fs_write(F, P, S*N) - #define XSEEK_END FS_SEEK_END - #define XBADFILE NULL - #define XFGETS(b,s,f) -2 /* Not ported yet */ - -#elif defined(WOLFSSL_TELIT_M2MB) - #define XFILE INT32 - #define XFOPEN(NAME, MODE) m2mb_fs_open((NAME), 0, (MODE)) - #define XFSEEK(F, O, W) m2mb_fs_lseek((F), (O), (W)) - #define XFTELL(F) m2mb_fs_lseek((F), 0, M2MB_SEEK_END) - #define XREWIND(F) (void)F - #define XFREAD(BUF, SZ, AMT, F) m2mb_fs_read((F), (BUF), (SZ)*(AMT)) - #define XFWRITE(BUF, SZ, AMT, F) m2mb_fs_write((F), (BUF), (SZ)*(AMT)) - #define XFCLOSE m2mb_fs_close - #define XSEEK_END M2MB_SEEK_END - #define XBADFILE -1 - #define XFGETS(b,s,f) -2 /* Not ported yet */ - -#elif defined(WOLFSSL_USER_FILESYSTEM) - /* To be defined in user_settings.h */ -#else - /* stdio, default case */ - #include <stdio.h> - #define XFILE FILE* - #if defined(WOLFSSL_MDK_ARM) - extern FILE * wolfSSL_fopen(const char *name, const char *mode) ; - #define XFOPEN wolfSSL_fopen - #else - #define XFOPEN fopen - #endif - #define XFSEEK fseek - #define XFTELL ftell - #define XREWIND rewind - #define XFREAD fread - #define XFWRITE fwrite - #define XFCLOSE fclose - #define XSEEK_END SEEK_END - #define XBADFILE NULL - #define XFGETS fgets - - #if !defined(USE_WINDOWS_API) && !defined(NO_WOLFSSL_DIR)\ - && !defined(WOLFSSL_NUCLEUS) && !defined(WOLFSSL_NUCLEUS_1_2) - #include <dirent.h> - #include <unistd.h> - #include <sys/stat.h> - #endif -#endif - - #ifndef MAX_FILENAME_SZ - #define MAX_FILENAME_SZ 256 /* max file name length */ - #endif - #ifndef MAX_PATH - #define MAX_PATH 256 - #endif - -#if !defined(NO_WOLFSSL_DIR) && !defined(WOLFSSL_NUCLEUS) && \ - !defined(WOLFSSL_NUCLEUS_1_2) - typedef struct ReadDirCtx { - #ifdef USE_WINDOWS_API - WIN32_FIND_DATAA FindFileData; - HANDLE hFind; - #elif defined(WOLFSSL_ZEPHYR) - struct fs_dirent entry; - struct fs_dir_t dir; - struct fs_dirent s; - struct fs_dir_t* dirp; - - #elif defined(WOLFSSL_TELIT_M2MB) - M2MB_DIR_T* dir; - struct M2MB_DIRENT* entry; - struct M2MB_STAT s; - #else - struct dirent* entry; - DIR* dir; - struct stat s; - #endif - char name[MAX_FILENAME_SZ]; - } ReadDirCtx; - - #define WC_READDIR_NOFILE -1 - - WOLFSSL_API int wc_ReadDirFirst(ReadDirCtx* ctx, const char* path, char** name); - WOLFSSL_API int wc_ReadDirNext(ReadDirCtx* ctx, const char* path, char** name); - WOLFSSL_API void wc_ReadDirClose(ReadDirCtx* ctx); -#endif /* !NO_WOLFSSL_DIR */ - -#endif /* !NO_FILESYSTEM */ - - -/* MIN/MAX MACRO SECTION */ -/* Windows API defines its own min() macro. */ -#if defined(USE_WINDOWS_API) - #if defined(min) || defined(WOLFSSL_MYSQL_COMPATIBLE) - #define WOLFSSL_HAVE_MIN - #endif /* min */ - #if defined(max) || defined(WOLFSSL_MYSQL_COMPATIBLE) - #define WOLFSSL_HAVE_MAX - #endif /* max */ -#endif /* USE_WINDOWS_API */ - - -/* TIME SECTION */ -/* Time functions */ -#ifndef NO_ASN_TIME -#if defined(USER_TIME) - /* Use our gmtime and time_t/struct tm types. - Only needs seconds since EPOCH using XTIME function. - time_t XTIME(time_t * timer) {} - */ - #define WOLFSSL_GMTIME - #ifndef HAVE_TM_TYPE - #define USE_WOLF_TM - #endif - #ifndef HAVE_TIME_T_TYPE - #define USE_WOLF_TIME_T - #endif - -#elif defined(TIME_OVERRIDES) - /* Override XTIME() and XGMTIME() functionality. - Requires user to provide these functions: - time_t XTIME(time_t * timer) {} - struct tm* XGMTIME(const time_t* timer, struct tm* tmp) {} - */ - #ifndef HAVE_TIME_T_TYPE - #define USE_WOLF_TIME_T - #endif - #ifndef HAVE_TM_TYPE - #define USE_WOLF_TM - #endif - #define NEED_TMP_TIME - -#elif defined(WOLFSSL_XILINX) - #define USER_TIME - #include <time.h> - -#elif defined(HAVE_RTP_SYS) - #include "os.h" /* dc_rtc_api needs */ - #include "dc_rtc_api.h" /* to get current time */ - - /* uses parital <time.h> structures */ - #define XTIME(tl) (0) - #define XGMTIME(c, t) rtpsys_gmtime((c)) - -#elif defined(WOLFSSL_DEOS) - #define XTIME(t1) deos_time((t1)) - #define WOLFSSL_GMTIME - #define USE_WOLF_TM - #define USE_WOLF_TIME_T - -#elif defined(MICRIUM) - #include <clk.h> - #include <time.h> - #define XTIME(t1) micrium_time((t1)) - #define WOLFSSL_GMTIME - -#elif defined(MICROCHIP_TCPIP_V5) || defined(MICROCHIP_TCPIP) - #include <time.h> - #define XTIME(t1) pic32_time((t1)) - #define XGMTIME(c, t) gmtime((c)) - -#elif defined(FREESCALE_MQX) || defined(FREESCALE_KSDK_MQX) - #ifdef FREESCALE_MQX_4_0 - #include <time.h> - extern time_t mqx_time(time_t* timer); - #else - #define HAVE_GMTIME_R - #endif - #define XTIME(t1) mqx_time((t1)) - -#elif defined(FREESCALE_KSDK_BM) || defined(FREESCALE_FREE_RTOS) || defined(FREESCALE_KSDK_FREERTOS) - #include <time.h> - #ifndef XTIME - /*extern time_t ksdk_time(time_t* timer);*/ - #define XTIME(t1) ksdk_time((t1)) - #endif - #define XGMTIME(c, t) gmtime((c)) - -#elif defined(WOLFSSL_ATMEL) && defined(WOLFSSL_ATMEL_TIME) - #define XTIME(t1) atmel_get_curr_time_and_date((t1)) - #define WOLFSSL_GMTIME - #define USE_WOLF_TM - #define USE_WOLF_TIME_T - -#elif defined(WOLFSSL_WICED) - #include <time.h> - time_t wiced_pseudo_unix_epoch_time(time_t * timer); - #define XTIME(t1) wiced_pseudo_unix_epoch_time((t1)) - #define HAVE_GMTIME_R - -#elif defined(IDIRECT_DEV_TIME) - /*Gets the timestamp from cloak software owned by VT iDirect - in place of time() from <time.h> */ - #include <time.h> - #define XTIME(t1) idirect_time((t1)) - #define XGMTIME(c, t) gmtime((c)) - -#elif defined(_WIN32_WCE) - #include <windows.h> - #define XTIME(t1) windows_time((t1)) - #define WOLFSSL_GMTIME - -#elif defined(WOLFSSL_APACHE_MYNEWT) - #include "os/os_time.h" - #define XTIME(t1) mynewt_time((t1)) - #define WOLFSSL_GMTIME - #define USE_WOLF_TM - #define USE_WOLF_TIME_T - -#elif defined(WOLFSSL_ZEPHYR) - #ifndef _POSIX_C_SOURCE - #include <posix/time.h> - #else - #include <sys/time.h> - #endif - - typedef signed int time_t; - - time_t z_time(time_t *timer); - - #define XTIME(tl) z_time((tl)) - #define XGMTIME(c, t) gmtime((c)) - #define WOLFSSL_GMTIME - - #define USE_WOLF_TM - -#elif defined(WOLFSSL_TELIT_M2MB) - typedef long time_t; - extern time_t m2mb_xtime(time_t * timer); - #define XTIME(tl) m2mb_xtime((tl)) - #ifdef WOLFSSL_TLS13 - extern time_t m2mb_xtime_ms(time_t * timer); - #define XTIME_MS(tl) m2mb_xtime_ms((tl)) - #endif - #ifndef NO_CRYPT_BENCHMARK - extern double m2mb_xtime_bench(int reset); - #define WOLFSSL_CURRTIME_REMAP m2mb_xtime_bench - #endif - #define XGMTIME(c, t) gmtime((c)) - #define WOLFSSL_GMTIME - #define USE_WOLF_TM - -#else - /* default */ - /* uses complete <time.h> facility */ - #include <time.h> - #if defined(HAVE_SYS_TIME_H) - #include <sys/time.h> - #endif - - /* PowerPC time_t is int */ - #ifdef __PPC__ - #define TIME_T_NOT_64BIT - #endif -#endif - -#ifdef SIZEOF_TIME_T - /* check if size of time_t from autoconf is less than 8 bytes (64bits) */ - #if SIZEOF_TIME_T < 8 - #undef TIME_T_NOT_64BIT - #define TIME_T_NOT_64BIT - #endif -#endif -#ifdef TIME_T_NOT_LONG - /* one old reference to TIME_T_NOT_LONG in GCC-ARM example README - * this keeps support for the old macro name */ - #undef TIME_T_NOT_64BIT - #define TIME_T_NOT_64BIT -#endif - -/* Map default time functions */ -#if !defined(XTIME) && !defined(TIME_OVERRIDES) && !defined(USER_TIME) - #ifdef TEST_BEFORE_DATE - #define XTIME(tl) (946681200UL) /* Jan 1, 2000 */ - #else - #define XTIME(tl) time((tl)) - #endif -#endif -#if !defined(XGMTIME) && !defined(TIME_OVERRIDES) - #if defined(WOLFSSL_GMTIME) || !defined(HAVE_GMTIME_R) || defined(WOLF_C99) - #define XGMTIME(c, t) gmtime((c)) - #else - #define XGMTIME(c, t) gmtime_r((c), (t)) - #define NEED_TMP_TIME - #endif -#endif -#if !defined(XVALIDATE_DATE) && !defined(HAVE_VALIDATE_DATE) - #define USE_WOLF_VALIDDATE - #define XVALIDATE_DATE(d, f, t) ValidateDate((d), (f), (t)) -#endif - -/* wolf struct tm and time_t */ -#if defined(USE_WOLF_TM) - struct tm { - int tm_sec; /* seconds after the minute [0-60] */ - int tm_min; /* minutes after the hour [0-59] */ - int tm_hour; /* hours since midnight [0-23] */ - int tm_mday; /* day of the month [1-31] */ - int tm_mon; /* months since January [0-11] */ - int tm_year; /* years since 1900 */ - int tm_wday; /* days since Sunday [0-6] */ - int tm_yday; /* days since January 1 [0-365] */ - int tm_isdst; /* Daylight Savings Time flag */ - long tm_gmtoff; /* offset from CUT in seconds */ - char *tm_zone; /* timezone abbreviation */ - }; -#endif /* USE_WOLF_TM */ -#if defined(USE_WOLF_TIME_T) - typedef long time_t; -#endif -#if defined(USE_WOLF_SUSECONDS_T) - typedef long suseconds_t; -#endif -#if defined(USE_WOLF_TIMEVAL_T) - struct timeval - { - time_t tv_sec; - suseconds_t tv_usec; - }; -#endif - - /* forward declarations */ -#if defined(USER_TIME) - struct tm* gmtime(const time_t* timer); - extern time_t XTIME(time_t * timer); - - #ifdef STACK_TRAP - /* for stack trap tracking, don't call os gmtime on OS X/linux, - uses a lot of stack spce */ - extern time_t time(time_t * timer); - #define XTIME(tl) time((tl)) - #endif /* STACK_TRAP */ - -#elif defined(TIME_OVERRIDES) - extern time_t XTIME(time_t * timer); - extern struct tm* XGMTIME(const time_t* timer, struct tm* tmp); -#elif defined(WOLFSSL_GMTIME) - struct tm* gmtime(const time_t* timer); -#endif -#endif /* NO_ASN_TIME */ - - -#ifndef WOLFSSL_LEANPSK - char* mystrnstr(const char* s1, const char* s2, unsigned int n); -#endif - -#ifndef FILE_BUFFER_SIZE - #define FILE_BUFFER_SIZE 1024 /* default static file buffer size for input, - will use dynamic buffer if not big enough */ -#endif - -#ifdef HAVE_CAVIUM_OCTEON_SYNC - /* By default, the OCTEON's global variables are all thread local. This - * tag allows them to be shared between threads. */ - #include "cvmx-platform.h" - #define WOLFSSL_GLOBAL CVMX_SHARED -#else - #define WOLFSSL_GLOBAL -#endif - -#ifdef WOLFSSL_DSP - #include "wolfssl_dsp.h" - - /* callbacks for setting handle */ - typedef int (*wolfSSL_DSP_Handle_cb)(remote_handle64 *handle, int finished, - void *ctx); - WOLFSSL_API int wolfSSL_GetHandleCbSet(); - WOLFSSL_API int wolfSSL_SetHandleCb(wolfSSL_DSP_Handle_cb in); - WOLFSSL_LOCAL int wolfSSL_InitHandle(); - WOLFSSL_LOCAL void wolfSSL_CleanupHandle(); -#endif - -#ifdef WOLFSSL_SCE - #ifndef WOLFSSL_SCE_GSCE_HANDLE - #define WOLFSSL_SCE_GSCE_HANDLE g_sce - #endif -#endif - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLF_CRYPT_PORT_H */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/wolfevent.h b/client/wolfssl/wolfssl/wolfcrypt/wolfevent.h deleted file mode 100644 index 8370d5e..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/wolfevent.h +++ /dev/null @@ -1,120 +0,0 @@ -/* wolfevent.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -#ifndef _WOLF_EVENT_H_ -#define _WOLF_EVENT_H_ - -#ifdef __cplusplus - extern "C" { -#endif - -#ifndef SINGLE_THREADED - #include <wolfssl/wolfcrypt/wc_port.h> -#endif - -typedef struct WOLF_EVENT WOLF_EVENT; -typedef unsigned short WOLF_EVENT_FLAG; - -typedef enum WOLF_EVENT_TYPE { - WOLF_EVENT_TYPE_NONE, -#ifdef WOLFSSL_ASYNC_CRYPT - WOLF_EVENT_TYPE_ASYNC_WOLFSSL, /* context is WOLFSSL* */ - WOLF_EVENT_TYPE_ASYNC_WOLFCRYPT, /* context is WC_ASYNC_DEV */ - WOLF_EVENT_TYPE_ASYNC_FIRST = WOLF_EVENT_TYPE_ASYNC_WOLFSSL, - WOLF_EVENT_TYPE_ASYNC_LAST = WOLF_EVENT_TYPE_ASYNC_WOLFCRYPT, -#endif /* WOLFSSL_ASYNC_CRYPT */ -} WOLF_EVENT_TYPE; - -typedef enum WOLF_EVENT_STATE { - WOLF_EVENT_STATE_READY, - WOLF_EVENT_STATE_PENDING, - WOLF_EVENT_STATE_DONE, -} WOLF_EVENT_STATE; - -struct WOLF_EVENT { - /* double linked list */ - WOLF_EVENT* next; - WOLF_EVENT* prev; - - void* context; - union { - void* ptr; -#ifdef WOLFSSL_ASYNC_CRYPT - struct WC_ASYNC_DEV* async; -#endif - } dev; -#ifdef HAVE_CAVIUM - word64 reqId; - #ifdef WOLFSSL_NITROX_DEBUG - word32 pendCount; - #endif -#endif -#ifndef WC_NO_ASYNC_THREADING - pthread_t threadId; -#endif - int ret; /* Async return code */ - unsigned int flags; - WOLF_EVENT_TYPE type; - WOLF_EVENT_STATE state; -}; - -enum WOLF_POLL_FLAGS { - WOLF_POLL_FLAG_CHECK_HW = 0x01, -}; - -typedef struct { - WOLF_EVENT* head; /* head of queue */ - WOLF_EVENT* tail; /* tail of queue */ -#ifndef SINGLE_THREADED - wolfSSL_Mutex lock; /* queue lock */ -#endif - int count; -} WOLF_EVENT_QUEUE; - - -#ifdef HAVE_WOLF_EVENT - -/* Event */ -WOLFSSL_API int wolfEvent_Init(WOLF_EVENT* event, WOLF_EVENT_TYPE type, void* context); -WOLFSSL_API int wolfEvent_Poll(WOLF_EVENT* event, WOLF_EVENT_FLAG flags); - -/* Event Queue */ -WOLFSSL_API int wolfEventQueue_Init(WOLF_EVENT_QUEUE* queue); -WOLFSSL_API int wolfEventQueue_Push(WOLF_EVENT_QUEUE* queue, WOLF_EVENT* event); -WOLFSSL_API int wolfEventQueue_Pop(WOLF_EVENT_QUEUE* queue, WOLF_EVENT** event); -WOLFSSL_API int wolfEventQueue_Poll(WOLF_EVENT_QUEUE* queue, void* context_filter, - WOLF_EVENT** events, int maxEvents, WOLF_EVENT_FLAG flags, int* eventCount); -WOLFSSL_API int wolfEventQueue_Count(WOLF_EVENT_QUEUE* queue); -WOLFSSL_API void wolfEventQueue_Free(WOLF_EVENT_QUEUE* queue); - -/* the queue mutex must be locked prior to calling these */ -WOLFSSL_API int wolfEventQueue_Add(WOLF_EVENT_QUEUE* queue, WOLF_EVENT* event); -WOLFSSL_API int wolfEventQueue_Remove(WOLF_EVENT_QUEUE* queue, WOLF_EVENT* event); - - -#endif /* HAVE_WOLF_EVENT */ - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* _WOLF_EVENT_H_ */ diff --git a/client/wolfssl/wolfssl/wolfcrypt/wolfmath.h b/client/wolfssl/wolfssl/wolfcrypt/wolfmath.h deleted file mode 100644 index 43b73c4..0000000 --- a/client/wolfssl/wolfssl/wolfcrypt/wolfmath.h +++ /dev/null @@ -1,97 +0,0 @@ -/* wolfmath.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -#ifndef __WOLFMATH_H__ -#define __WOLFMATH_H__ - -#ifdef __cplusplus - extern "C" { -#endif - -#ifdef WOLFSSL_PUBLIC_MP - #define MP_API WOLFSSL_API -#else - #define MP_API WOLFSSL_LOCAL -#endif - -#ifndef MIN - #define MIN(x,y) ((x)<(y)?(x):(y)) -#endif - -#ifndef MAX - #define MAX(x,y) ((x)>(y)?(x):(y)) -#endif - -/* timing resistance array */ -#if !defined(WC_NO_CACHE_RESISTANT) && \ - ((defined(HAVE_ECC) && defined(ECC_TIMING_RESISTANT)) || \ - (defined(USE_FAST_MATH) && defined(TFM_TIMING_RESISTANT))) - - extern const wolfssl_word wc_off_on_addr[2]; -#endif - - -/* common math functions */ -MP_API int get_digit_count(mp_int* a); -MP_API mp_digit get_digit(mp_int* a, int n); -MP_API int get_rand_digit(WC_RNG* rng, mp_digit* d); - -WOLFSSL_API int mp_cond_copy(mp_int* a, int copy, mp_int* b); -WOLFSSL_API int mp_rand(mp_int* a, int digits, WC_RNG* rng); - -enum { - /* format type */ - WC_TYPE_HEX_STR = 1, - WC_TYPE_UNSIGNED_BIN = 2, -}; - -WOLFSSL_API int wc_export_int(mp_int* mp, byte* buf, word32* len, - word32 keySz, int encType); - -#ifdef HAVE_WOLF_BIGINT - #if !defined(WOLF_BIGINT_DEFINED) - /* raw big integer */ - typedef struct WC_BIGINT { - byte* buf; - word32 len; - void* heap; - } WC_BIGINT; - #define WOLF_BIGINT_DEFINED - #endif - - WOLFSSL_LOCAL void wc_bigint_init(WC_BIGINT* a); - WOLFSSL_LOCAL int wc_bigint_alloc(WC_BIGINT* a, word32 sz); - WOLFSSL_LOCAL int wc_bigint_from_unsigned_bin(WC_BIGINT* a, const byte* in, word32 inlen); - WOLFSSL_LOCAL int wc_bigint_to_unsigned_bin(WC_BIGINT* a, byte* out, word32* outlen); - WOLFSSL_LOCAL void wc_bigint_zero(WC_BIGINT* a); - WOLFSSL_LOCAL void wc_bigint_free(WC_BIGINT* a); - - WOLFSSL_LOCAL int wc_mp_to_bigint(mp_int* src, WC_BIGINT* dst); - WOLFSSL_LOCAL int wc_mp_to_bigint_sz(mp_int* src, WC_BIGINT* dst, word32 sz); - WOLFSSL_LOCAL int wc_bigint_to_mp(WC_BIGINT* src, mp_int* dst); -#endif /* HAVE_WOLF_BIGINT */ - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* __WOLFMATH_H__ */ diff --git a/client/wolfssl/wolfssl/wolfio.h b/client/wolfssl/wolfssl/wolfio.h deleted file mode 100644 index 7e97acc..0000000 --- a/client/wolfssl/wolfssl/wolfio.h +++ /dev/null @@ -1,600 +0,0 @@ -/* io.h - * - * Copyright (C) 2006-2020 wolfSSL Inc. - * - * This file is part of wolfSSL. - * - * wolfSSL is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * wolfSSL is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA - */ - -/*! - \file wolfssl/wolfio.h -*/ - -#ifndef WOLFSSL_IO_H -#define WOLFSSL_IO_H - -#ifdef __cplusplus - extern "C" { -#endif - -/* Micrium uses NetSock I/O callbacks in wolfio.c */ -#if !defined(WOLFSSL_USER_IO) - /* OCSP and CRL_IO require HTTP client */ - #if defined(HAVE_OCSP) || defined(HAVE_CRL_IO) - #ifndef HAVE_HTTP_CLIENT - #define HAVE_HTTP_CLIENT - #endif - #endif -#endif - -#if !defined(WOLFSSL_USER_IO) - /* Micrium uses NetSock I/O callbacks in wolfio.c */ - #if !defined(USE_WOLFSSL_IO) && !defined(MICRIUM) && \ - !defined(WOLFSSL_CONTIKI) && !defined(WOLFSSL_NO_SOCK) - #define USE_WOLFSSL_IO - #endif -#endif - - -#if defined(USE_WOLFSSL_IO) || defined(HAVE_HTTP_CLIENT) - -#ifdef HAVE_LIBZ - #include "zlib.h" -#endif - -#ifndef USE_WINDOWS_API - #if defined(WOLFSSL_LWIP) && !defined(WOLFSSL_APACHE_MYNEWT) - /* lwIP needs to be configured to use sockets API in this mode */ - /* LWIP_SOCKET 1 in lwip/opt.h or in build */ - #include "lwip/sockets.h" - #ifndef LWIP_PROVIDE_ERRNO - #include <errno.h> - #define LWIP_PROVIDE_ERRNO 1 - #endif - #elif defined(FREESCALE_MQX) - #include <posix.h> - #include <rtcs.h> - #elif defined(FREESCALE_KSDK_MQX) - #include <rtcs.h> - #elif (defined(WOLFSSL_MDK_ARM) || defined(WOLFSSL_KEIL_TCP_NET)) - #include "rl_net.h" - #include "errno.h" - #elif defined(WOLFSSL_CMSIS_RTOS) - #include "cmsis_os.h" - #elif defined(WOLFSSL_CMSIS_RTOSv2) - #include "cmsis_os2.h" - #elif defined(WOLFSSL_TIRTOS) - #include <sys/socket.h> - #elif defined(FREERTOS_TCP) - #include "FreeRTOS_Sockets.h" - #elif defined(WOLFSSL_IAR_ARM) - /* nothing */ - #elif defined(HAVE_NETX_BSD) - #ifdef NETX_DUO - #include "nxd_bsd.h" - #else - #include "nx_bsd.h" - #endif - #elif defined(WOLFSSL_VXWORKS) - #include <sockLib.h> - #include <errno.h> - #elif defined(WOLFSSL_NUCLEUS_1_2) - #include <externs.h> - #include <errno.h> - #elif defined(WOLFSSL_ATMEL) - #include "socket/include/socket.h" - #elif defined(INTIME_RTOS) - #undef MIN - #undef MAX - #include <rt.h> - #include <sys/types.h> - #include <sys/socket.h> - #include <netdb.h> - #include <netinet/in.h> - #include <io.h> - /* <sys/socket.h> defines these, to avoid conflict, do undef */ - #undef SOCKADDR - #undef SOCKADDR_IN - #elif defined(WOLFSSL_PRCONNECT_PRO) - #include <prconnect_pro/prconnect_pro.h> - #include <sys/types.h> - #include <errno.h> - #include <unistd.h> - #include <fcntl.h> - #include <netdb.h> - #include <sys/ioctl.h> - #elif defined(WOLFSSL_SGX) - #include <errno.h> - #elif defined(WOLFSSL_APACHE_MYNEWT) && !defined(WOLFSSL_LWIP) - #include <mn_socket/mn_socket.h> - #elif defined(WOLFSSL_DEOS) - #include <socketapi.h> - #include <lwip-socket.h> - #include <errno.h> - #elif defined(WOLFSSL_ZEPHYR) - #include <net/socket.h> - #elif defined(HAVE_NETX) - #include "nx_api.h" - #include "errno.h" - #elif !defined(WOLFSSL_NO_SOCK) - #include <sys/types.h> - #include <errno.h> - #ifndef EBSNET - #include <unistd.h> - #endif - #include <fcntl.h> - #define XFCNTL(fd, flag, block) fcntl((fd), (flag), (block)) - - #if defined(HAVE_RTP_SYS) - #include <socket.h> - #elif defined(EBSNET) - #include "rtipapi.h" /* errno */ - #include "socket.h" - #elif !defined(DEVKITPRO) && !defined(WOLFSSL_PICOTCP) \ - && !defined(WOLFSSL_CONTIKI) && !defined(WOLFSSL_WICED) \ - && !defined(WOLFSSL_GNRC) && !defined(WOLFSSL_RIOT_OS) - #include <sys/socket.h> - #include <arpa/inet.h> - #include <netinet/in.h> - #include <netdb.h> - #ifdef __PPU - #include <netex/errno.h> - #else - #include <sys/ioctl.h> - #endif - #endif - #endif - - #if defined(WOLFSSL_RENESAS_RA6M3G) /* Uses FREERTOS_TCP */ - #include <errno.h> - #endif - -#endif /* USE_WINDOWS_API */ - -#ifdef __sun - #include <sys/filio.h> -#endif - -#ifdef USE_WINDOWS_API - /* no epipe yet */ - #ifndef WSAEPIPE - #define WSAEPIPE -12345 - #endif - #define SOCKET_EWOULDBLOCK WSAEWOULDBLOCK - #define SOCKET_EAGAIN WSAETIMEDOUT - #define SOCKET_ECONNRESET WSAECONNRESET - #define SOCKET_EINTR WSAEINTR - #define SOCKET_EPIPE WSAEPIPE - #define SOCKET_ECONNREFUSED WSAENOTCONN - #define SOCKET_ECONNABORTED WSAECONNABORTED -#elif defined(__PPU) - #define SOCKET_EWOULDBLOCK SYS_NET_EWOULDBLOCK - #define SOCKET_EAGAIN SYS_NET_EAGAIN - #define SOCKET_ECONNRESET SYS_NET_ECONNRESET - #define SOCKET_EINTR SYS_NET_EINTR - #define SOCKET_EPIPE SYS_NET_EPIPE - #define SOCKET_ECONNREFUSED SYS_NET_ECONNREFUSED - #define SOCKET_ECONNABORTED SYS_NET_ECONNABORTED -#elif defined(FREESCALE_MQX) || defined(FREESCALE_KSDK_MQX) - #if MQX_USE_IO_OLD - /* RTCS old I/O doesn't have an EWOULDBLOCK */ - #define SOCKET_EWOULDBLOCK EAGAIN - #define SOCKET_EAGAIN EAGAIN - #define SOCKET_ECONNRESET RTCSERR_TCP_CONN_RESET - #define SOCKET_EINTR EINTR - #define SOCKET_EPIPE EPIPE - #define SOCKET_ECONNREFUSED RTCSERR_TCP_CONN_REFUSED - #define SOCKET_ECONNABORTED RTCSERR_TCP_CONN_ABORTED - #else - #define SOCKET_EWOULDBLOCK NIO_EWOULDBLOCK - #define SOCKET_EAGAIN NIO_EAGAIN - #define SOCKET_ECONNRESET NIO_ECONNRESET - #define SOCKET_EINTR NIO_EINTR - #define SOCKET_EPIPE NIO_EPIPE - #define SOCKET_ECONNREFUSED NIO_ECONNREFUSED - #define SOCKET_ECONNABORTED NIO_ECONNABORTED - #endif -#elif defined(WOLFSSL_MDK_ARM)|| defined(WOLFSSL_KEIL_TCP_NET) - #define SOCKET_EWOULDBLOCK BSD_ERROR_WOULDBLOCK - #define SOCKET_EAGAIN BSD_ERROR_LOCKED - #define SOCKET_ECONNRESET BSD_ERROR_CLOSED - #define SOCKET_EINTR BSD_ERROR - #define SOCKET_EPIPE BSD_ERROR - #define SOCKET_ECONNREFUSED BSD_ERROR - #define SOCKET_ECONNABORTED BSD_ERROR -#elif defined(WOLFSSL_PICOTCP) - #define SOCKET_EWOULDBLOCK PICO_ERR_EAGAIN - #define SOCKET_EAGAIN PICO_ERR_EAGAIN - #define SOCKET_ECONNRESET PICO_ERR_ECONNRESET - #define SOCKET_EINTR PICO_ERR_EINTR - #define SOCKET_EPIPE PICO_ERR_EIO - #define SOCKET_ECONNREFUSED PICO_ERR_ECONNREFUSED - #define SOCKET_ECONNABORTED PICO_ERR_ESHUTDOWN -#elif defined(FREERTOS_TCP) - #define SOCKET_EWOULDBLOCK FREERTOS_EWOULDBLOCK - #define SOCKET_EAGAIN FREERTOS_EWOULDBLOCK - #define SOCKET_ECONNRESET FREERTOS_SOCKET_ERROR - #define SOCKET_EINTR FREERTOS_SOCKET_ERROR - #define SOCKET_EPIPE FREERTOS_SOCKET_ERROR - #define SOCKET_ECONNREFUSED FREERTOS_SOCKET_ERROR - #define SOCKET_ECONNABORTED FREERTOS_SOCKET_ERROR -#elif defined(WOLFSSL_NUCLEUS_1_2) - #define SOCKET_EWOULDBLOCK NU_WOULD_BLOCK - #define SOCKET_EAGAIN NU_WOULD_BLOCK - #define SOCKET_ECONNRESET NU_NOT_CONNECTED - #define SOCKET_EINTR NU_NOT_CONNECTED - #define SOCKET_EPIPE NU_NOT_CONNECTED - #define SOCKET_ECONNREFUSED NU_CONNECTION_REFUSED - #define SOCKET_ECONNABORTED NU_NOT_CONNECTED -#elif defined(WOLFSSL_DEOS) - #define SOCKET_EWOULDBLOCK EAGAIN - #define SOCKET_EAGAIN EAGAIN - #define SOCKET_ECONNRESET EINTR - #define SOCKET_EINTR EINTR - #define SOCKET_EPIPE EPIPE - #define SOCKET_ECONNREFUSED SOCKET_ERROR - #define SOCKET_ECONNABORTED SOCKET_ERROR -#elif defined(HAVE_NETX) - #define SOCKET_EWOULDBLOCK NX_NOT_CONNECTED - #define SOCKET_EAGAIN NX_NOT_CONNECTED - #define SOCKET_ECONNRESET NX_NOT_CONNECTED - #define SOCKET_EINTR NX_NOT_CONNECTED - #define SOCKET_EPIPE NX_NOT_CONNECTED - #define SOCKET_ECONNREFUSED NX_NOT_CONNECTED - #define SOCKET_ECONNABORTED NX_NOT_CONNECTED -#else - #define SOCKET_EWOULDBLOCK EWOULDBLOCK - #define SOCKET_EAGAIN EAGAIN - #define SOCKET_ECONNRESET ECONNRESET - #define SOCKET_EINTR EINTR - #define SOCKET_EPIPE EPIPE - #define SOCKET_ECONNREFUSED ECONNREFUSED - #define SOCKET_ECONNABORTED ECONNABORTED -#endif /* USE_WINDOWS_API */ - -#ifdef DEVKITPRO - /* from network.h */ - int net_send(int, const void*, int, unsigned int); - int net_recv(int, void*, int, unsigned int); - #define SEND_FUNCTION net_send - #define RECV_FUNCTION net_recv -#elif defined(WOLFSSL_LWIP) && !defined(WOLFSSL_APACHE_MYNEWT) - #define SEND_FUNCTION lwip_send - #define RECV_FUNCTION lwip_recv -#elif defined(WOLFSSL_PICOTCP) - #define SEND_FUNCTION pico_send - #define RECV_FUNCTION pico_recv -#elif defined(FREERTOS_TCP) - #define RECV_FUNCTION(a,b,c,d) FreeRTOS_recv((Socket_t)(a),(void*)(b), (size_t)(c), (BaseType_t)(d)) - #define SEND_FUNCTION(a,b,c,d) FreeRTOS_send((Socket_t)(a),(void*)(b), (size_t)(c), (BaseType_t)(d)) -#elif defined(WOLFSSL_VXWORKS) - #define SEND_FUNCTION send - #define RECV_FUNCTION recv -#elif defined(WOLFSSL_NUCLEUS_1_2) - #define SEND_FUNCTION NU_Send - #define RECV_FUNCTION NU_Recv -#elif defined(WOLFSSL_ZEPHYR) - #ifndef WOLFSSL_MAX_SEND_SZ - #define WOLFSSL_MAX_SEND_SZ 256 - #endif - - #define SEND_FUNCTION send - #define RECV_FUNCTION recv -#else - #define SEND_FUNCTION send - #define RECV_FUNCTION recv - #if !defined(HAVE_SOCKADDR) && !defined(WOLFSSL_NO_SOCK) - #define HAVE_SOCKADDR - #endif -#endif - -#ifdef USE_WINDOWS_API - typedef unsigned int SOCKET_T; -#else - typedef int SOCKET_T; -#endif - -#ifndef WOLFSSL_NO_SOCK - #ifndef XSOCKLENT - #ifdef USE_WINDOWS_API - #define XSOCKLENT int - #else - #define XSOCKLENT socklen_t - #endif - #endif - - /* Socket Addr Support */ - #ifdef HAVE_SOCKADDR - typedef struct sockaddr SOCKADDR; - typedef struct sockaddr_storage SOCKADDR_S; - typedef struct sockaddr_in SOCKADDR_IN; - #ifdef WOLFSSL_IPV6 - typedef struct sockaddr_in6 SOCKADDR_IN6; - #endif - typedef struct hostent HOSTENT; - #endif /* HAVE_SOCKADDR */ - - /* use gethostbyname for c99 */ - #if defined(HAVE_GETADDRINFO) && !defined(WOLF_C99) - typedef struct addrinfo ADDRINFO; - #endif -#endif /* WOLFSSL_NO_SOCK */ - - -/* IO API's */ -#ifdef HAVE_IO_TIMEOUT - WOLFSSL_API int wolfIO_SetBlockingMode(SOCKET_T sockfd, int non_blocking); - WOLFSSL_API void wolfIO_SetTimeout(int to_sec); - WOLFSSL_API int wolfIO_Select(SOCKET_T sockfd, int to_sec); -#endif -WOLFSSL_API int wolfIO_TcpConnect(SOCKET_T* sockfd, const char* ip, - unsigned short port, int to_sec); -WOLFSSL_API int wolfIO_Send(SOCKET_T sd, char *buf, int sz, int wrFlags); -WOLFSSL_API int wolfIO_Recv(SOCKET_T sd, char *buf, int sz, int rdFlags); - -#endif /* USE_WOLFSSL_IO || HAVE_HTTP_CLIENT */ - -#ifndef WOLFSSL_NO_SOCK -#ifdef USE_WINDOWS_API - #ifndef CloseSocket - #define CloseSocket(s) closesocket(s) - #endif - #define StartTCP() { WSADATA wsd; WSAStartup(0x0002, &wsd); } -#elif defined(WOLFSSL_MDK_ARM) || defined(WOLFSSL_KEIL_TCP_NET) - #ifndef CloseSocket - extern int closesocket(int); - #define CloseSocket(s) closesocket(s) - #endif - #define StartTCP() -#else - #ifndef CloseSocket - #define CloseSocket(s) close(s) - #endif - #define StartTCP() - #ifdef FREERTOS_TCP_WINSIM - extern int close(int); - #endif -#endif -#endif /* WOLFSSL_NO_SOCK */ - - -WOLFSSL_API int BioSend(WOLFSSL* ssl, char *buf, int sz, void *ctx); -WOLFSSL_API int BioReceive(WOLFSSL* ssl, char* buf, int sz, void* ctx); -#if defined(USE_WOLFSSL_IO) - /* default IO callbacks */ - WOLFSSL_API int EmbedReceive(WOLFSSL* ssl, char* buf, int sz, void* ctx); - WOLFSSL_API int EmbedSend(WOLFSSL* ssl, char* buf, int sz, void* ctx); - - #ifdef WOLFSSL_DTLS - WOLFSSL_API int EmbedReceiveFrom(WOLFSSL* ssl, char* buf, int sz, void*); - WOLFSSL_API int EmbedSendTo(WOLFSSL* ssl, char* buf, int sz, void* ctx); - WOLFSSL_API int EmbedGenerateCookie(WOLFSSL* ssl, unsigned char* buf, - int sz, void*); - #ifdef WOLFSSL_MULTICAST - WOLFSSL_API int EmbedReceiveFromMcast(WOLFSSL* ssl, - char* buf, int sz, void*); - #endif /* WOLFSSL_MULTICAST */ - #ifdef WOLFSSL_SESSION_EXPORT - WOLFSSL_API int EmbedGetPeer(WOLFSSL* ssl, char* ip, int* ipSz, - unsigned short* port, int* fam); - WOLFSSL_API int EmbedSetPeer(WOLFSSL* ssl, char* ip, int ipSz, - unsigned short port, int fam); - #endif /* WOLFSSL_SESSION_EXPORT */ - #endif /* WOLFSSL_DTLS */ -#endif /* USE_WOLFSSL_IO */ - -#ifdef HAVE_OCSP - WOLFSSL_API int wolfIO_HttpBuildRequestOcsp(const char* domainName, - const char* path, int ocspReqSz, unsigned char* buf, int bufSize); - WOLFSSL_API int wolfIO_HttpProcessResponseOcsp(int sfd, - unsigned char** respBuf, unsigned char* httpBuf, int httpBufSz, - void* heap); - - WOLFSSL_API int EmbedOcspLookup(void*, const char*, int, unsigned char*, - int, unsigned char**); - WOLFSSL_API void EmbedOcspRespFree(void*, unsigned char*); -#endif - -#ifdef HAVE_CRL_IO - WOLFSSL_API int wolfIO_HttpBuildRequestCrl(const char* url, int urlSz, - const char* domainName, unsigned char* buf, int bufSize); - WOLFSSL_API int wolfIO_HttpProcessResponseCrl(WOLFSSL_CRL* crl, int sfd, - unsigned char* httpBuf, int httpBufSz); - - WOLFSSL_API int EmbedCrlLookup(WOLFSSL_CRL* crl, const char* url, - int urlSz); -#endif - - -#if defined(HAVE_HTTP_CLIENT) - WOLFSSL_API int wolfIO_DecodeUrl(const char* url, int urlSz, char* outName, - char* outPath, unsigned short* outPort); - - WOLFSSL_API int wolfIO_HttpBuildRequest(const char* reqType, - const char* domainName, const char* path, int pathLen, int reqSz, - const char* contentType, unsigned char* buf, int bufSize); - WOLFSSL_LOCAL int wolfIO_HttpBuildRequest_ex(const char* reqType, - const char* domainName, const char* path, int pathLen, int reqSz, - const char* contentType, const char *exHdrs, unsigned char* buf, int bufSize); - WOLFSSL_API int wolfIO_HttpProcessResponse(int sfd, const char** appStrList, - unsigned char** respBuf, unsigned char* httpBuf, int httpBufSz, - int dynType, void* heap); -#endif /* HAVE_HTTP_CLIENT */ - - -/* I/O callbacks */ -typedef int (*CallbackIORecv)(WOLFSSL *ssl, char *buf, int sz, void *ctx); -typedef int (*CallbackIOSend)(WOLFSSL *ssl, char *buf, int sz, void *ctx); -WOLFSSL_API void wolfSSL_CTX_SetIORecv(WOLFSSL_CTX*, CallbackIORecv); -WOLFSSL_API void wolfSSL_CTX_SetIOSend(WOLFSSL_CTX*, CallbackIOSend); -WOLFSSL_API void wolfSSL_SSLSetIORecv(WOLFSSL*, CallbackIORecv); -WOLFSSL_API void wolfSSL_SSLSetIOSend(WOLFSSL*, CallbackIOSend); -/* deprecated old name */ -#define wolfSSL_SetIORecv wolfSSL_CTX_SetIORecv -#define wolfSSL_SetIOSend wolfSSL_CTX_SetIOSend - -WOLFSSL_API void wolfSSL_SetIOReadCtx( WOLFSSL* ssl, void *ctx); -WOLFSSL_API void wolfSSL_SetIOWriteCtx(WOLFSSL* ssl, void *ctx); - -WOLFSSL_API void* wolfSSL_GetIOReadCtx( WOLFSSL* ssl); -WOLFSSL_API void* wolfSSL_GetIOWriteCtx(WOLFSSL* ssl); - -WOLFSSL_API void wolfSSL_SetIOReadFlags( WOLFSSL* ssl, int flags); -WOLFSSL_API void wolfSSL_SetIOWriteFlags(WOLFSSL* ssl, int flags); - - -#ifdef HAVE_NETX - WOLFSSL_LOCAL int NetX_Receive(WOLFSSL *ssl, char *buf, int sz, void *ctx); - WOLFSSL_LOCAL int NetX_Send(WOLFSSL *ssl, char *buf, int sz, void *ctx); - - WOLFSSL_API void wolfSSL_SetIO_NetX(WOLFSSL* ssl, NX_TCP_SOCKET* nxsocket, - ULONG waitoption); -#endif /* HAVE_NETX */ - -#ifdef MICRIUM - WOLFSSL_LOCAL int MicriumSend(WOLFSSL* ssl, char* buf, int sz, void* ctx); - WOLFSSL_LOCAL int MicriumReceive(WOLFSSL* ssl, char* buf, int sz, - void* ctx); - WOLFSSL_LOCAL int MicriumReceiveFrom(WOLFSSL* ssl, char* buf, int sz, - void* ctx); - WOLFSSL_LOCAL int MicriumSendTo(WOLFSSL* ssl, char* buf, int sz, void* ctx); -#endif /* MICRIUM */ - -#if defined(WOLFSSL_APACHE_MYNEWT) && !defined(WOLFSSL_LWIP) - WOLFSSL_LOCAL int Mynewt_Receive(WOLFSSL *ssl, char *buf, int sz, void *ctx); - WOLFSSL_LOCAL int Mynewt_Send(WOLFSSL* ssl, char *buf, int sz, void *ctx); - WOLFSSL_API void wolfSSL_SetIO_Mynewt(WOLFSSL* ssl, struct mn_socket* mnSocket, - struct mn_sockaddr_in* mnSockAddrIn); -#endif /* defined(WOLFSSL_APACHE_MYNEWT) && !defined(WOLFSSL_LWIP) */ - -#ifdef WOLFSSL_UIP - - struct uip_wolfssl_ctx { - union socket_connector { - struct tcp_socket tcp; - struct udp_socket udp; - } conn; - WOLFSSL_CTX *ctx; - WOLFSSL *ssl; - uint8_t *input_databuf; - uint8_t *output_databuf; - uint8_t *ssl_rx_databuf; - int ssl_rb_len; - int ssl_rb_off; - struct process *process; - tcp_socket_data_callback_t input_callback; - tcp_socket_event_callback_t event_callback; - int closing; - uip_ipaddr_t peer_addr; - uint16_t peer_port; - }; - - typedef struct uip_wolfssl_ctx uip_wolfssl_ctx; - - WOLFSSL_LOCAL int uIPSend(WOLFSSL* ssl, char* buf, int sz, void* ctx); - WOLFSSL_LOCAL int uIPReceive(WOLFSSL* ssl, char* buf, int sz, - void* ctx); - WOLFSSL_LOCAL int uIPReceiveFrom(WOLFSSL* ssl, char* buf, int sz, - void* ctx); - WOLFSSL_LOCAL int uIPSendTo(WOLFSSL* ssl, char* buf, int sz, void* ctx); - -#endif - -#ifdef WOLFSSL_GNRC - #include <sock_types.h> - #include <net/gnrc.h> - #include <net/af.h> - #include <net/sock.h> - #include <net/gnrc/tcp.h> - #include <net/gnrc/udp.h> - - struct gnrc_wolfssl_ctx { - union socket_connector { - #ifdef MODULE_SOCK_TCP - sock_tcp_t tcp; - #endif - sock_udp_t udp; - } conn; - WOLFSSL_CTX *ctx; - WOLFSSL *ssl; - - int closing; - struct _sock_tl_ep peer_addr; - }; - - typedef struct gnrc_wolfssl_ctx sock_tls_t; - - WOLFSSL_LOCAL int GNRC_ReceiveFrom(WOLFSSL* ssl, char* buf, int sz, - void* ctx); - WOLFSSL_LOCAL int GNRC_SendTo(WOLFSSL* ssl, char* buf, int sz, void* ctx); - -#endif - - -#ifdef WOLFSSL_DTLS - typedef int (*CallbackGenCookie)(WOLFSSL* ssl, unsigned char* buf, int sz, - void* ctx); - WOLFSSL_API void wolfSSL_CTX_SetGenCookie(WOLFSSL_CTX*, CallbackGenCookie); - WOLFSSL_API void wolfSSL_SetCookieCtx(WOLFSSL* ssl, void *ctx); - WOLFSSL_API void* wolfSSL_GetCookieCtx(WOLFSSL* ssl); - - #ifdef WOLFSSL_SESSION_EXPORT - typedef int (*CallbackGetPeer)(WOLFSSL* ssl, char* ip, int* ipSz, - unsigned short* port, int* fam); - typedef int (*CallbackSetPeer)(WOLFSSL* ssl, char* ip, int ipSz, - unsigned short port, int fam); - - WOLFSSL_API void wolfSSL_CTX_SetIOGetPeer(WOLFSSL_CTX*, CallbackGetPeer); - WOLFSSL_API void wolfSSL_CTX_SetIOSetPeer(WOLFSSL_CTX*, CallbackSetPeer); - #endif /* WOLFSSL_SESSION_EXPORT */ -#endif - - - -#ifndef XINET_NTOP - #define XINET_NTOP(a,b,c,d) inet_ntop((a),(b),(c),(d)) - #ifdef USE_WINDOWS_API /* Windows-friendly definition */ - #undef XINET_NTOP - #define XINET_NTOP(a,b,c,d) InetNtop((a),(b),(c),(d)) - #endif -#endif -#ifndef XINET_PTON - #define XINET_PTON(a,b,c) inet_pton((a),(b),(c)) - #ifdef USE_WINDOWS_API /* Windows-friendly definition */ - #undef XINET_PTON - #define XINET_PTON(a,b,c) InetPton((a),(b),(c)) - #endif -#endif -#ifndef XHTONS - #define XHTONS(a) htons((a)) -#endif -#ifndef XNTOHS - #define XNTOHS(a) ntohs((a)) -#endif - -#ifndef WOLFSSL_IP4 - #define WOLFSSL_IP4 AF_INET -#endif -#ifndef WOLFSSL_IP6 - #define WOLFSSL_IP6 AF_INET6 -#endif - - -#ifdef __cplusplus - } /* extern "C" */ -#endif - -#endif /* WOLFSSL_IO_H */ diff --git a/client/wolfssl/wolfssl64.sln b/client/wolfssl/wolfssl64.sln deleted file mode 100644 index 54f495c..0000000 --- a/client/wolfssl/wolfssl64.sln +++ /dev/null @@ -1,142 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2010 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "wolfssl", "wolfssl.vcxproj", "{73973223-5EE8-41CA-8E88-1D60E89A237B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "testsuite", "testsuite\testsuite.vcxproj", "{611E8971-46E0-4D0A-B5A1-632C3B00CB80}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sslSniffer", "sslSniffer\sslSniffer.vcxproj", "{34FAE5A6-2B0F-4B55-86FE-0C43E4810F4D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "echoserver", "examples\echoserver\echoserver.vcxproj", "{07D97C48-E08F-4E34-9F67-3064039FF2CB}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "echoclient", "examples\echoclient\echoclient.vcxproj", "{8362A816-C5DC-4E22-B5C5-9E6806387073}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "client", "examples\client\client.vcxproj", "{3ADE9549-582D-4D8E-9826-B172197A7959}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "server", "examples\server\server.vcxproj", "{E9FB0BA5-BA46-4A59-A953-39C18CD1DCB1}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - DLL Debug|Win32 = DLL Debug|Win32 - DLL Debug|x64 = DLL Debug|x64 - DLL Release|Win32 = DLL Release|Win32 - DLL Release|x64 = DLL Release|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {73973223-5EE8-41CA-8E88-1D60E89A237B}.Debug|Win32.ActiveCfg = Debug|Win32 - {73973223-5EE8-41CA-8E88-1D60E89A237B}.Debug|Win32.Build.0 = Debug|Win32 - {73973223-5EE8-41CA-8E88-1D60E89A237B}.Debug|x64.ActiveCfg = Debug|x64 - {73973223-5EE8-41CA-8E88-1D60E89A237B}.Debug|x64.Build.0 = Debug|x64 - {73973223-5EE8-41CA-8E88-1D60E89A237B}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 - {73973223-5EE8-41CA-8E88-1D60E89A237B}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 - {73973223-5EE8-41CA-8E88-1D60E89A237B}.DLL Debug|x64.ActiveCfg = DLL Debug|x64 - {73973223-5EE8-41CA-8E88-1D60E89A237B}.DLL Debug|x64.Build.0 = DLL Debug|x64 - {73973223-5EE8-41CA-8E88-1D60E89A237B}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 - {73973223-5EE8-41CA-8E88-1D60E89A237B}.DLL Release|Win32.Build.0 = DLL Release|Win32 - {73973223-5EE8-41CA-8E88-1D60E89A237B}.DLL Release|x64.ActiveCfg = DLL Release|x64 - {73973223-5EE8-41CA-8E88-1D60E89A237B}.DLL Release|x64.Build.0 = DLL Release|x64 - {73973223-5EE8-41CA-8E88-1D60E89A237B}.Release|Win32.ActiveCfg = Release|Win32 - {73973223-5EE8-41CA-8E88-1D60E89A237B}.Release|Win32.Build.0 = Release|Win32 - {73973223-5EE8-41CA-8E88-1D60E89A237B}.Release|x64.ActiveCfg = Release|x64 - {73973223-5EE8-41CA-8E88-1D60E89A237B}.Release|x64.Build.0 = Release|x64 - {611E8971-46E0-4D0A-B5A1-632C3B00CB80}.Debug|Win32.ActiveCfg = Debug|Win32 - {611E8971-46E0-4D0A-B5A1-632C3B00CB80}.Debug|Win32.Build.0 = Debug|Win32 - {611E8971-46E0-4D0A-B5A1-632C3B00CB80}.Debug|x64.ActiveCfg = Debug|x64 - {611E8971-46E0-4D0A-B5A1-632C3B00CB80}.Debug|x64.Build.0 = Debug|x64 - {611E8971-46E0-4D0A-B5A1-632C3B00CB80}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 - {611E8971-46E0-4D0A-B5A1-632C3B00CB80}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 - {611E8971-46E0-4D0A-B5A1-632C3B00CB80}.DLL Debug|x64.ActiveCfg = DLL Debug|x64 - {611E8971-46E0-4D0A-B5A1-632C3B00CB80}.DLL Debug|x64.Build.0 = DLL Debug|x64 - {611E8971-46E0-4D0A-B5A1-632C3B00CB80}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 - {611E8971-46E0-4D0A-B5A1-632C3B00CB80}.DLL Release|Win32.Build.0 = DLL Release|Win32 - {611E8971-46E0-4D0A-B5A1-632C3B00CB80}.DLL Release|x64.ActiveCfg = DLL Release|x64 - {611E8971-46E0-4D0A-B5A1-632C3B00CB80}.DLL Release|x64.Build.0 = DLL Release|x64 - {611E8971-46E0-4D0A-B5A1-632C3B00CB80}.Release|Win32.ActiveCfg = Release|Win32 - {611E8971-46E0-4D0A-B5A1-632C3B00CB80}.Release|Win32.Build.0 = Release|Win32 - {611E8971-46E0-4D0A-B5A1-632C3B00CB80}.Release|x64.ActiveCfg = Release|x64 - {611E8971-46E0-4D0A-B5A1-632C3B00CB80}.Release|x64.Build.0 = Release|x64 - {34FAE5A6-2B0F-4B55-86FE-0C43E4810F4D}.Debug|Win32.ActiveCfg = Debug|Win32 - {34FAE5A6-2B0F-4B55-86FE-0C43E4810F4D}.Debug|Win32.Build.0 = Debug|Win32 - {34FAE5A6-2B0F-4B55-86FE-0C43E4810F4D}.Debug|x64.ActiveCfg = Debug|x64 - {34FAE5A6-2B0F-4B55-86FE-0C43E4810F4D}.Debug|x64.Build.0 = Debug|x64 - {34FAE5A6-2B0F-4B55-86FE-0C43E4810F4D}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 - {34FAE5A6-2B0F-4B55-86FE-0C43E4810F4D}.DLL Debug|x64.ActiveCfg = DLL Debug|x64 - {34FAE5A6-2B0F-4B55-86FE-0C43E4810F4D}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 - {34FAE5A6-2B0F-4B55-86FE-0C43E4810F4D}.DLL Release|x64.ActiveCfg = DLL Release|x64 - {34FAE5A6-2B0F-4B55-86FE-0C43E4810F4D}.Release|Win32.ActiveCfg = Release|Win32 - {34FAE5A6-2B0F-4B55-86FE-0C43E4810F4D}.Release|Win32.Build.0 = Release|Win32 - {34FAE5A6-2B0F-4B55-86FE-0C43E4810F4D}.Release|x64.ActiveCfg = Release|x64 - {34FAE5A6-2B0F-4B55-86FE-0C43E4810F4D}.Release|x64.Build.0 = Release|x64 - {07D97C48-E08F-4E34-9F67-3064039FF2CB}.Debug|Win32.ActiveCfg = Debug|Win32 - {07D97C48-E08F-4E34-9F67-3064039FF2CB}.Debug|Win32.Build.0 = Debug|Win32 - {07D97C48-E08F-4E34-9F67-3064039FF2CB}.Debug|x64.ActiveCfg = Debug|x64 - {07D97C48-E08F-4E34-9F67-3064039FF2CB}.Debug|x64.Build.0 = Debug|x64 - {07D97C48-E08F-4E34-9F67-3064039FF2CB}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 - {07D97C48-E08F-4E34-9F67-3064039FF2CB}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 - {07D97C48-E08F-4E34-9F67-3064039FF2CB}.DLL Debug|x64.ActiveCfg = DLL Debug|x64 - {07D97C48-E08F-4E34-9F67-3064039FF2CB}.DLL Debug|x64.Build.0 = DLL Debug|x64 - {07D97C48-E08F-4E34-9F67-3064039FF2CB}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 - {07D97C48-E08F-4E34-9F67-3064039FF2CB}.DLL Release|Win32.Build.0 = DLL Release|Win32 - {07D97C48-E08F-4E34-9F67-3064039FF2CB}.DLL Release|x64.ActiveCfg = DLL Release|x64 - {07D97C48-E08F-4E34-9F67-3064039FF2CB}.DLL Release|x64.Build.0 = DLL Release|x64 - {07D97C48-E08F-4E34-9F67-3064039FF2CB}.Release|Win32.ActiveCfg = Release|Win32 - {07D97C48-E08F-4E34-9F67-3064039FF2CB}.Release|Win32.Build.0 = Release|Win32 - {07D97C48-E08F-4E34-9F67-3064039FF2CB}.Release|x64.ActiveCfg = Release|x64 - {07D97C48-E08F-4E34-9F67-3064039FF2CB}.Release|x64.Build.0 = Release|x64 - {8362A816-C5DC-4E22-B5C5-9E6806387073}.Debug|Win32.ActiveCfg = Debug|Win32 - {8362A816-C5DC-4E22-B5C5-9E6806387073}.Debug|Win32.Build.0 = Debug|Win32 - {8362A816-C5DC-4E22-B5C5-9E6806387073}.Debug|x64.ActiveCfg = Debug|x64 - {8362A816-C5DC-4E22-B5C5-9E6806387073}.Debug|x64.Build.0 = Debug|x64 - {8362A816-C5DC-4E22-B5C5-9E6806387073}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 - {8362A816-C5DC-4E22-B5C5-9E6806387073}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 - {8362A816-C5DC-4E22-B5C5-9E6806387073}.DLL Debug|x64.ActiveCfg = DLL Debug|x64 - {8362A816-C5DC-4E22-B5C5-9E6806387073}.DLL Debug|x64.Build.0 = DLL Debug|x64 - {8362A816-C5DC-4E22-B5C5-9E6806387073}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 - {8362A816-C5DC-4E22-B5C5-9E6806387073}.DLL Release|Win32.Build.0 = DLL Release|Win32 - {8362A816-C5DC-4E22-B5C5-9E6806387073}.DLL Release|x64.ActiveCfg = DLL Release|x64 - {8362A816-C5DC-4E22-B5C5-9E6806387073}.DLL Release|x64.Build.0 = DLL Release|x64 - {8362A816-C5DC-4E22-B5C5-9E6806387073}.Release|Win32.ActiveCfg = Release|Win32 - {8362A816-C5DC-4E22-B5C5-9E6806387073}.Release|Win32.Build.0 = Release|Win32 - {8362A816-C5DC-4E22-B5C5-9E6806387073}.Release|x64.ActiveCfg = Release|x64 - {8362A816-C5DC-4E22-B5C5-9E6806387073}.Release|x64.Build.0 = Release|x64 - {3ADE9549-582D-4D8E-9826-B172197A7959}.Debug|Win32.ActiveCfg = Debug|Win32 - {3ADE9549-582D-4D8E-9826-B172197A7959}.Debug|Win32.Build.0 = Debug|Win32 - {3ADE9549-582D-4D8E-9826-B172197A7959}.Debug|x64.ActiveCfg = Debug|x64 - {3ADE9549-582D-4D8E-9826-B172197A7959}.Debug|x64.Build.0 = Debug|x64 - {3ADE9549-582D-4D8E-9826-B172197A7959}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 - {3ADE9549-582D-4D8E-9826-B172197A7959}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 - {3ADE9549-582D-4D8E-9826-B172197A7959}.DLL Debug|x64.ActiveCfg = DLL Debug|x64 - {3ADE9549-582D-4D8E-9826-B172197A7959}.DLL Debug|x64.Build.0 = DLL Debug|x64 - {3ADE9549-582D-4D8E-9826-B172197A7959}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 - {3ADE9549-582D-4D8E-9826-B172197A7959}.DLL Release|Win32.Build.0 = DLL Release|Win32 - {3ADE9549-582D-4D8E-9826-B172197A7959}.DLL Release|x64.ActiveCfg = DLL Release|x64 - {3ADE9549-582D-4D8E-9826-B172197A7959}.DLL Release|x64.Build.0 = DLL Release|x64 - {3ADE9549-582D-4D8E-9826-B172197A7959}.Release|Win32.ActiveCfg = Release|Win32 - {3ADE9549-582D-4D8E-9826-B172197A7959}.Release|Win32.Build.0 = Release|Win32 - {3ADE9549-582D-4D8E-9826-B172197A7959}.Release|x64.ActiveCfg = Release|x64 - {3ADE9549-582D-4D8E-9826-B172197A7959}.Release|x64.Build.0 = Release|x64 - {E9FB0BA5-BA46-4A59-A953-39C18CD1DCB1}.Debug|Win32.ActiveCfg = Debug|Win32 - {E9FB0BA5-BA46-4A59-A953-39C18CD1DCB1}.Debug|Win32.Build.0 = Debug|Win32 - {E9FB0BA5-BA46-4A59-A953-39C18CD1DCB1}.Debug|x64.ActiveCfg = Debug|x64 - {E9FB0BA5-BA46-4A59-A953-39C18CD1DCB1}.Debug|x64.Build.0 = Debug|x64 - {E9FB0BA5-BA46-4A59-A953-39C18CD1DCB1}.DLL Debug|Win32.ActiveCfg = DLL Debug|Win32 - {E9FB0BA5-BA46-4A59-A953-39C18CD1DCB1}.DLL Debug|Win32.Build.0 = DLL Debug|Win32 - {E9FB0BA5-BA46-4A59-A953-39C18CD1DCB1}.DLL Debug|x64.ActiveCfg = DLL Debug|x64 - {E9FB0BA5-BA46-4A59-A953-39C18CD1DCB1}.DLL Debug|x64.Build.0 = DLL Debug|x64 - {E9FB0BA5-BA46-4A59-A953-39C18CD1DCB1}.DLL Release|Win32.ActiveCfg = DLL Release|Win32 - {E9FB0BA5-BA46-4A59-A953-39C18CD1DCB1}.DLL Release|Win32.Build.0 = DLL Release|Win32 - {E9FB0BA5-BA46-4A59-A953-39C18CD1DCB1}.DLL Release|x64.ActiveCfg = DLL Release|x64 - {E9FB0BA5-BA46-4A59-A953-39C18CD1DCB1}.DLL Release|x64.Build.0 = DLL Release|x64 - {E9FB0BA5-BA46-4A59-A953-39C18CD1DCB1}.Release|Win32.ActiveCfg = Release|Win32 - {E9FB0BA5-BA46-4A59-A953-39C18CD1DCB1}.Release|Win32.Build.0 = Release|Win32 - {E9FB0BA5-BA46-4A59-A953-39C18CD1DCB1}.Release|x64.ActiveCfg = Release|x64 - {E9FB0BA5-BA46-4A59-A953-39C18CD1DCB1}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/client/wolfssl/x64/Release/obj/wolfssl.log b/client/wolfssl/x64/Release/obj/wolfssl.log deleted file mode 100644 index 8372fe1..0000000 --- a/client/wolfssl/x64/Release/obj/wolfssl.log +++ /dev/null @@ -1,72 +0,0 @@ - Performing Custom Build Tools - Microsoft (R) Macro Assembler (x64) Version 14.26.28806.0 - Copyright (C) Microsoft Corporation. All rights reserved. - - Assembling: wolfcrypt\src\aes_asm.asm - crl.c - internal.c - wolfio.c - keys.c - ocsp.c - ssl.c - tls.c - tls13.c - aes.c - arc4.c - asn.c - blake2b.c - blake2s.c - camellia.c - chacha.c - chacha20_poly1305.c - cmac.c - coding.c - curve25519.c - cpuid.c - Compiling... - des3.c - dh.c - dsa.c - ecc.c - ed25519.c - error.c - fe_operations.c - ge_low_mem.c - ge_operations.c - hash.c - hc128.c - hmac.c - idea.c - integer.c - logging.c - md2.c - md4.c - md5.c - memory.c - pkcs7.c - Compiling... - pkcs12.c - poly1305.c - pwdbased.c - rabbit.c - random.c - ripemd.c - rsa.c - sha.c - sha256.c - sha3.c - sha512.c - signature.c - sp_c32.c - sp_c64.c - sp_int.c - sp_x86_64.c - srp.c - tfm.c - wc_encrypt.c - wc_pkcs11.c - Compiling... - wc_port.c - wolfmath.c - wolfevent.c - wolfssl.vcxproj -> C:\Users\Administrator\Desktop\loader\client\lib\x64\Release\wolfssl.lib diff --git a/client/wolfssl/x64/Release/obj/wolfssl.pdb b/client/wolfssl/x64/Release/obj/wolfssl.pdb Binary files differdeleted file mode 100644 index db2ff90..0000000 --- a/client/wolfssl/x64/Release/obj/wolfssl.pdb +++ /dev/null |