update Darwin
This commit is contained in:
parent
89ee84c73e
commit
531041e89a
1705 changed files with 6511 additions and 459836 deletions
|
|
@ -25,10 +25,16 @@ class Binding(object):
|
|||
"""
|
||||
_module_prefix = "cryptography.hazmat.bindings.commoncrypto."
|
||||
_modules = [
|
||||
"cf",
|
||||
"common_digest",
|
||||
"common_hmac",
|
||||
"common_key_derivation",
|
||||
"common_cryptor",
|
||||
"secimport",
|
||||
"secitem",
|
||||
"seckey",
|
||||
"seckeychain",
|
||||
"sectransform",
|
||||
]
|
||||
|
||||
ffi = None
|
||||
|
|
@ -45,6 +51,7 @@ class Binding(object):
|
|||
cls.ffi, cls.lib = build_ffi(
|
||||
module_prefix=cls._module_prefix,
|
||||
modules=cls._modules,
|
||||
extra_link_args=["-framework", "Security"]
|
||||
)
|
||||
|
||||
@classmethod
|
||||
|
|
|
|||
|
|
@ -0,0 +1,114 @@
|
|||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from __future__ import absolute_import, division, print_function
|
||||
|
||||
INCLUDES = """
|
||||
#include <CoreFoundation/CoreFoundation.h>
|
||||
"""
|
||||
|
||||
TYPES = """
|
||||
typedef bool Boolean;
|
||||
typedef signed long OSStatus;
|
||||
typedef unsigned char UInt8;
|
||||
typedef uint32_t UInt32;
|
||||
|
||||
typedef const void * CFAllocatorRef;
|
||||
const CFAllocatorRef kCFAllocatorDefault;
|
||||
typedef const void * CFDataRef;
|
||||
typedef signed long long CFIndex;
|
||||
typedef ... *CFStringRef;
|
||||
typedef ... *CFArrayRef;
|
||||
typedef ... *CFBooleanRef;
|
||||
typedef ... *CFErrorRef;
|
||||
typedef ... *CFNumberRef;
|
||||
typedef ... *CFTypeRef;
|
||||
typedef ... *CFDictionaryRef;
|
||||
typedef ... *CFMutableDictionaryRef;
|
||||
typedef struct {
|
||||
...;
|
||||
} CFDictionaryKeyCallBacks;
|
||||
typedef struct {
|
||||
...;
|
||||
} CFDictionaryValueCallBacks;
|
||||
typedef struct {
|
||||
...;
|
||||
} CFRange;
|
||||
|
||||
typedef UInt32 CFStringEncoding;
|
||||
enum {
|
||||
kCFStringEncodingASCII = 0x0600
|
||||
};
|
||||
|
||||
enum {
|
||||
kCFNumberSInt8Type = 1,
|
||||
kCFNumberSInt16Type = 2,
|
||||
kCFNumberSInt32Type = 3,
|
||||
kCFNumberSInt64Type = 4,
|
||||
kCFNumberFloat32Type = 5,
|
||||
kCFNumberFloat64Type = 6,
|
||||
kCFNumberCharType = 7,
|
||||
kCFNumberShortType = 8,
|
||||
kCFNumberIntType = 9,
|
||||
kCFNumberLongType = 10,
|
||||
kCFNumberLongLongType = 11,
|
||||
kCFNumberFloatType = 12,
|
||||
kCFNumberDoubleType = 13,
|
||||
kCFNumberCFIndexType = 14,
|
||||
kCFNumberNSIntegerType = 15,
|
||||
kCFNumberCGFloatType = 16,
|
||||
kCFNumberMaxType = 16
|
||||
};
|
||||
typedef int CFNumberType;
|
||||
|
||||
const CFDictionaryKeyCallBacks kCFTypeDictionaryKeyCallBacks;
|
||||
const CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks;
|
||||
|
||||
const CFBooleanRef kCFBooleanTrue;
|
||||
const CFBooleanRef kCFBooleanFalse;
|
||||
"""
|
||||
|
||||
FUNCTIONS = """
|
||||
CFDataRef CFDataCreate(CFAllocatorRef, const UInt8 *, CFIndex);
|
||||
CFStringRef CFStringCreateWithCString(CFAllocatorRef, const char *,
|
||||
CFStringEncoding);
|
||||
CFDictionaryRef CFDictionaryCreate(CFAllocatorRef, const void **,
|
||||
const void **, CFIndex,
|
||||
const CFDictionaryKeyCallBacks *,
|
||||
const CFDictionaryValueCallBacks *);
|
||||
CFMutableDictionaryRef CFDictionaryCreateMutable(
|
||||
CFAllocatorRef,
|
||||
CFIndex,
|
||||
const CFDictionaryKeyCallBacks *,
|
||||
const CFDictionaryValueCallBacks *
|
||||
);
|
||||
void CFDictionarySetValue(CFMutableDictionaryRef, const void *, const void *);
|
||||
CFIndex CFArrayGetCount(CFArrayRef);
|
||||
const void *CFArrayGetValueAtIndex(CFArrayRef, CFIndex);
|
||||
CFIndex CFDataGetLength(CFDataRef);
|
||||
void CFDataGetBytes(CFDataRef, CFRange, UInt8 *);
|
||||
CFRange CFRangeMake(CFIndex, CFIndex);
|
||||
void CFShow(CFTypeRef);
|
||||
Boolean CFBooleanGetValue(CFBooleanRef);
|
||||
CFNumberRef CFNumberCreate(CFAllocatorRef, CFNumberType, const void *);
|
||||
void CFRelease(CFTypeRef);
|
||||
CFTypeRef CFRetain(CFTypeRef);
|
||||
"""
|
||||
|
||||
MACROS = """
|
||||
"""
|
||||
|
||||
CUSTOMIZATIONS = """
|
||||
"""
|
||||
|
||||
CONDITIONAL_NAMES = {}
|
||||
|
|
@ -101,7 +101,7 @@ MACROS = """
|
|||
"""
|
||||
|
||||
CUSTOMIZATIONS = """
|
||||
// Not defined in the public header
|
||||
/* Not defined in the public header */
|
||||
enum {
|
||||
kCCModeGCM = 11
|
||||
};
|
||||
|
|
|
|||
|
|
@ -0,0 +1,95 @@
|
|||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from __future__ import absolute_import, division, print_function
|
||||
|
||||
INCLUDES = """
|
||||
#include <Security/SecImportExport.h>
|
||||
"""
|
||||
|
||||
TYPES = """
|
||||
typedef ... *SecAccessRef;
|
||||
|
||||
CFStringRef kSecImportExportPassphrase;
|
||||
CFStringRef kSecImportExportKeychain;
|
||||
CFStringRef kSecImportExportAccess;
|
||||
|
||||
typedef uint32_t SecExternalItemType;
|
||||
enum {
|
||||
kSecItemTypeUnknown,
|
||||
kSecItemTypePrivateKey,
|
||||
kSecItemTypePublicKey,
|
||||
kSecItemTypeSessionKey,
|
||||
kSecItemTypeCertificate,
|
||||
kSecItemTypeAggregate
|
||||
};
|
||||
|
||||
|
||||
typedef uint32_t SecExternalFormat;
|
||||
enum {
|
||||
kSecFormatUnknown = 0,
|
||||
kSecFormatOpenSSL,
|
||||
kSecFormatSSH,
|
||||
kSecFormatBSAFE,
|
||||
kSecFormatRawKey,
|
||||
kSecFormatWrappedPKCS8,
|
||||
kSecFormatWrappedOpenSSL,
|
||||
kSecFormatWrappedSSH,
|
||||
kSecFormatWrappedLSH,
|
||||
kSecFormatX509Cert,
|
||||
kSecFormatPEMSequence,
|
||||
kSecFormatPKCS7,
|
||||
kSecFormatPKCS12,
|
||||
kSecFormatNetscapeCertSequence,
|
||||
kSecFormatSSHv2
|
||||
};
|
||||
|
||||
typedef uint32_t SecItemImportExportFlags;
|
||||
enum {
|
||||
kSecKeyImportOnlyOne = 0x00000001,
|
||||
kSecKeySecurePassphrase = 0x00000002,
|
||||
kSecKeyNoAccessControl = 0x00000004
|
||||
};
|
||||
typedef uint32_t SecKeyImportExportFlags;
|
||||
|
||||
typedef struct {
|
||||
/* for import and export */
|
||||
uint32_t version;
|
||||
SecKeyImportExportFlags flags;
|
||||
CFTypeRef passphrase;
|
||||
CFStringRef alertTitle;
|
||||
CFStringRef alertPrompt;
|
||||
|
||||
/* for import only */
|
||||
SecAccessRef accessRef;
|
||||
CFArrayRef keyUsage;
|
||||
|
||||
CFArrayRef keyAttributes;
|
||||
} SecItemImportExportKeyParameters;
|
||||
"""
|
||||
|
||||
FUNCTIONS = """
|
||||
OSStatus SecItemImport(CFDataRef, CFStringRef, SecExternalFormat *,
|
||||
SecExternalItemType *, SecItemImportExportFlags,
|
||||
const SecItemImportExportKeyParameters *,
|
||||
SecKeychainRef, CFArrayRef *);
|
||||
OSStatus SecPKCS12Import(CFDataRef, CFDictionaryRef, CFArrayRef *);
|
||||
"""
|
||||
|
||||
MACROS = """
|
||||
"""
|
||||
|
||||
CUSTOMIZATIONS = """
|
||||
"""
|
||||
|
||||
CONDITIONAL_NAMES = {}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from __future__ import absolute_import, division, print_function
|
||||
|
||||
INCLUDES = """
|
||||
#include <Security/SecItem.h>
|
||||
"""
|
||||
|
||||
TYPES = """
|
||||
const CFTypeRef kSecAttrKeyType;
|
||||
const CFTypeRef kSecAttrKeySizeInBits;
|
||||
const CFTypeRef kSecAttrIsPermanent;
|
||||
const CFTypeRef kSecAttrKeyTypeRSA;
|
||||
const CFTypeRef kSecAttrKeyTypeDSA;
|
||||
const CFTypeRef kSecUseKeychain;
|
||||
"""
|
||||
|
||||
FUNCTIONS = """
|
||||
"""
|
||||
|
||||
MACROS = """
|
||||
"""
|
||||
|
||||
CUSTOMIZATIONS = """
|
||||
"""
|
||||
|
||||
CONDITIONAL_NAMES = {}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from __future__ import absolute_import, division, print_function
|
||||
|
||||
INCLUDES = """
|
||||
#include <Security/SecKey.h>
|
||||
"""
|
||||
|
||||
TYPES = """
|
||||
typedef ... *SecKeyRef;
|
||||
"""
|
||||
|
||||
FUNCTIONS = """
|
||||
OSStatus SecKeyGeneratePair(CFDictionaryRef, SecKeyRef *, SecKeyRef *);
|
||||
size_t SecKeyGetBlockSize(SecKeyRef);
|
||||
"""
|
||||
|
||||
MACROS = """
|
||||
"""
|
||||
|
||||
CUSTOMIZATIONS = """
|
||||
"""
|
||||
|
||||
CONDITIONAL_NAMES = {}
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from __future__ import absolute_import, division, print_function
|
||||
|
||||
INCLUDES = """
|
||||
#include <Security/SecKeychain.h>
|
||||
"""
|
||||
|
||||
TYPES = """
|
||||
typedef ... *SecKeychainRef;
|
||||
"""
|
||||
|
||||
FUNCTIONS = """
|
||||
OSStatus SecKeychainCreate(const char *, UInt32, const void *, Boolean,
|
||||
SecAccessRef, SecKeychainRef *);
|
||||
OSStatus SecKeychainDelete(SecKeychainRef);
|
||||
"""
|
||||
|
||||
MACROS = """
|
||||
"""
|
||||
|
||||
CUSTOMIZATIONS = """
|
||||
"""
|
||||
|
||||
CONDITIONAL_NAMES = {}
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from __future__ import absolute_import, division, print_function
|
||||
|
||||
INCLUDES = """
|
||||
#include <Security/SecDigestTransform.h>
|
||||
#include <Security/SecSignVerifyTransform.h>
|
||||
#include <Security/SecEncryptTransform.h>
|
||||
"""
|
||||
|
||||
TYPES = """
|
||||
typedef ... *SecTransformRef;
|
||||
|
||||
CFStringRef kSecImportExportPassphrase;
|
||||
CFStringRef kSecImportExportKeychain;
|
||||
CFStringRef kSecImportExportAccess;
|
||||
|
||||
CFStringRef kSecEncryptionMode;
|
||||
CFStringRef kSecEncryptKey;
|
||||
CFStringRef kSecIVKey;
|
||||
CFStringRef kSecModeCBCKey;
|
||||
CFStringRef kSecModeCFBKey;
|
||||
CFStringRef kSecModeECBKey;
|
||||
CFStringRef kSecModeNoneKey;
|
||||
CFStringRef kSecModeOFBKey;
|
||||
CFStringRef kSecOAEPEncodingParametersAttributeName;
|
||||
CFStringRef kSecPaddingKey;
|
||||
CFStringRef kSecPaddingNoneKey;
|
||||
CFStringRef kSecPaddingOAEPKey;
|
||||
CFStringRef kSecPaddingPKCS1Key;
|
||||
CFStringRef kSecPaddingPKCS5Key;
|
||||
CFStringRef kSecPaddingPKCS7Key;
|
||||
|
||||
const CFStringRef kSecTransformInputAttributeName;
|
||||
const CFStringRef kSecTransformOutputAttributeName;
|
||||
const CFStringRef kSecTransformDebugAttributeName;
|
||||
const CFStringRef kSecTransformTransformName;
|
||||
const CFStringRef kSecTransformAbortAttributeName;
|
||||
|
||||
CFStringRef kSecInputIsAttributeName;
|
||||
CFStringRef kSecInputIsPlainText;
|
||||
CFStringRef kSecInputIsDigest;
|
||||
CFStringRef kSecInputIsRaw;
|
||||
|
||||
const CFStringRef kSecDigestTypeAttribute;
|
||||
const CFStringRef kSecDigestLengthAttribute;
|
||||
const CFStringRef kSecDigestMD5;
|
||||
const CFStringRef kSecDigestSHA1;
|
||||
const CFStringRef kSecDigestSHA2;
|
||||
"""
|
||||
|
||||
FUNCTIONS = """
|
||||
Boolean SecTransformSetAttribute(SecTransformRef, CFStringRef, CFTypeRef,
|
||||
CFErrorRef *);
|
||||
SecTransformRef SecDecryptTransformCreate(SecKeyRef, CFErrorRef *);
|
||||
SecTransformRef SecEncryptTransformCreate(SecKeyRef, CFErrorRef *);
|
||||
SecTransformRef SecVerifyTransformCreate(SecKeyRef, CFDataRef, CFErrorRef *);
|
||||
SecTransformRef SecSignTransformCreate(SecKeyRef, CFErrorRef *) ;
|
||||
CFTypeRef SecTransformExecute(SecTransformRef, CFErrorRef *);
|
||||
"""
|
||||
|
||||
MACROS = """
|
||||
"""
|
||||
|
||||
CUSTOMIZATIONS = """
|
||||
"""
|
||||
|
||||
CONDITIONAL_NAMES = {}
|
||||
|
|
@ -38,10 +38,18 @@ int AES_wrap_key(AES_KEY *, const unsigned char *, unsigned char *,
|
|||
const unsigned char *, unsigned int);
|
||||
int AES_unwrap_key(AES_KEY *, const unsigned char *, unsigned char *,
|
||||
const unsigned char *, unsigned int);
|
||||
|
||||
/* The ctr128_encrypt function is only useful in 0.9.8. You should use EVP for
|
||||
this in 1.0.0+. It is defined in macros because the function signature
|
||||
changed after 0.9.8 */
|
||||
void AES_ctr128_encrypt(const unsigned char *, unsigned char *,
|
||||
const size_t, const AES_KEY *,
|
||||
unsigned char[], unsigned char[], unsigned int *);
|
||||
|
||||
"""
|
||||
|
||||
CUSTOMIZATIONS = """
|
||||
// OpenSSL 0.9.8h+
|
||||
/* OpenSSL 0.9.8h+ */
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x0090808fL
|
||||
static const long Cryptography_HAS_AES_WRAP = 1;
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -141,6 +141,9 @@ ASN1_INTEGER *BN_to_ASN1_INTEGER(BIGNUM *, ASN1_INTEGER *);
|
|||
|
||||
/* These isn't a macro the arg is const on openssl 1.0.2+ */
|
||||
int ASN1_GENERALIZEDTIME_check(ASN1_GENERALIZEDTIME *);
|
||||
|
||||
/* Not a macro, const on openssl 1.0 */
|
||||
int ASN1_STRING_set_default_mask_asc(char *);
|
||||
"""
|
||||
|
||||
CUSTOMIZATIONS = """
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
|
||||
from __future__ import absolute_import, division, print_function
|
||||
|
||||
import os
|
||||
import sys
|
||||
import threading
|
||||
|
||||
|
|
@ -74,6 +75,7 @@ class Binding(object):
|
|||
"x509",
|
||||
"x509name",
|
||||
"x509v3",
|
||||
"x509_vfy"
|
||||
]
|
||||
|
||||
_locks = None
|
||||
|
|
@ -96,7 +98,8 @@ class Binding(object):
|
|||
if sys.platform != "win32":
|
||||
libraries = ["crypto", "ssl"]
|
||||
else: # pragma: no cover
|
||||
libraries = ["libeay32", "ssleay32", "advapi32"]
|
||||
link_type = os.environ.get("PYCA_WINDOWS_LINK_TYPE", "static")
|
||||
libraries = _get_windows_libraries(link_type)
|
||||
|
||||
cls.ffi, cls.lib = build_ffi(
|
||||
module_prefix=cls._module_prefix,
|
||||
|
|
@ -149,7 +152,19 @@ class Binding(object):
|
|||
lock.release()
|
||||
else:
|
||||
raise RuntimeError(
|
||||
"Unknown lock mode {0}: lock={1}, file={2}, line={3}".format(
|
||||
"Unknown lock mode {0}: lock={1}, file={2}, line={3}.".format(
|
||||
mode, n, file, line
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def _get_windows_libraries(link_type):
|
||||
if link_type == "dynamic":
|
||||
return ["libeay32", "ssleay32", "advapi32"]
|
||||
elif link_type == "static" or link_type == "":
|
||||
return ["libeay32mt", "ssleay32mt", "advapi32",
|
||||
"crypt32", "gdi32", "user32", "ws2_32"]
|
||||
else:
|
||||
raise ValueError(
|
||||
"PYCA_WINDOWS_LINK_TYPE must be 'static' or 'dynamic'"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ from __future__ import absolute_import, division, print_function
|
|||
|
||||
INCLUDES = """
|
||||
#if !defined(OPENSSL_NO_CMS) && OPENSSL_VERSION_NUMBER >= 0x0090808fL
|
||||
// The next define should really be in the OpenSSL header, but it is missing.
|
||||
// Failing to include this on Windows causes compilation failures.
|
||||
/* The next define should really be in the OpenSSL header, but it is missing.
|
||||
Failing to include this on Windows causes compilation failures. */
|
||||
#if defined(OPENSSL_SYS_WINDOWS)
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -22,6 +22,8 @@ typedef ... CONF;
|
|||
"""
|
||||
|
||||
FUNCTIONS = """
|
||||
void OPENSSL_config(const char *);
|
||||
void OPENSSL_no_config(void);
|
||||
"""
|
||||
|
||||
MACROS = """
|
||||
|
|
|
|||
|
|
@ -19,13 +19,13 @@ INCLUDES = """
|
|||
|
||||
TYPES = """
|
||||
typedef struct dh_st {
|
||||
// prime number (shared)
|
||||
/* Prime number (shared) */
|
||||
BIGNUM *p;
|
||||
// generator of Z_p (shared)
|
||||
/* Generator of Z_p (shared) */
|
||||
BIGNUM *g;
|
||||
// private DH value x
|
||||
/* Private DH value x */
|
||||
BIGNUM *priv_key;
|
||||
// public DH value g^x
|
||||
/* Public DH value g^x */
|
||||
BIGNUM *pub_key;
|
||||
...;
|
||||
} DH;
|
||||
|
|
|
|||
|
|
@ -19,15 +19,15 @@ INCLUDES = """
|
|||
|
||||
TYPES = """
|
||||
typedef struct dsa_st {
|
||||
// prime number (public)
|
||||
/* Prime number (public) */
|
||||
BIGNUM *p;
|
||||
// 160-bit subprime, q | p-1 (public)
|
||||
/* Subprime (160-bit, q | p-1, public) */
|
||||
BIGNUM *q;
|
||||
// generator of subgroup (public)
|
||||
/* Generator of subgroup (public) */
|
||||
BIGNUM *g;
|
||||
// private key x
|
||||
/* Private key x */
|
||||
BIGNUM *priv_key;
|
||||
// public key y = g^x
|
||||
/* Public key y = g^x */
|
||||
BIGNUM *pub_key;
|
||||
...;
|
||||
} DSA;
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@ static const int Cryptography_HAS_EC_1_0_1;
|
|||
static const int Cryptography_HAS_EC_NISTP_64_GCC_128;
|
||||
static const int Cryptography_HAS_EC2M;
|
||||
|
||||
static const int OPENSSL_EC_NAMED_CURVE;
|
||||
|
||||
typedef ... EC_KEY;
|
||||
typedef ... EC_GROUP;
|
||||
typedef ... EC_POINT;
|
||||
|
|
@ -61,6 +63,8 @@ int EC_GROUP_set_curve_GF2m(
|
|||
int EC_GROUP_get_curve_GF2m(
|
||||
const EC_GROUP *, BIGNUM *, BIGNUM *, BIGNUM *, BN_CTX *);
|
||||
|
||||
int EC_GROUP_get_degree(const EC_GROUP *);
|
||||
|
||||
const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *);
|
||||
const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *);
|
||||
int EC_GROUP_get_curve_name(const EC_GROUP *);
|
||||
|
|
@ -198,6 +202,7 @@ int EC_METHOD_get_field_type(const EC_METHOD *);
|
|||
CUSTOMIZATIONS = """
|
||||
#ifdef OPENSSL_NO_EC
|
||||
static const long Cryptography_HAS_EC = 0;
|
||||
|
||||
typedef void EC_KEY;
|
||||
typedef void EC_GROUP;
|
||||
typedef void EC_POINT;
|
||||
|
|
@ -208,6 +213,8 @@ typedef struct {
|
|||
} EC_builtin_curve;
|
||||
typedef long point_conversion_form_t;
|
||||
|
||||
static const int OPENSSL_EC_NAMED_CURVE = 0;
|
||||
|
||||
void (*EC_KEY_free)(EC_KEY *) = NULL;
|
||||
size_t (*EC_get_builtin_curves)(EC_builtin_curve *, size_t) = NULL;
|
||||
EC_KEY *(*EC_KEY_new_by_curve_name)(int) = NULL;
|
||||
|
|
@ -250,6 +257,8 @@ int (*EC_GROUP_set_curve_GFp)(
|
|||
int (*EC_GROUP_get_curve_GFp)(
|
||||
const EC_GROUP *, BIGNUM *, BIGNUM *, BIGNUM *, BN_CTX *);
|
||||
|
||||
int (*EC_GROUP_get_degree)(const EC_GROUP *) = NULL;
|
||||
|
||||
const EC_METHOD *(*EC_GROUP_method_of)(const EC_GROUP *) = NULL;
|
||||
const EC_POINT *(*EC_GROUP_get0_generator)(const EC_GROUP *) = NULL;
|
||||
int (*EC_GROUP_get_curve_name)(const EC_GROUP *) = NULL;
|
||||
|
|
@ -389,6 +398,7 @@ static const long Cryptography_HAS_EC2M = 1;
|
|||
|
||||
CONDITIONAL_NAMES = {
|
||||
"Cryptography_HAS_EC": [
|
||||
"OPENSSL_EC_NAMED_CURVE",
|
||||
"EC_GROUP_new",
|
||||
"EC_GROUP_free",
|
||||
"EC_GROUP_clear_free",
|
||||
|
|
@ -399,6 +409,7 @@ CONDITIONAL_NAMES = {
|
|||
"EC_GROUP_method_of",
|
||||
"EC_GROUP_get0_generator",
|
||||
"EC_GROUP_get_curve_name",
|
||||
"EC_GROUP_get_degree",
|
||||
"EC_KEY_free",
|
||||
"EC_get_builtin_curves",
|
||||
"EC_KEY_new_by_curve_name",
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ TYPES = """
|
|||
static const int Cryptography_HAS_REMOVE_THREAD_STATE;
|
||||
static const int Cryptography_HAS_098H_ERROR_CODES;
|
||||
static const int Cryptography_HAS_098C_CAMELLIA_CODES;
|
||||
static const int Cryptography_HAS_EC_CODES;
|
||||
|
||||
struct ERR_string_data_st {
|
||||
unsigned long error;
|
||||
|
|
@ -28,8 +29,8 @@ struct ERR_string_data_st {
|
|||
};
|
||||
typedef struct ERR_string_data_st ERR_STRING_DATA;
|
||||
|
||||
|
||||
static const int ERR_LIB_EVP;
|
||||
static const int ERR_LIB_EC;
|
||||
static const int ERR_LIB_PEM;
|
||||
static const int ERR_LIB_ASN1;
|
||||
static const int ERR_LIB_RSA;
|
||||
|
|
@ -135,6 +136,7 @@ static const int EVP_F_PKCS5_V2_PBE_KEYIVGEN;
|
|||
static const int EVP_F_PKCS8_SET_BROKEN;
|
||||
static const int EVP_F_RC2_MAGIC_TO_METH;
|
||||
static const int EVP_F_RC5_CTRL;
|
||||
|
||||
static const int EVP_R_AES_KEY_SETUP_FAILED;
|
||||
static const int EVP_R_ASN1_LIB;
|
||||
static const int EVP_R_BAD_BLOCK_LENGTH;
|
||||
|
|
@ -168,9 +170,14 @@ static const int EVP_R_UNSUPPORTED_CIPHER;
|
|||
static const int EVP_R_UNSUPPORTED_KEY_DERIVATION_FUNCTION;
|
||||
static const int EVP_R_UNSUPPORTED_KEYLENGTH;
|
||||
static const int EVP_R_UNSUPPORTED_SALT_TYPE;
|
||||
static const int EVP_R_UNSUPPORTED_PRIVATE_KEY_ALGORITHM;
|
||||
static const int EVP_R_WRONG_FINAL_BLOCK_LENGTH;
|
||||
static const int EVP_R_WRONG_PUBLIC_KEY_TYPE;
|
||||
|
||||
static const int EC_F_EC_GROUP_NEW_BY_CURVE_NAME;
|
||||
|
||||
static const int EC_R_UNKNOWN_GROUP;
|
||||
|
||||
static const int PEM_F_D2I_PKCS8PRIVATEKEY_BIO;
|
||||
static const int PEM_F_D2I_PKCS8PRIVATEKEY_FP;
|
||||
static const int PEM_F_DO_PK8PKEY;
|
||||
|
|
@ -283,7 +290,7 @@ typedef uint32_t CRYPTO_THREADID;
|
|||
void (*ERR_remove_thread_state)(const CRYPTO_THREADID *) = NULL;
|
||||
#endif
|
||||
|
||||
// OpenSSL 0.9.8h+
|
||||
/* OpenSSL 0.9.8h+ */
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x0090808fL
|
||||
static const long Cryptography_HAS_098H_ERROR_CODES = 1;
|
||||
#else
|
||||
|
|
@ -297,7 +304,7 @@ static const int ASN1_R_NO_MULTIPART_BODY_FAILURE = 0;
|
|||
static const int ASN1_R_NO_MULTIPART_BOUNDARY = 0;
|
||||
#endif
|
||||
|
||||
// OpenSSL 0.9.8c+
|
||||
/* OpenSSL 0.9.8c+ */
|
||||
#ifdef EVP_F_CAMELLIA_INIT_KEY
|
||||
static const long Cryptography_HAS_098C_CAMELLIA_CODES = 1;
|
||||
#else
|
||||
|
|
@ -306,6 +313,14 @@ static const int EVP_F_CAMELLIA_INIT_KEY = 0;
|
|||
static const int EVP_R_CAMELLIA_KEY_SETUP_FAILED = 0;
|
||||
#endif
|
||||
|
||||
// OpenSSL without EC. e.g. RHEL
|
||||
#ifndef OPENSSL_NO_EC
|
||||
static const long Cryptography_HAS_EC_CODES = 1;
|
||||
#else
|
||||
static const long Cryptography_HAS_EC_CODES = 0;
|
||||
static const int EC_R_UNKNOWN_GROUP = 0;
|
||||
static const int EC_F_EC_GROUP_NEW_BY_CURVE_NAME = 0;
|
||||
#endif
|
||||
"""
|
||||
|
||||
CONDITIONAL_NAMES = {
|
||||
|
|
@ -324,5 +339,9 @@ CONDITIONAL_NAMES = {
|
|||
"Cryptography_HAS_098C_CAMELLIA_CODES": [
|
||||
"EVP_F_CAMELLIA_INIT_KEY",
|
||||
"EVP_R_CAMELLIA_KEY_SETUP_FAILED"
|
||||
],
|
||||
"Cryptography_HAS_EC_CODES": [
|
||||
"EC_R_UNKNOWN_GROUP",
|
||||
"EC_F_EC_GROUP_NEW_BY_CURVE_NAME"
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -139,7 +139,8 @@ int PKCS5_PBKDF2_HMAC(const char *, int, const unsigned char *, int, int,
|
|||
|
||||
int EVP_PKEY_CTX_set_signature_md(EVP_PKEY_CTX *, const EVP_MD *);
|
||||
|
||||
// not macros but must be in this section since they're not available in 0.9.8
|
||||
/* These aren't macros, but must be in this section because they're not
|
||||
available in 0.9.8. */
|
||||
EVP_PKEY_CTX *EVP_PKEY_CTX_new(EVP_PKEY *, ENGINE *);
|
||||
EVP_PKEY_CTX *EVP_PKEY_CTX_new_id(int, ENGINE *);
|
||||
EVP_PKEY_CTX *EVP_PKEY_CTX_dup(EVP_PKEY_CTX *);
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ static const int NID_ecdsa_with_SHA512;
|
|||
static const int NID_crl_reason;
|
||||
static const int NID_pbe_WithSHA1And3_Key_TripleDES_CBC;
|
||||
static const int NID_subject_alt_name;
|
||||
static const int NID_issuer_alt_name;
|
||||
static const int NID_X9_62_c2pnb163v1;
|
||||
static const int NID_X9_62_c2pnb163v2;
|
||||
static const int NID_X9_62_c2pnb163v3;
|
||||
|
|
@ -193,7 +194,7 @@ MACROS = """
|
|||
"""
|
||||
|
||||
CUSTOMIZATIONS = """
|
||||
// OpenSSL 0.9.8g+
|
||||
/* OpenSSL 0.9.8g+ */
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x0090807fL
|
||||
static const long Cryptography_HAS_ECDSA_SHA2_NIDS = 1;
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ INCLUDES = """
|
|||
"""
|
||||
|
||||
TYPES = """
|
||||
/* Note that these will be resolved when cryptography is compiled and are NOT
|
||||
guaranteed to be the version that it actually loads. */
|
||||
static const int OPENSSL_VERSION_NUMBER;
|
||||
static const char *const OPENSSL_VERSION_TEXT;
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ int i2d_PKCS8PrivateKey_bio(BIO *, EVP_PKEY *, const EVP_CIPHER *,
|
|||
int i2d_PKCS8PrivateKey_nid_bio(BIO *, EVP_PKEY *, int,
|
||||
char *, int, pem_password_cb *, void *);
|
||||
|
||||
PKCS7 *d2i_PKCS7_bio(BIO *, PKCS7 **);
|
||||
EVP_PKEY *d2i_PKCS8PrivateKey_bio(BIO *, EVP_PKEY **, pem_password_cb *,
|
||||
void *);
|
||||
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ CUSTOMIZATIONS = """
|
|||
#if OPENSSL_VERSION_NUMBER >= 0x10000000
|
||||
static const long Cryptography_HAS_PSS_PADDING = 1;
|
||||
#else
|
||||
// see evp.py for the definition of Cryptography_HAS_PKEY_CTX
|
||||
/* see evp.py for the definition of Cryptography_HAS_PKEY_CTX */
|
||||
static const long Cryptography_HAS_PSS_PADDING = 0;
|
||||
int (*EVP_PKEY_CTX_set_rsa_padding)(EVP_PKEY_CTX *, int) = NULL;
|
||||
int (*EVP_PKEY_CTX_set_rsa_pss_saltlen)(EVP_PKEY_CTX *, int) = NULL;
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ from __future__ import absolute_import, division, print_function
|
|||
|
||||
INCLUDES = """
|
||||
#include <openssl/ssl.h>
|
||||
|
||||
typedef STACK_OF(SSL_CIPHER) Cryptography_STACK_OF_SSL_CIPHER;
|
||||
"""
|
||||
|
||||
TYPES = """
|
||||
|
|
@ -24,6 +26,7 @@ TYPES = """
|
|||
static const long Cryptography_HAS_SSL2;
|
||||
static const long Cryptography_HAS_TLSv1_1;
|
||||
static const long Cryptography_HAS_TLSv1_2;
|
||||
static const long Cryptography_HAS_SECURE_RENEGOTIATION;
|
||||
|
||||
/* Internally invented symbol to tell us if SNI is supported */
|
||||
static const long Cryptography_HAS_TLSEXT_HOSTNAME;
|
||||
|
|
@ -43,6 +46,7 @@ static const long Cryptography_HAS_SSL_SET_SSL_CTX;
|
|||
static const long Cryptography_HAS_SSL_OP_NO_TICKET;
|
||||
static const long Cryptography_HAS_NETBSD_D1_METH;
|
||||
static const long Cryptography_HAS_NEXTPROTONEG;
|
||||
static const long Cryptography_HAS_ALPN;
|
||||
|
||||
static const long SSL_FILETYPE_PEM;
|
||||
static const long SSL_FILETYPE_ASN1;
|
||||
|
|
@ -84,6 +88,8 @@ static const long SSL_OP_COOKIE_EXCHANGE;
|
|||
static const long SSL_OP_NO_TICKET;
|
||||
static const long SSL_OP_ALL;
|
||||
static const long SSL_OP_SINGLE_ECDH_USE;
|
||||
static const long SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION;
|
||||
static const long SSL_OP_LEGACY_SERVER_CONNECT;
|
||||
static const long SSL_VERIFY_PEER;
|
||||
static const long SSL_VERIFY_FAIL_IF_NO_PEER_CERT;
|
||||
static const long SSL_VERIFY_CLIENT_ONCE;
|
||||
|
|
@ -121,9 +127,6 @@ static const long SSL_MODE_ENABLE_PARTIAL_WRITE;
|
|||
static const long SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER;
|
||||
static const long SSL_MODE_AUTO_RETRY;
|
||||
static const long SSL3_RANDOM_SIZE;
|
||||
typedef ... X509_STORE_CTX;
|
||||
static const long X509_V_OK;
|
||||
static const long X509_V_ERR_APPLICATION_VERIFICATION;
|
||||
typedef ... SSL_METHOD;
|
||||
typedef struct ssl_st {
|
||||
int version;
|
||||
|
|
@ -153,6 +156,8 @@ typedef struct {
|
|||
static const long TLSEXT_NAMETYPE_host_name;
|
||||
|
||||
typedef ... SSL_CIPHER;
|
||||
typedef ... Cryptography_STACK_OF_SSL_CIPHER;
|
||||
typedef ... COMP_METHOD;
|
||||
"""
|
||||
|
||||
FUNCTIONS = """
|
||||
|
|
@ -190,6 +195,11 @@ int SSL_get_error(const SSL *, int);
|
|||
int SSL_do_handshake(SSL *);
|
||||
int SSL_shutdown(SSL *);
|
||||
const char *SSL_get_cipher_list(const SSL *, int);
|
||||
Cryptography_STACK_OF_SSL_CIPHER *SSL_get_ciphers(const SSL *);
|
||||
|
||||
const COMP_METHOD *SSL_get_current_compression(SSL *);
|
||||
const COMP_METHOD *SSL_get_current_expansion(SSL *);
|
||||
const char *SSL_COMP_get_name(const COMP_METHOD *);
|
||||
|
||||
/* context */
|
||||
void SSL_CTX_free(SSL_CTX *);
|
||||
|
|
@ -215,16 +225,6 @@ int SSL_CTX_add_client_CA(SSL_CTX *, X509 *);
|
|||
|
||||
void SSL_CTX_set_client_CA_list(SSL_CTX *, Cryptography_STACK_OF_X509_NAME *);
|
||||
|
||||
|
||||
/* X509_STORE_CTX */
|
||||
int X509_STORE_CTX_get_error(X509_STORE_CTX *);
|
||||
void X509_STORE_CTX_set_error(X509_STORE_CTX *, int);
|
||||
int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *);
|
||||
X509 *X509_STORE_CTX_get_current_cert(X509_STORE_CTX *);
|
||||
int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *, int, void *);
|
||||
void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *, int);
|
||||
|
||||
|
||||
/* SSL_SESSION */
|
||||
void SSL_SESSION_free(SSL_SESSION *);
|
||||
|
||||
|
|
@ -248,6 +248,7 @@ int SSL_want_read(const SSL *);
|
|||
int SSL_want_write(const SSL *);
|
||||
|
||||
long SSL_total_renegotiations(SSL *);
|
||||
long SSL_get_secure_renegotiation_support(SSL *);
|
||||
|
||||
/* Defined as unsigned long because SSL_OP_ALL is greater than signed 32-bit
|
||||
and Windows defines long as 32-bit. */
|
||||
|
|
@ -351,9 +352,38 @@ int SSL_select_next_proto(unsigned char **, unsigned char *,
|
|||
const unsigned char *, unsigned int);
|
||||
void SSL_get0_next_proto_negotiated(const SSL *,
|
||||
const unsigned char **, unsigned *);
|
||||
|
||||
int sk_SSL_CIPHER_num(Cryptography_STACK_OF_SSL_CIPHER *);
|
||||
SSL_CIPHER *sk_SSL_CIPHER_value(Cryptography_STACK_OF_SSL_CIPHER *, int);
|
||||
|
||||
/* ALPN APIs were introduced in OpenSSL 1.0.2. To continue to support earlier
|
||||
* versions some special handling of these is necessary.
|
||||
*/
|
||||
int SSL_CTX_set_alpn_protos(SSL_CTX *, const unsigned char*, unsigned);
|
||||
int SSL_set_alpn_protos(SSL *, const unsigned char*, unsigned);
|
||||
void SSL_CTX_set_alpn_select_cb(SSL_CTX *,
|
||||
int (*) (SSL *,
|
||||
const unsigned char **,
|
||||
unsigned char *,
|
||||
const unsigned char *,
|
||||
unsigned int,
|
||||
void *),
|
||||
void *);
|
||||
void SSL_get0_alpn_selected(const SSL *, const unsigned char **, unsigned *);
|
||||
"""
|
||||
|
||||
CUSTOMIZATIONS = """
|
||||
/** Secure renegotiation is supported in OpenSSL >= 0.9.8m
|
||||
* But some Linux distributions have back ported some features.
|
||||
*/
|
||||
#ifndef SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
|
||||
static const long Cryptography_HAS_SECURE_RENEGOTIATION = 0;
|
||||
long (*SSL_get_secure_renegotiation_support)(SSL *) = NULL;
|
||||
const long SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION = 0;
|
||||
const long SSL_OP_LEGACY_SERVER_CONNECT = 0;
|
||||
#else
|
||||
static const long Cryptography_HAS_SECURE_RENEGOTIATION = 1;
|
||||
#endif
|
||||
#ifdef OPENSSL_NO_SSL2
|
||||
static const long Cryptography_HAS_SSL2 = 0;
|
||||
SSL_METHOD* (*SSLv2_method)(void) = NULL;
|
||||
|
|
@ -426,7 +456,7 @@ static const long Cryptography_HAS_SSL_OP_NO_TICKET = 0;
|
|||
const long SSL_OP_NO_TICKET = 0;
|
||||
#endif
|
||||
|
||||
// OpenSSL 0.9.8f+
|
||||
/* OpenSSL 0.9.8f+ */
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x00908070L
|
||||
static const long Cryptography_HAS_SSL_SET_SSL_CTX = 1;
|
||||
#else
|
||||
|
|
@ -453,7 +483,7 @@ static const long Cryptography_HAS_NETBSD_D1_METH = 1;
|
|||
static const long Cryptography_HAS_NETBSD_D1_METH = 1;
|
||||
#endif
|
||||
|
||||
// Workaround for #794 caused by cffi const** bug.
|
||||
/* Workaround for #794 caused by cffi const** bug. */
|
||||
const SSL_METHOD* Cryptography_SSL_CTX_get_method(const SSL_CTX* ctx) {
|
||||
return ctx->method;
|
||||
}
|
||||
|
|
@ -488,6 +518,28 @@ void (*SSL_get0_next_proto_negotiated)(const SSL *,
|
|||
#else
|
||||
static const long Cryptography_HAS_NEXTPROTONEG = 1;
|
||||
#endif
|
||||
|
||||
/* ALPN was added in OpenSSL 1.0.2. */
|
||||
#if OPENSSL_VERSION_NUMBER < 0x10002001L
|
||||
int (*SSL_CTX_set_alpn_protos)(SSL_CTX *,
|
||||
const unsigned char*,
|
||||
unsigned) = NULL;
|
||||
int (*SSL_set_alpn_protos)(SSL *, const unsigned char*, unsigned) = NULL;
|
||||
void (*SSL_CTX_set_alpn_select_cb)(SSL_CTX *,
|
||||
int (*) (SSL *,
|
||||
const unsigned char **,
|
||||
unsigned char *,
|
||||
const unsigned char *,
|
||||
unsigned int,
|
||||
void *),
|
||||
void *) = NULL;
|
||||
void (*SSL_get0_alpn_selected)(const SSL *,
|
||||
const unsigned char **,
|
||||
unsigned *) = NULL;
|
||||
static const long Cryptography_HAS_ALPN = 0;
|
||||
#else
|
||||
static const long Cryptography_HAS_ALPN = 1;
|
||||
#endif
|
||||
"""
|
||||
|
||||
CONDITIONAL_NAMES = {
|
||||
|
|
@ -551,5 +603,18 @@ CONDITIONAL_NAMES = {
|
|||
"SSL_CTX_set_next_proto_select_cb",
|
||||
"SSL_select_next_proto",
|
||||
"SSL_get0_next_proto_negotiated",
|
||||
],
|
||||
|
||||
"Cryptography_HAS_SECURE_RENEGOTIATION": [
|
||||
"SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION",
|
||||
"SSL_OP_LEGACY_SERVER_CONNECT",
|
||||
"SSL_get_secure_renegotiation_support",
|
||||
],
|
||||
|
||||
"Cryptography_HAS_ALPN": [
|
||||
"SSL_CTX_set_alpn_protos",
|
||||
"SSL_set_alpn_protos",
|
||||
"SSL_CTX_set_alpn_select_cb",
|
||||
"SSL_get0_alpn_selected",
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,11 +24,13 @@ INCLUDES = """
|
|||
* Note that the result is an opaque type.
|
||||
*/
|
||||
typedef STACK_OF(X509) Cryptography_STACK_OF_X509;
|
||||
typedef STACK_OF(X509_CRL) Cryptography_STACK_OF_X509_CRL;
|
||||
typedef STACK_OF(X509_REVOKED) Cryptography_STACK_OF_X509_REVOKED;
|
||||
"""
|
||||
|
||||
TYPES = """
|
||||
typedef ... Cryptography_STACK_OF_X509;
|
||||
typedef ... Cryptography_STACK_OF_X509_CRL;
|
||||
typedef ... Cryptography_STACK_OF_X509_REVOKED;
|
||||
|
||||
typedef struct {
|
||||
|
|
@ -76,7 +78,6 @@ typedef struct {
|
|||
...;
|
||||
} X509;
|
||||
|
||||
typedef ... X509_STORE;
|
||||
typedef ... NETSCAPE_SPKI;
|
||||
"""
|
||||
|
||||
|
|
@ -166,12 +167,6 @@ EVP_PKEY *d2i_PUBKEY_bio(BIO *, EVP_PKEY **);
|
|||
ASN1_INTEGER *X509_get_serialNumber(X509 *);
|
||||
int X509_set_serialNumber(X509 *, ASN1_INTEGER *);
|
||||
|
||||
/* X509_STORE */
|
||||
X509_STORE *X509_STORE_new(void);
|
||||
void X509_STORE_free(X509_STORE *);
|
||||
int X509_STORE_add_cert(X509_STORE *, X509 *);
|
||||
int X509_verify_cert(X509_STORE_CTX *);
|
||||
|
||||
const char *X509_verify_cert_error_string(long);
|
||||
|
||||
const char *X509_get_default_cert_area(void);
|
||||
|
|
@ -190,7 +185,6 @@ DSA *d2i_DSA_PUBKEY(DSA **, const unsigned char **, long);
|
|||
DSA *d2i_DSAPublicKey(DSA **, const unsigned char **, long);
|
||||
DSA *d2i_DSAPrivateKey(DSA **, const unsigned char **, long);
|
||||
|
||||
|
||||
RSA *d2i_RSAPrivateKey_bio(BIO *, RSA **);
|
||||
int i2d_RSAPrivateKey_bio(BIO *, RSA *);
|
||||
RSA *d2i_RSAPublicKey_bio(BIO *, RSA **);
|
||||
|
|
@ -237,7 +231,7 @@ int i2d_DSAPrivateKey(DSA *, unsigned char **);
|
|||
int X509_CRL_set_lastUpdate(X509_CRL *, ASN1_TIME *);
|
||||
int X509_CRL_set_nextUpdate(X509_CRL *, ASN1_TIME *);
|
||||
|
||||
/* these use STACK_OF(X509_EXTENSION) in 0.9.8e. Once we drop support for
|
||||
/* These use STACK_OF(X509_EXTENSION) in 0.9.8e. Once we drop support for
|
||||
RHEL/CentOS 5 we should move these back to FUNCTIONS. */
|
||||
int X509_REQ_add_extensions(X509_REQ *, X509_EXTENSIONS *);
|
||||
X509_EXTENSIONS *X509_REQ_get_extensions(X509_REQ *);
|
||||
|
|
@ -251,7 +245,7 @@ int i2d_ECPrivateKey_bio(BIO *, EC_KEY *);
|
|||
"""
|
||||
|
||||
CUSTOMIZATIONS = """
|
||||
// OpenSSL 0.9.8e does not have this definition
|
||||
/* OpenSSL 0.9.8e does not have this definition. */
|
||||
#if OPENSSL_VERSION_NUMBER <= 0x0090805fL
|
||||
typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -0,0 +1,336 @@
|
|||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
# implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from __future__ import absolute_import, division, print_function
|
||||
|
||||
INCLUDES = """
|
||||
#include <openssl/x509_vfy.h>
|
||||
|
||||
/*
|
||||
* This is part of a work-around for the difficulty cffi has in dealing with
|
||||
* `STACK_OF(foo)` as the name of a type. We invent a new, simpler name that
|
||||
* will be an alias for this type and use the alias throughout. This works
|
||||
* together with another opaque typedef for the same name in the TYPES section.
|
||||
* Note that the result is an opaque type.
|
||||
*/
|
||||
typedef STACK_OF(ASN1_OBJECT) Cryptography_STACK_OF_ASN1_OBJECT;
|
||||
"""
|
||||
|
||||
TYPES = """
|
||||
static const long Cryptography_HAS_102_VERIFICATION_ERROR_CODES;
|
||||
static const long Cryptography_HAS_102_VERIFICATION_PARAMS;
|
||||
static const long Cryptography_HAS_X509_V_FLAG_TRUSTED_FIRST;
|
||||
static const long Cryptography_HAS_X509_V_FLAG_PARTIAL_CHAIN;
|
||||
static const long Cryptography_HAS_100_VERIFICATION_ERROR_CODES;
|
||||
static const long Cryptography_HAS_100_VERIFICATION_PARAMS;
|
||||
static const long Cryptography_HAS_X509_V_FLAG_CHECK_SS_SIGNATURE;
|
||||
|
||||
typedef ... Cryptography_STACK_OF_ASN1_OBJECT;
|
||||
|
||||
typedef ... X509_STORE;
|
||||
typedef ... X509_STORE_CTX;
|
||||
typedef ... X509_VERIFY_PARAM;
|
||||
|
||||
/* While these are defined in the source as ints, they're tagged here
|
||||
as longs, just in case they ever grow to large, such as what we saw
|
||||
with OP_ALL. */
|
||||
|
||||
/* Verification error codes */
|
||||
static const int X509_V_OK;
|
||||
static const int X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT;
|
||||
static const int X509_V_ERR_UNABLE_TO_GET_CRL;
|
||||
static const int X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE;
|
||||
static const int X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE;
|
||||
static const int X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY;
|
||||
static const int X509_V_ERR_CERT_SIGNATURE_FAILURE;
|
||||
static const int X509_V_ERR_CRL_SIGNATURE_FAILURE;
|
||||
static const int X509_V_ERR_CERT_NOT_YET_VALID;
|
||||
static const int X509_V_ERR_CERT_HAS_EXPIRED;
|
||||
static const int X509_V_ERR_CRL_NOT_YET_VALID;
|
||||
static const int X509_V_ERR_CRL_HAS_EXPIRED;
|
||||
static const int X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD;
|
||||
static const int X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD;
|
||||
static const int X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD;
|
||||
static const int X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD;
|
||||
static const int X509_V_ERR_OUT_OF_MEM;
|
||||
static const int X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT;
|
||||
static const int X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN;
|
||||
static const int X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY;
|
||||
static const int X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE;
|
||||
static const int X509_V_ERR_CERT_CHAIN_TOO_LONG;
|
||||
static const int X509_V_ERR_CERT_REVOKED;
|
||||
static const int X509_V_ERR_INVALID_CA;
|
||||
static const int X509_V_ERR_PATH_LENGTH_EXCEEDED;
|
||||
static const int X509_V_ERR_INVALID_PURPOSE;
|
||||
static const int X509_V_ERR_CERT_UNTRUSTED;
|
||||
static const int X509_V_ERR_CERT_REJECTED;
|
||||
static const int X509_V_ERR_SUBJECT_ISSUER_MISMATCH;
|
||||
static const int X509_V_ERR_AKID_SKID_MISMATCH;
|
||||
static const int X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH;
|
||||
static const int X509_V_ERR_KEYUSAGE_NO_CERTSIGN;
|
||||
static const int X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER;
|
||||
static const int X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION;
|
||||
static const int X509_V_ERR_KEYUSAGE_NO_CRL_SIGN;
|
||||
static const int X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION;
|
||||
static const int X509_V_ERR_INVALID_NON_CA;
|
||||
static const int X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED;
|
||||
static const int X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE;
|
||||
static const int X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED;
|
||||
static const int X509_V_ERR_INVALID_EXTENSION;
|
||||
static const int X509_V_ERR_INVALID_POLICY_EXTENSION;
|
||||
static const int X509_V_ERR_NO_EXPLICIT_POLICY;
|
||||
static const int X509_V_ERR_DIFFERENT_CRL_SCOPE;
|
||||
static const int X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE;
|
||||
static const int X509_V_ERR_UNNESTED_RESOURCE;
|
||||
static const int X509_V_ERR_PERMITTED_VIOLATION;
|
||||
static const int X509_V_ERR_EXCLUDED_VIOLATION;
|
||||
static const int X509_V_ERR_SUBTREE_MINMAX;
|
||||
static const int X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE;
|
||||
static const int X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX;
|
||||
static const int X509_V_ERR_UNSUPPORTED_NAME_SYNTAX;
|
||||
static const int X509_V_ERR_CRL_PATH_VALIDATION_ERROR;
|
||||
static const int X509_V_ERR_SUITE_B_INVALID_VERSION;
|
||||
static const int X509_V_ERR_SUITE_B_INVALID_ALGORITHM;
|
||||
static const int X509_V_ERR_SUITE_B_INVALID_CURVE;
|
||||
static const int X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM;
|
||||
static const int X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED;
|
||||
static const int X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256;
|
||||
static const int X509_V_ERR_HOSTNAME_MISMATCH;
|
||||
static const int X509_V_ERR_EMAIL_MISMATCH;
|
||||
static const int X509_V_ERR_IP_ADDRESS_MISMATCH;
|
||||
static const int X509_V_ERR_APPLICATION_VERIFICATION;
|
||||
|
||||
/* Verification parameters */
|
||||
static const long X509_V_FLAG_CB_ISSUER_CHECK;
|
||||
static const long X509_V_FLAG_USE_CHECK_TIME;
|
||||
static const long X509_V_FLAG_CRL_CHECK;
|
||||
static const long X509_V_FLAG_CRL_CHECK_ALL;
|
||||
static const long X509_V_FLAG_IGNORE_CRITICAL;
|
||||
static const long X509_V_FLAG_X509_STRICT;
|
||||
static const long X509_V_FLAG_ALLOW_PROXY_CERTS;
|
||||
static const long X509_V_FLAG_POLICY_CHECK;
|
||||
static const long X509_V_FLAG_EXPLICIT_POLICY;
|
||||
static const long X509_V_FLAG_INHIBIT_ANY;
|
||||
static const long X509_V_FLAG_INHIBIT_MAP;
|
||||
static const long X509_V_FLAG_NOTIFY_POLICY;
|
||||
static const long X509_V_FLAG_EXTENDED_CRL_SUPPORT;
|
||||
static const long X509_V_FLAG_USE_DELTAS;
|
||||
static const long X509_V_FLAG_CHECK_SS_SIGNATURE;
|
||||
static const long X509_V_FLAG_TRUSTED_FIRST;
|
||||
static const long X509_V_FLAG_SUITEB_128_LOS_ONLY;
|
||||
static const long X509_V_FLAG_SUITEB_192_LOS;
|
||||
static const long X509_V_FLAG_SUITEB_128_LOS;
|
||||
static const long X509_V_FLAG_PARTIAL_CHAIN;
|
||||
"""
|
||||
|
||||
FUNCTIONS = """
|
||||
int X509_verify_cert(X509_STORE_CTX *);
|
||||
|
||||
/* X509_STORE */
|
||||
X509_STORE *X509_STORE_new(void);
|
||||
void X509_STORE_free(X509_STORE *);
|
||||
int X509_STORE_add_cert(X509_STORE *, X509 *);
|
||||
|
||||
/* X509_STORE_CTX */
|
||||
X509_STORE_CTX *X509_STORE_CTX_new(void);
|
||||
void X509_STORE_CTX_cleanup(X509_STORE_CTX *);
|
||||
void X509_STORE_CTX_free(X509_STORE_CTX *);
|
||||
int X509_STORE_CTX_init(X509_STORE_CTX *, X509_STORE *, X509 *,
|
||||
Cryptography_STACK_OF_X509 *);
|
||||
void X509_STORE_CTX_trusted_stack(X509_STORE_CTX *,
|
||||
Cryptography_STACK_OF_X509 *);
|
||||
void X509_STORE_CTX_set_cert(X509_STORE_CTX *, X509 *);
|
||||
void X509_STORE_CTX_set_chain(X509_STORE_CTX *,Cryptography_STACK_OF_X509 *);
|
||||
X509_VERIFY_PARAM *X509_STORE_CTX_get0_param(X509_STORE_CTX *);
|
||||
void X509_STORE_CTX_set0_param(X509_STORE_CTX *, X509_VERIFY_PARAM *);
|
||||
int X509_STORE_CTX_set_default(X509_STORE_CTX *, const char *);
|
||||
void X509_STORE_CTX_set_verify_cb(X509_STORE_CTX *,
|
||||
int (*)(int, X509_STORE_CTX *));
|
||||
Cryptography_STACK_OF_X509 *X509_STORE_CTX_get_chain(X509_STORE_CTX *);
|
||||
Cryptography_STACK_OF_X509 *X509_STORE_CTX_get1_chain(X509_STORE_CTX *);
|
||||
int X509_STORE_CTX_get_error(X509_STORE_CTX *);
|
||||
void X509_STORE_CTX_set_error(X509_STORE_CTX *, int);
|
||||
int X509_STORE_CTX_get_error_depth(X509_STORE_CTX *);
|
||||
X509 *X509_STORE_CTX_get_current_cert(X509_STORE_CTX *);
|
||||
int X509_STORE_CTX_set_ex_data(X509_STORE_CTX *, int, void *);
|
||||
void *X509_STORE_CTX_get_ex_data(X509_STORE_CTX *, int);
|
||||
|
||||
/* X509_VERIFY_PARAM */
|
||||
X509_VERIFY_PARAM *X509_VERIFY_PARAM_new(void);
|
||||
int X509_VERIFY_PARAM_set_flags(X509_VERIFY_PARAM *, unsigned long);
|
||||
int X509_VERIFY_PARAM_clear_flags(X509_VERIFY_PARAM *, unsigned long);
|
||||
unsigned long X509_VERIFY_PARAM_get_flags(X509_VERIFY_PARAM *);
|
||||
int X509_VERIFY_PARAM_set_purpose(X509_VERIFY_PARAM *, int);
|
||||
int X509_VERIFY_PARAM_set_trust(X509_VERIFY_PARAM *, int);
|
||||
void X509_VERIFY_PARAM_set_time(X509_VERIFY_PARAM *, time_t);
|
||||
int X509_VERIFY_PARAM_add0_policy(X509_VERIFY_PARAM *, ASN1_OBJECT *);
|
||||
int X509_VERIFY_PARAM_set1_policies(X509_VERIFY_PARAM *,
|
||||
Cryptography_STACK_OF_ASN1_OBJECT *);
|
||||
void X509_VERIFY_PARAM_set_depth(X509_VERIFY_PARAM *, int);
|
||||
int X509_VERIFY_PARAM_get_depth(const X509_VERIFY_PARAM *);
|
||||
"""
|
||||
|
||||
MACROS = """
|
||||
/* X509_STORE_CTX */
|
||||
void X509_STORE_CTX_set0_crls(X509_STORE_CTX *,
|
||||
Cryptography_STACK_OF_X509_CRL *);
|
||||
|
||||
/* X509_VERIFY_PARAM */
|
||||
int X509_VERIFY_PARAM_set1_host(X509_VERIFY_PARAM *, const char *,
|
||||
size_t);
|
||||
void X509_VERIFY_PARAM_set_hostflags(X509_VERIFY_PARAM *, unsigned int);
|
||||
int X509_VERIFY_PARAM_set1_email(X509_VERIFY_PARAM *, const char *,
|
||||
size_t);
|
||||
int X509_VERIFY_PARAM_set1_ip(X509_VERIFY_PARAM *, const unsigned char *,
|
||||
size_t);
|
||||
int X509_VERIFY_PARAM_set1_ip_asc(X509_VERIFY_PARAM *, const char *);
|
||||
"""
|
||||
|
||||
CUSTOMIZATIONS = """
|
||||
/* OpenSSL 1.0.2+ verification error codes */
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x10002000L
|
||||
static const long Cryptography_HAS_102_VERIFICATION_ERROR_CODES = 1;
|
||||
#else
|
||||
static const long Cryptography_HAS_102_VERIFICATION_ERROR_CODES = 0;
|
||||
static const long X509_V_ERR_SUITE_B_INVALID_VERSION = 0;
|
||||
static const long X509_V_ERR_SUITE_B_INVALID_ALGORITHM = 0;
|
||||
static const long X509_V_ERR_SUITE_B_INVALID_CURVE = 0;
|
||||
static const long X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM = 0;
|
||||
static const long X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED = 0;
|
||||
static const long X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256 = 0;
|
||||
static const long X509_V_ERR_HOSTNAME_MISMATCH = 0;
|
||||
static const long X509_V_ERR_EMAIL_MISMATCH = 0;
|
||||
static const long X509_V_ERR_IP_ADDRESS_MISMATCH = 0;
|
||||
#endif
|
||||
|
||||
/* OpenSSL 1.0.2+ verification parameters */
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x10002000L
|
||||
static const long Cryptography_HAS_102_VERIFICATION_PARAMS = 1;
|
||||
#else
|
||||
static const long Cryptography_HAS_102_VERIFICATION_PARAMS = 0;
|
||||
/* X509_V_FLAG_TRUSTED_FIRST is also new in 1.0.2+, but it is added separately
|
||||
below because it shows up in some earlier 3rd party OpenSSL packages. */
|
||||
static const long X509_V_FLAG_SUITEB_128_LOS_ONLY = 0;
|
||||
static const long X509_V_FLAG_SUITEB_192_LOS = 0;
|
||||
static const long X509_V_FLAG_SUITEB_128_LOS = 0;
|
||||
|
||||
int (*X509_VERIFY_PARAM_set1_host)(X509_VERIFY_PARAM *, const char *,
|
||||
size_t) = NULL;
|
||||
int (*X509_VERIFY_PARAM_set1_email)(X509_VERIFY_PARAM *, const char *,
|
||||
size_t) = NULL;
|
||||
int (*X509_VERIFY_PARAM_set1_ip)(X509_VERIFY_PARAM *, const unsigned char *,
|
||||
size_t) = NULL;
|
||||
int (*X509_VERIFY_PARAM_set1_ip_asc)(X509_VERIFY_PARAM *, const char *) = NULL;
|
||||
void (*X509_VERIFY_PARAM_set_hostflags)(X509_VERIFY_PARAM *,
|
||||
unsigned int) = NULL;
|
||||
#endif
|
||||
|
||||
/* OpenSSL 1.0.2+ or Solaris's backport */
|
||||
#ifdef X509_V_FLAG_PARTIAL_CHAIN
|
||||
static const long Cryptography_HAS_X509_V_FLAG_PARTIAL_CHAIN = 1;
|
||||
#else
|
||||
static const long Cryptography_HAS_X509_V_FLAG_PARTIAL_CHAIN = 0;
|
||||
static const long X509_V_FLAG_PARTIAL_CHAIN = 0;
|
||||
#endif
|
||||
|
||||
/* OpenSSL 1.0.2+, *or* Fedora 20's flavor of OpenSSL 1.0.1e... */
|
||||
#ifdef X509_V_FLAG_TRUSTED_FIRST
|
||||
static const long Cryptography_HAS_X509_V_FLAG_TRUSTED_FIRST = 1;
|
||||
#else
|
||||
static const long Cryptography_HAS_X509_V_FLAG_TRUSTED_FIRST = 0;
|
||||
static const long X509_V_FLAG_TRUSTED_FIRST = 0;
|
||||
#endif
|
||||
|
||||
/* OpenSSL 1.0.0+ verification error codes */
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
|
||||
static const long Cryptography_HAS_100_VERIFICATION_ERROR_CODES = 1;
|
||||
#else
|
||||
static const long Cryptography_HAS_100_VERIFICATION_ERROR_CODES = 0;
|
||||
static const long X509_V_ERR_DIFFERENT_CRL_SCOPE = 0;
|
||||
static const long X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE = 0;
|
||||
static const long X509_V_ERR_PERMITTED_VIOLATION = 0;
|
||||
static const long X509_V_ERR_EXCLUDED_VIOLATION = 0;
|
||||
static const long X509_V_ERR_SUBTREE_MINMAX = 0;
|
||||
static const long X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE = 0;
|
||||
static const long X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX = 0;
|
||||
static const long X509_V_ERR_UNSUPPORTED_NAME_SYNTAX = 0;
|
||||
static const long X509_V_ERR_CRL_PATH_VALIDATION_ERROR = 0;
|
||||
#endif
|
||||
|
||||
/* OpenSSL 1.0.0+ verification parameters */
|
||||
#if OPENSSL_VERSION_NUMBER >= 0x10000000L
|
||||
static const long Cryptography_HAS_100_VERIFICATION_PARAMS = 1;
|
||||
#else
|
||||
static const long Cryptography_HAS_100_VERIFICATION_PARAMS = 0;
|
||||
static const long X509_V_FLAG_EXTENDED_CRL_SUPPORT = 0;
|
||||
static const long X509_V_FLAG_USE_DELTAS = 0;
|
||||
#endif
|
||||
|
||||
/* OpenSSL 0.9.8recent+ */
|
||||
#ifdef X509_V_FLAG_CHECK_SS_SIGNATURE
|
||||
static const long Cryptography_HAS_X509_V_FLAG_CHECK_SS_SIGNATURE = 1;
|
||||
#else
|
||||
static const long Cryptography_HAS_X509_V_FLAG_CHECK_SS_SIGNATURE = 0;
|
||||
static const long X509_V_FLAG_CHECK_SS_SIGNATURE = 0;
|
||||
#endif
|
||||
"""
|
||||
|
||||
CONDITIONAL_NAMES = {
|
||||
"Cryptography_HAS_102_VERIFICATION_ERROR_CODES": [
|
||||
'X509_V_ERR_SUITE_B_INVALID_VERSION',
|
||||
'X509_V_ERR_SUITE_B_INVALID_ALGORITHM',
|
||||
'X509_V_ERR_SUITE_B_INVALID_CURVE',
|
||||
'X509_V_ERR_SUITE_B_INVALID_SIGNATURE_ALGORITHM',
|
||||
'X509_V_ERR_SUITE_B_LOS_NOT_ALLOWED',
|
||||
'X509_V_ERR_SUITE_B_CANNOT_SIGN_P_384_WITH_P_256',
|
||||
'X509_V_ERR_HOSTNAME_MISMATCH',
|
||||
'X509_V_ERR_EMAIL_MISMATCH',
|
||||
'X509_V_ERR_IP_ADDRESS_MISMATCH'
|
||||
],
|
||||
"Cryptography_HAS_102_VERIFICATION_PARAMS": [
|
||||
"X509_V_FLAG_SUITEB_128_LOS_ONLY",
|
||||
"X509_V_FLAG_SUITEB_192_LOS",
|
||||
"X509_V_FLAG_SUITEB_128_LOS",
|
||||
"X509_VERIFY_PARAM_set1_host",
|
||||
"X509_VERIFY_PARAM_set1_email",
|
||||
"X509_VERIFY_PARAM_set1_ip",
|
||||
"X509_VERIFY_PARAM_set1_ip_asc",
|
||||
"X509_VERIFY_PARAM_set_hostflags",
|
||||
],
|
||||
"Cryptography_HAS_X509_V_FLAG_TRUSTED_FIRST": [
|
||||
"X509_V_FLAG_TRUSTED_FIRST",
|
||||
],
|
||||
"Cryptography_HAS_X509_V_FLAG_PARTIAL_CHAIN": [
|
||||
"X509_V_FLAG_PARTIAL_CHAIN",
|
||||
],
|
||||
"Cryptography_HAS_100_VERIFICATION_ERROR_CODES": [
|
||||
'X509_V_ERR_DIFFERENT_CRL_SCOPE',
|
||||
'X509_V_ERR_UNSUPPORTED_EXTENSION_FEATURE',
|
||||
'X509_V_ERR_UNNESTED_RESOURCE',
|
||||
'X509_V_ERR_PERMITTED_VIOLATION',
|
||||
'X509_V_ERR_EXCLUDED_VIOLATION',
|
||||
'X509_V_ERR_SUBTREE_MINMAX',
|
||||
'X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE',
|
||||
'X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX',
|
||||
'X509_V_ERR_UNSUPPORTED_NAME_SYNTAX',
|
||||
'X509_V_ERR_CRL_PATH_VALIDATION_ERROR',
|
||||
],
|
||||
"Cryptography_HAS_100_VERIFICATION_PARAMS": [
|
||||
"Cryptography_HAS_100_VERIFICATION_PARAMS",
|
||||
"X509_V_FLAG_EXTENDED_CRL_SUPPORT",
|
||||
"X509_V_FLAG_USE_DELTAS",
|
||||
],
|
||||
"Cryptography_HAS_X509_V_FLAG_CHECK_SS_SIGNATURE": [
|
||||
"X509_V_FLAG_CHECK_SS_SIGNATURE",
|
||||
]
|
||||
}
|
||||
|
|
@ -82,6 +82,8 @@ FUNCTIONS = """
|
|||
void X509V3_set_ctx(X509V3_CTX *, X509 *, X509 *, X509_REQ *, X509_CRL *, int);
|
||||
X509_EXTENSION *X509V3_EXT_nconf(CONF *, X509V3_CTX *, char *, char *);
|
||||
int GENERAL_NAME_print(BIO *, GENERAL_NAME *);
|
||||
void GENERAL_NAMES_free(GENERAL_NAMES *);
|
||||
void *X509V3_EXT_d2i(X509_EXTENSION *);
|
||||
"""
|
||||
|
||||
MACROS = """
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue