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.
Files changed (424) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -2
  3. data/ext/rugged/extconf.rb +1 -0
  4. data/ext/rugged/rugged.c +16 -0
  5. data/ext/rugged/rugged.h +4 -0
  6. data/ext/rugged/rugged_remote.c +10 -10
  7. data/ext/rugged/rugged_repo.c +2 -7
  8. data/ext/rugged/rugged_settings.c +5 -0
  9. data/lib/rugged/tree.rb +4 -0
  10. data/lib/rugged/version.rb +1 -1
  11. data/vendor/libgit2/CMakeLists.txt +16 -3
  12. data/vendor/libgit2/COPYING +40 -0
  13. data/vendor/libgit2/cmake/AddClarTest.cmake +7 -0
  14. data/vendor/libgit2/cmake/FindPCRE.cmake +3 -4
  15. data/vendor/libgit2/cmake/FindPCRE2.cmake +1 -1
  16. data/vendor/libgit2/cmake/SelectHTTPSBackend.cmake +1 -1
  17. data/vendor/libgit2/cmake/SelectHashes.cmake +62 -14
  18. data/vendor/libgit2/deps/ntlmclient/crypt_openssl.c +3 -1
  19. data/vendor/libgit2/include/git2/branch.h +2 -2
  20. data/vendor/libgit2/include/git2/common.h +11 -0
  21. data/vendor/libgit2/include/git2/config.h +6 -6
  22. data/vendor/libgit2/include/git2/deprecated.h +2 -0
  23. data/vendor/libgit2/include/git2/errors.h +17 -3
  24. data/vendor/libgit2/include/git2/merge.h +1 -1
  25. data/vendor/libgit2/include/git2/status.h +5 -2
  26. data/vendor/libgit2/include/git2/sys/remote.h +15 -0
  27. data/vendor/libgit2/include/git2/sys/transport.h +9 -5
  28. data/vendor/libgit2/include/git2/version.h +27 -6
  29. data/vendor/libgit2/src/CMakeLists.txt +104 -214
  30. data/vendor/libgit2/src/README.md +12 -0
  31. data/vendor/libgit2/src/cli/CMakeLists.txt +53 -0
  32. data/vendor/libgit2/src/cli/README.md +26 -0
  33. data/vendor/libgit2/src/cli/cli.h +20 -0
  34. data/vendor/libgit2/src/cli/cmd.c +21 -0
  35. data/vendor/libgit2/src/cli/cmd.h +33 -0
  36. data/vendor/libgit2/src/cli/cmd_cat_file.c +204 -0
  37. data/vendor/libgit2/src/cli/cmd_clone.c +176 -0
  38. data/vendor/libgit2/src/cli/cmd_hash_object.c +135 -0
  39. data/vendor/libgit2/src/cli/cmd_help.c +86 -0
  40. data/vendor/libgit2/src/cli/error.h +51 -0
  41. data/vendor/libgit2/src/cli/main.c +106 -0
  42. data/vendor/libgit2/src/cli/opt.c +669 -0
  43. data/vendor/libgit2/src/cli/opt.h +349 -0
  44. data/vendor/libgit2/src/cli/opt_usage.c +194 -0
  45. data/vendor/libgit2/src/cli/opt_usage.h +35 -0
  46. data/vendor/libgit2/src/cli/progress.c +345 -0
  47. data/vendor/libgit2/src/cli/progress.h +117 -0
  48. data/vendor/libgit2/src/cli/sighandler.h +20 -0
  49. data/vendor/libgit2/src/cli/unix/sighandler.c +36 -0
  50. data/vendor/libgit2/src/cli/win32/precompiled.h +3 -0
  51. data/vendor/libgit2/src/cli/win32/sighandler.c +37 -0
  52. data/vendor/libgit2/src/features.h.in +9 -0
  53. data/vendor/libgit2/src/libgit2/CMakeLists.txt +131 -0
  54. data/vendor/libgit2/src/{blob.c → libgit2/blob.c} +1 -1
  55. data/vendor/libgit2/src/{branch.c → libgit2/branch.c} +14 -9
  56. data/vendor/libgit2/src/{commit_graph.c → libgit2/commit_graph.c} +20 -17
  57. data/vendor/libgit2/src/{commit_graph.h → libgit2/commit_graph.h} +1 -1
  58. data/vendor/libgit2/src/libgit2/common.h +55 -0
  59. data/vendor/libgit2/src/{config.c → libgit2/config.c} +2 -2
  60. data/vendor/libgit2/src/{describe.c → libgit2/describe.c} +1 -1
  61. data/vendor/libgit2/src/{diff_xdiff.c → libgit2/diff_xdiff.c} +1 -0
  62. data/vendor/libgit2/src/{errors.h → libgit2/errors.h} +1 -2
  63. data/vendor/libgit2/src/{filter.c → libgit2/filter.c} +31 -1
  64. data/vendor/libgit2/src/{index.c → libgit2/index.c} +6 -6
  65. data/vendor/libgit2/src/{indexer.c → libgit2/indexer.c} +2 -2
  66. data/vendor/libgit2/src/{iterator.c → libgit2/iterator.c} +3 -3
  67. data/vendor/libgit2/src/{libgit2.c → libgit2/libgit2.c} +5 -0
  68. data/vendor/libgit2/src/{midx.c → libgit2/midx.c} +20 -23
  69. data/vendor/libgit2/src/{midx.h → libgit2/midx.h} +2 -1
  70. data/vendor/libgit2/src/{mwindow.c → libgit2/mwindow.c} +9 -9
  71. data/vendor/libgit2/src/{mwindow.h → libgit2/mwindow.h} +1 -1
  72. data/vendor/libgit2/src/{netops.c → libgit2/netops.c} +0 -1
  73. data/vendor/libgit2/src/{object.c → libgit2/object.c} +1 -0
  74. data/vendor/libgit2/src/{odb.c → libgit2/odb.c} +2 -2
  75. data/vendor/libgit2/src/{oid.c → libgit2/oid.c} +2 -21
  76. data/vendor/libgit2/src/{oid.h → libgit2/oid.h} +35 -2
  77. data/vendor/libgit2/src/{oidmap.c → libgit2/oidmap.c} +1 -1
  78. data/vendor/libgit2/src/{pack.c → libgit2/pack.c} +24 -18
  79. data/vendor/libgit2/src/{pack.h → libgit2/pack.h} +3 -2
  80. data/vendor/libgit2/src/{path.c → libgit2/path.c} +1 -0
  81. data/vendor/libgit2/src/{rebase.c → libgit2/rebase.c} +11 -1
  82. data/vendor/libgit2/src/{refdb_fs.c → libgit2/refdb_fs.c} +6 -2
  83. data/vendor/libgit2/src/{remote.c → libgit2/remote.c} +1 -1
  84. data/vendor/libgit2/src/{remote.h → libgit2/remote.h} +1 -1
  85. data/vendor/libgit2/src/{repository.c → libgit2/repository.c} +1 -0
  86. data/vendor/libgit2/src/{tag.c → libgit2/tag.c} +15 -5
  87. data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.c +1 -1
  88. data/vendor/libgit2/src/{transports → libgit2/transports}/smart.c +12 -0
  89. data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.c +91 -326
  90. data/vendor/libgit2/src/{tree-cache.c → libgit2/tree-cache.c} +1 -1
  91. data/vendor/libgit2/src/{tree.c → libgit2/tree.c} +16 -23
  92. data/vendor/libgit2/src/{tree.h → libgit2/tree.h} +1 -1
  93. data/vendor/libgit2/src/util/CMakeLists.txt +74 -0
  94. data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.h +1 -1
  95. data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.h +1 -1
  96. data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.h +1 -1
  97. data/vendor/libgit2/src/{array.h → util/array.h} +1 -1
  98. data/vendor/libgit2/src/{assert_safe.h → util/assert_safe.h} +16 -0
  99. data/vendor/libgit2/src/{date.c → util/date.c} +4 -3
  100. data/vendor/libgit2/src/{filebuf.c → util/filebuf.c} +1 -1
  101. data/vendor/libgit2/src/{filebuf.h → util/filebuf.h} +1 -1
  102. data/vendor/libgit2/src/{fs_path.c → util/fs_path.c} +17 -11
  103. data/vendor/libgit2/src/{fs_path.h → util/fs_path.h} +1 -1
  104. data/vendor/libgit2/src/{futils.c → util/futils.c} +44 -2
  105. data/vendor/libgit2/src/{futils.h → util/futils.h} +2 -1
  106. data/vendor/libgit2/src/{common.h → util/git2_util.h} +13 -59
  107. data/vendor/libgit2/src/util/hash/builtin.c +53 -0
  108. data/vendor/libgit2/src/{hash/sha1/openssl.h → util/hash/builtin.h} +6 -6
  109. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.c +1 -1
  110. data/vendor/libgit2/src/{hash/sha1 → util/hash}/collisiondetect.h +3 -3
  111. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.c +55 -0
  112. data/vendor/libgit2/src/{hash/sha1 → util/hash}/common_crypto.h +11 -3
  113. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.c +46 -0
  114. data/vendor/libgit2/src/{hash/sha1 → util/hash}/mbedtls.h +14 -4
  115. data/vendor/libgit2/src/util/hash/openssl.c +194 -0
  116. data/vendor/libgit2/src/util/hash/openssl.h +45 -0
  117. data/vendor/libgit2/src/util/hash/rfc6234/sha.h +355 -0
  118. data/vendor/libgit2/src/util/hash/rfc6234/sha224-256.c +601 -0
  119. data/vendor/libgit2/src/util/hash/sha.h +70 -0
  120. data/vendor/libgit2/src/util/hash/win32.c +549 -0
  121. data/vendor/libgit2/src/util/hash/win32.h +60 -0
  122. data/vendor/libgit2/src/{hash.c → util/hash.c} +17 -1
  123. data/vendor/libgit2/src/{hash.h → util/hash.h} +5 -3
  124. data/vendor/libgit2/src/{map.h → util/map.h} +1 -1
  125. data/vendor/libgit2/src/{net.c → util/net.c} +0 -1
  126. data/vendor/libgit2/src/{net.h → util/net.h} +1 -1
  127. data/vendor/libgit2/src/{pool.h → util/pool.h} +1 -1
  128. data/vendor/libgit2/src/{posix.h → util/posix.h} +1 -1
  129. data/vendor/libgit2/src/{pqueue.h → util/pqueue.h} +1 -1
  130. data/vendor/libgit2/src/{rand.c → util/rand.c} +7 -3
  131. data/vendor/libgit2/src/{rand.h → util/rand.h} +1 -1
  132. data/vendor/libgit2/src/{regexp.h → util/regexp.h} +1 -1
  133. data/vendor/libgit2/src/{runtime.c → util/runtime.c} +1 -1
  134. data/vendor/libgit2/src/{runtime.h → util/runtime.h} +1 -1
  135. data/vendor/libgit2/src/{sortedcache.h → util/sortedcache.h} +1 -1
  136. data/vendor/libgit2/src/{str.h → util/str.h} +1 -1
  137. data/vendor/libgit2/src/{strmap.h → util/strmap.h} +1 -1
  138. data/vendor/libgit2/src/{thread.c → util/thread.c} +1 -1
  139. data/vendor/libgit2/src/{tsort.c → util/tsort.c} +1 -1
  140. data/vendor/libgit2/src/{unix → util/unix}/map.c +1 -1
  141. data/vendor/libgit2/src/{unix → util/unix}/posix.h +1 -1
  142. data/vendor/libgit2/src/{unix → util/unix}/realpath.c +1 -1
  143. data/vendor/libgit2/src/{utf8.c → util/utf8.c} +1 -1
  144. data/vendor/libgit2/src/{utf8.h → util/utf8.h} +1 -1
  145. data/vendor/libgit2/src/{util.c → util/util.c} +1 -1
  146. data/vendor/libgit2/src/{util.h → util/util.h} +1 -1
  147. data/vendor/libgit2/src/{varint.h → util/varint.h} +1 -1
  148. data/vendor/libgit2/src/{vector.h → util/vector.h} +1 -1
  149. data/vendor/libgit2/src/{wildmatch.h → util/wildmatch.h} +1 -1
  150. data/vendor/libgit2/src/{win32 → util/win32}/dir.h +1 -1
  151. data/vendor/libgit2/src/{win32 → util/win32}/error.h +1 -1
  152. data/vendor/libgit2/src/{win32 → util/win32}/findfile.h +1 -1
  153. data/vendor/libgit2/src/{win32 → util/win32}/map.c +1 -1
  154. data/vendor/libgit2/src/{win32 → util/win32}/path_w32.h +1 -1
  155. data/vendor/libgit2/src/{win32 → util/win32}/posix.h +1 -1
  156. data/vendor/libgit2/src/{win32 → util/win32}/posix_w32.c +1 -1
  157. data/vendor/libgit2/src/util/win32/precompiled.c +1 -0
  158. data/vendor/libgit2/src/{win32 → util/win32}/precompiled.h +1 -1
  159. data/vendor/libgit2/src/{win32 → util/win32}/thread.h +1 -1
  160. data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.h +1 -1
  161. data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.h +1 -1
  162. data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.h +1 -1
  163. data/vendor/libgit2/src/{win32 → util/win32}/w32_util.h +1 -1
  164. data/vendor/libgit2/src/{zstream.h → util/zstream.h} +1 -1
  165. metadata +390 -361
  166. data/vendor/libgit2/src/hash/sha1/generic.c +0 -300
  167. data/vendor/libgit2/src/hash/sha1/generic.h +0 -19
  168. data/vendor/libgit2/src/hash/sha1/openssl.c +0 -59
  169. data/vendor/libgit2/src/hash/sha1/win32.c +0 -333
  170. data/vendor/libgit2/src/hash/sha1/win32.h +0 -128
  171. data/vendor/libgit2/src/hash/sha1.h +0 -40
  172. /data/vendor/libgit2/src/{win32 → cli/win32}/precompiled.c +0 -0
  173. /data/vendor/libgit2/src/{annotated_commit.c → libgit2/annotated_commit.c} +0 -0
  174. /data/vendor/libgit2/src/{annotated_commit.h → libgit2/annotated_commit.h} +0 -0
  175. /data/vendor/libgit2/src/{apply.c → libgit2/apply.c} +0 -0
  176. /data/vendor/libgit2/src/{apply.h → libgit2/apply.h} +0 -0
  177. /data/vendor/libgit2/src/{attr.c → libgit2/attr.c} +0 -0
  178. /data/vendor/libgit2/src/{attr.h → libgit2/attr.h} +0 -0
  179. /data/vendor/libgit2/src/{attr_file.c → libgit2/attr_file.c} +0 -0
  180. /data/vendor/libgit2/src/{attr_file.h → libgit2/attr_file.h} +0 -0
  181. /data/vendor/libgit2/src/{attrcache.c → libgit2/attrcache.c} +0 -0
  182. /data/vendor/libgit2/src/{attrcache.h → libgit2/attrcache.h} +0 -0
  183. /data/vendor/libgit2/src/{blame.c → libgit2/blame.c} +0 -0
  184. /data/vendor/libgit2/src/{blame.h → libgit2/blame.h} +0 -0
  185. /data/vendor/libgit2/src/{blame_git.c → libgit2/blame_git.c} +0 -0
  186. /data/vendor/libgit2/src/{blame_git.h → libgit2/blame_git.h} +0 -0
  187. /data/vendor/libgit2/src/{blob.h → libgit2/blob.h} +0 -0
  188. /data/vendor/libgit2/src/{branch.h → libgit2/branch.h} +0 -0
  189. /data/vendor/libgit2/src/{buf.c → libgit2/buf.c} +0 -0
  190. /data/vendor/libgit2/src/{buf.h → libgit2/buf.h} +0 -0
  191. /data/vendor/libgit2/src/{cache.c → libgit2/cache.c} +0 -0
  192. /data/vendor/libgit2/src/{cache.h → libgit2/cache.h} +0 -0
  193. /data/vendor/libgit2/src/{checkout.c → libgit2/checkout.c} +0 -0
  194. /data/vendor/libgit2/src/{checkout.h → libgit2/checkout.h} +0 -0
  195. /data/vendor/libgit2/src/{cherrypick.c → libgit2/cherrypick.c} +0 -0
  196. /data/vendor/libgit2/src/{clone.c → libgit2/clone.c} +0 -0
  197. /data/vendor/libgit2/src/{clone.h → libgit2/clone.h} +0 -0
  198. /data/vendor/libgit2/src/{commit.c → libgit2/commit.c} +0 -0
  199. /data/vendor/libgit2/src/{commit.h → libgit2/commit.h} +0 -0
  200. /data/vendor/libgit2/src/{commit_list.c → libgit2/commit_list.c} +0 -0
  201. /data/vendor/libgit2/src/{commit_list.h → libgit2/commit_list.h} +0 -0
  202. /data/vendor/libgit2/src/{config.h → libgit2/config.h} +0 -0
  203. /data/vendor/libgit2/src/{config_backend.h → libgit2/config_backend.h} +0 -0
  204. /data/vendor/libgit2/src/{config_cache.c → libgit2/config_cache.c} +0 -0
  205. /data/vendor/libgit2/src/{config_entries.c → libgit2/config_entries.c} +0 -0
  206. /data/vendor/libgit2/src/{config_entries.h → libgit2/config_entries.h} +0 -0
  207. /data/vendor/libgit2/src/{config_file.c → libgit2/config_file.c} +0 -0
  208. /data/vendor/libgit2/src/{config_mem.c → libgit2/config_mem.c} +0 -0
  209. /data/vendor/libgit2/src/{config_parse.c → libgit2/config_parse.c} +0 -0
  210. /data/vendor/libgit2/src/{config_parse.h → libgit2/config_parse.h} +0 -0
  211. /data/vendor/libgit2/src/{config_snapshot.c → libgit2/config_snapshot.c} +0 -0
  212. /data/vendor/libgit2/src/{crlf.c → libgit2/crlf.c} +0 -0
  213. /data/vendor/libgit2/src/{delta.c → libgit2/delta.c} +0 -0
  214. /data/vendor/libgit2/src/{delta.h → libgit2/delta.h} +0 -0
  215. /data/vendor/libgit2/src/{diff.c → libgit2/diff.c} +0 -0
  216. /data/vendor/libgit2/src/{diff.h → libgit2/diff.h} +0 -0
  217. /data/vendor/libgit2/src/{diff_driver.c → libgit2/diff_driver.c} +0 -0
  218. /data/vendor/libgit2/src/{diff_driver.h → libgit2/diff_driver.h} +0 -0
  219. /data/vendor/libgit2/src/{diff_file.c → libgit2/diff_file.c} +0 -0
  220. /data/vendor/libgit2/src/{diff_file.h → libgit2/diff_file.h} +0 -0
  221. /data/vendor/libgit2/src/{diff_generate.c → libgit2/diff_generate.c} +0 -0
  222. /data/vendor/libgit2/src/{diff_generate.h → libgit2/diff_generate.h} +0 -0
  223. /data/vendor/libgit2/src/{diff_parse.c → libgit2/diff_parse.c} +0 -0
  224. /data/vendor/libgit2/src/{diff_parse.h → libgit2/diff_parse.h} +0 -0
  225. /data/vendor/libgit2/src/{diff_print.c → libgit2/diff_print.c} +0 -0
  226. /data/vendor/libgit2/src/{diff_stats.c → libgit2/diff_stats.c} +0 -0
  227. /data/vendor/libgit2/src/{diff_stats.h → libgit2/diff_stats.h} +0 -0
  228. /data/vendor/libgit2/src/{diff_tform.c → libgit2/diff_tform.c} +0 -0
  229. /data/vendor/libgit2/src/{diff_tform.h → libgit2/diff_tform.h} +0 -0
  230. /data/vendor/libgit2/src/{diff_xdiff.h → libgit2/diff_xdiff.h} +0 -0
  231. /data/vendor/libgit2/src/{email.c → libgit2/email.c} +0 -0
  232. /data/vendor/libgit2/src/{email.h → libgit2/email.h} +0 -0
  233. /data/vendor/libgit2/src/{errors.c → libgit2/errors.c} +0 -0
  234. /data/vendor/libgit2/src/{fetch.c → libgit2/fetch.c} +0 -0
  235. /data/vendor/libgit2/src/{fetch.h → libgit2/fetch.h} +0 -0
  236. /data/vendor/libgit2/src/{fetchhead.c → libgit2/fetchhead.c} +0 -0
  237. /data/vendor/libgit2/src/{fetchhead.h → libgit2/fetchhead.h} +0 -0
  238. /data/vendor/libgit2/src/{filter.h → libgit2/filter.h} +0 -0
  239. /data/vendor/libgit2/src/{win32 → libgit2}/git2.rc +0 -0
  240. /data/vendor/libgit2/src/{graph.c → libgit2/graph.c} +0 -0
  241. /data/vendor/libgit2/src/{hashsig.c → libgit2/hashsig.c} +0 -0
  242. /data/vendor/libgit2/src/{ident.c → libgit2/ident.c} +0 -0
  243. /data/vendor/libgit2/src/{idxmap.c → libgit2/idxmap.c} +0 -0
  244. /data/vendor/libgit2/src/{idxmap.h → libgit2/idxmap.h} +0 -0
  245. /data/vendor/libgit2/src/{ignore.c → libgit2/ignore.c} +0 -0
  246. /data/vendor/libgit2/src/{ignore.h → libgit2/ignore.h} +0 -0
  247. /data/vendor/libgit2/src/{index.h → libgit2/index.h} +0 -0
  248. /data/vendor/libgit2/src/{indexer.h → libgit2/indexer.h} +0 -0
  249. /data/vendor/libgit2/src/{iterator.h → libgit2/iterator.h} +0 -0
  250. /data/vendor/libgit2/src/{libgit2.h → libgit2/libgit2.h} +0 -0
  251. /data/vendor/libgit2/src/{mailmap.c → libgit2/mailmap.c} +0 -0
  252. /data/vendor/libgit2/src/{mailmap.h → libgit2/mailmap.h} +0 -0
  253. /data/vendor/libgit2/src/{merge.c → libgit2/merge.c} +0 -0
  254. /data/vendor/libgit2/src/{merge.h → libgit2/merge.h} +0 -0
  255. /data/vendor/libgit2/src/{merge_driver.c → libgit2/merge_driver.c} +0 -0
  256. /data/vendor/libgit2/src/{merge_driver.h → libgit2/merge_driver.h} +0 -0
  257. /data/vendor/libgit2/src/{merge_file.c → libgit2/merge_file.c} +0 -0
  258. /data/vendor/libgit2/src/{message.c → libgit2/message.c} +0 -0
  259. /data/vendor/libgit2/src/{netops.h → libgit2/netops.h} +0 -0
  260. /data/vendor/libgit2/src/{notes.c → libgit2/notes.c} +0 -0
  261. /data/vendor/libgit2/src/{notes.h → libgit2/notes.h} +0 -0
  262. /data/vendor/libgit2/src/{object.h → libgit2/object.h} +0 -0
  263. /data/vendor/libgit2/src/{object_api.c → libgit2/object_api.c} +0 -0
  264. /data/vendor/libgit2/src/{odb.h → libgit2/odb.h} +0 -0
  265. /data/vendor/libgit2/src/{odb_loose.c → libgit2/odb_loose.c} +0 -0
  266. /data/vendor/libgit2/src/{odb_mempack.c → libgit2/odb_mempack.c} +0 -0
  267. /data/vendor/libgit2/src/{odb_pack.c → libgit2/odb_pack.c} +0 -0
  268. /data/vendor/libgit2/src/{offmap.c → libgit2/offmap.c} +0 -0
  269. /data/vendor/libgit2/src/{offmap.h → libgit2/offmap.h} +0 -0
  270. /data/vendor/libgit2/src/{oidarray.c → libgit2/oidarray.c} +0 -0
  271. /data/vendor/libgit2/src/{oidarray.h → libgit2/oidarray.h} +0 -0
  272. /data/vendor/libgit2/src/{oidmap.h → libgit2/oidmap.h} +0 -0
  273. /data/vendor/libgit2/src/{pack-objects.c → libgit2/pack-objects.c} +0 -0
  274. /data/vendor/libgit2/src/{pack-objects.h → libgit2/pack-objects.h} +0 -0
  275. /data/vendor/libgit2/src/{parse.c → libgit2/parse.c} +0 -0
  276. /data/vendor/libgit2/src/{parse.h → libgit2/parse.h} +0 -0
  277. /data/vendor/libgit2/src/{patch.c → libgit2/patch.c} +0 -0
  278. /data/vendor/libgit2/src/{patch.h → libgit2/patch.h} +0 -0
  279. /data/vendor/libgit2/src/{patch_generate.c → libgit2/patch_generate.c} +0 -0
  280. /data/vendor/libgit2/src/{patch_generate.h → libgit2/patch_generate.h} +0 -0
  281. /data/vendor/libgit2/src/{patch_parse.c → libgit2/patch_parse.c} +0 -0
  282. /data/vendor/libgit2/src/{patch_parse.h → libgit2/patch_parse.h} +0 -0
  283. /data/vendor/libgit2/src/{path.h → libgit2/path.h} +0 -0
  284. /data/vendor/libgit2/src/{pathspec.c → libgit2/pathspec.c} +0 -0
  285. /data/vendor/libgit2/src/{pathspec.h → libgit2/pathspec.h} +0 -0
  286. /data/vendor/libgit2/src/{proxy.c → libgit2/proxy.c} +0 -0
  287. /data/vendor/libgit2/src/{proxy.h → libgit2/proxy.h} +0 -0
  288. /data/vendor/libgit2/src/{push.c → libgit2/push.c} +0 -0
  289. /data/vendor/libgit2/src/{push.h → libgit2/push.h} +0 -0
  290. /data/vendor/libgit2/src/{reader.c → libgit2/reader.c} +0 -0
  291. /data/vendor/libgit2/src/{reader.h → libgit2/reader.h} +0 -0
  292. /data/vendor/libgit2/src/{refdb.c → libgit2/refdb.c} +0 -0
  293. /data/vendor/libgit2/src/{refdb.h → libgit2/refdb.h} +0 -0
  294. /data/vendor/libgit2/src/{reflog.c → libgit2/reflog.c} +0 -0
  295. /data/vendor/libgit2/src/{reflog.h → libgit2/reflog.h} +0 -0
  296. /data/vendor/libgit2/src/{refs.c → libgit2/refs.c} +0 -0
  297. /data/vendor/libgit2/src/{refs.h → libgit2/refs.h} +0 -0
  298. /data/vendor/libgit2/src/{refspec.c → libgit2/refspec.c} +0 -0
  299. /data/vendor/libgit2/src/{refspec.h → libgit2/refspec.h} +0 -0
  300. /data/vendor/libgit2/src/{repo_template.h → libgit2/repo_template.h} +0 -0
  301. /data/vendor/libgit2/src/{repository.h → libgit2/repository.h} +0 -0
  302. /data/vendor/libgit2/src/{reset.c → libgit2/reset.c} +0 -0
  303. /data/vendor/libgit2/src/{revert.c → libgit2/revert.c} +0 -0
  304. /data/vendor/libgit2/src/{revparse.c → libgit2/revparse.c} +0 -0
  305. /data/vendor/libgit2/src/{revwalk.c → libgit2/revwalk.c} +0 -0
  306. /data/vendor/libgit2/src/{revwalk.h → libgit2/revwalk.h} +0 -0
  307. /data/vendor/libgit2/src/{settings.h → libgit2/settings.h} +0 -0
  308. /data/vendor/libgit2/src/{signature.c → libgit2/signature.c} +0 -0
  309. /data/vendor/libgit2/src/{signature.h → libgit2/signature.h} +0 -0
  310. /data/vendor/libgit2/src/{stash.c → libgit2/stash.c} +0 -0
  311. /data/vendor/libgit2/src/{status.c → libgit2/status.c} +0 -0
  312. /data/vendor/libgit2/src/{status.h → libgit2/status.h} +0 -0
  313. /data/vendor/libgit2/src/{strarray.c → libgit2/strarray.c} +0 -0
  314. /data/vendor/libgit2/src/{stream.h → libgit2/stream.h} +0 -0
  315. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.c +0 -0
  316. /data/vendor/libgit2/src/{streams → libgit2/streams}/mbedtls.h +0 -0
  317. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.c +0 -0
  318. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl.h +0 -0
  319. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.c +0 -0
  320. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_dynamic.h +0 -0
  321. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.c +0 -0
  322. /data/vendor/libgit2/src/{streams → libgit2/streams}/openssl_legacy.h +0 -0
  323. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.c +0 -0
  324. /data/vendor/libgit2/src/{streams → libgit2/streams}/registry.h +0 -0
  325. /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.c +0 -0
  326. /data/vendor/libgit2/src/{streams → libgit2/streams}/socket.h +0 -0
  327. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.c +0 -0
  328. /data/vendor/libgit2/src/{streams → libgit2/streams}/stransport.h +0 -0
  329. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.c +0 -0
  330. /data/vendor/libgit2/src/{streams → libgit2/streams}/tls.h +0 -0
  331. /data/vendor/libgit2/src/{submodule.c → libgit2/submodule.c} +0 -0
  332. /data/vendor/libgit2/src/{submodule.h → libgit2/submodule.h} +0 -0
  333. /data/vendor/libgit2/src/{sysdir.c → libgit2/sysdir.c} +0 -0
  334. /data/vendor/libgit2/src/{sysdir.h → libgit2/sysdir.h} +0 -0
  335. /data/vendor/libgit2/src/{tag.h → libgit2/tag.h} +0 -0
  336. /data/vendor/libgit2/src/{threadstate.c → libgit2/threadstate.c} +0 -0
  337. /data/vendor/libgit2/src/{threadstate.h → libgit2/threadstate.h} +0 -0
  338. /data/vendor/libgit2/src/{trace.c → libgit2/trace.c} +0 -0
  339. /data/vendor/libgit2/src/{trace.h → libgit2/trace.h} +0 -0
  340. /data/vendor/libgit2/src/{trailer.c → libgit2/trailer.c} +0 -0
  341. /data/vendor/libgit2/src/{transaction.c → libgit2/transaction.c} +0 -0
  342. /data/vendor/libgit2/src/{transaction.h → libgit2/transaction.h} +0 -0
  343. /data/vendor/libgit2/src/{transport.c → libgit2/transport.c} +0 -0
  344. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth.c +0 -0
  345. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth.h +0 -0
  346. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.c +0 -0
  347. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_negotiate.h +0 -0
  348. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.c +0 -0
  349. /data/vendor/libgit2/src/{transports → libgit2/transports}/auth_ntlm.h +0 -0
  350. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential.c +0 -0
  351. /data/vendor/libgit2/src/{transports → libgit2/transports}/credential_helpers.c +0 -0
  352. /data/vendor/libgit2/src/{transports → libgit2/transports}/git.c +0 -0
  353. /data/vendor/libgit2/src/{transports → libgit2/transports}/http.c +0 -0
  354. /data/vendor/libgit2/src/{transports → libgit2/transports}/http.h +0 -0
  355. /data/vendor/libgit2/src/{transports → libgit2/transports}/httpclient.h +0 -0
  356. /data/vendor/libgit2/src/{transports → libgit2/transports}/local.c +0 -0
  357. /data/vendor/libgit2/src/{transports → libgit2/transports}/smart.h +0 -0
  358. /data/vendor/libgit2/src/{transports → libgit2/transports}/smart_pkt.c +0 -0
  359. /data/vendor/libgit2/src/{transports → libgit2/transports}/smart_protocol.c +0 -0
  360. /data/vendor/libgit2/src/{transports → libgit2/transports}/ssh.h +0 -0
  361. /data/vendor/libgit2/src/{transports → libgit2/transports}/winhttp.c +0 -0
  362. /data/vendor/libgit2/src/{tree-cache.h → libgit2/tree-cache.h} +0 -0
  363. /data/vendor/libgit2/src/{userdiff.h → libgit2/userdiff.h} +0 -0
  364. /data/vendor/libgit2/src/{worktree.c → libgit2/worktree.c} +0 -0
  365. /data/vendor/libgit2/src/{worktree.h → libgit2/worktree.h} +0 -0
  366. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/git-xdiff.h +0 -0
  367. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiff.h +0 -0
  368. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.c +0 -0
  369. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xdiffi.h +0 -0
  370. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.c +0 -0
  371. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xemit.h +0 -0
  372. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xhistogram.c +0 -0
  373. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xinclude.h +0 -0
  374. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmacros.h +0 -0
  375. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xmerge.c +0 -0
  376. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xpatience.c +0 -0
  377. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.c +0 -0
  378. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xprepare.h +0 -0
  379. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xtypes.h +0 -0
  380. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.c +0 -0
  381. /data/vendor/libgit2/src/{xdiff → libgit2/xdiff}/xutils.h +0 -0
  382. /data/vendor/libgit2/src/{alloc.c → util/alloc.c} +0 -0
  383. /data/vendor/libgit2/src/{alloc.h → util/alloc.h} +0 -0
  384. /data/vendor/libgit2/src/{allocators → util/allocators}/failalloc.c +0 -0
  385. /data/vendor/libgit2/src/{allocators → util/allocators}/stdalloc.c +0 -0
  386. /data/vendor/libgit2/src/{allocators → util/allocators}/win32_leakcheck.c +0 -0
  387. /data/vendor/libgit2/src/{bitvec.h → util/bitvec.h} +0 -0
  388. /data/vendor/libgit2/src/{cc-compat.h → util/cc-compat.h} +0 -0
  389. /data/vendor/libgit2/src/{date.h → util/date.h} +0 -0
  390. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.c +0 -0
  391. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/sha1.h +0 -0
  392. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.c +0 -0
  393. /data/vendor/libgit2/src/{hash/sha1 → util/hash}/sha1dc/ubc_check.h +0 -0
  394. /data/vendor/libgit2/src/{integer.h → util/integer.h} +0 -0
  395. /data/vendor/libgit2/src/{khash.h → util/khash.h} +0 -0
  396. /data/vendor/libgit2/src/{pool.c → util/pool.c} +0 -0
  397. /data/vendor/libgit2/src/{posix.c → util/posix.c} +0 -0
  398. /data/vendor/libgit2/src/{pqueue.c → util/pqueue.c} +0 -0
  399. /data/vendor/libgit2/src/{regexp.c → util/regexp.c} +0 -0
  400. /data/vendor/libgit2/src/{sortedcache.c → util/sortedcache.c} +0 -0
  401. /data/vendor/libgit2/src/{str.c → util/str.c} +0 -0
  402. /data/vendor/libgit2/src/{strmap.c → util/strmap.c} +0 -0
  403. /data/vendor/libgit2/src/{strnlen.h → util/strnlen.h} +0 -0
  404. /data/vendor/libgit2/src/{thread.h → util/thread.h} +0 -0
  405. /data/vendor/libgit2/src/{unix → util/unix}/pthread.h +0 -0
  406. /data/vendor/libgit2/src/{varint.c → util/varint.c} +0 -0
  407. /data/vendor/libgit2/src/{vector.c → util/vector.c} +0 -0
  408. /data/vendor/libgit2/src/{wildmatch.c → util/wildmatch.c} +0 -0
  409. /data/vendor/libgit2/src/{win32 → util/win32}/dir.c +0 -0
  410. /data/vendor/libgit2/src/{win32 → util/win32}/error.c +0 -0
  411. /data/vendor/libgit2/src/{win32 → util/win32}/findfile.c +0 -0
  412. /data/vendor/libgit2/src/{win32 → util/win32}/mingw-compat.h +0 -0
  413. /data/vendor/libgit2/src/{win32 → util/win32}/msvc-compat.h +0 -0
  414. /data/vendor/libgit2/src/{win32 → util/win32}/path_w32.c +0 -0
  415. /data/vendor/libgit2/src/{win32 → util/win32}/reparse.h +0 -0
  416. /data/vendor/libgit2/src/{win32 → util/win32}/thread.c +0 -0
  417. /data/vendor/libgit2/src/{win32 → util/win32}/utf-conv.c +0 -0
  418. /data/vendor/libgit2/src/{win32 → util/win32}/version.h +0 -0
  419. /data/vendor/libgit2/src/{win32 → util/win32}/w32_buffer.c +0 -0
  420. /data/vendor/libgit2/src/{win32 → util/win32}/w32_common.h +0 -0
  421. /data/vendor/libgit2/src/{win32 → util/win32}/w32_leakcheck.c +0 -0
  422. /data/vendor/libgit2/src/{win32 → util/win32}/w32_util.c +0 -0
  423. /data/vendor/libgit2/src/{win32 → util/win32}/win32-compat.h +0 -0
  424. /data/vendor/libgit2/src/{zstream.c → util/zstream.c} +0 -0
@@ -1,300 +0,0 @@
1
- /*
2
- * Copyright (C) the libgit2 contributors. All rights reserved.
3
- *
4
- * This file is part of libgit2, distributed under the GNU GPL v2 with
5
- * a Linking Exception. For full terms see the included COPYING file.
6
- */
7
-
8
- #include "generic.h"
9
-
10
- #if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
11
-
12
- /*
13
- * Force usage of rol or ror by selecting the one with the smaller constant.
14
- * It _can_ generate slightly smaller code (a constant of 1 is special), but
15
- * perhaps more importantly it's possibly faster on any uarch that does a
16
- * rotate with a loop.
17
- */
18
-
19
- #define SHA_ASM(op, x, n) (__extension__ ({ unsigned int __res; __asm__(op " %1,%0":"=r" (__res):"i" (n), "0" (x)); __res; }))
20
- #define SHA_ROL(x,n) SHA_ASM("rol", x, n)
21
- #define SHA_ROR(x,n) SHA_ASM("ror", x, n)
22
-
23
- #else
24
-
25
- #define SHA_ROT(X,l,r) (((X) << (l)) | ((X) >> (r)))
26
- #define SHA_ROL(X,n) SHA_ROT(X,n,32-(n))
27
- #define SHA_ROR(X,n) SHA_ROT(X,32-(n),n)
28
-
29
- #endif
30
-
31
- /*
32
- * If you have 32 registers or more, the compiler can (and should)
33
- * try to change the array[] accesses into registers. However, on
34
- * machines with less than ~25 registers, that won't really work,
35
- * and at least gcc will make an unholy mess of it.
36
- *
37
- * So to avoid that mess which just slows things down, we force
38
- * the stores to memory to actually happen (we might be better off
39
- * with a 'W(t)=(val);asm("":"+m" (W(t))' there instead, as
40
- * suggested by Artur Skawina - that will also make gcc unable to
41
- * try to do the silly "optimize away loads" part because it won't
42
- * see what the value will be).
43
- *
44
- * Ben Herrenschmidt reports that on PPC, the C version comes close
45
- * to the optimized asm with this (ie on PPC you don't want that
46
- * 'volatile', since there are lots of registers).
47
- *
48
- * On ARM we get the best code generation by forcing a full memory barrier
49
- * between each SHA_ROUND, otherwise gcc happily get wild with spilling and
50
- * the stack frame size simply explode and performance goes down the drain.
51
- */
52
-
53
- #if defined(__i386__) || defined(__x86_64__)
54
- #define setW(x, val) (*(volatile unsigned int *)&W(x) = (val))
55
- #elif defined(__GNUC__) && defined(__arm__)
56
- #define setW(x, val) do { W(x) = (val); __asm__("":::"memory"); } while (0)
57
- #else
58
- #define setW(x, val) (W(x) = (val))
59
- #endif
60
-
61
- /*
62
- * Performance might be improved if the CPU architecture is OK with
63
- * unaligned 32-bit loads and a fast ntohl() is available.
64
- * Otherwise fall back to byte loads and shifts which is portable,
65
- * and is faster on architectures with memory alignment issues.
66
- */
67
-
68
- #if defined(__i386__) || defined(__x86_64__) || \
69
- defined(_M_IX86) || defined(_M_X64) || \
70
- defined(__ppc__) || defined(__ppc64__) || \
71
- defined(__powerpc__) || defined(__powerpc64__) || \
72
- defined(__s390__) || defined(__s390x__)
73
-
74
- #define get_be32(p) ntohl(*(const unsigned int *)(p))
75
- #define put_be32(p, v) do { *(unsigned int *)(p) = htonl(v); } while (0)
76
-
77
- #else
78
-
79
- #define get_be32(p) ( \
80
- (*((const unsigned char *)(p) + 0) << 24) | \
81
- (*((const unsigned char *)(p) + 1) << 16) | \
82
- (*((const unsigned char *)(p) + 2) << 8) | \
83
- (*((const unsigned char *)(p) + 3) << 0) )
84
- #define put_be32(p, v) do { \
85
- unsigned int __v = (v); \
86
- *((unsigned char *)(p) + 0) = __v >> 24; \
87
- *((unsigned char *)(p) + 1) = __v >> 16; \
88
- *((unsigned char *)(p) + 2) = __v >> 8; \
89
- *((unsigned char *)(p) + 3) = __v >> 0; } while (0)
90
-
91
- #endif
92
-
93
- /* This "rolls" over the 512-bit array */
94
- #define W(x) (array[(x)&15])
95
-
96
- /*
97
- * Where do we get the source from? The first 16 iterations get it from
98
- * the input data, the next mix it from the 512-bit array.
99
- */
100
- #define SHA_SRC(t) get_be32(data + t)
101
- #define SHA_MIX(t) SHA_ROL(W(t+13) ^ W(t+8) ^ W(t+2) ^ W(t), 1)
102
-
103
- #define SHA_ROUND(t, input, fn, constant, A, B, C, D, E) do { \
104
- unsigned int TEMP = input(t); setW(t, TEMP); \
105
- E += TEMP + SHA_ROL(A,5) + (fn) + (constant); \
106
- B = SHA_ROR(B, 2); } while (0)
107
-
108
- #define T_0_15(t, A, B, C, D, E) SHA_ROUND(t, SHA_SRC, (((C^D)&B)^D) , 0x5a827999, A, B, C, D, E )
109
- #define T_16_19(t, A, B, C, D, E) SHA_ROUND(t, SHA_MIX, (((C^D)&B)^D) , 0x5a827999, A, B, C, D, E )
110
- #define T_20_39(t, A, B, C, D, E) SHA_ROUND(t, SHA_MIX, (B^C^D) , 0x6ed9eba1, A, B, C, D, E )
111
- #define T_40_59(t, A, B, C, D, E) SHA_ROUND(t, SHA_MIX, ((B&C)+(D&(B^C))) , 0x8f1bbcdc, A, B, C, D, E )
112
- #define T_60_79(t, A, B, C, D, E) SHA_ROUND(t, SHA_MIX, (B^C^D) , 0xca62c1d6, A, B, C, D, E )
113
-
114
- static void hash__block(git_hash_sha1_ctx *ctx, const unsigned int *data)
115
- {
116
- unsigned int A,B,C,D,E;
117
- unsigned int array[16];
118
-
119
- A = ctx->H[0];
120
- B = ctx->H[1];
121
- C = ctx->H[2];
122
- D = ctx->H[3];
123
- E = ctx->H[4];
124
-
125
- /* Round 1 - iterations 0-16 take their input from 'data' */
126
- T_0_15( 0, A, B, C, D, E);
127
- T_0_15( 1, E, A, B, C, D);
128
- T_0_15( 2, D, E, A, B, C);
129
- T_0_15( 3, C, D, E, A, B);
130
- T_0_15( 4, B, C, D, E, A);
131
- T_0_15( 5, A, B, C, D, E);
132
- T_0_15( 6, E, A, B, C, D);
133
- T_0_15( 7, D, E, A, B, C);
134
- T_0_15( 8, C, D, E, A, B);
135
- T_0_15( 9, B, C, D, E, A);
136
- T_0_15(10, A, B, C, D, E);
137
- T_0_15(11, E, A, B, C, D);
138
- T_0_15(12, D, E, A, B, C);
139
- T_0_15(13, C, D, E, A, B);
140
- T_0_15(14, B, C, D, E, A);
141
- T_0_15(15, A, B, C, D, E);
142
-
143
- /* Round 1 - tail. Input from 512-bit mixing array */
144
- T_16_19(16, E, A, B, C, D);
145
- T_16_19(17, D, E, A, B, C);
146
- T_16_19(18, C, D, E, A, B);
147
- T_16_19(19, B, C, D, E, A);
148
-
149
- /* Round 2 */
150
- T_20_39(20, A, B, C, D, E);
151
- T_20_39(21, E, A, B, C, D);
152
- T_20_39(22, D, E, A, B, C);
153
- T_20_39(23, C, D, E, A, B);
154
- T_20_39(24, B, C, D, E, A);
155
- T_20_39(25, A, B, C, D, E);
156
- T_20_39(26, E, A, B, C, D);
157
- T_20_39(27, D, E, A, B, C);
158
- T_20_39(28, C, D, E, A, B);
159
- T_20_39(29, B, C, D, E, A);
160
- T_20_39(30, A, B, C, D, E);
161
- T_20_39(31, E, A, B, C, D);
162
- T_20_39(32, D, E, A, B, C);
163
- T_20_39(33, C, D, E, A, B);
164
- T_20_39(34, B, C, D, E, A);
165
- T_20_39(35, A, B, C, D, E);
166
- T_20_39(36, E, A, B, C, D);
167
- T_20_39(37, D, E, A, B, C);
168
- T_20_39(38, C, D, E, A, B);
169
- T_20_39(39, B, C, D, E, A);
170
-
171
- /* Round 3 */
172
- T_40_59(40, A, B, C, D, E);
173
- T_40_59(41, E, A, B, C, D);
174
- T_40_59(42, D, E, A, B, C);
175
- T_40_59(43, C, D, E, A, B);
176
- T_40_59(44, B, C, D, E, A);
177
- T_40_59(45, A, B, C, D, E);
178
- T_40_59(46, E, A, B, C, D);
179
- T_40_59(47, D, E, A, B, C);
180
- T_40_59(48, C, D, E, A, B);
181
- T_40_59(49, B, C, D, E, A);
182
- T_40_59(50, A, B, C, D, E);
183
- T_40_59(51, E, A, B, C, D);
184
- T_40_59(52, D, E, A, B, C);
185
- T_40_59(53, C, D, E, A, B);
186
- T_40_59(54, B, C, D, E, A);
187
- T_40_59(55, A, B, C, D, E);
188
- T_40_59(56, E, A, B, C, D);
189
- T_40_59(57, D, E, A, B, C);
190
- T_40_59(58, C, D, E, A, B);
191
- T_40_59(59, B, C, D, E, A);
192
-
193
- /* Round 4 */
194
- T_60_79(60, A, B, C, D, E);
195
- T_60_79(61, E, A, B, C, D);
196
- T_60_79(62, D, E, A, B, C);
197
- T_60_79(63, C, D, E, A, B);
198
- T_60_79(64, B, C, D, E, A);
199
- T_60_79(65, A, B, C, D, E);
200
- T_60_79(66, E, A, B, C, D);
201
- T_60_79(67, D, E, A, B, C);
202
- T_60_79(68, C, D, E, A, B);
203
- T_60_79(69, B, C, D, E, A);
204
- T_60_79(70, A, B, C, D, E);
205
- T_60_79(71, E, A, B, C, D);
206
- T_60_79(72, D, E, A, B, C);
207
- T_60_79(73, C, D, E, A, B);
208
- T_60_79(74, B, C, D, E, A);
209
- T_60_79(75, A, B, C, D, E);
210
- T_60_79(76, E, A, B, C, D);
211
- T_60_79(77, D, E, A, B, C);
212
- T_60_79(78, C, D, E, A, B);
213
- T_60_79(79, B, C, D, E, A);
214
-
215
- ctx->H[0] += A;
216
- ctx->H[1] += B;
217
- ctx->H[2] += C;
218
- ctx->H[3] += D;
219
- ctx->H[4] += E;
220
- }
221
-
222
- int git_hash_sha1_global_init(void)
223
- {
224
- return 0;
225
- }
226
-
227
- int git_hash_sha1_ctx_init(git_hash_sha1_ctx *ctx)
228
- {
229
- return git_hash_sha1_init(ctx);
230
- }
231
-
232
- void git_hash_sha1_ctx_cleanup(git_hash_sha1_ctx *ctx)
233
- {
234
- GIT_UNUSED(ctx);
235
- }
236
-
237
- int git_hash_sha1_init(git_hash_sha1_ctx *ctx)
238
- {
239
- ctx->size = 0;
240
-
241
- /* Initialize H with the magic constants (see FIPS180 for constants) */
242
- ctx->H[0] = 0x67452301;
243
- ctx->H[1] = 0xefcdab89;
244
- ctx->H[2] = 0x98badcfe;
245
- ctx->H[3] = 0x10325476;
246
- ctx->H[4] = 0xc3d2e1f0;
247
-
248
- return 0;
249
- }
250
-
251
- int git_hash_sha1_update(git_hash_sha1_ctx *ctx, const void *data, size_t len)
252
- {
253
- unsigned int lenW = ctx->size & 63;
254
-
255
- ctx->size += len;
256
-
257
- /* Read the data into W and process blocks as they get full */
258
- if (lenW) {
259
- unsigned int left = 64 - lenW;
260
- if (len < left)
261
- left = (unsigned int)len;
262
- memcpy(lenW + (char *)ctx->W, data, left);
263
- lenW = (lenW + left) & 63;
264
- len -= left;
265
- data = ((const char *)data + left);
266
- if (lenW)
267
- return 0;
268
- hash__block(ctx, ctx->W);
269
- }
270
- while (len >= 64) {
271
- hash__block(ctx, data);
272
- data = ((const char *)data + 64);
273
- len -= 64;
274
- }
275
- if (len)
276
- memcpy(ctx->W, data, len);
277
-
278
- return 0;
279
- }
280
-
281
- int git_hash_sha1_final(unsigned char *out, git_hash_sha1_ctx *ctx)
282
- {
283
- static const unsigned char pad[64] = { 0x80 };
284
- unsigned int padlen[2];
285
- int i;
286
-
287
- /* Pad with a binary 1 (ie 0x80), then zeroes, then length */
288
- padlen[0] = htonl((uint32_t)(ctx->size >> 29));
289
- padlen[1] = htonl((uint32_t)(ctx->size << 3));
290
-
291
- i = ctx->size & 63;
292
- git_hash_sha1_update(ctx, pad, 1+ (63 & (55 - i)));
293
- git_hash_sha1_update(ctx, padlen, 8);
294
-
295
- /* Output hash */
296
- for (i = 0; i < 5; i++)
297
- put_be32(out + i*4, ctx->H[i]);
298
-
299
- return 0;
300
- }
@@ -1,19 +0,0 @@
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_generic_h__
9
- #define INCLUDE_hash_sha1_generic_h__
10
-
11
- #include "hash/sha1.h"
12
-
13
- struct git_hash_sha1_ctx {
14
- uint64_t size;
15
- unsigned int H[5];
16
- unsigned int W[16];
17
- };
18
-
19
- #endif
@@ -1,59 +0,0 @@
1
- /*
2
- * Copyright (C) the libgit2 contributors. All rights reserved.
3
- *
4
- * This file is part of libgit2, distributed under the GNU GPL v2 with
5
- * a Linking Exception. For full terms see the included COPYING file.
6
- */
7
-
8
- #include "openssl.h"
9
-
10
- int git_hash_sha1_global_init(void)
11
- {
12
- return 0;
13
- }
14
-
15
- int git_hash_sha1_ctx_init(git_hash_sha1_ctx *ctx)
16
- {
17
- return git_hash_sha1_init(ctx);
18
- }
19
-
20
- void git_hash_sha1_ctx_cleanup(git_hash_sha1_ctx *ctx)
21
- {
22
- GIT_UNUSED(ctx);
23
- }
24
-
25
- int git_hash_sha1_init(git_hash_sha1_ctx *ctx)
26
- {
27
- GIT_ASSERT_ARG(ctx);
28
-
29
- if (SHA1_Init(&ctx->c) != 1) {
30
- git_error_set(GIT_ERROR_SHA1, "hash_openssl: failed to initialize hash context");
31
- return -1;
32
- }
33
-
34
- return 0;
35
- }
36
-
37
- int git_hash_sha1_update(git_hash_sha1_ctx *ctx, const void *data, size_t len)
38
- {
39
- GIT_ASSERT_ARG(ctx);
40
-
41
- if (SHA1_Update(&ctx->c, data, len) != 1) {
42
- git_error_set(GIT_ERROR_SHA1, "hash_openssl: failed to update hash");
43
- return -1;
44
- }
45
-
46
- return 0;
47
- }
48
-
49
- int git_hash_sha1_final(unsigned char *out, git_hash_sha1_ctx *ctx)
50
- {
51
- GIT_ASSERT_ARG(ctx);
52
-
53
- if (SHA1_Final(out, &ctx->c) != 1) {
54
- git_error_set(GIT_ERROR_SHA1, "hash_openssl: failed to finalize hash");
55
- return -1;
56
- }
57
-
58
- return 0;
59
- }
@@ -1,333 +0,0 @@
1
- /*
2
- * Copyright (C) the libgit2 contributors. All rights reserved.
3
- *
4
- * This file is part of libgit2, distributed under the GNU GPL v2 with
5
- * a Linking Exception. For full terms see the included COPYING file.
6
- */
7
-
8
- #include "win32.h"
9
-
10
- #include "runtime.h"
11
-
12
- #include <wincrypt.h>
13
- #include <strsafe.h>
14
-
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};
27
-
28
- /* Hash initialization */
29
-
30
- /* Initialize CNG, if available */
31
- GIT_INLINE(int) hash_cng_prov_init(void)
32
- {
33
- char dll_path[MAX_PATH];
34
- DWORD dll_path_len, size_len;
35
-
36
- /* Only use CNG on Windows 2008 / Vista SP1 or better (Windows 6.0 SP1) */
37
- if (!git_has_win32_version(6, 0, 1)) {
38
- git_error_set(GIT_ERROR_SHA1, "CryptoNG is not supported on this platform");
39
- return -1;
40
- }
41
-
42
- /* Load bcrypt.dll explicitly from the system directory */
43
- if ((dll_path_len = GetSystemDirectory(dll_path, MAX_PATH)) == 0 ||
44
- dll_path_len > MAX_PATH ||
45
- StringCchCat(dll_path, MAX_PATH, "\\") < 0 ||
46
- StringCchCat(dll_path, MAX_PATH, GIT_HASH_CNG_DLL_NAME) < 0 ||
47
- (hash_prov.prov.cng.dll = LoadLibrary(dll_path)) == NULL) {
48
- git_error_set(GIT_ERROR_SHA1, "CryptoNG library could not be loaded");
49
- return -1;
50
- }
51
-
52
- /* Load the function addresses */
53
- if ((hash_prov.prov.cng.open_algorithm_provider = (hash_win32_cng_open_algorithm_provider_fn)GetProcAddress(hash_prov.prov.cng.dll, "BCryptOpenAlgorithmProvider")) == NULL ||
54
- (hash_prov.prov.cng.get_property = (hash_win32_cng_get_property_fn)GetProcAddress(hash_prov.prov.cng.dll, "BCryptGetProperty")) == NULL ||
55
- (hash_prov.prov.cng.create_hash = (hash_win32_cng_create_hash_fn)GetProcAddress(hash_prov.prov.cng.dll, "BCryptCreateHash")) == NULL ||
56
- (hash_prov.prov.cng.finish_hash = (hash_win32_cng_finish_hash_fn)GetProcAddress(hash_prov.prov.cng.dll, "BCryptFinishHash")) == NULL ||
57
- (hash_prov.prov.cng.hash_data = (hash_win32_cng_hash_data_fn)GetProcAddress(hash_prov.prov.cng.dll, "BCryptHashData")) == NULL ||
58
- (hash_prov.prov.cng.destroy_hash = (hash_win32_cng_destroy_hash_fn)GetProcAddress(hash_prov.prov.cng.dll, "BCryptDestroyHash")) == NULL ||
59
- (hash_prov.prov.cng.close_algorithm_provider = (hash_win32_cng_close_algorithm_provider_fn)GetProcAddress(hash_prov.prov.cng.dll, "BCryptCloseAlgorithmProvider")) == NULL) {
60
- FreeLibrary(hash_prov.prov.cng.dll);
61
-
62
- git_error_set(GIT_ERROR_OS, "CryptoNG functions could not be loaded");
63
- return -1;
64
- }
65
-
66
- /* Load the SHA1 algorithm */
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) {
68
- FreeLibrary(hash_prov.prov.cng.dll);
69
-
70
- git_error_set(GIT_ERROR_OS, "algorithm provider could not be initialized");
71
- return -1;
72
- }
73
-
74
- /* Get storage space for the hash object */
75
- if (hash_prov.prov.cng.get_property(hash_prov.prov.cng.handle, GIT_HASH_CNG_HASH_OBJECT_LEN, (PBYTE)&hash_prov.prov.cng.hash_object_size, sizeof(DWORD), &size_len, 0) < 0) {
76
- hash_prov.prov.cng.close_algorithm_provider(hash_prov.prov.cng.handle, 0);
77
- FreeLibrary(hash_prov.prov.cng.dll);
78
-
79
- git_error_set(GIT_ERROR_OS, "algorithm handle could not be found");
80
- return -1;
81
- }
82
-
83
- hash_prov.type = CNG;
84
- return 0;
85
- }
86
-
87
- GIT_INLINE(void) hash_cng_prov_shutdown(void)
88
- {
89
- hash_prov.prov.cng.close_algorithm_provider(hash_prov.prov.cng.handle, 0);
90
- FreeLibrary(hash_prov.prov.cng.dll);
91
-
92
- hash_prov.type = INVALID;
93
- }
94
-
95
- /* Initialize CryptoAPI */
96
- GIT_INLINE(int) hash_cryptoapi_prov_init()
97
- {
98
- if (!CryptAcquireContext(&hash_prov.prov.cryptoapi.handle, NULL, 0, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)) {
99
- git_error_set(GIT_ERROR_OS, "legacy hash context could not be started");
100
- return -1;
101
- }
102
-
103
- hash_prov.type = CRYPTOAPI;
104
- return 0;
105
- }
106
-
107
- GIT_INLINE(void) hash_cryptoapi_prov_shutdown(void)
108
- {
109
- CryptReleaseContext(hash_prov.prov.cryptoapi.handle, 0);
110
-
111
- hash_prov.type = INVALID;
112
- }
113
-
114
- static void sha1_shutdown(void)
115
- {
116
- if (hash_prov.type == CNG)
117
- hash_cng_prov_shutdown();
118
- else if(hash_prov.type == CRYPTOAPI)
119
- hash_cryptoapi_prov_shutdown();
120
- }
121
-
122
- int git_hash_sha1_global_init(void)
123
- {
124
- int error = 0;
125
-
126
- if (hash_prov.type != INVALID)
127
- return 0;
128
-
129
- if ((error = hash_cng_prov_init()) < 0)
130
- error = hash_cryptoapi_prov_init();
131
-
132
- if (!error)
133
- error = git_runtime_shutdown_register(sha1_shutdown);
134
-
135
- return error;
136
- }
137
-
138
- /* CryptoAPI: available in Windows XP and newer */
139
-
140
- GIT_INLINE(int) hash_ctx_cryptoapi_init(git_hash_sha1_ctx *ctx)
141
- {
142
- ctx->type = CRYPTOAPI;
143
- ctx->prov = &hash_prov;
144
-
145
- return git_hash_sha1_init(ctx);
146
- }
147
-
148
- GIT_INLINE(int) hash_cryptoapi_init(git_hash_sha1_ctx *ctx)
149
- {
150
- if (ctx->ctx.cryptoapi.valid)
151
- CryptDestroyHash(ctx->ctx.cryptoapi.hash_handle);
152
-
153
- if (!CryptCreateHash(ctx->prov->prov.cryptoapi.handle, CALG_SHA1, 0, 0, &ctx->ctx.cryptoapi.hash_handle)) {
154
- ctx->ctx.cryptoapi.valid = 0;
155
- git_error_set(GIT_ERROR_OS, "legacy hash implementation could not be created");
156
- return -1;
157
- }
158
-
159
- ctx->ctx.cryptoapi.valid = 1;
160
- return 0;
161
- }
162
-
163
- GIT_INLINE(int) hash_cryptoapi_update(git_hash_sha1_ctx *ctx, const void *_data, size_t len)
164
- {
165
- const BYTE *data = (BYTE *)_data;
166
-
167
- GIT_ASSERT(ctx->ctx.cryptoapi.valid);
168
-
169
- while (len > 0) {
170
- DWORD chunk = (len > MAXDWORD) ? MAXDWORD : (DWORD)len;
171
-
172
- if (!CryptHashData(ctx->ctx.cryptoapi.hash_handle, data, chunk, 0)) {
173
- git_error_set(GIT_ERROR_OS, "legacy hash data could not be updated");
174
- return -1;
175
- }
176
-
177
- data += chunk;
178
- len -= chunk;
179
- }
180
-
181
- return 0;
182
- }
183
-
184
- GIT_INLINE(int) hash_cryptoapi_final(unsigned char *out, git_hash_sha1_ctx *ctx)
185
- {
186
- DWORD len = GIT_HASH_SHA1_SIZE;
187
- int error = 0;
188
-
189
- GIT_ASSERT(ctx->ctx.cryptoapi.valid);
190
-
191
- if (!CryptGetHashParam(ctx->ctx.cryptoapi.hash_handle, HP_HASHVAL, out, &len, 0)) {
192
- git_error_set(GIT_ERROR_OS, "legacy hash data could not be finished");
193
- error = -1;
194
- }
195
-
196
- CryptDestroyHash(ctx->ctx.cryptoapi.hash_handle);
197
- ctx->ctx.cryptoapi.valid = 0;
198
-
199
- return error;
200
- }
201
-
202
- GIT_INLINE(void) hash_ctx_cryptoapi_cleanup(git_hash_sha1_ctx *ctx)
203
- {
204
- if (ctx->ctx.cryptoapi.valid)
205
- CryptDestroyHash(ctx->ctx.cryptoapi.hash_handle);
206
- }
207
-
208
- /* CNG: Available in Windows Server 2008 and newer */
209
-
210
- GIT_INLINE(int) hash_ctx_cng_init(git_hash_sha1_ctx *ctx)
211
- {
212
- if ((ctx->ctx.cng.hash_object = git__malloc(hash_prov.prov.cng.hash_object_size)) == NULL)
213
- return -1;
214
-
215
- 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) {
216
- git__free(ctx->ctx.cng.hash_object);
217
-
218
- git_error_set(GIT_ERROR_OS, "hash implementation could not be created");
219
- return -1;
220
- }
221
-
222
- ctx->type = CNG;
223
- ctx->prov = &hash_prov;
224
-
225
- return 0;
226
- }
227
-
228
- GIT_INLINE(int) hash_cng_init(git_hash_sha1_ctx *ctx)
229
- {
230
- BYTE hash[GIT_OID_RAWSZ];
231
-
232
- if (!ctx->ctx.cng.updated)
233
- return 0;
234
-
235
- /* CNG needs to be finished to restart */
236
- if (ctx->prov->prov.cng.finish_hash(ctx->ctx.cng.hash_handle, hash, GIT_OID_RAWSZ, 0) < 0) {
237
- git_error_set(GIT_ERROR_OS, "hash implementation could not be finished");
238
- return -1;
239
- }
240
-
241
- ctx->ctx.cng.updated = 0;
242
-
243
- return 0;
244
- }
245
-
246
- GIT_INLINE(int) hash_cng_update(git_hash_sha1_ctx *ctx, const void *_data, size_t len)
247
- {
248
- PBYTE data = (PBYTE)_data;
249
-
250
- while (len > 0) {
251
- ULONG chunk = (len > ULONG_MAX) ? ULONG_MAX : (ULONG)len;
252
-
253
- if (ctx->prov->prov.cng.hash_data(ctx->ctx.cng.hash_handle, data, chunk, 0) < 0) {
254
- git_error_set(GIT_ERROR_OS, "hash could not be updated");
255
- return -1;
256
- }
257
-
258
- data += chunk;
259
- len -= chunk;
260
- }
261
-
262
- return 0;
263
- }
264
-
265
- GIT_INLINE(int) hash_cng_final(unsigned char *out, git_hash_sha1_ctx *ctx)
266
- {
267
- if (ctx->prov->prov.cng.finish_hash(ctx->ctx.cng.hash_handle, out, GIT_HASH_SHA1_SIZE, 0) < 0) {
268
- git_error_set(GIT_ERROR_OS, "hash could not be finished");
269
- return -1;
270
- }
271
-
272
- ctx->ctx.cng.updated = 0;
273
-
274
- return 0;
275
- }
276
-
277
- GIT_INLINE(void) hash_ctx_cng_cleanup(git_hash_sha1_ctx *ctx)
278
- {
279
- ctx->prov->prov.cng.destroy_hash(ctx->ctx.cng.hash_handle);
280
- git__free(ctx->ctx.cng.hash_object);
281
- }
282
-
283
- /* Indirection between CryptoAPI and CNG */
284
-
285
- int git_hash_sha1_ctx_init(git_hash_sha1_ctx *ctx)
286
- {
287
- int error = 0;
288
-
289
- GIT_ASSERT_ARG(ctx);
290
-
291
- /*
292
- * When compiled with GIT_THREADS, the global hash_prov data is
293
- * initialized with git_libgit2_init. Otherwise, it must be initialized
294
- * at first use.
295
- */
296
- if (hash_prov.type == INVALID && (error = git_hash_sha1_global_init()) < 0)
297
- return error;
298
-
299
- memset(ctx, 0x0, sizeof(git_hash_sha1_ctx));
300
-
301
- return (hash_prov.type == CNG) ? hash_ctx_cng_init(ctx) : hash_ctx_cryptoapi_init(ctx);
302
- }
303
-
304
- int git_hash_sha1_init(git_hash_sha1_ctx *ctx)
305
- {
306
- GIT_ASSERT_ARG(ctx);
307
- GIT_ASSERT_ARG(ctx->type);
308
- return (ctx->type == CNG) ? hash_cng_init(ctx) : hash_cryptoapi_init(ctx);
309
- }
310
-
311
- int git_hash_sha1_update(git_hash_sha1_ctx *ctx, const void *data, size_t len)
312
- {
313
- GIT_ASSERT_ARG(ctx);
314
- GIT_ASSERT_ARG(ctx->type);
315
- return (ctx->type == CNG) ? hash_cng_update(ctx, data, len) : hash_cryptoapi_update(ctx, data, len);
316
- }
317
-
318
- int git_hash_sha1_final(unsigned char *out, git_hash_sha1_ctx *ctx)
319
- {
320
- GIT_ASSERT_ARG(ctx);
321
- GIT_ASSERT_ARG(ctx->type);
322
- return (ctx->type == CNG) ? hash_cng_final(out, ctx) : hash_cryptoapi_final(out, ctx);
323
- }
324
-
325
- void git_hash_sha1_ctx_cleanup(git_hash_sha1_ctx *ctx)
326
- {
327
- if (!ctx)
328
- return;
329
- else if (ctx->type == CNG)
330
- hash_ctx_cng_cleanup(ctx);
331
- else if(ctx->type == CRYPTOAPI)
332
- hash_ctx_cryptoapi_cleanup(ctx);
333
- }