rugged 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +1 -0
- data/README.md +1 -1
- data/ext/rugged/rugged.c +7 -4
- data/ext/rugged/rugged_object.c +1 -1
- data/ext/rugged/rugged_repo.c +3 -3
- data/lib/rugged/repository.rb +2 -2
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +11 -6
- data/vendor/libgit2/COPYING +109 -1
- data/vendor/libgit2/cmake/Findfutimens.cmake +14 -0
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +4 -0
- data/vendor/libgit2/cmake/SelectHashes.cmake +1 -0
- data/vendor/libgit2/deps/chromium-zlib/CMakeLists.txt +101 -0
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +18 -5
- data/vendor/libgit2/deps/ntlmclient/compat.h +0 -34
- data/vendor/libgit2/deps/ntlmclient/crypt.h +14 -9
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +20 -20
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +3 -3
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +37 -36
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +4 -3
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +178 -51
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +74 -5
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +156 -124
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +13 -9
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +16 -3
- data/vendor/libgit2/deps/ntlmclient/unicode.h +10 -4
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +16 -27
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.h +20 -0
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +28 -52
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.h +22 -0
- data/vendor/libgit2/deps/ntlmclient/util.c +15 -1
- data/vendor/libgit2/deps/ntlmclient/util.h +2 -1
- data/vendor/libgit2/include/git2/apply.h +2 -0
- data/vendor/libgit2/include/git2/attr.h +89 -0
- data/vendor/libgit2/include/git2/blame.h +93 -42
- data/vendor/libgit2/include/git2/blob.h +31 -3
- data/vendor/libgit2/include/git2/branch.h +25 -0
- data/vendor/libgit2/include/git2/cert.h +42 -5
- data/vendor/libgit2/include/git2/checkout.h +28 -12
- data/vendor/libgit2/include/git2/commit.h +35 -19
- data/vendor/libgit2/include/git2/common.h +19 -4
- data/vendor/libgit2/include/git2/config.h +1 -1
- data/vendor/libgit2/include/git2/deprecated.h +206 -6
- data/vendor/libgit2/include/git2/diff.h +35 -20
- data/vendor/libgit2/include/git2/errors.h +6 -6
- data/vendor/libgit2/include/git2/filter.h +57 -17
- data/vendor/libgit2/include/git2/graph.h +20 -2
- data/vendor/libgit2/include/git2/index.h +3 -3
- data/vendor/libgit2/include/git2/indexer.h +2 -1
- data/vendor/libgit2/include/git2/odb.h +44 -20
- data/vendor/libgit2/include/git2/patch.h +8 -0
- data/vendor/libgit2/include/git2/rebase.h +25 -1
- data/vendor/libgit2/include/git2/refs.h +9 -5
- data/vendor/libgit2/include/git2/remote.h +59 -6
- data/vendor/libgit2/include/git2/repository.h +95 -52
- data/vendor/libgit2/include/git2/revparse.h +5 -5
- data/vendor/libgit2/include/git2/status.h +115 -59
- data/vendor/libgit2/include/git2/submodule.h +9 -0
- data/vendor/libgit2/include/git2/sys/commit_graph.h +174 -0
- data/vendor/libgit2/include/git2/sys/filter.h +49 -28
- data/vendor/libgit2/include/git2/sys/midx.h +74 -0
- data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -0
- data/vendor/libgit2/include/git2/sys/transport.h +1 -0
- data/vendor/libgit2/include/git2/tag.h +12 -0
- data/vendor/libgit2/include/git2/transport.h +1 -1
- data/vendor/libgit2/include/git2/tree.h +2 -14
- data/vendor/libgit2/include/git2/types.h +9 -0
- data/vendor/libgit2/include/git2/version.h +3 -3
- data/vendor/libgit2/include/git2/worktree.h +1 -0
- data/vendor/libgit2/src/CMakeLists.txt +25 -4
- data/vendor/libgit2/src/alloc.c +21 -8
- data/vendor/libgit2/src/allocators/failalloc.c +92 -0
- data/vendor/libgit2/src/allocators/failalloc.h +23 -0
- data/vendor/libgit2/src/allocators/stdalloc.c +41 -10
- data/vendor/libgit2/src/allocators/win32_leakcheck.c +118 -0
- data/vendor/libgit2/src/allocators/{win32_crtdbg.h → win32_leakcheck.h} +3 -3
- data/vendor/libgit2/src/annotated_commit.c +21 -9
- data/vendor/libgit2/src/apply.c +16 -7
- data/vendor/libgit2/src/array.h +11 -11
- data/vendor/libgit2/src/attr.c +181 -74
- data/vendor/libgit2/src/attr_file.c +84 -39
- data/vendor/libgit2/src/attr_file.h +32 -11
- data/vendor/libgit2/src/attrcache.c +42 -37
- data/vendor/libgit2/src/attrcache.h +4 -5
- data/vendor/libgit2/src/blame.c +26 -15
- data/vendor/libgit2/src/blob.c +44 -24
- data/vendor/libgit2/src/branch.c +69 -17
- data/vendor/libgit2/src/buffer.c +334 -25
- data/vendor/libgit2/src/buffer.h +153 -2
- data/vendor/libgit2/src/cache.c +2 -2
- data/vendor/libgit2/src/cache.h +7 -7
- data/vendor/libgit2/src/cc-compat.h +10 -2
- data/vendor/libgit2/src/checkout.c +48 -26
- data/vendor/libgit2/src/cherrypick.c +6 -2
- data/vendor/libgit2/src/clone.c +26 -11
- data/vendor/libgit2/src/commit.c +41 -28
- data/vendor/libgit2/src/commit_graph.c +1209 -0
- data/vendor/libgit2/src/commit_graph.h +162 -0
- data/vendor/libgit2/src/commit_list.c +46 -0
- data/vendor/libgit2/src/commit_list.h +2 -0
- data/vendor/libgit2/src/common.h +25 -2
- data/vendor/libgit2/src/config.c +37 -15
- data/vendor/libgit2/src/config_cache.c +9 -4
- data/vendor/libgit2/src/config_file.c +16 -8
- data/vendor/libgit2/src/config_parse.c +4 -6
- data/vendor/libgit2/src/crlf.c +16 -6
- data/vendor/libgit2/src/date.c +4 -3
- data/vendor/libgit2/src/delta.c +1 -1
- data/vendor/libgit2/src/describe.c +6 -3
- data/vendor/libgit2/src/diff.c +11 -8
- data/vendor/libgit2/src/diff_driver.c +21 -17
- data/vendor/libgit2/src/diff_file.c +2 -6
- data/vendor/libgit2/src/diff_generate.c +46 -17
- data/vendor/libgit2/src/diff_print.c +19 -6
- data/vendor/libgit2/src/diff_stats.c +7 -5
- data/vendor/libgit2/src/diff_tform.c +11 -10
- data/vendor/libgit2/src/diff_xdiff.c +4 -2
- data/vendor/libgit2/src/diff_xdiff.h +1 -1
- data/vendor/libgit2/src/errors.c +24 -19
- data/vendor/libgit2/src/features.h.in +5 -1
- data/vendor/libgit2/src/fetch.c +5 -2
- data/vendor/libgit2/src/fetchhead.c +8 -4
- data/vendor/libgit2/src/filebuf.c +9 -7
- data/vendor/libgit2/src/filter.c +206 -110
- data/vendor/libgit2/src/filter.h +24 -5
- data/vendor/libgit2/src/futils.c +5 -5
- data/vendor/libgit2/src/futils.h +1 -1
- data/vendor/libgit2/src/graph.c +64 -9
- data/vendor/libgit2/src/hash/sha1/collisiondetect.c +3 -3
- data/vendor/libgit2/src/hash/sha1/common_crypto.c +3 -3
- data/vendor/libgit2/src/hash/sha1/generic.h +1 -1
- data/vendor/libgit2/src/hash/sha1/mbedtls.c +12 -12
- data/vendor/libgit2/src/hash/sha1/openssl.c +3 -3
- data/vendor/libgit2/src/hash/sha1/sha1dc/sha1.c +0 -2
- data/vendor/libgit2/src/hash/sha1/win32.c +15 -11
- data/vendor/libgit2/src/hash.c +16 -13
- data/vendor/libgit2/src/hash.h +1 -1
- data/vendor/libgit2/src/hashsig.c +23 -10
- data/vendor/libgit2/src/ident.c +13 -3
- data/vendor/libgit2/src/ignore.c +35 -19
- data/vendor/libgit2/src/index.c +112 -75
- data/vendor/libgit2/src/index.h +1 -1
- data/vendor/libgit2/src/indexer.c +50 -32
- data/vendor/libgit2/src/integer.h +79 -2
- data/vendor/libgit2/src/iterator.c +36 -24
- data/vendor/libgit2/src/iterator.h +1 -1
- data/vendor/libgit2/src/khash.h +2 -11
- data/vendor/libgit2/src/{settings.c → libgit2.c} +117 -50
- data/vendor/libgit2/src/libgit2.h +15 -0
- data/vendor/libgit2/src/mailmap.c +23 -10
- data/vendor/libgit2/src/map.h +3 -3
- data/vendor/libgit2/src/merge.c +75 -32
- data/vendor/libgit2/src/merge.h +2 -1
- data/vendor/libgit2/src/merge_driver.c +19 -13
- data/vendor/libgit2/src/merge_file.c +11 -3
- data/vendor/libgit2/src/message.c +3 -1
- data/vendor/libgit2/src/midx.c +471 -10
- data/vendor/libgit2/src/midx.h +28 -1
- data/vendor/libgit2/src/mwindow.c +106 -60
- data/vendor/libgit2/src/mwindow.h +3 -3
- data/vendor/libgit2/src/net.c +127 -3
- data/vendor/libgit2/src/net.h +16 -2
- data/vendor/libgit2/src/netops.c +6 -4
- data/vendor/libgit2/src/netops.h +2 -2
- data/vendor/libgit2/src/notes.c +10 -10
- data/vendor/libgit2/src/object.c +22 -14
- data/vendor/libgit2/src/odb.c +289 -51
- data/vendor/libgit2/src/odb.h +16 -2
- data/vendor/libgit2/src/odb_loose.c +28 -18
- data/vendor/libgit2/src/odb_mempack.c +1 -1
- data/vendor/libgit2/src/odb_pack.c +391 -114
- data/vendor/libgit2/src/oid.c +5 -4
- data/vendor/libgit2/src/pack-objects.c +54 -48
- data/vendor/libgit2/src/pack.c +339 -125
- data/vendor/libgit2/src/pack.h +25 -7
- data/vendor/libgit2/src/patch.c +14 -7
- data/vendor/libgit2/src/patch_generate.c +2 -2
- data/vendor/libgit2/src/patch_parse.c +2 -1
- data/vendor/libgit2/src/path.c +98 -53
- data/vendor/libgit2/src/path.h +79 -6
- data/vendor/libgit2/src/pathspec.c +8 -8
- data/vendor/libgit2/src/pool.c +13 -7
- data/vendor/libgit2/src/posix.c +43 -12
- data/vendor/libgit2/src/posix.h +9 -0
- data/vendor/libgit2/src/reader.c +10 -6
- data/vendor/libgit2/src/rebase.c +93 -49
- data/vendor/libgit2/src/refdb.c +30 -13
- data/vendor/libgit2/src/refdb_fs.c +125 -71
- data/vendor/libgit2/src/reflog.c +19 -14
- data/vendor/libgit2/src/refs.c +91 -43
- data/vendor/libgit2/src/refs.h +1 -1
- data/vendor/libgit2/src/refspec.c +80 -44
- data/vendor/libgit2/src/remote.c +281 -105
- data/vendor/libgit2/src/remote.h +2 -1
- data/vendor/libgit2/src/repository.c +191 -118
- data/vendor/libgit2/src/repository.h +13 -2
- data/vendor/libgit2/src/reset.c +7 -6
- data/vendor/libgit2/src/revert.c +6 -2
- data/vendor/libgit2/src/revparse.c +14 -9
- data/vendor/libgit2/src/revwalk.c +32 -15
- data/vendor/libgit2/src/runtime.c +162 -0
- data/vendor/libgit2/src/runtime.h +62 -0
- data/vendor/libgit2/src/settings.h +11 -0
- data/vendor/libgit2/src/signature.c +6 -5
- data/vendor/libgit2/src/sortedcache.h +10 -8
- data/vendor/libgit2/src/stash.c +3 -1
- data/vendor/libgit2/src/status.c +7 -4
- data/vendor/libgit2/src/strarray.c +2 -1
- data/vendor/libgit2/src/streams/mbedtls.c +14 -17
- data/vendor/libgit2/src/streams/mbedtls.h +1 -1
- data/vendor/libgit2/src/streams/openssl.c +101 -201
- data/vendor/libgit2/src/streams/openssl.h +9 -1
- data/vendor/libgit2/src/streams/openssl_dynamic.c +309 -0
- data/vendor/libgit2/src/streams/openssl_dynamic.h +348 -0
- data/vendor/libgit2/src/streams/openssl_legacy.c +203 -0
- data/vendor/libgit2/src/streams/openssl_legacy.h +63 -0
- data/vendor/libgit2/src/streams/registry.c +5 -6
- data/vendor/libgit2/src/streams/socket.c +6 -2
- data/vendor/libgit2/src/streams/stransport.c +6 -3
- data/vendor/libgit2/src/streams/tls.c +5 -3
- data/vendor/libgit2/src/submodule.c +128 -62
- data/vendor/libgit2/src/submodule.h +9 -9
- data/vendor/libgit2/src/sysdir.c +4 -6
- data/vendor/libgit2/src/tag.c +47 -11
- data/vendor/libgit2/src/thread.c +140 -0
- data/vendor/libgit2/src/thread.h +479 -0
- data/vendor/libgit2/src/threadstate.c +83 -0
- data/vendor/libgit2/src/threadstate.h +24 -0
- data/vendor/libgit2/src/trace.c +2 -2
- data/vendor/libgit2/src/trace.h +17 -13
- data/vendor/libgit2/src/transaction.c +19 -8
- data/vendor/libgit2/src/transport.c +3 -3
- data/vendor/libgit2/src/transports/auth.c +1 -1
- data/vendor/libgit2/src/transports/auth_negotiate.c +11 -4
- data/vendor/libgit2/src/transports/auth_ntlm.c +10 -6
- data/vendor/libgit2/src/transports/credential.c +15 -7
- data/vendor/libgit2/src/transports/git.c +1 -3
- data/vendor/libgit2/src/transports/http.c +19 -17
- data/vendor/libgit2/src/transports/http.h +1 -0
- data/vendor/libgit2/src/transports/httpclient.c +62 -30
- data/vendor/libgit2/src/transports/httpclient.h +1 -1
- data/vendor/libgit2/src/transports/local.c +3 -3
- data/vendor/libgit2/src/transports/smart.c +12 -7
- data/vendor/libgit2/src/transports/smart.h +1 -1
- data/vendor/libgit2/src/transports/smart_protocol.c +11 -5
- data/vendor/libgit2/src/transports/ssh.c +51 -17
- data/vendor/libgit2/src/transports/winhttp.c +138 -81
- data/vendor/libgit2/src/tree.c +100 -77
- data/vendor/libgit2/src/tree.h +1 -0
- data/vendor/libgit2/src/tsort.c +0 -2
- data/vendor/libgit2/src/unix/map.c +3 -1
- data/vendor/libgit2/src/unix/posix.h +3 -0
- data/vendor/libgit2/src/unix/pthread.h +2 -1
- data/vendor/libgit2/src/utf8.c +150 -0
- data/vendor/libgit2/src/utf8.h +52 -0
- data/vendor/libgit2/src/util.c +53 -129
- data/vendor/libgit2/src/util.h +33 -39
- data/vendor/libgit2/src/vector.c +23 -19
- data/vendor/libgit2/src/vector.h +4 -2
- data/vendor/libgit2/src/win32/findfile.c +4 -2
- data/vendor/libgit2/src/win32/map.c +1 -1
- data/vendor/libgit2/src/win32/msvc-compat.h +9 -1
- data/vendor/libgit2/src/win32/path_w32.c +22 -24
- data/vendor/libgit2/src/win32/path_w32.h +0 -1
- data/vendor/libgit2/src/win32/posix_w32.c +77 -1
- data/vendor/libgit2/src/win32/precompiled.h +0 -1
- data/vendor/libgit2/src/win32/reparse.h +4 -4
- data/vendor/libgit2/src/win32/thread.c +24 -15
- data/vendor/libgit2/src/win32/thread.h +1 -1
- data/vendor/libgit2/src/win32/w32_buffer.c +3 -3
- data/vendor/libgit2/src/win32/w32_common.h +18 -9
- data/vendor/libgit2/src/win32/{w32_crtdbg_stacktrace.c → w32_leakcheck.c} +269 -33
- data/vendor/libgit2/src/win32/w32_leakcheck.h +222 -0
- data/vendor/libgit2/src/win32/w32_util.h +6 -6
- data/vendor/libgit2/src/worktree.c +32 -14
- data/vendor/libgit2/src/zstream.c +1 -1
- metadata +32 -16
- data/vendor/libgit2/src/allocators/win32_crtdbg.c +0 -118
- data/vendor/libgit2/src/buf_text.c +0 -316
- data/vendor/libgit2/src/buf_text.h +0 -122
- data/vendor/libgit2/src/global.c +0 -363
- data/vendor/libgit2/src/global.h +0 -41
- data/vendor/libgit2/src/thread-utils.c +0 -58
- data/vendor/libgit2/src/thread-utils.h +0 -364
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -127
- data/vendor/libgit2/src/win32/w32_stack.c +0 -188
- data/vendor/libgit2/src/win32/w32_stack.h +0 -140
@@ -0,0 +1,309 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
3
|
+
*
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
6
|
+
*/
|
7
|
+
|
8
|
+
#include "streams/openssl.h"
|
9
|
+
#include "streams/openssl_dynamic.h"
|
10
|
+
|
11
|
+
#if defined(GIT_OPENSSL) && defined(GIT_OPENSSL_DYNAMIC)
|
12
|
+
|
13
|
+
#include "runtime.h"
|
14
|
+
|
15
|
+
#include <dlfcn.h>
|
16
|
+
|
17
|
+
unsigned char *(*ASN1_STRING_data)(ASN1_STRING *x);
|
18
|
+
const unsigned char *(*ASN1_STRING_get0_data)(const ASN1_STRING *x);
|
19
|
+
int (*ASN1_STRING_length)(const ASN1_STRING *x);
|
20
|
+
int (*ASN1_STRING_to_UTF8)(unsigned char **out, const ASN1_STRING *in);
|
21
|
+
int (*ASN1_STRING_type)(const ASN1_STRING *x);
|
22
|
+
|
23
|
+
void *(*BIO_get_data)(BIO *a);
|
24
|
+
int (*BIO_get_new_index)(void);
|
25
|
+
int (*OPENSSL_init_ssl)(uint64_t opts, const void *settings);
|
26
|
+
void (*BIO_meth_free)(BIO_METHOD *biom);
|
27
|
+
int (*BIO_meth_set_create)(BIO_METHOD *biom, int (*create) (BIO *));
|
28
|
+
int (*BIO_meth_set_ctrl)(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *));
|
29
|
+
int (*BIO_meth_set_destroy)(BIO_METHOD *biom, int (*destroy) (BIO *));
|
30
|
+
int (*BIO_meth_set_gets)(BIO_METHOD *biom, int (*gets) (BIO *, char *, int));
|
31
|
+
int (*BIO_meth_set_puts)(BIO_METHOD *biom, int (*puts) (BIO *, const char *));
|
32
|
+
int (*BIO_meth_set_read)(BIO_METHOD *biom, int (*read) (BIO *, char *, int));
|
33
|
+
int (*BIO_meth_set_write)(BIO_METHOD *biom, int (*write) (BIO *, const char *, int));
|
34
|
+
BIO_METHOD *(*BIO_meth_new)(int type, const char *name);
|
35
|
+
BIO *(*BIO_new)(const BIO_METHOD *type);
|
36
|
+
void (*BIO_set_data)(BIO *a, void *ptr);
|
37
|
+
void (*BIO_set_init)(BIO *a, int init);
|
38
|
+
|
39
|
+
void (*CRYPTO_free)(void *ptr, const char *file, int line);
|
40
|
+
void *(*CRYPTO_malloc)(size_t num, const char *file, int line);
|
41
|
+
int (*CRYPTO_num_locks)(void);
|
42
|
+
void (*CRYPTO_set_locking_callback)(void (*func)(int mode, int type, const char *file, int line));
|
43
|
+
int (*CRYPTO_set_mem_functions)(void *(*m)(size_t bytes), void *(*r)(void *mem, size_t size), void (*f)(void *mem));
|
44
|
+
int (*CRYPTO_THREADID_set_callback)(void (*func)(CRYPTO_THREADID *id));
|
45
|
+
void (*CRYPTO_THREADID_set_numeric)(CRYPTO_THREADID *id, unsigned long val);
|
46
|
+
|
47
|
+
char *(*ERR_error_string)(unsigned long e, char *buf);
|
48
|
+
void (*ERR_error_string_n)(unsigned long e, char *buf, size_t len);
|
49
|
+
unsigned long (*ERR_get_error)(void);
|
50
|
+
|
51
|
+
int (*SSL_connect)(SSL *ssl);
|
52
|
+
long (*SSL_ctrl)(SSL *ssl, int cmd, long arg, void *parg);
|
53
|
+
void (*SSL_free)(SSL *ssl);
|
54
|
+
int (*SSL_get_error)(SSL *ssl, int ret);
|
55
|
+
X509 *(*SSL_get_peer_certificate)(const SSL *ssl);
|
56
|
+
long (*SSL_get_verify_result)(const SSL *ssl);
|
57
|
+
int (*SSL_library_init)(void);
|
58
|
+
void (*SSL_load_error_strings)(void);
|
59
|
+
SSL *(*SSL_new)(SSL_CTX *ctx);
|
60
|
+
int (*SSL_read)(SSL *ssl, const void *buf, int num);
|
61
|
+
void (*SSL_set_bio)(SSL *ssl, BIO *rbio, BIO *wbio);
|
62
|
+
int (*SSL_shutdown)(SSL *ssl);
|
63
|
+
int (*SSL_write)(SSL *ssl, const void *buf, int num);
|
64
|
+
|
65
|
+
long (*SSL_CTX_ctrl)(SSL_CTX *ctx, int cmd, long larg, void *parg);
|
66
|
+
void (*SSL_CTX_free)(SSL_CTX *ctx);
|
67
|
+
SSL_CTX *(*SSL_CTX_new)(const SSL_METHOD *method);
|
68
|
+
int (*SSL_CTX_set_cipher_list)(SSL_CTX *ctx, const char *str);
|
69
|
+
int (*SSL_CTX_set_default_verify_paths)(SSL_CTX *ctx);
|
70
|
+
long (*SSL_CTX_set_options)(SSL_CTX *ctx, long options);
|
71
|
+
void (*SSL_CTX_set_verify)(SSL_CTX *ctx, int mode, int (*verify_callback)(int, X509_STORE_CTX *));
|
72
|
+
int (*SSL_CTX_load_verify_locations)(SSL_CTX *ctx, const char *CAfile, const char *CApath);
|
73
|
+
|
74
|
+
const SSL_METHOD *(*SSLv23_method)(void);
|
75
|
+
const SSL_METHOD *(*TLS_method)(void);
|
76
|
+
|
77
|
+
ASN1_STRING *(*X509_NAME_ENTRY_get_data)(const X509_NAME_ENTRY *ne);
|
78
|
+
X509_NAME_ENTRY *(*X509_NAME_get_entry)(X509_NAME *name, int loc);
|
79
|
+
int (*X509_NAME_get_index_by_NID)(X509_NAME *name, int nid, int lastpos);
|
80
|
+
void (*X509_free)(X509 *a);
|
81
|
+
void *(*X509_get_ext_d2i)(const X509 *x, int nid, int *crit, int *idx);
|
82
|
+
X509_NAME *(*X509_get_subject_name)(const X509 *x);
|
83
|
+
|
84
|
+
int (*i2d_X509)(X509 *a, unsigned char **ppout);
|
85
|
+
|
86
|
+
int (*OPENSSL_sk_num)(const void *sk);
|
87
|
+
void *(*OPENSSL_sk_value)(const void *sk, int i);
|
88
|
+
void (*OPENSSL_sk_free)(void *sk);
|
89
|
+
|
90
|
+
int (*sk_num)(const void *sk);
|
91
|
+
void *(*sk_value)(const void *sk, int i);
|
92
|
+
void (*sk_free)(void *sk);
|
93
|
+
|
94
|
+
void *openssl_handle;
|
95
|
+
|
96
|
+
GIT_INLINE(void *) openssl_sym(int *err, const char *name, bool required)
|
97
|
+
{
|
98
|
+
void *symbol;
|
99
|
+
|
100
|
+
/* if we've seen an err, noop to retain it */
|
101
|
+
if (*err)
|
102
|
+
return NULL;
|
103
|
+
|
104
|
+
|
105
|
+
if ((symbol = dlsym(openssl_handle, name)) == NULL && required) {
|
106
|
+
const char *msg = dlerror();
|
107
|
+
git_error_set(GIT_ERROR_SSL, "could not load ssl function '%s': %s", name, msg ? msg : "unknown error");
|
108
|
+
*err = -1;
|
109
|
+
}
|
110
|
+
|
111
|
+
return symbol;
|
112
|
+
}
|
113
|
+
|
114
|
+
static void dynamic_shutdown(void)
|
115
|
+
{
|
116
|
+
dlclose(openssl_handle);
|
117
|
+
openssl_handle = NULL;
|
118
|
+
}
|
119
|
+
|
120
|
+
int git_openssl_stream_dynamic_init(void)
|
121
|
+
{
|
122
|
+
int err = 0;
|
123
|
+
|
124
|
+
if ((openssl_handle = dlopen("libssl.so.1.1", RTLD_NOW)) == NULL &&
|
125
|
+
(openssl_handle = dlopen("libssl.1.1.dylib", RTLD_NOW)) == NULL &&
|
126
|
+
(openssl_handle = dlopen("libssl.so.1.0.0", RTLD_NOW)) == NULL &&
|
127
|
+
(openssl_handle = dlopen("libssl.1.0.0.dylib", RTLD_NOW)) == NULL &&
|
128
|
+
(openssl_handle = dlopen("libssl.so.10", RTLD_NOW)) == NULL) {
|
129
|
+
git_error_set(GIT_ERROR_SSL, "could not load ssl libraries");
|
130
|
+
return -1;
|
131
|
+
}
|
132
|
+
|
133
|
+
ASN1_STRING_data = (unsigned char *(*)(ASN1_STRING *x))openssl_sym(&err, "ASN1_STRING_data", false);
|
134
|
+
ASN1_STRING_get0_data = (const unsigned char *(*)(const ASN1_STRING *x))openssl_sym(&err, "ASN1_STRING_get0_data", false);
|
135
|
+
ASN1_STRING_length = (int (*)(const ASN1_STRING *))openssl_sym(&err, "ASN1_STRING_length", true);
|
136
|
+
ASN1_STRING_to_UTF8 = (int (*)(unsigned char **, const ASN1_STRING *))openssl_sym(&err, "ASN1_STRING_to_UTF8", true);
|
137
|
+
ASN1_STRING_type = (int (*)(const ASN1_STRING *))openssl_sym(&err, "ASN1_STRING_type", true);
|
138
|
+
|
139
|
+
BIO_get_data = (void *(*)(BIO *))openssl_sym(&err, "BIO_get_data", false);
|
140
|
+
BIO_get_new_index = (int (*)(void))openssl_sym(&err, "BIO_get_new_index", false);
|
141
|
+
BIO_meth_free = (void (*)(BIO_METHOD *))openssl_sym(&err, "BIO_meth_free", false);
|
142
|
+
BIO_meth_new = (BIO_METHOD *(*)(int, const char *))openssl_sym(&err, "BIO_meth_new", false);
|
143
|
+
BIO_meth_set_create = (int (*)(BIO_METHOD *, int (*)(BIO *)))openssl_sym(&err, "BIO_meth_set_create", false);
|
144
|
+
BIO_meth_set_ctrl = (int (*)(BIO_METHOD *, long (*)(BIO *, int, long, void *)))openssl_sym(&err, "BIO_meth_set_ctrl", false);
|
145
|
+
BIO_meth_set_destroy = (int (*)(BIO_METHOD *, int (*)(BIO *)))openssl_sym(&err, "BIO_meth_set_destroy", false);
|
146
|
+
BIO_meth_set_gets = (int (*)(BIO_METHOD *, int (*)(BIO *, char *, int)))openssl_sym(&err, "BIO_meth_set_gets", false);
|
147
|
+
BIO_meth_set_puts = (int (*)(BIO_METHOD *, int (*)(BIO *, const char *)))openssl_sym(&err, "BIO_meth_set_puts", false);
|
148
|
+
BIO_meth_set_read = (int (*)(BIO_METHOD *, int (*)(BIO *, char *, int)))openssl_sym(&err, "BIO_meth_set_read", false);
|
149
|
+
BIO_meth_set_write = (int (*)(BIO_METHOD *, int (*)(BIO *, const char *, int)))openssl_sym(&err, "BIO_meth_set_write", false);
|
150
|
+
BIO_new = (BIO *(*)(const BIO_METHOD *))openssl_sym(&err, "BIO_new", true);
|
151
|
+
BIO_set_data = (void (*)(BIO *a, void *))openssl_sym(&err, "BIO_set_data", false);
|
152
|
+
BIO_set_init = (void (*)(BIO *a, int))openssl_sym(&err, "BIO_set_init", false);
|
153
|
+
|
154
|
+
CRYPTO_free = (void (*)(void *, const char *, int))openssl_sym(&err, "CRYPTO_free", true);
|
155
|
+
CRYPTO_malloc = (void *(*)(size_t, const char *, int))openssl_sym(&err, "CRYPTO_malloc", true);
|
156
|
+
CRYPTO_num_locks = (int (*)(void))openssl_sym(&err, "CRYPTO_num_locks", false);
|
157
|
+
CRYPTO_set_locking_callback = (void (*)(void (*)(int, int, const char *, int)))openssl_sym(&err, "CRYPTO_set_locking_callback", false);
|
158
|
+
CRYPTO_set_mem_functions = (int (*)(void *(*)(size_t), void *(*)(void *, size_t), void (*f)(void *)))openssl_sym(&err, "CRYPTO_set_mem_functions", true);
|
159
|
+
|
160
|
+
CRYPTO_THREADID_set_callback = (int (*)(void (*)(CRYPTO_THREADID *)))openssl_sym(&err, "CRYPTO_THREADID_set_callback", false);
|
161
|
+
CRYPTO_THREADID_set_numeric = (void (*)(CRYPTO_THREADID *, unsigned long))openssl_sym(&err, "CRYPTO_THREADID_set_numeric", false);
|
162
|
+
|
163
|
+
ERR_error_string = (char *(*)(unsigned long, char *))openssl_sym(&err, "ERR_error_string", true);
|
164
|
+
ERR_error_string_n = (void (*)(unsigned long, char *, size_t))openssl_sym(&err, "ERR_error_string_n", true);
|
165
|
+
ERR_get_error = (unsigned long (*)(void))openssl_sym(&err, "ERR_get_error", true);
|
166
|
+
|
167
|
+
OPENSSL_init_ssl = (int (*)(uint64_t opts, const void *settings))openssl_sym(&err, "OPENSSL_init_ssl", false);
|
168
|
+
OPENSSL_sk_num = (int (*)(const void *))openssl_sym(&err, "OPENSSL_sk_num", false);
|
169
|
+
OPENSSL_sk_value = (void *(*)(const void *sk, int i))openssl_sym(&err, "OPENSSL_sk_value", false);
|
170
|
+
OPENSSL_sk_free = (void (*)(void *))openssl_sym(&err, "OPENSSL_sk_free", false);
|
171
|
+
|
172
|
+
sk_num = (int (*)(const void *))openssl_sym(&err, "sk_num", false);
|
173
|
+
sk_value = (void *(*)(const void *sk, int i))openssl_sym(&err, "sk_value", false);
|
174
|
+
sk_free = (void (*)(void *))openssl_sym(&err, "sk_free", false);
|
175
|
+
|
176
|
+
SSL_connect = (int (*)(SSL *))openssl_sym(&err, "SSL_connect", true);
|
177
|
+
SSL_ctrl = (long (*)(SSL *, int, long, void *))openssl_sym(&err, "SSL_ctrl", true);
|
178
|
+
SSL_get_peer_certificate = (X509 *(*)(const SSL *))openssl_sym(&err, "SSL_get_peer_certificate", true);
|
179
|
+
SSL_library_init = (int (*)(void))openssl_sym(&err, "SSL_library_init", false);
|
180
|
+
SSL_free = (void (*)(SSL *))openssl_sym(&err, "SSL_free", true);
|
181
|
+
SSL_get_error = (int (*)(SSL *, int))openssl_sym(&err, "SSL_get_error", true);
|
182
|
+
SSL_get_verify_result = (long (*)(const SSL *ssl))openssl_sym(&err, "SSL_get_verify_result", true);
|
183
|
+
SSL_load_error_strings = (void (*)(void))openssl_sym(&err, "SSL_load_error_strings", false);
|
184
|
+
SSL_new = (SSL *(*)(SSL_CTX *))openssl_sym(&err, "SSL_new", true);
|
185
|
+
SSL_read = (int (*)(SSL *, const void *, int))openssl_sym(&err, "SSL_read", true);
|
186
|
+
SSL_set_bio = (void (*)(SSL *, BIO *, BIO *))openssl_sym(&err, "SSL_set_bio", true);
|
187
|
+
SSL_shutdown = (int (*)(SSL *ssl))openssl_sym(&err, "SSL_shutdown", true);
|
188
|
+
SSL_write = (int (*)(SSL *, const void *, int))openssl_sym(&err, "SSL_write", true);
|
189
|
+
|
190
|
+
SSL_CTX_ctrl = (long (*)(SSL_CTX *, int, long, void *))openssl_sym(&err, "SSL_CTX_ctrl", true);
|
191
|
+
SSL_CTX_free = (void (*)(SSL_CTX *))openssl_sym(&err, "SSL_CTX_free", true);
|
192
|
+
SSL_CTX_new = (SSL_CTX *(*)(const SSL_METHOD *))openssl_sym(&err, "SSL_CTX_new", true);
|
193
|
+
SSL_CTX_set_cipher_list = (int (*)(SSL_CTX *, const char *))openssl_sym(&err, "SSL_CTX_set_cipher_list", true);
|
194
|
+
SSL_CTX_set_default_verify_paths = (int (*)(SSL_CTX *ctx))openssl_sym(&err, "SSL_CTX_set_default_verify_paths", true);
|
195
|
+
SSL_CTX_set_options = (long (*)(SSL_CTX *, long))openssl_sym(&err, "SSL_CTX_set_options", false);
|
196
|
+
SSL_CTX_set_verify = (void (*)(SSL_CTX *, int, int (*)(int, X509_STORE_CTX *)))openssl_sym(&err, "SSL_CTX_set_verify", true);
|
197
|
+
SSL_CTX_load_verify_locations = (int (*)(SSL_CTX *, const char *, const char *))openssl_sym(&err, "SSL_CTX_load_verify_locations", true);
|
198
|
+
|
199
|
+
SSLv23_method = (const SSL_METHOD *(*)(void))openssl_sym(&err, "SSLv23_method", false);
|
200
|
+
TLS_method = (const SSL_METHOD *(*)(void))openssl_sym(&err, "TLS_method", false);
|
201
|
+
|
202
|
+
X509_NAME_ENTRY_get_data = (ASN1_STRING *(*)(const X509_NAME_ENTRY *))openssl_sym(&err, "X509_NAME_ENTRY_get_data", true);
|
203
|
+
X509_NAME_get_entry = (X509_NAME_ENTRY *(*)(X509_NAME *, int))openssl_sym(&err, "X509_NAME_get_entry", true);
|
204
|
+
X509_NAME_get_index_by_NID = (int (*)(X509_NAME *, int, int))openssl_sym(&err, "X509_NAME_get_index_by_NID", true);
|
205
|
+
X509_free = (void (*)(X509 *))openssl_sym(&err, "X509_free", true);
|
206
|
+
X509_get_ext_d2i = (void *(*)(const X509 *x, int nid, int *crit, int *idx))openssl_sym(&err, "X509_get_ext_d2i", true);
|
207
|
+
X509_get_subject_name = (X509_NAME *(*)(const X509 *))openssl_sym(&err, "X509_get_subject_name", true);
|
208
|
+
|
209
|
+
i2d_X509 = (int (*)(X509 *a, unsigned char **ppout))openssl_sym(&err, "i2d_X509", true);
|
210
|
+
|
211
|
+
if (err)
|
212
|
+
goto on_error;
|
213
|
+
|
214
|
+
/* Add legacy functionality */
|
215
|
+
if (!OPENSSL_init_ssl) {
|
216
|
+
OPENSSL_init_ssl = OPENSSL_init_ssl__legacy;
|
217
|
+
|
218
|
+
if (!SSL_library_init ||
|
219
|
+
!SSL_load_error_strings ||
|
220
|
+
!CRYPTO_num_locks ||
|
221
|
+
!CRYPTO_set_locking_callback ||
|
222
|
+
!CRYPTO_THREADID_set_callback ||
|
223
|
+
!CRYPTO_THREADID_set_numeric) {
|
224
|
+
git_error_set(GIT_ERROR_SSL, "could not load legacy openssl initialization functions");
|
225
|
+
goto on_error;
|
226
|
+
}
|
227
|
+
}
|
228
|
+
|
229
|
+
if (!SSL_CTX_set_options)
|
230
|
+
SSL_CTX_set_options = SSL_CTX_set_options__legacy;
|
231
|
+
|
232
|
+
if (TLS_method)
|
233
|
+
SSLv23_method = TLS_method;
|
234
|
+
|
235
|
+
if (!BIO_meth_new) {
|
236
|
+
BIO_meth_new = BIO_meth_new__legacy;
|
237
|
+
BIO_meth_new = BIO_meth_new__legacy;
|
238
|
+
BIO_meth_free = BIO_meth_free__legacy;
|
239
|
+
BIO_meth_set_write = BIO_meth_set_write__legacy;
|
240
|
+
BIO_meth_set_read = BIO_meth_set_read__legacy;
|
241
|
+
BIO_meth_set_puts = BIO_meth_set_puts__legacy;
|
242
|
+
BIO_meth_set_gets = BIO_meth_set_gets__legacy;
|
243
|
+
BIO_meth_set_ctrl = BIO_meth_set_ctrl__legacy;
|
244
|
+
BIO_meth_set_create = BIO_meth_set_create__legacy;
|
245
|
+
BIO_meth_set_destroy = BIO_meth_set_destroy__legacy;
|
246
|
+
BIO_get_new_index = BIO_get_new_index__legacy;
|
247
|
+
BIO_set_data = BIO_set_data__legacy;
|
248
|
+
BIO_set_init = BIO_set_init__legacy;
|
249
|
+
BIO_get_data = BIO_get_data__legacy;
|
250
|
+
}
|
251
|
+
|
252
|
+
if (!ASN1_STRING_get0_data) {
|
253
|
+
if (!ASN1_STRING_data) {
|
254
|
+
git_error_set(GIT_ERROR_SSL, "could not load legacy openssl string function");
|
255
|
+
goto on_error;
|
256
|
+
}
|
257
|
+
|
258
|
+
ASN1_STRING_get0_data = ASN1_STRING_get0_data__legacy;
|
259
|
+
}
|
260
|
+
|
261
|
+
if ((!OPENSSL_sk_num && !sk_num) ||
|
262
|
+
(!OPENSSL_sk_value && !sk_value) ||
|
263
|
+
(!OPENSSL_sk_free && !sk_free)) {
|
264
|
+
git_error_set(GIT_ERROR_SSL, "could not load legacy openssl stack functions");
|
265
|
+
goto on_error;
|
266
|
+
}
|
267
|
+
|
268
|
+
if (git_runtime_shutdown_register(dynamic_shutdown) != 0)
|
269
|
+
goto on_error;
|
270
|
+
|
271
|
+
return 0;
|
272
|
+
|
273
|
+
on_error:
|
274
|
+
dlclose(openssl_handle);
|
275
|
+
return -1;
|
276
|
+
}
|
277
|
+
|
278
|
+
|
279
|
+
int sk_GENERAL_NAME_num(const GENERAL_NAME *sk)
|
280
|
+
{
|
281
|
+
if (OPENSSL_sk_num)
|
282
|
+
return OPENSSL_sk_num(sk);
|
283
|
+
else if (sk_num)
|
284
|
+
return sk_num(sk);
|
285
|
+
|
286
|
+
GIT_ASSERT_WITH_RETVAL(false, 0);
|
287
|
+
return 0;
|
288
|
+
}
|
289
|
+
|
290
|
+
GENERAL_NAME *sk_GENERAL_NAME_value(const GENERAL_NAME *sk, int i)
|
291
|
+
{
|
292
|
+
if (OPENSSL_sk_value)
|
293
|
+
return OPENSSL_sk_value(sk, i);
|
294
|
+
else if (sk_value)
|
295
|
+
return sk_value(sk, i);
|
296
|
+
|
297
|
+
GIT_ASSERT_WITH_RETVAL(false, NULL);
|
298
|
+
return NULL;
|
299
|
+
}
|
300
|
+
|
301
|
+
void GENERAL_NAMES_free(GENERAL_NAME *sk)
|
302
|
+
{
|
303
|
+
if (OPENSSL_sk_free)
|
304
|
+
OPENSSL_sk_free(sk);
|
305
|
+
else if (sk_free)
|
306
|
+
sk_free(sk);
|
307
|
+
}
|
308
|
+
|
309
|
+
#endif /* GIT_OPENSSL && GIT_OPENSSL_DYNAMIC */
|
@@ -0,0 +1,348 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright (C) the libgit2 contributors. All rights reserved.
|
3
|
+
*
|
4
|
+
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
5
|
+
* a Linking Exception. For full terms see the included COPYING file.
|
6
|
+
*/
|
7
|
+
|
8
|
+
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
9
|
+
* All rights reserved.
|
10
|
+
*
|
11
|
+
* This package is an SSL implementation written
|
12
|
+
* by Eric Young (eay@cryptsoft.com).
|
13
|
+
* The implementation was written so as to conform with Netscapes SSL.
|
14
|
+
*
|
15
|
+
* This library is free for commercial and non-commercial use as long as
|
16
|
+
* the following conditions are aheared to. The following conditions
|
17
|
+
* apply to all code found in this distribution, be it the RC4, RSA,
|
18
|
+
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
19
|
+
* included with this distribution is covered by the same copyright terms
|
20
|
+
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
21
|
+
*
|
22
|
+
* Copyright remains Eric Young's, and as such any Copyright notices in
|
23
|
+
* the code are not to be removed.
|
24
|
+
* If this package is used in a product, Eric Young should be given attribution
|
25
|
+
* as the author of the parts of the library used.
|
26
|
+
* This can be in the form of a textual message at program startup or
|
27
|
+
* in documentation (online or textual) provided with the package.
|
28
|
+
*
|
29
|
+
* Redistribution and use in source and binary forms, with or without
|
30
|
+
* modification, are permitted provided that the following conditions
|
31
|
+
* are met:
|
32
|
+
* 1. Redistributions of source code must retain the copyright
|
33
|
+
* notice, this list of conditions and the following disclaimer.
|
34
|
+
* 2. Redistributions in binary form must reproduce the above copyright
|
35
|
+
* notice, this list of conditions and the following disclaimer in the
|
36
|
+
* documentation and/or other materials provided with the distribution.
|
37
|
+
* 3. All advertising materials mentioning features or use of this software
|
38
|
+
* must display the following acknowledgement:
|
39
|
+
* "This product includes cryptographic software written by
|
40
|
+
* Eric Young (eay@cryptsoft.com)"
|
41
|
+
* The word 'cryptographic' can be left out if the rouines from the library
|
42
|
+
* being used are not cryptographic related :-).
|
43
|
+
* 4. If you include any Windows specific code (or a derivative thereof) from
|
44
|
+
* the apps directory (application code) you must include an acknowledgement:
|
45
|
+
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
46
|
+
*
|
47
|
+
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
48
|
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
49
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
50
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
51
|
+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
52
|
+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
53
|
+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
54
|
+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
55
|
+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
56
|
+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
57
|
+
* SUCH DAMAGE.
|
58
|
+
*
|
59
|
+
* The licence and distribution terms for any publically available version or
|
60
|
+
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
61
|
+
* copied and put under another distribution licence
|
62
|
+
* [including the GNU Public Licence.]
|
63
|
+
*/
|
64
|
+
/* ====================================================================
|
65
|
+
* Copyright (c) 1998-2007 The OpenSSL Project. All rights reserved.
|
66
|
+
*
|
67
|
+
* Redistribution and use in source and binary forms, with or without
|
68
|
+
* modification, are permitted provided that the following conditions
|
69
|
+
* are met:
|
70
|
+
*
|
71
|
+
* 1. Redistributions of source code must retain the above copyright
|
72
|
+
* notice, this list of conditions and the following disclaimer.
|
73
|
+
*
|
74
|
+
* 2. Redistributions in binary form must reproduce the above copyright
|
75
|
+
* notice, this list of conditions and the following disclaimer in
|
76
|
+
* the documentation and/or other materials provided with the
|
77
|
+
* distribution.
|
78
|
+
*
|
79
|
+
* 3. All advertising materials mentioning features or use of this
|
80
|
+
* software must display the following acknowledgment:
|
81
|
+
* "This product includes software developed by the OpenSSL Project
|
82
|
+
* for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
|
83
|
+
*
|
84
|
+
* 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
|
85
|
+
* endorse or promote products derived from this software without
|
86
|
+
* prior written permission. For written permission, please contact
|
87
|
+
* openssl-core@openssl.org.
|
88
|
+
*
|
89
|
+
* 5. Products derived from this software may not be called "OpenSSL"
|
90
|
+
* nor may "OpenSSL" appear in their names without prior written
|
91
|
+
* permission of the OpenSSL Project.
|
92
|
+
*
|
93
|
+
* 6. Redistributions of any form whatsoever must retain the following
|
94
|
+
* acknowledgment:
|
95
|
+
* "This product includes software developed by the OpenSSL Project
|
96
|
+
* for use in the OpenSSL Toolkit (http://www.openssl.org/)"
|
97
|
+
*
|
98
|
+
* THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
|
99
|
+
* EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
100
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
101
|
+
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
|
102
|
+
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
103
|
+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
104
|
+
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
105
|
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
106
|
+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
107
|
+
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
108
|
+
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
109
|
+
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
110
|
+
* ====================================================================
|
111
|
+
*
|
112
|
+
* This product includes cryptographic software written by Eric Young
|
113
|
+
* (eay@cryptsoft.com). This product includes software written by Tim
|
114
|
+
* Hudson (tjh@cryptsoft.com).
|
115
|
+
*
|
116
|
+
*/
|
117
|
+
/* ====================================================================
|
118
|
+
* Copyright 2002 Sun Microsystems, Inc. ALL RIGHTS RESERVED.
|
119
|
+
* ECC cipher suite support in OpenSSL originally developed by
|
120
|
+
* SUN MICROSYSTEMS, INC., and contributed to the OpenSSL project.
|
121
|
+
*/
|
122
|
+
/* ====================================================================
|
123
|
+
* Copyright 2005 Nokia. All rights reserved.
|
124
|
+
*
|
125
|
+
* The portions of the attached software ("Contribution") is developed by
|
126
|
+
* Nokia Corporation and is licensed pursuant to the OpenSSL open source
|
127
|
+
* license.
|
128
|
+
*
|
129
|
+
* The Contribution, originally written by Mika Kousa and Pasi Eronen of
|
130
|
+
* Nokia Corporation, consists of the "PSK" (Pre-Shared Key) ciphersuites
|
131
|
+
* support (see RFC 4279) to OpenSSL.
|
132
|
+
*
|
133
|
+
* No patent licenses or other rights except those expressly stated in
|
134
|
+
* the OpenSSL open source license shall be deemed granted or received
|
135
|
+
* expressly, by implication, estoppel, or otherwise.
|
136
|
+
*
|
137
|
+
* No assurances are provided by Nokia that the Contribution does not
|
138
|
+
* infringe the patent or other intellectual property rights of any third
|
139
|
+
* party or that the license provides you with all the necessary rights
|
140
|
+
* to make use of the Contribution.
|
141
|
+
*
|
142
|
+
* THE SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. IN
|
143
|
+
* ADDITION TO THE DISCLAIMERS INCLUDED IN THE LICENSE, NOKIA
|
144
|
+
* SPECIFICALLY DISCLAIMS ANY LIABILITY FOR CLAIMS BROUGHT BY YOU OR ANY
|
145
|
+
* OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
|
146
|
+
* OTHERWISE.
|
147
|
+
*/
|
148
|
+
|
149
|
+
#ifndef INCLUDE_streams_openssl_dynamic_h__
|
150
|
+
#define INCLUDE_streams_openssl_dynamic_h__
|
151
|
+
|
152
|
+
#ifdef GIT_OPENSSL_DYNAMIC
|
153
|
+
|
154
|
+
# define BIO_CTRL_FLUSH 11
|
155
|
+
|
156
|
+
# define BIO_TYPE_SOURCE_SINK 0x0400
|
157
|
+
|
158
|
+
# define CRYPTO_LOCK 1
|
159
|
+
|
160
|
+
# define GEN_DNS 2
|
161
|
+
# define GEN_IPADD 7
|
162
|
+
|
163
|
+
# define NID_commonName 13
|
164
|
+
# define NID_subject_alt_name 85
|
165
|
+
|
166
|
+
# define SSL_VERIFY_NONE 0x00
|
167
|
+
|
168
|
+
# define SSL_CTRL_OPTIONS 32
|
169
|
+
# define SSL_CTRL_MODE 33
|
170
|
+
# define SSL_CTRL_SET_TLSEXT_HOSTNAME 55
|
171
|
+
|
172
|
+
# define SSL_ERROR_NONE 0
|
173
|
+
# define SSL_ERROR_SSL 1
|
174
|
+
# define SSL_ERROR_WANT_READ 2
|
175
|
+
# define SSL_ERROR_WANT_WRITE 3
|
176
|
+
# define SSL_ERROR_WANT_X509_LOOKUP 4
|
177
|
+
# define SSL_ERROR_SYSCALL 5
|
178
|
+
# define SSL_ERROR_ZERO_RETURN 6
|
179
|
+
# define SSL_ERROR_WANT_CONNECT 7
|
180
|
+
# define SSL_ERROR_WANT_ACCEPT 8
|
181
|
+
|
182
|
+
# define SSL_OP_NO_COMPRESSION 0x00020000L
|
183
|
+
# define SSL_OP_NO_SSLv2 0x01000000L
|
184
|
+
# define SSL_OP_NO_SSLv3 0x02000000L
|
185
|
+
|
186
|
+
# define SSL_MODE_AUTO_RETRY 0x00000004L
|
187
|
+
|
188
|
+
# define TLSEXT_NAMETYPE_host_name 0
|
189
|
+
|
190
|
+
# define V_ASN1_UTF8STRING 12
|
191
|
+
|
192
|
+
# define X509_V_OK 0
|
193
|
+
|
194
|
+
/* Most of the OpenSSL types are mercifully opaque, so we can treat them like `void *` */
|
195
|
+
typedef struct bio_st BIO;
|
196
|
+
typedef struct bio_method_st BIO_METHOD;
|
197
|
+
typedef void bio_info_cb;
|
198
|
+
typedef void * CRYPTO_EX_DATA;
|
199
|
+
typedef void CRYPTO_THREADID;
|
200
|
+
typedef void GENERAL_NAMES;
|
201
|
+
typedef void SSL;
|
202
|
+
typedef void SSL_CTX;
|
203
|
+
typedef void SSL_METHOD;
|
204
|
+
typedef void X509;
|
205
|
+
typedef void X509_NAME;
|
206
|
+
typedef void X509_NAME_ENTRY;
|
207
|
+
typedef void X509_STORE_CTX;
|
208
|
+
|
209
|
+
typedef struct {
|
210
|
+
int length;
|
211
|
+
int type;
|
212
|
+
unsigned char *data;
|
213
|
+
long flags;
|
214
|
+
} ASN1_STRING;
|
215
|
+
|
216
|
+
typedef struct {
|
217
|
+
int type;
|
218
|
+
union {
|
219
|
+
char *ptr;
|
220
|
+
ASN1_STRING *ia5;
|
221
|
+
} d;
|
222
|
+
} GENERAL_NAME;
|
223
|
+
|
224
|
+
struct bio_st {
|
225
|
+
BIO_METHOD *method;
|
226
|
+
/* bio, mode, argp, argi, argl, ret */
|
227
|
+
long (*callback) (struct bio_st *, int, const char *, int, long, long);
|
228
|
+
char *cb_arg; /* first argument for the callback */
|
229
|
+
int init;
|
230
|
+
int shutdown;
|
231
|
+
int flags; /* extra storage */
|
232
|
+
int retry_reason;
|
233
|
+
int num;
|
234
|
+
void *ptr;
|
235
|
+
struct bio_st *next_bio; /* used by filter BIOs */
|
236
|
+
struct bio_st *prev_bio; /* used by filter BIOs */
|
237
|
+
int references;
|
238
|
+
unsigned long num_read;
|
239
|
+
unsigned long num_write;
|
240
|
+
CRYPTO_EX_DATA ex_data;
|
241
|
+
};
|
242
|
+
|
243
|
+
struct bio_method_st {
|
244
|
+
int type;
|
245
|
+
const char *name;
|
246
|
+
int (*bwrite) (BIO *, const char *, int);
|
247
|
+
int (*bread) (BIO *, char *, int);
|
248
|
+
int (*bputs) (BIO *, const char *);
|
249
|
+
int (*bgets) (BIO *, char *, int);
|
250
|
+
long (*ctrl) (BIO *, int, long, void *);
|
251
|
+
int (*create) (BIO *);
|
252
|
+
int (*destroy) (BIO *);
|
253
|
+
long (*callback_ctrl) (BIO *, int, bio_info_cb *);
|
254
|
+
};
|
255
|
+
|
256
|
+
extern unsigned char *(*ASN1_STRING_data)(ASN1_STRING *x);
|
257
|
+
extern const unsigned char *(*ASN1_STRING_get0_data)(const ASN1_STRING *x);
|
258
|
+
extern int (*ASN1_STRING_length)(const ASN1_STRING *x);
|
259
|
+
extern int (*ASN1_STRING_to_UTF8)(unsigned char **out, const ASN1_STRING *in);
|
260
|
+
extern int (*ASN1_STRING_type)(const ASN1_STRING *x);
|
261
|
+
|
262
|
+
extern void *(*BIO_get_data)(BIO *a);
|
263
|
+
extern int (*BIO_get_new_index)(void);
|
264
|
+
extern int (*OPENSSL_init_ssl)(uint64_t opts, const void *settings);
|
265
|
+
extern void (*BIO_meth_free)(BIO_METHOD *biom);
|
266
|
+
extern int (*BIO_meth_set_create)(BIO_METHOD *biom, int (*create) (BIO *));
|
267
|
+
extern int (*BIO_meth_set_ctrl)(BIO_METHOD *biom, long (*ctrl) (BIO *, int, long, void *));
|
268
|
+
extern int (*BIO_meth_set_destroy)(BIO_METHOD *biom, int (*destroy) (BIO *));
|
269
|
+
extern int (*BIO_meth_set_gets)(BIO_METHOD *biom, int (*gets) (BIO *, char *, int));
|
270
|
+
extern int (*BIO_meth_set_puts)(BIO_METHOD *biom, int (*puts) (BIO *, const char *));
|
271
|
+
extern int (*BIO_meth_set_read)(BIO_METHOD *biom, int (*read) (BIO *, char *, int));
|
272
|
+
extern int (*BIO_meth_set_write)(BIO_METHOD *biom, int (*write) (BIO *, const char *, int));
|
273
|
+
extern BIO_METHOD *(*BIO_meth_new)(int type, const char *name);
|
274
|
+
extern BIO *(*BIO_new)(const BIO_METHOD *type);
|
275
|
+
extern void (*BIO_set_data)(BIO *a, void *ptr);
|
276
|
+
extern void (*BIO_set_init)(BIO *a, int init);
|
277
|
+
|
278
|
+
extern void (*CRYPTO_free)(void *ptr, const char *file, int line);
|
279
|
+
extern void *(*CRYPTO_malloc)(size_t num, const char *file, int line);
|
280
|
+
extern int (*CRYPTO_num_locks)(void);
|
281
|
+
extern void (*CRYPTO_set_locking_callback)(void (*func)(int mode, int type, const char *file, int line));
|
282
|
+
extern int (*CRYPTO_set_mem_functions)(void *(*m)(size_t bytes), void *(*r)(void *mem, size_t size), void (*f)(void *mem));
|
283
|
+
extern int (*CRYPTO_THREADID_set_callback)(void (*func)(CRYPTO_THREADID *id));
|
284
|
+
extern void (*CRYPTO_THREADID_set_numeric)(CRYPTO_THREADID *id, unsigned long val);
|
285
|
+
|
286
|
+
extern char *(*ERR_error_string)(unsigned long e, char *buf);
|
287
|
+
extern void (*ERR_error_string_n)(unsigned long e, char *buf, size_t len);
|
288
|
+
extern unsigned long (*ERR_get_error)(void);
|
289
|
+
|
290
|
+
# define OPENSSL_malloc(num) CRYPTO_malloc(num, __FILE__, __LINE__)
|
291
|
+
# define OPENSSL_free(addr) CRYPTO_free(addr, __FILE__, __LINE__)
|
292
|
+
|
293
|
+
extern int (*SSL_connect)(SSL *ssl);
|
294
|
+
extern long (*SSL_ctrl)(SSL *ssl, int cmd, long arg, void *parg);
|
295
|
+
extern void (*SSL_free)(SSL *ssl);
|
296
|
+
extern int (*SSL_get_error)(SSL *ssl, int ret);
|
297
|
+
extern X509 *(*SSL_get_peer_certificate)(const SSL *ssl);
|
298
|
+
extern long (*SSL_get_verify_result)(const SSL *ssl);
|
299
|
+
extern int (*SSL_library_init)(void);
|
300
|
+
extern void (*SSL_load_error_strings)(void);
|
301
|
+
extern SSL *(*SSL_new)(SSL_CTX *ctx);
|
302
|
+
extern int (*SSL_read)(SSL *ssl, const void *buf, int num);
|
303
|
+
extern void (*SSL_set_bio)(SSL *ssl, BIO *rbio, BIO *wbio);
|
304
|
+
extern int (*SSL_shutdown)(SSL *ssl);
|
305
|
+
extern int (*SSL_write)(SSL *ssl, const void *buf, int num);
|
306
|
+
|
307
|
+
# define SSL_set_tlsext_host_name(s, name) SSL_ctrl((s), SSL_CTRL_SET_TLSEXT_HOSTNAME, TLSEXT_NAMETYPE_host_name, (char *)(name));
|
308
|
+
|
309
|
+
extern long (*SSL_CTX_ctrl)(SSL_CTX *ctx, int cmd, long larg, void *parg);
|
310
|
+
extern void (*SSL_CTX_free)(SSL_CTX *ctx);
|
311
|
+
extern SSL_CTX *(*SSL_CTX_new)(const SSL_METHOD *method);
|
312
|
+
extern int (*SSL_CTX_set_cipher_list)(SSL_CTX *ctx, const char *str);
|
313
|
+
extern int (*SSL_CTX_set_default_verify_paths)(SSL_CTX *ctx);
|
314
|
+
extern long (*SSL_CTX_set_options)(SSL_CTX *ctx, long options);
|
315
|
+
extern void (*SSL_CTX_set_verify)(SSL_CTX *ctx, int mode, int (*verify_callback)(int, X509_STORE_CTX *));
|
316
|
+
extern int (*SSL_CTX_load_verify_locations)(SSL_CTX *ctx, const char *CAfile, const char *CApath);
|
317
|
+
|
318
|
+
# define SSL_CTX_set_mode(ctx, mode) SSL_CTX_ctrl((ctx), SSL_CTRL_MODE, (mode), NULL);
|
319
|
+
|
320
|
+
extern const SSL_METHOD *(*SSLv23_method)(void);
|
321
|
+
extern const SSL_METHOD *(*TLS_method)(void);
|
322
|
+
|
323
|
+
extern ASN1_STRING *(*X509_NAME_ENTRY_get_data)(const X509_NAME_ENTRY *ne);
|
324
|
+
extern X509_NAME_ENTRY *(*X509_NAME_get_entry)(X509_NAME *name, int loc);
|
325
|
+
extern int (*X509_NAME_get_index_by_NID)(X509_NAME *name, int nid, int lastpos);
|
326
|
+
extern void (*X509_free)(X509 *a);
|
327
|
+
extern void *(*X509_get_ext_d2i)(const X509 *x, int nid, int *crit, int *idx);
|
328
|
+
extern X509_NAME *(*X509_get_subject_name)(const X509 *x);
|
329
|
+
|
330
|
+
extern int (*i2d_X509)(X509 *a, unsigned char **ppout);
|
331
|
+
|
332
|
+
extern int (*OPENSSL_sk_num)(const void *sk);
|
333
|
+
extern void *(*OPENSSL_sk_value)(const void *sk, int i);
|
334
|
+
extern void (*OPENSSL_sk_free)(void *sk);
|
335
|
+
|
336
|
+
extern int (*sk_num)(const void *sk);
|
337
|
+
extern void *(*sk_value)(const void *sk, int i);
|
338
|
+
extern void (*sk_free)(void *sk);
|
339
|
+
|
340
|
+
extern int sk_GENERAL_NAME_num(const GENERAL_NAME *sk);
|
341
|
+
extern GENERAL_NAME *sk_GENERAL_NAME_value(const GENERAL_NAME *sk, int i);
|
342
|
+
extern void GENERAL_NAMES_free(GENERAL_NAME *sk);
|
343
|
+
|
344
|
+
extern int git_openssl_stream_dynamic_init(void);
|
345
|
+
|
346
|
+
#endif /* GIT_OPENSSL_DYNAMIC */
|
347
|
+
|
348
|
+
#endif
|