rugged 0.27.7 → 0.27.10
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/lib/rugged/version.rb +1 -1
- data/vendor/libgit2/AUTHORS +1 -0
- data/vendor/libgit2/CMakeLists.txt +99 -51
- data/vendor/libgit2/COPYING +28 -0
- data/vendor/libgit2/cmake/Modules/AddCFlagIfSupported.cmake +15 -1
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.c.in +29 -0
- data/vendor/libgit2/cmake/Modules/CheckPrototypeDefinition.cmake +96 -0
- data/vendor/libgit2/cmake/Modules/EnableWarnings.cmake +9 -8
- data/vendor/libgit2/cmake/Modules/FindCoreFoundation.cmake +2 -2
- data/vendor/libgit2/cmake/Modules/FindGSSAPI.cmake +1 -1
- data/vendor/libgit2/cmake/Modules/FindGSSFramework.cmake +28 -0
- data/vendor/libgit2/cmake/Modules/FindIconv.cmake +11 -6
- data/vendor/libgit2/cmake/Modules/FindPCRE.cmake +38 -0
- data/vendor/libgit2/cmake/Modules/FindPCRE2.cmake +37 -0
- data/vendor/libgit2/cmake/Modules/FindSecurity.cmake +2 -2
- data/vendor/libgit2/cmake/Modules/FindStatNsec.cmake +6 -0
- data/vendor/libgit2/cmake/Modules/PkgBuildConfig.cmake +110 -0
- data/vendor/libgit2/cmake/Modules/SelectGSSAPI.cmake +53 -0
- data/vendor/libgit2/cmake/Modules/SelectHTTPSBackend.cmake +124 -0
- data/vendor/libgit2/cmake/Modules/SelectHashes.cmake +66 -0
- data/vendor/libgit2/deps/http-parser/http_parser.c +11 -6
- data/vendor/libgit2/deps/ntlmclient/CMakeLists.txt +21 -0
- data/vendor/libgit2/deps/ntlmclient/compat.h +33 -0
- data/vendor/libgit2/deps/ntlmclient/crypt.h +64 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.c +120 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_commoncrypto.h +18 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.c +145 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_mbedtls.h +18 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +130 -0
- data/vendor/libgit2/deps/ntlmclient/crypt_openssl.h +21 -0
- data/vendor/libgit2/deps/ntlmclient/ntlm.c +1420 -0
- data/vendor/libgit2/deps/ntlmclient/ntlm.h +174 -0
- data/vendor/libgit2/deps/ntlmclient/ntlmclient.h +320 -0
- data/vendor/libgit2/deps/ntlmclient/unicode.h +36 -0
- data/vendor/libgit2/deps/ntlmclient/unicode_builtin.c +445 -0
- data/vendor/libgit2/deps/ntlmclient/unicode_iconv.c +201 -0
- data/vendor/libgit2/deps/ntlmclient/utf8.h +1257 -0
- data/vendor/libgit2/deps/ntlmclient/util.c +21 -0
- data/vendor/libgit2/deps/ntlmclient/util.h +14 -0
- data/vendor/libgit2/deps/pcre/CMakeLists.txt +140 -0
- data/vendor/libgit2/deps/pcre/COPYING +5 -0
- data/vendor/libgit2/deps/pcre/cmake/COPYING-CMAKE-SCRIPTS +22 -0
- data/vendor/libgit2/deps/pcre/cmake/FindEditline.cmake +17 -0
- data/vendor/libgit2/deps/pcre/cmake/FindPackageHandleStandardArgs.cmake +58 -0
- data/vendor/libgit2/deps/pcre/cmake/FindReadline.cmake +29 -0
- data/vendor/libgit2/deps/pcre/config.h.in +57 -0
- data/vendor/libgit2/deps/pcre/pcre.h +641 -0
- data/vendor/libgit2/deps/pcre/pcre_byte_order.c +319 -0
- data/vendor/libgit2/deps/pcre/pcre_chartables.c +198 -0
- data/vendor/libgit2/deps/pcre/pcre_compile.c +9800 -0
- data/vendor/libgit2/deps/pcre/pcre_config.c +190 -0
- data/vendor/libgit2/deps/pcre/pcre_dfa_exec.c +3676 -0
- data/vendor/libgit2/deps/pcre/pcre_exec.c +7173 -0
- data/vendor/libgit2/deps/pcre/pcre_fullinfo.c +245 -0
- data/vendor/libgit2/deps/pcre/pcre_get.c +669 -0
- data/vendor/libgit2/deps/pcre/pcre_globals.c +86 -0
- data/vendor/libgit2/deps/pcre/pcre_internal.h +2787 -0
- data/vendor/libgit2/deps/pcre/pcre_jit_compile.c +11913 -0
- data/vendor/libgit2/deps/pcre/pcre_maketables.c +156 -0
- data/vendor/libgit2/deps/pcre/pcre_newline.c +210 -0
- data/vendor/libgit2/deps/pcre/pcre_ord2utf8.c +94 -0
- data/vendor/libgit2/deps/pcre/pcre_printint.c +834 -0
- data/vendor/libgit2/deps/pcre/pcre_refcount.c +92 -0
- data/vendor/libgit2/deps/pcre/pcre_string_utils.c +211 -0
- data/vendor/libgit2/deps/pcre/pcre_study.c +1686 -0
- data/vendor/libgit2/deps/pcre/pcre_tables.c +727 -0
- data/vendor/libgit2/deps/pcre/pcre_ucd.c +3644 -0
- data/vendor/libgit2/deps/pcre/pcre_valid_utf8.c +301 -0
- data/vendor/libgit2/deps/pcre/pcre_version.c +98 -0
- data/vendor/libgit2/deps/pcre/pcre_xclass.c +268 -0
- data/vendor/libgit2/deps/pcre/pcreposix.c +421 -0
- data/vendor/libgit2/deps/pcre/pcreposix.h +117 -0
- data/vendor/libgit2/deps/pcre/ucp.h +224 -0
- data/vendor/libgit2/deps/winhttp/COPYING.GPL +993 -0
- data/vendor/libgit2/deps/winhttp/COPYING.LGPL +502 -0
- data/vendor/libgit2/deps/zlib/CMakeLists.txt +1 -0
- data/vendor/libgit2/deps/zlib/COPYING +27 -0
- data/vendor/libgit2/deps/zlib/adler32.c +0 -7
- data/vendor/libgit2/deps/zlib/crc32.c +0 -7
- data/vendor/libgit2/include/git2/annotated_commit.h +9 -0
- data/vendor/libgit2/include/git2/apply.h +149 -0
- data/vendor/libgit2/include/git2/attr.h +20 -13
- data/vendor/libgit2/include/git2/blame.h +4 -4
- data/vendor/libgit2/include/git2/blob.h +44 -12
- data/vendor/libgit2/include/git2/buffer.h +20 -26
- data/vendor/libgit2/include/git2/cert.h +135 -0
- data/vendor/libgit2/include/git2/checkout.h +53 -21
- data/vendor/libgit2/include/git2/cherrypick.h +3 -3
- data/vendor/libgit2/include/git2/clone.h +5 -5
- data/vendor/libgit2/include/git2/commit.h +25 -3
- data/vendor/libgit2/include/git2/common.h +35 -10
- data/vendor/libgit2/include/git2/config.h +29 -19
- data/vendor/libgit2/include/git2/cred.h +308 -0
- data/vendor/libgit2/include/git2/deprecated.h +493 -0
- data/vendor/libgit2/include/git2/describe.h +4 -4
- data/vendor/libgit2/include/git2/diff.h +177 -135
- data/vendor/libgit2/include/git2/errors.h +53 -46
- data/vendor/libgit2/include/git2/filter.h +8 -0
- data/vendor/libgit2/include/git2/index.h +74 -52
- data/vendor/libgit2/include/git2/indexer.h +76 -6
- data/vendor/libgit2/include/git2/merge.h +25 -10
- data/vendor/libgit2/include/git2/net.h +0 -5
- data/vendor/libgit2/include/git2/notes.h +1 -1
- data/vendor/libgit2/include/git2/object.h +17 -29
- data/vendor/libgit2/include/git2/odb.h +12 -11
- data/vendor/libgit2/include/git2/odb_backend.h +10 -9
- data/vendor/libgit2/include/git2/oid.h +2 -2
- data/vendor/libgit2/include/git2/pack.h +14 -3
- data/vendor/libgit2/include/git2/proxy.h +5 -3
- data/vendor/libgit2/include/git2/rebase.h +46 -2
- data/vendor/libgit2/include/git2/refs.h +34 -16
- data/vendor/libgit2/include/git2/remote.h +111 -14
- data/vendor/libgit2/include/git2/repository.h +69 -34
- data/vendor/libgit2/include/git2/revert.h +1 -1
- data/vendor/libgit2/include/git2/revwalk.h +7 -7
- data/vendor/libgit2/include/git2/signature.h +2 -2
- data/vendor/libgit2/include/git2/stash.h +5 -5
- data/vendor/libgit2/include/git2/status.h +26 -17
- data/vendor/libgit2/include/git2/submodule.h +23 -6
- data/vendor/libgit2/include/git2/sys/alloc.h +18 -18
- data/vendor/libgit2/include/git2/sys/commit.h +1 -1
- data/vendor/libgit2/include/git2/sys/config.h +13 -13
- data/vendor/libgit2/include/git2/sys/cred.h +90 -0
- data/vendor/libgit2/include/git2/sys/filter.h +6 -6
- data/vendor/libgit2/include/git2/sys/merge.h +3 -3
- data/vendor/libgit2/include/git2/sys/odb_backend.h +66 -22
- data/vendor/libgit2/include/git2/sys/path.h +14 -5
- data/vendor/libgit2/include/git2/sys/refdb_backend.h +76 -40
- data/vendor/libgit2/include/git2/sys/repository.h +5 -1
- data/vendor/libgit2/include/git2/sys/stream.h +92 -12
- data/vendor/libgit2/include/git2/sys/transport.h +129 -83
- data/vendor/libgit2/include/git2/tag.h +13 -4
- data/vendor/libgit2/include/git2/trace.h +2 -2
- data/vendor/libgit2/include/git2/transport.h +11 -311
- data/vendor/libgit2/include/git2/tree.h +4 -4
- data/vendor/libgit2/include/git2/types.h +25 -106
- data/vendor/libgit2/include/git2/version.h +3 -3
- data/vendor/libgit2/include/git2/worktree.h +5 -5
- data/vendor/libgit2/include/git2.h +4 -0
- data/vendor/libgit2/src/CMakeLists.txt +104 -235
- data/vendor/libgit2/src/alloc.c +14 -18
- data/vendor/libgit2/src/{stdalloc.c → allocators/stdalloc.c} +7 -8
- data/vendor/libgit2/src/{stdalloc.h → allocators/stdalloc.h} +4 -4
- data/vendor/libgit2/src/allocators/win32_crtdbg.c +118 -0
- data/vendor/libgit2/src/{transports/cred.h → allocators/win32_crtdbg.h} +5 -4
- data/vendor/libgit2/src/annotated_commit.c +18 -11
- data/vendor/libgit2/src/apply.c +535 -28
- data/vendor/libgit2/src/apply.h +3 -1
- data/vendor/libgit2/src/array.h +2 -2
- data/vendor/libgit2/src/attr.c +77 -71
- data/vendor/libgit2/src/attr_file.c +203 -117
- data/vendor/libgit2/src/attr_file.h +9 -9
- data/vendor/libgit2/src/attrcache.c +49 -51
- data/vendor/libgit2/src/attrcache.h +2 -1
- data/vendor/libgit2/src/blame.c +38 -18
- data/vendor/libgit2/src/blame.h +1 -1
- data/vendor/libgit2/src/blame_git.c +29 -15
- data/vendor/libgit2/src/blob.c +123 -37
- data/vendor/libgit2/src/blob.h +19 -2
- data/vendor/libgit2/src/branch.c +47 -23
- data/vendor/libgit2/src/buf_text.c +7 -6
- data/vendor/libgit2/src/buffer.c +60 -53
- data/vendor/libgit2/src/cache.c +38 -45
- data/vendor/libgit2/src/cache.h +3 -3
- data/vendor/libgit2/src/cc-compat.h +20 -3
- data/vendor/libgit2/src/checkout.c +77 -67
- data/vendor/libgit2/src/cherrypick.c +12 -6
- data/vendor/libgit2/src/clone.c +36 -14
- data/vendor/libgit2/src/clone.h +4 -0
- data/vendor/libgit2/src/commit.c +103 -48
- data/vendor/libgit2/src/commit.h +7 -0
- data/vendor/libgit2/src/commit_list.c +36 -78
- data/vendor/libgit2/src/commit_list.h +2 -2
- data/vendor/libgit2/src/common.h +24 -90
- data/vendor/libgit2/src/config.c +203 -176
- data/vendor/libgit2/src/config.h +8 -20
- data/vendor/libgit2/src/config_backend.h +96 -0
- data/vendor/libgit2/src/config_cache.c +41 -35
- data/vendor/libgit2/src/config_entries.c +229 -0
- data/vendor/libgit2/src/config_entries.h +24 -0
- data/vendor/libgit2/src/config_file.c +422 -680
- data/vendor/libgit2/src/config_mem.c +220 -0
- data/vendor/libgit2/src/config_parse.c +96 -68
- data/vendor/libgit2/src/config_parse.h +15 -14
- data/vendor/libgit2/src/config_snapshot.c +206 -0
- data/vendor/libgit2/src/crlf.c +219 -196
- data/vendor/libgit2/src/delta.c +25 -18
- data/vendor/libgit2/src/describe.c +42 -41
- data/vendor/libgit2/src/diff.c +52 -67
- data/vendor/libgit2/src/diff.h +2 -1
- data/vendor/libgit2/src/diff_driver.c +44 -46
- data/vendor/libgit2/src/diff_file.c +16 -14
- data/vendor/libgit2/src/diff_file.h +1 -1
- data/vendor/libgit2/src/diff_generate.c +158 -103
- data/vendor/libgit2/src/diff_generate.h +3 -3
- data/vendor/libgit2/src/diff_parse.c +4 -4
- data/vendor/libgit2/src/diff_print.c +34 -22
- data/vendor/libgit2/src/diff_stats.c +22 -7
- data/vendor/libgit2/src/diff_tform.c +18 -16
- data/vendor/libgit2/src/diff_xdiff.c +3 -3
- data/vendor/libgit2/src/errors.c +51 -39
- data/vendor/libgit2/src/errors.h +81 -0
- data/vendor/libgit2/src/features.h.in +9 -3
- data/vendor/libgit2/src/fetch.c +8 -3
- data/vendor/libgit2/src/fetchhead.c +12 -12
- data/vendor/libgit2/src/filebuf.c +28 -32
- data/vendor/libgit2/src/filebuf.h +2 -2
- data/vendor/libgit2/src/filter.c +47 -33
- data/vendor/libgit2/src/filter.h +0 -10
- data/vendor/libgit2/src/{fileops.c → futils.c} +70 -63
- data/vendor/libgit2/src/{fileops.h → futils.h} +6 -6
- data/vendor/libgit2/src/global.c +35 -55
- data/vendor/libgit2/src/global.h +0 -2
- data/vendor/libgit2/src/hash/sha1/collisiondetect.c +48 -0
- data/vendor/libgit2/src/hash/sha1/collisiondetect.h +19 -0
- data/vendor/libgit2/src/hash/{hash_common_crypto.h → sha1/common_crypto.c} +17 -17
- data/vendor/libgit2/src/hash/sha1/common_crypto.h +19 -0
- data/vendor/libgit2/src/hash/{hash_generic.c → sha1/generic.c} +22 -10
- data/vendor/libgit2/src/hash/{hash_generic.h → sha1/generic.h} +4 -10
- data/vendor/libgit2/src/hash/{hash_mbedtls.c → sha1/mbedtls.c} +15 -7
- data/vendor/libgit2/src/hash/{hash_mbedtls.h → sha1/mbedtls.h} +6 -7
- data/vendor/libgit2/src/hash/sha1/openssl.c +59 -0
- data/vendor/libgit2/src/hash/sha1/openssl.h +19 -0
- data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.c +14 -3
- data/vendor/libgit2/src/hash/{hash_win32.c → sha1/win32.c} +47 -37
- data/vendor/libgit2/src/hash/{hash_win32.h → sha1/win32.h} +6 -19
- data/vendor/libgit2/src/hash/sha1.h +38 -0
- data/vendor/libgit2/src/hash.c +61 -0
- data/vendor/libgit2/src/hash.h +20 -21
- data/vendor/libgit2/src/hashsig.c +5 -5
- data/vendor/libgit2/src/idxmap.c +107 -61
- data/vendor/libgit2/src/idxmap.h +153 -31
- data/vendor/libgit2/src/ignore.c +38 -42
- data/vendor/libgit2/src/index.c +264 -199
- data/vendor/libgit2/src/index.h +7 -1
- data/vendor/libgit2/src/indexer.c +338 -167
- data/vendor/libgit2/src/integer.h +71 -26
- data/vendor/libgit2/src/iterator.c +134 -62
- data/vendor/libgit2/src/iterator.h +15 -0
- data/vendor/libgit2/src/mailmap.c +8 -8
- data/vendor/libgit2/src/map.h +1 -1
- data/vendor/libgit2/src/merge.c +137 -93
- data/vendor/libgit2/src/merge_driver.c +11 -11
- data/vendor/libgit2/src/merge_file.c +2 -2
- data/vendor/libgit2/src/mwindow.c +24 -29
- data/vendor/libgit2/src/mwindow.h +4 -4
- data/vendor/libgit2/src/net.c +184 -0
- data/vendor/libgit2/src/net.h +36 -0
- data/vendor/libgit2/src/netops.c +55 -156
- data/vendor/libgit2/src/netops.h +3 -23
- data/vendor/libgit2/src/notes.c +14 -9
- data/vendor/libgit2/src/object.c +120 -69
- data/vendor/libgit2/src/object.h +22 -9
- data/vendor/libgit2/src/object_api.c +8 -8
- data/vendor/libgit2/src/odb.c +111 -88
- data/vendor/libgit2/src/odb.h +8 -7
- data/vendor/libgit2/src/odb_loose.c +58 -47
- data/vendor/libgit2/src/odb_mempack.c +21 -34
- data/vendor/libgit2/src/odb_pack.c +17 -13
- data/vendor/libgit2/src/offmap.c +53 -35
- data/vendor/libgit2/src/offmap.h +108 -21
- data/vendor/libgit2/src/oid.c +12 -7
- data/vendor/libgit2/src/oidmap.c +49 -47
- data/vendor/libgit2/src/oidmap.h +101 -24
- data/vendor/libgit2/src/pack-objects.c +87 -86
- data/vendor/libgit2/src/pack-objects.h +2 -8
- data/vendor/libgit2/src/pack.c +94 -96
- data/vendor/libgit2/src/pack.h +16 -18
- data/vendor/libgit2/src/parse.c +17 -4
- data/vendor/libgit2/src/parse.h +3 -3
- data/vendor/libgit2/src/patch.c +3 -3
- data/vendor/libgit2/src/patch_generate.c +18 -18
- data/vendor/libgit2/src/patch_parse.c +147 -79
- data/vendor/libgit2/src/path.c +207 -62
- data/vendor/libgit2/src/path.h +14 -0
- data/vendor/libgit2/src/pathspec.c +18 -18
- data/vendor/libgit2/src/pool.c +26 -22
- data/vendor/libgit2/src/pool.h +7 -7
- data/vendor/libgit2/src/posix.c +10 -10
- data/vendor/libgit2/src/posix.h +12 -1
- data/vendor/libgit2/src/proxy.c +8 -3
- data/vendor/libgit2/src/push.c +35 -29
- data/vendor/libgit2/src/push.h +2 -1
- data/vendor/libgit2/src/reader.c +265 -0
- data/vendor/libgit2/src/reader.h +107 -0
- data/vendor/libgit2/src/rebase.c +97 -38
- data/vendor/libgit2/src/refdb.c +15 -3
- data/vendor/libgit2/src/refdb_fs.c +318 -222
- data/vendor/libgit2/src/reflog.c +13 -15
- data/vendor/libgit2/src/refs.c +122 -89
- data/vendor/libgit2/src/refs.h +5 -3
- data/vendor/libgit2/src/refspec.c +27 -33
- data/vendor/libgit2/src/regexp.c +221 -0
- data/vendor/libgit2/src/regexp.h +97 -0
- data/vendor/libgit2/src/remote.c +229 -178
- data/vendor/libgit2/src/remote.h +11 -2
- data/vendor/libgit2/src/repository.c +227 -172
- data/vendor/libgit2/src/repository.h +52 -40
- data/vendor/libgit2/src/reset.c +7 -7
- data/vendor/libgit2/src/revert.c +11 -6
- data/vendor/libgit2/src/revparse.c +46 -46
- data/vendor/libgit2/src/revwalk.c +89 -54
- data/vendor/libgit2/src/revwalk.h +20 -0
- data/vendor/libgit2/src/settings.c +22 -9
- data/vendor/libgit2/src/signature.c +15 -13
- data/vendor/libgit2/src/sortedcache.c +22 -36
- data/vendor/libgit2/src/sortedcache.h +1 -1
- data/vendor/libgit2/src/stash.c +56 -76
- data/vendor/libgit2/src/status.c +27 -21
- data/vendor/libgit2/src/stream.h +17 -2
- data/vendor/libgit2/src/streams/mbedtls.c +100 -80
- data/vendor/libgit2/src/streams/mbedtls.h +5 -2
- data/vendor/libgit2/src/streams/openssl.c +93 -81
- data/vendor/libgit2/src/streams/openssl.h +5 -2
- data/vendor/libgit2/src/streams/registry.c +118 -0
- data/vendor/libgit2/src/streams/registry.h +19 -0
- data/vendor/libgit2/src/streams/socket.c +55 -30
- data/vendor/libgit2/src/streams/stransport.c +57 -32
- data/vendor/libgit2/src/streams/stransport.h +5 -0
- data/vendor/libgit2/src/streams/tls.c +48 -20
- data/vendor/libgit2/src/streams/tls.h +12 -4
- data/vendor/libgit2/src/strmap.c +47 -74
- data/vendor/libgit2/src/strmap.h +108 -33
- data/vendor/libgit2/src/submodule.c +190 -169
- data/vendor/libgit2/src/submodule.h +1 -1
- data/vendor/libgit2/src/sysdir.c +25 -15
- data/vendor/libgit2/src/tag.c +39 -26
- data/vendor/libgit2/src/tag.h +2 -1
- data/vendor/libgit2/src/trace.c +2 -2
- data/vendor/libgit2/src/trace.h +2 -2
- data/vendor/libgit2/src/trailer.c +46 -32
- data/vendor/libgit2/src/transaction.c +30 -29
- data/vendor/libgit2/src/transport.c +3 -3
- data/vendor/libgit2/src/transports/auth.c +14 -10
- data/vendor/libgit2/src/transports/auth.h +10 -3
- data/vendor/libgit2/src/transports/auth_negotiate.c +31 -16
- data/vendor/libgit2/src/transports/auth_negotiate.h +2 -2
- data/vendor/libgit2/src/transports/auth_ntlm.c +223 -0
- data/vendor/libgit2/src/transports/auth_ntlm.h +35 -0
- data/vendor/libgit2/src/transports/cred.c +24 -24
- data/vendor/libgit2/src/transports/git.c +25 -30
- data/vendor/libgit2/src/transports/http.c +871 -335
- data/vendor/libgit2/src/transports/http.h +2 -0
- data/vendor/libgit2/src/transports/local.c +28 -28
- data/vendor/libgit2/src/transports/smart.c +64 -46
- data/vendor/libgit2/src/transports/smart.h +5 -6
- data/vendor/libgit2/src/transports/smart_pkt.c +162 -151
- data/vendor/libgit2/src/transports/smart_protocol.c +64 -94
- data/vendor/libgit2/src/transports/ssh.c +76 -65
- data/vendor/libgit2/src/transports/winhttp.c +328 -319
- data/vendor/libgit2/src/tree-cache.c +21 -14
- data/vendor/libgit2/src/tree.c +119 -112
- data/vendor/libgit2/src/tree.h +1 -0
- data/vendor/libgit2/src/unix/map.c +3 -3
- data/vendor/libgit2/src/unix/posix.h +1 -11
- data/vendor/libgit2/src/userdiff.h +3 -1
- data/vendor/libgit2/src/util.c +154 -93
- data/vendor/libgit2/src/util.h +19 -23
- data/vendor/libgit2/src/vector.c +15 -10
- data/vendor/libgit2/src/wildmatch.c +320 -0
- data/vendor/libgit2/src/wildmatch.h +23 -0
- data/vendor/libgit2/src/win32/dir.c +3 -3
- data/vendor/libgit2/src/win32/findfile.c +1 -1
- data/vendor/libgit2/src/win32/map.c +9 -11
- data/vendor/libgit2/src/win32/msvc-compat.h +6 -0
- data/vendor/libgit2/src/win32/path_w32.c +113 -9
- data/vendor/libgit2/src/win32/path_w32.h +18 -29
- data/vendor/libgit2/src/win32/posix.h +1 -4
- data/vendor/libgit2/src/win32/posix_w32.c +69 -44
- data/vendor/libgit2/src/win32/precompiled.h +0 -2
- data/vendor/libgit2/src/win32/thread.c +5 -10
- data/vendor/libgit2/src/win32/w32_buffer.c +9 -5
- data/vendor/libgit2/src/win32/w32_common.h +39 -0
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.c +2 -95
- data/vendor/libgit2/src/win32/w32_crtdbg_stacktrace.h +0 -2
- data/vendor/libgit2/src/win32/w32_stack.c +6 -11
- data/vendor/libgit2/src/win32/w32_stack.h +3 -3
- data/vendor/libgit2/src/win32/w32_util.c +27 -64
- data/vendor/libgit2/src/win32/w32_util.h +5 -49
- data/vendor/libgit2/src/worktree.c +44 -30
- data/vendor/libgit2/src/xdiff/xdiffi.c +5 -5
- data/vendor/libgit2/src/xdiff/xhistogram.c +1 -1
- data/vendor/libgit2/src/xdiff/xmerge.c +27 -15
- data/vendor/libgit2/src/xdiff/xpatience.c +3 -0
- data/vendor/libgit2/src/zstream.c +4 -4
- metadata +115 -38
- data/vendor/libgit2/deps/regex/CMakeLists.txt +0 -2
- data/vendor/libgit2/deps/regex/config.h +0 -7
- data/vendor/libgit2/deps/regex/regcomp.c +0 -3857
- data/vendor/libgit2/deps/regex/regex.c +0 -92
- data/vendor/libgit2/deps/regex/regex.h +0 -582
- data/vendor/libgit2/deps/regex/regex_internal.c +0 -1744
- data/vendor/libgit2/deps/regex/regex_internal.h +0 -819
- data/vendor/libgit2/deps/regex/regexec.c +0 -4369
- data/vendor/libgit2/include/git2/inttypes.h +0 -309
- data/vendor/libgit2/include/git2/sys/time.h +0 -31
- data/vendor/libgit2/libgit2.pc.in +0 -13
- data/vendor/libgit2/src/config_file.h +0 -73
- data/vendor/libgit2/src/fnmatch.c +0 -248
- data/vendor/libgit2/src/fnmatch.h +0 -48
- data/vendor/libgit2/src/hash/hash_collisiondetect.h +0 -47
- data/vendor/libgit2/src/hash/hash_openssl.h +0 -59
- data/vendor/libgit2/src/streams/curl.c +0 -385
- data/vendor/libgit2/src/streams/curl.h +0 -17
- /data/vendor/libgit2/deps/http-parser/{LICENSE-MIT → COPYING} +0 -0
- /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/sha1.h +0 -0
- /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.c +0 -0
- /data/vendor/libgit2/src/hash/{sha1dc → sha1/sha1dc}/ubc_check.h +0 -0
|
@@ -5,15 +5,25 @@
|
|
|
5
5
|
* a Linking Exception. For full terms see the included COPYING file.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
#include "
|
|
8
|
+
#include "win32.h"
|
|
9
9
|
|
|
10
10
|
#include "global.h"
|
|
11
|
-
#include "hash.h"
|
|
12
11
|
|
|
13
12
|
#include <wincrypt.h>
|
|
14
13
|
#include <strsafe.h>
|
|
15
14
|
|
|
16
|
-
|
|
15
|
+
#define GIT_HASH_CNG_DLL_NAME "bcrypt.dll"
|
|
16
|
+
|
|
17
|
+
/* BCRYPT_SHA1_ALGORITHM */
|
|
18
|
+
#define GIT_HASH_CNG_HASH_TYPE L"SHA1"
|
|
19
|
+
|
|
20
|
+
/* BCRYPT_OBJECT_LENGTH */
|
|
21
|
+
#define GIT_HASH_CNG_HASH_OBJECT_LEN L"ObjectLength"
|
|
22
|
+
|
|
23
|
+
/* BCRYPT_HASH_REUSEABLE_FLAGS */
|
|
24
|
+
#define GIT_HASH_CNG_HASH_REUSABLE 0x00000020
|
|
25
|
+
|
|
26
|
+
static git_hash_prov hash_prov = {0};
|
|
17
27
|
|
|
18
28
|
/* Hash initialization */
|
|
19
29
|
|
|
@@ -25,7 +35,7 @@ GIT_INLINE(int) hash_cng_prov_init(void)
|
|
|
25
35
|
|
|
26
36
|
/* Only use CNG on Windows 2008 / Vista SP1 or better (Windows 6.0 SP1) */
|
|
27
37
|
if (!git_has_win32_version(6, 0, 1)) {
|
|
28
|
-
|
|
38
|
+
git_error_set(GIT_ERROR_SHA1, "CryptoNG is not supported on this platform");
|
|
29
39
|
return -1;
|
|
30
40
|
}
|
|
31
41
|
|
|
@@ -35,7 +45,7 @@ GIT_INLINE(int) hash_cng_prov_init(void)
|
|
|
35
45
|
StringCchCat(dll_path, MAX_PATH, "\\") < 0 ||
|
|
36
46
|
StringCchCat(dll_path, MAX_PATH, GIT_HASH_CNG_DLL_NAME) < 0 ||
|
|
37
47
|
(hash_prov.prov.cng.dll = LoadLibrary(dll_path)) == NULL) {
|
|
38
|
-
|
|
48
|
+
git_error_set(GIT_ERROR_SHA1, "CryptoNG library could not be loaded");
|
|
39
49
|
return -1;
|
|
40
50
|
}
|
|
41
51
|
|
|
@@ -49,7 +59,7 @@ GIT_INLINE(int) hash_cng_prov_init(void)
|
|
|
49
59
|
(hash_prov.prov.cng.close_algorithm_provider = (hash_win32_cng_close_algorithm_provider_fn)GetProcAddress(hash_prov.prov.cng.dll, "BCryptCloseAlgorithmProvider")) == NULL) {
|
|
50
60
|
FreeLibrary(hash_prov.prov.cng.dll);
|
|
51
61
|
|
|
52
|
-
|
|
62
|
+
git_error_set(GIT_ERROR_OS, "CryptoNG functions could not be loaded");
|
|
53
63
|
return -1;
|
|
54
64
|
}
|
|
55
65
|
|
|
@@ -57,7 +67,7 @@ GIT_INLINE(int) hash_cng_prov_init(void)
|
|
|
57
67
|
if (hash_prov.prov.cng.open_algorithm_provider(&hash_prov.prov.cng.handle, GIT_HASH_CNG_HASH_TYPE, NULL, GIT_HASH_CNG_HASH_REUSABLE) < 0) {
|
|
58
68
|
FreeLibrary(hash_prov.prov.cng.dll);
|
|
59
69
|
|
|
60
|
-
|
|
70
|
+
git_error_set(GIT_ERROR_OS, "algorithm provider could not be initialized");
|
|
61
71
|
return -1;
|
|
62
72
|
}
|
|
63
73
|
|
|
@@ -66,7 +76,7 @@ GIT_INLINE(int) hash_cng_prov_init(void)
|
|
|
66
76
|
hash_prov.prov.cng.close_algorithm_provider(hash_prov.prov.cng.handle, 0);
|
|
67
77
|
FreeLibrary(hash_prov.prov.cng.dll);
|
|
68
78
|
|
|
69
|
-
|
|
79
|
+
git_error_set(GIT_ERROR_OS, "algorithm handle could not be found");
|
|
70
80
|
return -1;
|
|
71
81
|
}
|
|
72
82
|
|
|
@@ -86,7 +96,7 @@ GIT_INLINE(void) hash_cng_prov_shutdown(void)
|
|
|
86
96
|
GIT_INLINE(int) hash_cryptoapi_prov_init()
|
|
87
97
|
{
|
|
88
98
|
if (!CryptAcquireContext(&hash_prov.prov.cryptoapi.handle, NULL, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) {
|
|
89
|
-
|
|
99
|
+
git_error_set(GIT_ERROR_OS, "legacy hash context could not be started");
|
|
90
100
|
return -1;
|
|
91
101
|
}
|
|
92
102
|
|
|
@@ -101,7 +111,7 @@ GIT_INLINE(void) hash_cryptoapi_prov_shutdown(void)
|
|
|
101
111
|
hash_prov.type = INVALID;
|
|
102
112
|
}
|
|
103
113
|
|
|
104
|
-
static void
|
|
114
|
+
static void sha1_shutdown(void)
|
|
105
115
|
{
|
|
106
116
|
if (hash_prov.type == CNG)
|
|
107
117
|
hash_cng_prov_shutdown();
|
|
@@ -109,7 +119,7 @@ static void git_hash_global_shutdown(void)
|
|
|
109
119
|
hash_cryptoapi_prov_shutdown();
|
|
110
120
|
}
|
|
111
121
|
|
|
112
|
-
int
|
|
122
|
+
int git_hash_sha1_global_init(void)
|
|
113
123
|
{
|
|
114
124
|
int error = 0;
|
|
115
125
|
|
|
@@ -119,29 +129,29 @@ int git_hash_global_init(void)
|
|
|
119
129
|
if ((error = hash_cng_prov_init()) < 0)
|
|
120
130
|
error = hash_cryptoapi_prov_init();
|
|
121
131
|
|
|
122
|
-
git__on_shutdown(
|
|
132
|
+
git__on_shutdown(sha1_shutdown);
|
|
123
133
|
|
|
124
134
|
return error;
|
|
125
135
|
}
|
|
126
136
|
|
|
127
137
|
/* CryptoAPI: available in Windows XP and newer */
|
|
128
138
|
|
|
129
|
-
GIT_INLINE(int) hash_ctx_cryptoapi_init(
|
|
139
|
+
GIT_INLINE(int) hash_ctx_cryptoapi_init(git_hash_sha1_ctx *ctx)
|
|
130
140
|
{
|
|
131
141
|
ctx->type = CRYPTOAPI;
|
|
132
142
|
ctx->prov = &hash_prov;
|
|
133
143
|
|
|
134
|
-
return
|
|
144
|
+
return git_hash_sha1_init(ctx);
|
|
135
145
|
}
|
|
136
146
|
|
|
137
|
-
GIT_INLINE(int) hash_cryptoapi_init(
|
|
147
|
+
GIT_INLINE(int) hash_cryptoapi_init(git_hash_sha1_ctx *ctx)
|
|
138
148
|
{
|
|
139
149
|
if (ctx->ctx.cryptoapi.valid)
|
|
140
150
|
CryptDestroyHash(ctx->ctx.cryptoapi.hash_handle);
|
|
141
151
|
|
|
142
152
|
if (!CryptCreateHash(ctx->prov->prov.cryptoapi.handle, CALG_SHA1, 0, 0, &ctx->ctx.cryptoapi.hash_handle)) {
|
|
143
153
|
ctx->ctx.cryptoapi.valid = 0;
|
|
144
|
-
|
|
154
|
+
git_error_set(GIT_ERROR_OS, "legacy hash implementation could not be created");
|
|
145
155
|
return -1;
|
|
146
156
|
}
|
|
147
157
|
|
|
@@ -149,7 +159,7 @@ GIT_INLINE(int) hash_cryptoapi_init(git_hash_ctx *ctx)
|
|
|
149
159
|
return 0;
|
|
150
160
|
}
|
|
151
161
|
|
|
152
|
-
GIT_INLINE(int) hash_cryptoapi_update(
|
|
162
|
+
GIT_INLINE(int) hash_cryptoapi_update(git_hash_sha1_ctx *ctx, const void *_data, size_t len)
|
|
153
163
|
{
|
|
154
164
|
const BYTE *data = (BYTE *)_data;
|
|
155
165
|
|
|
@@ -159,7 +169,7 @@ GIT_INLINE(int) hash_cryptoapi_update(git_hash_ctx *ctx, const void *_data, size
|
|
|
159
169
|
DWORD chunk = (len > MAXDWORD) ? MAXDWORD : (DWORD)len;
|
|
160
170
|
|
|
161
171
|
if (!CryptHashData(ctx->ctx.cryptoapi.hash_handle, data, chunk, 0)) {
|
|
162
|
-
|
|
172
|
+
git_error_set(GIT_ERROR_OS, "legacy hash data could not be updated");
|
|
163
173
|
return -1;
|
|
164
174
|
}
|
|
165
175
|
|
|
@@ -170,7 +180,7 @@ GIT_INLINE(int) hash_cryptoapi_update(git_hash_ctx *ctx, const void *_data, size
|
|
|
170
180
|
return 0;
|
|
171
181
|
}
|
|
172
182
|
|
|
173
|
-
GIT_INLINE(int) hash_cryptoapi_final(git_oid *out,
|
|
183
|
+
GIT_INLINE(int) hash_cryptoapi_final(git_oid *out, git_hash_sha1_ctx *ctx)
|
|
174
184
|
{
|
|
175
185
|
DWORD len = 20;
|
|
176
186
|
int error = 0;
|
|
@@ -178,7 +188,7 @@ GIT_INLINE(int) hash_cryptoapi_final(git_oid *out, git_hash_ctx *ctx)
|
|
|
178
188
|
assert(ctx->ctx.cryptoapi.valid);
|
|
179
189
|
|
|
180
190
|
if (!CryptGetHashParam(ctx->ctx.cryptoapi.hash_handle, HP_HASHVAL, out->id, &len, 0)) {
|
|
181
|
-
|
|
191
|
+
git_error_set(GIT_ERROR_OS, "legacy hash data could not be finished");
|
|
182
192
|
error = -1;
|
|
183
193
|
}
|
|
184
194
|
|
|
@@ -188,7 +198,7 @@ GIT_INLINE(int) hash_cryptoapi_final(git_oid *out, git_hash_ctx *ctx)
|
|
|
188
198
|
return error;
|
|
189
199
|
}
|
|
190
200
|
|
|
191
|
-
GIT_INLINE(void) hash_ctx_cryptoapi_cleanup(
|
|
201
|
+
GIT_INLINE(void) hash_ctx_cryptoapi_cleanup(git_hash_sha1_ctx *ctx)
|
|
192
202
|
{
|
|
193
203
|
if (ctx->ctx.cryptoapi.valid)
|
|
194
204
|
CryptDestroyHash(ctx->ctx.cryptoapi.hash_handle);
|
|
@@ -196,7 +206,7 @@ GIT_INLINE(void) hash_ctx_cryptoapi_cleanup(git_hash_ctx *ctx)
|
|
|
196
206
|
|
|
197
207
|
/* CNG: Available in Windows Server 2008 and newer */
|
|
198
208
|
|
|
199
|
-
GIT_INLINE(int) hash_ctx_cng_init(
|
|
209
|
+
GIT_INLINE(int) hash_ctx_cng_init(git_hash_sha1_ctx *ctx)
|
|
200
210
|
{
|
|
201
211
|
if ((ctx->ctx.cng.hash_object = git__malloc(hash_prov.prov.cng.hash_object_size)) == NULL)
|
|
202
212
|
return -1;
|
|
@@ -204,7 +214,7 @@ GIT_INLINE(int) hash_ctx_cng_init(git_hash_ctx *ctx)
|
|
|
204
214
|
if (hash_prov.prov.cng.create_hash(hash_prov.prov.cng.handle, &ctx->ctx.cng.hash_handle, ctx->ctx.cng.hash_object, hash_prov.prov.cng.hash_object_size, NULL, 0, 0) < 0) {
|
|
205
215
|
git__free(ctx->ctx.cng.hash_object);
|
|
206
216
|
|
|
207
|
-
|
|
217
|
+
git_error_set(GIT_ERROR_OS, "hash implementation could not be created");
|
|
208
218
|
return -1;
|
|
209
219
|
}
|
|
210
220
|
|
|
@@ -214,7 +224,7 @@ GIT_INLINE(int) hash_ctx_cng_init(git_hash_ctx *ctx)
|
|
|
214
224
|
return 0;
|
|
215
225
|
}
|
|
216
226
|
|
|
217
|
-
GIT_INLINE(int) hash_cng_init(
|
|
227
|
+
GIT_INLINE(int) hash_cng_init(git_hash_sha1_ctx *ctx)
|
|
218
228
|
{
|
|
219
229
|
BYTE hash[GIT_OID_RAWSZ];
|
|
220
230
|
|
|
@@ -223,7 +233,7 @@ GIT_INLINE(int) hash_cng_init(git_hash_ctx *ctx)
|
|
|
223
233
|
|
|
224
234
|
/* CNG needs to be finished to restart */
|
|
225
235
|
if (ctx->prov->prov.cng.finish_hash(ctx->ctx.cng.hash_handle, hash, GIT_OID_RAWSZ, 0) < 0) {
|
|
226
|
-
|
|
236
|
+
git_error_set(GIT_ERROR_OS, "hash implementation could not be finished");
|
|
227
237
|
return -1;
|
|
228
238
|
}
|
|
229
239
|
|
|
@@ -232,7 +242,7 @@ GIT_INLINE(int) hash_cng_init(git_hash_ctx *ctx)
|
|
|
232
242
|
return 0;
|
|
233
243
|
}
|
|
234
244
|
|
|
235
|
-
GIT_INLINE(int) hash_cng_update(
|
|
245
|
+
GIT_INLINE(int) hash_cng_update(git_hash_sha1_ctx *ctx, const void *_data, size_t len)
|
|
236
246
|
{
|
|
237
247
|
PBYTE data = (PBYTE)_data;
|
|
238
248
|
|
|
@@ -240,7 +250,7 @@ GIT_INLINE(int) hash_cng_update(git_hash_ctx *ctx, const void *_data, size_t len
|
|
|
240
250
|
ULONG chunk = (len > ULONG_MAX) ? ULONG_MAX : (ULONG)len;
|
|
241
251
|
|
|
242
252
|
if (ctx->prov->prov.cng.hash_data(ctx->ctx.cng.hash_handle, data, chunk, 0) < 0) {
|
|
243
|
-
|
|
253
|
+
git_error_set(GIT_ERROR_OS, "hash could not be updated");
|
|
244
254
|
return -1;
|
|
245
255
|
}
|
|
246
256
|
|
|
@@ -251,10 +261,10 @@ GIT_INLINE(int) hash_cng_update(git_hash_ctx *ctx, const void *_data, size_t len
|
|
|
251
261
|
return 0;
|
|
252
262
|
}
|
|
253
263
|
|
|
254
|
-
GIT_INLINE(int) hash_cng_final(git_oid *out,
|
|
264
|
+
GIT_INLINE(int) hash_cng_final(git_oid *out, git_hash_sha1_ctx *ctx)
|
|
255
265
|
{
|
|
256
266
|
if (ctx->prov->prov.cng.finish_hash(ctx->ctx.cng.hash_handle, out->id, GIT_OID_RAWSZ, 0) < 0) {
|
|
257
|
-
|
|
267
|
+
git_error_set(GIT_ERROR_OS, "hash could not be finished");
|
|
258
268
|
return -1;
|
|
259
269
|
}
|
|
260
270
|
|
|
@@ -263,7 +273,7 @@ GIT_INLINE(int) hash_cng_final(git_oid *out, git_hash_ctx *ctx)
|
|
|
263
273
|
return 0;
|
|
264
274
|
}
|
|
265
275
|
|
|
266
|
-
GIT_INLINE(void) hash_ctx_cng_cleanup(
|
|
276
|
+
GIT_INLINE(void) hash_ctx_cng_cleanup(git_hash_sha1_ctx *ctx)
|
|
267
277
|
{
|
|
268
278
|
ctx->prov->prov.cng.destroy_hash(ctx->ctx.cng.hash_handle);
|
|
269
279
|
git__free(ctx->ctx.cng.hash_object);
|
|
@@ -271,7 +281,7 @@ GIT_INLINE(void) hash_ctx_cng_cleanup(git_hash_ctx *ctx)
|
|
|
271
281
|
|
|
272
282
|
/* Indirection between CryptoAPI and CNG */
|
|
273
283
|
|
|
274
|
-
int
|
|
284
|
+
int git_hash_sha1_ctx_init(git_hash_sha1_ctx *ctx)
|
|
275
285
|
{
|
|
276
286
|
int error = 0;
|
|
277
287
|
|
|
@@ -282,33 +292,33 @@ int git_hash_ctx_init(git_hash_ctx *ctx)
|
|
|
282
292
|
* initialized with git_libgit2_init. Otherwise, it must be initialized
|
|
283
293
|
* at first use.
|
|
284
294
|
*/
|
|
285
|
-
if (hash_prov.type == INVALID && (error =
|
|
295
|
+
if (hash_prov.type == INVALID && (error = git_hash_sha1_global_init()) < 0)
|
|
286
296
|
return error;
|
|
287
297
|
|
|
288
|
-
memset(ctx, 0x0, sizeof(
|
|
298
|
+
memset(ctx, 0x0, sizeof(git_hash_sha1_ctx));
|
|
289
299
|
|
|
290
300
|
return (hash_prov.type == CNG) ? hash_ctx_cng_init(ctx) : hash_ctx_cryptoapi_init(ctx);
|
|
291
301
|
}
|
|
292
302
|
|
|
293
|
-
int
|
|
303
|
+
int git_hash_sha1_init(git_hash_sha1_ctx *ctx)
|
|
294
304
|
{
|
|
295
305
|
assert(ctx && ctx->type);
|
|
296
306
|
return (ctx->type == CNG) ? hash_cng_init(ctx) : hash_cryptoapi_init(ctx);
|
|
297
307
|
}
|
|
298
308
|
|
|
299
|
-
int
|
|
309
|
+
int git_hash_sha1_update(git_hash_sha1_ctx *ctx, const void *data, size_t len)
|
|
300
310
|
{
|
|
301
311
|
assert(ctx && ctx->type);
|
|
302
312
|
return (ctx->type == CNG) ? hash_cng_update(ctx, data, len) : hash_cryptoapi_update(ctx, data, len);
|
|
303
313
|
}
|
|
304
314
|
|
|
305
|
-
int
|
|
315
|
+
int git_hash_sha1_final(git_oid *out, git_hash_sha1_ctx *ctx)
|
|
306
316
|
{
|
|
307
317
|
assert(ctx && ctx->type);
|
|
308
318
|
return (ctx->type == CNG) ? hash_cng_final(out, ctx) : hash_cryptoapi_final(out, ctx);
|
|
309
319
|
}
|
|
310
320
|
|
|
311
|
-
void
|
|
321
|
+
void git_hash_sha1_ctx_cleanup(git_hash_sha1_ctx *ctx)
|
|
312
322
|
{
|
|
313
323
|
assert(ctx);
|
|
314
324
|
|
|
@@ -5,12 +5,10 @@
|
|
|
5
5
|
* a Linking Exception. For full terms see the included COPYING file.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
#ifndef
|
|
9
|
-
#define
|
|
8
|
+
#ifndef INCLUDE_hash_sha1_win32_h__
|
|
9
|
+
#define INCLUDE_hash_sha1_win32_h__
|
|
10
10
|
|
|
11
|
-
#include "
|
|
12
|
-
|
|
13
|
-
#include "hash.h"
|
|
11
|
+
#include "hash/sha1.h"
|
|
14
12
|
|
|
15
13
|
#include <wincrypt.h>
|
|
16
14
|
#include <strsafe.h>
|
|
@@ -36,17 +34,6 @@ struct hash_cryptoapi_prov {
|
|
|
36
34
|
* would not exist when building in pre-Windows 2008 environments.
|
|
37
35
|
*/
|
|
38
36
|
|
|
39
|
-
#define GIT_HASH_CNG_DLL_NAME "bcrypt.dll"
|
|
40
|
-
|
|
41
|
-
/* BCRYPT_SHA1_ALGORITHM */
|
|
42
|
-
#define GIT_HASH_CNG_HASH_TYPE L"SHA1"
|
|
43
|
-
|
|
44
|
-
/* BCRYPT_OBJECT_LENGTH */
|
|
45
|
-
#define GIT_HASH_CNG_HASH_OBJECT_LEN L"ObjectLength"
|
|
46
|
-
|
|
47
|
-
/* BCRYPT_HASH_REUSEABLE_FLAGS */
|
|
48
|
-
#define GIT_HASH_CNG_HASH_REUSABLE 0x00000020
|
|
49
|
-
|
|
50
37
|
/* Function declarations for CNG */
|
|
51
38
|
typedef NTSTATUS (WINAPI *hash_win32_cng_open_algorithm_provider_fn)(
|
|
52
39
|
HANDLE /* BCRYPT_ALG_HANDLE */ *phAlgorithm,
|
|
@@ -106,14 +93,14 @@ struct hash_cng_prov {
|
|
|
106
93
|
DWORD hash_object_size;
|
|
107
94
|
};
|
|
108
95
|
|
|
109
|
-
struct
|
|
96
|
+
typedef struct {
|
|
110
97
|
enum hash_win32_prov_type type;
|
|
111
98
|
|
|
112
99
|
union {
|
|
113
100
|
struct hash_cryptoapi_prov cryptoapi;
|
|
114
101
|
struct hash_cng_prov cng;
|
|
115
102
|
} prov;
|
|
116
|
-
};
|
|
103
|
+
} git_hash_prov;
|
|
117
104
|
|
|
118
105
|
/* Hash contexts */
|
|
119
106
|
|
|
@@ -128,7 +115,7 @@ struct hash_cng_ctx {
|
|
|
128
115
|
PBYTE hash_object;
|
|
129
116
|
};
|
|
130
117
|
|
|
131
|
-
struct
|
|
118
|
+
struct git_hash_sha1_ctx {
|
|
132
119
|
enum hash_win32_prov_type type;
|
|
133
120
|
git_hash_prov *prov;
|
|
134
121
|
|
|
@@ -0,0 +1,38 @@
|
|
|
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
|
+
#ifndef INCLUDE_hash_sha1_h__
|
|
9
|
+
#define INCLUDE_hash_sha1_h__
|
|
10
|
+
|
|
11
|
+
#include "common.h"
|
|
12
|
+
|
|
13
|
+
typedef struct git_hash_sha1_ctx git_hash_sha1_ctx;
|
|
14
|
+
|
|
15
|
+
#if defined(GIT_SHA1_COLLISIONDETECT)
|
|
16
|
+
# include "sha1/collisiondetect.h"
|
|
17
|
+
#elif defined(GIT_SHA1_COMMON_CRYPTO)
|
|
18
|
+
# include "sha1/common_crypto.h"
|
|
19
|
+
#elif defined(GIT_SHA1_OPENSSL)
|
|
20
|
+
# include "sha1/openssl.h"
|
|
21
|
+
#elif defined(GIT_SHA1_WIN32)
|
|
22
|
+
# include "sha1/win32.h"
|
|
23
|
+
#elif defined(GIT_SHA1_MBEDTLS)
|
|
24
|
+
# include "sha1/mbedtls.h"
|
|
25
|
+
#else
|
|
26
|
+
# include "sha1/generic.h"
|
|
27
|
+
#endif
|
|
28
|
+
|
|
29
|
+
int git_hash_sha1_global_init(void);
|
|
30
|
+
|
|
31
|
+
int git_hash_sha1_ctx_init(git_hash_sha1_ctx *ctx);
|
|
32
|
+
void git_hash_sha1_ctx_cleanup(git_hash_sha1_ctx *ctx);
|
|
33
|
+
|
|
34
|
+
int git_hash_sha1_init(git_hash_sha1_ctx *c);
|
|
35
|
+
int git_hash_sha1_update(git_hash_sha1_ctx *c, const void *data, size_t len);
|
|
36
|
+
int git_hash_sha1_final(git_oid *out, git_hash_sha1_ctx *c);
|
|
37
|
+
|
|
38
|
+
#endif
|
data/vendor/libgit2/src/hash.c
CHANGED
|
@@ -7,6 +7,67 @@
|
|
|
7
7
|
|
|
8
8
|
#include "hash.h"
|
|
9
9
|
|
|
10
|
+
int git_hash_global_init(void)
|
|
11
|
+
{
|
|
12
|
+
return git_hash_sha1_global_init();
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
int git_hash_ctx_init(git_hash_ctx *ctx)
|
|
16
|
+
{
|
|
17
|
+
int error;
|
|
18
|
+
|
|
19
|
+
if ((error = git_hash_sha1_ctx_init(&ctx->sha1)) < 0)
|
|
20
|
+
return error;
|
|
21
|
+
|
|
22
|
+
ctx->algo = GIT_HASH_ALGO_SHA1;
|
|
23
|
+
|
|
24
|
+
return 0;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
void git_hash_ctx_cleanup(git_hash_ctx *ctx)
|
|
28
|
+
{
|
|
29
|
+
switch (ctx->algo) {
|
|
30
|
+
case GIT_HASH_ALGO_SHA1:
|
|
31
|
+
git_hash_sha1_ctx_cleanup(&ctx->sha1);
|
|
32
|
+
return;
|
|
33
|
+
default:
|
|
34
|
+
assert(0);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
int git_hash_init(git_hash_ctx *ctx)
|
|
39
|
+
{
|
|
40
|
+
switch (ctx->algo) {
|
|
41
|
+
case GIT_HASH_ALGO_SHA1:
|
|
42
|
+
return git_hash_sha1_init(&ctx->sha1);
|
|
43
|
+
default:
|
|
44
|
+
assert(0);
|
|
45
|
+
return -1;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
int git_hash_update(git_hash_ctx *ctx, const void *data, size_t len)
|
|
50
|
+
{
|
|
51
|
+
switch (ctx->algo) {
|
|
52
|
+
case GIT_HASH_ALGO_SHA1:
|
|
53
|
+
return git_hash_sha1_update(&ctx->sha1, data, len);
|
|
54
|
+
default:
|
|
55
|
+
assert(0);
|
|
56
|
+
return -1;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
int git_hash_final(git_oid *out, git_hash_ctx *ctx)
|
|
61
|
+
{
|
|
62
|
+
switch (ctx->algo) {
|
|
63
|
+
case GIT_HASH_ALGO_SHA1:
|
|
64
|
+
return git_hash_sha1_final(out, &ctx->sha1);
|
|
65
|
+
default:
|
|
66
|
+
assert(0);
|
|
67
|
+
return -1;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
10
71
|
int git_hash_buf(git_oid *out, const void *data, size_t len)
|
|
11
72
|
{
|
|
12
73
|
git_hash_ctx ctx;
|
data/vendor/libgit2/src/hash.h
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
|
5
5
|
* a Linking Exception. For full terms see the included COPYING file.
|
|
6
6
|
*/
|
|
7
|
+
|
|
7
8
|
#ifndef INCLUDE_hash_h__
|
|
8
9
|
#define INCLUDE_hash_h__
|
|
9
10
|
|
|
@@ -11,32 +12,30 @@
|
|
|
11
12
|
|
|
12
13
|
#include "git2/oid.h"
|
|
13
14
|
|
|
14
|
-
typedef struct git_hash_prov git_hash_prov;
|
|
15
|
-
typedef struct git_hash_ctx git_hash_ctx;
|
|
16
|
-
|
|
17
|
-
int git_hash_global_init(void);
|
|
18
|
-
int git_hash_ctx_init(git_hash_ctx *ctx);
|
|
19
|
-
void git_hash_ctx_cleanup(git_hash_ctx *ctx);
|
|
20
|
-
|
|
21
|
-
#if defined(GIT_SHA1_COLLISIONDETECT)
|
|
22
|
-
# include "hash/hash_collisiondetect.h"
|
|
23
|
-
#elif defined(GIT_SHA1_COMMON_CRYPTO)
|
|
24
|
-
# include "hash/hash_common_crypto.h"
|
|
25
|
-
#elif defined(GIT_SHA1_OPENSSL)
|
|
26
|
-
# include "hash/hash_openssl.h"
|
|
27
|
-
#elif defined(GIT_SHA1_WIN32)
|
|
28
|
-
# include "hash/hash_win32.h"
|
|
29
|
-
#elif defined(GIT_SHA1_MBEDTLS)
|
|
30
|
-
# include "hash/hash_mbedtls.h"
|
|
31
|
-
#else
|
|
32
|
-
# include "hash/hash_generic.h"
|
|
33
|
-
#endif
|
|
34
|
-
|
|
35
15
|
typedef struct {
|
|
36
16
|
void *data;
|
|
37
17
|
size_t len;
|
|
38
18
|
} git_buf_vec;
|
|
39
19
|
|
|
20
|
+
typedef enum {
|
|
21
|
+
GIT_HASH_ALGO_UNKNOWN = 0,
|
|
22
|
+
GIT_HASH_ALGO_SHA1,
|
|
23
|
+
} git_hash_algo_t;
|
|
24
|
+
|
|
25
|
+
#include "hash/sha1.h"
|
|
26
|
+
|
|
27
|
+
typedef struct git_hash_ctx {
|
|
28
|
+
union {
|
|
29
|
+
git_hash_sha1_ctx sha1;
|
|
30
|
+
};
|
|
31
|
+
git_hash_algo_t algo;
|
|
32
|
+
} git_hash_ctx;
|
|
33
|
+
|
|
34
|
+
int git_hash_global_init(void);
|
|
35
|
+
|
|
36
|
+
int git_hash_ctx_init(git_hash_ctx *ctx);
|
|
37
|
+
void git_hash_ctx_cleanup(git_hash_ctx *ctx);
|
|
38
|
+
|
|
40
39
|
int git_hash_init(git_hash_ctx *c);
|
|
41
40
|
int git_hash_update(git_hash_ctx *c, const void *data, size_t len);
|
|
42
41
|
int git_hash_final(git_oid *out, git_hash_ctx *c);
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
#include "common.h"
|
|
9
9
|
|
|
10
10
|
#include "git2/sys/hashsig.h"
|
|
11
|
-
#include "
|
|
11
|
+
#include "futils.h"
|
|
12
12
|
#include "util.h"
|
|
13
13
|
|
|
14
14
|
typedef uint32_t hashsig_t;
|
|
@@ -216,7 +216,7 @@ static int hashsig_finalize_hashes(git_hashsig *sig)
|
|
|
216
216
|
{
|
|
217
217
|
if (sig->mins.size < HASHSIG_HEAP_MIN_SIZE &&
|
|
218
218
|
!(sig->opt & GIT_HASHSIG_ALLOW_SMALL_FILES)) {
|
|
219
|
-
|
|
219
|
+
git_error_set(GIT_ERROR_INVALID,
|
|
220
220
|
"file too small for similarity signature calculation");
|
|
221
221
|
return GIT_EBUFS;
|
|
222
222
|
}
|
|
@@ -249,7 +249,7 @@ int git_hashsig_create(
|
|
|
249
249
|
int error;
|
|
250
250
|
hashsig_in_progress prog;
|
|
251
251
|
git_hashsig *sig = hashsig_alloc(opts);
|
|
252
|
-
|
|
252
|
+
GIT_ERROR_CHECK_ALLOC(sig);
|
|
253
253
|
|
|
254
254
|
hashsig_in_progress_init(&prog, sig);
|
|
255
255
|
|
|
@@ -276,7 +276,7 @@ int git_hashsig_create_fromfile(
|
|
|
276
276
|
int error = 0, fd;
|
|
277
277
|
hashsig_in_progress prog;
|
|
278
278
|
git_hashsig *sig = hashsig_alloc(opts);
|
|
279
|
-
|
|
279
|
+
GIT_ERROR_CHECK_ALLOC(sig);
|
|
280
280
|
|
|
281
281
|
if ((fd = git_futils_open_ro(path)) < 0) {
|
|
282
282
|
git__free(sig);
|
|
@@ -288,7 +288,7 @@ int git_hashsig_create_fromfile(
|
|
|
288
288
|
while (!error) {
|
|
289
289
|
if ((buflen = p_read(fd, buf, sizeof(buf))) <= 0) {
|
|
290
290
|
if ((error = (int)buflen) < 0)
|
|
291
|
-
|
|
291
|
+
git_error_set(GIT_ERROR_OS,
|
|
292
292
|
"read error on '%s' calculating similarity hashes", path);
|
|
293
293
|
break;
|
|
294
294
|
}
|