rugged 1.4.5 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +34 -2
- data/ext/rugged/extconf.rb +1 -0
- data/ext/rugged/rugged.c +16 -0
- data/ext/rugged/rugged.h +4 -0
- data/ext/rugged/rugged_remote.c +10 -10
- data/ext/rugged/rugged_repo.c +2 -7
- data/ext/rugged/rugged_settings.c +5 -0
- data/lib/rugged/tree.rb +4 -0
- data/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/CMakeLists.txt +16 -3
- data/vendor/libgit2/COPYING +40 -0
- data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
- data/vendor/libgit2/cmake/FindPCRE.cmake +3 -4
- data/vendor/libgit2/cmake/FindPCRE2.cmake +1 -1
- data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +1 -1
- data/vendor/libgit2/cmake/SelectHashes.cmake +62 -14
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
- data/vendor/libgit2/include/git2/branch.h +2 -2
- data/vendor/libgit2/include/git2/common.h +11 -0
- data/vendor/libgit2/include/git2/config.h +6 -6
- data/vendor/libgit2/include/git2/deprecated.h +2 -0
- data/vendor/libgit2/include/git2/errors.h +17 -3
- data/vendor/libgit2/include/git2/merge.h +1 -1
- data/vendor/libgit2/include/git2/status.h +5 -2
- data/vendor/libgit2/include/git2/sys/remote.h +15 -0
- data/vendor/libgit2/include/git2/sys/transport.h +9 -5
- data/vendor/libgit2/include/git2/version.h +27 -6
- data/vendor/libgit2/src/CMakeLists.txt +104 -214
- data/vendor/libgit2/src/README.md +12 -0
- data/vendor/libgit2/src/cli/CMakeLists.txt +53 -0
- data/vendor/libgit2/src/cli/README.md +26 -0
- data/vendor/libgit2/src/cli/cli.h +20 -0
- data/vendor/libgit2/src/cli/cmd.c +21 -0
- data/vendor/libgit2/src/cli/cmd.h +33 -0
- data/vendor/libgit2/src/cli/cmd_cat_file.c +204 -0
- data/vendor/libgit2/src/cli/cmd_clone.c +176 -0
- data/vendor/libgit2/src/cli/cmd_hash_object.c +135 -0
- data/vendor/libgit2/src/cli/cmd_help.c +86 -0
- data/vendor/libgit2/src/cli/error.h +51 -0
- data/vendor/libgit2/src/cli/main.c +106 -0
- data/vendor/libgit2/src/cli/opt.c +669 -0
- data/vendor/libgit2/src/cli/opt.h +349 -0
- data/vendor/libgit2/src/cli/opt_usage.c +194 -0
- data/vendor/libgit2/src/cli/opt_usage.h +35 -0
- data/vendor/libgit2/src/cli/progress.c +345 -0
- data/vendor/libgit2/src/cli/progress.h +117 -0
- data/vendor/libgit2/src/cli/sighandler.h +20 -0
- data/vendor/libgit2/src/cli/unix/sighandler.c +36 -0
- data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
- data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
- data/vendor/libgit2/src/features.h.in +9 -0
- data/vendor/libgit2/src/libgit2/CMakeLists.txt +131 -0
- data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +1 -1
- data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +14 -9
- data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +20 -17
- data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +1 -1
- data/vendor/libgit2/src/libgit2/common.h +55 -0
- data/vendor/libgit2/src/{config.c → libgit2/config.c} +2 -2
- data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +1 -1
- data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +1 -0
- data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
- data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +31 -1
- data/vendor/libgit2/src/{index.c → libgit2/index.c} +6 -6
- data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +2 -2
- data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +3 -3
- data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +5 -0
- data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +20 -23
- data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +2 -1
- data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +9 -9
- data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +1 -1
- data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +0 -1
- data/vendor/libgit2/src/{object.c → libgit2/object.c} +1 -0
- data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +2 -2
- data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +2 -21
- data/vendor/libgit2/src/{oid.h → libgit2/oid.h} +35 -2
- data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
- data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +24 -18
- data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +3 -2
- data/vendor/libgit2/src/{path.c → libgit2/path.c} +1 -0
- data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +11 -1
- data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +6 -2
- data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +1 -1
- data/vendor/libgit2/src/{remote.h → libgit2/remote.h} +1 -1
- data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1 -0
- data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +15 -5
- data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +1 -1
- data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +12 -0
- data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +91 -326
- data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +1 -1
- data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +16 -23
- data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +1 -1
- data/vendor/libgit2/src/util/CMakeLists.txt +74 -0
- data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.h +1 -1
- data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
- data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{array.h → util/array.h} +1 -1
- data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
- data/vendor/libgit2/src/{date.c → util/date.c} +4 -3
- data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +1 -1
- data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +1 -1
- data/vendor/libgit2/src/{fs_path.c → util/fs_path.c} +17 -11
- data/vendor/libgit2/src/{fs_path.h → util/fs_path.h} +1 -1
- data/vendor/libgit2/src/{futils.c → util/futils.c} +44 -2
- data/vendor/libgit2/src/{futils.h → util/futils.h} +2 -1
- data/vendor/libgit2/src/{common.h → util/git2_util.h} +13 -59
- data/vendor/libgit2/src/util/hash/builtin.c +53 -0
- data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +1 -1
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.c +55 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.c +46 -0
- data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
- data/vendor/libgit2/src/util/hash/openssl.c +194 -0
- data/vendor/libgit2/src/util/hash/openssl.h +45 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha.h +355 -0
- data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
- data/vendor/libgit2/src/util/hash/sha.h +70 -0
- data/vendor/libgit2/src/util/hash/win32.c +549 -0
- data/vendor/libgit2/src/util/hash/win32.h +60 -0
- data/vendor/libgit2/src/{hash.c → util/hash.c} +17 -1
- data/vendor/libgit2/src/{hash.h → util/hash.h} +5 -3
- data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
- data/vendor/libgit2/src/{net.c → util/net.c} +0 -1
- data/vendor/libgit2/src/{net.h → util/net.h} +1 -1
- data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
- data/vendor/libgit2/src/{posix.h → util/posix.h} +1 -1
- data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +1 -1
- data/vendor/libgit2/src/{rand.c → util/rand.c} +7 -3
- data/vendor/libgit2/src/{rand.h → util/rand.h} +1 -1
- data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
- data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
- data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
- data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +1 -1
- data/vendor/libgit2/src/{str.h → util/str.h} +1 -1
- data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
- data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
- data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -1
- data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -1
- data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
- data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
- data/vendor/libgit2/src/{util.c → util/util.c} +1 -1
- data/vendor/libgit2/src/{util.h → util/util.h} +1 -1
- data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
- data/vendor/libgit2/src/{vector.h → util/vector.h} +1 -1
- data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/findfile.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +1 -1
- data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
- data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
- data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
- data/vendor/libgit2/src/{zstream.h → util/zstream.h} +1 -1
- metadata +390 -361
- data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
- data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
- data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
- data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
- data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
- data/vendor/libgit2/src/hash/sha1.h +0 -40
- /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
- /data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +0 -0
- /data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +0 -0
- /data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +0 -0
- /data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +0 -0
- /data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +0 -0
- /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
- /data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +0 -0
- /data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +0 -0
- /data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +0 -0
- /data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
- /data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +0 -0
- /data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
- /data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +0 -0
- /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
- /data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +0 -0
- /data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +0 -0
- /data/vendor/libgit2/src/{buf.c → libgit2/buf.c} +0 -0
- /data/vendor/libgit2/src/{buf.h → libgit2/buf.h} +0 -0
- /data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +0 -0
- /data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +0 -0
- /data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +0 -0
- /data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
- /data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +0 -0
- /data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +0 -0
- /data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
- /data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +0 -0
- /data/vendor/libgit2/src/{commit.h → libgit2/commit.h} +0 -0
- /data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +0 -0
- /data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
- /data/vendor/libgit2/src/{config.h → libgit2/config.h} +0 -0
- /data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +0 -0
- /data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +0 -0
- /data/vendor/libgit2/src/{config_entries.c → libgit2/config_entries.c} +0 -0
- /data/vendor/libgit2/src/{config_entries.h → libgit2/config_entries.h} +0 -0
- /data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +0 -0
- /data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +0 -0
- /data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +0 -0
- /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
- /data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +0 -0
- /data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +0 -0
- /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
- /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
- /data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +0 -0
- /data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +0 -0
- /data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +0 -0
- /data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +0 -0
- /data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +0 -0
- /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
- /data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +0 -0
- /data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +0 -0
- /data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +0 -0
- /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
- /data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +0 -0
- /data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +0 -0
- /data/vendor/libgit2/src/{diff_stats.h → libgit2/diff_stats.h} +0 -0
- /data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +0 -0
- /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
- /data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
- /data/vendor/libgit2/src/{email.c → libgit2/email.c} +0 -0
- /data/vendor/libgit2/src/{email.h → libgit2/email.h} +0 -0
- /data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +0 -0
- /data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +0 -0
- /data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +0 -0
- /data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +0 -0
- /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
- /data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +0 -0
- /data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +0 -0
- /data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +0 -0
- /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
- /data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +0 -0
- /data/vendor/libgit2/src/{idxmap.c → libgit2/idxmap.c} +0 -0
- /data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
- /data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +0 -0
- /data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +0 -0
- /data/vendor/libgit2/src/{index.h → libgit2/index.h} +0 -0
- /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
- /data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +0 -0
- /data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
- /data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +0 -0
- /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
- /data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +0 -0
- /data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +0 -0
- /data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +0 -0
- /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
- /data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +0 -0
- /data/vendor/libgit2/src/{message.c → libgit2/message.c} +0 -0
- /data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +0 -0
- /data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +0 -0
- /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
- /data/vendor/libgit2/src/{object.h → libgit2/object.h} +0 -0
- /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
- /data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +0 -0
- /data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +0 -0
- /data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +0 -0
- /data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +0 -0
- /data/vendor/libgit2/src/{offmap.c → libgit2/offmap.c} +0 -0
- /data/vendor/libgit2/src/{offmap.h → libgit2/offmap.h} +0 -0
- /data/vendor/libgit2/src/{oidarray.c → libgit2/oidarray.c} +0 -0
- /data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +0 -0
- /data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
- /data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +0 -0
- /data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +0 -0
- /data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +0 -0
- /data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
- /data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +0 -0
- /data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +0 -0
- /data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +0 -0
- /data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +0 -0
- /data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +0 -0
- /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
- /data/vendor/libgit2/src/{path.h → libgit2/path.h} +0 -0
- /data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +0 -0
- /data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +0 -0
- /data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +0 -0
- /data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +0 -0
- /data/vendor/libgit2/src/{push.c → libgit2/push.c} +0 -0
- /data/vendor/libgit2/src/{push.h → libgit2/push.h} +0 -0
- /data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +0 -0
- /data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +0 -0
- /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
- /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
- /data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +0 -0
- /data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +0 -0
- /data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +0 -0
- /data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +0 -0
- /data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +0 -0
- /data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +0 -0
- /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
- /data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +0 -0
- /data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +0 -0
- /data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +0 -0
- /data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +0 -0
- /data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +0 -0
- /data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +0 -0
- /data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +0 -0
- /data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +0 -0
- /data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +0 -0
- /data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +0 -0
- /data/vendor/libgit2/src/{status.c → libgit2/status.c} +0 -0
- /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
- /data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +0 -0
- /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +0 -0
- /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
- /data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +0 -0
- /data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +0 -0
- /data/vendor/libgit2/src/{sysdir.c → libgit2/sysdir.c} +0 -0
- /data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +0 -0
- /data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +0 -0
- /data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +0 -0
- /data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +0 -0
- /data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +0 -0
- /data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +0 -0
- /data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +0 -0
- /data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +0 -0
- /data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
- /data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
- /data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +0 -0
- /data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +0 -0
- /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
- /data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +0 -0
- /data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/git-xdiff.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xtypes.h +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +0 -0
- /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
- /data/vendor/libgit2/src/{alloc.c → util/alloc.c} +0 -0
- /data/vendor/libgit2/src/{alloc.h → util/alloc.h} +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.c +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
- /data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
- /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
- /data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +0 -0
- /data/vendor/libgit2/src/{date.h → util/date.h} +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
- /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
- /data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
- /data/vendor/libgit2/src/{khash.h → util/khash.h} +0 -0
- /data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
- /data/vendor/libgit2/src/{posix.c → util/posix.c} +0 -0
- /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
- /data/vendor/libgit2/src/{regexp.c → util/regexp.c} +0 -0
- /data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +0 -0
- /data/vendor/libgit2/src/{str.c → util/str.c} +0 -0
- /data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
- /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
- /data/vendor/libgit2/src/{thread.h → util/thread.h} +0 -0
- /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
- /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
- /data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
- /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/findfile.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
- /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
- /data/vendor/libgit2/src/{zstream.c → util/zstream.c} +0 -0
@@ -421,119 +421,15 @@ static int request_creds(git_credential **out, ssh_subtransport *t, const char *
|
|
421
421
|
return 0;
|
422
422
|
}
|
423
423
|
|
424
|
-
#define KNOWN_HOSTS_FILE ".ssh/known_hosts"
|
425
|
-
|
426
|
-
/*
|
427
|
-
* Load the known_hosts file.
|
428
|
-
*
|
429
|
-
* Returns success but leaves the output NULL if we couldn't find the file.
|
430
|
-
*/
|
431
|
-
static int load_known_hosts(LIBSSH2_KNOWNHOSTS **hosts, LIBSSH2_SESSION *session)
|
432
|
-
{
|
433
|
-
git_str path = GIT_STR_INIT, home = GIT_STR_INIT;
|
434
|
-
LIBSSH2_KNOWNHOSTS *known_hosts = NULL;
|
435
|
-
int error;
|
436
|
-
|
437
|
-
GIT_ASSERT_ARG(hosts);
|
438
|
-
|
439
|
-
if ((error = git__getenv(&home, "HOME")) < 0)
|
440
|
-
return error;
|
441
|
-
|
442
|
-
if ((error = git_str_joinpath(&path, git_str_cstr(&home), KNOWN_HOSTS_FILE)) < 0)
|
443
|
-
goto out;
|
444
|
-
|
445
|
-
if ((known_hosts = libssh2_knownhost_init(session)) == NULL) {
|
446
|
-
ssh_error(session, "error initializing known hosts");
|
447
|
-
error = -1;
|
448
|
-
goto out;
|
449
|
-
}
|
450
|
-
|
451
|
-
/*
|
452
|
-
* Try to read the file and consider not finding it as not trusting the
|
453
|
-
* host rather than an error.
|
454
|
-
*/
|
455
|
-
error = libssh2_knownhost_readfile(known_hosts, git_str_cstr(&path), LIBSSH2_KNOWNHOST_FILE_OPENSSH);
|
456
|
-
if (error == LIBSSH2_ERROR_FILE)
|
457
|
-
error = 0;
|
458
|
-
if (error < 0)
|
459
|
-
ssh_error(session, "error reading known_hosts");
|
460
|
-
|
461
|
-
out:
|
462
|
-
*hosts = known_hosts;
|
463
|
-
|
464
|
-
git_str_clear(&home);
|
465
|
-
git_str_clear(&path);
|
466
|
-
|
467
|
-
return error;
|
468
|
-
}
|
469
|
-
|
470
|
-
static const char *hostkey_type_to_string(int type)
|
471
|
-
{
|
472
|
-
switch (type) {
|
473
|
-
case LIBSSH2_KNOWNHOST_KEY_SSHRSA:
|
474
|
-
return "ssh-rsa";
|
475
|
-
case LIBSSH2_KNOWNHOST_KEY_SSHDSS:
|
476
|
-
return "ssh-dss";
|
477
|
-
#ifdef LIBSSH2_KNOWNHOST_KEY_ECDSA_256
|
478
|
-
case LIBSSH2_KNOWNHOST_KEY_ECDSA_256:
|
479
|
-
return "ecdsa-sha2-nistp256";
|
480
|
-
case LIBSSH2_KNOWNHOST_KEY_ECDSA_384:
|
481
|
-
return "ecdsa-sha2-nistp384";
|
482
|
-
case LIBSSH2_KNOWNHOST_KEY_ECDSA_521:
|
483
|
-
return "ecdsa-sha2-nistp521";
|
484
|
-
#endif
|
485
|
-
#ifdef LIBSSH2_KNOWNHOST_KEY_ED25519
|
486
|
-
case LIBSSH2_KNOWNHOST_KEY_ED25519:
|
487
|
-
return "ssh-ed25519";
|
488
|
-
#endif
|
489
|
-
}
|
490
|
-
|
491
|
-
return NULL;
|
492
|
-
}
|
493
|
-
|
494
|
-
/*
|
495
|
-
* We figure out what kind of key we want to ask the remote for by trying to
|
496
|
-
* look it up with a nonsense key and using that mismatch to figure out what key
|
497
|
-
* we do have stored for the host.
|
498
|
-
*
|
499
|
-
* Returns the string to pass to libssh2_session_method_pref or NULL if we were
|
500
|
-
* unable to find anything or an error happened.
|
501
|
-
*/
|
502
|
-
static const char *find_hostkey_preference(LIBSSH2_KNOWNHOSTS *known_hosts, const char *hostname, int port)
|
503
|
-
{
|
504
|
-
struct libssh2_knownhost *host = NULL;
|
505
|
-
/* Specify no key type so we don't filter on that */
|
506
|
-
int type = LIBSSH2_KNOWNHOST_TYPE_PLAIN | LIBSSH2_KNOWNHOST_KEYENC_RAW;
|
507
|
-
const char key = '\0';
|
508
|
-
int error;
|
509
|
-
|
510
|
-
/*
|
511
|
-
* In case of mismatch, we can find the type of key from known_hosts in
|
512
|
-
* the returned host's information as it means that an entry was found
|
513
|
-
* but our nonsense key obviously didn't match.
|
514
|
-
*/
|
515
|
-
error = libssh2_knownhost_checkp(known_hosts, hostname, port, &key, 1, type, &host);
|
516
|
-
if (error == LIBSSH2_KNOWNHOST_CHECK_MISMATCH)
|
517
|
-
return hostkey_type_to_string(host->typemask & LIBSSH2_KNOWNHOST_KEY_MASK);
|
518
|
-
|
519
|
-
return NULL;
|
520
|
-
}
|
521
|
-
|
522
424
|
static int _git_ssh_session_create(
|
523
425
|
LIBSSH2_SESSION **session,
|
524
|
-
LIBSSH2_KNOWNHOSTS **hosts,
|
525
|
-
const char *hostname,
|
526
|
-
int port,
|
527
426
|
git_stream *io)
|
528
427
|
{
|
529
428
|
int rc = 0;
|
530
429
|
LIBSSH2_SESSION *s;
|
531
|
-
LIBSSH2_KNOWNHOSTS *known_hosts;
|
532
430
|
git_socket_stream *socket = GIT_CONTAINER_OF(io, git_socket_stream, parent);
|
533
|
-
const char *keytype = NULL;
|
534
431
|
|
535
432
|
GIT_ASSERT_ARG(session);
|
536
|
-
GIT_ASSERT_ARG(hosts);
|
537
433
|
|
538
434
|
s = libssh2_session_init();
|
539
435
|
if (!s) {
|
@@ -541,225 +437,21 @@ static int _git_ssh_session_create(
|
|
541
437
|
return -1;
|
542
438
|
}
|
543
439
|
|
544
|
-
if ((rc = load_known_hosts(&known_hosts, s)) < 0) {
|
545
|
-
ssh_error(s, "error loading known_hosts");
|
546
|
-
libssh2_session_free(s);
|
547
|
-
return -1;
|
548
|
-
}
|
549
|
-
|
550
|
-
if ((keytype = find_hostkey_preference(known_hosts, hostname, port)) != NULL) {
|
551
|
-
do {
|
552
|
-
rc = libssh2_session_method_pref(s, LIBSSH2_METHOD_HOSTKEY, keytype);
|
553
|
-
} while (LIBSSH2_ERROR_EAGAIN == rc || LIBSSH2_ERROR_TIMEOUT == rc);
|
554
|
-
if (rc != LIBSSH2_ERROR_NONE) {
|
555
|
-
ssh_error(s, "failed to set hostkey preference");
|
556
|
-
goto on_error;
|
557
|
-
}
|
558
|
-
}
|
559
|
-
|
560
|
-
|
561
440
|
do {
|
562
441
|
rc = libssh2_session_handshake(s, socket->s);
|
563
442
|
} while (LIBSSH2_ERROR_EAGAIN == rc || LIBSSH2_ERROR_TIMEOUT == rc);
|
564
443
|
|
565
444
|
if (rc != LIBSSH2_ERROR_NONE) {
|
566
445
|
ssh_error(s, "failed to start SSH session");
|
567
|
-
|
446
|
+
libssh2_session_free(s);
|
447
|
+
return -1;
|
568
448
|
}
|
569
449
|
|
570
450
|
libssh2_session_set_blocking(s, 1);
|
571
451
|
|
572
452
|
*session = s;
|
573
|
-
*hosts = known_hosts;
|
574
453
|
|
575
454
|
return 0;
|
576
|
-
|
577
|
-
on_error:
|
578
|
-
libssh2_knownhost_free(known_hosts);
|
579
|
-
libssh2_session_free(s);
|
580
|
-
return -1;
|
581
|
-
}
|
582
|
-
|
583
|
-
|
584
|
-
/*
|
585
|
-
* Returns the typemask argument to pass to libssh2_knownhost_check{,p} based on
|
586
|
-
* the type of key that libssh2_session_hostkey returns.
|
587
|
-
*/
|
588
|
-
static int fingerprint_type_mask(int keytype)
|
589
|
-
{
|
590
|
-
int mask = LIBSSH2_KNOWNHOST_TYPE_PLAIN | LIBSSH2_KNOWNHOST_KEYENC_RAW;
|
591
|
-
return mask;
|
592
|
-
|
593
|
-
switch (keytype) {
|
594
|
-
case LIBSSH2_HOSTKEY_TYPE_RSA:
|
595
|
-
mask |= LIBSSH2_KNOWNHOST_KEY_SSHRSA;
|
596
|
-
break;
|
597
|
-
case LIBSSH2_HOSTKEY_TYPE_DSS:
|
598
|
-
mask |= LIBSSH2_KNOWNHOST_KEY_SSHDSS;
|
599
|
-
break;
|
600
|
-
#ifdef LIBSSH2_HOSTKEY_TYPE_ECDSA_256
|
601
|
-
case LIBSSH2_HOSTKEY_TYPE_ECDSA_256:
|
602
|
-
mask |= LIBSSH2_KNOWNHOST_KEY_ECDSA_256;
|
603
|
-
break;
|
604
|
-
case LIBSSH2_HOSTKEY_TYPE_ECDSA_384:
|
605
|
-
mask |= LIBSSH2_KNOWNHOST_KEY_ECDSA_384;
|
606
|
-
break;
|
607
|
-
case LIBSSH2_HOSTKEY_TYPE_ECDSA_521:
|
608
|
-
mask |= LIBSSH2_KNOWNHOST_KEY_ECDSA_521;
|
609
|
-
break;
|
610
|
-
#endif
|
611
|
-
#ifdef LIBSSH2_HOSTKEY_TYPE_ED25519
|
612
|
-
case LIBSSH2_HOSTKEY_TYPE_ED25519:
|
613
|
-
mask |= LIBSSH2_KNOWNHOST_KEY_ED25519;
|
614
|
-
break;
|
615
|
-
#endif
|
616
|
-
}
|
617
|
-
|
618
|
-
return mask;
|
619
|
-
}
|
620
|
-
|
621
|
-
/*
|
622
|
-
* Check the host against the user's known_hosts file.
|
623
|
-
*
|
624
|
-
* Returns 1/0 for valid/''not-valid or <0 for an error
|
625
|
-
*/
|
626
|
-
static int check_against_known_hosts(
|
627
|
-
LIBSSH2_SESSION *session,
|
628
|
-
LIBSSH2_KNOWNHOSTS *known_hosts,
|
629
|
-
const char *hostname,
|
630
|
-
int port,
|
631
|
-
const char *key,
|
632
|
-
size_t key_len,
|
633
|
-
int key_type)
|
634
|
-
{
|
635
|
-
int check, typemask, ret = 0;
|
636
|
-
struct libssh2_knownhost *host = NULL;
|
637
|
-
|
638
|
-
if (known_hosts == NULL)
|
639
|
-
return 0;
|
640
|
-
|
641
|
-
typemask = fingerprint_type_mask(key_type);
|
642
|
-
check = libssh2_knownhost_checkp(known_hosts, hostname, port, key, key_len, typemask, &host);
|
643
|
-
if (check == LIBSSH2_KNOWNHOST_CHECK_FAILURE) {
|
644
|
-
ssh_error(session, "error checking for known host");
|
645
|
-
return -1;
|
646
|
-
}
|
647
|
-
|
648
|
-
ret = check == LIBSSH2_KNOWNHOST_CHECK_MATCH ? 1 : 0;
|
649
|
-
|
650
|
-
return ret;
|
651
|
-
}
|
652
|
-
|
653
|
-
/*
|
654
|
-
* Perform the check for the session's certificate against known hosts if
|
655
|
-
* possible and then ask the user if they have a callback.
|
656
|
-
*
|
657
|
-
* Returns 1/0 for valid/not-valid or <0 for an error
|
658
|
-
*/
|
659
|
-
static int check_certificate(
|
660
|
-
LIBSSH2_SESSION *session,
|
661
|
-
LIBSSH2_KNOWNHOSTS *known_hosts,
|
662
|
-
git_transport_certificate_check_cb check_cb,
|
663
|
-
void *check_cb_payload,
|
664
|
-
const char *host,
|
665
|
-
int port)
|
666
|
-
{
|
667
|
-
git_cert_hostkey cert = {{ 0 }};
|
668
|
-
const char *key;
|
669
|
-
size_t cert_len;
|
670
|
-
int cert_type, cert_valid = 0, error = 0;
|
671
|
-
|
672
|
-
if ((key = libssh2_session_hostkey(session, &cert_len, &cert_type)) == NULL) {
|
673
|
-
ssh_error(session, "failed to retrieve hostkey");
|
674
|
-
return -1;
|
675
|
-
}
|
676
|
-
|
677
|
-
if ((cert_valid = check_against_known_hosts(session, known_hosts, host, port, key, cert_len, cert_type)) < 0)
|
678
|
-
return -1;
|
679
|
-
|
680
|
-
cert.parent.cert_type = GIT_CERT_HOSTKEY_LIBSSH2;
|
681
|
-
if (key != NULL) {
|
682
|
-
cert.type |= GIT_CERT_SSH_RAW;
|
683
|
-
cert.hostkey = key;
|
684
|
-
cert.hostkey_len = cert_len;
|
685
|
-
switch (cert_type) {
|
686
|
-
case LIBSSH2_HOSTKEY_TYPE_RSA:
|
687
|
-
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_RSA;
|
688
|
-
break;
|
689
|
-
case LIBSSH2_HOSTKEY_TYPE_DSS:
|
690
|
-
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_DSS;
|
691
|
-
break;
|
692
|
-
|
693
|
-
#ifdef LIBSSH2_HOSTKEY_TYPE_ECDSA_256
|
694
|
-
case LIBSSH2_HOSTKEY_TYPE_ECDSA_256:
|
695
|
-
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_256;
|
696
|
-
break;
|
697
|
-
case LIBSSH2_HOSTKEY_TYPE_ECDSA_384:
|
698
|
-
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_384;
|
699
|
-
break;
|
700
|
-
case LIBSSH2_KNOWNHOST_KEY_ECDSA_521:
|
701
|
-
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_521;
|
702
|
-
break;
|
703
|
-
#endif
|
704
|
-
|
705
|
-
#ifdef LIBSSH2_HOSTKEY_TYPE_ED25519
|
706
|
-
case LIBSSH2_HOSTKEY_TYPE_ED25519:
|
707
|
-
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ED25519;
|
708
|
-
break;
|
709
|
-
#endif
|
710
|
-
default:
|
711
|
-
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_UNKNOWN;
|
712
|
-
}
|
713
|
-
}
|
714
|
-
|
715
|
-
#ifdef LIBSSH2_HOSTKEY_HASH_SHA256
|
716
|
-
key = libssh2_hostkey_hash(session, LIBSSH2_HOSTKEY_HASH_SHA256);
|
717
|
-
if (key != NULL) {
|
718
|
-
cert.type |= GIT_CERT_SSH_SHA256;
|
719
|
-
memcpy(&cert.hash_sha256, key, 32);
|
720
|
-
}
|
721
|
-
#endif
|
722
|
-
|
723
|
-
key = libssh2_hostkey_hash(session, LIBSSH2_HOSTKEY_HASH_SHA1);
|
724
|
-
if (key != NULL) {
|
725
|
-
cert.type |= GIT_CERT_SSH_SHA1;
|
726
|
-
memcpy(&cert.hash_sha1, key, 20);
|
727
|
-
}
|
728
|
-
|
729
|
-
key = libssh2_hostkey_hash(session, LIBSSH2_HOSTKEY_HASH_MD5);
|
730
|
-
if (key != NULL) {
|
731
|
-
cert.type |= GIT_CERT_SSH_MD5;
|
732
|
-
memcpy(&cert.hash_md5, key, 16);
|
733
|
-
}
|
734
|
-
|
735
|
-
if (cert.type == 0) {
|
736
|
-
git_error_set(GIT_ERROR_SSH, "unable to get the host key");
|
737
|
-
return -1;
|
738
|
-
}
|
739
|
-
|
740
|
-
git_error_clear();
|
741
|
-
error = 0;
|
742
|
-
if (!cert_valid) {
|
743
|
-
git_error_set(GIT_ERROR_SSH, "invalid or unknown remote ssh hostkey");
|
744
|
-
error = GIT_ECERTIFICATE;
|
745
|
-
}
|
746
|
-
|
747
|
-
if (check_cb != NULL) {
|
748
|
-
git_cert_hostkey *cert_ptr = &cert;
|
749
|
-
git_error_state previous_error = {0};
|
750
|
-
|
751
|
-
git_error_state_capture(&previous_error, error);
|
752
|
-
error = check_cb((git_cert *) cert_ptr, cert_valid, host, check_cb_payload);
|
753
|
-
if (error == GIT_PASSTHROUGH) {
|
754
|
-
error = git_error_state_restore(&previous_error);
|
755
|
-
} else if (error < 0 && !git_error_last()) {
|
756
|
-
git_error_set(GIT_ERROR_NET, "user canceled hostkey check");
|
757
|
-
}
|
758
|
-
|
759
|
-
git_error_state_free(&previous_error);
|
760
|
-
}
|
761
|
-
|
762
|
-
return error;
|
763
455
|
}
|
764
456
|
|
765
457
|
#define SSH_DEFAULT_PORT "22"
|
@@ -770,12 +462,11 @@ static int _git_ssh_setup_conn(
|
|
770
462
|
const char *cmd,
|
771
463
|
git_smart_subtransport_stream **stream)
|
772
464
|
{
|
773
|
-
int auth_methods, error = 0
|
465
|
+
int auth_methods, error = 0;
|
774
466
|
ssh_stream *s;
|
775
467
|
git_credential *cred = NULL;
|
776
468
|
LIBSSH2_SESSION *session=NULL;
|
777
469
|
LIBSSH2_CHANNEL *channel=NULL;
|
778
|
-
LIBSSH2_KNOWNHOSTS *known_hosts = NULL;
|
779
470
|
|
780
471
|
t->current_stream = NULL;
|
781
472
|
|
@@ -799,20 +490,96 @@ static int _git_ssh_setup_conn(
|
|
799
490
|
(error = git_stream_connect(s->io)) < 0)
|
800
491
|
goto done;
|
801
492
|
|
802
|
-
|
803
|
-
* Try to parse the port as a number, if we can't then fall back to
|
804
|
-
* default. It would be nice if we could get the port that was resolved
|
805
|
-
* as part of the stream connection, but that's not something that's
|
806
|
-
* exposed.
|
807
|
-
*/
|
808
|
-
if (git__strntol32(&port, s->url.port, strlen(s->url.port), NULL, 10) < 0)
|
809
|
-
port = -1;
|
810
|
-
|
811
|
-
if ((error = _git_ssh_session_create(&session, &known_hosts, s->url.host, port, s->io)) < 0)
|
493
|
+
if ((error = _git_ssh_session_create(&session, s->io)) < 0)
|
812
494
|
goto done;
|
813
495
|
|
814
|
-
if (
|
815
|
-
|
496
|
+
if (t->owner->connect_opts.callbacks.certificate_check != NULL) {
|
497
|
+
git_cert_hostkey cert = {{ 0 }}, *cert_ptr;
|
498
|
+
const char *key;
|
499
|
+
size_t cert_len;
|
500
|
+
int cert_type;
|
501
|
+
|
502
|
+
cert.parent.cert_type = GIT_CERT_HOSTKEY_LIBSSH2;
|
503
|
+
|
504
|
+
key = libssh2_session_hostkey(session, &cert_len, &cert_type);
|
505
|
+
if (key != NULL) {
|
506
|
+
cert.type |= GIT_CERT_SSH_RAW;
|
507
|
+
cert.hostkey = key;
|
508
|
+
cert.hostkey_len = cert_len;
|
509
|
+
switch (cert_type) {
|
510
|
+
case LIBSSH2_HOSTKEY_TYPE_RSA:
|
511
|
+
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_RSA;
|
512
|
+
break;
|
513
|
+
case LIBSSH2_HOSTKEY_TYPE_DSS:
|
514
|
+
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_DSS;
|
515
|
+
break;
|
516
|
+
|
517
|
+
#ifdef LIBSSH2_HOSTKEY_TYPE_ECDSA_256
|
518
|
+
case LIBSSH2_HOSTKEY_TYPE_ECDSA_256:
|
519
|
+
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_256;
|
520
|
+
break;
|
521
|
+
case LIBSSH2_HOSTKEY_TYPE_ECDSA_384:
|
522
|
+
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_384;
|
523
|
+
break;
|
524
|
+
case LIBSSH2_KNOWNHOST_KEY_ECDSA_521:
|
525
|
+
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ECDSA_521;
|
526
|
+
break;
|
527
|
+
#endif
|
528
|
+
|
529
|
+
#ifdef LIBSSH2_HOSTKEY_TYPE_ED25519
|
530
|
+
case LIBSSH2_HOSTKEY_TYPE_ED25519:
|
531
|
+
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_KEY_ED25519;
|
532
|
+
break;
|
533
|
+
#endif
|
534
|
+
default:
|
535
|
+
cert.raw_type = GIT_CERT_SSH_RAW_TYPE_UNKNOWN;
|
536
|
+
}
|
537
|
+
}
|
538
|
+
|
539
|
+
#ifdef LIBSSH2_HOSTKEY_HASH_SHA256
|
540
|
+
key = libssh2_hostkey_hash(session, LIBSSH2_HOSTKEY_HASH_SHA256);
|
541
|
+
if (key != NULL) {
|
542
|
+
cert.type |= GIT_CERT_SSH_SHA256;
|
543
|
+
memcpy(&cert.hash_sha256, key, 32);
|
544
|
+
}
|
545
|
+
#endif
|
546
|
+
|
547
|
+
key = libssh2_hostkey_hash(session, LIBSSH2_HOSTKEY_HASH_SHA1);
|
548
|
+
if (key != NULL) {
|
549
|
+
cert.type |= GIT_CERT_SSH_SHA1;
|
550
|
+
memcpy(&cert.hash_sha1, key, 20);
|
551
|
+
}
|
552
|
+
|
553
|
+
key = libssh2_hostkey_hash(session, LIBSSH2_HOSTKEY_HASH_MD5);
|
554
|
+
if (key != NULL) {
|
555
|
+
cert.type |= GIT_CERT_SSH_MD5;
|
556
|
+
memcpy(&cert.hash_md5, key, 16);
|
557
|
+
}
|
558
|
+
|
559
|
+
if (cert.type == 0) {
|
560
|
+
git_error_set(GIT_ERROR_SSH, "unable to get the host key");
|
561
|
+
error = -1;
|
562
|
+
goto done;
|
563
|
+
}
|
564
|
+
|
565
|
+
/* We don't currently trust any hostkeys */
|
566
|
+
git_error_clear();
|
567
|
+
|
568
|
+
cert_ptr = &cert;
|
569
|
+
|
570
|
+
error = t->owner->connect_opts.callbacks.certificate_check(
|
571
|
+
(git_cert *)cert_ptr,
|
572
|
+
0,
|
573
|
+
s->url.host,
|
574
|
+
t->owner->connect_opts.callbacks.payload);
|
575
|
+
|
576
|
+
if (error < 0 && error != GIT_PASSTHROUGH) {
|
577
|
+
if (!git_error_last())
|
578
|
+
git_error_set(GIT_ERROR_NET, "user cancelled hostkey check");
|
579
|
+
|
580
|
+
goto done;
|
581
|
+
}
|
582
|
+
}
|
816
583
|
|
817
584
|
/* we need the username to ask for auth methods */
|
818
585
|
if (!s->url.username) {
|
@@ -884,8 +651,6 @@ done:
|
|
884
651
|
if (error < 0) {
|
885
652
|
ssh_stream_free(*stream);
|
886
653
|
|
887
|
-
if (known_hosts)
|
888
|
-
libssh2_knownhost_free(known_hosts);
|
889
654
|
if (session)
|
890
655
|
libssh2_session_free(session);
|
891
656
|
}
|
@@ -263,7 +263,7 @@ static void write_tree(git_str *out, git_tree_cache *tree)
|
|
263
263
|
git_str_printf(out, "%s%c%"PRIdZ" %"PRIuZ"\n", tree->name, 0, tree->entry_count, tree->children_count);
|
264
264
|
|
265
265
|
if (tree->entry_count != -1)
|
266
|
-
git_str_put(out, (
|
266
|
+
git_str_put(out, (char *)&tree->oid.id, GIT_OID_RAWSZ);
|
267
267
|
|
268
268
|
for (i = 0; i < tree->children_count; i++)
|
269
269
|
write_tree(out, tree->children[i]);
|
@@ -82,6 +82,7 @@ int git_tree_entry_cmp(const git_tree_entry *e1, const git_tree_entry *e2)
|
|
82
82
|
static git_tree_entry *alloc_entry(const char *filename, size_t filename_len, const git_oid *id)
|
83
83
|
{
|
84
84
|
git_tree_entry *entry = NULL;
|
85
|
+
char *filename_ptr;
|
85
86
|
size_t tree_len;
|
86
87
|
|
87
88
|
TREE_ENTRY_CHECK_NAMELEN(filename_len);
|
@@ -95,21 +96,13 @@ static git_tree_entry *alloc_entry(const char *filename, size_t filename_len, co
|
|
95
96
|
if (!entry)
|
96
97
|
return NULL;
|
97
98
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
filename_ptr = ((char *) entry) + sizeof(git_tree_entry);
|
103
|
-
memcpy(filename_ptr, filename, filename_len);
|
104
|
-
entry->filename = filename_ptr;
|
105
|
-
|
106
|
-
id_ptr = filename_ptr + filename_len + 1;
|
107
|
-
git_oid_cpy(id_ptr, id);
|
108
|
-
entry->oid = id_ptr;
|
109
|
-
}
|
110
|
-
|
99
|
+
filename_ptr = ((char *) entry) + sizeof(git_tree_entry);
|
100
|
+
memcpy(filename_ptr, filename, filename_len);
|
101
|
+
entry->filename = filename_ptr;
|
111
102
|
entry->filename_len = (uint16_t)filename_len;
|
112
103
|
|
104
|
+
git_oid_cpy(&entry->oid, id);
|
105
|
+
|
113
106
|
return entry;
|
114
107
|
}
|
115
108
|
|
@@ -231,7 +224,7 @@ int git_tree_entry_dup(git_tree_entry **dest, const git_tree_entry *source)
|
|
231
224
|
|
232
225
|
GIT_ASSERT_ARG(source);
|
233
226
|
|
234
|
-
cpy = alloc_entry(source->filename, source->filename_len, source->oid);
|
227
|
+
cpy = alloc_entry(source->filename, source->filename_len, &source->oid);
|
235
228
|
if (cpy == NULL)
|
236
229
|
return -1;
|
237
230
|
|
@@ -269,7 +262,7 @@ const char *git_tree_entry_name(const git_tree_entry *entry)
|
|
269
262
|
const git_oid *git_tree_entry_id(const git_tree_entry *entry)
|
270
263
|
{
|
271
264
|
GIT_ASSERT_ARG_WITH_RETVAL(entry, NULL);
|
272
|
-
return entry->oid;
|
265
|
+
return &entry->oid;
|
273
266
|
}
|
274
267
|
|
275
268
|
git_object_t git_tree_entry_type(const git_tree_entry *entry)
|
@@ -292,7 +285,7 @@ int git_tree_entry_to_object(
|
|
292
285
|
GIT_ASSERT_ARG(entry);
|
293
286
|
GIT_ASSERT_ARG(object_out);
|
294
287
|
|
295
|
-
return git_object_lookup(object_out, repo, entry->oid, GIT_OBJECT_ANY);
|
288
|
+
return git_object_lookup(object_out, repo, &entry->oid, GIT_OBJECT_ANY);
|
296
289
|
}
|
297
290
|
|
298
291
|
static const git_tree_entry *entry_fromname(
|
@@ -331,7 +324,7 @@ const git_tree_entry *git_tree_entry_byid(
|
|
331
324
|
GIT_ASSERT_ARG_WITH_RETVAL(tree, NULL);
|
332
325
|
|
333
326
|
git_array_foreach(tree->entries, i, e) {
|
334
|
-
if (
|
327
|
+
if (git_oid_equal(&e->oid, id))
|
335
328
|
return e;
|
336
329
|
}
|
337
330
|
|
@@ -432,7 +425,7 @@ int git_tree__parse_raw(void *_tree, const char *data, size_t size)
|
|
432
425
|
entry->attr = attr;
|
433
426
|
entry->filename_len = (uint16_t)filename_len;
|
434
427
|
entry->filename = buffer;
|
435
|
-
entry->oid
|
428
|
+
git_oid_fromraw(&entry->oid, ((unsigned char *) buffer + filename_len + 1));
|
436
429
|
}
|
437
430
|
|
438
431
|
buffer += filename_len + 1;
|
@@ -536,7 +529,7 @@ static int git_treebuilder__write_with_buffer(
|
|
536
529
|
|
537
530
|
git_str_printf(buf, "%o ", entry->attr);
|
538
531
|
git_str_put(buf, entry->filename, entry->filename_len + 1);
|
539
|
-
git_str_put(buf, (char *)entry->oid
|
532
|
+
git_str_put(buf, (char *)entry->oid.id, GIT_OID_RAWSZ);
|
540
533
|
|
541
534
|
if (git_str_oom(buf)) {
|
542
535
|
error = -1;
|
@@ -765,7 +758,7 @@ int git_treebuilder_new(
|
|
765
758
|
git_array_foreach(source->entries, i, entry_src) {
|
766
759
|
if (append_entry(
|
767
760
|
bld, entry_src->filename,
|
768
|
-
entry_src->oid,
|
761
|
+
&entry_src->oid,
|
769
762
|
entry_src->attr,
|
770
763
|
false) < 0)
|
771
764
|
goto on_error;
|
@@ -798,7 +791,7 @@ int git_treebuilder_insert(
|
|
798
791
|
return error;
|
799
792
|
|
800
793
|
if ((entry = git_strmap_get(bld->map, filename)) != NULL) {
|
801
|
-
git_oid_cpy(
|
794
|
+
git_oid_cpy(&entry->oid, id);
|
802
795
|
} else {
|
803
796
|
entry = alloc_entry(filename, strlen(filename), id);
|
804
797
|
GIT_ERROR_CHECK_ALLOC(entry);
|
@@ -954,7 +947,7 @@ int git_tree_entry_bypath(
|
|
954
947
|
return git_tree_entry_dup(entry_out, entry);
|
955
948
|
}
|
956
949
|
|
957
|
-
if (git_tree_lookup(&subtree, root->object.repo, entry->oid) < 0)
|
950
|
+
if (git_tree_lookup(&subtree, root->object.repo, &entry->oid) < 0)
|
958
951
|
return -1;
|
959
952
|
|
960
953
|
error = git_tree_entry_bypath(
|
@@ -995,7 +988,7 @@ static int tree_walk(
|
|
995
988
|
git_tree *subtree;
|
996
989
|
size_t path_len = git_str_len(path);
|
997
990
|
|
998
|
-
error = git_tree_lookup(&subtree, tree->object.repo, entry->oid);
|
991
|
+
error = git_tree_lookup(&subtree, tree->object.repo, &entry->oid);
|
999
992
|
if (error < 0)
|
1000
993
|
break;
|
1001
994
|
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# util: a shared library for common utility functions for libgit2 projects
|
2
|
+
|
3
|
+
add_library(util OBJECT)
|
4
|
+
set_target_properties(util PROPERTIES C_STANDARD 90)
|
5
|
+
set_target_properties(util PROPERTIES C_EXTENSIONS OFF)
|
6
|
+
|
7
|
+
set(UTIL_INCLUDES
|
8
|
+
"${PROJECT_BINARY_DIR}/src"
|
9
|
+
"${PROJECT_SOURCE_DIR}/src/util"
|
10
|
+
"${PROJECT_SOURCE_DIR}/include")
|
11
|
+
|
12
|
+
file(GLOB UTIL_SRC *.c *.h allocators/*.c allocators/*.h hash.h)
|
13
|
+
list(SORT UTIL_SRC)
|
14
|
+
|
15
|
+
#
|
16
|
+
# Platform specific sources
|
17
|
+
#
|
18
|
+
|
19
|
+
if(WIN32 AND NOT CYGWIN)
|
20
|
+
file(GLOB UTIL_SRC_OS win32/*.c win32/*.h)
|
21
|
+
list(SORT UTIL_SRC_OS)
|
22
|
+
elseif(NOT AMIGA)
|
23
|
+
file(GLOB UTIL_SRC_OS unix/*.c unix/*.h)
|
24
|
+
list(SORT UTIL_SRC_OS)
|
25
|
+
endif()
|
26
|
+
|
27
|
+
#
|
28
|
+
# Hash backend selection
|
29
|
+
#
|
30
|
+
|
31
|
+
if(USE_SHA1 STREQUAL "CollisionDetection")
|
32
|
+
file(GLOB UTIL_SRC_SHA1 hash/collisiondetect.* hash/sha1dc/*)
|
33
|
+
target_compile_definitions(util PRIVATE SHA1DC_NO_STANDARD_INCLUDES=1)
|
34
|
+
target_compile_definitions(util PRIVATE SHA1DC_CUSTOM_INCLUDE_SHA1_C=\"git2_util.h\")
|
35
|
+
target_compile_definitions(util PRIVATE SHA1DC_CUSTOM_INCLUDE_UBC_CHECK_C=\"git2_util.h\")
|
36
|
+
elseif(USE_SHA1 STREQUAL "OpenSSL" OR USE_SHA1 STREQUAL "OpenSSL-Dynamic")
|
37
|
+
file(GLOB UTIL_SRC_SHA1 hash/openssl.*)
|
38
|
+
elseif(USE_SHA1 STREQUAL "CommonCrypto")
|
39
|
+
file(GLOB UTIL_SRC_SHA1 hash/common_crypto.*)
|
40
|
+
elseif(USE_SHA1 STREQUAL "mbedTLS")
|
41
|
+
file(GLOB UTIL_SRC_SHA1 hash/mbedtls.*)
|
42
|
+
elseif(USE_SHA1 STREQUAL "Win32")
|
43
|
+
file(GLOB UTIL_SRC_SHA1 hash/win32.*)
|
44
|
+
else()
|
45
|
+
message(FATAL_ERROR "Asked for unknown SHA1 backend: ${USE_SHA1}")
|
46
|
+
endif()
|
47
|
+
|
48
|
+
list(SORT UTIL_SRC_SHA1)
|
49
|
+
|
50
|
+
if(USE_SHA256 STREQUAL "Builtin")
|
51
|
+
file(GLOB UTIL_SRC_SHA256 hash/builtin.* hash/rfc6234/*)
|
52
|
+
elseif(USE_SHA256 STREQUAL "OpenSSL" OR USE_SHA256 STREQUAL "OpenSSL-Dynamic")
|
53
|
+
file(GLOB UTIL_SRC_SHA256 hash/openssl.*)
|
54
|
+
elseif(USE_SHA256 STREQUAL "CommonCrypto")
|
55
|
+
file(GLOB UTIL_SRC_SHA256 hash/common_crypto.*)
|
56
|
+
elseif(USE_SHA256 STREQUAL "mbedTLS")
|
57
|
+
file(GLOB UTIL_SRC_SHA256 hash/mbedtls.*)
|
58
|
+
elseif(USE_SHA256 STREQUAL "Win32")
|
59
|
+
file(GLOB UTIL_SRC_SHA256 hash/win32.*)
|
60
|
+
else()
|
61
|
+
message(FATAL_ERROR "Asked for unknown SHA256 backend: ${USE_SHA256}")
|
62
|
+
endif()
|
63
|
+
|
64
|
+
list(SORT UTIL_SRC_SHA256)
|
65
|
+
|
66
|
+
#
|
67
|
+
# Build the library
|
68
|
+
#
|
69
|
+
|
70
|
+
target_sources(util PRIVATE ${UTIL_SRC} ${UTIL_SRC_OS} ${UTIL_SRC_SHA1} ${UTIL_SRC_SHA256})
|
71
|
+
ide_split_sources(util)
|
72
|
+
|
73
|
+
target_include_directories(util PRIVATE ${UTIL_INCLUDES} ${LIBGIT2_DEPENDENCY_INCLUDES} PUBLIC ${libgit2_SOURCE_DIR}/include)
|
74
|
+
target_include_directories(util SYSTEM PRIVATE ${LIBGIT2_SYSTEM_INCLUDES})
|
@@ -8,7 +8,7 @@
|
|
8
8
|
#ifndef INCLUDE_allocators_failalloc_h__
|
9
9
|
#define INCLUDE_allocators_failalloc_h__
|
10
10
|
|
11
|
-
#include "
|
11
|
+
#include "git2_util.h"
|
12
12
|
|
13
13
|
extern void *git_failalloc_malloc(size_t len, const char *file, int line);
|
14
14
|
extern void *git_failalloc_calloc(size_t nelem, size_t elsize, const char *file, int line);
|