@zerodensity/smb-cpp 0.0.0-bootstrap.0 → 0.1.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 (640) hide show
  1. package/README.md +54 -3
  2. package/darwin_arm64/libsmb2.1.dylib +0 -0
  3. package/darwin_arm64/libsmb2.6.1.0.dylib +0 -0
  4. package/darwin_arm64/libsmb2.dylib +0 -0
  5. package/darwin_arm64/smb_server_cpp_darwin_arm64 +0 -0
  6. package/darwin_arm64/third-party/libsmb2/COPYING +24 -0
  7. package/darwin_arm64/third-party/libsmb2/LICENCE-LGPL-2.1.txt +502 -0
  8. package/darwin_arm64/third-party/libsmb2/NOTICE.txt +13 -0
  9. package/darwin_arm64/third-party/libsmb2/README +413 -0
  10. package/darwin_arm64/third-party/libsmb2/source/CMakeLists.txt +205 -0
  11. package/darwin_arm64/third-party/libsmb2/source/COPYING +24 -0
  12. package/darwin_arm64/third-party/libsmb2/source/LICENCE-LGPL-2.1.txt +502 -0
  13. package/darwin_arm64/third-party/libsmb2/source/Makefile.am +15 -0
  14. package/darwin_arm64/third-party/libsmb2/source/Makefile.platform +112 -0
  15. package/darwin_arm64/third-party/libsmb2/source/README +413 -0
  16. package/darwin_arm64/third-party/libsmb2/source/Xbox/libsmb2.sln +25 -0
  17. package/darwin_arm64/third-party/libsmb2/source/Xbox/libsmb2.vcxproj +248 -0
  18. package/darwin_arm64/third-party/libsmb2/source/Xbox/libsmb2.vcxproj.filters +304 -0
  19. package/darwin_arm64/third-party/libsmb2/source/Xbox 360/libsmb2.sln +32 -0
  20. package/darwin_arm64/third-party/libsmb2/source/Xbox 360/libsmb2.vcxproj +327 -0
  21. package/darwin_arm64/third-party/libsmb2/source/Xbox 360/libsmb2.vcxproj.filters +268 -0
  22. package/darwin_arm64/third-party/libsmb2/source/bootstrap +2 -0
  23. package/darwin_arm64/third-party/libsmb2/source/cmake/ConfigureChecks.cmake +63 -0
  24. package/darwin_arm64/third-party/libsmb2/source/cmake/FindSMB2.cmake +37 -0
  25. package/darwin_arm64/third-party/libsmb2/source/cmake/Modules/FindGSSAPI.cmake +30 -0
  26. package/darwin_arm64/third-party/libsmb2/source/cmake/Modules/FindLibKrb5.cmake +44 -0
  27. package/darwin_arm64/third-party/libsmb2/source/cmake/config.h.cmake +126 -0
  28. package/darwin_arm64/third-party/libsmb2/source/cmake/libsmb2.pc.cmake +14 -0
  29. package/darwin_arm64/third-party/libsmb2/source/component.mk +5 -0
  30. package/darwin_arm64/third-party/libsmb2/source/configure.ac +184 -0
  31. package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareAdd.yaml +9 -0
  32. package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareCheck.yaml +4 -0
  33. package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareDel.yaml +5 -0
  34. package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareDelSticky.yaml +5 -0
  35. package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareEnum.yaml +7 -0
  36. package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareGetInfo.yaml +6 -0
  37. package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareSetInfo.yaml +11 -0
  38. package/darwin_arm64/third-party/libsmb2/source/examples/CMakeLists.txt +28 -0
  39. package/darwin_arm64/third-party/libsmb2/source/examples/Makefile.am +54 -0
  40. package/darwin_arm64/third-party/libsmb2/source/examples/dcerpc.c +254 -0
  41. package/darwin_arm64/third-party/libsmb2/source/examples/picow/CMakeLists.txt +72 -0
  42. package/darwin_arm64/third-party/libsmb2/source/examples/picow/README.md +2 -0
  43. package/darwin_arm64/third-party/libsmb2/source/examples/picow/main.cpp +119 -0
  44. package/darwin_arm64/third-party/libsmb2/source/examples/picow/smb-ls-sync.c +0 -0
  45. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-CMD-FIND.c +335 -0
  46. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-cat-async.c +183 -0
  47. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-cat-sync.c +105 -0
  48. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-ftruncate-sync.c +87 -0
  49. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-ls-async.c +185 -0
  50. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-ls-epoll.c +234 -0
  51. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-lsa-lookupsids.c +292 -0
  52. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-lseek-sync.c +101 -0
  53. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-notify.c +183 -0
  54. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-put-async.c +175 -0
  55. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-put-sync.c +100 -0
  56. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-raw-fsstat-async.c +353 -0
  57. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-raw-getsd-async.c +401 -0
  58. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-raw-stat-async.c +448 -0
  59. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-readlink.c +80 -0
  60. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-rename-sync.c +80 -0
  61. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-server-sync.c +497 -0
  62. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-share-enum-sync.c +146 -0
  63. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-share-enum.c +208 -0
  64. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-share-info.c +255 -0
  65. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-stat-sync.c +103 -0
  66. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-statvfs-sync.c +85 -0
  67. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-truncate-sync.c +78 -0
  68. package/darwin_arm64/third-party/libsmb2/source/idf_component.yml +5 -0
  69. package/darwin_arm64/third-party/libsmb2/source/include/Makefile.am +15 -0
  70. package/darwin_arm64/third-party/libsmb2/source/include/amiga_os/config.h +139 -0
  71. package/darwin_arm64/third-party/libsmb2/source/include/apple/config.h +139 -0
  72. package/darwin_arm64/third-party/libsmb2/source/include/asprintf.h +65 -0
  73. package/darwin_arm64/third-party/libsmb2/source/include/esp/config.h +139 -0
  74. package/darwin_arm64/third-party/libsmb2/source/include/libsmb2-private.h +670 -0
  75. package/darwin_arm64/third-party/libsmb2/source/include/module.modulemap +21 -0
  76. package/darwin_arm64/third-party/libsmb2/source/include/picow/FreeRTOSConfig.h +143 -0
  77. package/darwin_arm64/third-party/libsmb2/source/include/picow/README.md +2 -0
  78. package/darwin_arm64/third-party/libsmb2/source/include/picow/config.h +139 -0
  79. package/darwin_arm64/third-party/libsmb2/source/include/picow/lwipopts.h +27 -0
  80. package/darwin_arm64/third-party/libsmb2/source/include/picow/lwipopts_examples_common.h +90 -0
  81. package/darwin_arm64/third-party/libsmb2/source/include/portable-endian.h +377 -0
  82. package/darwin_arm64/third-party/libsmb2/source/include/ps3/config.h +139 -0
  83. package/darwin_arm64/third-party/libsmb2/source/include/slist.h +63 -0
  84. package/darwin_arm64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc-lsa.h +172 -0
  85. package/darwin_arm64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc-srvsvc.h +276 -0
  86. package/darwin_arm64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc.h +203 -0
  87. package/darwin_arm64/third-party/libsmb2/source/include/smb2/libsmb2-raw.h +497 -0
  88. package/darwin_arm64/third-party/libsmb2/source/include/smb2/libsmb2.h +1409 -0
  89. package/darwin_arm64/third-party/libsmb2/source/include/smb2/smb2-errors.h +549 -0
  90. package/darwin_arm64/third-party/libsmb2/source/include/smb2/smb2-ioctl.h +83 -0
  91. package/darwin_arm64/third-party/libsmb2/source/include/smb2/smb2.h +1251 -0
  92. package/darwin_arm64/third-party/libsmb2/source/include/xbox/config.h +139 -0
  93. package/darwin_arm64/third-party/libsmb2/source/include/xbox 360/config.h +139 -0
  94. package/darwin_arm64/third-party/libsmb2/source/lib/CMakeLists.txt +260 -0
  95. package/darwin_arm64/third-party/libsmb2/source/lib/Makefile.AMIGA +46 -0
  96. package/darwin_arm64/third-party/libsmb2/source/lib/Makefile.AMIGA_AROS +59 -0
  97. package/darwin_arm64/third-party/libsmb2/source/lib/Makefile.AMIGA_OS3 +59 -0
  98. package/darwin_arm64/third-party/libsmb2/source/lib/Makefile.PS3_PPU +100 -0
  99. package/darwin_arm64/third-party/libsmb2/source/lib/Makefile.am +85 -0
  100. package/darwin_arm64/third-party/libsmb2/source/lib/aes.c +33 -0
  101. package/darwin_arm64/third-party/libsmb2/source/lib/aes.h +29 -0
  102. package/darwin_arm64/third-party/libsmb2/source/lib/aes128ccm.c +185 -0
  103. package/darwin_arm64/third-party/libsmb2/source/lib/aes128ccm.h +28 -0
  104. package/darwin_arm64/third-party/libsmb2/source/lib/aes_apple.c +70 -0
  105. package/darwin_arm64/third-party/libsmb2/source/lib/aes_apple.h +34 -0
  106. package/darwin_arm64/third-party/libsmb2/source/lib/aes_reference.c +560 -0
  107. package/darwin_arm64/third-party/libsmb2/source/lib/aes_reference.h +49 -0
  108. package/darwin_arm64/third-party/libsmb2/source/lib/alloc.c +154 -0
  109. package/darwin_arm64/third-party/libsmb2/source/lib/asn1-ber.c +1078 -0
  110. package/darwin_arm64/third-party/libsmb2/source/lib/asn1-ber.h +161 -0
  111. package/darwin_arm64/third-party/libsmb2/source/lib/compat.c +599 -0
  112. package/darwin_arm64/third-party/libsmb2/source/lib/compat.h +829 -0
  113. package/darwin_arm64/third-party/libsmb2/source/lib/dcerpc-lsa.c +641 -0
  114. package/darwin_arm64/third-party/libsmb2/source/lib/dcerpc-srvsvc.c +885 -0
  115. package/darwin_arm64/third-party/libsmb2/source/lib/dcerpc.c +2513 -0
  116. package/darwin_arm64/third-party/libsmb2/source/lib/dreamcast/vfs.c +328 -0
  117. package/darwin_arm64/third-party/libsmb2/source/lib/dreamcast/vfs.h +15 -0
  118. package/darwin_arm64/third-party/libsmb2/source/lib/errors.c +1192 -0
  119. package/darwin_arm64/third-party/libsmb2/source/lib/hmac-md5.c +84 -0
  120. package/darwin_arm64/third-party/libsmb2/source/lib/hmac-md5.h +42 -0
  121. package/darwin_arm64/third-party/libsmb2/source/lib/hmac.c +245 -0
  122. package/darwin_arm64/third-party/libsmb2/source/lib/init.c +778 -0
  123. package/darwin_arm64/third-party/libsmb2/source/lib/krb5-wrapper.c +1072 -0
  124. package/darwin_arm64/third-party/libsmb2/source/lib/krb5-wrapper.h +134 -0
  125. package/darwin_arm64/third-party/libsmb2/source/lib/libsmb2.c +4292 -0
  126. package/darwin_arm64/third-party/libsmb2/source/lib/libsmb2.syms +168 -0
  127. package/darwin_arm64/third-party/libsmb2/source/lib/md4.h +43 -0
  128. package/darwin_arm64/third-party/libsmb2/source/lib/md4c.c +289 -0
  129. package/darwin_arm64/third-party/libsmb2/source/lib/md5.c +249 -0
  130. package/darwin_arm64/third-party/libsmb2/source/lib/md5.h +76 -0
  131. package/darwin_arm64/third-party/libsmb2/source/lib/ntlmssp.c +1380 -0
  132. package/darwin_arm64/third-party/libsmb2/source/lib/ntlmssp.h +84 -0
  133. package/darwin_arm64/third-party/libsmb2/source/lib/pdu.c +1159 -0
  134. package/darwin_arm64/third-party/libsmb2/source/lib/ps2/TODO +6 -0
  135. package/darwin_arm64/third-party/libsmb2/source/lib/ps2/imports.lst +84 -0
  136. package/darwin_arm64/third-party/libsmb2/source/lib/ps2/irx_imports.h +28 -0
  137. package/darwin_arm64/third-party/libsmb2/source/lib/ps2/ps2smb2.h +35 -0
  138. package/darwin_arm64/third-party/libsmb2/source/lib/ps2/smb2_fio.c +816 -0
  139. package/darwin_arm64/third-party/libsmb2/source/lib/ps2/smb2_fio.h +15 -0
  140. package/darwin_arm64/third-party/libsmb2/source/lib/ps2/smb2man.c +69 -0
  141. package/darwin_arm64/third-party/libsmb2/source/lib/sha-private.h +28 -0
  142. package/darwin_arm64/third-party/libsmb2/source/lib/sha.h +334 -0
  143. package/darwin_arm64/third-party/libsmb2/source/lib/sha1.c +450 -0
  144. package/darwin_arm64/third-party/libsmb2/source/lib/sha224-256.c +611 -0
  145. package/darwin_arm64/third-party/libsmb2/source/lib/sha384-512.c +1059 -0
  146. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-close.c +240 -0
  147. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-create.c +508 -0
  148. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-echo.c +202 -0
  149. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-error.c +157 -0
  150. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-flush.c +207 -0
  151. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-ioctl.c +445 -0
  152. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-lock.c +312 -0
  153. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-logoff.c +190 -0
  154. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-negotiate.c +646 -0
  155. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-notify-change.c +278 -0
  156. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-oplock-break.c +543 -0
  157. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-query-directory.c +580 -0
  158. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-query-info.c +753 -0
  159. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-read.c +391 -0
  160. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-session-setup.c +331 -0
  161. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-set-info.c +361 -0
  162. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-tree-connect.c +278 -0
  163. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-tree-disconnect.c +171 -0
  164. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-write.c +319 -0
  165. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-data-file-info.c +537 -0
  166. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-data-filesystem-info.c +384 -0
  167. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-data-reparse-point.c +117 -0
  168. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-data-security-descriptor.c +361 -0
  169. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-share-enum.c +181 -0
  170. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-signing.c +279 -0
  171. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-signing.h +51 -0
  172. package/darwin_arm64/third-party/libsmb2/source/lib/smb3-seal.c +165 -0
  173. package/darwin_arm64/third-party/libsmb2/source/lib/smb3-seal.h +43 -0
  174. package/darwin_arm64/third-party/libsmb2/source/lib/socket.c +1502 -0
  175. package/darwin_arm64/third-party/libsmb2/source/lib/spnego-wrapper.c +634 -0
  176. package/darwin_arm64/third-party/libsmb2/source/lib/spnego-wrapper.h +74 -0
  177. package/darwin_arm64/third-party/libsmb2/source/lib/sync.c +988 -0
  178. package/darwin_arm64/third-party/libsmb2/source/lib/timestamps.c +70 -0
  179. package/darwin_arm64/third-party/libsmb2/source/lib/unicode.c +307 -0
  180. package/darwin_arm64/third-party/libsmb2/source/lib/usha.c +345 -0
  181. package/darwin_arm64/third-party/libsmb2/source/libsmb2.pc.in +14 -0
  182. package/darwin_arm64/third-party/libsmb2/source/packaging/RPM/libsmb2.spec.in +135 -0
  183. package/darwin_arm64/third-party/libsmb2/source/packaging/RPM/makerpms.sh +114 -0
  184. package/darwin_arm64/third-party/libsmb2/source/tests/Makefile.am +34 -0
  185. package/darwin_arm64/third-party/libsmb2/source/tests/README +28 -0
  186. package/darwin_arm64/third-party/libsmb2/source/tests/aes128ccm-test.c +119 -0
  187. package/darwin_arm64/third-party/libsmb2/source/tests/functions.sh +11 -0
  188. package/darwin_arm64/third-party/libsmb2/source/tests/ld_sockerr.c +58 -0
  189. package/darwin_arm64/third-party/libsmb2/source/tests/metastat-0202-censored.c +136 -0
  190. package/darwin_arm64/third-party/libsmb2/source/tests/ntlmssp_generate_blob.c +123 -0
  191. package/darwin_arm64/third-party/libsmb2/source/tests/prog_cat.c +188 -0
  192. package/darwin_arm64/third-party/libsmb2/source/tests/prog_cat_cancel.c +203 -0
  193. package/darwin_arm64/third-party/libsmb2/source/tests/prog_ls.c +189 -0
  194. package/darwin_arm64/third-party/libsmb2/source/tests/prog_mkdir.c +85 -0
  195. package/darwin_arm64/third-party/libsmb2/source/tests/prog_rmdir.c +84 -0
  196. package/darwin_arm64/third-party/libsmb2/source/tests/smb2-dcerpc-coder-test.c +635 -0
  197. package/darwin_arm64/third-party/libsmb2/source/tests/test_0100_ls_basic.sh +22 -0
  198. package/darwin_arm64/third-party/libsmb2/source/tests/test_0101_ls_basic_valgrind.sh +23 -0
  199. package/darwin_arm64/third-party/libsmb2/source/tests/test_0102_ls_basic_socket_error.sh +16 -0
  200. package/darwin_arm64/third-party/libsmb2/source/tests/test_0103_ls_basic_valgrind_malloc_error.sh +25 -0
  201. package/darwin_arm64/third-party/libsmb2/source/tests/test_0200_mkdir.sh +15 -0
  202. package/darwin_arm64/third-party/libsmb2/source/tests/test_0201_mkdir_valgrind.sh +15 -0
  203. package/darwin_arm64/third-party/libsmb2/source/tests/test_0210_cp_basic.sh +25 -0
  204. package/darwin_arm64/third-party/libsmb2/source/tests/test_0211_cp_valgrind.sh +26 -0
  205. package/darwin_arm64/third-party/libsmb2/source/tests/test_0212_cp_valgrind_socket_error.sh +29 -0
  206. package/darwin_arm64/third-party/libsmb2/source/tests/test_0300_cat_basic.sh +13 -0
  207. package/darwin_arm64/third-party/libsmb2/source/tests/test_0301_cat_valgrind.sh +13 -0
  208. package/darwin_arm64/third-party/libsmb2/source/tests/test_0302_cat_valgrind_socket_error.sh +18 -0
  209. package/darwin_arm64/third-party/libsmb2/source/tests/test_0310_cancel_pdu.sh +13 -0
  210. package/darwin_arm64/third-party/libsmb2/source/tests/test_0400_overdrawn_0202.sh +25 -0
  211. package/darwin_arm64/third-party/libsmb2/source/tests/test_900_dcerpc.sh +10 -0
  212. package/darwin_arm64/third-party/libsmb2/source/utils/Makefile.am +11 -0
  213. package/darwin_arm64/third-party/libsmb2/source/utils/smb2-cp.c +265 -0
  214. package/darwin_arm64/third-party/libsmb2/source/utils/smb2-ls.c +135 -0
  215. package/linux_x64/libsmb2.so +0 -0
  216. package/linux_x64/libsmb2.so.1 +0 -0
  217. package/linux_x64/libsmb2.so.6.1.0 +0 -0
  218. package/linux_x64/smb_server_cpp_linux_x64 +0 -0
  219. package/linux_x64/third-party/libsmb2/COPYING +24 -0
  220. package/linux_x64/third-party/libsmb2/LICENCE-LGPL-2.1.txt +502 -0
  221. package/linux_x64/third-party/libsmb2/NOTICE.txt +13 -0
  222. package/linux_x64/third-party/libsmb2/README +413 -0
  223. package/linux_x64/third-party/libsmb2/source/CMakeLists.txt +205 -0
  224. package/linux_x64/third-party/libsmb2/source/COPYING +24 -0
  225. package/linux_x64/third-party/libsmb2/source/LICENCE-LGPL-2.1.txt +502 -0
  226. package/linux_x64/third-party/libsmb2/source/Makefile.am +15 -0
  227. package/linux_x64/third-party/libsmb2/source/Makefile.platform +112 -0
  228. package/linux_x64/third-party/libsmb2/source/README +413 -0
  229. package/linux_x64/third-party/libsmb2/source/Xbox/libsmb2.sln +25 -0
  230. package/linux_x64/third-party/libsmb2/source/Xbox/libsmb2.vcxproj +248 -0
  231. package/linux_x64/third-party/libsmb2/source/Xbox/libsmb2.vcxproj.filters +304 -0
  232. package/linux_x64/third-party/libsmb2/source/Xbox 360/libsmb2.sln +32 -0
  233. package/linux_x64/third-party/libsmb2/source/Xbox 360/libsmb2.vcxproj +327 -0
  234. package/linux_x64/third-party/libsmb2/source/Xbox 360/libsmb2.vcxproj.filters +268 -0
  235. package/linux_x64/third-party/libsmb2/source/bootstrap +2 -0
  236. package/linux_x64/third-party/libsmb2/source/cmake/ConfigureChecks.cmake +63 -0
  237. package/linux_x64/third-party/libsmb2/source/cmake/FindSMB2.cmake +37 -0
  238. package/linux_x64/third-party/libsmb2/source/cmake/Modules/FindGSSAPI.cmake +30 -0
  239. package/linux_x64/third-party/libsmb2/source/cmake/Modules/FindLibKrb5.cmake +44 -0
  240. package/linux_x64/third-party/libsmb2/source/cmake/config.h.cmake +126 -0
  241. package/linux_x64/third-party/libsmb2/source/cmake/libsmb2.pc.cmake +14 -0
  242. package/linux_x64/third-party/libsmb2/source/component.mk +5 -0
  243. package/linux_x64/third-party/libsmb2/source/configure.ac +184 -0
  244. package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareAdd.yaml +9 -0
  245. package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareCheck.yaml +4 -0
  246. package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareDel.yaml +5 -0
  247. package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareDelSticky.yaml +5 -0
  248. package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareEnum.yaml +7 -0
  249. package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareGetInfo.yaml +6 -0
  250. package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareSetInfo.yaml +11 -0
  251. package/linux_x64/third-party/libsmb2/source/examples/CMakeLists.txt +28 -0
  252. package/linux_x64/third-party/libsmb2/source/examples/Makefile.am +54 -0
  253. package/linux_x64/third-party/libsmb2/source/examples/dcerpc.c +254 -0
  254. package/linux_x64/third-party/libsmb2/source/examples/picow/CMakeLists.txt +72 -0
  255. package/linux_x64/third-party/libsmb2/source/examples/picow/README.md +2 -0
  256. package/linux_x64/third-party/libsmb2/source/examples/picow/main.cpp +119 -0
  257. package/linux_x64/third-party/libsmb2/source/examples/picow/smb-ls-sync.c +0 -0
  258. package/linux_x64/third-party/libsmb2/source/examples/smb2-CMD-FIND.c +335 -0
  259. package/linux_x64/third-party/libsmb2/source/examples/smb2-cat-async.c +183 -0
  260. package/linux_x64/third-party/libsmb2/source/examples/smb2-cat-sync.c +105 -0
  261. package/linux_x64/third-party/libsmb2/source/examples/smb2-ftruncate-sync.c +87 -0
  262. package/linux_x64/third-party/libsmb2/source/examples/smb2-ls-async.c +185 -0
  263. package/linux_x64/third-party/libsmb2/source/examples/smb2-ls-epoll.c +234 -0
  264. package/linux_x64/third-party/libsmb2/source/examples/smb2-lsa-lookupsids.c +292 -0
  265. package/linux_x64/third-party/libsmb2/source/examples/smb2-lseek-sync.c +101 -0
  266. package/linux_x64/third-party/libsmb2/source/examples/smb2-notify.c +183 -0
  267. package/linux_x64/third-party/libsmb2/source/examples/smb2-put-async.c +175 -0
  268. package/linux_x64/third-party/libsmb2/source/examples/smb2-put-sync.c +100 -0
  269. package/linux_x64/third-party/libsmb2/source/examples/smb2-raw-fsstat-async.c +353 -0
  270. package/linux_x64/third-party/libsmb2/source/examples/smb2-raw-getsd-async.c +401 -0
  271. package/linux_x64/third-party/libsmb2/source/examples/smb2-raw-stat-async.c +448 -0
  272. package/linux_x64/third-party/libsmb2/source/examples/smb2-readlink.c +80 -0
  273. package/linux_x64/third-party/libsmb2/source/examples/smb2-rename-sync.c +80 -0
  274. package/linux_x64/third-party/libsmb2/source/examples/smb2-server-sync.c +497 -0
  275. package/linux_x64/third-party/libsmb2/source/examples/smb2-share-enum-sync.c +146 -0
  276. package/linux_x64/third-party/libsmb2/source/examples/smb2-share-enum.c +208 -0
  277. package/linux_x64/third-party/libsmb2/source/examples/smb2-share-info.c +255 -0
  278. package/linux_x64/third-party/libsmb2/source/examples/smb2-stat-sync.c +103 -0
  279. package/linux_x64/third-party/libsmb2/source/examples/smb2-statvfs-sync.c +85 -0
  280. package/linux_x64/third-party/libsmb2/source/examples/smb2-truncate-sync.c +78 -0
  281. package/linux_x64/third-party/libsmb2/source/idf_component.yml +5 -0
  282. package/linux_x64/third-party/libsmb2/source/include/Makefile.am +15 -0
  283. package/linux_x64/third-party/libsmb2/source/include/amiga_os/config.h +139 -0
  284. package/linux_x64/third-party/libsmb2/source/include/apple/config.h +139 -0
  285. package/linux_x64/third-party/libsmb2/source/include/asprintf.h +65 -0
  286. package/linux_x64/third-party/libsmb2/source/include/esp/config.h +139 -0
  287. package/linux_x64/third-party/libsmb2/source/include/libsmb2-private.h +670 -0
  288. package/linux_x64/third-party/libsmb2/source/include/module.modulemap +21 -0
  289. package/linux_x64/third-party/libsmb2/source/include/picow/FreeRTOSConfig.h +143 -0
  290. package/linux_x64/third-party/libsmb2/source/include/picow/README.md +2 -0
  291. package/linux_x64/third-party/libsmb2/source/include/picow/config.h +139 -0
  292. package/linux_x64/third-party/libsmb2/source/include/picow/lwipopts.h +27 -0
  293. package/linux_x64/third-party/libsmb2/source/include/picow/lwipopts_examples_common.h +90 -0
  294. package/linux_x64/third-party/libsmb2/source/include/portable-endian.h +377 -0
  295. package/linux_x64/third-party/libsmb2/source/include/ps3/config.h +139 -0
  296. package/linux_x64/third-party/libsmb2/source/include/slist.h +63 -0
  297. package/linux_x64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc-lsa.h +172 -0
  298. package/linux_x64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc-srvsvc.h +276 -0
  299. package/linux_x64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc.h +203 -0
  300. package/linux_x64/third-party/libsmb2/source/include/smb2/libsmb2-raw.h +497 -0
  301. package/linux_x64/third-party/libsmb2/source/include/smb2/libsmb2.h +1409 -0
  302. package/linux_x64/third-party/libsmb2/source/include/smb2/smb2-errors.h +549 -0
  303. package/linux_x64/third-party/libsmb2/source/include/smb2/smb2-ioctl.h +83 -0
  304. package/linux_x64/third-party/libsmb2/source/include/smb2/smb2.h +1251 -0
  305. package/linux_x64/third-party/libsmb2/source/include/xbox/config.h +139 -0
  306. package/linux_x64/third-party/libsmb2/source/include/xbox 360/config.h +139 -0
  307. package/linux_x64/third-party/libsmb2/source/lib/CMakeLists.txt +260 -0
  308. package/linux_x64/third-party/libsmb2/source/lib/Makefile.AMIGA +46 -0
  309. package/linux_x64/third-party/libsmb2/source/lib/Makefile.AMIGA_AROS +59 -0
  310. package/linux_x64/third-party/libsmb2/source/lib/Makefile.AMIGA_OS3 +59 -0
  311. package/linux_x64/third-party/libsmb2/source/lib/Makefile.PS3_PPU +100 -0
  312. package/linux_x64/third-party/libsmb2/source/lib/Makefile.am +85 -0
  313. package/linux_x64/third-party/libsmb2/source/lib/aes.c +33 -0
  314. package/linux_x64/third-party/libsmb2/source/lib/aes.h +29 -0
  315. package/linux_x64/third-party/libsmb2/source/lib/aes128ccm.c +185 -0
  316. package/linux_x64/third-party/libsmb2/source/lib/aes128ccm.h +28 -0
  317. package/linux_x64/third-party/libsmb2/source/lib/aes_apple.c +70 -0
  318. package/linux_x64/third-party/libsmb2/source/lib/aes_apple.h +34 -0
  319. package/linux_x64/third-party/libsmb2/source/lib/aes_reference.c +560 -0
  320. package/linux_x64/third-party/libsmb2/source/lib/aes_reference.h +49 -0
  321. package/linux_x64/third-party/libsmb2/source/lib/alloc.c +154 -0
  322. package/linux_x64/third-party/libsmb2/source/lib/asn1-ber.c +1078 -0
  323. package/linux_x64/third-party/libsmb2/source/lib/asn1-ber.h +161 -0
  324. package/linux_x64/third-party/libsmb2/source/lib/compat.c +599 -0
  325. package/linux_x64/third-party/libsmb2/source/lib/compat.h +829 -0
  326. package/linux_x64/third-party/libsmb2/source/lib/dcerpc-lsa.c +641 -0
  327. package/linux_x64/third-party/libsmb2/source/lib/dcerpc-srvsvc.c +885 -0
  328. package/linux_x64/third-party/libsmb2/source/lib/dcerpc.c +2513 -0
  329. package/linux_x64/third-party/libsmb2/source/lib/dreamcast/vfs.c +328 -0
  330. package/linux_x64/third-party/libsmb2/source/lib/dreamcast/vfs.h +15 -0
  331. package/linux_x64/third-party/libsmb2/source/lib/errors.c +1192 -0
  332. package/linux_x64/third-party/libsmb2/source/lib/hmac-md5.c +84 -0
  333. package/linux_x64/third-party/libsmb2/source/lib/hmac-md5.h +42 -0
  334. package/linux_x64/third-party/libsmb2/source/lib/hmac.c +245 -0
  335. package/linux_x64/third-party/libsmb2/source/lib/init.c +778 -0
  336. package/linux_x64/third-party/libsmb2/source/lib/krb5-wrapper.c +1072 -0
  337. package/linux_x64/third-party/libsmb2/source/lib/krb5-wrapper.h +134 -0
  338. package/linux_x64/third-party/libsmb2/source/lib/libsmb2.c +4292 -0
  339. package/linux_x64/third-party/libsmb2/source/lib/libsmb2.syms +168 -0
  340. package/linux_x64/third-party/libsmb2/source/lib/md4.h +43 -0
  341. package/linux_x64/third-party/libsmb2/source/lib/md4c.c +289 -0
  342. package/linux_x64/third-party/libsmb2/source/lib/md5.c +249 -0
  343. package/linux_x64/third-party/libsmb2/source/lib/md5.h +76 -0
  344. package/linux_x64/third-party/libsmb2/source/lib/ntlmssp.c +1380 -0
  345. package/linux_x64/third-party/libsmb2/source/lib/ntlmssp.h +84 -0
  346. package/linux_x64/third-party/libsmb2/source/lib/pdu.c +1159 -0
  347. package/linux_x64/third-party/libsmb2/source/lib/ps2/TODO +6 -0
  348. package/linux_x64/third-party/libsmb2/source/lib/ps2/imports.lst +84 -0
  349. package/linux_x64/third-party/libsmb2/source/lib/ps2/irx_imports.h +28 -0
  350. package/linux_x64/third-party/libsmb2/source/lib/ps2/ps2smb2.h +35 -0
  351. package/linux_x64/third-party/libsmb2/source/lib/ps2/smb2_fio.c +816 -0
  352. package/linux_x64/third-party/libsmb2/source/lib/ps2/smb2_fio.h +15 -0
  353. package/linux_x64/third-party/libsmb2/source/lib/ps2/smb2man.c +69 -0
  354. package/linux_x64/third-party/libsmb2/source/lib/sha-private.h +28 -0
  355. package/linux_x64/third-party/libsmb2/source/lib/sha.h +334 -0
  356. package/linux_x64/third-party/libsmb2/source/lib/sha1.c +450 -0
  357. package/linux_x64/third-party/libsmb2/source/lib/sha224-256.c +611 -0
  358. package/linux_x64/third-party/libsmb2/source/lib/sha384-512.c +1059 -0
  359. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-close.c +240 -0
  360. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-create.c +508 -0
  361. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-echo.c +202 -0
  362. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-error.c +157 -0
  363. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-flush.c +207 -0
  364. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-ioctl.c +445 -0
  365. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-lock.c +312 -0
  366. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-logoff.c +190 -0
  367. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-negotiate.c +646 -0
  368. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-notify-change.c +278 -0
  369. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-oplock-break.c +543 -0
  370. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-query-directory.c +580 -0
  371. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-query-info.c +753 -0
  372. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-read.c +391 -0
  373. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-session-setup.c +331 -0
  374. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-set-info.c +361 -0
  375. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-tree-connect.c +278 -0
  376. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-tree-disconnect.c +171 -0
  377. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-write.c +319 -0
  378. package/linux_x64/third-party/libsmb2/source/lib/smb2-data-file-info.c +537 -0
  379. package/linux_x64/third-party/libsmb2/source/lib/smb2-data-filesystem-info.c +384 -0
  380. package/linux_x64/third-party/libsmb2/source/lib/smb2-data-reparse-point.c +117 -0
  381. package/linux_x64/third-party/libsmb2/source/lib/smb2-data-security-descriptor.c +361 -0
  382. package/linux_x64/third-party/libsmb2/source/lib/smb2-share-enum.c +181 -0
  383. package/linux_x64/third-party/libsmb2/source/lib/smb2-signing.c +279 -0
  384. package/linux_x64/third-party/libsmb2/source/lib/smb2-signing.h +51 -0
  385. package/linux_x64/third-party/libsmb2/source/lib/smb3-seal.c +165 -0
  386. package/linux_x64/third-party/libsmb2/source/lib/smb3-seal.h +43 -0
  387. package/linux_x64/third-party/libsmb2/source/lib/socket.c +1502 -0
  388. package/linux_x64/third-party/libsmb2/source/lib/spnego-wrapper.c +634 -0
  389. package/linux_x64/third-party/libsmb2/source/lib/spnego-wrapper.h +74 -0
  390. package/linux_x64/third-party/libsmb2/source/lib/sync.c +988 -0
  391. package/linux_x64/third-party/libsmb2/source/lib/timestamps.c +70 -0
  392. package/linux_x64/third-party/libsmb2/source/lib/unicode.c +307 -0
  393. package/linux_x64/third-party/libsmb2/source/lib/usha.c +345 -0
  394. package/linux_x64/third-party/libsmb2/source/libsmb2.pc.in +14 -0
  395. package/linux_x64/third-party/libsmb2/source/packaging/RPM/libsmb2.spec.in +135 -0
  396. package/linux_x64/third-party/libsmb2/source/packaging/RPM/makerpms.sh +114 -0
  397. package/linux_x64/third-party/libsmb2/source/tests/Makefile.am +34 -0
  398. package/linux_x64/third-party/libsmb2/source/tests/README +28 -0
  399. package/linux_x64/third-party/libsmb2/source/tests/aes128ccm-test.c +119 -0
  400. package/linux_x64/third-party/libsmb2/source/tests/functions.sh +11 -0
  401. package/linux_x64/third-party/libsmb2/source/tests/ld_sockerr.c +58 -0
  402. package/linux_x64/third-party/libsmb2/source/tests/metastat-0202-censored.c +136 -0
  403. package/linux_x64/third-party/libsmb2/source/tests/ntlmssp_generate_blob.c +123 -0
  404. package/linux_x64/third-party/libsmb2/source/tests/prog_cat.c +188 -0
  405. package/linux_x64/third-party/libsmb2/source/tests/prog_cat_cancel.c +203 -0
  406. package/linux_x64/third-party/libsmb2/source/tests/prog_ls.c +189 -0
  407. package/linux_x64/third-party/libsmb2/source/tests/prog_mkdir.c +85 -0
  408. package/linux_x64/third-party/libsmb2/source/tests/prog_rmdir.c +84 -0
  409. package/linux_x64/third-party/libsmb2/source/tests/smb2-dcerpc-coder-test.c +635 -0
  410. package/linux_x64/third-party/libsmb2/source/tests/test_0100_ls_basic.sh +22 -0
  411. package/linux_x64/third-party/libsmb2/source/tests/test_0101_ls_basic_valgrind.sh +23 -0
  412. package/linux_x64/third-party/libsmb2/source/tests/test_0102_ls_basic_socket_error.sh +16 -0
  413. package/linux_x64/third-party/libsmb2/source/tests/test_0103_ls_basic_valgrind_malloc_error.sh +25 -0
  414. package/linux_x64/third-party/libsmb2/source/tests/test_0200_mkdir.sh +15 -0
  415. package/linux_x64/third-party/libsmb2/source/tests/test_0201_mkdir_valgrind.sh +15 -0
  416. package/linux_x64/third-party/libsmb2/source/tests/test_0210_cp_basic.sh +25 -0
  417. package/linux_x64/third-party/libsmb2/source/tests/test_0211_cp_valgrind.sh +26 -0
  418. package/linux_x64/third-party/libsmb2/source/tests/test_0212_cp_valgrind_socket_error.sh +29 -0
  419. package/linux_x64/third-party/libsmb2/source/tests/test_0300_cat_basic.sh +13 -0
  420. package/linux_x64/third-party/libsmb2/source/tests/test_0301_cat_valgrind.sh +13 -0
  421. package/linux_x64/third-party/libsmb2/source/tests/test_0302_cat_valgrind_socket_error.sh +18 -0
  422. package/linux_x64/third-party/libsmb2/source/tests/test_0310_cancel_pdu.sh +13 -0
  423. package/linux_x64/third-party/libsmb2/source/tests/test_0400_overdrawn_0202.sh +25 -0
  424. package/linux_x64/third-party/libsmb2/source/tests/test_900_dcerpc.sh +10 -0
  425. package/linux_x64/third-party/libsmb2/source/utils/Makefile.am +11 -0
  426. package/linux_x64/third-party/libsmb2/source/utils/smb2-cp.c +265 -0
  427. package/linux_x64/third-party/libsmb2/source/utils/smb2-ls.c +135 -0
  428. package/package.json +10 -4
  429. package/smb2.proto +164 -0
  430. package/win32_x64/smb2.dll +0 -0
  431. package/win32_x64/smb_server_cpp_win32_x64.exe +0 -0
  432. package/win32_x64/third-party/libsmb2/COPYING +24 -0
  433. package/win32_x64/third-party/libsmb2/LICENCE-LGPL-2.1.txt +502 -0
  434. package/win32_x64/third-party/libsmb2/NOTICE.txt +13 -0
  435. package/win32_x64/third-party/libsmb2/README +413 -0
  436. package/win32_x64/third-party/libsmb2/source/CMakeLists.txt +205 -0
  437. package/win32_x64/third-party/libsmb2/source/COPYING +24 -0
  438. package/win32_x64/third-party/libsmb2/source/LICENCE-LGPL-2.1.txt +502 -0
  439. package/win32_x64/third-party/libsmb2/source/Makefile.am +15 -0
  440. package/win32_x64/third-party/libsmb2/source/Makefile.platform +112 -0
  441. package/win32_x64/third-party/libsmb2/source/README +413 -0
  442. package/win32_x64/third-party/libsmb2/source/Xbox/libsmb2.sln +25 -0
  443. package/win32_x64/third-party/libsmb2/source/Xbox/libsmb2.vcxproj +248 -0
  444. package/win32_x64/third-party/libsmb2/source/Xbox/libsmb2.vcxproj.filters +304 -0
  445. package/win32_x64/third-party/libsmb2/source/Xbox 360/libsmb2.sln +32 -0
  446. package/win32_x64/third-party/libsmb2/source/Xbox 360/libsmb2.vcxproj +327 -0
  447. package/win32_x64/third-party/libsmb2/source/Xbox 360/libsmb2.vcxproj.filters +268 -0
  448. package/win32_x64/third-party/libsmb2/source/bootstrap +2 -0
  449. package/win32_x64/third-party/libsmb2/source/cmake/ConfigureChecks.cmake +63 -0
  450. package/win32_x64/third-party/libsmb2/source/cmake/FindSMB2.cmake +37 -0
  451. package/win32_x64/third-party/libsmb2/source/cmake/Modules/FindGSSAPI.cmake +30 -0
  452. package/win32_x64/third-party/libsmb2/source/cmake/Modules/FindLibKrb5.cmake +44 -0
  453. package/win32_x64/third-party/libsmb2/source/cmake/config.h.cmake +126 -0
  454. package/win32_x64/third-party/libsmb2/source/cmake/libsmb2.pc.cmake +14 -0
  455. package/win32_x64/third-party/libsmb2/source/component.mk +5 -0
  456. package/win32_x64/third-party/libsmb2/source/configure.ac +184 -0
  457. package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareAdd.yaml +9 -0
  458. package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareCheck.yaml +4 -0
  459. package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareDel.yaml +5 -0
  460. package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareDelSticky.yaml +5 -0
  461. package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareEnum.yaml +7 -0
  462. package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareGetInfo.yaml +6 -0
  463. package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareSetInfo.yaml +11 -0
  464. package/win32_x64/third-party/libsmb2/source/examples/CMakeLists.txt +28 -0
  465. package/win32_x64/third-party/libsmb2/source/examples/Makefile.am +54 -0
  466. package/win32_x64/third-party/libsmb2/source/examples/dcerpc.c +254 -0
  467. package/win32_x64/third-party/libsmb2/source/examples/picow/CMakeLists.txt +72 -0
  468. package/win32_x64/third-party/libsmb2/source/examples/picow/README.md +2 -0
  469. package/win32_x64/third-party/libsmb2/source/examples/picow/main.cpp +119 -0
  470. package/win32_x64/third-party/libsmb2/source/examples/picow/smb-ls-sync.c +0 -0
  471. package/win32_x64/third-party/libsmb2/source/examples/smb2-CMD-FIND.c +335 -0
  472. package/win32_x64/third-party/libsmb2/source/examples/smb2-cat-async.c +183 -0
  473. package/win32_x64/third-party/libsmb2/source/examples/smb2-cat-sync.c +105 -0
  474. package/win32_x64/third-party/libsmb2/source/examples/smb2-ftruncate-sync.c +87 -0
  475. package/win32_x64/third-party/libsmb2/source/examples/smb2-ls-async.c +185 -0
  476. package/win32_x64/third-party/libsmb2/source/examples/smb2-ls-epoll.c +234 -0
  477. package/win32_x64/third-party/libsmb2/source/examples/smb2-lsa-lookupsids.c +292 -0
  478. package/win32_x64/third-party/libsmb2/source/examples/smb2-lseek-sync.c +101 -0
  479. package/win32_x64/third-party/libsmb2/source/examples/smb2-notify.c +183 -0
  480. package/win32_x64/third-party/libsmb2/source/examples/smb2-put-async.c +175 -0
  481. package/win32_x64/third-party/libsmb2/source/examples/smb2-put-sync.c +100 -0
  482. package/win32_x64/third-party/libsmb2/source/examples/smb2-raw-fsstat-async.c +353 -0
  483. package/win32_x64/third-party/libsmb2/source/examples/smb2-raw-getsd-async.c +401 -0
  484. package/win32_x64/third-party/libsmb2/source/examples/smb2-raw-stat-async.c +448 -0
  485. package/win32_x64/third-party/libsmb2/source/examples/smb2-readlink.c +80 -0
  486. package/win32_x64/third-party/libsmb2/source/examples/smb2-rename-sync.c +80 -0
  487. package/win32_x64/third-party/libsmb2/source/examples/smb2-server-sync.c +497 -0
  488. package/win32_x64/third-party/libsmb2/source/examples/smb2-share-enum-sync.c +146 -0
  489. package/win32_x64/third-party/libsmb2/source/examples/smb2-share-enum.c +208 -0
  490. package/win32_x64/third-party/libsmb2/source/examples/smb2-share-info.c +255 -0
  491. package/win32_x64/third-party/libsmb2/source/examples/smb2-stat-sync.c +103 -0
  492. package/win32_x64/third-party/libsmb2/source/examples/smb2-statvfs-sync.c +85 -0
  493. package/win32_x64/third-party/libsmb2/source/examples/smb2-truncate-sync.c +78 -0
  494. package/win32_x64/third-party/libsmb2/source/idf_component.yml +5 -0
  495. package/win32_x64/third-party/libsmb2/source/include/Makefile.am +15 -0
  496. package/win32_x64/third-party/libsmb2/source/include/amiga_os/config.h +139 -0
  497. package/win32_x64/third-party/libsmb2/source/include/apple/config.h +139 -0
  498. package/win32_x64/third-party/libsmb2/source/include/asprintf.h +65 -0
  499. package/win32_x64/third-party/libsmb2/source/include/esp/config.h +139 -0
  500. package/win32_x64/third-party/libsmb2/source/include/libsmb2-private.h +670 -0
  501. package/win32_x64/third-party/libsmb2/source/include/module.modulemap +21 -0
  502. package/win32_x64/third-party/libsmb2/source/include/picow/FreeRTOSConfig.h +143 -0
  503. package/win32_x64/third-party/libsmb2/source/include/picow/README.md +2 -0
  504. package/win32_x64/third-party/libsmb2/source/include/picow/config.h +139 -0
  505. package/win32_x64/third-party/libsmb2/source/include/picow/lwipopts.h +27 -0
  506. package/win32_x64/third-party/libsmb2/source/include/picow/lwipopts_examples_common.h +90 -0
  507. package/win32_x64/third-party/libsmb2/source/include/portable-endian.h +377 -0
  508. package/win32_x64/third-party/libsmb2/source/include/ps3/config.h +139 -0
  509. package/win32_x64/third-party/libsmb2/source/include/slist.h +63 -0
  510. package/win32_x64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc-lsa.h +172 -0
  511. package/win32_x64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc-srvsvc.h +276 -0
  512. package/win32_x64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc.h +203 -0
  513. package/win32_x64/third-party/libsmb2/source/include/smb2/libsmb2-raw.h +497 -0
  514. package/win32_x64/third-party/libsmb2/source/include/smb2/libsmb2.h +1409 -0
  515. package/win32_x64/third-party/libsmb2/source/include/smb2/smb2-errors.h +549 -0
  516. package/win32_x64/third-party/libsmb2/source/include/smb2/smb2-ioctl.h +83 -0
  517. package/win32_x64/third-party/libsmb2/source/include/smb2/smb2.h +1251 -0
  518. package/win32_x64/third-party/libsmb2/source/include/xbox/config.h +139 -0
  519. package/win32_x64/third-party/libsmb2/source/include/xbox 360/config.h +139 -0
  520. package/win32_x64/third-party/libsmb2/source/lib/CMakeLists.txt +260 -0
  521. package/win32_x64/third-party/libsmb2/source/lib/Makefile.AMIGA +46 -0
  522. package/win32_x64/third-party/libsmb2/source/lib/Makefile.AMIGA_AROS +59 -0
  523. package/win32_x64/third-party/libsmb2/source/lib/Makefile.AMIGA_OS3 +59 -0
  524. package/win32_x64/third-party/libsmb2/source/lib/Makefile.PS3_PPU +100 -0
  525. package/win32_x64/third-party/libsmb2/source/lib/Makefile.am +85 -0
  526. package/win32_x64/third-party/libsmb2/source/lib/aes.c +33 -0
  527. package/win32_x64/third-party/libsmb2/source/lib/aes.h +29 -0
  528. package/win32_x64/third-party/libsmb2/source/lib/aes128ccm.c +185 -0
  529. package/win32_x64/third-party/libsmb2/source/lib/aes128ccm.h +28 -0
  530. package/win32_x64/third-party/libsmb2/source/lib/aes_apple.c +70 -0
  531. package/win32_x64/third-party/libsmb2/source/lib/aes_apple.h +34 -0
  532. package/win32_x64/third-party/libsmb2/source/lib/aes_reference.c +560 -0
  533. package/win32_x64/third-party/libsmb2/source/lib/aes_reference.h +49 -0
  534. package/win32_x64/third-party/libsmb2/source/lib/alloc.c +154 -0
  535. package/win32_x64/third-party/libsmb2/source/lib/asn1-ber.c +1078 -0
  536. package/win32_x64/third-party/libsmb2/source/lib/asn1-ber.h +161 -0
  537. package/win32_x64/third-party/libsmb2/source/lib/compat.c +599 -0
  538. package/win32_x64/third-party/libsmb2/source/lib/compat.h +829 -0
  539. package/win32_x64/third-party/libsmb2/source/lib/dcerpc-lsa.c +641 -0
  540. package/win32_x64/third-party/libsmb2/source/lib/dcerpc-srvsvc.c +885 -0
  541. package/win32_x64/third-party/libsmb2/source/lib/dcerpc.c +2513 -0
  542. package/win32_x64/third-party/libsmb2/source/lib/dreamcast/vfs.c +328 -0
  543. package/win32_x64/third-party/libsmb2/source/lib/dreamcast/vfs.h +15 -0
  544. package/win32_x64/third-party/libsmb2/source/lib/errors.c +1192 -0
  545. package/win32_x64/third-party/libsmb2/source/lib/hmac-md5.c +84 -0
  546. package/win32_x64/third-party/libsmb2/source/lib/hmac-md5.h +42 -0
  547. package/win32_x64/third-party/libsmb2/source/lib/hmac.c +245 -0
  548. package/win32_x64/third-party/libsmb2/source/lib/init.c +778 -0
  549. package/win32_x64/third-party/libsmb2/source/lib/krb5-wrapper.c +1072 -0
  550. package/win32_x64/third-party/libsmb2/source/lib/krb5-wrapper.h +134 -0
  551. package/win32_x64/third-party/libsmb2/source/lib/libsmb2.c +4292 -0
  552. package/win32_x64/third-party/libsmb2/source/lib/libsmb2.syms +168 -0
  553. package/win32_x64/third-party/libsmb2/source/lib/md4.h +43 -0
  554. package/win32_x64/third-party/libsmb2/source/lib/md4c.c +289 -0
  555. package/win32_x64/third-party/libsmb2/source/lib/md5.c +249 -0
  556. package/win32_x64/third-party/libsmb2/source/lib/md5.h +76 -0
  557. package/win32_x64/third-party/libsmb2/source/lib/ntlmssp.c +1380 -0
  558. package/win32_x64/third-party/libsmb2/source/lib/ntlmssp.h +84 -0
  559. package/win32_x64/third-party/libsmb2/source/lib/pdu.c +1159 -0
  560. package/win32_x64/third-party/libsmb2/source/lib/ps2/TODO +6 -0
  561. package/win32_x64/third-party/libsmb2/source/lib/ps2/imports.lst +84 -0
  562. package/win32_x64/third-party/libsmb2/source/lib/ps2/irx_imports.h +28 -0
  563. package/win32_x64/third-party/libsmb2/source/lib/ps2/ps2smb2.h +35 -0
  564. package/win32_x64/third-party/libsmb2/source/lib/ps2/smb2_fio.c +816 -0
  565. package/win32_x64/third-party/libsmb2/source/lib/ps2/smb2_fio.h +15 -0
  566. package/win32_x64/third-party/libsmb2/source/lib/ps2/smb2man.c +69 -0
  567. package/win32_x64/third-party/libsmb2/source/lib/sha-private.h +28 -0
  568. package/win32_x64/third-party/libsmb2/source/lib/sha.h +334 -0
  569. package/win32_x64/third-party/libsmb2/source/lib/sha1.c +450 -0
  570. package/win32_x64/third-party/libsmb2/source/lib/sha224-256.c +611 -0
  571. package/win32_x64/third-party/libsmb2/source/lib/sha384-512.c +1059 -0
  572. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-close.c +240 -0
  573. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-create.c +508 -0
  574. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-echo.c +202 -0
  575. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-error.c +157 -0
  576. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-flush.c +207 -0
  577. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-ioctl.c +445 -0
  578. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-lock.c +312 -0
  579. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-logoff.c +190 -0
  580. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-negotiate.c +646 -0
  581. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-notify-change.c +278 -0
  582. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-oplock-break.c +543 -0
  583. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-query-directory.c +580 -0
  584. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-query-info.c +753 -0
  585. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-read.c +391 -0
  586. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-session-setup.c +331 -0
  587. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-set-info.c +361 -0
  588. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-tree-connect.c +278 -0
  589. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-tree-disconnect.c +171 -0
  590. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-write.c +319 -0
  591. package/win32_x64/third-party/libsmb2/source/lib/smb2-data-file-info.c +537 -0
  592. package/win32_x64/third-party/libsmb2/source/lib/smb2-data-filesystem-info.c +384 -0
  593. package/win32_x64/third-party/libsmb2/source/lib/smb2-data-reparse-point.c +117 -0
  594. package/win32_x64/third-party/libsmb2/source/lib/smb2-data-security-descriptor.c +361 -0
  595. package/win32_x64/third-party/libsmb2/source/lib/smb2-share-enum.c +181 -0
  596. package/win32_x64/third-party/libsmb2/source/lib/smb2-signing.c +279 -0
  597. package/win32_x64/third-party/libsmb2/source/lib/smb2-signing.h +51 -0
  598. package/win32_x64/third-party/libsmb2/source/lib/smb3-seal.c +165 -0
  599. package/win32_x64/third-party/libsmb2/source/lib/smb3-seal.h +43 -0
  600. package/win32_x64/third-party/libsmb2/source/lib/socket.c +1502 -0
  601. package/win32_x64/third-party/libsmb2/source/lib/spnego-wrapper.c +634 -0
  602. package/win32_x64/third-party/libsmb2/source/lib/spnego-wrapper.h +74 -0
  603. package/win32_x64/third-party/libsmb2/source/lib/sync.c +988 -0
  604. package/win32_x64/third-party/libsmb2/source/lib/timestamps.c +70 -0
  605. package/win32_x64/third-party/libsmb2/source/lib/unicode.c +307 -0
  606. package/win32_x64/third-party/libsmb2/source/lib/usha.c +345 -0
  607. package/win32_x64/third-party/libsmb2/source/libsmb2.pc.in +14 -0
  608. package/win32_x64/third-party/libsmb2/source/packaging/RPM/libsmb2.spec.in +135 -0
  609. package/win32_x64/third-party/libsmb2/source/packaging/RPM/makerpms.sh +114 -0
  610. package/win32_x64/third-party/libsmb2/source/tests/Makefile.am +34 -0
  611. package/win32_x64/third-party/libsmb2/source/tests/README +28 -0
  612. package/win32_x64/third-party/libsmb2/source/tests/aes128ccm-test.c +119 -0
  613. package/win32_x64/third-party/libsmb2/source/tests/functions.sh +11 -0
  614. package/win32_x64/third-party/libsmb2/source/tests/ld_sockerr.c +58 -0
  615. package/win32_x64/third-party/libsmb2/source/tests/metastat-0202-censored.c +136 -0
  616. package/win32_x64/third-party/libsmb2/source/tests/ntlmssp_generate_blob.c +123 -0
  617. package/win32_x64/third-party/libsmb2/source/tests/prog_cat.c +188 -0
  618. package/win32_x64/third-party/libsmb2/source/tests/prog_cat_cancel.c +203 -0
  619. package/win32_x64/third-party/libsmb2/source/tests/prog_ls.c +189 -0
  620. package/win32_x64/third-party/libsmb2/source/tests/prog_mkdir.c +85 -0
  621. package/win32_x64/third-party/libsmb2/source/tests/prog_rmdir.c +84 -0
  622. package/win32_x64/third-party/libsmb2/source/tests/smb2-dcerpc-coder-test.c +635 -0
  623. package/win32_x64/third-party/libsmb2/source/tests/test_0100_ls_basic.sh +22 -0
  624. package/win32_x64/third-party/libsmb2/source/tests/test_0101_ls_basic_valgrind.sh +23 -0
  625. package/win32_x64/third-party/libsmb2/source/tests/test_0102_ls_basic_socket_error.sh +16 -0
  626. package/win32_x64/third-party/libsmb2/source/tests/test_0103_ls_basic_valgrind_malloc_error.sh +25 -0
  627. package/win32_x64/third-party/libsmb2/source/tests/test_0200_mkdir.sh +15 -0
  628. package/win32_x64/third-party/libsmb2/source/tests/test_0201_mkdir_valgrind.sh +15 -0
  629. package/win32_x64/third-party/libsmb2/source/tests/test_0210_cp_basic.sh +25 -0
  630. package/win32_x64/third-party/libsmb2/source/tests/test_0211_cp_valgrind.sh +26 -0
  631. package/win32_x64/third-party/libsmb2/source/tests/test_0212_cp_valgrind_socket_error.sh +29 -0
  632. package/win32_x64/third-party/libsmb2/source/tests/test_0300_cat_basic.sh +13 -0
  633. package/win32_x64/third-party/libsmb2/source/tests/test_0301_cat_valgrind.sh +13 -0
  634. package/win32_x64/third-party/libsmb2/source/tests/test_0302_cat_valgrind_socket_error.sh +18 -0
  635. package/win32_x64/third-party/libsmb2/source/tests/test_0310_cancel_pdu.sh +13 -0
  636. package/win32_x64/third-party/libsmb2/source/tests/test_0400_overdrawn_0202.sh +25 -0
  637. package/win32_x64/third-party/libsmb2/source/tests/test_900_dcerpc.sh +10 -0
  638. package/win32_x64/third-party/libsmb2/source/utils/Makefile.am +11 -0
  639. package/win32_x64/third-party/libsmb2/source/utils/smb2-cp.c +265 -0
  640. package/win32_x64/third-party/libsmb2/source/utils/smb2-ls.c +135 -0
@@ -0,0 +1,1072 @@
1
+ /* -*- mode:c; tab-width:8; c-basic-offset:8; indent-tabs-mode:nil; -*- */
2
+ /*
3
+ Copyright (C) 2018 by Ronnie Sahlberg <ronniesahlberg@gmail.com>
4
+
5
+ This program is free software; you can redistribute it and/or modify
6
+ it under the terms of the GNU Lesser General Public License as published by
7
+ the Free Software Foundation; either version 2.1 of the License, or
8
+ (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU Lesser General Public License for more details.
14
+
15
+ You should have received a copy of the GNU Lesser General Public License
16
+ along with this program; if not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ #ifdef HAVE_CONFIG_H
19
+ #include "config.h"
20
+ #endif
21
+
22
+ #ifdef HAVE_LIBKRB5
23
+
24
+ #ifndef _GNU_SOURCE
25
+ #define _GNU_SOURCE
26
+ #endif
27
+
28
+ #ifdef HAVE_STDINT_H
29
+ #include <stdint.h>
30
+ #endif
31
+
32
+ #ifdef HAVE_STDLIB_H
33
+ #include <stdlib.h>
34
+ #endif
35
+
36
+ #ifdef HAVE_STRING_H
37
+ #include <string.h>
38
+ #endif
39
+
40
+ #ifdef STDC_HEADERS
41
+ #include <stddef.h>
42
+ #endif
43
+
44
+ #ifdef HAVE_SYS_TYPES_H
45
+ #include <sys/types.h>
46
+ #endif
47
+
48
+ #ifdef HAVE_SYS_STAT_H
49
+ #include <sys/stat.h>
50
+ #endif
51
+
52
+ #ifdef HAVE_UNISTD_H
53
+ #include <unistd.h>
54
+ #endif
55
+
56
+ #ifdef HAVE_SYS_UNISTD_H
57
+ #include <sys/unistd.h>
58
+ #endif
59
+
60
+ #if __APPLE__
61
+ #include <GSS/GSS.h>
62
+ #else
63
+ #include <gssapi/gssapi_krb5.h>
64
+ #include <gssapi/gssapi.h>
65
+ #endif
66
+ #include <stdio.h>
67
+
68
+ #include "compat.h"
69
+
70
+ #include "slist.h"
71
+ #include "smb2.h"
72
+ #include "libsmb2.h"
73
+ #include "libsmb2-raw.h"
74
+ #include "libsmb2-private.h"
75
+
76
+ #include "krb5-wrapper.h"
77
+
78
+ void
79
+ krb5_free_auth_data(struct private_auth_data *auth)
80
+ {
81
+ uint32_t maj, min;
82
+
83
+ gss_release_buffer(&min, &auth->output_token);
84
+
85
+ if (auth->krb5_Ccache) {
86
+ krb5_cc_destroy(auth->krb5_cctx, auth->krb5_Ccache);
87
+ krb5_free_context(auth->krb5_cctx);
88
+ }
89
+
90
+ /* Delete context */
91
+ if (auth->context) {
92
+ maj = gss_delete_sec_context(&min, &auth->context,
93
+ &auth->output_token);
94
+ if (maj != GSS_S_COMPLETE) {
95
+ /* No logging, yet. Do we care? */
96
+ }
97
+ }
98
+
99
+ if (auth->target_name) {
100
+ gss_release_name(&min, &auth->target_name);
101
+ }
102
+
103
+ if (auth->user_name) {
104
+ gss_release_name(&min, &auth->user_name);
105
+ }
106
+
107
+ if (auth->cred) {
108
+ gss_release_cred(&min, &auth->cred);
109
+ }
110
+
111
+ free(auth->g_server);
112
+ free(auth);
113
+ }
114
+
115
+ static char *
116
+ display_status(int type, uint32_t err)
117
+ {
118
+ gss_buffer_desc text;
119
+ uint32_t msg_ctx;
120
+ char *msg, *tmp, *tv;
121
+ uint32_t maj, min;
122
+
123
+ if (asprintf(&msg, " ") < 0) {
124
+ return NULL;
125
+ }
126
+ msg_ctx = 0;
127
+ do {
128
+ maj = gss_display_status(&min, err, type,
129
+ GSS_C_NO_OID, &msg_ctx, &text);
130
+ if (maj != GSS_S_COMPLETE) {
131
+ return msg;
132
+ }
133
+
134
+ tv = malloc(text.length + 4);
135
+ if (tv) {
136
+ memcpy(tv, text.value, text.length);
137
+ tv[text.length] = 0;
138
+
139
+ tmp = NULL;
140
+ if (msg) {
141
+ tmp = msg;
142
+ min = asprintf(&msg, "%s, %s", tmp, tv);
143
+ free(tmp);
144
+ } else {
145
+ min = asprintf(&msg, "%s", tv);
146
+ }
147
+ free(tv);
148
+ if (min == -1) {
149
+ return msg;
150
+ }
151
+ }
152
+ gss_release_buffer(&min, &text);
153
+ } while (msg_ctx != 0);
154
+
155
+ return msg;
156
+ }
157
+
158
+ void
159
+ krb5_set_gss_error(struct smb2_context *smb2, char *func,
160
+ uint32_t maj, uint32_t min)
161
+ {
162
+ char *err_maj = display_status(GSS_C_GSS_CODE, maj);
163
+ char *err_min = display_status(GSS_C_MECH_CODE, min);
164
+ if (smb2) {
165
+ smb2_set_error(smb2, "%s: (%s, %s)", func, err_maj, err_min);
166
+ }
167
+ free(err_min);
168
+ free(err_maj);
169
+ }
170
+
171
+ struct private_auth_data *
172
+ krb5_negotiate_reply(struct smb2_context *smb2,
173
+ const char *server,
174
+ const char *domain,
175
+ const char *user_name,
176
+ const char *password)
177
+ {
178
+ struct private_auth_data *auth_data;
179
+ gss_buffer_desc target = GSS_C_EMPTY_BUFFER;
180
+ uint32_t maj, min;
181
+ gss_buffer_desc user;
182
+ char user_principal[2048];
183
+ char *nc_password = NULL;
184
+ char *spos;
185
+ gss_buffer_desc passwd;
186
+ gss_OID_set_desc mechOidSet;
187
+
188
+ if (smb2->use_cached_creds) {
189
+ /* Validate the parameters */
190
+ if (domain == NULL || password == NULL) {
191
+ smb2_set_error(smb2, "domain and password must be set while using krb5cc mode");
192
+ return NULL;
193
+ }
194
+ }
195
+
196
+ auth_data = calloc(1, sizeof(struct private_auth_data));
197
+ if (auth_data == NULL) {
198
+ smb2_set_error(smb2, "Failed to allocate private_auth_data");
199
+ krb5_free_auth_data(auth_data);
200
+ return NULL;
201
+ }
202
+ auth_data->context = GSS_C_NO_CONTEXT;
203
+
204
+ /* strip any port off server */
205
+ strncpy(user_principal, server, sizeof(user_principal) - 1);
206
+ user_principal[sizeof(user_principal) - 1] = '\0';
207
+ spos = strchr(user_principal, ':');
208
+ if (spos) {
209
+ *spos = '\0';
210
+ }
211
+ /* form spn cifs/hostname.domain */
212
+ if (asprintf(&auth_data->g_server, "cifs@%s", user_principal) < 0) {
213
+ smb2_set_error(smb2, "Failed to allocate server string");
214
+ krb5_free_auth_data(auth_data);
215
+ return NULL;
216
+ }
217
+
218
+ target.value = auth_data->g_server;
219
+ target.length = strlen(auth_data->g_server);
220
+
221
+ maj = gss_import_name(&min, &target, GSS_C_NT_HOSTBASED_SERVICE,
222
+ &auth_data->target_name);
223
+
224
+ if (maj != GSS_S_COMPLETE) {
225
+ krb5_set_gss_error(smb2, "gss_import_name", maj, min);
226
+ krb5_free_auth_data(auth_data);
227
+ return NULL;
228
+ }
229
+
230
+ /* if there is a delegated credential in the context, just use that
231
+ */
232
+ if (smb2->cred_handle) {
233
+ auth_data->cred = smb2->cred_handle;
234
+ smb2->cred_handle = NULL;
235
+ return auth_data;
236
+ }
237
+
238
+ /* using cached-creds with a memory-cache means the password supplied as
239
+ * a parameter is used to setup the ticket, as opposed to having to do
240
+ * a "kinit user" in the environment. this cache does not persist
241
+ */
242
+ if (smb2->use_cached_creds) {
243
+ memset(&user_principal[0], 0, sizeof(user_principal));
244
+ if (snprintf(&user_principal[0], sizeof(user_principal),
245
+ "%s@%s", user_name, domain) < 0) {
246
+ smb2_set_error(smb2, "Failed to generate user principal");
247
+ return NULL;
248
+ }
249
+ user.value = discard_const(user_principal);
250
+ user.length = strlen(user_principal);
251
+ } else {
252
+ user.value = discard_const(user_name);
253
+ user.length = strlen(user_name);
254
+ }
255
+
256
+ /* create a name for the user */
257
+ maj = gss_import_name(&min, &user, GSS_C_NT_USER_NAME,
258
+ &auth_data->user_name);
259
+
260
+ if (maj != GSS_S_COMPLETE) {
261
+ krb5_set_gss_error(smb2, "gss_import_name", maj, min);
262
+ krb5_free_auth_data(auth_data);
263
+ return NULL;
264
+ }
265
+
266
+ /* TODO: the proper mechanism (SPNEGO vs NTLM vs KRB5) should be
267
+ * selected based on the SMB negotiation flags */
268
+ #ifdef __APPLE__
269
+ auth_data->mech_type = auth_data->use_spnego ? GSS_SPNEGO_MECHANISM : GSS_KRB5_MECHANISM;
270
+ #else
271
+ auth_data->mech_type = auth_data->use_spnego ? &gss_mech_spnego : gss_mech_krb5;
272
+ #endif
273
+
274
+ /* Create creds for the user */
275
+ mechOidSet.count = 1;
276
+ mechOidSet.elements = discard_const(auth_data->mech_type);
277
+
278
+ auth_data->cred = GSS_C_NO_CREDENTIAL;
279
+
280
+ if (smb2->use_cached_creds) {
281
+ krb5_error_code ret = 0;
282
+ const char *cname = NULL;
283
+
284
+ /* krb5 cache management */
285
+ ret = krb5_init_context(&auth_data->krb5_cctx);
286
+ if (ret) {
287
+ smb2_set_error(smb2, "Failed to initialize krb5 context - %s",
288
+ krb5_get_error_message(auth_data->krb5_cctx, ret));
289
+ return NULL;
290
+ }
291
+ ret = krb5_cc_new_unique(auth_data->krb5_cctx, "MEMORY", NULL, &auth_data->krb5_Ccache);
292
+ if (ret != 0) {
293
+ smb2_set_error(smb2, "Failed to create krb5 credentials cache - %s",
294
+ krb5_get_error_message(auth_data->krb5_cctx, ret));
295
+ krb5_free_auth_data(auth_data);
296
+ return NULL;
297
+ }
298
+ cname = krb5_cc_get_name(auth_data->krb5_cctx, auth_data->krb5_Ccache);
299
+ if (cname == NULL) {
300
+ smb2_set_error(smb2, "Failed to retrieve the credentials cache name");
301
+ krb5_free_auth_data(auth_data);
302
+ return NULL;
303
+ }
304
+
305
+ maj = gss_krb5_ccache_name(&min, cname, NULL);
306
+ if (maj != GSS_S_COMPLETE) {
307
+ krb5_set_gss_error(smb2, "gss_krb5_ccache_name", maj, min);
308
+ krb5_free_auth_data(auth_data);
309
+ return NULL;
310
+ }
311
+
312
+ nc_password = strdup(password);
313
+ passwd.value = nc_password;
314
+ passwd.length = strlen(nc_password);
315
+
316
+ maj = gss_acquire_cred_with_password(&min, auth_data->user_name, &passwd, 0,
317
+ &mechOidSet, GSS_C_INITIATE, &auth_data->cred,
318
+ NULL, NULL);
319
+ } else {
320
+ maj = gss_acquire_cred(&min, auth_data->user_name, 0,
321
+ &mechOidSet, GSS_C_INITIATE, &auth_data->cred,
322
+ NULL, NULL);
323
+ }
324
+
325
+ if (maj != GSS_S_COMPLETE) {
326
+ krb5_set_gss_error(smb2, "gss_acquire_cred (client)", maj, min);
327
+ krb5_free_auth_data(auth_data);
328
+ return NULL;
329
+ }
330
+ #ifndef __APPLE__ /* gss_set_neg_mechs is not defined on macOS/iOS. */
331
+ #ifdef SMB2_USER_KRB5_FOR_NTLLM
332
+ if (smb2->sec != SMB2_SEC_UNDEFINED) {
333
+ gss_OID_set_desc wantMech;
334
+
335
+ wantMech.count = 1;
336
+ if (smb2->sec == SMB2_SEC_KRB5) {
337
+ wantMech.elements = discard_const(&spnego_mech_krb5);
338
+ } else if (smb2->sec == SMB2_SEC_NTLMSSP) {
339
+ wantMech.elements = discard_const(&spnego_mech_ntlmssp);
340
+ }
341
+
342
+ maj = gss_set_neg_mechs(&min, auth_data->cred, &wantMech);
343
+ if (GSS_ERROR(maj)) {
344
+ krb5_set_gss_error(smb2, "gss_set_neg_mechs", maj, min);
345
+ krb5_free_auth_data(auth_data);
346
+ return NULL;
347
+ }
348
+ }
349
+ #endif
350
+ #endif
351
+
352
+ if (nc_password) {
353
+ free(nc_password);
354
+ nc_password = NULL;
355
+ }
356
+
357
+ return auth_data;
358
+ }
359
+
360
+ int
361
+ krb5_session_get_session_key(struct smb2_context *smb2,
362
+ struct private_auth_data *auth_data)
363
+ {
364
+ /* Get the Session Key */
365
+ uint32_t gssMajor, gssMinor;
366
+ gss_buffer_set_t sessionKey = NULL;
367
+
368
+ gssMajor = gss_inquire_sec_context_by_oid(
369
+ &gssMinor,
370
+ auth_data->context,
371
+ GSS_C_INQ_SSPI_SESSION_KEY,
372
+ &sessionKey);
373
+ if (gssMajor != GSS_S_COMPLETE) {
374
+ krb5_set_gss_error(smb2, "gss_inquire_sec_context_by_oid",
375
+ gssMajor, gssMinor);
376
+ return -1;
377
+ }
378
+
379
+ /* The key is in element 0 and the key type OID is in element 1 */
380
+ if (!sessionKey ||
381
+ (sessionKey->count < 1) ||
382
+ !sessionKey->elements[0].value ||
383
+ (0 == sessionKey->elements[0].length)) {
384
+ smb2_set_error(smb2, "Invalid session key");
385
+ return -1;
386
+ }
387
+
388
+ smb2->session_key = (uint8_t *) malloc(sessionKey->elements[0].length);
389
+ if (smb2->session_key == NULL) {
390
+ smb2_set_error(smb2, "Failed to allocate SessionKey");
391
+ return -1;
392
+ }
393
+ memset(smb2->session_key, 0, sessionKey->elements[0].length);
394
+ memcpy(smb2->session_key, sessionKey->elements[0].value,
395
+ sessionKey->elements[0].length);
396
+ smb2->session_key_size = sessionKey->elements[0].length;
397
+
398
+ gss_release_buffer_set(&gssMinor, &sessionKey);
399
+
400
+ return 0;
401
+ }
402
+
403
+ int
404
+ krb5_session_request(struct smb2_context *smb2,
405
+ struct private_auth_data *auth_data,
406
+ unsigned char *buf, int len)
407
+ {
408
+ uint32_t maj, min;
409
+ gss_buffer_desc *input_token = NULL;
410
+ gss_buffer_desc token = GSS_C_EMPTY_BUFFER;
411
+
412
+ if (buf) {
413
+ /* release the previous token */
414
+ gss_release_buffer(&min, &auth_data->output_token);
415
+ auth_data->output_token.length = 0;
416
+ auth_data->output_token.value = NULL;
417
+
418
+ token.value = buf;
419
+ token.length = len;
420
+ input_token = &token;
421
+ }
422
+
423
+ /* TODO return -errno instead of just -1 */
424
+ /* NOTE: this call is not async, a helper thread should be used if that
425
+ * is an issue */
426
+ auth_data->req_flags = GSS_C_SEQUENCE_FLAG
427
+ | GSS_C_MUTUAL_FLAG
428
+ /* setting this flag gives a delegatable ticket
429
+ * without server doing s4u2proxy */
430
+ /*| GSS_C_DELEG_FLAG */
431
+ | GSS_C_REPLAY_FLAG;
432
+
433
+ maj = gss_init_sec_context(&min, auth_data->cred,
434
+ &auth_data->context,
435
+ auth_data->target_name,
436
+ discard_const(auth_data->mech_type),
437
+ auth_data->req_flags,
438
+ GSS_C_INDEFINITE,
439
+ GSS_C_NO_CHANNEL_BINDINGS,
440
+ input_token,
441
+ NULL,
442
+ &auth_data->output_token,
443
+ NULL,
444
+ NULL);
445
+
446
+ /* GSS_C_MUTUAL_FLAG expects the acceptor to send a token so
447
+ * a second call to gss_init_sec_context is required to complete the session.
448
+ * A second call is required even if the first call returns GSS_S_COMPLETE
449
+ */
450
+ if (maj & GSS_S_CONTINUE_NEEDED) {
451
+ return 0;
452
+ }
453
+ if (GSS_ERROR(maj)) {
454
+ krb5_set_gss_error(smb2, "gss_init_sec_context", maj, min);
455
+ return -1;
456
+ }
457
+
458
+ return 0;
459
+ }
460
+
461
+ #ifndef __APPLE__
462
+ static OM_uint32
463
+ establish_contexts(struct smb2_context *smb2,
464
+ gss_OID imech,
465
+ gss_cred_id_t icred, gss_cred_id_t acred,
466
+ gss_name_t tname, OM_uint32 flags,
467
+ gss_ctx_id_t *ictx,
468
+ gss_ctx_id_t *actx,
469
+ gss_name_t *src_name,
470
+ gss_OID *amech,
471
+ gss_cred_id_t *deleg_cred)
472
+ {
473
+ OM_uint32 minor, imaj, amaj;
474
+ gss_buffer_desc itok, atok;
475
+
476
+ *ictx = *actx = GSS_C_NO_CONTEXT;
477
+ imaj = amaj = GSS_S_CONTINUE_NEEDED;
478
+ itok.value = atok.value = NULL;
479
+ itok.length = atok.length = 0;
480
+ while (1) {
481
+ (void)gss_release_buffer(&minor, &itok);
482
+ imaj = gss_init_sec_context(&minor, icred, ictx, tname, imech, flags,
483
+ GSS_C_INDEFINITE, GSS_C_NO_CHANNEL_BINDINGS, &atok, NULL, &itok,
484
+ NULL, NULL);
485
+ if (GSS_ERROR(imaj)) {
486
+ krb5_set_gss_error(smb2, "gss_init_sec_context (est)", imaj, minor);
487
+ break;
488
+ }
489
+ if (amaj == GSS_S_COMPLETE)
490
+ break;
491
+
492
+ (void)gss_release_buffer(&minor, &atok);
493
+ amaj = gss_accept_sec_context(&minor, actx, acred, &itok, GSS_C_NO_CHANNEL_BINDINGS,
494
+ src_name, amech, &atok, NULL, NULL,
495
+ deleg_cred);
496
+ if (GSS_ERROR(amaj)) {
497
+ krb5_set_gss_error(smb2, "gss_accept_sec_context (est)", amaj, minor);
498
+ break;
499
+ }
500
+ (void)gss_release_buffer(&minor, &itok);
501
+ if (imaj == GSS_S_COMPLETE)
502
+ break;
503
+ }
504
+
505
+ (void)gss_release_buffer(&minor, &itok);
506
+ (void)gss_release_buffer(&minor, &atok);
507
+ return imaj | amaj;
508
+ }
509
+
510
+ static OM_uint32
511
+ init_accept_sec_context(struct smb2_context *smb2,
512
+ gss_OID mech,
513
+ gss_cred_id_t claimant_cred_handle,
514
+ gss_cred_id_t verifier_cred_handle,
515
+ gss_cred_id_t *deleg_cred_handle)
516
+ {
517
+ OM_uint32 major, minor, flags;
518
+ gss_name_t source_name = GSS_C_NO_NAME, target_name = GSS_C_NO_NAME;
519
+ gss_ctx_id_t initiator_context, acceptor_context;
520
+
521
+ *deleg_cred_handle = GSS_C_NO_CREDENTIAL;
522
+
523
+ major = gss_inquire_cred(&minor, verifier_cred_handle, &target_name, NULL,
524
+ NULL, NULL);
525
+ if (GSS_ERROR(major)) {
526
+ krb5_set_gss_error(smb2, "gss_inquire_cred (est)", major, minor);
527
+ }
528
+
529
+ flags = GSS_C_REPLAY_FLAG | GSS_C_SEQUENCE_FLAG;
530
+ establish_contexts(smb2, mech,
531
+ claimant_cred_handle, verifier_cred_handle,
532
+ target_name, flags,
533
+ &initiator_context,
534
+ &acceptor_context,
535
+ &source_name,
536
+ NULL,
537
+ deleg_cred_handle);
538
+
539
+ (void)gss_release_name(&minor, &source_name);
540
+ (void)gss_release_name(&minor, &target_name);
541
+ (void)gss_delete_sec_context(&minor, &initiator_context, NULL);
542
+ (void)gss_delete_sec_context(&minor, &acceptor_context, NULL);
543
+ return major;
544
+ }
545
+ #endif
546
+
547
+ struct private_auth_data *
548
+ krb5_init_server_client_cred(struct smb2_server *server, struct smb2_context *smb2, const char *password)
549
+ {
550
+ struct private_auth_data *auth_data;
551
+ char user_principal[1024];
552
+ gss_buffer_desc name_buf;
553
+ gss_cred_usage_t cred_usage;
554
+ uint32_t maj, min;
555
+ char *spos;
556
+ gss_OID mech = GSS_C_NO_OID;
557
+
558
+ #ifndef __APPLE__
559
+ if (smb2->sec != SMB2_SEC_KRB5) {
560
+ mech = discard_const(gss_mech_krb5);
561
+ } else {
562
+ mech = GSS_C_NO_OID;
563
+ }
564
+ #endif
565
+ gss_OID_set mechs = GSS_C_NO_OID_SET;
566
+ gss_OID_set_desc mechlist;
567
+
568
+ if (mech != GSS_C_NO_OID) {
569
+ mechlist.count = 1;
570
+ mechlist.elements = mech;
571
+ mechs = &mechlist;
572
+ }
573
+
574
+ auth_data = calloc(1, sizeof(struct private_auth_data));
575
+ if (auth_data == NULL) {
576
+ smb2_set_error(smb2, "Failed to allocate private_auth_data");
577
+ return NULL;
578
+ }
579
+ auth_data->context = GSS_C_NO_CONTEXT;
580
+ auth_data->get_proxy_cred = server->proxy_authentication;
581
+
582
+ /* strip any port off server host */
583
+ strncpy(user_principal, server->hostname, sizeof(user_principal) - 1);
584
+ user_principal[sizeof(user_principal) - 1] = '\0';
585
+ spos = strchr(user_principal, ':');
586
+ if (spos) {
587
+ *spos = '\0';
588
+ }
589
+ /* form spn cifs/hostname, gss will append realm itself */
590
+ if (asprintf(&auth_data->g_server, "cifs@%s", user_principal) < 0) {
591
+ smb2_set_error(smb2, "Failed to allocate server string");
592
+ return NULL;
593
+ }
594
+ name_buf.value = auth_data->g_server;
595
+ name_buf.length = strlen(name_buf.value) + 1;
596
+
597
+ maj = gss_import_name(&min, &name_buf,
598
+ GSS_C_NT_HOSTBASED_SERVICE, &auth_data->target_name);
599
+
600
+ if (maj != GSS_S_COMPLETE) {
601
+ krb5_set_gss_error(smb2, "gss_import_name", maj, min);
602
+ return NULL;
603
+ }
604
+
605
+ if (auth_data->get_proxy_cred) {
606
+ /* do constrained delegation */
607
+ cred_usage = GSS_C_BOTH;
608
+ } else {
609
+ cred_usage = GSS_C_ACCEPT;
610
+ }
611
+ #ifndef __APPLE__
612
+ if (server->auth_data && ((struct private_auth_data *)server->auth_data)->keytab) {
613
+ struct private_auth_data *server_auth_data;
614
+ char keytab_path[256];
615
+ char ccache_path[256];
616
+ const char *cctype, *ccname;
617
+ gss_key_value_element_desc kve[2];
618
+ gss_key_value_set_desc kvd;
619
+ int ret;
620
+
621
+ server_auth_data = (struct private_auth_data *)server->auth_data;
622
+
623
+ ret = krb5_kt_get_name(server_auth_data->krb5_cctx,
624
+ server_auth_data->keytab, keytab_path, sizeof(keytab_path));
625
+ if (ret) {
626
+ smb2_set_error(smb2, "krb5_kt_get_name: %d", ret);
627
+ return NULL;
628
+ }
629
+
630
+ cctype = krb5_cc_get_type(server_auth_data->krb5_cctx, server_auth_data->krb5_Ccache);
631
+ ccname = krb5_cc_get_name(server_auth_data->krb5_cctx, server_auth_data->krb5_Ccache);
632
+
633
+ if (!cctype || !ccname) {
634
+ smb2_set_error(smb2, "Can't get ccache name");
635
+ return NULL;
636
+ }
637
+
638
+ snprintf(ccache_path, sizeof(ccache_path), "%s:%s", cctype, ccname);
639
+
640
+ /* set the keytable and cache to what we used when server started */
641
+ kve[0].key = "keytab";
642
+ kve[0].value = keytab_path;
643
+
644
+ kve[1].key = "ccache";
645
+ kve[1].value = ccache_path;
646
+
647
+ kvd.count = 2;
648
+ kvd.elements = kve;
649
+
650
+ maj = gss_acquire_cred_from(&min,
651
+ auth_data->target_name,
652
+ GSS_C_INDEFINITE,
653
+ mechs,
654
+ cred_usage,
655
+ &kvd,
656
+ &auth_data->cred,
657
+ NULL, NULL);
658
+ } else
659
+ #endif
660
+ {
661
+ maj = gss_acquire_cred(&min,
662
+ smb2->sec == SMB2_SEC_NTLMSSP ?
663
+ GSS_C_NO_NAME : auth_data->target_name,
664
+ GSS_C_INDEFINITE,
665
+ mechs,
666
+ cred_usage,
667
+ &auth_data->cred,
668
+ NULL, NULL);
669
+ }
670
+ if (GSS_ERROR(maj)) {
671
+ krb5_set_gss_error(smb2, "gss_acquire_cred (server)", maj, min);
672
+ return NULL;
673
+ }
674
+
675
+ return auth_data;
676
+ }
677
+
678
+ int
679
+ krb5_session_reply(struct smb2_context *smb2,
680
+ struct private_auth_data *auth_data,
681
+ unsigned char *buf, int len,
682
+ int *more_processing_needed)
683
+ {
684
+ uint32_t maj, min;
685
+ gss_buffer_desc *input_token = NULL;
686
+ gss_buffer_desc token = GSS_C_EMPTY_BUFFER;
687
+ gss_cred_id_t ret_delegated_cred_handle;
688
+
689
+ OM_uint32 ret_timefor;
690
+ OM_uint32 ret_flags = 0;
691
+
692
+ *more_processing_needed = 0;
693
+
694
+ if (auth_data->output_token.value) {
695
+ gss_release_buffer(&min, &auth_data->output_token);
696
+ auth_data->output_token.length = 0;
697
+ auth_data->output_token.value = NULL;
698
+ }
699
+
700
+ /* accept client context
701
+ */
702
+ token.value = buf;
703
+ token.length = len;
704
+ input_token = &token;
705
+
706
+ maj = gss_accept_sec_context(&min,
707
+ &auth_data->context,
708
+ auth_data->cred,
709
+ input_token,
710
+ GSS_C_NO_CHANNEL_BINDINGS,
711
+ &auth_data->user_name,
712
+ NULL,
713
+ &auth_data->output_token,
714
+ &ret_flags,
715
+ &ret_timefor,
716
+ &ret_delegated_cred_handle);
717
+
718
+ if (maj & GSS_S_CONTINUE_NEEDED) {
719
+ *more_processing_needed = 1;
720
+ return 0;
721
+ }
722
+
723
+ if (GSS_ERROR(maj)) {
724
+ krb5_set_gss_error(smb2, "gss_accept_sec_context", maj, min);
725
+ return -1;
726
+ }
727
+
728
+ /* client name is in user@domain format, so set that into our context
729
+ */
730
+ maj = gss_display_name(&min, auth_data->user_name, &token, NULL);
731
+ if (GSS_ERROR(maj)) {
732
+ krb5_set_gss_error(smb2, "gss_display_name", maj, min);
733
+ return -1;
734
+ }
735
+
736
+ if (token.length && (char*)token.value) {
737
+ char *user;
738
+ char *dpos;
739
+ int namelen = token.length;;
740
+
741
+ user = malloc(namelen + 1);
742
+ if (!user) {
743
+ smb2_set_error(smb2, "can not alloc name buffer");
744
+ return -1;
745
+ }
746
+ memcpy(user, (char*)token.value, namelen);
747
+ user[namelen] = 0;
748
+
749
+ dpos = strchr(user, '@');
750
+ if (dpos) {
751
+ *dpos++ = '\0';
752
+ }
753
+
754
+ smb2_set_user(smb2, user);
755
+ smb2_set_domain(smb2, dpos ? dpos : "");
756
+
757
+ gss_release_buffer(&min, &token);
758
+
759
+ /* strip domain off user for s4u2 */
760
+ token.value = user;
761
+ token.length = strlen(user);
762
+
763
+ gss_release_name(&min, &auth_data->user_name);
764
+ maj = gss_import_name(&min, &token, GSS_C_NT_USER_NAME, &auth_data->user_name);
765
+ if (GSS_ERROR(maj)) {
766
+ krb5_set_gss_error(smb2, "gss_import_name", maj, min);
767
+ return -1;
768
+ }
769
+
770
+ free(user);
771
+ }
772
+
773
+ if (auth_data->get_proxy_cred && (!(ret_flags & GSS_C_DELEG_FLAG) ||
774
+ (ret_delegated_cred_handle == GSS_C_NO_CREDENTIAL))) {
775
+ /* did not got a proxy credential when accepting the
776
+ * the client context, so attempt an s4u2self
777
+ * with user-name to get one
778
+ */
779
+ #ifdef __APPLE__
780
+ smb2_set_error(smb2, "Apple has no way to proxy credentials");
781
+ return -1;
782
+ #else
783
+ gss_cred_id_t user_cred_handle = GSS_C_NO_CREDENTIAL;
784
+ gss_OID mech;
785
+ OM_uint32 xmin;
786
+
787
+ gss_OID_set mechs = GSS_C_NO_OID_SET;
788
+ gss_OID_set_desc mechlist;
789
+
790
+ mech = auth_data->use_spnego ?
791
+ discard_const(&gss_mech_spnego) : discard_const(gss_mech_krb5);
792
+
793
+ if (mech != GSS_C_NO_OID) {
794
+ mechlist.count = 1;
795
+ mechlist.elements = discard_const(mech);
796
+ mechs = &mechlist;
797
+ }
798
+ maj = gss_acquire_cred_impersonate_name(&min,
799
+ auth_data->cred,
800
+ auth_data->user_name,
801
+ GSS_C_INDEFINITE,
802
+ mechs,
803
+ GSS_C_INITIATE,
804
+ &user_cred_handle,
805
+ NULL,
806
+ NULL);
807
+
808
+ if (maj != GSS_S_COMPLETE) {
809
+ krb5_set_gss_error(smb2, "gss_acquire_cred_impersonate_name", maj, min);
810
+ return -1;
811
+ }
812
+ maj = init_accept_sec_context(smb2, mech,
813
+ user_cred_handle, auth_data->cred,
814
+ &ret_delegated_cred_handle);
815
+
816
+ (void)gss_release_cred(&xmin, &user_cred_handle);
817
+
818
+ if (maj != GSS_S_COMPLETE) {
819
+ krb5_set_gss_error(smb2, "init_accept_sec_context (impersonate)", maj, min);
820
+ return -1;
821
+ }
822
+ #endif
823
+ }
824
+ /* if the client credential is delegatable and the client is pass-through
825
+ * save the client's cred for use in a proxy client
826
+ */
827
+ if ((ret_flags & GSS_C_DELEG_FLAG) && (ret_delegated_cred_handle)) {
828
+ if (smb2->passthrough) {
829
+ smb2->cred_handle = ret_delegated_cred_handle;
830
+ } else {
831
+ smb2->cred_handle = NULL;
832
+ maj = gss_release_cred(&min, &ret_delegated_cred_handle);
833
+ }
834
+ }
835
+ return 0;
836
+ }
837
+
838
+
839
+ int
840
+ krb5_renew_server_credentials(struct smb2_server *server)
841
+ {
842
+ struct private_auth_data *auth_data = server->auth_data;
843
+ int ret;
844
+
845
+ if (!auth_data || !auth_data->keytab) {
846
+ return 0;
847
+ }
848
+
849
+ do { /* try */
850
+ if (!auth_data) {
851
+ ret = -1;
852
+ break;
853
+ }
854
+ /* this is the equivalent of "kinit -kt keytab_path -c ccache_path principal"
855
+ */
856
+ ret = krb5_get_init_creds_keytab(auth_data->krb5_cctx, &auth_data->server_cred,
857
+ auth_data->principal, auth_data->keytab, 0, NULL, NULL);
858
+ if (ret) {
859
+ snprintf(server->error, sizeof(server->error), "Can't init creds with keytab: %d", ret);
860
+ break;
861
+ }
862
+ ret = krb5_cc_store_cred(auth_data->krb5_cctx, auth_data->krb5_Ccache, &auth_data->server_cred);
863
+ if (ret) {
864
+ snprintf(server->error, sizeof(server->error), "Can't store creds: %d", ret);
865
+ break;
866
+ }
867
+ }
868
+ while (0); /* catch */
869
+
870
+ return ret;
871
+ }
872
+
873
+ int
874
+ krb5_init_server_credentials(struct smb2_server *server, const char *keytab_path)
875
+ {
876
+ struct private_auth_data *auth_data;
877
+ gss_buffer_desc name;
878
+ char hostname[128];
879
+ char principal_name[256];
880
+ char *spos;
881
+ OM_uint32 maj, min;
882
+ int ret = -1;
883
+
884
+ server->error[0] = '\0';
885
+
886
+ /* without a key table path, there is no need for this as the default one will
887
+ * be used in gss_acquire_cred and the initial creds will have to be done via kinit
888
+ */
889
+ if (!server || !keytab_path || !keytab_path[0]) {
890
+ return 0;
891
+ }
892
+
893
+ do { // try
894
+ auth_data = calloc(1, sizeof(struct private_auth_data));
895
+ if (auth_data == NULL) {
896
+ snprintf(server->error, sizeof(server->error), "Can't alloc auth_data");
897
+ break;
898
+ }
899
+
900
+ /* strip any port off server host */
901
+ strncpy(hostname, server->hostname, sizeof(hostname) - 1);
902
+ hostname[sizeof(hostname) - 1] = '\0';
903
+ spos = strchr(hostname, ':');
904
+ if (spos) {
905
+ *spos = '\0';
906
+ }
907
+
908
+ snprintf(principal_name, sizeof(principal_name), "cifs/%s", hostname);
909
+
910
+ /* form spn cifs/hostname.domain */
911
+ if (asprintf(&auth_data->g_server, "cifs@%s", hostname) < 0) {
912
+ snprintf(server->error, sizeof(server->error),
913
+ "Failed to allocate server string");
914
+ ret = -1;
915
+ break;
916
+ }
917
+
918
+ name.value = auth_data->g_server;
919
+ name.length = strlen(auth_data->g_server);
920
+
921
+ maj = gss_import_name(&min, &name, GSS_C_NT_HOSTBASED_SERVICE,
922
+ &auth_data->target_name);
923
+
924
+ if (maj != GSS_S_COMPLETE) {
925
+ snprintf(server->error, sizeof(server->error),
926
+ "gss_import_name %u %u", maj, min);
927
+ ret = -1;
928
+ break;
929
+ }
930
+
931
+ ret = krb5_init_context(&auth_data->krb5_cctx);
932
+ if (ret) {
933
+ snprintf(server->error, sizeof(server->error),
934
+ "Can't init krb5 context: %d", ret);
935
+ break;
936
+ }
937
+
938
+ ret = krb5_parse_name(auth_data->krb5_cctx, principal_name, &auth_data->principal);
939
+ if (ret) {
940
+ snprintf(server->error, sizeof(server->error),
941
+ "Can't parse principal name: %d", ret);
942
+ break;
943
+ }
944
+
945
+ ret = krb5_kt_resolve(auth_data->krb5_cctx, keytab_path, &auth_data->keytab);
946
+ if (ret) {
947
+ snprintf(server->error, sizeof(server->error),
948
+ "Can't resolve krb5 key table: %d", ret);
949
+ break;
950
+ }
951
+
952
+ if (1) {
953
+ const char *cname;
954
+
955
+ /* use a private memory cache for server credentials instead of default, so a client
956
+ * can kinit on the same machine and not mess up our creds */
957
+
958
+ ret = krb5_cc_new_unique(auth_data->krb5_cctx, "MEMORY", NULL, &auth_data->krb5_Ccache);
959
+ if (ret != 0) {
960
+ snprintf(server->error, sizeof(server->error),
961
+ "Failed to create krb5 credentials cache");
962
+ break;
963
+ }
964
+
965
+ ret = krb5_cc_initialize(auth_data->krb5_cctx, auth_data->krb5_Ccache, auth_data->principal);
966
+ if (ret != 0) {
967
+ snprintf(server->error, sizeof(server->error),
968
+ "Failed to initialze krb5 credentials cache");
969
+ break;
970
+ }
971
+
972
+ cname = krb5_cc_get_name(auth_data->krb5_cctx, auth_data->krb5_Ccache);
973
+ if (cname == NULL) {
974
+ snprintf(server->error, sizeof(server->error),
975
+ "Failed to retrieve the credentials cache name");
976
+ break;
977
+ }
978
+
979
+ maj = gss_krb5_ccache_name(&min, cname, NULL);
980
+ if (maj != GSS_S_COMPLETE) {
981
+ snprintf(server->error, sizeof(server->error),
982
+ "gss_krb5_ccache_name %u %u", maj, min);
983
+ ret = -1;
984
+ break;
985
+ }
986
+ } else {
987
+ /* use default cache */
988
+ ret = krb5_cc_default(auth_data->krb5_cctx, &auth_data->krb5_Ccache);
989
+ if (ret) {
990
+ snprintf(server->error, sizeof(server->error),
991
+ "Can't get default ccache: %d", ret);
992
+ break;
993
+ }
994
+ }
995
+
996
+ ret = krb5_cc_initialize(auth_data->krb5_cctx, auth_data->krb5_Ccache, auth_data->principal);
997
+ if (ret != 0) {
998
+ snprintf(server->error, sizeof(server->error),
999
+ "Failed to initialze krb5 credentials cache: %d", ret);
1000
+ break;
1001
+ }
1002
+
1003
+ server->auth_data = auth_data;
1004
+ }
1005
+ while (0); /* catch */
1006
+
1007
+ if (ret) {
1008
+ if (auth_data) {
1009
+ krb5_free_auth_data(auth_data);
1010
+ }
1011
+ server->auth_data = NULL;
1012
+ } else {
1013
+ server->auth_data = auth_data;
1014
+ }
1015
+ return ret;
1016
+ }
1017
+
1018
+
1019
+ void
1020
+ krb5_free_server_credentials(struct smb2_server *server)
1021
+ {
1022
+ if (server && server->auth_data) {
1023
+ krb5_free_auth_data(server->auth_data);
1024
+ server->auth_data = NULL;
1025
+ }
1026
+ }
1027
+
1028
+ int
1029
+ krb5_get_output_token_length(struct private_auth_data *auth_data)
1030
+ {
1031
+ return auth_data->output_token.length;
1032
+ }
1033
+
1034
+ unsigned char *
1035
+ krb5_get_output_token_buffer(struct private_auth_data *auth_data)
1036
+ {
1037
+ return auth_data->output_token.value;
1038
+ }
1039
+
1040
+ int
1041
+ krb5_can_do_ntlmssp(void)
1042
+ {
1043
+ #ifndef __APPLE__
1044
+ gss_OID_set mech_attrs;
1045
+ gss_OID_set known_mech_attrs;
1046
+ uint32_t maj, min;
1047
+
1048
+ gss_OID mech = discard_const(&spnego_mech_ntlmssp);
1049
+
1050
+ /* if we can acquire an initiator context with an ntlmssp mechanism
1051
+ * it means krb5 has the ntlmssp plugin installed and we can use
1052
+ * krb5 for all authentication purposes
1053
+ */
1054
+ maj = gss_inquire_attrs_for_mech(&min,
1055
+ mech,
1056
+ &mech_attrs,
1057
+ &known_mech_attrs);
1058
+
1059
+ if (GSS_ERROR(maj)) {
1060
+ krb5_set_gss_error(NULL, "gss_inquire_attrs_for_mech (ntlmssp cap check)", maj, min);
1061
+ return 0;
1062
+ }
1063
+
1064
+ gss_release_oid_set(&min, &mech_attrs);
1065
+ gss_release_oid_set(&min, &known_mech_attrs);
1066
+ return 1;
1067
+ #else
1068
+ return 0;
1069
+ #endif
1070
+ }
1071
+
1072
+ #endif /* HAVE_LIBKRB5 */