sing-tun 0.9.6__tar.gz

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 (234) hide show
  1. sing_tun-0.9.6/CMakeLists.txt +29 -0
  2. sing_tun-0.9.6/LICENSE +674 -0
  3. sing_tun-0.9.6/MANIFEST.in +11 -0
  4. sing_tun-0.9.6/PKG-INFO +160 -0
  5. sing_tun-0.9.6/README.md +143 -0
  6. sing_tun-0.9.6/UPSTREAM_COMMIT +1 -0
  7. sing_tun-0.9.6/UPSTREAM_TREE.json +722 -0
  8. sing_tun-0.9.6/UPSTREAM_VERSION +1 -0
  9. sing_tun-0.9.6/VERSION +1 -0
  10. sing_tun-0.9.6/adapter/config.go +169 -0
  11. sing_tun-0.9.6/adapter/device.go +153 -0
  12. sing_tun-0.9.6/adapter/engine.go +311 -0
  13. sing_tun-0.9.6/adapter/engine_test.go +357 -0
  14. sing_tun-0.9.6/adapter/forward.go +268 -0
  15. sing_tun-0.9.6/adapter/framing_darwin.go +15 -0
  16. sing_tun-0.9.6/adapter/framing_other.go +6 -0
  17. sing_tun-0.9.6/adapter/go.mod +37 -0
  18. sing_tun-0.9.6/adapter/go.sum +51 -0
  19. sing_tun-0.9.6/adapter/host_darwin.go +25 -0
  20. sing_tun-0.9.6/adapter/host_linux.go +58 -0
  21. sing_tun-0.9.6/adapter/host_linux_test.go +35 -0
  22. sing_tun-0.9.6/adapter/host_other.go +8 -0
  23. sing_tun-0.9.6/adapter/main.go +177 -0
  24. sing_tun-0.9.6/adapter/packet.go +50 -0
  25. sing_tun-0.9.6/adapter/stack.go +34 -0
  26. sing_tun-0.9.6/licenses/GCC_GPLv3.txt +674 -0
  27. sing_tun-0.9.6/licenses/GCC_RUNTIME_EXCEPTION.txt +73 -0
  28. sing_tun-0.9.6/licenses/Wintun_LICENSE.txt +84 -0
  29. sing_tun-0.9.6/licenses/Wintun_loader_LICENSE.txt +21 -0
  30. sing_tun-0.9.6/licenses/mingw-w64_COPYING.txt +43 -0
  31. sing_tun-0.9.6/licenses/tun2socks-python_LICENSE.txt +21 -0
  32. sing_tun-0.9.6/licenses/winpthreads_COPYING.txt +57 -0
  33. sing_tun-0.9.6/pyproject.toml +21 -0
  34. sing_tun-0.9.6/sample/multiprocessing_child.py +72 -0
  35. sing_tun-0.9.6/sample/sample.py +45 -0
  36. sing_tun-0.9.6/scripts/collect_licenses.py +121 -0
  37. sing_tun-0.9.6/scripts/install-go-from-mod.sh +87 -0
  38. sing_tun-0.9.6/scripts/sync-sing-tun.py +865 -0
  39. sing_tun-0.9.6/scripts/validate_distributions.py +180 -0
  40. sing_tun-0.9.6/scripts/verify_source.py +54 -0
  41. sing_tun-0.9.6/setup.cfg +4 -0
  42. sing_tun-0.9.6/setup.py +160 -0
  43. sing_tun-0.9.6/sing-tun-go/.github/renovate.json +19 -0
  44. sing_tun-0.9.6/sing-tun-go/.github/update_dependencies.sh +5 -0
  45. sing_tun-0.9.6/sing-tun-go/.github/workflows/lint.yml +71 -0
  46. sing_tun-0.9.6/sing-tun-go/.github/workflows/test.yml +106 -0
  47. sing_tun-0.9.6/sing-tun-go/.gitignore +8 -0
  48. sing_tun-0.9.6/sing-tun-go/.golangci.yml +34 -0
  49. sing_tun-0.9.6/sing-tun-go/LICENSE +14 -0
  50. sing_tun-0.9.6/sing-tun-go/Makefile +32 -0
  51. sing_tun-0.9.6/sing-tun-go/README.md +24 -0
  52. sing_tun-0.9.6/sing-tun-go/flow.go +74 -0
  53. sing_tun-0.9.6/sing-tun-go/flow_dispatch.go +845 -0
  54. sing_tun-0.9.6/sing-tun-go/flow_dns.go +89 -0
  55. sing_tun-0.9.6/sing-tun-go/flow_mtu.go +167 -0
  56. sing_tun-0.9.6/sing-tun-go/flow_nat.go +121 -0
  57. sing_tun-0.9.6/sing-tun-go/flow_parse.go +256 -0
  58. sing_tun-0.9.6/sing-tun-go/flow_reject.go +210 -0
  59. sing_tun-0.9.6/sing-tun-go/flow_rewrite.go +350 -0
  60. sing_tun-0.9.6/sing-tun-go/go.mod +32 -0
  61. sing_tun-0.9.6/sing-tun-go/go.sum +51 -0
  62. sing_tun-0.9.6/sing-tun-go/gtcpip/README.md +4 -0
  63. sing_tun-0.9.6/sing-tun-go/gtcpip/checksum/checksum.go +45 -0
  64. sing_tun-0.9.6/sing-tun-go/gtcpip/checksum/checksum_default.go +12 -0
  65. sing_tun-0.9.6/sing-tun-go/gtcpip/checksum/checksum_ts.go +9 -0
  66. sing_tun-0.9.6/sing-tun-go/gtcpip/checksum/checksum_unsafe.go +182 -0
  67. sing_tun-0.9.6/sing-tun-go/gtcpip/errors.go +46 -0
  68. sing_tun-0.9.6/sing-tun-go/gtcpip/header/checksum.go +107 -0
  69. sing_tun-0.9.6/sing-tun-go/gtcpip/header/eth.go +192 -0
  70. sing_tun-0.9.6/sing-tun-go/gtcpip/header/icmpv4.go +228 -0
  71. sing_tun-0.9.6/sing-tun-go/gtcpip/header/icmpv6.go +304 -0
  72. sing_tun-0.9.6/sing-tun-go/gtcpip/header/interfaces.go +144 -0
  73. sing_tun-0.9.6/sing-tun-go/gtcpip/header/ipv4.go +1229 -0
  74. sing_tun-0.9.6/sing-tun-go/gtcpip/header/ipv6.go +578 -0
  75. sing_tun-0.9.6/sing-tun-go/gtcpip/header/ipv6_extension_headers.go +506 -0
  76. sing_tun-0.9.6/sing-tun-go/gtcpip/header/ipv6_fragment.go +158 -0
  77. sing_tun-0.9.6/sing-tun-go/gtcpip/header/ndp_neighbor_advert.go +110 -0
  78. sing_tun-0.9.6/sing-tun-go/gtcpip/header/ndp_neighbor_solicit.go +52 -0
  79. sing_tun-0.9.6/sing-tun-go/gtcpip/header/ndp_options.go +1072 -0
  80. sing_tun-0.9.6/sing-tun-go/gtcpip/header/ndp_router_advert.go +204 -0
  81. sing_tun-0.9.6/sing-tun-go/gtcpip/header/ndp_router_solicit.go +36 -0
  82. sing_tun-0.9.6/sing-tun-go/gtcpip/header/ndpoptionidentifier_string.go +58 -0
  83. sing_tun-0.9.6/sing-tun-go/gtcpip/header/netip.go +35 -0
  84. sing_tun-0.9.6/sing-tun-go/gtcpip/header/tcp.go +722 -0
  85. sing_tun-0.9.6/sing-tun-go/gtcpip/header/udp.go +198 -0
  86. sing_tun-0.9.6/sing-tun-go/gtcpip/seqnum/seqnum.go +62 -0
  87. sing_tun-0.9.6/sing-tun-go/gtcpip/tcpip.go +620 -0
  88. sing_tun-0.9.6/sing-tun-go/internal/checksum_test/sum_bench_test.go +33 -0
  89. sing_tun-0.9.6/sing-tun-go/internal/fdbased_darwin/endpoint.go +662 -0
  90. sing_tun-0.9.6/sing-tun-go/internal/fdbased_darwin/endpoint_mutex.go +98 -0
  91. sing_tun-0.9.6/sing-tun-go/internal/fdbased_darwin/errno.go +56 -0
  92. sing_tun-0.9.6/sing-tun-go/internal/fdbased_darwin/packet_dispatchers.go +210 -0
  93. sing_tun-0.9.6/sing-tun-go/internal/fdbased_darwin/processor_mutex.go +66 -0
  94. sing_tun-0.9.6/sing-tun-go/internal/fdbased_darwin/processors.go +290 -0
  95. sing_tun-0.9.6/sing-tun-go/internal/rawfile_darwin/rawfile.go +180 -0
  96. sing_tun-0.9.6/sing-tun-go/internal/stopfd_darwin/stopfd.go +63 -0
  97. sing_tun-0.9.6/sing-tun-go/internal/tschecksum/checksum.go +712 -0
  98. sing_tun-0.9.6/sing-tun-go/internal/tschecksum/checksum_amd64.go +23 -0
  99. sing_tun-0.9.6/sing-tun-go/internal/tschecksum/checksum_generated_amd64.go +18 -0
  100. sing_tun-0.9.6/sing-tun-go/internal/tschecksum/checksum_generated_amd64.s +851 -0
  101. sing_tun-0.9.6/sing-tun-go/internal/tschecksum/checksum_generic.go +15 -0
  102. sing_tun-0.9.6/sing-tun-go/internal/tschecksum/generate_amd64.go +578 -0
  103. sing_tun-0.9.6/sing-tun-go/internal/winfw/winfw.go +276 -0
  104. sing_tun-0.9.6/sing-tun-go/internal/winipcfg/interface_change_handler.go +90 -0
  105. sing_tun-0.9.6/sing-tun-go/internal/winipcfg/luid.go +411 -0
  106. sing_tun-0.9.6/sing-tun-go/internal/winipcfg/mksyscall.go +10 -0
  107. sing_tun-0.9.6/sing-tun-go/internal/winipcfg/netsh.go +122 -0
  108. sing_tun-0.9.6/sing-tun-go/internal/winipcfg/route_change_handler.go +90 -0
  109. sing_tun-0.9.6/sing-tun-go/internal/winipcfg/types.go +1020 -0
  110. sing_tun-0.9.6/sing-tun-go/internal/winipcfg/types_32.go +232 -0
  111. sing_tun-0.9.6/sing-tun-go/internal/winipcfg/types_64.go +220 -0
  112. sing_tun-0.9.6/sing-tun-go/internal/winipcfg/types_test.go +1058 -0
  113. sing_tun-0.9.6/sing-tun-go/internal/winipcfg/types_test_32.go +59 -0
  114. sing_tun-0.9.6/sing-tun-go/internal/winipcfg/types_test_64.go +59 -0
  115. sing_tun-0.9.6/sing-tun-go/internal/winipcfg/unicast_address_change_handler.go +90 -0
  116. sing_tun-0.9.6/sing-tun-go/internal/winipcfg/winipcfg.go +198 -0
  117. sing_tun-0.9.6/sing-tun-go/internal/winipcfg/winipcfg_test.go +665 -0
  118. sing_tun-0.9.6/sing-tun-go/internal/winipcfg/zwinipcfg_windows.go +350 -0
  119. sing_tun-0.9.6/sing-tun-go/internal/winsys/constants.go +158 -0
  120. sing_tun-0.9.6/sing-tun-go/internal/winsys/helper.go +46 -0
  121. sing_tun-0.9.6/sing-tun-go/internal/winsys/mksyscall.go +5 -0
  122. sing_tun-0.9.6/sing-tun-go/internal/winsys/syscall_windows.go +19 -0
  123. sing_tun-0.9.6/sing-tun-go/internal/winsys/types_windows.go +99 -0
  124. sing_tun-0.9.6/sing-tun-go/internal/winsys/zsyscall_windows.go +94 -0
  125. sing_tun-0.9.6/sing-tun-go/internal/wintun/README.md +3 -0
  126. sing_tun-0.9.6/sing-tun-go/internal/wintun/amd64/wintun.dll +0 -0
  127. sing_tun-0.9.6/sing-tun-go/internal/wintun/arm/wintun.dll +0 -0
  128. sing_tun-0.9.6/sing-tun-go/internal/wintun/arm64/wintun.dll +0 -0
  129. sing_tun-0.9.6/sing-tun-go/internal/wintun/dll_windows.go +98 -0
  130. sing_tun-0.9.6/sing-tun-go/internal/wintun/dll_windows_386.go +13 -0
  131. sing_tun-0.9.6/sing-tun-go/internal/wintun/dll_windows_amd64.go +13 -0
  132. sing_tun-0.9.6/sing-tun-go/internal/wintun/dll_windows_arm.go +13 -0
  133. sing_tun-0.9.6/sing-tun-go/internal/wintun/dll_windows_arm64.go +13 -0
  134. sing_tun-0.9.6/sing-tun-go/internal/wintun/memmod/memmod_windows.go +722 -0
  135. sing_tun-0.9.6/sing-tun-go/internal/wintun/memmod/memmod_windows_32.go +16 -0
  136. sing_tun-0.9.6/sing-tun-go/internal/wintun/memmod/memmod_windows_386.go +8 -0
  137. sing_tun-0.9.6/sing-tun-go/internal/wintun/memmod/memmod_windows_64.go +36 -0
  138. sing_tun-0.9.6/sing-tun-go/internal/wintun/memmod/memmod_windows_amd64.go +8 -0
  139. sing_tun-0.9.6/sing-tun-go/internal/wintun/memmod/memmod_windows_arm.go +8 -0
  140. sing_tun-0.9.6/sing-tun-go/internal/wintun/memmod/memmod_windows_arm64.go +8 -0
  141. sing_tun-0.9.6/sing-tun-go/internal/wintun/memmod/syscall_windows.go +392 -0
  142. sing_tun-0.9.6/sing-tun-go/internal/wintun/memmod/syscall_windows_32.go +96 -0
  143. sing_tun-0.9.6/sing-tun-go/internal/wintun/memmod/syscall_windows_64.go +95 -0
  144. sing_tun-0.9.6/sing-tun-go/internal/wintun/session_windows.go +89 -0
  145. sing_tun-0.9.6/sing-tun-go/internal/wintun/wintun_windows.go +116 -0
  146. sing_tun-0.9.6/sing-tun-go/internal/wintun/x86/wintun.dll +0 -0
  147. sing_tun-0.9.6/sing-tun-go/monitor.go +41 -0
  148. sing_tun-0.9.6/sing-tun-go/monitor_android.go +68 -0
  149. sing_tun-0.9.6/sing-tun-go/monitor_darwin.go +224 -0
  150. sing_tun-0.9.6/sing-tun-go/monitor_linux.go +151 -0
  151. sing_tun-0.9.6/sing-tun-go/monitor_linux_default.go +40 -0
  152. sing_tun-0.9.6/sing-tun-go/monitor_linux_test.go +106 -0
  153. sing_tun-0.9.6/sing-tun-go/monitor_other.go +17 -0
  154. sing_tun-0.9.6/sing-tun-go/monitor_shared.go +188 -0
  155. sing_tun-0.9.6/sing-tun-go/monitor_windows.go +115 -0
  156. sing_tun-0.9.6/sing-tun-go/netns_linux.go +73 -0
  157. sing_tun-0.9.6/sing-tun-go/netns_other.go +12 -0
  158. sing_tun-0.9.6/sing-tun-go/nfqueue_linux.go +312 -0
  159. sing_tun-0.9.6/sing-tun-go/packages.go +25 -0
  160. sing_tun-0.9.6/sing-tun-go/packages_android.go +183 -0
  161. sing_tun-0.9.6/sing-tun-go/packages_stub.go +9 -0
  162. sing_tun-0.9.6/sing-tun-go/ping/cmsg_unix.go +16 -0
  163. sing_tun-0.9.6/sing-tun-go/ping/cmsg_windows.go +46 -0
  164. sing_tun-0.9.6/sing-tun-go/ping/destination.go +346 -0
  165. sing_tun-0.9.6/sing-tun-go/ping/destination_test.go +109 -0
  166. sing_tun-0.9.6/sing-tun-go/ping/filter_linux.go +99 -0
  167. sing_tun-0.9.6/sing-tun-go/ping/filter_other.go +8 -0
  168. sing_tun-0.9.6/sing-tun-go/ping/ping.go +348 -0
  169. sing_tun-0.9.6/sing-tun-go/ping/ping_test.go +307 -0
  170. sing_tun-0.9.6/sing-tun-go/ping/port.go +194 -0
  171. sing_tun-0.9.6/sing-tun-go/ping/socket_linux_unprivileged.go +200 -0
  172. sing_tun-0.9.6/sing-tun-go/ping/socket_unix.go +119 -0
  173. sing_tun-0.9.6/sing-tun-go/ping/socket_windows.go +43 -0
  174. sing_tun-0.9.6/sing-tun-go/redirect.go +37 -0
  175. sing_tun-0.9.6/sing-tun-go/redirect_iptables.go +103 -0
  176. sing_tun-0.9.6/sing-tun-go/redirect_linux.go +302 -0
  177. sing_tun-0.9.6/sing-tun-go/redirect_nftables.go +643 -0
  178. sing_tun-0.9.6/sing-tun-go/redirect_nftables_docker.go +262 -0
  179. sing_tun-0.9.6/sing-tun-go/redirect_nftables_exprs.go +227 -0
  180. sing_tun-0.9.6/sing-tun-go/redirect_nftables_rules.go +1175 -0
  181. sing_tun-0.9.6/sing-tun-go/redirect_nftables_rules_openwrt.go +52 -0
  182. sing_tun-0.9.6/sing-tun-go/redirect_route_linux.go +244 -0
  183. sing_tun-0.9.6/sing-tun-go/redirect_server.go +94 -0
  184. sing_tun-0.9.6/sing-tun-go/redirect_stub.go +11 -0
  185. sing_tun-0.9.6/sing-tun-go/stack.go +83 -0
  186. sing_tun-0.9.6/sing-tun-go/stack_gvisor.go +304 -0
  187. sing_tun-0.9.6/sing-tun-go/stack_gvisor_filter.go +117 -0
  188. sing_tun-0.9.6/sing-tun-go/stack_gvisor_icmp.go +454 -0
  189. sing_tun-0.9.6/sing-tun-go/stack_gvisor_lazy.go +198 -0
  190. sing_tun-0.9.6/sing-tun-go/stack_gvisor_log.go +18 -0
  191. sing_tun-0.9.6/sing-tun-go/stack_gvisor_stub.go +21 -0
  192. sing_tun-0.9.6/sing-tun-go/stack_gvisor_tcp.go +96 -0
  193. sing_tun-0.9.6/sing-tun-go/stack_gvisor_tcp_conn.go +325 -0
  194. sing_tun-0.9.6/sing-tun-go/stack_gvisor_tcpbuf_default.go +18 -0
  195. sing_tun-0.9.6/sing-tun-go/stack_gvisor_tcpbuf_ios.go +21 -0
  196. sing_tun-0.9.6/sing-tun-go/stack_gvisor_udp.go +205 -0
  197. sing_tun-0.9.6/sing-tun-go/stack_mixed.go +331 -0
  198. sing_tun-0.9.6/sing-tun-go/stack_system.go +973 -0
  199. sing_tun-0.9.6/sing-tun-go/stack_system_nat.go +161 -0
  200. sing_tun-0.9.6/sing-tun-go/stack_system_nonwindows.go +17 -0
  201. sing_tun-0.9.6/sing-tun-go/stack_system_packet.go +35 -0
  202. sing_tun-0.9.6/sing-tun-go/stack_system_windows.go +33 -0
  203. sing_tun-0.9.6/sing-tun-go/tun.go +253 -0
  204. sing_tun-0.9.6/sing-tun-go/tun_darwin.go +574 -0
  205. sing_tun-0.9.6/sing-tun-go/tun_darwin_gvisor.go +60 -0
  206. sing_tun-0.9.6/sing-tun-go/tun_linux.go +1239 -0
  207. sing_tun-0.9.6/sing-tun-go/tun_linux_flags.go +92 -0
  208. sing_tun-0.9.6/sing-tun-go/tun_linux_gvisor.go +170 -0
  209. sing_tun-0.9.6/sing-tun-go/tun_nondarwin.go +5 -0
  210. sing_tun-0.9.6/sing-tun-go/tun_nonlinux.go +5 -0
  211. sing_tun-0.9.6/sing-tun-go/tun_offload.go +219 -0
  212. sing_tun-0.9.6/sing-tun-go/tun_offload_errors.go +10 -0
  213. sing_tun-0.9.6/sing-tun-go/tun_offload_linux.go +942 -0
  214. sing_tun-0.9.6/sing-tun-go/tun_other.go +11 -0
  215. sing_tun-0.9.6/sing-tun-go/tun_read_error.go +33 -0
  216. sing_tun-0.9.6/sing-tun-go/tun_rules.go +212 -0
  217. sing_tun-0.9.6/sing-tun-go/tun_windows.go +671 -0
  218. sing_tun-0.9.6/sing-tun-go/tun_windows_gvisor.go +144 -0
  219. sing_tun-0.9.6/sing-tun-go/udp_egress.go +287 -0
  220. sing_tun-0.9.6/sing-tun-go/udp_egress_conn.go +124 -0
  221. sing_tun-0.9.6/sing-tun-go/udp_nat.go +789 -0
  222. sing_tun-0.9.6/sing-tun-go/udp_nat_cleanup.go +219 -0
  223. sing_tun-0.9.6/sing_tun/__init__.py +6 -0
  224. sing_tun-0.9.6/sing_tun/api.py +146 -0
  225. sing_tun-0.9.6/sing_tun.egg-info/PKG-INFO +160 -0
  226. sing_tun-0.9.6/sing_tun.egg-info/SOURCES.txt +232 -0
  227. sing_tun-0.9.6/sing_tun.egg-info/dependency_links.txt +1 -0
  228. sing_tun-0.9.6/sing_tun.egg-info/not-zip-safe +1 -0
  229. sing_tun-0.9.6/sing_tun.egg-info/top_level.txt +1 -0
  230. sing_tun-0.9.6/src/sing_tun.cpp +98 -0
  231. sing_tun-0.9.6/tests/README.md +65 -0
  232. sing_tun-0.9.6/tests/fixtures.py +349 -0
  233. sing_tun-0.9.6/tests/test_native.py +368 -0
  234. sing_tun-0.9.6/tests/test_sync.py +314 -0
@@ -0,0 +1,29 @@
1
+ cmake_minimum_required(VERSION 3.18)
2
+ project(sing_tun C CXX)
3
+ set(CMAKE_CXX_STANDARD 17)
4
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
5
+ find_package(pybind11 CONFIG REQUIRED)
6
+ file(TO_CMAKE_PATH "${SING_TUN_GO_BUILD_DIR}" SING_TUN_GO_BUILD_DIR)
7
+ foreach(value SING_TUN_GO_BUILD_DIR SING_TUN_VERSION SING_TUN_UPSTREAM_VERSION SING_TUN_UPSTREAM_COMMIT)
8
+ if("${${value}}" STREQUAL "")
9
+ message(FATAL_ERROR "${value} must be supplied")
10
+ endif()
11
+ endforeach()
12
+ pybind11_add_module(_native src/sing_tun.cpp)
13
+ target_compile_definitions(_native PRIVATE SING_TUN_VERSION="${SING_TUN_VERSION}" SING_TUN_UPSTREAM_VERSION="${SING_TUN_UPSTREAM_VERSION}" SING_TUN_UPSTREAM_COMMIT="${SING_TUN_UPSTREAM_COMMIT}")
14
+ target_include_directories(_native PRIVATE "${SING_TUN_GO_BUILD_DIR}")
15
+ target_link_libraries(_native PRIVATE "${SING_TUN_GO_BUILD_DIR}/sing_tun.a")
16
+ if(WIN32)
17
+ if(NOT MINGW)
18
+ message(FATAL_ERROR "Go c-archive requires MinGW or LLVM-MinGW on Windows")
19
+ endif()
20
+ target_compile_options(_native PRIVATE "-Wa,-mbig-obj")
21
+ target_link_options(_native PRIVATE "-static-libgcc" "-static-libstdc++" "-Wl,-Bstatic,--whole-archive" "-lwinpthread" "-Wl,--no-whole-archive")
22
+ target_link_libraries(_native PRIVATE ws2_32 winmm ntdll bcrypt)
23
+ else()
24
+ find_package(Threads REQUIRED)
25
+ target_link_libraries(_native PRIVATE Threads::Threads resolv ${CMAKE_DL_LIBS})
26
+ if(APPLE)
27
+ target_link_libraries(_native PRIVATE "-framework CoreFoundation" "-framework Security")
28
+ endif()
29
+ endif()