rugged 1.7.2 → 1.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +1 -0
- data/vendor/libgit2/CMakeLists.txt +23 -10
- data/vendor/libgit2/COPYING +195 -1
- data/vendor/libgit2/cmake/{FindIconv.cmake → FindIntlIconv.cmake} +6 -0
- data/vendor/libgit2/cmake/FindLLHTTP.cmake +39 -0
- data/vendor/libgit2/cmake/SelectGSSAPI.cmake +1 -1
- data/vendor/libgit2/cmake/SelectHTTPParser.cmake +23 -8
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +17 -8
- data/vendor/libgit2/cmake/SelectHashes.cmake +28 -11
- data/vendor/libgit2/cmake/SelectRegex.cmake +6 -1
- data/vendor/libgit2/cmake/SelectSSH.cmake +22 -17
- data/vendor/libgit2/cmake/SelectZlib.cmake +4 -0
- data/vendor/libgit2/deps/llhttp/CMakeLists.txt +8 -0
- data/vendor/libgit2/deps/llhttp/LICENSE-MIT +22 -0
- data/vendor/libgit2/deps/llhttp/api.c +510 -0
- data/vendor/libgit2/deps/llhttp/http.c +170 -0
- data/vendor/libgit2/deps/llhttp/llhttp.c +10168 -0
- data/vendor/libgit2/deps/llhttp/llhttp.h +897 -0
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +1 -1
- data/vendor/libgit2/deps/ntlmclient/crypt_builtin_md4.c +311 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +0 -20
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +4 -4
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +21 -21
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +5 -4
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +2 -1
- data/vendor/libgit2/deps/ntlmclient/utf8.h +1176 -721
- data/vendor/libgit2/deps/ntlmclient/util.h +11 -0
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +1 -0
- data/vendor/libgit2/deps/xdiff/xmerge.c +2 -2
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +6 -1
- data/vendor/libgit2/deps/zlib/LICENSE +22 -0
- data/vendor/libgit2/deps/zlib/adler32.c +5 -27
- data/vendor/libgit2/deps/zlib/crc32.c +94 -167
- data/vendor/libgit2/deps/zlib/deflate.c +358 -435
- data/vendor/libgit2/deps/zlib/deflate.h +41 -10
- data/vendor/libgit2/deps/zlib/gzguts.h +13 -18
- data/vendor/libgit2/deps/zlib/infback.c +17 -30
- data/vendor/libgit2/deps/zlib/inffast.c +1 -4
- data/vendor/libgit2/deps/zlib/inffast.h +1 -1
- data/vendor/libgit2/deps/zlib/inflate.c +36 -102
- data/vendor/libgit2/deps/zlib/inftrees.c +6 -11
- data/vendor/libgit2/deps/zlib/inftrees.h +6 -6
- data/vendor/libgit2/deps/zlib/trees.c +287 -352
- data/vendor/libgit2/deps/zlib/zconf.h +23 -14
- data/vendor/libgit2/deps/zlib/zlib.h +202 -202
- data/vendor/libgit2/deps/zlib/zutil.c +18 -44
- data/vendor/libgit2/deps/zlib/zutil.h +13 -33
- data/vendor/libgit2/include/git2/annotated_commit.h +12 -5
- data/vendor/libgit2/include/git2/apply.h +27 -6
- data/vendor/libgit2/include/git2/attr.h +17 -4
- data/vendor/libgit2/include/git2/blame.h +133 -28
- data/vendor/libgit2/include/git2/blob.h +71 -28
- data/vendor/libgit2/include/git2/branch.h +22 -15
- data/vendor/libgit2/include/git2/buffer.h +6 -4
- data/vendor/libgit2/include/git2/cert.h +2 -1
- data/vendor/libgit2/include/git2/checkout.h +83 -32
- data/vendor/libgit2/include/git2/cherrypick.h +10 -3
- data/vendor/libgit2/include/git2/clone.h +25 -9
- data/vendor/libgit2/include/git2/commit.h +132 -3
- data/vendor/libgit2/include/git2/common.h +120 -63
- data/vendor/libgit2/include/git2/config.h +93 -23
- data/vendor/libgit2/include/git2/credential.h +30 -2
- data/vendor/libgit2/include/git2/credential_helpers.h +1 -0
- data/vendor/libgit2/include/git2/deprecated.h +133 -3
- data/vendor/libgit2/include/git2/describe.h +13 -1
- data/vendor/libgit2/include/git2/diff.h +38 -8
- data/vendor/libgit2/include/git2/email.h +9 -29
- data/vendor/libgit2/include/git2/errors.h +46 -73
- data/vendor/libgit2/include/git2/filter.h +14 -7
- data/vendor/libgit2/include/git2/global.h +8 -1
- data/vendor/libgit2/include/git2/graph.h +3 -2
- data/vendor/libgit2/include/git2/ignore.h +10 -0
- data/vendor/libgit2/include/git2/index.h +99 -14
- data/vendor/libgit2/include/git2/indexer.h +21 -4
- data/vendor/libgit2/include/git2/mailmap.h +7 -1
- data/vendor/libgit2/include/git2/merge.h +46 -1
- data/vendor/libgit2/include/git2/message.h +2 -2
- data/vendor/libgit2/include/git2/net.h +3 -1
- data/vendor/libgit2/include/git2/notes.h +9 -6
- data/vendor/libgit2/include/git2/object.h +9 -8
- data/vendor/libgit2/include/git2/odb.h +91 -49
- data/vendor/libgit2/include/git2/odb_backend.h +80 -52
- data/vendor/libgit2/include/git2/oid.h +23 -24
- data/vendor/libgit2/include/git2/oidarray.h +7 -1
- data/vendor/libgit2/include/git2/pack.h +13 -1
- data/vendor/libgit2/include/git2/patch.h +2 -3
- data/vendor/libgit2/include/git2/pathspec.h +9 -0
- data/vendor/libgit2/include/git2/proxy.h +10 -0
- data/vendor/libgit2/include/git2/rebase.h +9 -6
- data/vendor/libgit2/include/git2/refdb.h +2 -2
- data/vendor/libgit2/include/git2/reflog.h +3 -2
- data/vendor/libgit2/include/git2/refs.h +9 -6
- data/vendor/libgit2/include/git2/refspec.h +14 -4
- data/vendor/libgit2/include/git2/remote.h +94 -18
- data/vendor/libgit2/include/git2/repository.h +57 -21
- data/vendor/libgit2/include/git2/reset.h +16 -3
- data/vendor/libgit2/include/git2/revert.h +9 -4
- data/vendor/libgit2/include/git2/revparse.h +3 -3
- data/vendor/libgit2/include/git2/revwalk.h +3 -2
- data/vendor/libgit2/include/git2/signature.h +46 -1
- data/vendor/libgit2/include/git2/stash.h +17 -3
- data/vendor/libgit2/include/git2/status.h +10 -6
- data/vendor/libgit2/include/git2/stdint.h +87 -85
- data/vendor/libgit2/include/git2/strarray.h +2 -3
- data/vendor/libgit2/include/git2/submodule.h +20 -9
- data/vendor/libgit2/include/git2/sys/alloc.h +12 -0
- data/vendor/libgit2/include/git2/sys/commit.h +77 -3
- data/vendor/libgit2/include/git2/sys/commit_graph.h +103 -62
- data/vendor/libgit2/include/git2/sys/config.h +80 -4
- data/vendor/libgit2/include/git2/sys/credential.h +4 -3
- data/vendor/libgit2/include/git2/sys/diff.h +21 -1
- data/vendor/libgit2/include/git2/sys/email.h +7 -0
- data/vendor/libgit2/include/git2/sys/errors.h +76 -0
- data/vendor/libgit2/include/git2/sys/filter.h +66 -3
- data/vendor/libgit2/include/git2/sys/hashsig.h +11 -0
- data/vendor/libgit2/include/git2/sys/index.h +3 -2
- data/vendor/libgit2/include/git2/sys/mempack.h +32 -2
- data/vendor/libgit2/include/git2/sys/merge.h +55 -7
- data/vendor/libgit2/include/git2/sys/midx.h +43 -4
- data/vendor/libgit2/include/git2/sys/odb_backend.h +7 -3
- data/vendor/libgit2/include/git2/sys/openssl.h +8 -1
- data/vendor/libgit2/include/git2/sys/path.h +12 -1
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +40 -36
- data/vendor/libgit2/include/git2/sys/refs.h +3 -2
- data/vendor/libgit2/include/git2/sys/remote.h +8 -1
- data/vendor/libgit2/include/git2/sys/repository.h +63 -3
- data/vendor/libgit2/include/git2/sys/stream.h +11 -2
- data/vendor/libgit2/include/git2/sys/transport.h +24 -3
- data/vendor/libgit2/include/git2/tag.h +3 -1
- data/vendor/libgit2/include/git2/trace.h +9 -3
- data/vendor/libgit2/include/git2/transaction.h +3 -2
- data/vendor/libgit2/include/git2/transport.h +11 -3
- data/vendor/libgit2/include/git2/tree.h +16 -5
- data/vendor/libgit2/include/git2/types.h +19 -3
- data/vendor/libgit2/include/git2/version.h +44 -8
- data/vendor/libgit2/include/git2/worktree.h +16 -6
- data/vendor/libgit2/src/CMakeLists.txt +6 -4
- data/vendor/libgit2/src/cli/CMakeLists.txt +2 -2
- data/vendor/libgit2/src/cli/cmd.c +1 -1
- data/vendor/libgit2/src/cli/cmd.h +4 -0
- data/vendor/libgit2/src/cli/cmd_blame.c +287 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +6 -8
- data/vendor/libgit2/src/cli/cmd_clone.c +5 -7
- data/vendor/libgit2/src/cli/cmd_config.c +241 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +6 -8
- data/vendor/libgit2/src/cli/cmd_help.c +6 -7
- data/vendor/libgit2/src/cli/cmd_index_pack.c +114 -0
- data/vendor/libgit2/src/cli/cmd_init.c +102 -0
- data/vendor/libgit2/src/cli/common.c +168 -0
- data/vendor/libgit2/src/cli/common.h +63 -0
- data/vendor/libgit2/src/cli/error.h +1 -1
- data/vendor/libgit2/src/cli/main.c +52 -24
- data/vendor/libgit2/src/cli/opt.c +29 -3
- data/vendor/libgit2/src/cli/opt.h +21 -3
- data/vendor/libgit2/src/cli/opt_usage.c +102 -33
- data/vendor/libgit2/src/cli/opt_usage.h +6 -1
- data/vendor/libgit2/src/cli/progress.c +51 -2
- data/vendor/libgit2/src/cli/progress.h +12 -0
- data/vendor/libgit2/src/cli/unix/sighandler.c +2 -1
- data/vendor/libgit2/src/cli/win32/precompiled.h +1 -1
- data/vendor/libgit2/src/cli/win32/sighandler.c +1 -1
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +26 -8
- data/vendor/libgit2/src/libgit2/apply.c +10 -13
- data/vendor/libgit2/src/libgit2/attr.c +30 -13
- data/vendor/libgit2/src/libgit2/attr_file.c +7 -2
- data/vendor/libgit2/src/libgit2/attr_file.h +2 -0
- data/vendor/libgit2/src/libgit2/attrcache.c +69 -33
- data/vendor/libgit2/src/libgit2/attrcache.h +5 -9
- data/vendor/libgit2/src/libgit2/blame.c +130 -44
- data/vendor/libgit2/src/libgit2/blame.h +1 -0
- data/vendor/libgit2/src/libgit2/cache.c +22 -17
- data/vendor/libgit2/src/libgit2/cache.h +7 -9
- data/vendor/libgit2/src/libgit2/checkout.c +34 -24
- data/vendor/libgit2/src/libgit2/checkout.h +0 -2
- data/vendor/libgit2/src/libgit2/cherrypick.c +1 -2
- data/vendor/libgit2/src/libgit2/clone.c +186 -166
- data/vendor/libgit2/src/libgit2/clone.h +4 -1
- data/vendor/libgit2/src/libgit2/commit.c +92 -0
- data/vendor/libgit2/src/libgit2/commit_graph.c +67 -56
- data/vendor/libgit2/src/libgit2/commit_graph.h +1 -2
- data/vendor/libgit2/src/libgit2/config.c +389 -298
- data/vendor/libgit2/src/libgit2/config.cmake.in +3 -0
- data/vendor/libgit2/src/libgit2/config.h +9 -4
- data/vendor/libgit2/src/libgit2/config_backend.h +8 -10
- data/vendor/libgit2/src/libgit2/config_cache.c +4 -5
- data/vendor/libgit2/src/libgit2/config_file.c +99 -88
- data/vendor/libgit2/src/libgit2/config_list.c +285 -0
- data/vendor/libgit2/src/libgit2/config_list.h +32 -0
- data/vendor/libgit2/src/libgit2/config_mem.c +194 -40
- data/vendor/libgit2/src/libgit2/config_parse.c +10 -9
- data/vendor/libgit2/src/libgit2/config_snapshot.c +24 -31
- data/vendor/libgit2/src/libgit2/describe.c +24 -24
- data/vendor/libgit2/src/libgit2/diff.c +1 -1
- data/vendor/libgit2/src/libgit2/diff_driver.c +12 -19
- data/vendor/libgit2/src/libgit2/diff_driver.h +2 -2
- data/vendor/libgit2/src/libgit2/diff_generate.c +3 -3
- data/vendor/libgit2/src/libgit2/diff_parse.c +2 -2
- data/vendor/libgit2/src/libgit2/diff_print.c +65 -9
- data/vendor/libgit2/src/libgit2/diff_tform.c +36 -8
- data/vendor/libgit2/src/libgit2/email.c +1 -0
- data/vendor/libgit2/src/libgit2/fetch.c +5 -3
- data/vendor/libgit2/src/libgit2/filter.c +5 -5
- data/vendor/libgit2/src/libgit2/git2.rc +3 -3
- data/vendor/libgit2/src/libgit2/grafts.c +18 -20
- data/vendor/libgit2/src/libgit2/grafts.h +0 -1
- data/vendor/libgit2/src/libgit2/graph.c +1 -1
- data/vendor/libgit2/src/libgit2/hashmap_oid.h +30 -0
- data/vendor/libgit2/src/libgit2/ignore.c +9 -5
- data/vendor/libgit2/src/libgit2/index.c +68 -90
- data/vendor/libgit2/src/libgit2/index.h +2 -2
- data/vendor/libgit2/src/libgit2/index_map.c +95 -0
- data/vendor/libgit2/src/libgit2/index_map.h +28 -0
- data/vendor/libgit2/src/libgit2/indexer.c +34 -38
- data/vendor/libgit2/src/libgit2/iterator.c +14 -8
- data/vendor/libgit2/src/libgit2/libgit2.c +153 -368
- data/vendor/libgit2/src/libgit2/mailmap.c +1 -1
- data/vendor/libgit2/src/libgit2/merge.c +42 -37
- data/vendor/libgit2/src/libgit2/merge_driver.c +2 -2
- data/vendor/libgit2/src/libgit2/midx.c +28 -15
- data/vendor/libgit2/src/libgit2/mwindow.c +38 -45
- data/vendor/libgit2/src/libgit2/mwindow.h +4 -0
- data/vendor/libgit2/src/libgit2/object.c +6 -5
- data/vendor/libgit2/src/libgit2/odb.c +5 -4
- data/vendor/libgit2/src/libgit2/odb_mempack.c +49 -17
- data/vendor/libgit2/src/libgit2/odb_pack.c +13 -5
- data/vendor/libgit2/src/libgit2/oid.c +32 -5
- data/vendor/libgit2/src/libgit2/oid.h +11 -0
- data/vendor/libgit2/src/libgit2/pack-objects.c +58 -31
- data/vendor/libgit2/src/libgit2/pack-objects.h +12 -4
- data/vendor/libgit2/src/libgit2/pack.c +30 -24
- data/vendor/libgit2/src/libgit2/pack.h +15 -10
- data/vendor/libgit2/src/libgit2/patch_parse.c +2 -2
- data/vendor/libgit2/src/libgit2/path.c +1 -1
- data/vendor/libgit2/src/libgit2/pathspec.c +1 -1
- data/vendor/libgit2/src/libgit2/push.c +79 -28
- data/vendor/libgit2/src/libgit2/push.h +1 -0
- data/vendor/libgit2/src/libgit2/refdb_fs.c +128 -61
- data/vendor/libgit2/src/libgit2/reflog.c +1 -2
- data/vendor/libgit2/src/libgit2/reflog.h +2 -0
- data/vendor/libgit2/src/libgit2/refs.c +26 -7
- data/vendor/libgit2/src/libgit2/refs.h +6 -1
- data/vendor/libgit2/src/libgit2/refspec.c +28 -1
- data/vendor/libgit2/src/libgit2/refspec.h +8 -0
- data/vendor/libgit2/src/libgit2/remote.c +121 -61
- data/vendor/libgit2/src/libgit2/repository.c +231 -51
- data/vendor/libgit2/src/libgit2/repository.h +10 -6
- data/vendor/libgit2/src/libgit2/revert.c +1 -2
- data/vendor/libgit2/src/libgit2/revparse.c +2 -2
- data/vendor/libgit2/src/libgit2/revwalk.c +13 -10
- data/vendor/libgit2/src/libgit2/revwalk.h +3 -3
- data/vendor/libgit2/src/libgit2/settings.c +468 -0
- data/vendor/libgit2/src/libgit2/settings.h +6 -2
- data/vendor/libgit2/src/libgit2/signature.c +132 -15
- data/vendor/libgit2/src/libgit2/signature.h +0 -1
- data/vendor/libgit2/src/libgit2/status.c +1 -1
- data/vendor/libgit2/src/libgit2/streams/mbedtls.c +54 -60
- data/vendor/libgit2/src/libgit2/streams/openssl.c +32 -7
- data/vendor/libgit2/src/libgit2/streams/openssl.h +2 -0
- data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.c +4 -0
- data/vendor/libgit2/src/libgit2/streams/openssl_dynamic.h +3 -0
- data/vendor/libgit2/src/libgit2/streams/stransport.c +39 -7
- data/vendor/libgit2/src/libgit2/submodule.c +106 -63
- data/vendor/libgit2/src/libgit2/submodule.h +6 -7
- data/vendor/libgit2/src/libgit2/tag.c +1 -1
- data/vendor/libgit2/src/libgit2/trailer.c +6 -6
- data/vendor/libgit2/src/libgit2/transaction.c +26 -20
- data/vendor/libgit2/src/libgit2/transaction.h +4 -1
- data/vendor/libgit2/src/libgit2/transport.c +4 -1
- data/vendor/libgit2/src/libgit2/transports/credential.c +1 -1
- data/vendor/libgit2/src/libgit2/transports/http.c +1 -2
- data/vendor/libgit2/src/libgit2/transports/http.h +0 -10
- data/vendor/libgit2/src/libgit2/transports/httpclient.c +112 -72
- data/vendor/libgit2/src/libgit2/transports/httpparser.c +128 -0
- data/vendor/libgit2/src/libgit2/transports/httpparser.h +99 -0
- data/vendor/libgit2/src/libgit2/transports/local.c +8 -7
- data/vendor/libgit2/src/libgit2/transports/smart.c +20 -8
- data/vendor/libgit2/src/libgit2/transports/smart.h +4 -2
- data/vendor/libgit2/src/libgit2/transports/smart_pkt.c +2 -2
- data/vendor/libgit2/src/libgit2/transports/smart_protocol.c +55 -10
- data/vendor/libgit2/src/libgit2/transports/ssh.c +41 -1103
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.c +347 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_exec.h +26 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.c +1126 -0
- data/vendor/libgit2/src/libgit2/transports/ssh_libssh2.h +28 -0
- data/vendor/libgit2/src/libgit2/transports/winhttp.c +35 -7
- data/vendor/libgit2/src/libgit2/tree.c +34 -26
- data/vendor/libgit2/src/libgit2/tree.h +3 -2
- data/vendor/libgit2/src/libgit2/worktree.c +14 -17
- data/vendor/libgit2/src/util/CMakeLists.txt +4 -6
- data/vendor/libgit2/src/util/alloc.c +4 -1
- data/vendor/libgit2/src/util/allocators/debugalloc.c +73 -0
- data/vendor/libgit2/src/{cli/cli.h → util/allocators/debugalloc.h} +6 -9
- data/vendor/libgit2/src/util/allocators/stdalloc.c +0 -10
- data/vendor/libgit2/src/util/array.h +18 -17
- data/vendor/libgit2/src/util/cc-compat.h +2 -0
- data/vendor/libgit2/src/util/ctype_compat.h +70 -0
- data/vendor/libgit2/src/util/date.c +22 -14
- data/vendor/libgit2/src/util/date.h +12 -0
- data/vendor/libgit2/src/util/errors.c +401 -0
- data/vendor/libgit2/src/{libgit2 → util}/errors.h +21 -17
- data/vendor/libgit2/src/util/fs_path.c +15 -4
- data/vendor/libgit2/src/util/fs_path.h +23 -0
- data/vendor/libgit2/src/util/futils.c +6 -5
- data/vendor/libgit2/src/util/futils.h +13 -4
- data/vendor/libgit2/src/util/git2_features.h.in +12 -1
- data/vendor/libgit2/src/util/git2_util.h +6 -0
- data/vendor/libgit2/src/util/hash/openssl.c +152 -0
- data/vendor/libgit2/src/util/hash/openssl.h +17 -1
- data/vendor/libgit2/src/util/hash/sha.h +4 -1
- data/vendor/libgit2/src/util/hashmap.h +424 -0
- data/vendor/libgit2/src/util/hashmap_str.h +43 -0
- data/vendor/libgit2/src/util/integer.h +3 -1
- data/vendor/libgit2/src/util/net.c +13 -7
- data/vendor/libgit2/src/util/net.h +2 -0
- data/vendor/libgit2/src/util/pool.c +1 -1
- data/vendor/libgit2/src/util/pool.h +5 -0
- data/vendor/libgit2/src/util/pqueue.h +1 -1
- data/vendor/libgit2/src/util/process.h +222 -0
- data/vendor/libgit2/src/util/rand.c +1 -7
- data/vendor/libgit2/src/util/regexp.c +1 -1
- data/vendor/libgit2/src/util/sortedcache.c +14 -13
- data/vendor/libgit2/src/util/sortedcache.h +3 -3
- data/vendor/libgit2/src/util/str.c +2 -2
- data/vendor/libgit2/src/util/strlist.c +108 -0
- data/vendor/libgit2/src/util/strlist.h +36 -0
- data/vendor/libgit2/src/util/unix/posix.h +0 -2
- data/vendor/libgit2/src/util/unix/process.c +629 -0
- data/vendor/libgit2/src/util/unix/realpath.c +23 -5
- data/vendor/libgit2/src/util/util.c +2 -2
- data/vendor/libgit2/src/util/util.h +4 -38
- data/vendor/libgit2/src/util/vector.c +3 -3
- data/vendor/libgit2/src/util/vector.h +2 -2
- data/vendor/libgit2/src/util/win32/posix_w32.c +29 -6
- data/vendor/libgit2/src/util/win32/process.c +506 -0
- metadata +45 -28
- data/vendor/libgit2/deps/http-parser/CMakeLists.txt +0 -6
- data/vendor/libgit2/deps/http-parser/COPYING +0 -23
- data/vendor/libgit2/deps/http-parser/http_parser.c +0 -2182
- data/vendor/libgit2/deps/http-parser/http_parser.h +0 -305
- data/vendor/libgit2/deps/zlib/COPYING +0 -27
- data/vendor/libgit2/include/git2/sys/reflog.h +0 -21
- data/vendor/libgit2/src/libgit2/config_entries.c +0 -237
- data/vendor/libgit2/src/libgit2/config_entries.h +0 -24
- data/vendor/libgit2/src/libgit2/errors.c +0 -293
- data/vendor/libgit2/src/libgit2/idxmap.c +0 -157
- data/vendor/libgit2/src/libgit2/idxmap.h +0 -177
- data/vendor/libgit2/src/libgit2/libgit2.h +0 -15
- data/vendor/libgit2/src/libgit2/offmap.c +0 -101
- data/vendor/libgit2/src/libgit2/offmap.h +0 -133
- data/vendor/libgit2/src/libgit2/oidmap.c +0 -107
- data/vendor/libgit2/src/libgit2/oidmap.h +0 -128
- data/vendor/libgit2/src/libgit2/threadstate.c +0 -97
- data/vendor/libgit2/src/libgit2/threadstate.h +0 -22
- data/vendor/libgit2/src/libgit2/transports/ssh.h +0 -14
- data/vendor/libgit2/src/util/khash.h +0 -615
- data/vendor/libgit2/src/util/strmap.c +0 -100
- data/vendor/libgit2/src/util/strmap.h +0 -131
- /data/vendor/libgit2/cmake/{FindHTTPParser.cmake → FindHTTP_Parser.cmake} +0 -0
@@ -32,7 +32,6 @@
|
|
32
32
|
# endif
|
33
33
|
#endif
|
34
34
|
|
35
|
-
#include <mbedtls/config.h>
|
36
35
|
#include <mbedtls/ssl.h>
|
37
36
|
#include <mbedtls/error.h>
|
38
37
|
#include <mbedtls/entropy.h>
|
@@ -40,12 +39,18 @@
|
|
40
39
|
|
41
40
|
#undef inline
|
42
41
|
|
43
|
-
#define GIT_SSL_DEFAULT_CIPHERS "TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-
|
44
|
-
#define GIT_SSL_DEFAULT_CIPHERS_COUNT
|
42
|
+
#define GIT_SSL_DEFAULT_CIPHERS "TLS1-3-AES-128-GCM-SHA256:TLS1-3-AES-256-GCM-SHA384:TLS1-3-CHACHA20-POLY1305-SHA256:TLS-ECDHE-ECDSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256:TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384:TLS-ECDHE-ECDSA-WITH-CHACHA20-POLY1305-SHA256:TLS-ECDHE-RSA-WITH-CHACHA20-POLY1305-SHA256:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-CHACHA20-POLY1305-SHA256:TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA256:TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA256:TLS-ECDHE-ECDSA-WITH-AES-128-CBC-SHA:TLS-ECDHE-RSA-WITH-AES-128-CBC-SHA:TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA384:TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA384:TLS-ECDHE-ECDSA-WITH-AES-256-CBC-SHA:TLS-ECDHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-RSA-WITH-AES-128-GCM-SHA256:TLS-RSA-WITH-AES-256-GCM-SHA384:TLS-RSA-WITH-AES-128-CBC-SHA256:TLS-RSA-WITH-AES-256-CBC-SHA256:TLS-RSA-WITH-AES-128-CBC-SHA:TLS-RSA-WITH-AES-256-CBC-SHA"
|
43
|
+
#define GIT_SSL_DEFAULT_CIPHERS_COUNT 28
|
45
44
|
|
46
|
-
static mbedtls_ssl_config *git__ssl_conf;
|
47
45
|
static int ciphers_list[GIT_SSL_DEFAULT_CIPHERS_COUNT];
|
48
|
-
|
46
|
+
|
47
|
+
static bool initialized = false;
|
48
|
+
static mbedtls_ssl_config mbedtls_config;
|
49
|
+
static mbedtls_ctr_drbg_context mbedtls_rng;
|
50
|
+
static mbedtls_entropy_context mbedtls_entropy;
|
51
|
+
|
52
|
+
static bool has_ca_chain = false;
|
53
|
+
static mbedtls_x509_crt mbedtls_ca_chain;
|
49
54
|
|
50
55
|
/**
|
51
56
|
* This function aims to clean-up the SSL context which
|
@@ -53,19 +58,16 @@ static mbedtls_entropy_context *mbedtls_entropy;
|
|
53
58
|
*/
|
54
59
|
static void shutdown_ssl(void)
|
55
60
|
{
|
56
|
-
if (
|
57
|
-
mbedtls_x509_crt_free(
|
58
|
-
|
59
|
-
mbedtls_ctr_drbg_free(git__ssl_conf->p_rng);
|
60
|
-
git__free(git__ssl_conf->p_rng);
|
61
|
-
mbedtls_ssl_config_free(git__ssl_conf);
|
62
|
-
git__free(git__ssl_conf);
|
63
|
-
git__ssl_conf = NULL;
|
61
|
+
if (has_ca_chain) {
|
62
|
+
mbedtls_x509_crt_free(&mbedtls_ca_chain);
|
63
|
+
has_ca_chain = false;
|
64
64
|
}
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
65
|
+
|
66
|
+
if (initialized) {
|
67
|
+
mbedtls_ctr_drbg_free(&mbedtls_rng);
|
68
|
+
mbedtls_ssl_config_free(&mbedtls_config);
|
69
|
+
mbedtls_entropy_free(&mbedtls_entropy);
|
70
|
+
initialized = false;
|
69
71
|
}
|
70
72
|
}
|
71
73
|
|
@@ -74,32 +76,33 @@ int git_mbedtls_stream_global_init(void)
|
|
74
76
|
int loaded = 0;
|
75
77
|
char *crtpath = GIT_DEFAULT_CERT_LOCATION;
|
76
78
|
struct stat statbuf;
|
77
|
-
mbedtls_ctr_drbg_context *ctr_drbg = NULL;
|
78
79
|
|
79
80
|
size_t ciphers_known = 0;
|
80
81
|
char *cipher_name = NULL;
|
81
82
|
char *cipher_string = NULL;
|
82
83
|
char *cipher_string_tmp = NULL;
|
83
84
|
|
84
|
-
|
85
|
-
|
85
|
+
mbedtls_ssl_config_init(&mbedtls_config);
|
86
|
+
mbedtls_entropy_init(&mbedtls_entropy);
|
87
|
+
mbedtls_ctr_drbg_init(&mbedtls_rng);
|
86
88
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
MBEDTLS_SSL_PRESET_DEFAULT) != 0) {
|
89
|
+
if (mbedtls_ssl_config_defaults(&mbedtls_config,
|
90
|
+
MBEDTLS_SSL_IS_CLIENT,
|
91
|
+
MBEDTLS_SSL_TRANSPORT_STREAM,
|
92
|
+
MBEDTLS_SSL_PRESET_DEFAULT) != 0) {
|
92
93
|
git_error_set(GIT_ERROR_SSL, "failed to initialize mbedTLS");
|
93
94
|
goto cleanup;
|
94
95
|
}
|
95
96
|
|
96
|
-
/* configure TLSv1 */
|
97
|
-
|
97
|
+
/* configure TLSv1.1 or better */
|
98
|
+
#ifdef MBEDTLS_SSL_MINOR_VERSION_2
|
99
|
+
mbedtls_ssl_conf_min_version(&mbedtls_config, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_2);
|
100
|
+
#endif
|
98
101
|
|
99
102
|
/* verify_server_cert is responsible for making the check.
|
100
103
|
* OPTIONAL because REQUIRED drops the certificate as soon as the check
|
101
104
|
* is made, so we can never see the certificate and override it. */
|
102
|
-
mbedtls_ssl_conf_authmode(
|
105
|
+
mbedtls_ssl_conf_authmode(&mbedtls_config, MBEDTLS_SSL_VERIFY_OPTIONAL);
|
103
106
|
|
104
107
|
/* set the list of allowed ciphersuites */
|
105
108
|
ciphers_known = 0;
|
@@ -123,42 +126,33 @@ int git_mbedtls_stream_global_init(void)
|
|
123
126
|
git_error_set(GIT_ERROR_SSL, "no cipher could be enabled");
|
124
127
|
goto cleanup;
|
125
128
|
}
|
126
|
-
mbedtls_ssl_conf_ciphersuites(
|
129
|
+
mbedtls_ssl_conf_ciphersuites(&mbedtls_config, ciphers_list);
|
127
130
|
|
128
131
|
/* Seeding the random number generator */
|
129
|
-
mbedtls_entropy = git__malloc(sizeof(mbedtls_entropy_context));
|
130
|
-
GIT_ERROR_CHECK_ALLOC(mbedtls_entropy);
|
131
|
-
|
132
|
-
mbedtls_entropy_init(mbedtls_entropy);
|
133
|
-
|
134
|
-
ctr_drbg = git__malloc(sizeof(mbedtls_ctr_drbg_context));
|
135
|
-
GIT_ERROR_CHECK_ALLOC(ctr_drbg);
|
136
132
|
|
137
|
-
|
138
|
-
|
139
|
-
if (mbedtls_ctr_drbg_seed(ctr_drbg,
|
140
|
-
mbedtls_entropy_func,
|
141
|
-
mbedtls_entropy, NULL, 0) != 0) {
|
133
|
+
if (mbedtls_ctr_drbg_seed(&mbedtls_rng, mbedtls_entropy_func,
|
134
|
+
&mbedtls_entropy, NULL, 0) != 0) {
|
142
135
|
git_error_set(GIT_ERROR_SSL, "failed to initialize mbedTLS entropy pool");
|
143
136
|
goto cleanup;
|
144
137
|
}
|
145
138
|
|
146
|
-
mbedtls_ssl_conf_rng(
|
139
|
+
mbedtls_ssl_conf_rng(&mbedtls_config, mbedtls_ctr_drbg_random, &mbedtls_rng);
|
147
140
|
|
148
141
|
/* load default certificates */
|
149
142
|
if (crtpath != NULL && stat(crtpath, &statbuf) == 0 && S_ISREG(statbuf.st_mode))
|
150
143
|
loaded = (git_mbedtls__set_cert_location(crtpath, NULL) == 0);
|
144
|
+
|
151
145
|
if (!loaded && crtpath != NULL && stat(crtpath, &statbuf) == 0 && S_ISDIR(statbuf.st_mode))
|
152
146
|
loaded = (git_mbedtls__set_cert_location(NULL, crtpath) == 0);
|
153
147
|
|
148
|
+
initialized = true;
|
149
|
+
|
154
150
|
return git_runtime_shutdown_register(shutdown_ssl);
|
155
151
|
|
156
152
|
cleanup:
|
157
|
-
mbedtls_ctr_drbg_free(
|
158
|
-
|
159
|
-
|
160
|
-
git__free(git__ssl_conf);
|
161
|
-
git__ssl_conf = NULL;
|
153
|
+
mbedtls_ctr_drbg_free(&mbedtls_rng);
|
154
|
+
mbedtls_ssl_config_free(&mbedtls_config);
|
155
|
+
mbedtls_entropy_free(&mbedtls_entropy);
|
162
156
|
|
163
157
|
return -1;
|
164
158
|
}
|
@@ -192,7 +186,7 @@ static int ssl_set_error(mbedtls_ssl_context *ssl, int error)
|
|
192
186
|
break;
|
193
187
|
|
194
188
|
case MBEDTLS_ERR_X509_CERT_VERIFY_FAILED:
|
195
|
-
git_error_set(GIT_ERROR_SSL, "SSL error: %#04x [%x] - %s", error, ssl
|
189
|
+
git_error_set(GIT_ERROR_SSL, "SSL error: %#04x [%x] - %s", error, mbedtls_ssl_get_verify_result(ssl), errbuf);
|
196
190
|
ret = GIT_ECERTIFICATE;
|
197
191
|
break;
|
198
192
|
|
@@ -374,7 +368,7 @@ static int mbedtls_stream_wrap(
|
|
374
368
|
st->ssl = git__malloc(sizeof(mbedtls_ssl_context));
|
375
369
|
GIT_ERROR_CHECK_ALLOC(st->ssl);
|
376
370
|
mbedtls_ssl_init(st->ssl);
|
377
|
-
if (mbedtls_ssl_setup(st->ssl,
|
371
|
+
if (mbedtls_ssl_setup(st->ssl, &mbedtls_config)) {
|
378
372
|
git_error_set(GIT_ERROR_SSL, "failed to create ssl object");
|
379
373
|
error = -1;
|
380
374
|
goto out_err;
|
@@ -441,30 +435,30 @@ int git_mbedtls__set_cert_location(const char *file, const char *path)
|
|
441
435
|
{
|
442
436
|
int ret = 0;
|
443
437
|
char errbuf[512];
|
444
|
-
mbedtls_x509_crt *cacert;
|
445
438
|
|
446
439
|
GIT_ASSERT_ARG(file || path);
|
447
440
|
|
448
|
-
|
449
|
-
|
441
|
+
if (has_ca_chain)
|
442
|
+
mbedtls_x509_crt_free(&mbedtls_ca_chain);
|
443
|
+
|
444
|
+
mbedtls_x509_crt_init(&mbedtls_ca_chain);
|
450
445
|
|
451
|
-
mbedtls_x509_crt_init(cacert);
|
452
446
|
if (file)
|
453
|
-
ret = mbedtls_x509_crt_parse_file(
|
447
|
+
ret = mbedtls_x509_crt_parse_file(&mbedtls_ca_chain, file);
|
448
|
+
|
454
449
|
if (ret >= 0 && path)
|
455
|
-
ret = mbedtls_x509_crt_parse_path(
|
450
|
+
ret = mbedtls_x509_crt_parse_path(&mbedtls_ca_chain, path);
|
451
|
+
|
456
452
|
/* mbedtls_x509_crt_parse_path returns the number of invalid certs on success */
|
457
453
|
if (ret < 0) {
|
458
|
-
mbedtls_x509_crt_free(
|
459
|
-
git__free(cacert);
|
454
|
+
mbedtls_x509_crt_free(&mbedtls_ca_chain);
|
460
455
|
mbedtls_strerror( ret, errbuf, 512 );
|
461
456
|
git_error_set(GIT_ERROR_SSL, "failed to load CA certificates: %#04x - %s", ret, errbuf);
|
462
457
|
return -1;
|
463
458
|
}
|
464
459
|
|
465
|
-
|
466
|
-
|
467
|
-
mbedtls_ssl_conf_ca_chain(git__ssl_conf, cacert, NULL);
|
460
|
+
mbedtls_ssl_conf_ca_chain(&mbedtls_config, &mbedtls_ca_chain, NULL);
|
461
|
+
has_ca_chain = true;
|
468
462
|
|
469
463
|
return 0;
|
470
464
|
}
|
@@ -36,10 +36,11 @@
|
|
36
36
|
# include <openssl/bio.h>
|
37
37
|
#endif
|
38
38
|
|
39
|
-
|
39
|
+
extern char *git__ssl_ciphers;
|
40
40
|
|
41
|
-
|
41
|
+
SSL_CTX *git__ssl_ctx;
|
42
42
|
|
43
|
+
#define GIT_SSL_DEFAULT_CIPHERS "TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA"
|
43
44
|
|
44
45
|
static BIO_METHOD *git_stream_bio_method;
|
45
46
|
static int init_bio_method(void);
|
@@ -105,7 +106,7 @@ static void git_openssl_free(void *mem)
|
|
105
106
|
static int openssl_init(void)
|
106
107
|
{
|
107
108
|
long ssl_opts = SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3;
|
108
|
-
const char *ciphers =
|
109
|
+
const char *ciphers = git__ssl_ciphers;
|
109
110
|
#ifdef VALGRIND
|
110
111
|
static bool allocators_initialized = false;
|
111
112
|
#endif
|
@@ -133,10 +134,10 @@ static int openssl_init(void)
|
|
133
134
|
OPENSSL_init_ssl(0, NULL);
|
134
135
|
|
135
136
|
/*
|
136
|
-
*
|
137
|
-
*
|
138
|
-
*
|
139
|
-
*
|
137
|
+
* Despite the name SSLv23_method, this is actually a version-
|
138
|
+
* flexible context, which honors the protocol versions
|
139
|
+
* specified in `ssl_opts`. So we only support TLSv1.0 and
|
140
|
+
* higher.
|
140
141
|
*/
|
141
142
|
if (!(git__ssl_ctx = SSL_CTX_new(SSLv23_method())))
|
142
143
|
goto error;
|
@@ -720,6 +721,30 @@ int git_openssl__set_cert_location(const char *file, const char *path)
|
|
720
721
|
return 0;
|
721
722
|
}
|
722
723
|
|
724
|
+
int git_openssl__add_x509_cert(X509 *cert)
|
725
|
+
{
|
726
|
+
X509_STORE *cert_store;
|
727
|
+
|
728
|
+
if (openssl_ensure_initialized() < 0)
|
729
|
+
return -1;
|
730
|
+
|
731
|
+
if (!(cert_store = SSL_CTX_get_cert_store(git__ssl_ctx)))
|
732
|
+
return -1;
|
733
|
+
|
734
|
+
if (cert && X509_STORE_add_cert(cert_store, cert) == 0) {
|
735
|
+
git_error_set(GIT_ERROR_SSL, "OpenSSL error: failed to add raw X509 certificate");
|
736
|
+
return -1;
|
737
|
+
}
|
738
|
+
|
739
|
+
return 0;
|
740
|
+
}
|
741
|
+
|
742
|
+
int git_openssl__reset_context(void)
|
743
|
+
{
|
744
|
+
shutdown_ssl();
|
745
|
+
return openssl_init();
|
746
|
+
}
|
747
|
+
|
723
748
|
#else
|
724
749
|
|
725
750
|
#include "stream.h"
|
@@ -24,6 +24,8 @@ extern int git_openssl_stream_global_init(void);
|
|
24
24
|
|
25
25
|
#ifdef GIT_OPENSSL
|
26
26
|
extern int git_openssl__set_cert_location(const char *file, const char *path);
|
27
|
+
extern int git_openssl__add_x509_cert(X509 *cert);
|
28
|
+
extern int git_openssl__reset_context(void);
|
27
29
|
extern int git_openssl_stream_new(git_stream **out, const char *host, const char *port);
|
28
30
|
extern int git_openssl_stream_wrap(git_stream **out, git_stream *in, const char *host);
|
29
31
|
#endif
|
@@ -65,6 +65,7 @@ int (*SSL_write)(SSL *ssl, const void *buf, int num);
|
|
65
65
|
long (*SSL_CTX_ctrl)(SSL_CTX *ctx, int cmd, long larg, void *parg);
|
66
66
|
void (*SSL_CTX_free)(SSL_CTX *ctx);
|
67
67
|
SSL_CTX *(*SSL_CTX_new)(const SSL_METHOD *method);
|
68
|
+
X509_STORE *(*SSL_CTX_get_cert_store)(const SSL_CTX *);
|
68
69
|
int (*SSL_CTX_set_cipher_list)(SSL_CTX *ctx, const char *str);
|
69
70
|
int (*SSL_CTX_set_default_verify_paths)(SSL_CTX *ctx);
|
70
71
|
long (*SSL_CTX_set_options)(SSL_CTX *ctx, long options);
|
@@ -80,6 +81,7 @@ int (*X509_NAME_get_index_by_NID)(X509_NAME *name, int nid, int lastpos);
|
|
80
81
|
void (*X509_free)(X509 *a);
|
81
82
|
void *(*X509_get_ext_d2i)(const X509 *x, int nid, int *crit, int *idx);
|
82
83
|
X509_NAME *(*X509_get_subject_name)(const X509 *x);
|
84
|
+
int (*X509_STORE_add_cert)(X509_STORE *ctx, X509 *x);
|
83
85
|
|
84
86
|
int (*i2d_X509)(X509 *a, unsigned char **ppout);
|
85
87
|
|
@@ -194,6 +196,7 @@ int git_openssl_stream_dynamic_init(void)
|
|
194
196
|
SSL_CTX_ctrl = (long (*)(SSL_CTX *, int, long, void *))openssl_sym(&err, "SSL_CTX_ctrl", true);
|
195
197
|
SSL_CTX_free = (void (*)(SSL_CTX *))openssl_sym(&err, "SSL_CTX_free", true);
|
196
198
|
SSL_CTX_new = (SSL_CTX *(*)(const SSL_METHOD *))openssl_sym(&err, "SSL_CTX_new", true);
|
199
|
+
SSL_CTX_get_cert_store = (X509_STORE *(*)(const SSL_CTX *))openssl_sym(&err, "SSL_CTX_get_cert_store", true);
|
197
200
|
SSL_CTX_set_cipher_list = (int (*)(SSL_CTX *, const char *))openssl_sym(&err, "SSL_CTX_set_cipher_list", true);
|
198
201
|
SSL_CTX_set_default_verify_paths = (int (*)(SSL_CTX *ctx))openssl_sym(&err, "SSL_CTX_set_default_verify_paths", true);
|
199
202
|
SSL_CTX_set_options = (long (*)(SSL_CTX *, long))openssl_sym(&err, "SSL_CTX_set_options", false);
|
@@ -209,6 +212,7 @@ int git_openssl_stream_dynamic_init(void)
|
|
209
212
|
X509_free = (void (*)(X509 *))openssl_sym(&err, "X509_free", true);
|
210
213
|
X509_get_ext_d2i = (void *(*)(const X509 *x, int nid, int *crit, int *idx))openssl_sym(&err, "X509_get_ext_d2i", true);
|
211
214
|
X509_get_subject_name = (X509_NAME *(*)(const X509 *))openssl_sym(&err, "X509_get_subject_name", true);
|
215
|
+
X509_STORE_add_cert = (int (*)(X509_STORE *ctx, X509 *x))openssl_sym(&err, "X509_STORE_add_cert", true);
|
212
216
|
|
213
217
|
i2d_X509 = (int (*)(X509 *a, unsigned char **ppout))openssl_sym(&err, "i2d_X509", true);
|
214
218
|
|
@@ -204,6 +204,7 @@ typedef void SSL_METHOD;
|
|
204
204
|
typedef void X509;
|
205
205
|
typedef void X509_NAME;
|
206
206
|
typedef void X509_NAME_ENTRY;
|
207
|
+
typedef void X509_STORE;
|
207
208
|
typedef void X509_STORE_CTX;
|
208
209
|
|
209
210
|
typedef struct {
|
@@ -309,6 +310,7 @@ extern int (*SSL_write)(SSL *ssl, const void *buf, int num);
|
|
309
310
|
extern long (*SSL_CTX_ctrl)(SSL_CTX *ctx, int cmd, long larg, void *parg);
|
310
311
|
extern void (*SSL_CTX_free)(SSL_CTX *ctx);
|
311
312
|
extern SSL_CTX *(*SSL_CTX_new)(const SSL_METHOD *method);
|
313
|
+
extern X509_STORE *(*SSL_CTX_get_cert_store)(const SSL_CTX *ctx);
|
312
314
|
extern int (*SSL_CTX_set_cipher_list)(SSL_CTX *ctx, const char *str);
|
313
315
|
extern int (*SSL_CTX_set_default_verify_paths)(SSL_CTX *ctx);
|
314
316
|
extern long (*SSL_CTX_set_options)(SSL_CTX *ctx, long options);
|
@@ -326,6 +328,7 @@ extern int (*X509_NAME_get_index_by_NID)(X509_NAME *name, int nid, int lastpos);
|
|
326
328
|
extern void (*X509_free)(X509 *a);
|
327
329
|
extern void *(*X509_get_ext_d2i)(const X509 *x, int nid, int *crit, int *idx);
|
328
330
|
extern X509_NAME *(*X509_get_subject_name)(const X509 *x);
|
331
|
+
extern int (*X509_STORE_add_cert)(X509_STORE *ctx, X509 *x);
|
329
332
|
|
330
333
|
extern int (*i2d_X509)(X509 *a, unsigned char **ppout);
|
331
334
|
|
@@ -13,13 +13,16 @@
|
|
13
13
|
#include <Security/SecureTransport.h>
|
14
14
|
#include <Security/SecCertificate.h>
|
15
15
|
|
16
|
+
#include "common.h"
|
17
|
+
#include "trace.h"
|
16
18
|
#include "git2/transport.h"
|
17
|
-
|
18
19
|
#include "streams/socket.h"
|
19
20
|
|
20
21
|
static int stransport_error(OSStatus ret)
|
21
22
|
{
|
22
|
-
CFStringRef
|
23
|
+
CFStringRef message_ref = NULL;
|
24
|
+
const char *message_cstr = NULL;
|
25
|
+
char *message_ptr = NULL;
|
23
26
|
|
24
27
|
if (ret == noErr || ret == errSSLClosedGraceful) {
|
25
28
|
git_error_clear();
|
@@ -27,14 +30,39 @@ static int stransport_error(OSStatus ret)
|
|
27
30
|
}
|
28
31
|
|
29
32
|
#if !TARGET_OS_IPHONE
|
30
|
-
|
31
|
-
GIT_ERROR_CHECK_ALLOC(
|
33
|
+
message_ref = SecCopyErrorMessageString(ret, NULL);
|
34
|
+
GIT_ERROR_CHECK_ALLOC(message_ref);
|
35
|
+
|
36
|
+
/*
|
37
|
+
* Attempt the cheap CFString conversion; this can return NULL
|
38
|
+
* when that would be expensive. In that case, call the more
|
39
|
+
* expensive function.
|
40
|
+
*/
|
41
|
+
message_cstr = CFStringGetCStringPtr(message_ref, kCFStringEncodingUTF8);
|
42
|
+
|
43
|
+
if (!message_cstr) {
|
44
|
+
/* Provide buffer to convert from UTF16 to UTF8 */
|
45
|
+
size_t message_size = CFStringGetLength(message_ref) * 2 + 1;
|
46
|
+
|
47
|
+
message_cstr = message_ptr = git__malloc(message_size);
|
48
|
+
GIT_ERROR_CHECK_ALLOC(message_ptr);
|
49
|
+
|
50
|
+
if (!CFStringGetCString(message_ref, message_ptr, message_size, kCFStringEncodingUTF8)) {
|
51
|
+
git_error_set(GIT_ERROR_NET, "SecureTransport error: %d", (unsigned int)ret);
|
52
|
+
goto done;
|
53
|
+
}
|
54
|
+
}
|
32
55
|
|
33
|
-
git_error_set(GIT_ERROR_NET, "SecureTransport error: %s",
|
34
|
-
|
56
|
+
git_error_set(GIT_ERROR_NET, "SecureTransport error: %s", message_cstr);
|
57
|
+
|
58
|
+
done:
|
59
|
+
git__free(message_ptr);
|
60
|
+
CFRelease(message_ref);
|
35
61
|
#else
|
36
62
|
git_error_set(GIT_ERROR_NET, "SecureTransport error: OSStatus %d", (unsigned int)ret);
|
37
|
-
GIT_UNUSED(
|
63
|
+
GIT_UNUSED(message_ref);
|
64
|
+
GIT_UNUSED(message_cstr);
|
65
|
+
GIT_UNUSED(message_ptr);
|
38
66
|
#endif
|
39
67
|
|
40
68
|
return -1;
|
@@ -236,6 +264,10 @@ static ssize_t stransport_read(git_stream *stream, void *data, size_t len)
|
|
236
264
|
OSStatus ret;
|
237
265
|
|
238
266
|
if ((ret = SSLRead(st->ctx, data, len, &processed)) != noErr) {
|
267
|
+
/* This specific SecureTransport error is not well described */
|
268
|
+
if (ret == -9806)
|
269
|
+
git_trace(GIT_TRACE_INFO, "SecureTraceport error during SSLRead: returned -9806 (connection closed via error)");
|
270
|
+
|
239
271
|
if (st->error == GIT_TIMEOUT)
|
240
272
|
return GIT_TIMEOUT;
|
241
273
|
|