mirror of
https://github.com/deneraraujo/OpenVPNAdapter.git
synced 2026-02-11 00:00:08 +08:00
Merge branch 'feature/update-dependencies' into develop
This commit is contained in:
@@ -88,6 +88,21 @@
|
||||
#define MBEDTLS_ASN1_PRIMITIVE 0x00
|
||||
#define MBEDTLS_ASN1_CONSTRUCTED 0x20
|
||||
#define MBEDTLS_ASN1_CONTEXT_SPECIFIC 0x80
|
||||
|
||||
/*
|
||||
* Bit masks for each of the components of an ASN.1 tag as specified in
|
||||
* ITU X.690 (08/2015), section 8.1 "General rules for encoding",
|
||||
* paragraph 8.1.2.2:
|
||||
*
|
||||
* Bit 8 7 6 5 1
|
||||
* +-------+-----+------------+
|
||||
* | Class | P/C | Tag number |
|
||||
* +-------+-----+------------+
|
||||
*/
|
||||
#define MBEDTLS_ASN1_TAG_CLASS_MASK 0xC0
|
||||
#define MBEDTLS_ASN1_TAG_PC_MASK 0x20
|
||||
#define MBEDTLS_ASN1_TAG_VALUE_MASK 0x1F
|
||||
|
||||
/* \} name */
|
||||
/* \} addtogroup asn1_module */
|
||||
|
||||
|
||||
@@ -49,7 +49,14 @@
|
||||
/* armcc5 --gnu defines __GNUC__ but doesn't support GNU's extended asm */
|
||||
#if defined(__GNUC__) && \
|
||||
( !defined(__ARMCC_VERSION) || __ARMCC_VERSION >= 6000000 )
|
||||
#if defined(__i386__)
|
||||
|
||||
/*
|
||||
* Disable use of the i386 assembly code below if option -O0, to disable all
|
||||
* compiler optimisations, is passed, detected with __OPTIMIZE__
|
||||
* This is done as the number of registers used in the assembly code doesn't
|
||||
* work with the -O0 option.
|
||||
*/
|
||||
#if defined(__i386__) && defined(__OPTIMIZE__) && (!defined(__ANDROID_API__) || defined(__clang__))
|
||||
|
||||
#define MULADDC_INIT \
|
||||
asm( \
|
||||
@@ -142,7 +149,7 @@
|
||||
"movl %%esi, %3 \n\t" \
|
||||
: "=m" (t), "=m" (c), "=m" (d), "=m" (s) \
|
||||
: "m" (t), "m" (s), "m" (d), "m" (c), "m" (b) \
|
||||
: "eax", "ecx", "edx", "esi", "edi" \
|
||||
: "eax", "ebx", "ecx", "edx", "esi", "edi" \
|
||||
);
|
||||
|
||||
#else
|
||||
@@ -154,7 +161,7 @@
|
||||
"movl %%esi, %3 \n\t" \
|
||||
: "=m" (t), "=m" (c), "=m" (d), "=m" (s) \
|
||||
: "m" (t), "m" (s), "m" (d), "m" (c), "m" (b) \
|
||||
: "eax", "ecx", "edx", "esi", "edi" \
|
||||
: "eax", "ebx", "ecx", "edx", "esi", "edi" \
|
||||
);
|
||||
#endif /* SSE2 */
|
||||
#endif /* i386 */
|
||||
@@ -521,7 +528,7 @@
|
||||
"swi r3, %2 \n\t" \
|
||||
: "=m" (c), "=m" (d), "=m" (s) \
|
||||
: "m" (s), "m" (d), "m" (c), "m" (b) \
|
||||
: "r3", "r4" "r5", "r6", "r7", "r8", \
|
||||
: "r3", "r4", "r5", "r6", "r7", "r8", \
|
||||
"r9", "r10", "r11", "r12", "r13" \
|
||||
);
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@ void mbedtls_ccm_free( mbedtls_ccm_context *ctx );
|
||||
* Must be at least \p length Bytes wide.
|
||||
* \param tag The buffer holding the tag.
|
||||
* \param tag_len The length of the tag to generate in Bytes:
|
||||
* 4, 6, 8, 10, 14 or 16.
|
||||
* 4, 6, 8, 10, 12, 14 or 16.
|
||||
*
|
||||
* \note The tag is written to a separate buffer. To concatenate
|
||||
* the \p tag with the \p output, as done in <em>RFC-3610:
|
||||
@@ -131,10 +131,13 @@ int mbedtls_ccm_encrypt_and_tag( mbedtls_ccm_context *ctx, size_t length,
|
||||
* \param iv_len The length of the IV in Bytes: 7, 8, 9, 10, 11, 12, or 13.
|
||||
* \param add The additional data field.
|
||||
* \param add_len The length of additional data in Bytes.
|
||||
* Must be less than 2^16 - 2^8.
|
||||
* \param input The buffer holding the input data.
|
||||
* \param output The buffer holding the output data.
|
||||
* Must be at least \p length Bytes wide.
|
||||
* \param tag The buffer holding the tag.
|
||||
* \param tag_len The length of the tag in Bytes.
|
||||
* 4, 6, 8, 10, 12, 14 or 16.
|
||||
*
|
||||
* \return 0 if successful and authenticated, or
|
||||
* #MBEDTLS_ERR_CCM_AUTH_FAILED if the tag does not match.
|
||||
|
||||
@@ -78,6 +78,10 @@
|
||||
#error "MBEDTLS_DHM_C defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT) && !defined(MBEDTLS_SSL_TRUNCATED_HMAC)
|
||||
#error "MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT defined, but not all prerequisites"
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_CMAC_C) && \
|
||||
!defined(MBEDTLS_AES_C) && !defined(MBEDTLS_DES_C)
|
||||
#error "MBEDTLS_CMAC_C defined, but not all prerequisites"
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
#define MBEDTLS_CIPHER_MODE_WITH_PADDING
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_ARC4_C)
|
||||
#if defined(MBEDTLS_ARC4_C) || defined(MBEDTLS_CIPHER_NULL_CIPHER)
|
||||
#define MBEDTLS_CIPHER_MODE_STREAM
|
||||
#endif
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
#ifndef MBEDTLS_CMAC_H
|
||||
#define MBEDTLS_CMAC_H
|
||||
|
||||
#include "mbedtls/cipher.h"
|
||||
#include "cipher.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
|
||||
@@ -1049,7 +1049,8 @@
|
||||
/**
|
||||
* \def MBEDTLS_RSA_NO_CRT
|
||||
*
|
||||
* Do not use the Chinese Remainder Theorem for the RSA private operation.
|
||||
* Do not use the Chinese Remainder Theorem
|
||||
* for the RSA private operation.
|
||||
*
|
||||
* Uncomment this macro to disable the use of CRT in RSA.
|
||||
*
|
||||
@@ -1411,6 +1412,30 @@
|
||||
*/
|
||||
#define MBEDTLS_SSL_TRUNCATED_HMAC
|
||||
|
||||
/**
|
||||
* \def MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT
|
||||
*
|
||||
* Fallback to old (pre-2.7), non-conforming implementation of the truncated
|
||||
* HMAC extension which also truncates the HMAC key. Note that this option is
|
||||
* only meant for a transitory upgrade period and is likely to be removed in
|
||||
* a future version of the library.
|
||||
*
|
||||
* \warning The old implementation is non-compliant and has a security weakness
|
||||
* (2^80 brute force attack on the HMAC key used for a single,
|
||||
* uninterrupted connection). This should only be enabled temporarily
|
||||
* when (1) the use of truncated HMAC is essential in order to save
|
||||
* bandwidth, and (2) the peer is an Mbed TLS stack that doesn't use
|
||||
* the fixed implementation yet (pre-2.7).
|
||||
*
|
||||
* \deprecated This option is deprecated and will likely be removed in a
|
||||
* future version of Mbed TLS.
|
||||
*
|
||||
* Uncomment to fallback to old, non-compliant truncated HMAC implementation.
|
||||
*
|
||||
* Requires: MBEDTLS_SSL_TRUNCATED_HMAC
|
||||
*/
|
||||
//#define MBEDTLS_SSL_TRUNCATED_HMAC_COMPAT
|
||||
|
||||
/**
|
||||
* \def MBEDTLS_THREADING_ALT
|
||||
*
|
||||
@@ -2793,7 +2818,7 @@
|
||||
/* \} name SECTION: Customisation configuration options */
|
||||
|
||||
/* Target and application specific configurations */
|
||||
//#define YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE "mbedtls/target_config.h"
|
||||
//#define YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE "target_config.h"
|
||||
|
||||
#if defined(TARGET_LIKE_MBED) && defined(YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE)
|
||||
#include YOTTA_CFG_MBEDTLS_TARGET_CONFIG_FILE
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
#include "aes.h"
|
||||
|
||||
#if defined(MBEDTLS_THREADING_C)
|
||||
#include "mbedtls/threading.h"
|
||||
#include "threading.h"
|
||||
#endif
|
||||
|
||||
#define MBEDTLS_ERR_CTR_DRBG_ENTROPY_SOURCE_FAILED -0x0034 /**< The entropy source failed. */
|
||||
|
||||
@@ -372,7 +372,7 @@ MBEDTLS_DEPRECATED typedef char const * mbedtls_deprecated_constant_t;
|
||||
* in <em>RFC-5114: Additional Diffie-Hellman Groups for Use with
|
||||
* IETF Standards</em>.
|
||||
*/
|
||||
#define MBEDTLS_DHM_RFC5114_MODP_P \
|
||||
#define MBEDTLS_DHM_RFC5114_MODP_2048_P \
|
||||
MBEDTLS_DEPRECATED_STRING_CONSTANT( \
|
||||
"AD107E1E9123A9D0D660FAA79559C51FA20D64E5683B9FD1" \
|
||||
"B54B1597B61D0A75E6FA141DF95A56DBAF9A3C407BA1DF15" \
|
||||
|
||||
@@ -272,8 +272,8 @@ int mbedtls_ecdsa_write_signature_det( mbedtls_ecdsa_context *ctx,
|
||||
*
|
||||
* \return \c 0 on success,
|
||||
* #MBEDTLS_ERR_ECP_BAD_INPUT_DATA if signature is invalid,
|
||||
* #MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH if the signature is
|
||||
* valid but its actual length is less than \p siglen,
|
||||
* #MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH if there is a valid
|
||||
* signature in sig but its length is less than \p siglen,
|
||||
* or an \c MBEDTLS_ERR_ECP_XXX or \c MBEDTLS_ERR_MPI_XXX
|
||||
* error code on failure for any other reason.
|
||||
*
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
#define MBEDTLS_ERR_ECP_ALLOC_FAILED -0x4D80 /**< Memory allocation failed. */
|
||||
#define MBEDTLS_ERR_ECP_RANDOM_FAILED -0x4D00 /**< Generation of random value, such as (ephemeral) key, failed. */
|
||||
#define MBEDTLS_ERR_ECP_INVALID_KEY -0x4C80 /**< Invalid private or public key. */
|
||||
#define MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH -0x4C00 /**< Signature is valid but shorter than the user-supplied length. */
|
||||
#define MBEDTLS_ERR_ECP_SIG_LEN_MISMATCH -0x4C00 /**< The buffer contains a valid signature followed by more data. */
|
||||
#define MBEDTLS_ERR_ECP_HW_ACCEL_FAILED -0x4B80 /**< ECP hardware accelerator failed. */
|
||||
|
||||
#if !defined(MBEDTLS_ECP_ALT)
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
* [6] Digital Signature Standard (DSS), FIPS 186-4.
|
||||
* <http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf>
|
||||
*
|
||||
* [7] Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer
|
||||
* [7] Elliptic Curve Cryptography (ECC) Cipher Suites for Transport Layer
|
||||
* Security (TLS), RFC 4492.
|
||||
* <https://tools.ietf.org/search/rfc4492>
|
||||
*
|
||||
|
||||
@@ -106,20 +106,41 @@ int mbedtls_gcm_setkey( mbedtls_gcm_context *ctx,
|
||||
* If the buffers overlap, the output buffer must trail at least 8 Bytes
|
||||
* behind the input buffer.
|
||||
*
|
||||
* \warning When this function performs a decryption, it outputs the
|
||||
* authentication tag and does not verify that the data is
|
||||
* authentic. You should use this function to perform encryption
|
||||
* only. For decryption, use mbedtls_gcm_auth_decrypt() instead.
|
||||
*
|
||||
* \param ctx The GCM context to use for encryption or decryption.
|
||||
* \param mode The operation to perform: #MBEDTLS_GCM_ENCRYPT or
|
||||
* #MBEDTLS_GCM_DECRYPT.
|
||||
* \param length The length of the input data. This must be a multiple of 16 except in the last call before mbedtls_gcm_finish().
|
||||
* \param mode The operation to perform:
|
||||
* - #MBEDTLS_GCM_ENCRYPT to perform authenticated encryption.
|
||||
* The ciphertext is written to \p output and the
|
||||
* authentication tag is written to \p tag.
|
||||
* - #MBEDTLS_GCM_DECRYPT to perform decryption.
|
||||
* The plaintext is written to \p output and the
|
||||
* authentication tag is written to \p tag.
|
||||
* Note that this mode is not recommended, because it does
|
||||
* not verify the authenticity of the data. For this reason,
|
||||
* you should use mbedtls_gcm_auth_decrypt() instead of
|
||||
* calling this function in decryption mode.
|
||||
* \param length The length of the input data, which is equal to the length
|
||||
* of the output data.
|
||||
* \param iv The initialization vector.
|
||||
* \param iv_len The length of the IV.
|
||||
* \param add The buffer holding the additional data.
|
||||
* \param add_len The length of the additional data.
|
||||
* \param input The buffer holding the input data.
|
||||
* \param output The buffer for holding the output data.
|
||||
* \param input The buffer holding the input data. Its size is \b length.
|
||||
* \param output The buffer for holding the output data. It must have room
|
||||
* for \b length bytes.
|
||||
* \param tag_len The length of the tag to generate.
|
||||
* \param tag The buffer for holding the tag.
|
||||
*
|
||||
* \return \c 0 on success.
|
||||
* \return \c 0 if the encryption or decryption was performed
|
||||
* successfully. Note that in #MBEDTLS_GCM_DECRYPT mode,
|
||||
* this does not indicate that the data is authentic.
|
||||
* \return #MBEDTLS_ERR_GCM_BAD_INPUT if the lengths are not valid.
|
||||
* \return #MBEDTLS_ERR_GCM_HW_ACCEL_FAILED or a cipher-specific
|
||||
* error code if the encryption or decryption failed.
|
||||
*/
|
||||
int mbedtls_gcm_crypt_and_tag( mbedtls_gcm_context *ctx,
|
||||
int mode,
|
||||
@@ -142,18 +163,23 @@ int mbedtls_gcm_crypt_and_tag( mbedtls_gcm_context *ctx,
|
||||
* behind the input buffer.
|
||||
*
|
||||
* \param ctx The GCM context.
|
||||
* \param length The length of the input data. This must be a multiple of 16 except in the last call before mbedtls_gcm_finish().
|
||||
* \param length The length of the ciphertext to decrypt, which is also
|
||||
* the length of the decrypted plaintext.
|
||||
* \param iv The initialization vector.
|
||||
* \param iv_len The length of the IV.
|
||||
* \param add The buffer holding the additional data.
|
||||
* \param add_len The length of the additional data.
|
||||
* \param tag The buffer holding the tag.
|
||||
* \param tag_len The length of the tag.
|
||||
* \param input The buffer holding the input data.
|
||||
* \param output The buffer for holding the output data.
|
||||
* \param tag The buffer holding the tag to verify.
|
||||
* \param tag_len The length of the tag to verify.
|
||||
* \param input The buffer holding the ciphertext. Its size is \b length.
|
||||
* \param output The buffer for holding the decrypted plaintext. It must
|
||||
* have room for \b length bytes.
|
||||
*
|
||||
* \return 0 if successful and authenticated, or
|
||||
* #MBEDTLS_ERR_GCM_AUTH_FAILED if tag does not match.
|
||||
* \return \c 0 if successful and authenticated.
|
||||
* \return #MBEDTLS_ERR_GCM_AUTH_FAILED if the tag does not match.
|
||||
* \return #MBEDTLS_ERR_GCM_BAD_INPUT if the lengths are not valid.
|
||||
* \return #MBEDTLS_ERR_GCM_HW_ACCEL_FAILED or a cipher-specific
|
||||
* error code if the decryption failed.
|
||||
*/
|
||||
int mbedtls_gcm_auth_decrypt( mbedtls_gcm_context *ctx,
|
||||
size_t length,
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
#include "md.h"
|
||||
|
||||
#if defined(MBEDTLS_THREADING_C)
|
||||
#include "mbedtls/threading.h"
|
||||
#include "threading.h"
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
||||
@@ -39,11 +39,6 @@
|
||||
|
||||
#define MBEDTLS_ERR_MD2_HW_ACCEL_FAILED -0x002B /**< MD2 hardware accelerator failed */
|
||||
|
||||
#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \
|
||||
!defined(inline) && !defined(__cplusplus)
|
||||
#define inline __inline
|
||||
#endif
|
||||
|
||||
#if !defined(MBEDTLS_MD2_ALT)
|
||||
// Regular implementation
|
||||
//
|
||||
@@ -187,11 +182,7 @@ int mbedtls_internal_md2_process( mbedtls_md2_context *ctx );
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_md2_starts(
|
||||
mbedtls_md2_context *ctx )
|
||||
{
|
||||
mbedtls_md2_starts_ret( ctx );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_md2_starts( mbedtls_md2_context *ctx );
|
||||
|
||||
/**
|
||||
* \brief MD2 process buffer
|
||||
@@ -207,13 +198,9 @@ MBEDTLS_DEPRECATED static inline void mbedtls_md2_starts(
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_md2_update(
|
||||
mbedtls_md2_context *ctx,
|
||||
const unsigned char *input,
|
||||
size_t ilen )
|
||||
{
|
||||
mbedtls_md2_update_ret( ctx, input, ilen );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_md2_update( mbedtls_md2_context *ctx,
|
||||
const unsigned char *input,
|
||||
size_t ilen );
|
||||
|
||||
/**
|
||||
* \brief MD2 final digest
|
||||
@@ -228,12 +215,8 @@ MBEDTLS_DEPRECATED static inline void mbedtls_md2_update(
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_md2_finish(
|
||||
mbedtls_md2_context *ctx,
|
||||
unsigned char output[16] )
|
||||
{
|
||||
mbedtls_md2_finish_ret( ctx, output );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_md2_finish( mbedtls_md2_context *ctx,
|
||||
unsigned char output[16] );
|
||||
|
||||
/**
|
||||
* \brief MD2 process data block (internal use only)
|
||||
@@ -247,11 +230,7 @@ MBEDTLS_DEPRECATED static inline void mbedtls_md2_finish(
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_md2_process(
|
||||
mbedtls_md2_context *ctx )
|
||||
{
|
||||
mbedtls_internal_md2_process( ctx );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_md2_process( mbedtls_md2_context *ctx );
|
||||
|
||||
#undef MBEDTLS_DEPRECATED
|
||||
#endif /* !MBEDTLS_DEPRECATED_REMOVED */
|
||||
@@ -304,12 +283,9 @@ int mbedtls_md2_ret( const unsigned char *input,
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_md2( const unsigned char *input,
|
||||
size_t ilen,
|
||||
unsigned char output[16] )
|
||||
{
|
||||
mbedtls_md2_ret( input, ilen, output );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_md2( const unsigned char *input,
|
||||
size_t ilen,
|
||||
unsigned char output[16] );
|
||||
|
||||
#undef MBEDTLS_DEPRECATED
|
||||
#endif /* !MBEDTLS_DEPRECATED_REMOVED */
|
||||
|
||||
@@ -40,11 +40,6 @@
|
||||
|
||||
#define MBEDTLS_ERR_MD4_HW_ACCEL_FAILED -0x002D /**< MD4 hardware accelerator failed */
|
||||
|
||||
#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \
|
||||
!defined(inline) && !defined(__cplusplus)
|
||||
#define inline __inline
|
||||
#endif
|
||||
|
||||
#if !defined(MBEDTLS_MD4_ALT)
|
||||
// Regular implementation
|
||||
//
|
||||
@@ -188,11 +183,7 @@ int mbedtls_internal_md4_process( mbedtls_md4_context *ctx,
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_md4_starts(
|
||||
mbedtls_md4_context *ctx )
|
||||
{
|
||||
mbedtls_md4_starts_ret( ctx );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_md4_starts( mbedtls_md4_context *ctx );
|
||||
|
||||
/**
|
||||
* \brief MD4 process buffer
|
||||
@@ -208,13 +199,9 @@ MBEDTLS_DEPRECATED static inline void mbedtls_md4_starts(
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_md4_update(
|
||||
mbedtls_md4_context *ctx,
|
||||
const unsigned char *input,
|
||||
size_t ilen )
|
||||
{
|
||||
mbedtls_md4_update_ret( ctx, input, ilen );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_md4_update( mbedtls_md4_context *ctx,
|
||||
const unsigned char *input,
|
||||
size_t ilen );
|
||||
|
||||
/**
|
||||
* \brief MD4 final digest
|
||||
@@ -229,12 +216,8 @@ MBEDTLS_DEPRECATED static inline void mbedtls_md4_update(
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_md4_finish(
|
||||
mbedtls_md4_context *ctx,
|
||||
unsigned char output[16] )
|
||||
{
|
||||
mbedtls_md4_finish_ret( ctx, output );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_md4_finish( mbedtls_md4_context *ctx,
|
||||
unsigned char output[16] );
|
||||
|
||||
/**
|
||||
* \brief MD4 process data block (internal use only)
|
||||
@@ -249,12 +232,8 @@ MBEDTLS_DEPRECATED static inline void mbedtls_md4_finish(
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_md4_process(
|
||||
mbedtls_md4_context *ctx,
|
||||
const unsigned char data[64] )
|
||||
{
|
||||
mbedtls_internal_md4_process( ctx, data );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_md4_process( mbedtls_md4_context *ctx,
|
||||
const unsigned char data[64] );
|
||||
|
||||
#undef MBEDTLS_DEPRECATED
|
||||
#endif /* !MBEDTLS_DEPRECATED_REMOVED */
|
||||
@@ -309,12 +288,9 @@ int mbedtls_md4_ret( const unsigned char *input,
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_md4( const unsigned char *input,
|
||||
size_t ilen,
|
||||
unsigned char output[16] )
|
||||
{
|
||||
mbedtls_md4_ret( input, ilen, output );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_md4( const unsigned char *input,
|
||||
size_t ilen,
|
||||
unsigned char output[16] );
|
||||
|
||||
#undef MBEDTLS_DEPRECATED
|
||||
#endif /* !MBEDTLS_DEPRECATED_REMOVED */
|
||||
|
||||
@@ -43,11 +43,6 @@
|
||||
// Regular implementation
|
||||
//
|
||||
|
||||
#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \
|
||||
!defined(inline) && !defined(__cplusplus)
|
||||
#define inline __inline
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@@ -188,11 +183,7 @@ int mbedtls_internal_md5_process( mbedtls_md5_context *ctx,
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_md5_starts(
|
||||
mbedtls_md5_context *ctx )
|
||||
{
|
||||
mbedtls_md5_starts_ret( ctx );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_md5_starts( mbedtls_md5_context *ctx );
|
||||
|
||||
/**
|
||||
* \brief MD5 process buffer
|
||||
@@ -208,13 +199,9 @@ MBEDTLS_DEPRECATED static inline void mbedtls_md5_starts(
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_md5_update(
|
||||
mbedtls_md5_context *ctx,
|
||||
const unsigned char *input,
|
||||
size_t ilen )
|
||||
{
|
||||
mbedtls_md5_update_ret( ctx, input, ilen );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_md5_update( mbedtls_md5_context *ctx,
|
||||
const unsigned char *input,
|
||||
size_t ilen );
|
||||
|
||||
/**
|
||||
* \brief MD5 final digest
|
||||
@@ -229,12 +216,8 @@ MBEDTLS_DEPRECATED static inline void mbedtls_md5_update(
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_md5_finish(
|
||||
mbedtls_md5_context *ctx,
|
||||
unsigned char output[16] )
|
||||
{
|
||||
mbedtls_md5_finish_ret( ctx, output );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_md5_finish( mbedtls_md5_context *ctx,
|
||||
unsigned char output[16] );
|
||||
|
||||
/**
|
||||
* \brief MD5 process data block (internal use only)
|
||||
@@ -249,12 +232,8 @@ MBEDTLS_DEPRECATED static inline void mbedtls_md5_finish(
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_md5_process(
|
||||
mbedtls_md5_context *ctx,
|
||||
const unsigned char data[64] )
|
||||
{
|
||||
mbedtls_internal_md5_process( ctx, data );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_md5_process( mbedtls_md5_context *ctx,
|
||||
const unsigned char data[64] );
|
||||
|
||||
#undef MBEDTLS_DEPRECATED
|
||||
#endif /* !MBEDTLS_DEPRECATED_REMOVED */
|
||||
@@ -309,12 +288,9 @@ int mbedtls_md5_ret( const unsigned char *input,
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_md5( const unsigned char *input,
|
||||
size_t ilen,
|
||||
unsigned char output[16] )
|
||||
{
|
||||
mbedtls_md5_ret( input, ilen, output );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_md5( const unsigned char *input,
|
||||
size_t ilen,
|
||||
unsigned char output[16] );
|
||||
|
||||
#undef MBEDTLS_DEPRECATED
|
||||
#endif /* !MBEDTLS_DEPRECATED_REMOVED */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* \file net.h
|
||||
*
|
||||
* \brief Deprecated header file that includes mbedtls/net_sockets.h
|
||||
* \brief Deprecated header file that includes net_sockets.h
|
||||
*
|
||||
* \deprecated Superseded by mbedtls/net_sockets.h
|
||||
*/
|
||||
@@ -25,7 +25,7 @@
|
||||
*/
|
||||
|
||||
#if !defined(MBEDTLS_DEPRECATED_REMOVED)
|
||||
#include "mbedtls/net_sockets.h"
|
||||
#include "net_sockets.h"
|
||||
#if defined(MBEDTLS_DEPRECATED_WARNING)
|
||||
#warning "Deprecated header file: Superseded by mbedtls/net_sockets.h"
|
||||
#endif /* MBEDTLS_DEPRECATED_WARNING */
|
||||
|
||||
@@ -118,9 +118,10 @@ int mbedtls_net_bind( mbedtls_net_context *ctx, const char *bind_ip, const char
|
||||
*
|
||||
* \param bind_ctx Relevant socket
|
||||
* \param client_ctx Will contain the connected client socket
|
||||
* \param client_ip Will contain the client IP address
|
||||
* \param client_ip Will contain the client IP address, can be NULL
|
||||
* \param buf_size Size of the client_ip buffer
|
||||
* \param ip_len Will receive the size of the client IP written
|
||||
* \param ip_len Will receive the size of the client IP written,
|
||||
* can be NULL if client_ip is null
|
||||
*
|
||||
* \return 0 if successful, or
|
||||
* MBEDTLS_ERR_NET_ACCEPT_FAILED, or
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
#define MBEDTLS_ERR_PK_INVALID_ALG -0x3A80 /**< The algorithm tag or value is invalid. */
|
||||
#define MBEDTLS_ERR_PK_UNKNOWN_NAMED_CURVE -0x3A00 /**< Elliptic curve is unsupported (only NIST curves are supported). */
|
||||
#define MBEDTLS_ERR_PK_FEATURE_UNAVAILABLE -0x3980 /**< Unavailable feature, e.g. RSA disabled for RSA key. */
|
||||
#define MBEDTLS_ERR_PK_SIG_LEN_MISMATCH -0x3900 /**< The signature is valid but its length is less than expected. */
|
||||
#define MBEDTLS_ERR_PK_SIG_LEN_MISMATCH -0x3900 /**< The buffer contains a valid signature followed by more data. */
|
||||
#define MBEDTLS_ERR_PK_HW_ACCEL_FAILED -0x3880 /**< PK hardware accelerator failed. */
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -269,8 +269,8 @@ int mbedtls_pk_can_do( const mbedtls_pk_context *ctx, mbedtls_pk_type_t type );
|
||||
* \param sig_len Signature length
|
||||
*
|
||||
* \return 0 on success (signature is valid),
|
||||
* MBEDTLS_ERR_PK_SIG_LEN_MISMATCH if the signature is
|
||||
* valid but its actual length is less than sig_len,
|
||||
* #MBEDTLS_ERR_PK_SIG_LEN_MISMATCH if there is a valid
|
||||
* signature in sig but its length is less than \p siglen,
|
||||
* or a specific error code.
|
||||
*
|
||||
* \note For RSA keys, the default padding type is PKCS#1 v1.5.
|
||||
@@ -300,10 +300,10 @@ int mbedtls_pk_verify( mbedtls_pk_context *ctx, mbedtls_md_type_t md_alg,
|
||||
* \param sig_len Signature length
|
||||
*
|
||||
* \return 0 on success (signature is valid),
|
||||
* MBEDTLS_ERR_PK_TYPE_MISMATCH if the PK context can't be
|
||||
* #MBEDTLS_ERR_PK_TYPE_MISMATCH if the PK context can't be
|
||||
* used for this type of signatures,
|
||||
* MBEDTLS_ERR_PK_SIG_LEN_MISMATCH if the signature is
|
||||
* valid but its actual length is less than sig_len,
|
||||
* #MBEDTLS_ERR_PK_SIG_LEN_MISMATCH if there is a valid
|
||||
* signature in sig but its length is less than \p siglen,
|
||||
* or a specific error code.
|
||||
*
|
||||
* \note If hash_len is 0, then the length associated with md_alg
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_HAVE_TIME)
|
||||
#include "mbedtls/platform_time.h"
|
||||
#include "platform_time.h"
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
@@ -210,7 +210,7 @@ int mbedtls_platform_set_snprintf( int (*snprintf_func)( char * s, size_t n,
|
||||
#if defined(MBEDTLS_PLATFORM_SNPRINTF_MACRO)
|
||||
#define mbedtls_snprintf MBEDTLS_PLATFORM_SNPRINTF_MACRO
|
||||
#else
|
||||
#define mbedtls_snprintf snprintf
|
||||
#define mbedtls_snprintf MBEDTLS_PLATFORM_STD_SNPRINTF
|
||||
#endif /* MBEDTLS_PLATFORM_SNPRINTF_MACRO */
|
||||
#endif /* MBEDTLS_PLATFORM_SNPRINTF_ALT */
|
||||
|
||||
|
||||
@@ -35,11 +35,6 @@
|
||||
|
||||
#define MBEDTLS_ERR_RIPEMD160_HW_ACCEL_FAILED -0x0031 /**< RIPEMD160 hardware accelerator failed */
|
||||
|
||||
#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \
|
||||
!defined(inline) && !defined(__cplusplus)
|
||||
#define inline __inline
|
||||
#endif
|
||||
|
||||
#if !defined(MBEDTLS_RIPEMD160_ALT)
|
||||
// Regular implementation
|
||||
//
|
||||
@@ -139,11 +134,8 @@ int mbedtls_internal_ripemd160_process( mbedtls_ripemd160_context *ctx,
|
||||
*
|
||||
* \param ctx context to be initialized
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_ripemd160_starts(
|
||||
mbedtls_ripemd160_context *ctx )
|
||||
{
|
||||
mbedtls_ripemd160_starts_ret( ctx );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_ripemd160_starts(
|
||||
mbedtls_ripemd160_context *ctx );
|
||||
|
||||
/**
|
||||
* \brief RIPEMD-160 process buffer
|
||||
@@ -154,13 +146,10 @@ MBEDTLS_DEPRECATED static inline void mbedtls_ripemd160_starts(
|
||||
* \param input buffer holding the data
|
||||
* \param ilen length of the input data
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_ripemd160_update(
|
||||
MBEDTLS_DEPRECATED void mbedtls_ripemd160_update(
|
||||
mbedtls_ripemd160_context *ctx,
|
||||
const unsigned char *input,
|
||||
size_t ilen )
|
||||
{
|
||||
mbedtls_ripemd160_update_ret( ctx, input, ilen );
|
||||
}
|
||||
size_t ilen );
|
||||
|
||||
/**
|
||||
* \brief RIPEMD-160 final digest
|
||||
@@ -170,12 +159,9 @@ MBEDTLS_DEPRECATED static inline void mbedtls_ripemd160_update(
|
||||
* \param ctx RIPEMD-160 context
|
||||
* \param output RIPEMD-160 checksum result
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_ripemd160_finish(
|
||||
MBEDTLS_DEPRECATED void mbedtls_ripemd160_finish(
|
||||
mbedtls_ripemd160_context *ctx,
|
||||
unsigned char output[20] )
|
||||
{
|
||||
mbedtls_ripemd160_finish_ret( ctx, output );
|
||||
}
|
||||
unsigned char output[20] );
|
||||
|
||||
/**
|
||||
* \brief RIPEMD-160 process data block (internal use only)
|
||||
@@ -185,12 +171,9 @@ MBEDTLS_DEPRECATED static inline void mbedtls_ripemd160_finish(
|
||||
* \param ctx RIPEMD-160 context
|
||||
* \param data buffer holding one block of data
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_ripemd160_process(
|
||||
MBEDTLS_DEPRECATED void mbedtls_ripemd160_process(
|
||||
mbedtls_ripemd160_context *ctx,
|
||||
const unsigned char data[64] )
|
||||
{
|
||||
mbedtls_internal_ripemd160_process( ctx, data );
|
||||
}
|
||||
const unsigned char data[64] );
|
||||
|
||||
#undef MBEDTLS_DEPRECATED
|
||||
#endif /* !MBEDTLS_DEPRECATED_REMOVED */
|
||||
@@ -235,13 +218,9 @@ int mbedtls_ripemd160_ret( const unsigned char *input,
|
||||
* \param ilen length of the input data
|
||||
* \param output RIPEMD-160 checksum result
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_ripemd160(
|
||||
const unsigned char *input,
|
||||
size_t ilen,
|
||||
unsigned char output[20] )
|
||||
{
|
||||
mbedtls_ripemd160_ret( input, ilen, output );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_ripemd160( const unsigned char *input,
|
||||
size_t ilen,
|
||||
unsigned char output[20] );
|
||||
|
||||
#undef MBEDTLS_DEPRECATED
|
||||
#endif /* !MBEDTLS_DEPRECATED_REMOVED */
|
||||
|
||||
@@ -518,6 +518,18 @@ int mbedtls_rsa_public( mbedtls_rsa_context *ctx,
|
||||
*
|
||||
* \note The input and output buffers must be large
|
||||
* enough. For example, 128 Bytes if RSA-1024 is used.
|
||||
*
|
||||
* \note Blinding is used if and only if a PRNG is provided.
|
||||
*
|
||||
* \note If blinding is used, both the base of exponentation
|
||||
* and the exponent are blinded, providing protection
|
||||
* against some side-channel attacks.
|
||||
*
|
||||
* \warning It is deprecated and a security risk to not provide
|
||||
* a PRNG here and thereby prevent the use of blinding.
|
||||
* Future versions of the library may enforce the presence
|
||||
* of a PRNG.
|
||||
*
|
||||
*/
|
||||
int mbedtls_rsa_private( mbedtls_rsa_context *ctx,
|
||||
int (*f_rng)(void *, unsigned char *, size_t),
|
||||
|
||||
@@ -2,6 +2,37 @@
|
||||
* \file rsa_internal.h
|
||||
*
|
||||
* \brief Context-independent RSA helper functions
|
||||
*
|
||||
* This module declares some RSA-related helper functions useful when
|
||||
* implementing the RSA interface. These functions are provided in a separate
|
||||
* compilation unit in order to make it easy for designers of alternative RSA
|
||||
* implementations to use them in their own code, as it is conceived that the
|
||||
* functionality they provide will be necessary for most complete
|
||||
* implementations.
|
||||
*
|
||||
* End-users of Mbed TLS who are not providing their own alternative RSA
|
||||
* implementations should not use these functions directly, and should instead
|
||||
* use only the functions declared in rsa.h.
|
||||
*
|
||||
* The interface provided by this module will be maintained through LTS (Long
|
||||
* Term Support) branches of Mbed TLS, but may otherwise be subject to change,
|
||||
* and must be considered an internal interface of the library.
|
||||
*
|
||||
* There are two classes of helper functions:
|
||||
*
|
||||
* (1) Parameter-generating helpers. These are:
|
||||
* - mbedtls_rsa_deduce_primes
|
||||
* - mbedtls_rsa_deduce_private_exponent
|
||||
* - mbedtls_rsa_deduce_crt
|
||||
* Each of these functions takes a set of core RSA parameters and
|
||||
* generates some other, or CRT related parameters.
|
||||
*
|
||||
* (2) Parameter-checking helpers. These are:
|
||||
* - mbedtls_rsa_validate_params
|
||||
* - mbedtls_rsa_validate_crt
|
||||
* They take a set of core or CRT related RSA parameters and check their
|
||||
* validity.
|
||||
*
|
||||
*/
|
||||
/*
|
||||
* Copyright (C) 2006-2017, ARM Limited, All Rights Reserved
|
||||
@@ -21,31 +52,6 @@
|
||||
*
|
||||
* This file is part of mbed TLS (https://tls.mbed.org)
|
||||
*
|
||||
*
|
||||
* This file declares some RSA-related helper functions useful when
|
||||
* implementing the RSA interface. They are public and provided in a
|
||||
* separate compilation unit in order to make it easy for designers of
|
||||
* alternative RSA implementations to use them in their code, as it is
|
||||
* conceived that the functionality they provide will be necessary
|
||||
* for most complete implementations.
|
||||
*
|
||||
* End-users of Mbed TLS not intending to re-implement the RSA functionality
|
||||
* are not expected to get into the need of making use of these functions directly,
|
||||
* but instead should be able to use the functions declared in rsa.h.
|
||||
*
|
||||
* There are two classes of helper functions:
|
||||
* (1) Parameter-generating helpers. These are:
|
||||
* - mbedtls_rsa_deduce_primes
|
||||
* - mbedtls_rsa_deduce_private_exponent
|
||||
* - mbedtls_rsa_deduce_crt
|
||||
* Each of these functions takes a set of core RSA parameters
|
||||
* and generates some other, or CRT related parameters.
|
||||
* (2) Parameter-checking helpers. These are:
|
||||
* - mbedtls_rsa_validate_params
|
||||
* - mbedtls_rsa_validate_crt
|
||||
* They take a set of core or CRT related RSA parameters
|
||||
* and check their validity.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef MBEDTLS_RSA_INTERNAL_H
|
||||
@@ -213,4 +219,8 @@ int mbedtls_rsa_validate_crt( const mbedtls_mpi *P, const mbedtls_mpi *Q,
|
||||
const mbedtls_mpi *D, const mbedtls_mpi *DP,
|
||||
const mbedtls_mpi *DQ, const mbedtls_mpi *QP );
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* rsa_internal.h */
|
||||
|
||||
@@ -39,11 +39,6 @@
|
||||
|
||||
#define MBEDTLS_ERR_SHA1_HW_ACCEL_FAILED -0x0035 /**< SHA-1 hardware accelerator failed */
|
||||
|
||||
#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \
|
||||
!defined(inline) && !defined(__cplusplus)
|
||||
#define inline __inline
|
||||
#endif
|
||||
|
||||
#if !defined(MBEDTLS_SHA1_ALT)
|
||||
// Regular implementation
|
||||
//
|
||||
@@ -190,11 +185,7 @@ int mbedtls_internal_sha1_process( mbedtls_sha1_context *ctx,
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_sha1_starts(
|
||||
mbedtls_sha1_context *ctx )
|
||||
{
|
||||
mbedtls_sha1_starts_ret( ctx );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_sha1_starts( mbedtls_sha1_context *ctx );
|
||||
|
||||
/**
|
||||
* \brief SHA-1 process buffer
|
||||
@@ -210,13 +201,9 @@ MBEDTLS_DEPRECATED static inline void mbedtls_sha1_starts(
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_sha1_update(
|
||||
mbedtls_sha1_context *ctx,
|
||||
const unsigned char *input,
|
||||
size_t ilen )
|
||||
{
|
||||
mbedtls_sha1_update_ret( ctx, input, ilen );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_sha1_update( mbedtls_sha1_context *ctx,
|
||||
const unsigned char *input,
|
||||
size_t ilen );
|
||||
|
||||
/**
|
||||
* \brief SHA-1 final digest
|
||||
@@ -231,12 +218,8 @@ MBEDTLS_DEPRECATED static inline void mbedtls_sha1_update(
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_sha1_finish(
|
||||
mbedtls_sha1_context *ctx,
|
||||
unsigned char output[20] )
|
||||
{
|
||||
mbedtls_sha1_finish_ret( ctx, output );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_sha1_finish( mbedtls_sha1_context *ctx,
|
||||
unsigned char output[20] );
|
||||
|
||||
/**
|
||||
* \brief SHA-1 process data block (internal use only)
|
||||
@@ -251,12 +234,8 @@ MBEDTLS_DEPRECATED static inline void mbedtls_sha1_finish(
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_sha1_process(
|
||||
mbedtls_sha1_context *ctx,
|
||||
const unsigned char data[64] )
|
||||
{
|
||||
mbedtls_internal_sha1_process( ctx, data );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_sha1_process( mbedtls_sha1_context *ctx,
|
||||
const unsigned char data[64] );
|
||||
|
||||
#undef MBEDTLS_DEPRECATED
|
||||
#endif /* !MBEDTLS_DEPRECATED_REMOVED */
|
||||
@@ -317,12 +296,9 @@ int mbedtls_sha1_ret( const unsigned char *input,
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_sha1( const unsigned char *input,
|
||||
size_t ilen,
|
||||
unsigned char output[20] )
|
||||
{
|
||||
mbedtls_sha1_ret( input, ilen, output );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_sha1( const unsigned char *input,
|
||||
size_t ilen,
|
||||
unsigned char output[20] );
|
||||
|
||||
#undef MBEDTLS_DEPRECATED
|
||||
#endif /* !MBEDTLS_DEPRECATED_REMOVED */
|
||||
|
||||
@@ -35,10 +35,6 @@
|
||||
|
||||
#define MBEDTLS_ERR_SHA256_HW_ACCEL_FAILED -0x0037 /**< SHA-256 hardware accelerator failed */
|
||||
|
||||
#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \
|
||||
!defined(inline) && !defined(__cplusplus)
|
||||
#define inline __inline
|
||||
#endif
|
||||
#if !defined(MBEDTLS_SHA256_ALT)
|
||||
// Regular implementation
|
||||
//
|
||||
@@ -156,12 +152,8 @@ int mbedtls_internal_sha256_process( mbedtls_sha256_context *ctx,
|
||||
* <ul><li>0: Use SHA-256.</li>
|
||||
* <li>1: Use SHA-224.</li></ul>
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_sha256_starts(
|
||||
mbedtls_sha256_context *ctx,
|
||||
int is224 )
|
||||
{
|
||||
mbedtls_sha256_starts_ret( ctx, is224 );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_sha256_starts( mbedtls_sha256_context *ctx,
|
||||
int is224 );
|
||||
|
||||
/**
|
||||
* \brief This function feeds an input buffer into an ongoing
|
||||
@@ -173,13 +165,9 @@ MBEDTLS_DEPRECATED static inline void mbedtls_sha256_starts(
|
||||
* \param input The buffer holding the data.
|
||||
* \param ilen The length of the input data.
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_sha256_update(
|
||||
mbedtls_sha256_context *ctx,
|
||||
const unsigned char *input,
|
||||
size_t ilen )
|
||||
{
|
||||
mbedtls_sha256_update_ret( ctx, input, ilen );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_sha256_update( mbedtls_sha256_context *ctx,
|
||||
const unsigned char *input,
|
||||
size_t ilen );
|
||||
|
||||
/**
|
||||
* \brief This function finishes the SHA-256 operation, and writes
|
||||
@@ -190,12 +178,8 @@ MBEDTLS_DEPRECATED static inline void mbedtls_sha256_update(
|
||||
* \param ctx The SHA-256 context.
|
||||
* \param output The SHA-224or SHA-256 checksum result.
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_sha256_finish(
|
||||
mbedtls_sha256_context *ctx,
|
||||
unsigned char output[32] )
|
||||
{
|
||||
mbedtls_sha256_finish_ret( ctx, output );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_sha256_finish( mbedtls_sha256_context *ctx,
|
||||
unsigned char output[32] );
|
||||
|
||||
/**
|
||||
* \brief This function processes a single data block within
|
||||
@@ -207,12 +191,8 @@ MBEDTLS_DEPRECATED static inline void mbedtls_sha256_finish(
|
||||
* \param ctx The SHA-256 context.
|
||||
* \param data The buffer holding one block of data.
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_sha256_process(
|
||||
mbedtls_sha256_context *ctx,
|
||||
const unsigned char data[64] )
|
||||
{
|
||||
mbedtls_internal_sha256_process( ctx, data );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_sha256_process( mbedtls_sha256_context *ctx,
|
||||
const unsigned char data[64] );
|
||||
|
||||
#undef MBEDTLS_DEPRECATED
|
||||
#endif /* !MBEDTLS_DEPRECATED_REMOVED */
|
||||
@@ -276,14 +256,10 @@ int mbedtls_sha256_ret( const unsigned char *input,
|
||||
* <ul><li>0: Use SHA-256.</li>
|
||||
* <li>1: Use SHA-224.</li></ul>
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_sha256(
|
||||
const unsigned char *input,
|
||||
size_t ilen,
|
||||
unsigned char output[32],
|
||||
int is224 )
|
||||
{
|
||||
mbedtls_sha256_ret( input, ilen, output, is224 );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_sha256( const unsigned char *input,
|
||||
size_t ilen,
|
||||
unsigned char output[32],
|
||||
int is224 );
|
||||
|
||||
#undef MBEDTLS_DEPRECATED
|
||||
#endif /* !MBEDTLS_DEPRECATED_REMOVED */
|
||||
|
||||
@@ -35,10 +35,6 @@
|
||||
|
||||
#define MBEDTLS_ERR_SHA512_HW_ACCEL_FAILED -0x0039 /**< SHA-512 hardware accelerator failed */
|
||||
|
||||
#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \
|
||||
!defined(inline) && !defined(__cplusplus)
|
||||
#define inline __inline
|
||||
#endif
|
||||
#if !defined(MBEDTLS_SHA512_ALT)
|
||||
// Regular implementation
|
||||
//
|
||||
@@ -156,12 +152,8 @@ int mbedtls_internal_sha512_process( mbedtls_sha512_context *ctx,
|
||||
* <ul><li>0: Use SHA-512.</li>
|
||||
* <li>1: Use SHA-384.</li></ul>
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_sha512_starts(
|
||||
mbedtls_sha512_context *ctx,
|
||||
int is384 )
|
||||
{
|
||||
mbedtls_sha512_starts_ret( ctx, is384 );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_sha512_starts( mbedtls_sha512_context *ctx,
|
||||
int is384 );
|
||||
|
||||
/**
|
||||
* \brief This function feeds an input buffer into an ongoing
|
||||
@@ -173,13 +165,9 @@ MBEDTLS_DEPRECATED static inline void mbedtls_sha512_starts(
|
||||
* \param input The buffer holding the data.
|
||||
* \param ilen The length of the input data.
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_sha512_update(
|
||||
mbedtls_sha512_context *ctx,
|
||||
const unsigned char *input,
|
||||
size_t ilen )
|
||||
{
|
||||
mbedtls_sha512_update_ret( ctx, input, ilen );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_sha512_update( mbedtls_sha512_context *ctx,
|
||||
const unsigned char *input,
|
||||
size_t ilen );
|
||||
|
||||
/**
|
||||
* \brief This function finishes the SHA-512 operation, and writes
|
||||
@@ -190,12 +178,8 @@ MBEDTLS_DEPRECATED static inline void mbedtls_sha512_update(
|
||||
* \param ctx The SHA-512 context.
|
||||
* \param output The SHA-384 or SHA-512 checksum result.
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_sha512_finish(
|
||||
mbedtls_sha512_context *ctx,
|
||||
unsigned char output[64] )
|
||||
{
|
||||
mbedtls_sha512_finish_ret( ctx, output );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_sha512_finish( mbedtls_sha512_context *ctx,
|
||||
unsigned char output[64] );
|
||||
|
||||
/**
|
||||
* \brief This function processes a single data block within
|
||||
@@ -207,12 +191,9 @@ MBEDTLS_DEPRECATED static inline void mbedtls_sha512_finish(
|
||||
* \param ctx The SHA-512 context.
|
||||
* \param data The buffer holding one block of data.
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_sha512_process(
|
||||
MBEDTLS_DEPRECATED void mbedtls_sha512_process(
|
||||
mbedtls_sha512_context *ctx,
|
||||
const unsigned char data[128] )
|
||||
{
|
||||
mbedtls_internal_sha512_process( ctx, data );
|
||||
}
|
||||
const unsigned char data[128] );
|
||||
|
||||
#undef MBEDTLS_DEPRECATED
|
||||
#endif /* !MBEDTLS_DEPRECATED_REMOVED */
|
||||
@@ -278,14 +259,10 @@ int mbedtls_sha512_ret( const unsigned char *input,
|
||||
* <ul><li>0: Use SHA-512.</li>
|
||||
* <li>1: Use SHA-384.</li></ul>
|
||||
*/
|
||||
MBEDTLS_DEPRECATED static inline void mbedtls_sha512(
|
||||
const unsigned char *input,
|
||||
size_t ilen,
|
||||
unsigned char output[64],
|
||||
int is384 )
|
||||
{
|
||||
mbedtls_sha512_ret( input, ilen, output, is384 );
|
||||
}
|
||||
MBEDTLS_DEPRECATED void mbedtls_sha512( const unsigned char *input,
|
||||
size_t ilen,
|
||||
unsigned char output[64],
|
||||
int is384 );
|
||||
|
||||
#undef MBEDTLS_DEPRECATED
|
||||
#endif /* !MBEDTLS_DEPRECATED_REMOVED */
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
#endif
|
||||
|
||||
#if defined(MBEDTLS_HAVE_TIME)
|
||||
#include "mbedtls/platform_time.h"
|
||||
#include "platform_time.h"
|
||||
#endif
|
||||
|
||||
/*
|
||||
@@ -932,14 +932,6 @@ extern int (*mbedtls_ssl_hw_record_read)(mbedtls_ssl_context *ssl);
|
||||
extern int (*mbedtls_ssl_hw_record_finish)(mbedtls_ssl_context *ssl);
|
||||
#endif /* MBEDTLS_SSL_HW_RECORD_ACCEL */
|
||||
|
||||
/**
|
||||
* \brief Returns the list of ciphersuites supported by the SSL/TLS module.
|
||||
*
|
||||
* \return a statically allocated array of ciphersuites, the last
|
||||
* entry is 0.
|
||||
*/
|
||||
const int *mbedtls_ssl_list_ciphersuites( void );
|
||||
|
||||
/**
|
||||
* \brief Return the name of the ciphersuite associated with the
|
||||
* given ID
|
||||
@@ -975,8 +967,13 @@ void mbedtls_ssl_init( mbedtls_ssl_context *ssl );
|
||||
* \note No copy of the configuration context is made, it can be
|
||||
* shared by many mbedtls_ssl_context structures.
|
||||
*
|
||||
* \warning Modifying the conf structure after it has been used in this
|
||||
* function is unsupported!
|
||||
* \warning The conf structure will be accessed during the session.
|
||||
* It must not be modified or freed as long as the session
|
||||
* is active.
|
||||
*
|
||||
* \warning This function must be called exactly once per context.
|
||||
* Calling mbedtls_ssl_setup again is not supported, even
|
||||
* if no session is active.
|
||||
*
|
||||
* \param ssl SSL context
|
||||
* \param conf SSL configuration to use
|
||||
@@ -1591,6 +1588,10 @@ void mbedtls_ssl_conf_cert_profile( mbedtls_ssl_config *conf,
|
||||
/**
|
||||
* \brief Set the data required to verify peer certificate
|
||||
*
|
||||
* \note See \c mbedtls_x509_crt_verify() for notes regarding the
|
||||
* parameters ca_chain (maps to trust_ca for that function)
|
||||
* and ca_crl.
|
||||
*
|
||||
* \param conf SSL configuration
|
||||
* \param ca_chain trusted CA chain (meaning all fully trusted top-level CAs)
|
||||
* \param ca_crl trusted CA CRLs
|
||||
@@ -1831,21 +1832,21 @@ void mbedtls_ssl_conf_sig_hashes( mbedtls_ssl_config *conf,
|
||||
|
||||
#if defined(MBEDTLS_X509_CRT_PARSE_C)
|
||||
/**
|
||||
* \brief Set or reset the hostname to check against the received
|
||||
* server certificate. It sets the ServerName TLS extension,
|
||||
* \brief Set or reset the hostname to check against the received
|
||||
* server certificate. It sets the ServerName TLS extension,
|
||||
* too, if that extension is enabled. (client-side only)
|
||||
*
|
||||
* \param ssl SSL context
|
||||
* \param hostname the server hostname, may be NULL to clear hostname
|
||||
|
||||
*
|
||||
* \note Maximum hostname length MBEDTLS_SSL_MAX_HOST_NAME_LEN.
|
||||
*
|
||||
* \return 0 if successful, MBEDTLS_ERR_SSL_ALLOC_FAILED on
|
||||
* allocation failure, MBEDTLS_ERR_SSL_BAD_INPUT_DATA on
|
||||
* \return 0 if successful, MBEDTLS_ERR_SSL_ALLOC_FAILED on
|
||||
* allocation failure, MBEDTLS_ERR_SSL_BAD_INPUT_DATA on
|
||||
* too long input hostname.
|
||||
*
|
||||
* Hostname set to the one provided on success (cleared
|
||||
* when NULL). On allocation failure hostname is cleared.
|
||||
* when NULL). On allocation failure hostname is cleared.
|
||||
* On too long input failure, old hostname is unchanged.
|
||||
*/
|
||||
int mbedtls_ssl_set_hostname( mbedtls_ssl_context *ssl, const char *hostname );
|
||||
@@ -2391,7 +2392,6 @@ const mbedtls_x509_crt *mbedtls_ssl_get_peer_cert( const mbedtls_ssl_context *ss
|
||||
* \brief Save session in order to resume it later (client-side only)
|
||||
* Session data is copied to presented session structure.
|
||||
*
|
||||
* \warning Currently, peer certificate is lost in the operation.
|
||||
*
|
||||
* \param ssl SSL context
|
||||
* \param session session context
|
||||
@@ -2399,7 +2399,18 @@ const mbedtls_x509_crt *mbedtls_ssl_get_peer_cert( const mbedtls_ssl_context *ss
|
||||
* \return 0 if successful,
|
||||
* MBEDTLS_ERR_SSL_ALLOC_FAILED if memory allocation failed,
|
||||
* MBEDTLS_ERR_SSL_BAD_INPUT_DATA if used server-side or
|
||||
* arguments are otherwise invalid
|
||||
* arguments are otherwise invalid.
|
||||
*
|
||||
* \note Only the server certificate is copied, and not the full chain,
|
||||
* so you should not attempt to validate the certificate again
|
||||
* by calling \c mbedtls_x509_crt_verify() on it.
|
||||
* Instead, you should use the results from the verification
|
||||
* in the original handshake by calling \c mbedtls_ssl_get_verify_result()
|
||||
* after loading the session again into a new SSL context
|
||||
* using \c mbedtls_ssl_set_session().
|
||||
*
|
||||
* \note Once the session object is not needed anymore, you should
|
||||
* free it by calling \c mbedtls_ssl_session_free().
|
||||
*
|
||||
* \sa mbedtls_ssl_set_session()
|
||||
*/
|
||||
@@ -2525,15 +2536,19 @@ int mbedtls_ssl_read( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len )
|
||||
* or MBEDTLS_ERR_SSL_WANT_WRITE or MBEDTLS_ERR_SSL_WANT_READ,
|
||||
* or another negative error code.
|
||||
*
|
||||
* \note If this function returns something other than a positive
|
||||
* value or MBEDTLS_ERR_SSL_WANT_READ/WRITE, the ssl context
|
||||
* becomes unusable, and you should either free it or call
|
||||
* \c mbedtls_ssl_session_reset() on it before re-using it for
|
||||
* a new connection; the current connection must be closed.
|
||||
* \note If this function returns something other than 0, a positive
|
||||
* value or MBEDTLS_ERR_SSL_WANT_READ/WRITE, you must stop
|
||||
* using the SSL context for reading or writing, and either
|
||||
* free it or call \c mbedtls_ssl_session_reset() on it before
|
||||
* re-using it for a new connection; the current connection
|
||||
* must be closed.
|
||||
*
|
||||
* \note When this function returns MBEDTLS_ERR_SSL_WANT_WRITE/READ,
|
||||
* it must be called later with the *same* arguments,
|
||||
* until it returns a positive value.
|
||||
* until it returns a value greater that or equal to 0. When
|
||||
* the function returns MBEDTLS_ERR_SSL_WANT_WRITE there may be
|
||||
* some partial data in the output buffer, however this is not
|
||||
* yet sent.
|
||||
*
|
||||
* \note If the requested length is greater than the maximum
|
||||
* fragment length (either the built-in limit or the one set
|
||||
@@ -2542,6 +2557,9 @@ int mbedtls_ssl_read( mbedtls_ssl_context *ssl, unsigned char *buf, size_t len )
|
||||
* - with DTLS, MBEDTLS_ERR_SSL_BAD_INPUT_DATA is returned.
|
||||
* \c mbedtls_ssl_get_max_frag_len() may be used to query the
|
||||
* active maximum fragment length.
|
||||
*
|
||||
* \note Attempting to write 0 bytes will result in an empty TLS
|
||||
* application record being sent.
|
||||
*/
|
||||
int mbedtls_ssl_write( mbedtls_ssl_context *ssl, const unsigned char *buf, size_t len );
|
||||
|
||||
@@ -2634,6 +2652,9 @@ void mbedtls_ssl_session_init( mbedtls_ssl_session *session );
|
||||
* \brief Free referenced items in an SSL session including the
|
||||
* peer certificate and clear memory
|
||||
*
|
||||
* \note A session object can be freed even if the SSL context
|
||||
* that was used to retrieve the session is still in use.
|
||||
*
|
||||
* \param session SSL session
|
||||
*/
|
||||
void mbedtls_ssl_session_free( mbedtls_ssl_session *session );
|
||||
|
||||
@@ -267,7 +267,7 @@ typedef enum {
|
||||
defined(MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED) || \
|
||||
defined(MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED) || \
|
||||
defined(MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED) || \
|
||||
defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
|
||||
defined(MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED)
|
||||
#define MBEDTLS_KEY_EXCHANGE__CERT_REQ_ALLOWED__ENABLED
|
||||
#endif
|
||||
|
||||
|
||||
@@ -71,6 +71,9 @@
|
||||
#endif /* MBEDTLS_SSL_PROTO_TLS1 */
|
||||
#endif /* MBEDTLS_SSL_PROTO_SSL3 */
|
||||
|
||||
#define MBEDTLS_SSL_MIN_VALID_MINOR_VERSION MBEDTLS_SSL_MINOR_VERSION_1
|
||||
#define MBEDTLS_SSL_MIN_VALID_MAJOR_VERSION MBEDTLS_SSL_MAJOR_VERSION_3
|
||||
|
||||
/* Determine maximum supported version */
|
||||
#define MBEDTLS_SSL_MAX_MAJOR_VERSION MBEDTLS_SSL_MAJOR_VERSION_3
|
||||
|
||||
@@ -627,7 +630,13 @@ static inline int mbedtls_ssl_safer_memcmp( const void *a, const void *b, size_t
|
||||
volatile unsigned char diff = 0;
|
||||
|
||||
for( i = 0; i < n; i++ )
|
||||
diff |= A[i] ^ B[i];
|
||||
{
|
||||
/* Read volatile data in order before computing diff.
|
||||
* This avoids IAR compiler warning:
|
||||
* 'the order of volatile accesses is undefined ..' */
|
||||
unsigned char x = A[i], y = B[i];
|
||||
diff |= x ^ y;
|
||||
}
|
||||
|
||||
return( diff );
|
||||
}
|
||||
|
||||
@@ -96,8 +96,12 @@ extern int (*mbedtls_mutex_unlock)( mbedtls_threading_mutex_t *mutex );
|
||||
/*
|
||||
* Global mutexes
|
||||
*/
|
||||
#if defined(MBEDTLS_FS_IO)
|
||||
extern mbedtls_threading_mutex_t mbedtls_threading_readdir_mutex;
|
||||
#endif
|
||||
#if defined(MBEDTLS_HAVE_TIME_DATE)
|
||||
extern mbedtls_threading_mutex_t mbedtls_threading_gmtime_mutex;
|
||||
#endif
|
||||
#endif /* MBEDTLS_THREADING_C */
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -40,16 +40,16 @@
|
||||
*/
|
||||
#define MBEDTLS_VERSION_MAJOR 2
|
||||
#define MBEDTLS_VERSION_MINOR 7
|
||||
#define MBEDTLS_VERSION_PATCH 0
|
||||
#define MBEDTLS_VERSION_PATCH 5
|
||||
|
||||
/**
|
||||
* The single version number has the following structure:
|
||||
* MMNNPP00
|
||||
* Major version | Minor version | Patch version
|
||||
*/
|
||||
#define MBEDTLS_VERSION_NUMBER 0x02070000
|
||||
#define MBEDTLS_VERSION_STRING "2.7.0"
|
||||
#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.7.0"
|
||||
#define MBEDTLS_VERSION_NUMBER 0x02070500
|
||||
#define MBEDTLS_VERSION_STRING "2.7.5"
|
||||
#define MBEDTLS_VERSION_STRING_FULL "mbed TLS 2.7.5"
|
||||
|
||||
#if defined(MBEDTLS_VERSION_C)
|
||||
|
||||
|
||||
@@ -289,8 +289,15 @@ int mbedtls_x509_crt_verify_info( char *buf, size_t size, const char *prefix,
|
||||
* used to sign the certificate, CRL verification is skipped
|
||||
* silently, that is *without* setting any flag.
|
||||
*
|
||||
* \note The \c trust_ca list can contain two types of certificates:
|
||||
* (1) those of trusted root CAs, so that certificates
|
||||
* chaining up to those CAs will be trusted, and (2)
|
||||
* self-signed end-entity certificates to be trusted (for
|
||||
* specific peers you know) - in that case, the self-signed
|
||||
* certificate doesn't need to have the CA bit set.
|
||||
*
|
||||
* \param crt a certificate (chain) to be verified
|
||||
* \param trust_ca the list of trusted CAs
|
||||
* \param trust_ca the list of trusted CAs (see note above)
|
||||
* \param ca_crl the list of CRLs for trusted CAs (see note above)
|
||||
* \param cn expected Common Name (can be set to
|
||||
* NULL if the CN must not be verified)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -4,8 +4,8 @@ export ASIO_CSUM=fa8c3a16dc2163f5b3451f2a14ce95277c971f46700497d4e94af6059c00dc0
|
||||
export LZ4_VERSION=lz4-1.8.0
|
||||
export LZ4_CSUM=2ca482ea7a9bb103603108b5a7510b7592b90158c151ff50a28f1ca8389fccf6
|
||||
|
||||
export MBEDTLS_VERSION=mbedtls-2.7.0
|
||||
export MBEDTLS_CSUM=aeb66d6cd43aa1c79c145d15845c655627a7fc30d624148aaafbb6c36d7f55ef
|
||||
export MBEDTLS_VERSION=mbedtls-2.7.5
|
||||
export MBEDTLS_CSUM=a1302ad9094aabb9880d2755927b466a6bac8e02b68e04dee77321f3859e9b40
|
||||
|
||||
export OPENSSL_VERSION=openssl-1.0.2h
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
From 62dd1588a7ec3501edfaf9470cf7a1ca15cb4ba1 Mon Sep 17 00:00:00 2001
|
||||
From 0554efae4e27b6a764def80f600394519ef1addb Mon Sep 17 00:00:00 2001
|
||||
From: Antonio Quartulli <antonio@openvpn.net>
|
||||
Date: Tue, 20 Mar 2018 09:35:47 +0800
|
||||
Subject: [PATCH] relax x509 date format check
|
||||
Subject: [PATCH 1/2] relax x509 date format check
|
||||
|
||||
Signed-off-by: Antonio Quartulli <antonio@openvpn.net>
|
||||
---
|
||||
@@ -9,10 +9,10 @@ Signed-off-by: Antonio Quartulli <antonio@openvpn.net>
|
||||
1 file changed, 17 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/library/x509.c b/library/x509.c
|
||||
index 371d6da1..df2cea81 100644
|
||||
index 264c7fb0c..9372bcb92 100644
|
||||
--- a/library/x509.c
|
||||
+++ b/library/x509.c
|
||||
@@ -565,13 +565,20 @@ static int x509_parse_time( unsigned char **p, size_t len, size_t yearlen,
|
||||
@@ -556,13 +556,20 @@ static int x509_parse_time( unsigned char **p, size_t len, size_t yearlen,
|
||||
/*
|
||||
* Parse seconds if present
|
||||
*/
|
||||
@@ -34,7 +34,7 @@ index 371d6da1..df2cea81 100644
|
||||
|
||||
/*
|
||||
* Parse trailing 'Z' if present
|
||||
@@ -581,6 +588,15 @@ static int x509_parse_time( unsigned char **p, size_t len, size_t yearlen,
|
||||
@@ -572,6 +579,15 @@ static int x509_parse_time( unsigned char **p, size_t len, size_t yearlen,
|
||||
(*p)++;
|
||||
len--;
|
||||
}
|
||||
@@ -51,5 +51,5 @@ index 371d6da1..df2cea81 100644
|
||||
/*
|
||||
* We should have parsed all characters at this point
|
||||
--
|
||||
2.16.2
|
||||
2.18.0
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
From 13dd5f71dfe345787c3c44ef177009530983bf20 Mon Sep 17 00:00:00 2001
|
||||
From c6963e33209e7fd40d65513e06c1bbb20319abe3 Mon Sep 17 00:00:00 2001
|
||||
From: Lev Stipakov <lev@openvpn.net>
|
||||
Date: Fri, 23 Feb 2018 17:12:49 +0200
|
||||
Subject: [PATCH] Enable allowing unsupported critical extensions in runtime
|
||||
Subject: [PATCH 2/2] Enable allowing unsupported critical extensions in
|
||||
runtime
|
||||
|
||||
When compile time flag MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION
|
||||
is not set, certificate parsing fails if certificate contains unsupported critical extension.
|
||||
@@ -10,23 +11,23 @@ This patch allows to modify this behavior in runtime.
|
||||
|
||||
Signed-off-by: Lev Stipakov <lev@openvpn.net>
|
||||
---
|
||||
include/mbedtls/oid.h | 13 ++++-
|
||||
include/mbedtls/ssl.h | 22 ++++++++
|
||||
include/mbedtls/oid.h | 13 +++-
|
||||
include/mbedtls/ssl.h | 22 ++++++
|
||||
include/mbedtls/x509_crt.h | 2 +
|
||||
library/oid.c | 81 +++++++++++++++++++++++++-----
|
||||
library/oid.c | 81 ++++++++++++++++++----
|
||||
library/ssl_tls.c | 8 +++
|
||||
library/x509_crt.c | 10 +++-
|
||||
tests/data_files/test-ca-nc.crt | 20 ++++++++
|
||||
tests/suites/test_suite_x509parse.data | 6 +++
|
||||
tests/suites/test_suite_x509parse.function | 15 ++++++
|
||||
library/x509_crt.c | 10 ++-
|
||||
tests/data_files/test-ca-nc.crt | 20 ++++++
|
||||
tests/suites/test_suite_x509parse.data | 6 ++
|
||||
tests/suites/test_suite_x509parse.function | 15 ++++
|
||||
9 files changed, 162 insertions(+), 15 deletions(-)
|
||||
create mode 100644 tests/data_files/test-ca-nc.crt
|
||||
|
||||
diff --git a/include/mbedtls/oid.h b/include/mbedtls/oid.h
|
||||
index fcecdafd..096b1b10 100644
|
||||
index 408645ece..b116736f8 100644
|
||||
--- a/include/mbedtls/oid.h
|
||||
+++ b/include/mbedtls/oid.h
|
||||
@@ -401,7 +401,7 @@ int mbedtls_oid_get_numeric_string( char *buf, size_t size, const mbedtls_asn1_b
|
||||
@@ -410,7 +410,7 @@ int mbedtls_oid_get_numeric_string( char *buf, size_t size, const mbedtls_asn1_b
|
||||
|
||||
#if defined(MBEDTLS_X509_USE_C) || defined(MBEDTLS_X509_CREATE_C)
|
||||
/**
|
||||
@@ -35,7 +36,7 @@ index fcecdafd..096b1b10 100644
|
||||
*
|
||||
* \param oid OID to use
|
||||
* \param ext_type place to store the extension type
|
||||
@@ -409,6 +409,17 @@ int mbedtls_oid_get_numeric_string( char *buf, size_t size, const mbedtls_asn1_b
|
||||
@@ -418,6 +418,17 @@ int mbedtls_oid_get_numeric_string( char *buf, size_t size, const mbedtls_asn1_b
|
||||
* \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND
|
||||
*/
|
||||
int mbedtls_oid_get_x509_ext_type( const mbedtls_asn1_buf *oid, int *ext_type );
|
||||
@@ -54,10 +55,10 @@ index fcecdafd..096b1b10 100644
|
||||
|
||||
/**
|
||||
diff --git a/include/mbedtls/ssl.h b/include/mbedtls/ssl.h
|
||||
index cc000700..cb779f86 100644
|
||||
index c6e453274..72374e36b 100644
|
||||
--- a/include/mbedtls/ssl.h
|
||||
+++ b/include/mbedtls/ssl.h
|
||||
@@ -695,6 +695,10 @@ struct mbedtls_ssl_config
|
||||
@@ -696,6 +696,10 @@ struct mbedtls_ssl_config
|
||||
retransmission timeout (ms) */
|
||||
#endif
|
||||
|
||||
@@ -68,7 +69,7 @@ index cc000700..cb779f86 100644
|
||||
#if defined(MBEDTLS_SSL_RENEGOTIATION)
|
||||
int renego_max_records; /*!< grace period for renegotiation */
|
||||
unsigned char renego_period[8]; /*!< value of the record counters
|
||||
@@ -2234,6 +2238,24 @@ void mbedtls_ssl_conf_renegotiation_period( mbedtls_ssl_config *conf,
|
||||
@@ -2275,6 +2279,24 @@ void mbedtls_ssl_conf_renegotiation_period( mbedtls_ssl_config *conf,
|
||||
const unsigned char period[8] );
|
||||
#endif /* MBEDTLS_SSL_RENEGOTIATION */
|
||||
|
||||
@@ -94,10 +95,10 @@ index cc000700..cb779f86 100644
|
||||
* \brief Return the number of data bytes available to read
|
||||
*
|
||||
diff --git a/include/mbedtls/x509_crt.h b/include/mbedtls/x509_crt.h
|
||||
index 06166d8b..adc6474f 100644
|
||||
index ac23cffe8..2e489915f 100644
|
||||
--- a/include/mbedtls/x509_crt.h
|
||||
+++ b/include/mbedtls/x509_crt.h
|
||||
@@ -89,6 +89,8 @@ typedef struct mbedtls_x509_crt
|
||||
@@ -90,6 +90,8 @@ typedef struct mbedtls_x509_crt
|
||||
mbedtls_pk_type_t sig_pk; /**< Internal representation of the Public Key algorithm of the signature algorithm, e.g. MBEDTLS_PK_RSA */
|
||||
void *sig_opts; /**< Signature options to be passed to mbedtls_pk_verify_ext(), e.g. for RSASSA-PSS */
|
||||
|
||||
@@ -107,7 +108,7 @@ index 06166d8b..adc6474f 100644
|
||||
}
|
||||
mbedtls_x509_crt;
|
||||
diff --git a/library/oid.c b/library/oid.c
|
||||
index f13826ed..7c50f24f 100644
|
||||
index edea950f8..a756d2801 100644
|
||||
--- a/library/oid.c
|
||||
+++ b/library/oid.c
|
||||
@@ -254,38 +254,95 @@ FN_OID_GET_ATTR1(mbedtls_oid_get_attr_short_name, oid_x520_attr_t, x520_attr, co
|
||||
@@ -219,10 +220,10 @@ index f13826ed..7c50f24f 100644
|
||||
static const mbedtls_oid_descriptor_t oid_ext_key_usage[] =
|
||||
{
|
||||
diff --git a/library/ssl_tls.c b/library/ssl_tls.c
|
||||
index 661ae706..ed1f7b67 100644
|
||||
index ca9b8c432..dba0d5122 100644
|
||||
--- a/library/ssl_tls.c
|
||||
+++ b/library/ssl_tls.c
|
||||
@@ -4468,6 +4468,9 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl )
|
||||
@@ -4656,6 +4656,9 @@ int mbedtls_ssl_parse_certificate( mbedtls_ssl_context *ssl )
|
||||
|
||||
mbedtls_x509_crt_init( ssl->session_negotiate->peer_cert );
|
||||
|
||||
@@ -232,7 +233,7 @@ index 661ae706..ed1f7b67 100644
|
||||
i += 3;
|
||||
|
||||
while( i < ssl->in_hslen )
|
||||
@@ -6344,6 +6347,11 @@ void mbedtls_ssl_conf_renegotiation_period( mbedtls_ssl_config *conf,
|
||||
@@ -6586,6 +6589,11 @@ void mbedtls_ssl_conf_renegotiation_period( mbedtls_ssl_config *conf,
|
||||
}
|
||||
#endif /* MBEDTLS_SSL_RENEGOTIATION */
|
||||
|
||||
@@ -245,10 +246,10 @@ index 661ae706..ed1f7b67 100644
|
||||
#if defined(MBEDTLS_SSL_CLI_C)
|
||||
void mbedtls_ssl_conf_session_tickets( mbedtls_ssl_config *conf, int use_tickets )
|
||||
diff --git a/library/x509_crt.c b/library/x509_crt.c
|
||||
index c6209fb4..1a61e5e9 100644
|
||||
index 6751da0d2..149149b96 100644
|
||||
--- a/library/x509_crt.c
|
||||
+++ b/library/x509_crt.c
|
||||
@@ -526,6 +526,7 @@ static int x509_get_crt_ext( unsigned char **p,
|
||||
@@ -530,6 +530,7 @@ static int x509_get_crt_ext( unsigned char **p,
|
||||
int ret;
|
||||
size_t len;
|
||||
unsigned char *end_ext_data, *end_ext_octet;
|
||||
@@ -256,7 +257,7 @@ index c6209fb4..1a61e5e9 100644
|
||||
|
||||
if( ( ret = mbedtls_x509_get_ext( p, end, &crt->v3_ext, 3 ) ) != 0 )
|
||||
{
|
||||
@@ -585,9 +586,9 @@ static int x509_get_crt_ext( unsigned char **p,
|
||||
@@ -589,9 +590,9 @@ static int x509_get_crt_ext( unsigned char **p,
|
||||
/*
|
||||
* Detect supported extensions
|
||||
*/
|
||||
@@ -268,7 +269,7 @@ index c6209fb4..1a61e5e9 100644
|
||||
{
|
||||
/* No parser found, skip extension */
|
||||
*p = end_ext_octet;
|
||||
@@ -595,6 +596,10 @@ static int x509_get_crt_ext( unsigned char **p,
|
||||
@@ -599,6 +600,10 @@ static int x509_get_crt_ext( unsigned char **p,
|
||||
#if !defined(MBEDTLS_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION)
|
||||
if( is_critical )
|
||||
{
|
||||
@@ -279,7 +280,7 @@ index c6209fb4..1a61e5e9 100644
|
||||
/* Data is marked as critical: fail */
|
||||
return( MBEDTLS_ERR_X509_INVALID_EXTENSIONS +
|
||||
MBEDTLS_ERR_ASN1_UNEXPECTED_TAG );
|
||||
@@ -948,6 +953,7 @@ int mbedtls_x509_crt_parse_der( mbedtls_x509_crt *chain, const unsigned char *bu
|
||||
@@ -952,6 +957,7 @@ int mbedtls_x509_crt_parse_der( mbedtls_x509_crt *chain, const unsigned char *bu
|
||||
|
||||
prev = crt;
|
||||
mbedtls_x509_crt_init( crt->next );
|
||||
@@ -289,7 +290,7 @@ index c6209fb4..1a61e5e9 100644
|
||||
|
||||
diff --git a/tests/data_files/test-ca-nc.crt b/tests/data_files/test-ca-nc.crt
|
||||
new file mode 100644
|
||||
index 00000000..7e0c5613
|
||||
index 000000000..7e0c56134
|
||||
--- /dev/null
|
||||
+++ b/tests/data_files/test-ca-nc.crt
|
||||
@@ -0,0 +1,20 @@
|
||||
@@ -314,11 +315,11 @@ index 00000000..7e0c5613
|
||||
+OwQ6w1HweApjB46bGyILpGUi9MZhvCnoLWg+cN3/wQ==
|
||||
+-----END CERTIFICATE-----
|
||||
diff --git a/tests/suites/test_suite_x509parse.data b/tests/suites/test_suite_x509parse.data
|
||||
index b8c902e2..e7dcb61f 100644
|
||||
index 406cf5931..212a2825a 100644
|
||||
--- a/tests/suites/test_suite_x509parse.data
|
||||
+++ b/tests/suites/test_suite_x509parse.data
|
||||
@@ -1574,6 +1574,12 @@ X509 File parse (trailing spaces, OK)
|
||||
depends_on:MBEDTLS_ECP_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C
|
||||
@@ -1766,6 +1766,12 @@ X509 File parse (trailing spaces, OK)
|
||||
depends_on:MBEDTLS_ECDSA_C:MBEDTLS_ECP_DP_SECP256R1_ENABLED:MBEDTLS_SHA256_C:MBEDTLS_RSA_C
|
||||
x509parse_crt_file:"data_files/server7_trailing_space.crt":0
|
||||
|
||||
+X509 File parse (unsupported critical ext Name Constraints, fail)
|
||||
@@ -331,10 +332,10 @@ index b8c902e2..e7dcb61f 100644
|
||||
depends_on:MBEDTLS_X509_USE_C
|
||||
x509_get_time:MBEDTLS_ASN1_UTC_TIME:"500101000000Z":0:1950:1:1:0:0:0
|
||||
diff --git a/tests/suites/test_suite_x509parse.function b/tests/suites/test_suite_x509parse.function
|
||||
index 0dfdd61c..2be1defd 100644
|
||||
index 06f010828..75936010f 100644
|
||||
--- a/tests/suites/test_suite_x509parse.function
|
||||
+++ b/tests/suites/test_suite_x509parse.function
|
||||
@@ -395,6 +395,21 @@ exit:
|
||||
@@ -437,6 +437,21 @@ exit:
|
||||
}
|
||||
/* END_CASE */
|
||||
|
||||
@@ -357,5 +358,5 @@ index 0dfdd61c..2be1defd 100644
|
||||
void x509parse_crt( char *crt_data, char *result_str, int result )
|
||||
{
|
||||
--
|
||||
2.14.3 (Apple Git-98)
|
||||
2.18.0
|
||||
|
||||
@@ -1,154 +0,0 @@
|
||||
From 56df6d5003b20fa673b67fb06c2ec03a8197c4c2 Mon Sep 17 00:00:00 2001
|
||||
From: Antonio Quartulli <antonio@openvpn.net>
|
||||
Date: Wed, 20 Dec 2017 07:03:55 +0800
|
||||
Subject: [PATCH] pkcs5v2: add support for additional hmacSHA algorithms
|
||||
|
||||
Currently only SHA1 is supported as PRF algorithm for PBKDF2
|
||||
(PKCS#5 v2.0).
|
||||
This means that keys encrypted and authenticated using
|
||||
another algorithm of the SHA family cannot be decrypted.
|
||||
|
||||
This deficiency has become particularly incumbent now that
|
||||
PKIs created with OpenSSL1.1 are encrypting keys using
|
||||
hmacSHA256 by default (OpenSSL1.0 used PKCS#5 v1.0 by default
|
||||
and even if v2 was forced, it would still use hmacSHA1).
|
||||
|
||||
Enable support for all the digest algorithms of the SHA
|
||||
family for PKCS#5 v2.0.
|
||||
|
||||
Signed-off-by: Antonio Quartulli <antonio@openvpn.net>
|
||||
---
|
||||
include/mbedtls/oid.h | 18 +++++++++++++++
|
||||
library/oid.c | 45 ++++++++++++++++++++++++++++++++++++++
|
||||
library/pkcs5.c | 4 +---
|
||||
tests/suites/test_suite_pkcs5.data | 4 ++--
|
||||
4 files changed, 66 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/include/mbedtls/oid.h b/include/mbedtls/oid.h
|
||||
index bf2ef5ec..408645ec 100644
|
||||
--- a/include/mbedtls/oid.h
|
||||
+++ b/include/mbedtls/oid.h
|
||||
@@ -228,6 +228,14 @@
|
||||
|
||||
#define MBEDTLS_OID_HMAC_SHA1 MBEDTLS_OID_RSA_COMPANY "\x02\x07" /**< id-hmacWithSHA1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 7 } */
|
||||
|
||||
+#define MBEDTLS_OID_HMAC_SHA224 MBEDTLS_OID_RSA_COMPANY "\x02\x08" /**< id-hmacWithSHA224 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 8 } */
|
||||
+
|
||||
+#define MBEDTLS_OID_HMAC_SHA256 MBEDTLS_OID_RSA_COMPANY "\x02\x09" /**< id-hmacWithSHA256 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 9 } */
|
||||
+
|
||||
+#define MBEDTLS_OID_HMAC_SHA384 MBEDTLS_OID_RSA_COMPANY "\x02\x0A" /**< id-hmacWithSHA384 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 10 } */
|
||||
+
|
||||
+#define MBEDTLS_OID_HMAC_SHA512 MBEDTLS_OID_RSA_COMPANY "\x02\x0B" /**< id-hmacWithSHA512 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 11 } */
|
||||
+
|
||||
/*
|
||||
* Encryption algorithms
|
||||
*/
|
||||
@@ -514,6 +522,16 @@ int mbedtls_oid_get_oid_by_sig_alg( mbedtls_pk_type_t pk_alg, mbedtls_md_type_t
|
||||
* \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND
|
||||
*/
|
||||
int mbedtls_oid_get_md_alg( const mbedtls_asn1_buf *oid, mbedtls_md_type_t *md_alg );
|
||||
+
|
||||
+/**
|
||||
+ * \brief Translate hmac algorithm OID into md_type
|
||||
+ *
|
||||
+ * \param oid OID to use
|
||||
+ * \param md_hmac place to store message hmac algorithm
|
||||
+ *
|
||||
+ * \return 0 if successful, or MBEDTLS_ERR_OID_NOT_FOUND
|
||||
+ */
|
||||
+int mbedtls_oid_get_md_hmac( const mbedtls_asn1_buf *oid, mbedtls_md_type_t *md_hmac );
|
||||
#endif /* MBEDTLS_MD_C */
|
||||
|
||||
/**
|
||||
diff --git a/library/oid.c b/library/oid.c
|
||||
index f13826ed..edea950f 100644
|
||||
--- a/library/oid.c
|
||||
+++ b/library/oid.c
|
||||
@@ -625,6 +625,51 @@ static const oid_md_alg_t oid_md_alg[] =
|
||||
FN_OID_TYPED_FROM_ASN1(oid_md_alg_t, md_alg, oid_md_alg)
|
||||
FN_OID_GET_ATTR1(mbedtls_oid_get_md_alg, oid_md_alg_t, md_alg, mbedtls_md_type_t, md_alg)
|
||||
FN_OID_GET_OID_BY_ATTR1(mbedtls_oid_get_oid_by_md, oid_md_alg_t, oid_md_alg, mbedtls_md_type_t, md_alg)
|
||||
+
|
||||
+/*
|
||||
+ * For HMAC digestAlgorithm
|
||||
+ */
|
||||
+typedef struct {
|
||||
+ mbedtls_oid_descriptor_t descriptor;
|
||||
+ mbedtls_md_type_t md_hmac;
|
||||
+} oid_md_hmac_t;
|
||||
+
|
||||
+static const oid_md_hmac_t oid_md_hmac[] =
|
||||
+{
|
||||
+#if defined(MBEDTLS_SHA1_C)
|
||||
+ {
|
||||
+ { ADD_LEN( MBEDTLS_OID_HMAC_SHA1 ), "hmacSHA1", "HMAC-SHA-1" },
|
||||
+ MBEDTLS_MD_SHA1,
|
||||
+ },
|
||||
+#endif /* MBEDTLS_SHA1_C */
|
||||
+#if defined(MBEDTLS_SHA256_C)
|
||||
+ {
|
||||
+ { ADD_LEN( MBEDTLS_OID_HMAC_SHA224 ), "hmacSHA224", "HMAC-SHA-224" },
|
||||
+ MBEDTLS_MD_SHA224,
|
||||
+ },
|
||||
+ {
|
||||
+ { ADD_LEN( MBEDTLS_OID_HMAC_SHA256 ), "hmacSHA256", "HMAC-SHA-256" },
|
||||
+ MBEDTLS_MD_SHA256,
|
||||
+ },
|
||||
+#endif /* MBEDTLS_SHA256_C */
|
||||
+#if defined(MBEDTLS_SHA512_C)
|
||||
+ {
|
||||
+ { ADD_LEN( MBEDTLS_OID_HMAC_SHA384 ), "hmacSHA384", "HMAC-SHA-384" },
|
||||
+ MBEDTLS_MD_SHA384,
|
||||
+ },
|
||||
+ {
|
||||
+ { ADD_LEN( MBEDTLS_OID_HMAC_SHA512 ), "hmacSHA512", "HMAC-SHA-512" },
|
||||
+ MBEDTLS_MD_SHA512,
|
||||
+ },
|
||||
+#endif /* MBEDTLS_SHA512_C */
|
||||
+ {
|
||||
+ { NULL, 0, NULL, NULL },
|
||||
+ MBEDTLS_MD_NONE,
|
||||
+ },
|
||||
+};
|
||||
+
|
||||
+FN_OID_TYPED_FROM_ASN1(oid_md_hmac_t, md_hmac, oid_md_hmac)
|
||||
+FN_OID_GET_ATTR1(mbedtls_oid_get_md_hmac, oid_md_hmac_t, md_hmac, mbedtls_md_type_t, md_hmac)
|
||||
#endif /* MBEDTLS_MD_C */
|
||||
|
||||
#if defined(MBEDTLS_PKCS12_C)
|
||||
diff --git a/library/pkcs5.c b/library/pkcs5.c
|
||||
index e28d5a84..95f44fa9 100644
|
||||
--- a/library/pkcs5.c
|
||||
+++ b/library/pkcs5.c
|
||||
@@ -96,11 +96,9 @@ static int pkcs5_parse_pbkdf2_params( const mbedtls_asn1_buf *params,
|
||||
if( ( ret = mbedtls_asn1_get_alg_null( &p, end, &prf_alg_oid ) ) != 0 )
|
||||
return( MBEDTLS_ERR_PKCS5_INVALID_FORMAT + ret );
|
||||
|
||||
- if( MBEDTLS_OID_CMP( MBEDTLS_OID_HMAC_SHA1, &prf_alg_oid ) != 0 )
|
||||
+ if( mbedtls_oid_get_md_hmac( &prf_alg_oid, md_type ) != 0 )
|
||||
return( MBEDTLS_ERR_PKCS5_FEATURE_UNAVAILABLE );
|
||||
|
||||
- *md_type = MBEDTLS_MD_SHA1;
|
||||
-
|
||||
if( p != end )
|
||||
return( MBEDTLS_ERR_PKCS5_INVALID_FORMAT +
|
||||
MBEDTLS_ERR_ASN1_LENGTH_MISMATCH );
|
||||
diff --git a/tests/suites/test_suite_pkcs5.data b/tests/suites/test_suite_pkcs5.data
|
||||
index e609d62b..4c2c0bb6 100644
|
||||
--- a/tests/suites/test_suite_pkcs5.data
|
||||
+++ b/tests/suites/test_suite_pkcs5.data
|
||||
@@ -82,9 +82,9 @@ PBES2 Decrypt (bad, PBKDF2 params explicit prf_alg overlong)
|
||||
depends_on:MBEDTLS_SHA1_C:MBEDTLS_DES_C
|
||||
mbedtls_pkcs5_pbes2:MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE:"301D06092A864886F70D01050C301004082ED7F24A1D516DD7020208003001":"":"":MBEDTLS_ERR_PKCS5_INVALID_FORMAT + MBEDTLS_ERR_ASN1_OUT_OF_DATA:""
|
||||
|
||||
-PBES2 Decrypt (bad, PBKDF2 params explicit prf_alg != HMAC-SHA1)
|
||||
+PBES2 Decrypt (bad, PBKDF2 params explicit prf_alg != HMAC-SHA*)
|
||||
depends_on:MBEDTLS_SHA1_C:MBEDTLS_DES_C
|
||||
-mbedtls_pkcs5_pbes2:MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE:"302706092A864886F70D01050C301A04082ED7F24A1D516DD702020800300A06082A864886F70D0208":"":"":MBEDTLS_ERR_PKCS5_FEATURE_UNAVAILABLE:""
|
||||
+mbedtls_pkcs5_pbes2:MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE:"302706092A864886F70D01050C301A04082ED7F24A1D516DD702020800300A06082A864886F70D0206":"":"":MBEDTLS_ERR_PKCS5_FEATURE_UNAVAILABLE:""
|
||||
|
||||
PBES2 Decrypt (bad, PBKDF2 params extra data)
|
||||
depends_on:MBEDTLS_SHA1_C:MBEDTLS_DES_C
|
||||
--
|
||||
2.16.2
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
Only in mbedtls-2.7.5/include/mbedtls: #bn_mul.h#
|
||||
diff -ur mbedtls-2.7.5/include/mbedtls/bn_mul.h mbedtls-2.7.5.patch/include/mbedtls/bn_mul.h
|
||||
--- mbedtls-2.7.5/include/mbedtls/bn_mul.h 2018-07-26 15:33:14.000000000 +0200
|
||||
+++ mbedtls-2.7.5.patch/include/mbedtls/bn_mul.h 2018-08-22 14:37:31.000000000 +0200
|
||||
@@ -56,7 +56,7 @@
|
||||
* This is done as the number of registers used in the assembly code doesn't
|
||||
* work with the -O0 option.
|
||||
*/
|
||||
-#if defined(__i386__) && defined(__OPTIMIZE__)
|
||||
+#if defined(__i386__) && defined(__OPTIMIZE__) && (!defined(__ANDROID_API__) || defined(__clang__))
|
||||
|
||||
#define MULADDC_INIT \
|
||||
asm( \
|
||||
@@ -1,128 +0,0 @@
|
||||
From bb029567d8a2b55e500a85c916a8d22ae9434ab3 Mon Sep 17 00:00:00 2001
|
||||
From: Antonio Quartulli <antonio@openvpn.net>
|
||||
Date: Wed, 31 Jan 2018 23:23:02 +0800
|
||||
Subject: [PATCH] tests/pkcs5/pbkdf2_hmac: add unit tests for additional SHA
|
||||
algorithms
|
||||
|
||||
Test vectors for SHA224,256,384 and 512 have been
|
||||
generated using Python's hashlib module by the
|
||||
following oneliner:
|
||||
|
||||
import binascii, hashlib
|
||||
binascii.hexlify(hashlib.pbkdf2_hmac(ALGO, binascii.unhexlify('PASSWORD'), binascii.unhexlify('SALT'), ITER, KEYLEN)))
|
||||
|
||||
where ALGO was 'sha224', 'sha256', 'sha384' and 'sha512'
|
||||
respectively.
|
||||
|
||||
Values for PASSWORD, SALT, ITER and KEYLEN were copied from the
|
||||
existent test vectors for SHA1.
|
||||
|
||||
For SHA256 we also have two test vectors coming from RFC7914 Sec 11.
|
||||
|
||||
Signed-off-by: Antonio Quartulli <antonio@openvpn.net>
|
||||
---
|
||||
tests/suites/test_suite_pkcs5.data | 88 ++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 88 insertions(+)
|
||||
|
||||
diff --git a/tests/suites/test_suite_pkcs5.data b/tests/suites/test_suite_pkcs5.data
|
||||
index 4c2c0bb6..f3c421d0 100644
|
||||
--- a/tests/suites/test_suite_pkcs5.data
|
||||
+++ b/tests/suites/test_suite_pkcs5.data
|
||||
@@ -18,6 +18,94 @@ PBKDF2 RFC 6070 Test Vector #6 (SHA1)
|
||||
depends_on:MBEDTLS_SHA1_C
|
||||
pbkdf2_hmac:MBEDTLS_MD_SHA1:"7061737300776f7264":"7361006c74":4096:16:"56fa6aa75548099dcc37d7f03425e0c3"
|
||||
|
||||
+PBKDF2 Python hashlib Test Vector #1 (SHA224)
|
||||
+depends_on:MBEDTLS_SHA256_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA224:"70617373776f7264":"73616c74":1:20:"3c198cbdb9464b7857966bd05b7bc92bc1cc4e6e"
|
||||
+
|
||||
+PBKDF2 Python hashlib Test Vector #2 (SHA224)
|
||||
+depends_on:MBEDTLS_SHA256_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA224:"70617373776f7264":"73616c74":2:20:"93200ffa96c5776d38fa10abdf8f5bfc0054b971"
|
||||
+
|
||||
+PBKDF2 Python hashlib Test Vector #3 (SHA224)
|
||||
+depends_on:MBEDTLS_SHA256_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA224:"70617373776f7264":"73616c74":4096:20:"218c453bf90635bd0a21a75d172703ff6108ef60"
|
||||
+
|
||||
+PBKDF2 Python hashlib Test Vector #5 (SHA224)
|
||||
+depends_on:MBEDTLS_SHA256_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA224:"70617373776f726450415353574f524470617373776f7264":"73616c7453414c5473616c7453414c5473616c7453414c5473616c7453414c5473616c74":4096:25:"056c4ba438ded91fc14e0594e6f52b87e1f3690c0dc0fbc057"
|
||||
+
|
||||
+PBKDF2 Python hashlib Test Vector #6 (SHA224)
|
||||
+depends_on:MBEDTLS_SHA256_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA224:"7061737300776f7264":"7361006c74":4096:16:"9b4011b641f40a2a500a31d4a392d15c"
|
||||
+
|
||||
+PBKDF2 RFC 7914 Sec 11 Test Vector #1 (SHA256)
|
||||
+depends_on:MBEDTLS_SHA256_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA256:"706173737764":"73616c74":1:64:"55ac046e56e3089fec1691c22544b605f94185216dde0465e68b9d57c20dacbc49ca9cccf179b645991664b39d77ef317c71b845b1e30bd509112041d3a19783"
|
||||
+
|
||||
+PBKDF2 RFC 7914 Sec 11 Test Vector #2 (SHA256)
|
||||
+depends_on:MBEDTLS_SHA256_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA256:"50617373776f7264":"4e61436c":80000:64:"4ddcd8f60b98be21830cee5ef22701f9641a4418d04c0414aeff08876b34ab56a1d425a1225833549adb841b51c9b3176a272bdebba1d078478f62b397f33c8d"
|
||||
+
|
||||
+PBKDF2 Python hashlib Test Vector #1 (SHA256)
|
||||
+depends_on:MBEDTLS_SHA256_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA256:"70617373776f7264":"73616c74":1:20:"120fb6cffcf8b32c43e7225256c4f837a86548c9"
|
||||
+
|
||||
+PBKDF2 Python hashlib Test Vector #2 (SHA256)
|
||||
+depends_on:MBEDTLS_SHA256_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA256:"70617373776f7264":"73616c74":2:20:"ae4d0c95af6b46d32d0adff928f06dd02a303f8e"
|
||||
+
|
||||
+PBKDF2 Python hashlib Test Vector #3 (SHA256)
|
||||
+depends_on:MBEDTLS_SHA256_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA256:"70617373776f7264":"73616c74":4096:20:"c5e478d59288c841aa530db6845c4c8d962893a0"
|
||||
+
|
||||
+PBKDF2 Python hashlib Test Vector #5 (SHA256)
|
||||
+depends_on:MBEDTLS_SHA256_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA256:"70617373776f726450415353574f524470617373776f7264":"73616c7453414c5473616c7453414c5473616c7453414c5473616c7453414c5473616c74":4096:25:"348c89dbcbd32b2f32d814b8116e84cf2b17347ebc1800181c"
|
||||
+
|
||||
+PBKDF2 Python hashlib Test Vector #6 (SHA256)
|
||||
+depends_on:MBEDTLS_SHA256_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA256:"7061737300776f7264":"7361006c74":4096:16:"89b69d0516f829893c696226650a8687"
|
||||
+
|
||||
+PBKDF2 Python hashlib Test Vector #1 (SHA384)
|
||||
+depends_on:MBEDTLS_SHA512_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA384:"70617373776f7264":"73616c74":1:20:"c0e14f06e49e32d73f9f52ddf1d0c5c719160923"
|
||||
+
|
||||
+PBKDF2 Python hashlib Test Vector #2 (SHA384)
|
||||
+depends_on:MBEDTLS_SHA512_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA384:"70617373776f7264":"73616c74":2:20:"54f775c6d790f21930459162fc535dbf04a93918"
|
||||
+
|
||||
+PBKDF2 Python hashlib Test Vector #3 (SHA384)
|
||||
+depends_on:MBEDTLS_SHA512_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA384:"70617373776f7264":"73616c74":4096:20:"559726be38db125bc85ed7895f6e3cf574c7a01c"
|
||||
+
|
||||
+PBKDF2 Python hashlib Test Vector #5 (SHA384)
|
||||
+depends_on:MBEDTLS_SHA512_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA384:"70617373776f726450415353574f524470617373776f7264":"73616c7453414c5473616c7453414c5473616c7453414c5473616c7453414c5473616c74":4096:25:"819143ad66df9a552559b9e131c52ae6c5c1b0eed18f4d283b"
|
||||
+
|
||||
+PBKDF2 Python hashlib Test Vector #6 (SHA384)
|
||||
+depends_on:MBEDTLS_SHA512_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA384:"7061737300776f7264":"7361006c74":4096:16:"a3f00ac8657e095f8e0823d232fc60b3"
|
||||
+
|
||||
+PBKDF2 Python hashlib Test Vector #1 (SHA512)
|
||||
+depends_on:MBEDTLS_SHA512_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA512:"70617373776f7264":"73616c74":1:20:"867f70cf1ade02cff3752599a3a53dc4af34c7a6"
|
||||
+
|
||||
+PBKDF2 Python hashlib Test Vector #2 (SHA512)
|
||||
+depends_on:MBEDTLS_SHA512_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA512:"70617373776f7264":"73616c74":2:20:"e1d9c16aa681708a45f5c7c4e215ceb66e011a2e"
|
||||
+
|
||||
+PBKDF2 Python hashlib Test Vector #3 (SHA512)
|
||||
+depends_on:MBEDTLS_SHA512_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA512:"70617373776f7264":"73616c74":4096:20:"d197b1b33db0143e018b12f3d1d1479e6cdebdcc"
|
||||
+
|
||||
+PBKDF2 Python hashlib Test Vector #5 (SHA512)
|
||||
+depends_on:MBEDTLS_SHA512_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA512:"70617373776f726450415353574f524470617373776f7264":"73616c7453414c5473616c7453414c5473616c7453414c5473616c7453414c5473616c74":4096:25:"8c0511f4c6e597c6ac6315d8f0362e225f3c501495ba23b868"
|
||||
+
|
||||
+PBKDF2 Python hashlib Test Vector #6 (SHA512)
|
||||
+depends_on:MBEDTLS_SHA512_C
|
||||
+pbkdf2_hmac:MBEDTLS_MD_SHA512:"7061737300776f7264":"7361006c74":4096:16:"9d9e9c4cd21fe4be24d5b8244c759665"
|
||||
+
|
||||
PBES2 Decrypt (OK)
|
||||
depends_on:MBEDTLS_SHA1_C:MBEDTLS_DES_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
mbedtls_pkcs5_pbes2:MBEDTLS_ASN1_CONSTRUCTED | MBEDTLS_ASN1_SEQUENCE:"301B06092A864886F70D01050C300E04082ED7F24A1D516DD702020800301406082A864886F70D030704088A4FCC9DCC394910":"70617373776f7264":"1B60098D4834CA752D37B430E70B7A085CFF86E21F4849F969DD1DF623342662443F8BD1252BF83CEF6917551B08EF55A69C8F2BFFC93BCB2DFE2E354DA28F896D1BD1BFB972A1251219A6EC7183B0A4CF2C4998449ED786CAE2138437289EB2203974000C38619DA57A4E685D29649284602BD1806131772DA11A682674DC22B2CF109128DDB7FD980E1C5741FC0DB7":0:"308187020100301306072A8648CE3D020106082A8648CE3D030107046D306B0201010420F12A1320760270A83CBFFD53F6031EF76A5D86C8A204F2C30CA9EBF51F0F0EA7A1440342000437CC56D976091E5A723EC7592DFF206EEE7CF9069174D0AD14B5F768225962924EE500D82311FFEA2FD2345D5D16BD8A88C26B770D55CD8A2A0EFA01C8B4EDFF060606060606"
|
||||
--
|
||||
2.16.2
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
From d09cecb5f7d1e66476c97a35caee7248930ef425 Mon Sep 17 00:00:00 2001
|
||||
From: Antonio Quartulli <a@unstable.cc>
|
||||
Date: Wed, 31 Jan 2018 23:45:09 +0800
|
||||
Subject: [PATCH] tests/pkcs5/pbkdf2_hmac: extend array to accommodate longer
|
||||
results
|
||||
|
||||
Some unit tests for pbkdf2_hmac() have results longer than
|
||||
99bytes when represented in hexadecimal form.
|
||||
|
||||
For this reason extend the result array to accommodate
|
||||
longer strings.
|
||||
|
||||
At the same time make memset() parametric to avoid
|
||||
bugs in the future.
|
||||
|
||||
Signed-off-by: Antonio Quartulli <antonio@openvpn.net>
|
||||
---
|
||||
tests/suites/test_suite_pkcs5.function | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/tests/suites/test_suite_pkcs5.function b/tests/suites/test_suite_pkcs5.function
|
||||
index 8fabec08..3ad64805 100644
|
||||
--- a/tests/suites/test_suite_pkcs5.function
|
||||
+++ b/tests/suites/test_suite_pkcs5.function
|
||||
@@ -14,7 +14,7 @@ void pbkdf2_hmac( int hash, char *hex_password_string,
|
||||
{
|
||||
unsigned char pw_str[100];
|
||||
unsigned char salt_str[100];
|
||||
- unsigned char dst_str[100];
|
||||
+ unsigned char dst_str[200];
|
||||
|
||||
mbedtls_md_context_t ctx;
|
||||
const mbedtls_md_info_t *info;
|
||||
@@ -24,9 +24,9 @@ void pbkdf2_hmac( int hash, char *hex_password_string,
|
||||
|
||||
mbedtls_md_init( &ctx );
|
||||
|
||||
- memset(pw_str, 0x00, 100);
|
||||
- memset(salt_str, 0x00, 100);
|
||||
- memset(dst_str, 0x00, 100);
|
||||
+ memset(pw_str, 0x00, sizeof(pw_str));
|
||||
+ memset(salt_str, 0x00, sizeof(salt_str));
|
||||
+ memset(dst_str, 0x00, sizeof(dst_str));
|
||||
|
||||
pw_len = unhexify( pw_str, hex_password_string );
|
||||
salt_len = unhexify( salt_str, hex_salt_string );
|
||||
--
|
||||
2.16.2
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,604 +0,0 @@
|
||||
From 7ed2575f310fd889fba025aa760f74ec1b41924b Mon Sep 17 00:00:00 2001
|
||||
From: Antonio Quartulli <antonio@openvpn.net>
|
||||
Date: Thu, 1 Feb 2018 14:03:36 +0800
|
||||
Subject: [PATCH] tests_suite_pkparse: new PKCS8-v2 keys with PRF != SHA1
|
||||
|
||||
Extend the pkparse test suite with the newly created keys
|
||||
encrypted using PKCS#8 with PKCS#5 v2.0 with PRF being
|
||||
SHA224, 256, 384 and 512.
|
||||
|
||||
Signed-off-by: Antonio Quartulli <antonio@openvpn.net>
|
||||
---
|
||||
tests/suites/test_suite_pkparse.data | 576 +++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 576 insertions(+)
|
||||
|
||||
diff --git a/tests/suites/test_suite_pkparse.data b/tests/suites/test_suite_pkparse.data
|
||||
index 416f9dfe..1bf06270 100644
|
||||
--- a/tests/suites/test_suite_pkparse.data
|
||||
+++ b/tests/suites/test_suite_pkparse.data
|
||||
@@ -362,6 +362,582 @@ Parse RSA Key #49.2 (PKCS#8 encrypted v2 PBKDF2 DES DER, 4096-bit, no PW)
|
||||
depends_on:MBEDTLS_DES_C:MBEDTLS_SHA1_C:MBEDTLS_PKCS5_C
|
||||
pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
|
||||
+Parse RSA Key #50 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha224.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #50.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha224.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #50.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha224.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #51 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224, 2048-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha224.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #51.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224, 2048-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha224.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #51.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224, 2048-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha224.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #52 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224, 4096-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha224.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #52.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224, 4096-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha224.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #52.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224, 4096-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha224.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #53 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224 DER)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha224.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #53.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224 DER, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha224.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #53.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224 DER, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha224.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #54 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224 DER, 2048-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha224.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #54.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224 DER, 2048-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha224.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #54.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224 DER, 2048-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha224.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #55 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224 DER, 4096-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha224.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #55.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224 DER, 4096-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha224.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #55.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA224 DER, 4096-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha224.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #56 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA224)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha224.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #56.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA224, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha224.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #56.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA224, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha224.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #57 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA224, 2048-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha224.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #57.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA224, 2048-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha224.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #57.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA224, 2048-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha224.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #58 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA224, 4096-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha224.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #58.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA224, 4096-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha224.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #58.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA224, 4096-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha224.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #59 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA224 DER)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha224.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #59.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA224 DER, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha224.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #59.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA224 DER, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha224.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #60 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA224 DER, 2048-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha224.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #60.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA224 DER, 2048-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha224.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #60.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA224 DER, 2048-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha224.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #61 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA224 DER, 4096-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha224.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #61.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA224 DER, 4096-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha224.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #61.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA224 DER, 4096-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha224.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #62 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha256.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #62.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha256.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #62.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha256.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #63 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256, 2048-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha256.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #63.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256, 2048-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha256.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #63.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256, 2048-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha256.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #64 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256, 4096-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha256.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #64.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256, 4096-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha256.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #64.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256, 4096-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha256.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #65 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256 DER)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha256.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #65.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256 DER, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha256.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #65.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256 DER, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha256.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #66 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256 DER, 2048-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha256.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #66.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256 DER, 2048-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha256.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #66.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256 DER, 2048-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha256.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #67 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256 DER, 4096-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha256.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #68.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256 DER, 4096-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha256.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #68.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA256 DER, 4096-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha256.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #69 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA256)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha256.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #69.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA256, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha256.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #69.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA256, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha256.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #70 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA256, 2048-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha256.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #70.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA256, 2048-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha256.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #70.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA256, 2048-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha256.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #71 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA256, 4096-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha256.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #71.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA256, 4096-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha256.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #71.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA256, 4096-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha256.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #72 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA256 DER)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha256.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #72.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA256 DER, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha256.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #72.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA256 DER, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha256.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #73 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA256 DER, 2048-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha256.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #73.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA256 DER, 2048-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha256.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #73.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA256 DER, 2048-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha256.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #74 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA256 DER, 4096-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha256.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #74.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA256 DER, 4096-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha256.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #74.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA256 DER, 4096-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA256_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha256.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #75 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha384.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #75.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha384.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #75.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha384.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #76 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384, 2048-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #76.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384, 2048-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #76.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384, 2048-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #77 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384, 4096-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha384.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #77.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384, 4096-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha384.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #77.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384, 4096-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha384.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #78 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384 DER)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha384.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #78.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384 DER, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha384.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #78.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384 DER, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha384.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #79 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384 DER, 2048-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #79.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384 DER, 2048-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #79.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384 DER, 2048-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha384.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #80 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384 DER, 4096-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha384.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #80.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384 DER, 4096-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha384.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #80.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA384 DER, 4096-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha384.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #81 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA384)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha384.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #81.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA384, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha384.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #81.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA384, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha384.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #82 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA384, 2048-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha384.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #82.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA384, 2048-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha384.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #82.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA384, 2048-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha384.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #83 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA384, 4096-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha384.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #83.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA384, 4096-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha384.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #83.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA384, 4096-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha384.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #84 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA384 DER)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha384.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #84.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA384 DER, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha384.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #85.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA384 DER, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha384.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #86 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA384 DER, 2048-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha384.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #86.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA384 DER, 2048-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha384.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #86.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA384 DER, 2048-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha384.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #87 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA384 DER, 4096-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha384.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #87.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA384 DER, 4096-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha384.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #87.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA384 DER, 4096-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha384.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #88 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha512.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #88.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha512.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #88.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha512.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #89 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512, 2048-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha512.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #89.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512, 2048-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha512.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #89.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512, 2048-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha512.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #90 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512, 4096-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha512.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #90.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512, 4096-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha512.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #90.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512, 4096-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha512.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #91 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512 DER)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha512.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #91.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512 DER, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha512.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #91.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512 DER, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_3des_sha512.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #92 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512 DER, 2048-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha512.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #92.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512 DER, 2048-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha512.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #92.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512 DER, 2048-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_3des_sha512.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #93 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512 DER, 4096-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha512.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #93.1 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512 DER, 4096-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha512.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #93.2 (PKCS#8 encrypted v2 PBKDF2 3DES hmacWithSHA512 DER, 4096-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_3des_sha512.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #94 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA512)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha512.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #94.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA512, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha512.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #94.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA512, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha512.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #95 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA512, 2048-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha512.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #95.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA512, 2048-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha512.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #95.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA512, 2048-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha512.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #96 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA512, 4096-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha512.pem":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #96.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA512, 4096-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha512.pem":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #96.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA512, 4096-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PEM_PARSE_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha512.pem":"":MBEDTLS_ERR_PK_PASSWORD_REQUIRED
|
||||
+
|
||||
+Parse RSA Key #97 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA512 DER)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha512.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #97.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA512 DER, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha512.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #97.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA512 DER, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_1024_des_sha512.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #98 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA512 DER, 2048-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha512.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #98.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA512 DER, 2048-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha512.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #98.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA512 DER, 2048-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_2048_des_sha512.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
+Parse RSA Key #99 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA512 DER, 4096-bit)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha512.der":"PolarSSLTest":0
|
||||
+
|
||||
+Parse RSA Key #99.1 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA512 DER, 4096-bit, wrong PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C:MBEDTLS_CIPHER_MODE_CBC:MBEDTLS_CIPHER_PADDING_PKCS7
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha512.der":"PolarSSLTes":MBEDTLS_ERR_PK_PASSWORD_MISMATCH
|
||||
+
|
||||
+Parse RSA Key #99.2 (PKCS#8 encrypted v2 PBKDF2 DES hmacWithSHA512 DER, 4096-bit, no PW)
|
||||
+depends_on:MBEDTLS_DES_C:MBEDTLS_SHA512_C:MBEDTLS_PKCS5_C
|
||||
+pk_parse_keyfile_rsa:"data_files/rsa_pkcs8_pbes2_pbkdf2_4096_des_sha512.der":"":MBEDTLS_ERR_PK_KEY_INVALID_FORMAT
|
||||
+
|
||||
Parse Public RSA Key #1 (PKCS#8 wrapped)
|
||||
depends_on:MBEDTLS_MD5_C:MBEDTLS_PEM_PARSE_C
|
||||
pk_parse_public_keyfile_rsa:"data_files/format_gen.pub":0
|
||||
--
|
||||
2.16.2
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
From 5d31999442a41c154f6c56e91c8fe7705c74e2be Mon Sep 17 00:00:00 2001
|
||||
From: Arne Schwabe <arne@rfc2549.org>
|
||||
Date: Thu, 28 Dec 2017 00:19:10 +0100
|
||||
Subject: [PATCH] Use current cmake directory instead of source root directory
|
||||
when exuting config.pl
|
||||
|
||||
When mdbedtls is added as a subdirectory to another project this will
|
||||
call config.pl with the right path If mbedtls is build standalone
|
||||
current and root source directory are identical.
|
||||
|
||||
Signed-off-by: Arne Schwabe <arne@rfc2549.org>
|
||||
---
|
||||
CMakeLists.txt | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 3e47224ea1..2883eff270 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -31,7 +31,7 @@ find_package(Perl)
|
||||
if(PERL_FOUND)
|
||||
|
||||
# If NULL Entropy is configured, display an appropriate warning
|
||||
- execute_process(COMMAND ${PERL_EXECUTABLE} ${CMAKE_SOURCE_DIR}/scripts/config.pl -f ${CMAKE_SOURCE_DIR}/include/mbedtls/config.h get MBEDTLS_TEST_NULL_ENTROPY
|
||||
+ execute_process(COMMAND ${PERL_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/scripts/config.pl -f ${CMAKE_CURRENT_SOURCE_DIR}/include/mbedtls/config.h get MBEDTLS_TEST_NULL_ENTROPY
|
||||
RESULT_VARIABLE result)
|
||||
if(${result} EQUAL 0)
|
||||
message(WARNING ${NULL_ENTROPY_WARNING})
|
||||
@@ -78,10 +78,16 @@ namespace openvpn {
|
||||
{
|
||||
}
|
||||
|
||||
#ifndef SWIGPYTHON
|
||||
// When calling IP:Addr with None as the second parameter, Swig will
|
||||
// always pick this function and complain about not being able to convert
|
||||
// a null pointer to a const std::string reference. Hide this function, so
|
||||
// swig is forced to take the const char* variant of this function instead
|
||||
Addr(const std::string& ipstr, const std::string& title, Version required_version = UNSPEC)
|
||||
: Addr(from_string(ipstr, title.c_str(), required_version))
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
void validate_version(const char *title, Version required_version) const
|
||||
{
|
||||
@@ -89,10 +95,12 @@ namespace openvpn {
|
||||
throw ip_exception(internal::format_error(to_string(), title, version_string_static(required_version), "wrong IP version"));
|
||||
}
|
||||
|
||||
#ifndef SWIGPYTHON
|
||||
void validate_version(const std::string& title, Version required_version) const
|
||||
{
|
||||
validate_version(title.c_str(), required_version);
|
||||
}
|
||||
#endif
|
||||
|
||||
static std::string validate(const std::string& ipstr, const char *title = nullptr, Version required_version = UNSPEC)
|
||||
{
|
||||
@@ -100,10 +108,12 @@ namespace openvpn {
|
||||
return a.to_string();
|
||||
}
|
||||
|
||||
#ifndef SWIGPYTHON
|
||||
static std::string validate(const std::string& ipstr, const std::string& title, Version required_version = UNSPEC)
|
||||
{
|
||||
return validate(ipstr, title.c_str(), required_version);
|
||||
}
|
||||
#endif
|
||||
|
||||
static bool is_valid(const std::string& ipstr)
|
||||
{
|
||||
|
||||
@@ -58,6 +58,11 @@ namespace openvpn {
|
||||
typedef std::uint32_t base_type;
|
||||
typedef std::int32_t signed_base_type;
|
||||
|
||||
bool defined() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
static Addr from_addr(const Addr& addr)
|
||||
{
|
||||
return addr;
|
||||
@@ -498,6 +503,15 @@ namespace openvpn {
|
||||
h(u.addr);
|
||||
}
|
||||
|
||||
#ifdef HAVE_CITYHASH
|
||||
std::size_t hashval() const
|
||||
{
|
||||
HashSizeT h;
|
||||
hash(h);
|
||||
return h.value();
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef OPENVPN_IP_IMMUTABLE
|
||||
private:
|
||||
#endif
|
||||
@@ -566,4 +580,8 @@ namespace openvpn {
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef HAVE_CITYHASH
|
||||
OPENVPN_HASH_METHOD(openvpn::IPv4::Addr, hashval);
|
||||
#endif
|
||||
|
||||
#endif // OPENVPN_ADDR_IPV4_H
|
||||
|
||||
@@ -55,6 +55,11 @@ namespace openvpn {
|
||||
public:
|
||||
enum { SIZE=128 };
|
||||
|
||||
bool defined() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
static Addr from_addr(const Addr& addr)
|
||||
{
|
||||
return addr;
|
||||
@@ -540,6 +545,15 @@ namespace openvpn {
|
||||
h(u.bytes, sizeof(u.bytes));
|
||||
}
|
||||
|
||||
#ifdef HAVE_CITYHASH
|
||||
std::size_t hashval() const
|
||||
{
|
||||
HashSizeT h;
|
||||
hash(h);
|
||||
return h.value();
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef OPENVPN_IP_IMMUTABLE
|
||||
private:
|
||||
#endif
|
||||
@@ -825,4 +839,8 @@ namespace openvpn {
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef HAVE_CITYHASH
|
||||
OPENVPN_HASH_METHOD(openvpn::IPv6::Addr, hashval);
|
||||
#endif
|
||||
|
||||
#endif // OPENVPN_ADDR_IPV6_H
|
||||
|
||||
@@ -47,7 +47,7 @@ namespace openvpn {
|
||||
// Add range of addresses to pool (pool will own the addresses).
|
||||
void add_range(const RangeType<ADDR>& range)
|
||||
{
|
||||
typename RangeType<ADDR>::Iterator iter = range.iterator();
|
||||
auto iter = range.iterator();
|
||||
while (iter.more())
|
||||
{
|
||||
const ADDR& a = iter.addr();
|
||||
@@ -59,7 +59,7 @@ namespace openvpn {
|
||||
// Add single address to pool (pool will own the address).
|
||||
void add_addr(const ADDR& addr)
|
||||
{
|
||||
typename std::unordered_map<ADDR, bool>::const_iterator e = map.find(addr);
|
||||
auto e = map.find(addr);
|
||||
if (e == map.end())
|
||||
{
|
||||
freelist.push_back(addr);
|
||||
@@ -73,16 +73,23 @@ namespace openvpn {
|
||||
return map.size() - freelist.size();
|
||||
}
|
||||
|
||||
// Return number of pool addresses currently in use.
|
||||
size_t n_free() const
|
||||
{
|
||||
return freelist.size();
|
||||
}
|
||||
|
||||
// Acquire an address from pool. Returns true if successful,
|
||||
// with address placed in dest, or false if pool depleted.
|
||||
bool acquire_addr(ADDR& dest)
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
freelist_fill();
|
||||
if (freelist.empty())
|
||||
return false;
|
||||
const ADDR& a = freelist.front();
|
||||
typename std::unordered_map<ADDR, bool>::iterator e = map.find(a);
|
||||
auto e = map.find(a);
|
||||
if (e == map.end()) // any address in freelist must exist in map
|
||||
throw Exception("PoolType: address in freelist doesn't exist in map");
|
||||
if (!e->second)
|
||||
@@ -100,7 +107,7 @@ namespace openvpn {
|
||||
// successful, or false if the address is not available.
|
||||
bool acquire_specific_addr(const ADDR& addr)
|
||||
{
|
||||
typename std::unordered_map<ADDR, bool>::iterator e = map.find(addr);
|
||||
auto e = map.find(addr);
|
||||
if (e != map.end() && !e->second)
|
||||
{
|
||||
e->second = true;
|
||||
@@ -115,7 +122,7 @@ namespace openvpn {
|
||||
// (b) the address is not owned by the pool.
|
||||
void release_addr(const ADDR& addr)
|
||||
{
|
||||
typename std::unordered_map<ADDR, bool>::iterator e = map.find(addr);
|
||||
auto e = map.find(addr);
|
||||
if (e != map.end() && e->second)
|
||||
{
|
||||
freelist.push_back(addr);
|
||||
@@ -126,6 +133,25 @@ namespace openvpn {
|
||||
// DEBUGGING -- get the map load factor
|
||||
float load_factor() const { return map.load_factor(); }
|
||||
|
||||
// Override to refill freelist on demand
|
||||
virtual void freelist_fill()
|
||||
{
|
||||
}
|
||||
|
||||
std::string to_string() const
|
||||
{
|
||||
std::string ret;
|
||||
for (const auto& e : map)
|
||||
{
|
||||
if (e.second)
|
||||
{
|
||||
ret += e.first.to_string();
|
||||
ret += '\n';
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
private:
|
||||
std::deque<ADDR> freelist;
|
||||
std::unordered_map<ADDR, bool> map;
|
||||
|
||||
@@ -28,18 +28,26 @@
|
||||
namespace openvpn {
|
||||
namespace IP {
|
||||
|
||||
inline IPv4::Addr random_addr_v4(RandomAPI& prng)
|
||||
{
|
||||
return IPv4::Addr::from_uint32(prng.rand_get<std::uint32_t>());
|
||||
}
|
||||
|
||||
inline IPv6::Addr random_addr_v6(RandomAPI& prng)
|
||||
{
|
||||
unsigned char bytes[16];
|
||||
prng.rand_fill(bytes);
|
||||
return IPv6::Addr::from_byte_string(bytes);
|
||||
}
|
||||
|
||||
inline Addr random_addr(const Addr::Version v, RandomAPI& prng)
|
||||
{
|
||||
switch (v)
|
||||
{
|
||||
case Addr::V4:
|
||||
return Addr::from_ipv4(IPv4::Addr::from_uint32(prng.rand_get<std::uint32_t>()));
|
||||
return Addr::from_ipv4(random_addr_v4(prng));
|
||||
case Addr::V6:
|
||||
{
|
||||
unsigned char bytes[16];
|
||||
prng.rand_fill(bytes);
|
||||
return Addr::from_ipv6(IPv6::Addr::from_byte_string(bytes));
|
||||
}
|
||||
return Addr::from_ipv6(random_addr_v6(prng));
|
||||
default:
|
||||
throw ip_exception("address unspecified");
|
||||
}
|
||||
|
||||
@@ -40,8 +40,9 @@ namespace openvpn {
|
||||
namespace IP {
|
||||
// Basic route object
|
||||
template <typename ADDR>
|
||||
struct RouteType
|
||||
class RouteType
|
||||
{
|
||||
public:
|
||||
typedef ADDR Addr;
|
||||
|
||||
ADDR addr;
|
||||
@@ -89,6 +90,11 @@ namespace openvpn {
|
||||
return r;
|
||||
}
|
||||
|
||||
bool defined() const
|
||||
{
|
||||
return addr.defined();
|
||||
}
|
||||
|
||||
IP::Addr::Version version() const
|
||||
{
|
||||
return addr.version();
|
||||
@@ -99,9 +105,19 @@ namespace openvpn {
|
||||
return addr.version_mask();
|
||||
}
|
||||
|
||||
RouteType<IPv4::Addr> to_ipv4() const
|
||||
{
|
||||
return RouteType<IPv4::Addr>(addr.to_ipv4(), prefix_len);
|
||||
}
|
||||
|
||||
RouteType<IPv6::Addr> to_ipv6() const
|
||||
{
|
||||
return RouteType<IPv6::Addr>(addr.to_ipv6(), prefix_len);
|
||||
}
|
||||
|
||||
ADDR netmask() const
|
||||
{
|
||||
return ADDR::netmask_from_prefix_len(version(), prefix_len);
|
||||
return netmask_(addr, prefix_len);
|
||||
}
|
||||
|
||||
size_t extent() const
|
||||
@@ -119,6 +135,12 @@ namespace openvpn {
|
||||
addr = addr & netmask();
|
||||
}
|
||||
|
||||
void verify_canonical() const
|
||||
{
|
||||
if (!is_canonical())
|
||||
throw route_error("route not canonical: " + to_string());
|
||||
}
|
||||
|
||||
bool is_host() const
|
||||
{
|
||||
return addr.defined() && prefix_len == addr.size();
|
||||
@@ -134,7 +156,7 @@ namespace openvpn {
|
||||
|
||||
bool contains(const ADDR& a) const // assumes canonical address/routes
|
||||
{
|
||||
if (addr.defined() && addr.version() == a.version())
|
||||
if (addr.defined() && version_eq(addr, a))
|
||||
return (a & netmask()) == addr;
|
||||
else
|
||||
return false;
|
||||
@@ -153,7 +175,7 @@ namespace openvpn {
|
||||
r1.addr = addr;
|
||||
r1.prefix_len = newpl;
|
||||
|
||||
r2.addr = addr + ADDR::netmask_from_prefix_len(addr.version(), newpl).extent_from_netmask();
|
||||
r2.addr = addr + netmask_(addr, newpl).extent_from_netmask();
|
||||
r2.prefix_len = newpl;
|
||||
|
||||
return true;
|
||||
@@ -201,6 +223,37 @@ namespace openvpn {
|
||||
return h.value();
|
||||
}
|
||||
#endif
|
||||
|
||||
private:
|
||||
static IPv4::Addr netmask_(const IPv4::Addr&, unsigned int prefix_len)
|
||||
{
|
||||
return IPv4::Addr::netmask_from_prefix_len(prefix_len);
|
||||
}
|
||||
|
||||
static IPv6::Addr netmask_(const IPv6::Addr&, unsigned int prefix_len)
|
||||
{
|
||||
return IPv6::Addr::netmask_from_prefix_len(prefix_len);
|
||||
}
|
||||
|
||||
static IP::Addr netmask_(const IP::Addr& addr, unsigned int prefix_len)
|
||||
{
|
||||
return IP::Addr::netmask_from_prefix_len(addr.version(), prefix_len);
|
||||
}
|
||||
|
||||
static bool version_eq(const IPv4::Addr&, const IPv4::Addr&)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool version_eq(const IPv6::Addr&, const IPv6::Addr&)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool version_eq(const IP::Addr& a1, const IP::Addr& a2)
|
||||
{
|
||||
return a1.version() == a2.version();
|
||||
}
|
||||
};
|
||||
|
||||
template <typename ADDR>
|
||||
@@ -229,8 +282,7 @@ namespace openvpn {
|
||||
void verify_canonical() const
|
||||
{
|
||||
for (auto &r : *this)
|
||||
if (!r.is_canonical())
|
||||
throw route_list_error("route not canonical: " + r.to_string());
|
||||
r.verify_canonical();
|
||||
}
|
||||
|
||||
template <typename R>
|
||||
|
||||
@@ -82,6 +82,7 @@ namespace openvpn {
|
||||
buffer_headroom,
|
||||
buffer_underflow,
|
||||
buffer_overflow,
|
||||
buffer_offset,
|
||||
buffer_index,
|
||||
buffer_const_index,
|
||||
buffer_push_front_headroom,
|
||||
@@ -108,6 +109,8 @@ namespace openvpn {
|
||||
return "buffer_underflow";
|
||||
case buffer_overflow:
|
||||
return "buffer_overflow";
|
||||
case buffer_offset:
|
||||
return "buffer_offset";
|
||||
case buffer_index:
|
||||
return "buffer_index";
|
||||
case buffer_const_index:
|
||||
@@ -144,6 +147,7 @@ namespace openvpn {
|
||||
template <typename, typename> friend class BufferAllocatedType;
|
||||
|
||||
public:
|
||||
typedef T value_type;
|
||||
typedef T* type;
|
||||
typedef const T* const_type;
|
||||
typedef typename std::remove_const<T>::type NCT; // non-const type
|
||||
@@ -177,6 +181,15 @@ namespace openvpn {
|
||||
size_ = 0;
|
||||
}
|
||||
|
||||
void reset_offset(const size_t offset)
|
||||
{
|
||||
const size_t size = size_ + offset_ - offset;
|
||||
if (offset > capacity_ || size > capacity_ || offset + size > capacity_)
|
||||
OPENVPN_BUFFER_THROW(buffer_offset);
|
||||
offset_ = offset;
|
||||
size_ = size;
|
||||
}
|
||||
|
||||
void reset_size()
|
||||
{
|
||||
size_ = 0;
|
||||
@@ -519,6 +532,19 @@ namespace openvpn {
|
||||
OPENVPN_BUFFER_THROW(buffer_underflow);
|
||||
}
|
||||
|
||||
BufferType read_alloc_buf(const size_t size)
|
||||
{
|
||||
if (size <= size_)
|
||||
{
|
||||
BufferType ret(data_, offset_, size, capacity_);
|
||||
offset_ += size;
|
||||
size_ -= size;
|
||||
return ret;
|
||||
}
|
||||
else
|
||||
OPENVPN_BUFFER_THROW(buffer_underflow);
|
||||
}
|
||||
|
||||
void reset(const size_t min_capacity, const unsigned int flags)
|
||||
{
|
||||
if (min_capacity > capacity_)
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
namespace openvpn {
|
||||
namespace bigmutex {
|
||||
std::recursive_mutex the_recursive_mutex;
|
||||
OPENVPN_EXTERN std::recursive_mutex the_recursive_mutex;
|
||||
}
|
||||
|
||||
#ifdef OPENVPN_ENABLE_BIGMUTEX
|
||||
|
||||
@@ -40,8 +40,13 @@ namespace openvpn {
|
||||
|
||||
inline int n_cores()
|
||||
{
|
||||
int count = std::thread::hardware_concurrency();
|
||||
// C++11 allows thread::hardware_concurrency() to return 0, fall back
|
||||
// to specific solution if we detect this
|
||||
if (count > 0)
|
||||
return count;
|
||||
|
||||
#if defined(OPENVPN_PLATFORM_TYPE_APPLE)
|
||||
int count;
|
||||
size_t count_len = sizeof(count);
|
||||
if (::sysctlbyname("hw.logicalcpu", &count, &count_len, NULL, 0) != 0)
|
||||
count = 1;
|
||||
|
||||
@@ -89,14 +89,14 @@ namespace openvpn {
|
||||
class C : public openvpn::Exception { \
|
||||
public: \
|
||||
C() : openvpn::Exception(#C OPENVPN_FILE_LINE) {} \
|
||||
C(std::string err) : openvpn::Exception(#C OPENVPN_FILE_LINE ": " + err) {} \
|
||||
C(const std::string err) : openvpn::Exception(#C OPENVPN_FILE_LINE ": " + err) {} \
|
||||
}
|
||||
|
||||
// define a custom exception class that allows extra info, but does not emit a tag
|
||||
# define OPENVPN_UNTAGGED_EXCEPTION(C) \
|
||||
class C : public openvpn::Exception { \
|
||||
public: \
|
||||
C(std::string err) : openvpn::Exception(err) {} \
|
||||
C(const std::string err) : openvpn::Exception(err) {} \
|
||||
}
|
||||
|
||||
// define a custom exception class that allows extra info, and inherits from a custom base
|
||||
@@ -104,7 +104,7 @@ namespace openvpn {
|
||||
class C : public B { \
|
||||
public: \
|
||||
C() : B(#C OPENVPN_FILE_LINE) {} \
|
||||
C(std::string err) : B(#C OPENVPN_FILE_LINE ": " + err) {} \
|
||||
C(const std::string err) : B(#C OPENVPN_FILE_LINE ": " + err) {} \
|
||||
}
|
||||
|
||||
// define a custom exception class that allows extra info, and inherits from a custom base,
|
||||
@@ -112,7 +112,7 @@ namespace openvpn {
|
||||
# define OPENVPN_UNTAGGED_EXCEPTION_INHERIT(B, C) \
|
||||
class C : public B { \
|
||||
public: \
|
||||
C(std::string err) : B(err) {} \
|
||||
C(const std::string err) : B(err) {} \
|
||||
}
|
||||
|
||||
// throw an Exception with stringstream concatenation allowed
|
||||
|
||||
@@ -47,6 +47,7 @@ namespace openvpn {
|
||||
inline void write_binary_atomic(const std::string& fn,
|
||||
const std::string& tmpdir,
|
||||
const mode_t mode,
|
||||
const std::uint64_t mtime_ns, // set explicit modification-time in nanoseconds since epoch, or 0 to defer to system
|
||||
const ConstBuffer& buf,
|
||||
RandomAPI& rng)
|
||||
{
|
||||
@@ -56,7 +57,7 @@ namespace openvpn {
|
||||
const std::string tfn = path::join(tmpdir, '.' + path::basename(fn) + '.' + render_hex(data, sizeof(data)));
|
||||
|
||||
// write to temporary file
|
||||
write_binary_unix(tfn, mode, buf);
|
||||
write_binary_unix(tfn, mode, mtime_ns, buf);
|
||||
|
||||
// then move into position
|
||||
if (::rename(tfn.c_str(), fn.c_str()) == -1)
|
||||
@@ -69,10 +70,11 @@ namespace openvpn {
|
||||
inline void write_binary_atomic(const std::string& fn,
|
||||
const std::string& tmpdir,
|
||||
const mode_t mode,
|
||||
const std::uint64_t mtime_ns,
|
||||
const Buffer& buf,
|
||||
RandomAPI& rng)
|
||||
{
|
||||
return write_binary_atomic(fn, tmpdir, mode, const_buffer_ref(buf), rng);
|
||||
return write_binary_atomic(fn, tmpdir, mode, mtime_ns, const_buffer_ref(buf), rng);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -35,12 +35,14 @@
|
||||
#include <sys/types.h> // for lseek, open
|
||||
#include <sys/stat.h> // for open
|
||||
#include <fcntl.h> // for open
|
||||
#include <cstdint>
|
||||
|
||||
#include <openvpn/common/exception.hpp>
|
||||
#include <openvpn/common/size.hpp>
|
||||
#include <openvpn/common/scoped_fd.hpp>
|
||||
#include <openvpn/common/write.hpp>
|
||||
#include <openvpn/common/strerror.hpp>
|
||||
#include <openvpn/common/modstat.hpp>
|
||||
#include <openvpn/buffer/bufread.hpp>
|
||||
|
||||
namespace openvpn {
|
||||
@@ -49,6 +51,7 @@ namespace openvpn {
|
||||
// write binary buffer to file
|
||||
inline void write_binary_unix(const std::string& fn,
|
||||
const mode_t mode,
|
||||
const std::uint64_t mtime_ns, // set explicit modification-time in nanoseconds since epoch, or 0 to defer to system
|
||||
const void *buf,
|
||||
const size_t size)
|
||||
{
|
||||
@@ -61,11 +64,16 @@ namespace openvpn {
|
||||
}
|
||||
|
||||
// write
|
||||
{
|
||||
const ssize_t len = write_retry(fd(), buf, size);
|
||||
if (len != size)
|
||||
throw file_unix_error(fn + " : incomplete write");
|
||||
}
|
||||
if (size)
|
||||
{
|
||||
const ssize_t len = write_retry(fd(), buf, size);
|
||||
if (len != size)
|
||||
throw file_unix_error(fn + " : incomplete write");
|
||||
}
|
||||
|
||||
// explicit modification time
|
||||
if (mtime_ns)
|
||||
update_file_mod_time_nanoseconds(fd(), mtime_ns);
|
||||
|
||||
// close
|
||||
{
|
||||
@@ -77,23 +85,26 @@ namespace openvpn {
|
||||
|
||||
inline void write_binary_unix(const std::string& fn,
|
||||
const mode_t mode,
|
||||
const std::uint64_t mtime_ns,
|
||||
const Buffer& buf)
|
||||
{
|
||||
write_binary_unix(fn, mode, buf.c_data(), buf.size());
|
||||
write_binary_unix(fn, mode, mtime_ns, buf.c_data(), buf.size());
|
||||
}
|
||||
|
||||
inline void write_binary_unix(const std::string& fn,
|
||||
const mode_t mode,
|
||||
const std::uint64_t mtime_ns,
|
||||
const ConstBuffer& buf)
|
||||
{
|
||||
write_binary_unix(fn, mode, buf.c_data(), buf.size());
|
||||
write_binary_unix(fn, mode, mtime_ns, buf.c_data(), buf.size());
|
||||
}
|
||||
|
||||
inline void write_text_unix(const std::string& fn,
|
||||
const mode_t mode,
|
||||
const std::uint64_t mtime_ns,
|
||||
const std::string& content)
|
||||
{
|
||||
write_binary_unix(fn, mode, content.c_str(), content.length());
|
||||
write_binary_unix(fn, mode, mtime_ns, content.c_str(), content.length());
|
||||
}
|
||||
|
||||
enum { // MUST be distinct from BufferAllocated flags
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
#include <cstddef> // for std::size_t
|
||||
#include <utility> // for std::move
|
||||
#include <type_traits>
|
||||
#include <new>
|
||||
|
||||
namespace openvpn {
|
||||
@@ -35,7 +36,7 @@ namespace openvpn {
|
||||
template <typename F, std::size_t N=3, bool INTERN_ONLY=false>
|
||||
class Function;
|
||||
|
||||
template <typename R, typename ... A, std::size_t N, bool INTERN_ONLY>
|
||||
template <typename R, typename... A, std::size_t N, bool INTERN_ONLY>
|
||||
class Function<R(A...), N, INTERN_ONLY>
|
||||
{
|
||||
public:
|
||||
@@ -92,7 +93,7 @@ namespace openvpn {
|
||||
}
|
||||
}
|
||||
|
||||
R operator()(A... args)
|
||||
R operator()(A... args) const
|
||||
{
|
||||
return methods->invoke(data, std::forward<A>(args)...);
|
||||
}
|
||||
@@ -103,6 +104,7 @@ namespace openvpn {
|
||||
}
|
||||
|
||||
private:
|
||||
#ifdef _MSC_VER
|
||||
template <typename T>
|
||||
void construct(T&& functor) noexcept
|
||||
{
|
||||
@@ -123,10 +125,38 @@ namespace openvpn {
|
||||
new (data) Extern<T>(std::move(functor));
|
||||
}
|
||||
}
|
||||
#else
|
||||
template <typename T>
|
||||
static constexpr bool is_intern()
|
||||
{
|
||||
return sizeof(Intern<T>) <= sizeof(data);
|
||||
}
|
||||
|
||||
template <typename T,
|
||||
typename std::enable_if<is_intern<T>(), int>::type = 0>
|
||||
void construct(T&& functor) noexcept
|
||||
{
|
||||
// store functor internally (in data)
|
||||
setup_methods_intern<T>();
|
||||
new (data) Intern<T>(std::move(functor));
|
||||
}
|
||||
|
||||
template <typename T,
|
||||
typename std::enable_if<!is_intern<T>(), int>::type = 0>
|
||||
void construct(T&& functor) noexcept
|
||||
{
|
||||
static_assert(!INTERN_ONLY, "Function: Intern<T> doesn't fit in data[] and INTERN_ONLY=true");
|
||||
static_assert(sizeof(Extern<T>) <= sizeof(data), "Function: Extern<T> doesn't fit in data[]");
|
||||
|
||||
// store functor externally (using new)
|
||||
setup_methods_extern<T>();
|
||||
new (data) Extern<T>(std::move(functor));
|
||||
}
|
||||
#endif
|
||||
|
||||
struct Methods
|
||||
{
|
||||
R (*invoke)(void *, A...);
|
||||
R (*invoke)(void *, A&&...);
|
||||
void (*move)(void *, void *);
|
||||
void (*destruct)(void *);
|
||||
};
|
||||
@@ -163,21 +193,21 @@ namespace openvpn {
|
||||
{
|
||||
}
|
||||
|
||||
static R invoke(void *ptr, A... args)
|
||||
static R invoke(void* ptr, A&&... args)
|
||||
{
|
||||
Intern* self = reinterpret_cast<Intern<T>*>(ptr);
|
||||
Intern* self = reinterpret_cast<Intern*>(ptr);
|
||||
return self->functor_(std::forward<A>(args)...);
|
||||
}
|
||||
|
||||
static void move(void *dest, void *src)
|
||||
{
|
||||
Intern* s = reinterpret_cast<Intern<T>*>(src);
|
||||
Intern* s = reinterpret_cast<Intern*>(src);
|
||||
new (dest) Intern(std::move(*s));
|
||||
}
|
||||
|
||||
static void destruct(void *ptr)
|
||||
{
|
||||
Intern* self = reinterpret_cast<Intern<T>*>(ptr);
|
||||
Intern* self = reinterpret_cast<Intern*>(ptr);
|
||||
self->~Intern();
|
||||
}
|
||||
|
||||
@@ -195,23 +225,23 @@ namespace openvpn {
|
||||
{
|
||||
}
|
||||
|
||||
static R invoke(void *ptr, A... args)
|
||||
static R invoke(void* ptr, A&&... args)
|
||||
{
|
||||
Extern* self = reinterpret_cast<Extern<T>*>(ptr);
|
||||
Extern* self = reinterpret_cast<Extern *>(ptr);
|
||||
return (*self->functor_)(std::forward<A>(args)...);
|
||||
}
|
||||
|
||||
static void move(void *dest, void *src)
|
||||
{
|
||||
Extern* d = reinterpret_cast<Extern<T>*>(dest);
|
||||
Extern* s = reinterpret_cast<Extern<T>*>(src);
|
||||
Extern* d = reinterpret_cast<Extern*>(dest);
|
||||
Extern* s = reinterpret_cast<Extern*>(src);
|
||||
d->functor_ = s->functor_;
|
||||
// no need to set s->functor_=nullptr because parent will not destruct src after move
|
||||
}
|
||||
|
||||
static void destruct(void *ptr)
|
||||
{
|
||||
Extern* self = reinterpret_cast<Extern<T>*>(ptr);
|
||||
Extern* self = reinterpret_cast<Extern*>(ptr);
|
||||
delete self->functor_;
|
||||
}
|
||||
|
||||
@@ -220,7 +250,7 @@ namespace openvpn {
|
||||
};
|
||||
|
||||
const Methods* methods;
|
||||
void* data[N];
|
||||
mutable void* data[N];
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
// OpenVPN -- An application to securely tunnel IP networks
|
||||
// over a single port, with support for SSL/TLS-based
|
||||
// session authentication and key exchange,
|
||||
// packet encryption, packet authentication, and
|
||||
// packet compression.
|
||||
//
|
||||
// Copyright (C) 2012-2017 OpenVPN Inc.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License Version 3
|
||||
// as published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program in the COPYING file.
|
||||
// If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <fcntl.h> // Definition of AT_* constants */
|
||||
#include <sys/stat.h>
|
||||
#include <cstdint> // for std::uint64_t
|
||||
#include <cerrno>
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace openvpn {
|
||||
|
||||
inline int update_file_mod_time_nanoseconds(const std::string& filename,
|
||||
const std::uint64_t nanoseconds_since_epooch)
|
||||
{
|
||||
struct timespec times[2];
|
||||
times[0].tv_sec = nanoseconds_since_epooch / std::uint64_t(1000000000);
|
||||
times[0].tv_nsec = nanoseconds_since_epooch % std::uint64_t(1000000000);
|
||||
times[1] = times[0];
|
||||
if (::utimensat(AT_FDCWD, filename.c_str(), times, 0) == -1)
|
||||
return errno;
|
||||
return 0;
|
||||
}
|
||||
|
||||
inline int update_file_mod_time_nanoseconds(const int fd,
|
||||
const std::uint64_t nanoseconds_since_epooch)
|
||||
{
|
||||
struct timespec times[2];
|
||||
times[0].tv_sec = nanoseconds_since_epooch / std::uint64_t(1000000000);
|
||||
times[0].tv_nsec = nanoseconds_since_epooch % std::uint64_t(1000000000);
|
||||
times[1] = times[0];
|
||||
if (::futimens(fd, times) == -1)
|
||||
return errno;
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
// OpenVPN -- An application to securely tunnel IP networks
|
||||
// over a single port, with support for SSL/TLS-based
|
||||
// session authentication and key exchange,
|
||||
// packet encryption, packet authentication, and
|
||||
// packet compression.
|
||||
//
|
||||
// Copyright (C) 2012-2018 OpenVPN Inc.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License Version 3
|
||||
// as published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program in the COPYING file.
|
||||
// If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <openvpn/common/exception.hpp>
|
||||
|
||||
namespace openvpn {
|
||||
|
||||
OPENVPN_EXCEPTION(option_error);
|
||||
|
||||
}
|
||||
@@ -57,7 +57,6 @@
|
||||
#include <cstdint> // for std::uint64_t
|
||||
|
||||
#include <openvpn/common/rc.hpp>
|
||||
#include <openvpn/common/exception.hpp>
|
||||
#include <openvpn/common/size.hpp>
|
||||
#include <openvpn/common/number.hpp>
|
||||
#include <openvpn/common/hexstr.hpp>
|
||||
@@ -65,11 +64,10 @@
|
||||
#include <openvpn/common/split.hpp>
|
||||
#include <openvpn/common/splitlines.hpp>
|
||||
#include <openvpn/common/unicode.hpp>
|
||||
#include <openvpn/common/option_error.hpp>
|
||||
|
||||
namespace openvpn {
|
||||
|
||||
OPENVPN_EXCEPTION(option_error);
|
||||
|
||||
class Option
|
||||
{
|
||||
public:
|
||||
@@ -1173,6 +1171,16 @@ namespace openvpn {
|
||||
}
|
||||
}
|
||||
|
||||
// Return raw C string to option data or nullptr if option doesn't exist.
|
||||
const char *get_c_str(const std::string& name, size_t index, const size_t max_len) const
|
||||
{
|
||||
const Option* o = get_ptr(name);
|
||||
if (o)
|
||||
return o->get(index, max_len).c_str();
|
||||
else
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Convenience method that gets a particular argument index within an option,
|
||||
// while returning a default string if option doesn't exist, and raising an
|
||||
// exception if argument index is out-of-bounds.
|
||||
|
||||
@@ -25,6 +25,8 @@
|
||||
#include <string.h>
|
||||
#include <string>
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
namespace openvpn {
|
||||
inline std::string strerror_str(const int errnum)
|
||||
{
|
||||
|
||||
@@ -310,6 +310,19 @@ namespace openvpn {
|
||||
return false;
|
||||
}
|
||||
|
||||
// remove all spaces in string
|
||||
inline std::string remove_spaces(const std::string& str)
|
||||
{
|
||||
std::string ret;
|
||||
for (std::string::const_iterator i = str.begin(); i != str.end(); ++i)
|
||||
{
|
||||
char c = *i;
|
||||
if (!is_space(c))
|
||||
ret += c;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
// replace all spaces in string with rep
|
||||
inline std::string replace_spaces(const std::string& str, const char rep)
|
||||
{
|
||||
|
||||
@@ -36,13 +36,13 @@ namespace openvpn {
|
||||
// Check if a byte is an HTTP character.
|
||||
inline bool is_char(const unsigned char c)
|
||||
{
|
||||
return c >= 0 && c <= 127;
|
||||
return c <= 127;
|
||||
}
|
||||
|
||||
// Check if a byte is an HTTP control character.
|
||||
inline bool is_ctl(const unsigned char c)
|
||||
{
|
||||
return (c >= 0 && c <= 31) || (c == 127);
|
||||
return (c <= 31)|| (c == 127);
|
||||
}
|
||||
|
||||
// Check if a byte is defined as an HTTP tspecial character.
|
||||
|
||||
@@ -93,6 +93,7 @@ namespace openvpn {
|
||||
|
||||
public:
|
||||
enum status {
|
||||
undefined,
|
||||
pending,
|
||||
fail,
|
||||
success,
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
|
||||
#include <openvpn/common/size.hpp>
|
||||
#include <openvpn/common/arraysize.hpp>
|
||||
#include <openvpn/common/core.hpp>
|
||||
#include <openvpn/kovpn/kovpn.hpp>
|
||||
|
||||
namespace openvpn {
|
||||
@@ -57,7 +58,7 @@ namespace openvpn {
|
||||
void output_percpu(std::ostream& os) const
|
||||
{
|
||||
std::unique_ptr<struct ovpn_percpu_stats> pcs;
|
||||
unsigned int stats_cap = 16;
|
||||
unsigned int stats_cap = std::max(16, n_cores());
|
||||
for (int i = 0; i < 2; ++i)
|
||||
{
|
||||
const size_t pcs_size = sizeof(struct ovpn_percpu_stats) +
|
||||
|
||||
@@ -24,10 +24,12 @@
|
||||
#ifndef OPENVPN_KOVPN_KOVPN_HPP
|
||||
#define OPENVPN_KOVPN_KOVPN_HPP
|
||||
|
||||
// Not including this file causes redefinition errors
|
||||
// when the sys/ and linux/ headers below are included
|
||||
// before Asio.
|
||||
#include <openvpn/io/io.hpp>
|
||||
|
||||
#include <sys/socket.h>
|
||||
#include <linux/if.h>
|
||||
#include <linux/in.h>
|
||||
#include <linux/in6.h>
|
||||
|
||||
extern "C" {
|
||||
#include <kovpn/kovpn.h>
|
||||
|
||||
@@ -93,14 +93,14 @@ namespace openvpn {
|
||||
size_t olen = 0;
|
||||
int ret;
|
||||
|
||||
ret = mbedtls_pem_write_buffer(begin_cert.c_str(), end_cert.c_str(), der,
|
||||
ret = mbedtls_pem_write_buffer(begin_cert, end_cert, der,
|
||||
der_size, NULL, 0, &olen);
|
||||
if (ret != MBEDTLS_ERR_BASE64_BUFFER_TOO_SMALL)
|
||||
throw MbedTLSException("X509Cert::extract: can't calculate PEM size");
|
||||
|
||||
BufferAllocated buff(olen, 0);
|
||||
|
||||
ret = mbedtls_pem_write_buffer(begin_cert.c_str(), end_cert.c_str(), der,
|
||||
ret = mbedtls_pem_write_buffer(begin_cert, end_cert, der,
|
||||
der_size, buff.data(), buff.max_size(), &olen);
|
||||
if (ret)
|
||||
throw MbedTLSException("X509Cert::extract: can't write PEM buffer");
|
||||
@@ -158,12 +158,9 @@ namespace openvpn {
|
||||
}
|
||||
}
|
||||
|
||||
static const std::string begin_cert;
|
||||
static const std::string end_cert;
|
||||
constexpr static const char* begin_cert = "-----BEGIN CERTIFICATE-----\n";;
|
||||
constexpr static const char* end_cert = "-----END CERTIFICATE-----\n";;
|
||||
};
|
||||
|
||||
const std::string X509Cert::begin_cert = "-----BEGIN CERTIFICATE-----\n";
|
||||
const std::string X509Cert::end_cert = "-----END CERTIFICATE-----\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -268,6 +268,8 @@ namespace openvpn {
|
||||
{
|
||||
if (!defined())
|
||||
return "UNDEF-TIME";
|
||||
if (is_infinite())
|
||||
return "INF";
|
||||
const double df = delta_float(t);
|
||||
std::string ret;
|
||||
if (df >= 0.0)
|
||||
|
||||
@@ -25,13 +25,15 @@
|
||||
#define OPENVPN_TIME_TIMESTR_H
|
||||
|
||||
#include <string>
|
||||
#include <cstring> // for std::strlen
|
||||
#include <cstring> // for std::strlen and std::memset
|
||||
#include <time.h>
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
#include <cstdint> // for std::uint64_t
|
||||
|
||||
#include <openvpn/common/platform.hpp>
|
||||
#include <openvpn/common/size.hpp>
|
||||
#include <openvpn/common/string.hpp>
|
||||
|
||||
#if defined(OPENVPN_PLATFORM_WIN)
|
||||
#include <windows.h>
|
||||
@@ -72,6 +74,7 @@ namespace openvpn {
|
||||
struct tm lt;
|
||||
char buf[64];
|
||||
|
||||
std::memset(<, 0, sizeof(lt));
|
||||
if (!localtime_r(&t, <))
|
||||
return "LOCALTIME_ERROR";
|
||||
if (!asctime_r(<, buf))
|
||||
@@ -82,6 +85,22 @@ namespace openvpn {
|
||||
return std::string(buf);
|
||||
}
|
||||
|
||||
inline std::string date_time_utc(const time_t t)
|
||||
{
|
||||
struct tm lt;
|
||||
char buf[64];
|
||||
|
||||
std::memset(<, 0, sizeof(lt));
|
||||
if (!gmtime_r(&t, <))
|
||||
return "GMTIME_ERROR";
|
||||
if (!asctime_r(<, buf))
|
||||
return "ASCTIME_ERROR";
|
||||
const size_t len = std::strlen(buf);
|
||||
if (len > 0 && buf[len-1] == '\n')
|
||||
buf[len-1] = '\0';
|
||||
return std::string(buf);
|
||||
}
|
||||
|
||||
// msecs == false : Tue Feb 17 01:24:30 2015
|
||||
// msecs == true : Tue Feb 17 01:24:30.123 2015
|
||||
inline std::string date_time(const struct timeval *tv, const bool msecs)
|
||||
@@ -93,9 +112,9 @@ namespace openvpn {
|
||||
const size_t pos = dt.find_last_of(':');
|
||||
if (pos != std::string::npos
|
||||
&& pos + 3 < dt.length()
|
||||
&& isdigit(dt[pos+1])
|
||||
&& isdigit(dt[pos+2])
|
||||
&& isspace(dt[pos+3]))
|
||||
&& string::is_digit(dt[pos+1])
|
||||
&& string::is_digit(dt[pos+2])
|
||||
&& string::is_space(dt[pos+3]))
|
||||
{
|
||||
char ms[5];
|
||||
::snprintf(ms, sizeof(ms), ".%03u", static_cast<unsigned int>(tv->tv_usec / 1000));
|
||||
@@ -105,6 +124,28 @@ namespace openvpn {
|
||||
return dt;
|
||||
}
|
||||
|
||||
inline std::string nanosec_time_to_string(const std::uint64_t ns_time)
|
||||
{
|
||||
const std::uint64_t sec = ns_time / std::uint64_t(1000000000);
|
||||
const std::uint64_t ns = ns_time % std::uint64_t(1000000000);
|
||||
|
||||
const std::string dt = date_time_utc(sec);
|
||||
|
||||
// find correct position in string to insert nanoseconds
|
||||
const size_t pos = dt.find_last_of(':');
|
||||
if (pos != std::string::npos
|
||||
&& pos + 3 < dt.length()
|
||||
&& string::is_digit(dt[pos+1])
|
||||
&& string::is_digit(dt[pos+2])
|
||||
&& string::is_space(dt[pos+3]))
|
||||
{
|
||||
char ms[11];
|
||||
::snprintf(ms, sizeof(ms), ".%09u", (unsigned int)ns);
|
||||
return dt.substr(0, pos+3) + ms + dt.substr(pos+3);
|
||||
}
|
||||
return dt;
|
||||
}
|
||||
|
||||
inline std::string date_time()
|
||||
{
|
||||
struct timeval tv;
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
#include <cstdint> // for std::uint32_t, etc.
|
||||
|
||||
#include <openvpn/common/exception.hpp>
|
||||
#include <openvpn/common/options.hpp>
|
||||
#include <openvpn/common/option_error.hpp>
|
||||
#include <openvpn/common/string.hpp>
|
||||
#include <openvpn/addr/ip.hpp>
|
||||
|
||||
|
||||
@@ -41,6 +41,8 @@
|
||||
#include <openvpn/tun/mac/utun.hpp>
|
||||
#include <openvpn/tun/mac/macgw.hpp>
|
||||
#include <openvpn/tun/mac/macdns_watchdog.hpp>
|
||||
#include <openvpn/tun/proxy.hpp>
|
||||
#include <openvpn/tun/mac/macproxy.hpp>
|
||||
#include <openvpn/tun/builder/rgwflags.hpp>
|
||||
#include <openvpn/tun/builder/setup.hpp>
|
||||
|
||||
@@ -317,7 +319,7 @@ namespace openvpn {
|
||||
cmd->argv.push_back("/sbin/ifconfig");
|
||||
cmd->argv.push_back(iface_name);
|
||||
cmd->argv.push_back(local4->address);
|
||||
cmd->argv.push_back(local4->address);
|
||||
cmd->argv.push_back(local4->gateway);
|
||||
cmd->argv.push_back("netmask");
|
||||
cmd->argv.push_back(netmask.to_string());
|
||||
cmd->argv.push_back("mtu");
|
||||
@@ -463,6 +465,9 @@ namespace openvpn {
|
||||
create,
|
||||
destroy);
|
||||
}
|
||||
|
||||
if (pull.proxy_auto_config_url.defined())
|
||||
ProxySettings::add_actions<MacProxySettings>(pull, create, destroy);
|
||||
}
|
||||
|
||||
ActionList::Ptr remove_cmds;
|
||||
|
||||
@@ -0,0 +1,184 @@
|
||||
// OpenVPN -- An application to securely tunnel IP networks
|
||||
// over a single port, with support for SSL/TLS-based
|
||||
// session authentication and key exchange,
|
||||
// packet encryption, packet authentication, and
|
||||
// packet compression.
|
||||
//
|
||||
// Copyright (C) 2012-2018 OpenVPN Inc.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License Version 3
|
||||
// as published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program in the COPYING file.
|
||||
// If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#pragma once
|
||||
|
||||
namespace openvpn {
|
||||
class DSDict {
|
||||
public:
|
||||
OPENVPN_EXCEPTION(dsdict_error);
|
||||
|
||||
DSDict(CF::DynamicStore& sc_arg, const std::string& sname_arg, const std::string& dskey_arg)
|
||||
: sc(sc_arg),
|
||||
sname(sname_arg),
|
||||
dskey(dskey_arg),
|
||||
dict(CF::DynamicStoreCopyDict(sc_arg, dskey)) { }
|
||||
|
||||
bool dirty() const
|
||||
{
|
||||
return mod.defined() ? !CFEqual(dict(), mod()) : false;
|
||||
}
|
||||
|
||||
bool push_to_store()
|
||||
{
|
||||
if (dirty())
|
||||
{
|
||||
const CF::String keystr = CF::string(dskey);
|
||||
if (SCDynamicStoreSetValue(sc(), keystr(), mod()))
|
||||
{
|
||||
OPENVPN_LOG("DSDict: updated " << dskey);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
OPENVPN_LOG("DSDict: ERROR updating " << dskey);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool remove_from_store()
|
||||
{
|
||||
if (dirty())
|
||||
throw dsdict_error("internal error: remove_from_store called on modified dict");
|
||||
const CF::String keystr = CF::string(dskey);
|
||||
if (SCDynamicStoreRemoveValue(sc(), keystr()))
|
||||
{
|
||||
OPENVPN_LOG("DSDict: removed " << dskey);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
OPENVPN_LOG("DSDict: ERROR removing " << dskey);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void will_modify()
|
||||
{
|
||||
if (!mod.defined())
|
||||
mod = CF::mutable_dict_copy(dict);
|
||||
}
|
||||
|
||||
void mod_reset()
|
||||
{
|
||||
mod = CF::mutable_dict();
|
||||
}
|
||||
|
||||
void backup_orig(const std::string& key, const bool wipe_orig=true)
|
||||
{
|
||||
const CF::String k = CF::string(key);
|
||||
const CF::String orig = orig_key(key);
|
||||
if (!CFDictionaryContainsKey(dict(), orig()))
|
||||
{
|
||||
const CF::String delval = delete_value();
|
||||
CFTypeRef v = CFDictionaryGetValue(dict(), k());
|
||||
if (!v)
|
||||
v = delval();
|
||||
will_modify();
|
||||
CFDictionarySetValue(mod(), orig(), v);
|
||||
}
|
||||
if (wipe_orig)
|
||||
{
|
||||
will_modify();
|
||||
CFDictionaryRemoveValue(mod(), k());
|
||||
}
|
||||
}
|
||||
|
||||
void restore_orig()
|
||||
{
|
||||
const CFIndex size = CFDictionaryGetCount(dict());
|
||||
std::unique_ptr<const void *[]> keys(new const void *[size]);
|
||||
std::unique_ptr<const void *[]> values(new const void *[size]);
|
||||
CFDictionaryGetKeysAndValues(dict(), keys.get(), values.get());
|
||||
const CF::String orig_prefix = orig_key("");
|
||||
const CFIndex orig_prefix_len = CFStringGetLength(orig_prefix());
|
||||
const CF::String delval = delete_value();
|
||||
for (CFIndex i = 0; i < size; ++i)
|
||||
{
|
||||
const CF::String key = CF::string_cast(keys[i]);
|
||||
if (CFStringHasPrefix(key(), orig_prefix()))
|
||||
{
|
||||
const CFIndex key_len = CFStringGetLength(key());
|
||||
if (key_len > orig_prefix_len)
|
||||
{
|
||||
const CFRange r = CFRangeMake(orig_prefix_len, key_len - orig_prefix_len);
|
||||
const CF::String k(CFStringCreateWithSubstring(kCFAllocatorDefault, key(), r));
|
||||
const CFTypeRef v = values[i];
|
||||
const CF::String vstr = CF::string_cast(v);
|
||||
will_modify();
|
||||
if (vstr.defined() && CFStringCompare(vstr(), delval(), 0) == kCFCompareEqualTo)
|
||||
CFDictionaryRemoveValue(mod(), k());
|
||||
else
|
||||
CFDictionaryReplaceValue(mod(), k(), v);
|
||||
CFDictionaryRemoveValue(mod(), key());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::string to_string() const
|
||||
{
|
||||
std::ostringstream os;
|
||||
os << "*** DSDict " << dskey << std::endl;
|
||||
std::string orig = CF::description(dict());
|
||||
string::trim_crlf(orig);
|
||||
os << "ORIG " << orig << std::endl;
|
||||
if (dirty())
|
||||
{
|
||||
std::string modstr = CF::description(mod());
|
||||
string::trim_crlf(modstr);
|
||||
os << "MODIFIED " << modstr << std::endl;
|
||||
}
|
||||
return os.str();
|
||||
}
|
||||
|
||||
static CF::DynamicStore ds_create(const std::string& sname)
|
||||
{
|
||||
CF::String sn = CF::string(sname);
|
||||
return CF::DynamicStore(SCDynamicStoreCreate(kCFAllocatorDefault, sn(), nullptr, nullptr));
|
||||
}
|
||||
|
||||
static bool signal_network_reconfiguration(const std::string& sname)
|
||||
{
|
||||
const char *key = "Setup:/Network/Global/IPv4";
|
||||
CF::DynamicStore sc = ds_create(sname);
|
||||
const CF::String cfkey = CF::string(key);
|
||||
OPENVPN_LOG("DSDict: SCDynamicStoreNotifyValue " << key);
|
||||
return bool(SCDynamicStoreNotifyValue(sc(), cfkey()));
|
||||
}
|
||||
|
||||
CF::DynamicStore sc;
|
||||
const std::string sname;
|
||||
const std::string dskey;
|
||||
const CF::Dict dict;
|
||||
CF::MutableDict mod;
|
||||
|
||||
private:
|
||||
CF::String orig_key(const std::string& key) const
|
||||
{
|
||||
return CF::string(sname + "Orig" + key);
|
||||
}
|
||||
|
||||
CF::String delete_value() const
|
||||
{
|
||||
return CF::string(sname + "DeleteValue");
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -36,6 +36,7 @@
|
||||
#include <openvpn/apple/scdynstore.hpp>
|
||||
#include <openvpn/apple/cf/cfhelper.hpp>
|
||||
#include <openvpn/tun/builder/capture.hpp>
|
||||
#include <openvpn/tun/mac/dsdict.hpp>
|
||||
|
||||
namespace openvpn {
|
||||
class MacDNS : public RC<thread_unsafe_refcount>
|
||||
@@ -141,11 +142,7 @@ namespace openvpn {
|
||||
|
||||
bool signal_network_reconfiguration()
|
||||
{
|
||||
const char *key = "Setup:/Network/Global/IPv4";
|
||||
CF::DynamicStore sc = ds_create();
|
||||
const CF::String cfkey = CF::string(key);
|
||||
OPENVPN_LOG("MacDNS: SCDynamicStoreNotifyValue " << key);
|
||||
return bool(SCDynamicStoreNotifyValue(sc(), cfkey()));
|
||||
return DSDict::signal_network_reconfiguration(sname);
|
||||
}
|
||||
|
||||
bool setdns(const Config& config)
|
||||
@@ -317,152 +314,7 @@ namespace openvpn {
|
||||
}
|
||||
return mod;
|
||||
}
|
||||
|
||||
class DSDict {
|
||||
public:
|
||||
DSDict(CF::DynamicStore& sc_arg, const std::string& sname_arg, const std::string& dskey_arg)
|
||||
: sc(sc_arg),
|
||||
sname(sname_arg),
|
||||
dskey(dskey_arg),
|
||||
dict(CF::DynamicStoreCopyDict(sc_arg, dskey))
|
||||
{
|
||||
}
|
||||
|
||||
bool dirty() const
|
||||
{
|
||||
return mod.defined() ? !CFEqual(dict(), mod()) : false;
|
||||
}
|
||||
|
||||
bool push_to_store()
|
||||
{
|
||||
if (dirty())
|
||||
{
|
||||
const CF::String keystr = CF::string(dskey);
|
||||
if (SCDynamicStoreSetValue(sc(), keystr(), mod()))
|
||||
{
|
||||
OPENVPN_LOG("MacDNS: updated " << dskey);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
OPENVPN_LOG("MacDNS: ERROR updating " << dskey);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool remove_from_store()
|
||||
{
|
||||
if (dirty())
|
||||
throw macdns_error("internal error: remove_from_store called on modified dict");
|
||||
const CF::String keystr = CF::string(dskey);
|
||||
if (SCDynamicStoreRemoveValue(sc(), keystr()))
|
||||
{
|
||||
OPENVPN_LOG("MacDNS: removed " << dskey);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
OPENVPN_LOG("MacDNS: ERROR removing " << dskey);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void will_modify()
|
||||
{
|
||||
if (!mod.defined())
|
||||
mod = CF::mutable_dict_copy(dict);
|
||||
}
|
||||
|
||||
void mod_reset()
|
||||
{
|
||||
mod = CF::mutable_dict();
|
||||
}
|
||||
|
||||
void backup_orig(const std::string& key, const bool wipe_orig=true)
|
||||
{
|
||||
const CF::String k = CF::string(key);
|
||||
const CF::String orig = orig_key(key);
|
||||
if (!CFDictionaryContainsKey(dict(), orig()))
|
||||
{
|
||||
const CF::String delval = delete_value();
|
||||
CFTypeRef v = CFDictionaryGetValue(dict(), k());
|
||||
if (!v)
|
||||
v = delval();
|
||||
will_modify();
|
||||
CFDictionarySetValue(mod(), orig(), v);
|
||||
}
|
||||
if (wipe_orig)
|
||||
{
|
||||
will_modify();
|
||||
CFDictionaryRemoveValue(mod(), k());
|
||||
}
|
||||
}
|
||||
|
||||
void restore_orig()
|
||||
{
|
||||
const CFIndex size = CFDictionaryGetCount(dict());
|
||||
std::unique_ptr<const void *[]> keys(new const void *[size]);
|
||||
std::unique_ptr<const void *[]> values(new const void *[size]);
|
||||
CFDictionaryGetKeysAndValues(dict(), keys.get(), values.get());
|
||||
const CF::String orig_prefix = orig_key("");
|
||||
const CFIndex orig_prefix_len = CFStringGetLength(orig_prefix());
|
||||
const CF::String delval = delete_value();
|
||||
for (CFIndex i = 0; i < size; ++i)
|
||||
{
|
||||
const CF::String key = CF::string_cast(keys[i]);
|
||||
if (CFStringHasPrefix(key(), orig_prefix()))
|
||||
{
|
||||
const CFIndex key_len = CFStringGetLength(key());
|
||||
if (key_len > orig_prefix_len)
|
||||
{
|
||||
const CFRange r = CFRangeMake(orig_prefix_len, key_len - orig_prefix_len);
|
||||
const CF::String k(CFStringCreateWithSubstring(kCFAllocatorDefault, key(), r));
|
||||
const CFTypeRef v = values[i];
|
||||
const CF::String vstr = CF::string_cast(v);
|
||||
will_modify();
|
||||
if (vstr.defined() && CFStringCompare(vstr(), delval(), 0) == kCFCompareEqualTo)
|
||||
CFDictionaryRemoveValue(mod(), k());
|
||||
else
|
||||
CFDictionaryReplaceValue(mod(), k(), v);
|
||||
CFDictionaryRemoveValue(mod(), key());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::string to_string() const
|
||||
{
|
||||
std::ostringstream os;
|
||||
os << "*** DSDict " << dskey << std::endl;
|
||||
std::string orig = CF::description(dict());
|
||||
string::trim_crlf(orig);
|
||||
os << "ORIG " << orig << std::endl;
|
||||
if (dirty())
|
||||
{
|
||||
std::string modstr = CF::description(mod());
|
||||
string::trim_crlf(modstr);
|
||||
os << "MODIFIED " << modstr << std::endl;
|
||||
}
|
||||
return os.str();
|
||||
}
|
||||
|
||||
CF::DynamicStore sc;
|
||||
const std::string sname;
|
||||
const std::string dskey;
|
||||
const CF::Dict dict;
|
||||
CF::MutableDict mod;
|
||||
|
||||
private:
|
||||
CF::String orig_key(const std::string& key) const
|
||||
{
|
||||
return CF::string(sname + "Orig" + key);
|
||||
}
|
||||
|
||||
CF::String delete_value() const
|
||||
{
|
||||
return CF::string(sname + "DeleteValue");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
class Info : public RC<thread_unsafe_refcount>
|
||||
{
|
||||
public:
|
||||
@@ -510,8 +362,7 @@ namespace openvpn {
|
||||
|
||||
CF::DynamicStore ds_create() const
|
||||
{
|
||||
CF::String sn = CF::string(sname);
|
||||
return CF::DynamicStore(SCDynamicStoreCreate(kCFAllocatorDefault, sn(), nullptr, nullptr));
|
||||
return DSDict::ds_create(sname);
|
||||
}
|
||||
|
||||
const std::string sname;
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
// OpenVPN -- An application to securely tunnel IP networks
|
||||
// over a single port, with support for SSL/TLS-based
|
||||
// session authentication and key exchange,
|
||||
// packet encryption, packet authentication, and
|
||||
// packet compression.
|
||||
//
|
||||
// Copyright (C) 2012-2018 OpenVPN Inc.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License Version 3
|
||||
// as published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program in the COPYING file.
|
||||
// If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <openvpn/tun/proxy.hpp>
|
||||
#include <openvpn/tun/mac/dsdict.hpp>
|
||||
|
||||
namespace openvpn {
|
||||
class MacProxySettings : public ProxySettings
|
||||
{
|
||||
public:
|
||||
OPENVPN_EXCEPTION(macproxy_error);
|
||||
|
||||
typedef RCPtr<MacProxySettings> Ptr;
|
||||
|
||||
class Info : public RC<thread_unsafe_refcount>
|
||||
{
|
||||
public:
|
||||
typedef RCPtr<Info> Ptr;
|
||||
|
||||
Info(CF::DynamicStore& sc, const std::string& sname)
|
||||
: ipv4(sc, sname, "State:/Network/Global/IPv4"),
|
||||
info(sc, sname, "State:/Network/Service/" + sname + "/Info"),
|
||||
proxy(sc, sname, proxies(ipv4.dict, info.dict)) { }
|
||||
|
||||
std::string to_string() const
|
||||
{
|
||||
std::ostringstream os;
|
||||
os << ipv4.to_string();
|
||||
os << info.to_string();
|
||||
os << proxy.to_string();
|
||||
return os.str();
|
||||
}
|
||||
|
||||
DSDict ipv4;
|
||||
DSDict info;
|
||||
DSDict proxy;
|
||||
|
||||
private:
|
||||
static std::string proxies(const CF::Dict& ipv4, const CF::Dict& info)
|
||||
{
|
||||
std::string serv = CF::dict_get_str(ipv4, "PrimaryService");
|
||||
if (serv.empty())
|
||||
serv = CF::dict_get_str(info, "PrimaryService");
|
||||
if (serv.empty())
|
||||
throw macproxy_error("no primary service");
|
||||
return "Setup:/Network/Service/" + serv + "/Proxies";
|
||||
}
|
||||
};
|
||||
|
||||
MacProxySettings(const TunBuilderCapture::ProxyAutoConfigURL& config_arg)
|
||||
: ProxySettings(config_arg) { }
|
||||
|
||||
void set_proxy(bool del) override
|
||||
{
|
||||
if (!config.defined())
|
||||
return;
|
||||
|
||||
CF::DynamicStore sc = DSDict::ds_create(sname);
|
||||
Info::Ptr info(new Info(sc, sname));
|
||||
|
||||
info->proxy.will_modify();
|
||||
|
||||
if (!del)
|
||||
{
|
||||
info->proxy.backup_orig("ProxyAutoConfigEnable");
|
||||
CF::dict_set_int(info->proxy.mod, "ProxyAutoConfigEnable", 1);
|
||||
|
||||
info->proxy.backup_orig("ProxyAutoConfigURLString");
|
||||
CF::dict_set_str(info->proxy.mod, "ProxyAutoConfigURLString", config.to_string());
|
||||
}
|
||||
else
|
||||
info->proxy.restore_orig();
|
||||
|
||||
info->proxy.push_to_store();
|
||||
|
||||
OPENVPN_LOG("MacProxy: set_proxy " << info->to_string());
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,84 @@
|
||||
// OpenVPN -- An application to securely tunnel IP networks
|
||||
// over a single port, with support for SSL/TLS-based
|
||||
// session authentication and key exchange,
|
||||
// packet encryption, packet authentication, and
|
||||
// packet compression.
|
||||
//
|
||||
// Copyright (C) 2012-2018 OpenVPN Inc.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License Version 3
|
||||
// as published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program in the COPYING file.
|
||||
// If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <openvpn/common/action.hpp>
|
||||
#include <openvpn/tun/builder/capture.hpp>
|
||||
|
||||
namespace openvpn {
|
||||
class ProxySettings : public RC<thread_unsafe_refcount>
|
||||
{
|
||||
public:
|
||||
OPENVPN_EXCEPTION(proxy_error);
|
||||
|
||||
typedef RCPtr<ProxySettings> Ptr;
|
||||
|
||||
class ProxyAction : public Action
|
||||
{
|
||||
public:
|
||||
typedef RCPtr<ProxyAction> Ptr;
|
||||
|
||||
ProxyAction(ProxySettings::Ptr parent_arg, bool del_arg)
|
||||
: parent(parent_arg), del(del_arg) { }
|
||||
|
||||
virtual void execute(std::ostream& os) override
|
||||
{
|
||||
os << to_string() << std::endl;
|
||||
if (parent)
|
||||
parent->set_proxy(del);
|
||||
}
|
||||
|
||||
virtual std::string to_string() const override
|
||||
{
|
||||
std::ostringstream os;
|
||||
if (parent && parent->config.defined())
|
||||
os << "ProxyAction: auto config: " << parent->config.to_string();
|
||||
return os.str();
|
||||
}
|
||||
|
||||
private:
|
||||
const ProxySettings::Ptr parent;
|
||||
bool del;
|
||||
};
|
||||
|
||||
ProxySettings(const TunBuilderCapture::ProxyAutoConfigURL& config_arg)
|
||||
: config(config_arg) { }
|
||||
|
||||
virtual void set_proxy(bool del) = 0;
|
||||
|
||||
template<class T>
|
||||
static void add_actions(const TunBuilderCapture& settings,
|
||||
ActionList& create,
|
||||
ActionList& destroy)
|
||||
{
|
||||
ProxySettings::Ptr proxy(new T(settings.proxy_auto_config_url));
|
||||
ProxyAction::Ptr create_action(new ProxyAction(proxy, false));
|
||||
ProxyAction::Ptr destroy_action(new ProxyAction(proxy, true));
|
||||
create.add(create_action);
|
||||
destroy.add(destroy_action);
|
||||
}
|
||||
|
||||
const std::string sname = "OpenVPNConnect";
|
||||
|
||||
TunBuilderCapture::ProxyAutoConfigURL config;
|
||||
};
|
||||
}
|
||||
@@ -4,7 +4,7 @@
|
||||
// packet encryption, packet authentication, and
|
||||
// packet compression.
|
||||
//
|
||||
// Copyright (C) 2012-2017 OpenVPN Inc.
|
||||
// Copyright (C) 2012-2017 OpenVPN Inc.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License Version 3
|
||||
@@ -37,12 +37,14 @@
|
||||
#include <openvpn/common/string.hpp>
|
||||
#include <openvpn/common/size.hpp>
|
||||
#include <openvpn/common/arraysize.hpp>
|
||||
#include <openvpn/time/time.hpp>
|
||||
#include <openvpn/error/excode.hpp>
|
||||
#include <openvpn/time/time.hpp>
|
||||
#include <openvpn/tun/proxy.hpp>
|
||||
#include <openvpn/tun/win/tunutil.hpp>
|
||||
#include <openvpn/tun/win/winproxy.hpp>
|
||||
#include <openvpn/tun/win/client/setupbase.hpp>
|
||||
#include <openvpn/win/scoped_handle.hpp>
|
||||
#include <openvpn/win/cmd.hpp>
|
||||
#include <openvpn/tun/win/tunutil.hpp>
|
||||
#include <openvpn/tun/win/client/setupbase.hpp>
|
||||
|
||||
#if _WIN32_WINNT >= 0x0600 // Vista+
|
||||
#include <openvpn/tun/win/nrpt.hpp>
|
||||
@@ -603,6 +605,10 @@ namespace openvpn {
|
||||
}
|
||||
}
|
||||
|
||||
OPENVPN_LOG("proxy_auto_config_url " << pull.proxy_auto_config_url.url);
|
||||
if (pull.proxy_auto_config_url.defined())
|
||||
ProxySettings::add_actions<WinProxySettings>(pull, create, destroy);
|
||||
|
||||
// flush DNS cache
|
||||
create.add(new WinCmd("ipconfig /flushdns"));
|
||||
destroy.add(new WinCmd("ipconfig /flushdns"));
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
// packet encryption, packet authentication, and
|
||||
// packet compression.
|
||||
//
|
||||
// Copyright (C) 2012-2017 OpenVPN Inc.
|
||||
// Copyright (C) 2012-2018 OpenVPN Inc.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License Version 3
|
||||
@@ -58,11 +58,7 @@ namespace openvpn {
|
||||
auto key_name = ss.str();
|
||||
|
||||
const LONG status = ::RegCreateKeyA(HKEY_LOCAL_MACHINE, key_name.c_str(), key.ref());
|
||||
if (status != ERROR_SUCCESS)
|
||||
{
|
||||
const Win::Error err(status);
|
||||
OPENVPN_THROW(nrpt_error, "cannot open/create registry key " << key_name << " : " << err.message());
|
||||
}
|
||||
check_reg_error<nrpt_error>(status, key_name);
|
||||
}
|
||||
|
||||
// Name
|
||||
@@ -75,11 +71,7 @@ namespace openvpn {
|
||||
REG_MULTI_SZ,
|
||||
(const BYTE *)name.c_str(),
|
||||
(name.length()+1)*2);
|
||||
if (status != ERROR_SUCCESS)
|
||||
{
|
||||
const Win::Error err(status);
|
||||
OPENVPN_THROW(nrpt_error, "cannot set registry value for 'Name' : " << err.message());
|
||||
}
|
||||
check_reg_error<nrpt_error>(status, "Name");
|
||||
}
|
||||
|
||||
// GenericDNSServers
|
||||
@@ -91,11 +83,7 @@ namespace openvpn {
|
||||
REG_SZ,
|
||||
(const BYTE *)dns_servers_joined.c_str(),
|
||||
(dns_servers_joined.length()+1)*2);
|
||||
if (status != ERROR_SUCCESS)
|
||||
{
|
||||
const Win::Error err(status);
|
||||
OPENVPN_THROW(nrpt_error, "cannot set registry value for 'GenericDNSServers' : " << err.message());
|
||||
}
|
||||
check_reg_error<nrpt_error>(status, "GenericDNSServers");
|
||||
}
|
||||
|
||||
// ConfigOptions
|
||||
@@ -107,11 +95,7 @@ namespace openvpn {
|
||||
REG_DWORD,
|
||||
(const BYTE *)&value,
|
||||
sizeof(value));
|
||||
if (status != ERROR_SUCCESS)
|
||||
{
|
||||
const Win::Error err(status);
|
||||
OPENVPN_THROW(nrpt_error, "cannot set registry value for 'ConfigOptions' : " << err.message());
|
||||
}
|
||||
check_reg_error<nrpt_error>(status, "ConfigOptions");
|
||||
}
|
||||
|
||||
// Version
|
||||
@@ -123,11 +107,7 @@ namespace openvpn {
|
||||
REG_DWORD,
|
||||
(const BYTE *)&value,
|
||||
sizeof(value));
|
||||
if (status != ERROR_SUCCESS)
|
||||
{
|
||||
const Win::Error err(status);
|
||||
OPENVPN_THROW(nrpt_error, "cannot set registry value for 'Version' : " << err.message());
|
||||
}
|
||||
check_reg_error<nrpt_error>(status, "Version");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,182 @@
|
||||
// OpenVPN -- An application to securely tunnel IP networks
|
||||
// over a single port, with support for SSL/TLS-based
|
||||
// session authentication and key exchange,
|
||||
// packet encryption, packet authentication, and
|
||||
// packet compression.
|
||||
//
|
||||
// Copyright (C) 2012-2017 OpenVPN Inc.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License Version 3
|
||||
// as published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program in the COPYING file.
|
||||
// If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
|
||||
// proxy settings for Windows
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <WinInet.h>
|
||||
|
||||
#include <openvpn\win\impersonate.hpp>
|
||||
#include <openvpn\tun\proxy.hpp>
|
||||
#include <openvpn\win\reg.hpp>
|
||||
|
||||
using namespace openvpn::Win;
|
||||
|
||||
namespace openvpn {
|
||||
namespace TunWin {
|
||||
class WinProxySettings : public ProxySettings {
|
||||
public:
|
||||
typedef RCPtr<WinProxySettings> Ptr;
|
||||
|
||||
WinProxySettings(const TunBuilderCapture::ProxyAutoConfigURL& config_arg)
|
||||
: ProxySettings(config_arg) { }
|
||||
|
||||
void set_proxy(bool del) override
|
||||
{
|
||||
ImpersonateAsUser imp;
|
||||
|
||||
LONG status;
|
||||
RegKey hkcu;
|
||||
RegKey key;
|
||||
|
||||
status = ::RegOpenCurrentUser(KEY_QUERY_VALUE | KEY_SET_VALUE, hkcu.ref());
|
||||
check_reg_error<proxy_error>(status, "RegOpenCurrentUser");
|
||||
|
||||
status = ::RegCreateKeyExA(hkcu(), key_name, 0, NULL, 0, KEY_QUERY_VALUE | KEY_SET_VALUE, NULL, key.ref(), NULL);
|
||||
check_reg_error<proxy_error>(status, key_name);
|
||||
|
||||
if (!del)
|
||||
{
|
||||
save_key(key, "AutoConfigURL", config.url, true);
|
||||
save_key(key, "ProxyEnable", "0", false);
|
||||
}
|
||||
else
|
||||
{
|
||||
restore_key(key, "AutoConfigURL", true);
|
||||
restore_key(key, "ProxyEnable", false);
|
||||
}
|
||||
|
||||
// WinInet API cannot be called from service, even via impersonation
|
||||
if (!imp.is_local_system())
|
||||
{
|
||||
OPENVPN_LOG("Refresh proxy settings");
|
||||
|
||||
InternetSetOptionA(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0);
|
||||
InternetSetOptionA(NULL, INTERNET_OPTION_REFRESH, NULL, 0);
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
void restore_key(Win::RegKey& regkey, const std::string& key, bool str)
|
||||
{
|
||||
LONG status;
|
||||
char prev_val_str[1024] = { 0 }; // should be enough to fit proxy URL
|
||||
DWORD prev_val_dword;
|
||||
DWORD prev_buf_size = str ? sizeof(prev_val_str) : sizeof(prev_val_dword);
|
||||
bool del = false;
|
||||
Win::RegKey hkcu;
|
||||
|
||||
status = ::RegOpenCurrentUser(KEY_QUERY_VALUE | KEY_SET_VALUE, hkcu.ref());
|
||||
check_reg_error<proxy_error>(status, "RegOpenCurrentUser");
|
||||
|
||||
// get previous value
|
||||
std::string prev_key_name = sname + key;
|
||||
status = ::RegGetValueA(hkcu(),
|
||||
key_name,
|
||||
prev_key_name.c_str(),
|
||||
str ? RRF_RT_REG_SZ : RRF_RT_REG_DWORD,
|
||||
NULL,
|
||||
str ? (PVOID)prev_val_str : (PVOID)&prev_val_dword,
|
||||
&prev_buf_size);
|
||||
check_reg_error<proxy_error>(status, prev_key_name);
|
||||
|
||||
RegDeleteValueA(regkey(), prev_key_name.c_str());
|
||||
|
||||
// check if previous value needs to be deleted
|
||||
if (str)
|
||||
del = strcmp(delete_value_str, prev_val_str) == 0;
|
||||
else
|
||||
del = prev_val_dword == delete_value_dword;
|
||||
|
||||
if (del)
|
||||
::RegDeleteValueA(regkey(), key.c_str());
|
||||
else
|
||||
::RegSetValueExA(regkey(),
|
||||
key.c_str(),
|
||||
0,
|
||||
str ? REG_SZ : REG_DWORD,
|
||||
str ? (const BYTE *)prev_val_str : (CONST BYTE *)&prev_val_dword,
|
||||
str ? strlen(prev_val_str) + 1 : sizeof(prev_val_dword));
|
||||
}
|
||||
|
||||
void save_key(Win::RegKey& regkey, const std::string& key, const std::string& value, bool str)
|
||||
{
|
||||
LONG status;
|
||||
char prev_val_str[1024] = { 0 }; // should be enought to fit proxy URL
|
||||
DWORD prev_val_dword;
|
||||
DWORD prev_buf_size = str ? sizeof(prev_val_str) : sizeof(prev_val_dword);
|
||||
Win::RegKey hkcu;
|
||||
|
||||
status = ::RegOpenCurrentUser(KEY_QUERY_VALUE | KEY_SET_VALUE, hkcu.ref());
|
||||
check_reg_error<proxy_error>(status, "RegOpenCurrentUser");
|
||||
|
||||
// get original value
|
||||
status = ::RegGetValueA(hkcu(),
|
||||
key_name,
|
||||
key.c_str(),
|
||||
str ? RRF_RT_REG_SZ : RRF_RT_REG_DWORD,
|
||||
NULL,
|
||||
str ? (PVOID)prev_val_str : (PVOID)&prev_val_dword,
|
||||
&prev_buf_size);
|
||||
switch (status)
|
||||
{
|
||||
case ERROR_FILE_NOT_FOUND:
|
||||
// mark that original value doesn't exist
|
||||
strcpy(prev_val_str, delete_value_str);
|
||||
prev_val_dword = delete_value_dword;
|
||||
case ERROR_SUCCESS:
|
||||
break;
|
||||
default:
|
||||
check_reg_error<proxy_error>(status, key);
|
||||
break;
|
||||
}
|
||||
|
||||
// save original value
|
||||
std::string prev_key_name = sname + key;
|
||||
status = ::RegSetValueExA(regkey(),
|
||||
prev_key_name.c_str(),
|
||||
0,
|
||||
str ? REG_SZ : REG_DWORD,
|
||||
str ? (const BYTE *)prev_val_str : (CONST BYTE *)&prev_val_dword,
|
||||
str ? strlen(prev_val_str) + 1 : sizeof(DWORD));
|
||||
check_reg_error<proxy_error>(status, prev_key_name);
|
||||
|
||||
// save new value
|
||||
DWORD val_dword = 0;
|
||||
if (!str)
|
||||
val_dword = std::atol(value.c_str());
|
||||
status = ::RegSetValueExA(regkey(),
|
||||
key.c_str(),
|
||||
0,
|
||||
str ? REG_SZ : REG_DWORD,
|
||||
str ? (const BYTE *)value.c_str() : (CONST BYTE *)&val_dword,
|
||||
str ? value.length() + 1 : sizeof(val_dword));
|
||||
check_reg_error<proxy_error>(status, key);
|
||||
}
|
||||
|
||||
const char* key_name = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings";
|
||||
const char* delete_value_str = "DeleteValue";
|
||||
const DWORD delete_value_dword = 0xCAFEBABE;
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,136 @@
|
||||
// OpenVPN -- An application to securely tunnel IP networks
|
||||
// over a single port, with support for SSL/TLS-based
|
||||
// session authentication and key exchange,
|
||||
// packet encryption, packet authentication, and
|
||||
// packet compression.
|
||||
//
|
||||
// Copyright (C) 2012-2018 OpenVPN Inc.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License Version 3
|
||||
// as published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program in the COPYING file.
|
||||
// If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <Windows.h>
|
||||
#include <Lmcons.h>
|
||||
#include <wtsapi32.h>
|
||||
|
||||
#include <openvpn/win/winerr.hpp>
|
||||
|
||||
namespace openvpn {
|
||||
namespace Win {
|
||||
class ImpersonateAsUser {
|
||||
public:
|
||||
ImpersonateAsUser() : local_system(is_local_system_())
|
||||
{
|
||||
if (local_system)
|
||||
OPENVPN_LOG("ImpersonateAsUser: running under SYSTEM account, need to impersonate");
|
||||
else
|
||||
{
|
||||
OPENVPN_LOG("ImpersonateAsUser: running under user account, no need to impersonate");
|
||||
return;
|
||||
}
|
||||
|
||||
DWORD sessId = WTSGetActiveConsoleSessionId();
|
||||
if (sessId == 0xFFFFFFFF)
|
||||
{
|
||||
const Win::LastError err;
|
||||
OPENVPN_LOG("ImpersonateAsUser: WTSGetActiveConsoleSessionId() failed: " << err.message());
|
||||
return;
|
||||
}
|
||||
|
||||
HANDLE hToken;
|
||||
if (!WTSQueryUserToken(sessId, &hToken))
|
||||
{
|
||||
const Win::LastError err;
|
||||
OPENVPN_LOG("ImpersonateAsUser: WTSQueryUserToken() failed: " << err.message());
|
||||
return;
|
||||
}
|
||||
|
||||
if (!ImpersonateLoggedOnUser(hToken))
|
||||
{
|
||||
CloseHandle(hToken);
|
||||
|
||||
const Win::LastError err;
|
||||
OPENVPN_LOG("ImpersonateAsUser: ImpersonateLoggedOnUser() failed: " << err.message());
|
||||
return;
|
||||
}
|
||||
|
||||
CloseHandle(hToken);
|
||||
|
||||
impersonated = true;
|
||||
|
||||
char uname[UNLEN + 1];
|
||||
DWORD len = UNLEN + 1;
|
||||
GetUserNameA(uname, &len);
|
||||
OPENVPN_LOG("ImpersonateAsUser: impersonated as " << uname);
|
||||
}
|
||||
|
||||
~ImpersonateAsUser() {
|
||||
if (impersonated)
|
||||
{
|
||||
if (!RevertToSelf())
|
||||
{
|
||||
const Win::LastError err;
|
||||
OPENVPN_LOG("ImpersonateAsUser: RevertToSelf() failed: " << err.message());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool is_local_system() const
|
||||
{
|
||||
return local_system;
|
||||
}
|
||||
|
||||
private:
|
||||
// https://stackoverflow.com/a/4024388/227024
|
||||
BOOL is_local_system_() const
|
||||
{
|
||||
HANDLE hToken;
|
||||
UCHAR bTokenUser[sizeof(TOKEN_USER) + 8 + 4 * SID_MAX_SUB_AUTHORITIES];
|
||||
PTOKEN_USER pTokenUser = (PTOKEN_USER)bTokenUser;
|
||||
ULONG cbTokenUser;
|
||||
SID_IDENTIFIER_AUTHORITY siaNT = SECURITY_NT_AUTHORITY;
|
||||
PSID pSystemSid;
|
||||
BOOL bSystem;
|
||||
|
||||
// open process token
|
||||
if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken))
|
||||
return FALSE;
|
||||
|
||||
// retrieve user SID
|
||||
if (!GetTokenInformation(hToken, TokenUser, pTokenUser, sizeof(bTokenUser), &cbTokenUser))
|
||||
{
|
||||
CloseHandle(hToken);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
CloseHandle(hToken);
|
||||
|
||||
// allocate LocalSystem well-known SID
|
||||
if (!AllocateAndInitializeSid(&siaNT, 1, SECURITY_LOCAL_SYSTEM_RID,
|
||||
0, 0, 0, 0, 0, 0, 0, &pSystemSid)) return FALSE;
|
||||
|
||||
// compare the user SID from the token with the LocalSystem SID
|
||||
bSystem = EqualSid(pTokenUser->User.Sid, pSystemSid);
|
||||
|
||||
FreeSid(pSystemSid);
|
||||
|
||||
return bSystem;
|
||||
}
|
||||
|
||||
bool impersonated = false;
|
||||
bool local_system = false;
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -1,106 +1,117 @@
|
||||
// OpenVPN -- An application to securely tunnel IP networks
|
||||
// over a single port, with support for SSL/TLS-based
|
||||
// session authentication and key exchange,
|
||||
// packet encryption, packet authentication, and
|
||||
// packet compression.
|
||||
//
|
||||
// Copyright (C) 2012-2017 OpenVPN Inc.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License Version 3
|
||||
// as published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program in the COPYING file.
|
||||
// If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
// registry utilities for Windows
|
||||
|
||||
#ifndef OPENVPN_WIN_REG_H
|
||||
#define OPENVPN_WIN_REG_H
|
||||
|
||||
#include <windows.h>
|
||||
#include <openvpn/common/size.hpp>
|
||||
|
||||
namespace openvpn {
|
||||
namespace Win {
|
||||
|
||||
// HKEY wrapper
|
||||
class RegKey
|
||||
{
|
||||
RegKey(const RegKey&) = delete;
|
||||
RegKey& operator=(const RegKey&) = delete;
|
||||
|
||||
public:
|
||||
RegKey() : key(nullptr) {}
|
||||
bool defined() const { return key != nullptr; }
|
||||
HKEY* ref() { return &key; }
|
||||
HKEY operator()() { return key; }
|
||||
|
||||
~RegKey()
|
||||
{
|
||||
if (defined())
|
||||
::RegCloseKey(key);
|
||||
}
|
||||
private:
|
||||
HKEY key;
|
||||
};
|
||||
|
||||
class RegKeyEnumerator : public std::vector<std::string>
|
||||
{
|
||||
public:
|
||||
RegKeyEnumerator(HKEY hkey, const std::string& path)
|
||||
{
|
||||
RegKey regKey;
|
||||
auto status = ::RegOpenKeyExA(hkey,
|
||||
path.c_str(),
|
||||
0,
|
||||
KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS,
|
||||
regKey.ref());
|
||||
if (status != ERROR_SUCCESS)
|
||||
return;
|
||||
|
||||
DWORD subkeys_num;
|
||||
status = ::RegQueryInfoKeyA(regKey(),
|
||||
nullptr,
|
||||
nullptr,
|
||||
NULL,
|
||||
&subkeys_num,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr);
|
||||
|
||||
if (status != ERROR_SUCCESS)
|
||||
return;
|
||||
|
||||
const int MAX_KEY_LENGTH = 255;
|
||||
for (auto i = 0; i < subkeys_num; ++ i)
|
||||
{
|
||||
DWORD subkey_size = MAX_KEY_LENGTH;
|
||||
char subkey[MAX_KEY_LENGTH];
|
||||
status = ::RegEnumKeyExA(regKey(),
|
||||
i,
|
||||
subkey,
|
||||
&subkey_size,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr);
|
||||
if (status == ERROR_SUCCESS)
|
||||
push_back(subkey);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
// OpenVPN -- An application to securely tunnel IP networks
|
||||
// over a single port, with support for SSL/TLS-based
|
||||
// session authentication and key exchange,
|
||||
// packet encryption, packet authentication, and
|
||||
// packet compression.
|
||||
//
|
||||
// Copyright (C) 2012-2017 OpenVPN Inc.
|
||||
//
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU Affero General Public License Version 3
|
||||
// as published by the Free Software Foundation.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU Affero General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU Affero General Public License
|
||||
// along with this program in the COPYING file.
|
||||
// If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
// registry utilities for Windows
|
||||
|
||||
#ifndef OPENVPN_WIN_REG_H
|
||||
#define OPENVPN_WIN_REG_H
|
||||
|
||||
#include <windows.h>
|
||||
#include <openvpn/win/winerr.hpp>
|
||||
#include <openvpn/common/size.hpp>
|
||||
|
||||
namespace openvpn {
|
||||
namespace Win {
|
||||
|
||||
template<typename E>
|
||||
static void check_reg_error(DWORD status, const std::string& key)
|
||||
{
|
||||
if (status != ERROR_SUCCESS)
|
||||
{
|
||||
const Win::Error err(status);
|
||||
OPENVPN_THROW(E, "registry key " << key << " error: " << err.message());
|
||||
}
|
||||
}
|
||||
|
||||
// HKEY wrapper
|
||||
class RegKey
|
||||
{
|
||||
RegKey(const RegKey&) = delete;
|
||||
RegKey& operator=(const RegKey&) = delete;
|
||||
|
||||
public:
|
||||
RegKey() : key(nullptr) {}
|
||||
bool defined() const { return key != nullptr; }
|
||||
HKEY* ref() { return &key; }
|
||||
HKEY operator()() { return key; }
|
||||
|
||||
~RegKey()
|
||||
{
|
||||
if (defined())
|
||||
::RegCloseKey(key);
|
||||
}
|
||||
private:
|
||||
HKEY key;
|
||||
};
|
||||
|
||||
class RegKeyEnumerator : public std::vector<std::string>
|
||||
{
|
||||
public:
|
||||
RegKeyEnumerator(HKEY hkey, const std::string& path)
|
||||
{
|
||||
RegKey regKey;
|
||||
auto status = ::RegOpenKeyExA(hkey,
|
||||
path.c_str(),
|
||||
0,
|
||||
KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS,
|
||||
regKey.ref());
|
||||
if (status != ERROR_SUCCESS)
|
||||
return;
|
||||
|
||||
DWORD subkeys_num;
|
||||
status = ::RegQueryInfoKeyA(regKey(),
|
||||
nullptr,
|
||||
nullptr,
|
||||
NULL,
|
||||
&subkeys_num,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr);
|
||||
|
||||
if (status != ERROR_SUCCESS)
|
||||
return;
|
||||
|
||||
const int MAX_KEY_LENGTH = 255;
|
||||
for (auto i = 0; i < subkeys_num; ++ i)
|
||||
{
|
||||
DWORD subkey_size = MAX_KEY_LENGTH;
|
||||
char subkey[MAX_KEY_LENGTH];
|
||||
status = ::RegEnumKeyExA(regKey(),
|
||||
i,
|
||||
subkey,
|
||||
&subkey_size,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr,
|
||||
nullptr);
|
||||
if (status == ERROR_SUCCESS)
|
||||
push_back(subkey);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
@@ -100,6 +100,11 @@ if [ "$PLATFORM" = "linux" ] && [ "$OSSL" = "1" ] && [ "$NOSSL" != "1" ] && [ -z
|
||||
OPENSSL_SYS=1
|
||||
fi
|
||||
|
||||
# building on Linux, use system LZ4
|
||||
if [ "$PLATFORM" = "linux" ] && [ "$LZ4" = "1" ] && [ -z "$LZ4_SYS" ]; then
|
||||
LZ4_SYS=1
|
||||
fi
|
||||
|
||||
# default commands
|
||||
[ -z "$STRIP_CMD" ] && STRIP_CMD=strip
|
||||
[ -z "$GPP_CMD" ] && GPP_CMD=g++
|
||||
|
||||
@@ -1,90 +1,90 @@
|
||||
#!/c/python27/python
|
||||
|
||||
import os
|
||||
|
||||
from utils import *
|
||||
|
||||
def cli_cpp(parms):
|
||||
return os.path.join(parms['OVPN3'], "core", "test", "ovpncli", "cli.cpp")
|
||||
|
||||
def src_fn(parms, srcfile):
|
||||
# Get source file name
|
||||
if srcfile:
|
||||
if '.' not in os.path.basename(srcfile):
|
||||
srcfile += ".cpp"
|
||||
else:
|
||||
srcfile = cli_cpp(parms)
|
||||
return srcfile
|
||||
|
||||
def is_unit_test(argv):
|
||||
unit_test = False
|
||||
if len(argv) >= 2:
|
||||
unit_test = argv[1] == "unittest"
|
||||
return unit_test
|
||||
|
||||
def src_fn_argv(parms, argv):
|
||||
srcfile = None
|
||||
if len(argv) >= 1:
|
||||
srcfile = argv[0]
|
||||
return src_fn(parms, srcfile)
|
||||
|
||||
def build(parms, srcfile, unit_test=False):
|
||||
# Debug?
|
||||
if parms['DEBUG']:
|
||||
dbg_rel_flags = "/Zi"
|
||||
else:
|
||||
dbg_rel_flags = "/O2"
|
||||
|
||||
# Dictionary we will use to substitute parameters
|
||||
# onto VC command line.
|
||||
options = {
|
||||
"ovpn3" : parms['OVPN3'],
|
||||
"tap" : os.path.join(build_dir(parms), "tap-windows", "src"),
|
||||
"tap_component_id" : parms['TAP_WIN_COMPONENT_ID'],
|
||||
"asio" : os.path.join(build_dir(parms), "asio"),
|
||||
"mbedtls" : os.path.join(build_dir(parms), "mbedtls"),
|
||||
"lz4" : os.path.join(build_dir(parms), "lz4", "lib"),
|
||||
"srcfile" : srcfile,
|
||||
"extra_defs" : parms['CPP_EXTRA'],
|
||||
"extra_inc" : "",
|
||||
"extra_lib_path" : "",
|
||||
"extra_lib" : "",
|
||||
}
|
||||
|
||||
vc_parms(parms, options)
|
||||
|
||||
# Do we need to support XP and Win 2003?
|
||||
arch = os.environ.get("ARCH", parms['ARCH'])
|
||||
if arch == "x86_xp":
|
||||
options['extra_defs'] += " /D_WIN32_WINNT=0x0501" # pre-Vista
|
||||
else:
|
||||
options['extra_defs'] += " /D_WIN32_WINNT=0x0600" # Vista and later
|
||||
options['extra_lib'] += " fwpuclnt.lib"
|
||||
|
||||
# Add jsoncpp (optional)
|
||||
if parms.get('USE_JSONCPP'):
|
||||
options["jsoncpp"] = os.path.join(build_dir(parms), "jsoncpp")
|
||||
options['extra_inc'] += " /DHAVE_JSONCPP /I %(jsoncpp)s/dist" % options
|
||||
options['extra_lib_path'] += " /LIBPATH:%(jsoncpp)s/dist" % options
|
||||
options['extra_lib'] += " jsoncpp.lib"
|
||||
|
||||
if unit_test:
|
||||
options['extra_lib'] += " gtest.lib"
|
||||
options['extra_inc'] += " /I %s" % os.path.join(parms["GTEST_ROOT"], "googletest", "include")
|
||||
options['extra_lib_path'] += " /LIBPATH:%s" % os.path.join(parms["GTEST_ROOT"], "googlemock", "gtest", "Debug")
|
||||
|
||||
# Build OpenVPN Connect
|
||||
if parms.get("CONNECT"):
|
||||
options['extra_inc'] += " /I " + os.path.join(parms['OVPN3'], "common")
|
||||
|
||||
# build it
|
||||
vc_cmd(parms, r"cl %(extra_defs)s /DNOMINMAX /D_CRT_SECURE_NO_WARNINGS /DUSE_ASIO /DASIO_STANDALONE /DASIO_NO_DEPRECATED /I %(asio)s\asio\include /DUSE_MBEDTLS /I %(mbedtls)s\include /DHAVE_LZ4 /I %(lz4)s%(extra_inc)s -DTAP_WIN_COMPONENT_ID=%(tap_component_id)s /I %(tap)s /I %(ovpn3)s\core /EHsc %(link_static_dynamic_flags)s /W0 %(dbg_rel_flags)s /nologo %(srcfile)s /link /LIBPATH:%(mbedtls)s\library /LIBPATH:%(lz4)s%(extra_lib_path)s mbedtls.lib lz4.lib%(extra_lib)s ws2_32.lib crypt32.lib iphlpapi.lib winmm.lib user32.lib gdi32.lib advapi32.lib wininet.lib shell32.lib ole32.lib rpcrt4.lib" % options, arch=os.environ.get("ARCH"))
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
|
||||
params = read_params()
|
||||
|
||||
src = src_fn_argv(params, sys.argv[1:])
|
||||
unit_test = is_unit_test(sys.argv[1:])
|
||||
build(params, src, unit_test)
|
||||
#!/c/python27/python
|
||||
|
||||
import os
|
||||
|
||||
from utils import *
|
||||
|
||||
def cli_cpp(parms):
|
||||
return os.path.join(parms['OVPN3'], "core", "test", "ovpncli", "cli.cpp")
|
||||
|
||||
def src_fn(parms, srcfile):
|
||||
# Get source file name
|
||||
if srcfile:
|
||||
if '.' not in os.path.basename(srcfile):
|
||||
srcfile += ".cpp"
|
||||
else:
|
||||
srcfile = cli_cpp(parms)
|
||||
return srcfile
|
||||
|
||||
def is_unit_test(argv):
|
||||
unit_test = False
|
||||
if len(argv) >= 2:
|
||||
unit_test = argv[1] == "unittest"
|
||||
return unit_test
|
||||
|
||||
def src_fn_argv(parms, argv):
|
||||
srcfile = None
|
||||
if len(argv) >= 1:
|
||||
srcfile = argv[0]
|
||||
return src_fn(parms, srcfile)
|
||||
|
||||
def build(parms, srcfile, unit_test=False):
|
||||
# Debug?
|
||||
if parms['DEBUG']:
|
||||
dbg_rel_flags = "/Zi"
|
||||
else:
|
||||
dbg_rel_flags = "/O2"
|
||||
|
||||
# Dictionary we will use to substitute parameters
|
||||
# onto VC command line.
|
||||
options = {
|
||||
"ovpn3" : parms['OVPN3'],
|
||||
"tap" : os.path.join(build_dir(parms), "tap-windows", "src"),
|
||||
"tap_component_id" : parms['TAP_WIN_COMPONENT_ID'],
|
||||
"asio" : os.path.join(build_dir(parms), "asio"),
|
||||
"mbedtls" : os.path.join(build_dir(parms), "mbedtls"),
|
||||
"lz4" : os.path.join(build_dir(parms), "lz4", "lib"),
|
||||
"srcfile" : srcfile,
|
||||
"extra_defs" : parms['CPP_EXTRA'],
|
||||
"extra_inc" : "",
|
||||
"extra_lib_path" : "",
|
||||
"extra_lib" : "",
|
||||
}
|
||||
|
||||
vc_parms(parms, options)
|
||||
|
||||
# Do we need to support XP and Win 2003?
|
||||
arch = os.environ.get("ARCH", parms['ARCH'])
|
||||
if arch == "x86_xp":
|
||||
options['extra_defs'] += " /D_WIN32_WINNT=0x0501" # pre-Vista
|
||||
else:
|
||||
options['extra_defs'] += " /D_WIN32_WINNT=0x0600" # Vista and later
|
||||
options['extra_lib'] += " fwpuclnt.lib"
|
||||
|
||||
# Add jsoncpp (optional)
|
||||
if parms.get('USE_JSONCPP'):
|
||||
options["jsoncpp"] = os.path.join(build_dir(parms), "jsoncpp")
|
||||
options['extra_inc'] += " /DHAVE_JSONCPP /I %(jsoncpp)s/dist" % options
|
||||
options['extra_lib_path'] += " /LIBPATH:%(jsoncpp)s/dist" % options
|
||||
options['extra_lib'] += " jsoncpp.lib"
|
||||
|
||||
if unit_test:
|
||||
options['extra_lib'] += " gtest.lib"
|
||||
options['extra_inc'] += " /I %s" % os.path.join(parms["GTEST_ROOT"], "googletest", "include")
|
||||
options['extra_lib_path'] += " /LIBPATH:%s" % os.path.join(parms["GTEST_ROOT"], "googlemock", "gtest", "Debug")
|
||||
|
||||
# Build OpenVPN Connect
|
||||
if parms.get("CONNECT"):
|
||||
options['extra_inc'] += " /I " + os.path.join(parms['OVPN3'], "common")
|
||||
|
||||
# build it
|
||||
vc_cmd(parms, r"cl %(extra_defs)s /DNOMINMAX /D_CRT_SECURE_NO_WARNINGS /DUSE_ASIO /DASIO_STANDALONE /DASIO_NO_DEPRECATED /I %(asio)s\asio\include /DUSE_MBEDTLS /I %(mbedtls)s\include /DHAVE_LZ4 /I %(lz4)s%(extra_inc)s -DTAP_WIN_COMPONENT_ID=%(tap_component_id)s /I %(tap)s /I %(ovpn3)s\core /EHsc %(link_static_dynamic_flags)s /W0 %(dbg_rel_flags)s /nologo %(srcfile)s /link /LIBPATH:%(mbedtls)s\library /LIBPATH:%(lz4)s%(extra_lib_path)s mbedtls.lib lz4.lib%(extra_lib)s ws2_32.lib crypt32.lib iphlpapi.lib winmm.lib user32.lib gdi32.lib advapi32.lib wininet.lib shell32.lib ole32.lib rpcrt4.lib Wtsapi32.lib" % options, arch=os.environ.get("ARCH"))
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
|
||||
params = read_params()
|
||||
|
||||
src = src_fn_argv(params, sys.argv[1:])
|
||||
unit_test = is_unit_test(sys.argv[1:])
|
||||
build(params, src, unit_test)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,384 +1,387 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\test\ovpncli\cli.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\client\ovpncli.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\addrlist.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\addrpair.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\ip.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\iperr.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\ipv4.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\ipv6.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\macaddr.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\pool.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\range.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\regex.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\route.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\routeinv.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\cf\cf.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\cf\cfhelper.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\cf\cfhost.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\cf\cfrunloop.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\cf\cfsec.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\cf\cfsocket.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\cf\cfstream.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\cf\cftimer.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\cf\error.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\iosactiveiface.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\maclife.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\macsleep.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\macver.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\reach.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\reachable.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\scdynstore.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\ver.hpp" />
|
||||
<ClInclude Include="..\openvpn\applecrypto\crypto\api.hpp" />
|
||||
<ClInclude Include="..\openvpn\applecrypto\crypto\cipher.hpp" />
|
||||
<ClInclude Include="..\openvpn\applecrypto\crypto\digest.hpp" />
|
||||
<ClInclude Include="..\openvpn\applecrypto\crypto\hmac.hpp" />
|
||||
<ClInclude Include="..\openvpn\applecrypto\ssl\sslctx.hpp" />
|
||||
<ClInclude Include="..\openvpn\applecrypto\util\rand.hpp" />
|
||||
<ClInclude Include="..\openvpn\asio\asioboundsock.hpp" />
|
||||
<ClInclude Include="..\openvpn\asio\asiocontext.hpp" />
|
||||
<ClInclude Include="..\openvpn\asio\asioerr.hpp" />
|
||||
<ClInclude Include="..\openvpn\asio\asiopolysock.hpp" />
|
||||
<ClInclude Include="..\openvpn\asio\asiosignal.hpp" />
|
||||
<ClInclude Include="..\openvpn\asio\asiostop.hpp" />
|
||||
<ClInclude Include="..\openvpn\asio\asiowork.hpp" />
|
||||
<ClInclude Include="..\openvpn\asio\scoped_asio_stream.hpp" />
|
||||
<ClInclude Include="..\openvpn\auth\authcert.hpp" />
|
||||
<ClInclude Include="..\openvpn\auth\authcreds.hpp" />
|
||||
<ClInclude Include="..\openvpn\auth\cr.hpp" />
|
||||
<ClInclude Include="..\openvpn\auth\validatecreds.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\asiobuf.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\bufclamp.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\bufcomplete.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\bufcomposed.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\buffer.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\bufhex.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\buflimit.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\buflist.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\bufread.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\bufstr.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\bufstream.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\memq.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\safestr.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\zlib.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\cliconnect.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\cliconstants.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\clicreds.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\cliemuexr.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\clievent.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\clihalt.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\clilife.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\cliopt.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\cliopthelper.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\cliproto.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\ipverflags.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\optfilt.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\remotelist.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\rgopt.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\abort.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\action.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\actionthread.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\arch.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\argv.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\arraysize.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\asyncsleep.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\autoreset.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\base64.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\binprefix.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\circ_list.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\cleanup.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\core.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\count.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\daemon.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\demangle.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\destruct.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\endian.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\enumdir.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\environ.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\exception.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\extern.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\ffs.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\file.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\fileatomic.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\fileunix.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\format.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\function.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\getopt.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\getpw.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\glob.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\hash.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\hexstr.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\hostlist.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\hostname.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\hostport.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\inotify.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\lex.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\likely.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\link.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\logrotate.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\memneq.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\mode.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\msgwin.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\number.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\olong.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\options.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\ostream.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\path.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\peercred.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\persistfile.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\pipe.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\platform.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\platform_name.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\platform_string.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\process.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\pthreadcond.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\rc.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\redir.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\runcontext.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\scoped_fd.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\sess_id.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\signal.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\size.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\sleep.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\sockopt.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\socktypes.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\split.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\splitlines.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\stat.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\stop.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\strerror.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\string.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\stringize.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\stringtempl.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\tempfile.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\to_string.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\umask.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\unicode-impl.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\unicode.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\uniqueptr.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\usecount.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\usergroup.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\userpass.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\version.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\waitbarrier.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\write.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\wstring.hpp" />
|
||||
<ClInclude Include="..\openvpn\compress\compnull.hpp" />
|
||||
<ClInclude Include="..\openvpn\compress\compress.hpp" />
|
||||
<ClInclude Include="..\openvpn\compress\compstub.hpp" />
|
||||
<ClInclude Include="..\openvpn\compress\lz4.hpp" />
|
||||
<ClInclude Include="..\openvpn\compress\lzo.hpp" />
|
||||
<ClInclude Include="..\openvpn\compress\lzoasym.hpp" />
|
||||
<ClInclude Include="..\openvpn\compress\lzoasym_impl.hpp" />
|
||||
<ClInclude Include="..\openvpn\compress\lzoselect.hpp" />
|
||||
<ClInclude Include="..\openvpn\compress\snappy.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\bs64_data_limit.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\cipher.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\cryptoalgs.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\cryptodc.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\cryptodcsel.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\crypto_aead.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\crypto_chm.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\decrypt_chm.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\digestapi.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\encrypt_chm.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\hashstr.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\ovpnhmac.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\packet_id.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\selftest.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\static_key.hpp" />
|
||||
<ClInclude Include="..\openvpn\error\error.hpp" />
|
||||
<ClInclude Include="..\openvpn\error\excode.hpp" />
|
||||
<ClInclude Include="..\openvpn\frame\frame.hpp" />
|
||||
<ClInclude Include="..\openvpn\frame\frame_init.hpp" />
|
||||
<ClInclude Include="..\openvpn\frame\memq_dgram.hpp" />
|
||||
<ClInclude Include="..\openvpn\frame\memq_stream.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\header.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\htmlskip.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\method.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\parseutil.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\reply.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\request.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\status.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\urlencode.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\urlparm.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\urlparse.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\webexcept.hpp" />
|
||||
<ClInclude Include="..\openvpn\init\cryptoinit.hpp" />
|
||||
<ClInclude Include="..\openvpn\init\engineinit.hpp" />
|
||||
<ClInclude Include="..\openvpn\init\initprocess.hpp" />
|
||||
<ClInclude Include="..\openvpn\io\io.hpp" />
|
||||
<ClInclude Include="..\openvpn\ip\dhcp.hpp" />
|
||||
<ClInclude Include="..\openvpn\ip\eth.hpp" />
|
||||
<ClInclude Include="..\openvpn\ip\icmp.hpp" />
|
||||
<ClInclude Include="..\openvpn\ip\ip.hpp" />
|
||||
<ClInclude Include="..\openvpn\ip\udp.hpp" />
|
||||
<ClInclude Include="..\openvpn\legal\copyright.hpp" />
|
||||
<ClInclude Include="..\openvpn\linux\core.hpp" />
|
||||
<ClInclude Include="..\openvpn\linux\daemon_alive.hpp" />
|
||||
<ClInclude Include="..\openvpn\log\logbase.hpp" />
|
||||
<ClInclude Include="..\openvpn\log\logbasesimple.hpp" />
|
||||
<ClInclude Include="..\openvpn\log\lognull.hpp" />
|
||||
<ClInclude Include="..\openvpn\log\logperiod.hpp" />
|
||||
<ClInclude Include="..\openvpn\log\logsimple.hpp" />
|
||||
<ClInclude Include="..\openvpn\log\logthread.hpp" />
|
||||
<ClInclude Include="..\openvpn\log\sessionstats.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\crypto\api.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\crypto\cipher.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\crypto\ciphergcm.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\crypto\digest.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\crypto\hmac.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\pki\dh.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\pki\pkctx.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\pki\x509cert.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\pki\x509crl.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\ssl\sslctx.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\util\error.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\util\pkcs1.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\util\rand.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\util\selftest.hpp" />
|
||||
<ClInclude Include="..\openvpn\netconf\enumiface.hpp" />
|
||||
<ClInclude Include="..\openvpn\netconf\hwaddr.hpp" />
|
||||
<ClInclude Include="..\openvpn\netconf\ios\net-route.h" />
|
||||
<ClInclude Include="..\openvpn\netconf\linux\gw.hpp" />
|
||||
<ClInclude Include="..\openvpn\netconf\linux\route.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\bio\bio_memq_dgram.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\bio\bio_memq_stream.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\crypto\api.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\crypto\cipher.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\crypto\ciphergcm.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\crypto\digest.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\crypto\hmac.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\pki\crl.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\pki\dh.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\pki\pkey.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\pki\x509.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\pki\x509store.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\sign\pkcs7verify.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\sign\verify.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\ssl\sslctx.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\util\engine.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\util\error.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\util\init.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\util\rand.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\util\tokenencrypt.hpp" />
|
||||
<ClInclude Include="..\openvpn\options\continuation.hpp" />
|
||||
<ClInclude Include="..\openvpn\options\merge.hpp" />
|
||||
<ClInclude Include="..\openvpn\options\sanitize.hpp" />
|
||||
<ClInclude Include="..\openvpn\options\servpush.hpp" />
|
||||
<ClInclude Include="..\openvpn\pki\cclist.hpp" />
|
||||
<ClInclude Include="..\openvpn\pki\epkibase.hpp" />
|
||||
<ClInclude Include="..\openvpn\pki\pkcs1.hpp" />
|
||||
<ClInclude Include="..\openvpn\pki\x509track.hpp" />
|
||||
<ClInclude Include="..\openvpn\proxy\httpdigest.hpp" />
|
||||
<ClInclude Include="..\openvpn\proxy\ntlm.hpp" />
|
||||
<ClInclude Include="..\openvpn\proxy\proxyauth.hpp" />
|
||||
<ClInclude Include="..\openvpn\random\devurand.hpp" />
|
||||
<ClInclude Include="..\openvpn\random\mtrandapi.hpp" />
|
||||
<ClInclude Include="..\openvpn\random\randapi.hpp" />
|
||||
<ClInclude Include="..\openvpn\random\randbytestore.hpp" />
|
||||
<ClInclude Include="..\openvpn\reliable\relack.hpp" />
|
||||
<ClInclude Include="..\openvpn\reliable\relcommon.hpp" />
|
||||
<ClInclude Include="..\openvpn\reliable\relrecv.hpp" />
|
||||
<ClInclude Include="..\openvpn\reliable\relsend.hpp" />
|
||||
<ClInclude Include="..\openvpn\server\listenlist.hpp" />
|
||||
<ClInclude Include="..\openvpn\server\manage.hpp" />
|
||||
<ClInclude Include="..\openvpn\server\peeraddr.hpp" />
|
||||
<ClInclude Include="..\openvpn\server\peerstats.hpp" />
|
||||
<ClInclude Include="..\openvpn\server\servhalt.hpp" />
|
||||
<ClInclude Include="..\openvpn\server\servproto.hpp" />
|
||||
<ClInclude Include="..\openvpn\server\vpnservnetblock.hpp" />
|
||||
<ClInclude Include="..\openvpn\server\vpnservpool.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\datalimit.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\is_openvpn_protocol.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\kuparse.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\mssparms.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\nscert.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\peerinfo.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\proto.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\protostack.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\proto_context_options.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\psid.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\sslapi.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\sslchoose.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\sslconsts.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\tlsprf.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\tlsver.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\tls_cert_profile.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\tls_remote.hpp" />
|
||||
<ClInclude Include="..\openvpn\time\asiotimer.hpp" />
|
||||
<ClInclude Include="..\openvpn\time\coarsetime.hpp" />
|
||||
<ClInclude Include="..\openvpn\time\durhelper.hpp" />
|
||||
<ClInclude Include="..\openvpn\time\time.hpp" />
|
||||
<ClInclude Include="..\openvpn\time\timestr.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\altproxy.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\client\httpcli.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\client\relay.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\client\tcpcli.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\client\transbase.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\client\udpcli.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\dco.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\gremlin.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\mutate.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\pktstream.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\protocol.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\reconnect_notify.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\server\transbase.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\socket_protect.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\tcplink.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\udplink.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\builder\base.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\builder\capture.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\builder\client.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\builder\rgwflags.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\builder\setup.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\client\dhcp_capture.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\client\emuexr.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\client\tunbase.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\client\tunnull.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\client\tunprop.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\extern\config.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\extern\fw.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\ipv6_setting.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\layer.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\linux\client\tuncli.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\linux\tun.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\mac\client\tuncli.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\mac\client\tunsetup.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\mac\gwv4.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\mac\macdns.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\mac\macdns_watchdog.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\mac\macgw.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\mac\tunutil.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\mac\utun.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\persist\tunpersist.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\persist\tunwrap.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\persist\tunwrapasio.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\server\tunbase.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\tunio.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\tunlog.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\tunmtu.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\tunspec.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\win\client\setupbase.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\win\client\tuncli.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\win\client\tunsetup.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\win\nrpt.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\win\tunutil.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\win\wfp.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\call.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\cmd.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\console.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\handle.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\modname.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\reg.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\scoped_handle.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\sleep.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\unicode.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\winerr.hpp" />
|
||||
</ItemGroup>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\test\ovpncli\cli.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\client\ovpncli.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\addrlist.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\addrpair.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\ip.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\iperr.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\ipv4.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\ipv6.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\macaddr.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\pool.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\range.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\regex.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\route.hpp" />
|
||||
<ClInclude Include="..\openvpn\addr\routeinv.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\cf\cf.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\cf\cfhelper.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\cf\cfhost.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\cf\cfrunloop.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\cf\cfsec.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\cf\cfsocket.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\cf\cfstream.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\cf\cftimer.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\cf\error.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\iosactiveiface.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\maclife.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\macsleep.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\macver.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\reach.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\reachable.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\scdynstore.hpp" />
|
||||
<ClInclude Include="..\openvpn\apple\ver.hpp" />
|
||||
<ClInclude Include="..\openvpn\applecrypto\crypto\api.hpp" />
|
||||
<ClInclude Include="..\openvpn\applecrypto\crypto\cipher.hpp" />
|
||||
<ClInclude Include="..\openvpn\applecrypto\crypto\digest.hpp" />
|
||||
<ClInclude Include="..\openvpn\applecrypto\crypto\hmac.hpp" />
|
||||
<ClInclude Include="..\openvpn\applecrypto\ssl\sslctx.hpp" />
|
||||
<ClInclude Include="..\openvpn\applecrypto\util\rand.hpp" />
|
||||
<ClInclude Include="..\openvpn\asio\asioboundsock.hpp" />
|
||||
<ClInclude Include="..\openvpn\asio\asiocontext.hpp" />
|
||||
<ClInclude Include="..\openvpn\asio\asioerr.hpp" />
|
||||
<ClInclude Include="..\openvpn\asio\asiopolysock.hpp" />
|
||||
<ClInclude Include="..\openvpn\asio\asiosignal.hpp" />
|
||||
<ClInclude Include="..\openvpn\asio\asiostop.hpp" />
|
||||
<ClInclude Include="..\openvpn\asio\asiowork.hpp" />
|
||||
<ClInclude Include="..\openvpn\asio\scoped_asio_stream.hpp" />
|
||||
<ClInclude Include="..\openvpn\auth\authcert.hpp" />
|
||||
<ClInclude Include="..\openvpn\auth\authcreds.hpp" />
|
||||
<ClInclude Include="..\openvpn\auth\cr.hpp" />
|
||||
<ClInclude Include="..\openvpn\auth\validatecreds.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\asiobuf.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\bufclamp.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\bufcomplete.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\bufcomposed.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\buffer.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\bufhex.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\buflimit.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\buflist.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\bufread.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\bufstr.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\bufstream.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\memq.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\safestr.hpp" />
|
||||
<ClInclude Include="..\openvpn\buffer\zlib.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\cliconnect.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\cliconstants.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\clicreds.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\cliemuexr.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\clievent.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\clihalt.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\clilife.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\cliopt.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\cliopthelper.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\cliproto.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\ipverflags.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\optfilt.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\remotelist.hpp" />
|
||||
<ClInclude Include="..\openvpn\client\rgopt.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\abort.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\action.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\actionthread.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\arch.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\argv.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\arraysize.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\asyncsleep.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\autoreset.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\base64.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\binprefix.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\circ_list.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\cleanup.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\core.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\count.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\daemon.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\demangle.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\destruct.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\endian.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\enumdir.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\environ.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\exception.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\extern.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\ffs.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\file.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\fileatomic.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\fileunix.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\format.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\function.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\getopt.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\getpw.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\glob.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\hash.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\hexstr.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\hostlist.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\hostname.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\hostport.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\inotify.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\lex.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\likely.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\link.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\logrotate.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\memneq.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\mode.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\msgwin.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\number.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\olong.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\options.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\ostream.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\path.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\peercred.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\persistfile.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\pipe.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\platform.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\platform_name.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\platform_string.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\process.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\pthreadcond.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\rc.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\redir.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\runcontext.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\scoped_fd.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\sess_id.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\signal.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\size.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\sleep.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\sockopt.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\socktypes.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\split.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\splitlines.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\stat.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\stop.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\strerror.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\string.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\stringize.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\stringtempl.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\tempfile.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\to_string.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\umask.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\unicode-impl.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\unicode.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\uniqueptr.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\usecount.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\usergroup.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\userpass.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\version.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\waitbarrier.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\write.hpp" />
|
||||
<ClInclude Include="..\openvpn\common\wstring.hpp" />
|
||||
<ClInclude Include="..\openvpn\compress\compnull.hpp" />
|
||||
<ClInclude Include="..\openvpn\compress\compress.hpp" />
|
||||
<ClInclude Include="..\openvpn\compress\compstub.hpp" />
|
||||
<ClInclude Include="..\openvpn\compress\lz4.hpp" />
|
||||
<ClInclude Include="..\openvpn\compress\lzo.hpp" />
|
||||
<ClInclude Include="..\openvpn\compress\lzoasym.hpp" />
|
||||
<ClInclude Include="..\openvpn\compress\lzoasym_impl.hpp" />
|
||||
<ClInclude Include="..\openvpn\compress\lzoselect.hpp" />
|
||||
<ClInclude Include="..\openvpn\compress\snappy.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\bs64_data_limit.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\cipher.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\cryptoalgs.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\cryptodc.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\cryptodcsel.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\crypto_aead.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\crypto_chm.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\decrypt_chm.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\digestapi.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\encrypt_chm.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\hashstr.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\ovpnhmac.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\packet_id.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\selftest.hpp" />
|
||||
<ClInclude Include="..\openvpn\crypto\static_key.hpp" />
|
||||
<ClInclude Include="..\openvpn\error\error.hpp" />
|
||||
<ClInclude Include="..\openvpn\error\excode.hpp" />
|
||||
<ClInclude Include="..\openvpn\frame\frame.hpp" />
|
||||
<ClInclude Include="..\openvpn\frame\frame_init.hpp" />
|
||||
<ClInclude Include="..\openvpn\frame\memq_dgram.hpp" />
|
||||
<ClInclude Include="..\openvpn\frame\memq_stream.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\header.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\htmlskip.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\method.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\parseutil.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\reply.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\request.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\status.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\urlencode.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\urlparm.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\urlparse.hpp" />
|
||||
<ClInclude Include="..\openvpn\http\webexcept.hpp" />
|
||||
<ClInclude Include="..\openvpn\init\cryptoinit.hpp" />
|
||||
<ClInclude Include="..\openvpn\init\engineinit.hpp" />
|
||||
<ClInclude Include="..\openvpn\init\initprocess.hpp" />
|
||||
<ClInclude Include="..\openvpn\io\io.hpp" />
|
||||
<ClInclude Include="..\openvpn\ip\dhcp.hpp" />
|
||||
<ClInclude Include="..\openvpn\ip\eth.hpp" />
|
||||
<ClInclude Include="..\openvpn\ip\icmp.hpp" />
|
||||
<ClInclude Include="..\openvpn\ip\ip.hpp" />
|
||||
<ClInclude Include="..\openvpn\ip\udp.hpp" />
|
||||
<ClInclude Include="..\openvpn\legal\copyright.hpp" />
|
||||
<ClInclude Include="..\openvpn\linux\core.hpp" />
|
||||
<ClInclude Include="..\openvpn\linux\daemon_alive.hpp" />
|
||||
<ClInclude Include="..\openvpn\log\logbase.hpp" />
|
||||
<ClInclude Include="..\openvpn\log\logbasesimple.hpp" />
|
||||
<ClInclude Include="..\openvpn\log\lognull.hpp" />
|
||||
<ClInclude Include="..\openvpn\log\logperiod.hpp" />
|
||||
<ClInclude Include="..\openvpn\log\logsimple.hpp" />
|
||||
<ClInclude Include="..\openvpn\log\logthread.hpp" />
|
||||
<ClInclude Include="..\openvpn\log\sessionstats.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\crypto\api.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\crypto\cipher.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\crypto\ciphergcm.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\crypto\digest.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\crypto\hmac.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\pki\dh.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\pki\pkctx.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\pki\x509cert.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\pki\x509crl.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\ssl\sslctx.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\util\error.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\util\pkcs1.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\util\rand.hpp" />
|
||||
<ClInclude Include="..\openvpn\mbedtls\util\selftest.hpp" />
|
||||
<ClInclude Include="..\openvpn\netconf\enumiface.hpp" />
|
||||
<ClInclude Include="..\openvpn\netconf\hwaddr.hpp" />
|
||||
<ClInclude Include="..\openvpn\netconf\ios\net-route.h" />
|
||||
<ClInclude Include="..\openvpn\netconf\linux\gw.hpp" />
|
||||
<ClInclude Include="..\openvpn\netconf\linux\route.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\bio\bio_memq_dgram.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\bio\bio_memq_stream.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\crypto\api.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\crypto\cipher.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\crypto\ciphergcm.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\crypto\digest.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\crypto\hmac.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\pki\crl.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\pki\dh.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\pki\pkey.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\pki\x509.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\pki\x509store.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\sign\pkcs7verify.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\sign\verify.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\ssl\sslctx.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\util\engine.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\util\error.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\util\init.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\util\rand.hpp" />
|
||||
<ClInclude Include="..\openvpn\openssl\util\tokenencrypt.hpp" />
|
||||
<ClInclude Include="..\openvpn\options\continuation.hpp" />
|
||||
<ClInclude Include="..\openvpn\options\merge.hpp" />
|
||||
<ClInclude Include="..\openvpn\options\sanitize.hpp" />
|
||||
<ClInclude Include="..\openvpn\options\servpush.hpp" />
|
||||
<ClInclude Include="..\openvpn\pki\cclist.hpp" />
|
||||
<ClInclude Include="..\openvpn\pki\epkibase.hpp" />
|
||||
<ClInclude Include="..\openvpn\pki\pkcs1.hpp" />
|
||||
<ClInclude Include="..\openvpn\pki\x509track.hpp" />
|
||||
<ClInclude Include="..\openvpn\proxy\httpdigest.hpp" />
|
||||
<ClInclude Include="..\openvpn\proxy\ntlm.hpp" />
|
||||
<ClInclude Include="..\openvpn\proxy\proxyauth.hpp" />
|
||||
<ClInclude Include="..\openvpn\random\devurand.hpp" />
|
||||
<ClInclude Include="..\openvpn\random\mtrandapi.hpp" />
|
||||
<ClInclude Include="..\openvpn\random\randapi.hpp" />
|
||||
<ClInclude Include="..\openvpn\random\randbytestore.hpp" />
|
||||
<ClInclude Include="..\openvpn\reliable\relack.hpp" />
|
||||
<ClInclude Include="..\openvpn\reliable\relcommon.hpp" />
|
||||
<ClInclude Include="..\openvpn\reliable\relrecv.hpp" />
|
||||
<ClInclude Include="..\openvpn\reliable\relsend.hpp" />
|
||||
<ClInclude Include="..\openvpn\server\listenlist.hpp" />
|
||||
<ClInclude Include="..\openvpn\server\manage.hpp" />
|
||||
<ClInclude Include="..\openvpn\server\peeraddr.hpp" />
|
||||
<ClInclude Include="..\openvpn\server\peerstats.hpp" />
|
||||
<ClInclude Include="..\openvpn\server\servhalt.hpp" />
|
||||
<ClInclude Include="..\openvpn\server\servproto.hpp" />
|
||||
<ClInclude Include="..\openvpn\server\vpnservnetblock.hpp" />
|
||||
<ClInclude Include="..\openvpn\server\vpnservpool.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\datalimit.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\is_openvpn_protocol.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\kuparse.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\mssparms.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\nscert.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\peerinfo.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\proto.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\protostack.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\proto_context_options.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\psid.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\sslapi.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\sslchoose.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\sslconsts.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\tlsprf.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\tlsver.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\tls_cert_profile.hpp" />
|
||||
<ClInclude Include="..\openvpn\ssl\tls_remote.hpp" />
|
||||
<ClInclude Include="..\openvpn\time\asiotimer.hpp" />
|
||||
<ClInclude Include="..\openvpn\time\coarsetime.hpp" />
|
||||
<ClInclude Include="..\openvpn\time\durhelper.hpp" />
|
||||
<ClInclude Include="..\openvpn\time\time.hpp" />
|
||||
<ClInclude Include="..\openvpn\time\timestr.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\altproxy.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\client\httpcli.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\client\relay.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\client\tcpcli.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\client\transbase.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\client\udpcli.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\dco.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\gremlin.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\mutate.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\pktstream.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\protocol.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\reconnect_notify.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\server\transbase.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\socket_protect.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\tcplink.hpp" />
|
||||
<ClInclude Include="..\openvpn\transport\udplink.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\builder\base.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\builder\capture.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\builder\client.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\builder\rgwflags.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\builder\setup.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\client\dhcp_capture.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\client\emuexr.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\client\tunbase.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\client\tunnull.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\client\tunprop.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\extern\config.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\extern\fw.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\ipv6_setting.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\layer.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\linux\client\tuncli.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\linux\tun.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\mac\client\tuncli.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\mac\client\tunsetup.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\mac\gwv4.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\mac\macdns.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\mac\macdns_watchdog.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\mac\macgw.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\mac\tunutil.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\mac\utun.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\persist\tunpersist.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\persist\tunwrap.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\persist\tunwrapasio.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\server\tunbase.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\tunio.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\tunlog.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\tunmtu.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\tunspec.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\win\client\setupbase.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\win\client\tuncli.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\win\client\tunsetup.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\win\nrpt.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\win\tunutil.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\win\wfp.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\call.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\cmd.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\console.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\handle.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\modname.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\reg.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\scoped_handle.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\sleep.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\unicode.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\winerr.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\win\winproxy.hpp" />
|
||||
<ClInclude Include="..\openvpn\tun\proxy.hpp" />
|
||||
<ClInclude Include="..\openvpn\win\impersonate.hpp" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -223,8 +223,8 @@ def vc_cmd(parms, cmd, arch=None, succeed=0):
|
||||
arch = parms['ARCH']
|
||||
if arch == "x64":
|
||||
arch = "amd64"
|
||||
with ModEnv('PATH', "%s;%s\\VC" % (os.environ['PATH'], parms['MSVC_DIR'])):
|
||||
status = call('vcvarsall.bat %s && %s' % (arch, cmd), shell=True, succeed=succeed)
|
||||
with ModEnv('PATH', "%s;%s\\VC;%s\\VC\\Auxiliary\\Build;" % (os.environ['PATH'], parms['MSVC_DIR'], parms['MSVC_DIR'])):
|
||||
call('vcvarsall.bat %s && %s' % (arch, cmd), shell=True, succeed=succeed)
|
||||
|
||||
def vc_parms(parms, cmd_dict):
|
||||
cmd_dict["dbg_rel_flags"] = "/Zi" if parms['DEBUG'] else "/O2"
|
||||
@@ -292,7 +292,7 @@ def read_params():
|
||||
params['ARCH'] = os.environ.get('ARCH', 'amd64').rstrip()
|
||||
params['DEBUG'] = os.environ.get('DEBUG')
|
||||
params['STATIC'] = os.environ.get('STATIC')
|
||||
params['MSVC_DIR'] = os.environ.get('MSVC_DIR', 'c:\\Program Files (x86)\\Microsoft Visual Studio 14.0').rstrip()
|
||||
params['MSVC_DIR'] = os.environ.get('MSVC_DIR', 'c:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional').rstrip()
|
||||
# Community: tap0901, Access Server: tapoas
|
||||
params['TAP_WIN_COMPONENT_ID'] = os.environ.get('TAP_WIN_COMPONENT_ID', 'tap0901')
|
||||
params['CPP_EXTRA'] = os.environ.get('CPP_EXTRA', '').rstrip()
|
||||
|
||||
Reference in New Issue
Block a user