couchbase 4.3.1 → 4.4.1-dev.1

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 (1104) hide show
  1. package/deps/couchbase-cxx-cache/mozilla-ca-bundle.crt +19 -32
  2. package/deps/couchbase-cxx-cache/mozilla-ca-bundle.sha256 +1 -1
  3. package/deps/couchbase-cxx-client/CMakeLists.txt +16 -9
  4. package/deps/couchbase-cxx-client/README.md +39 -44
  5. package/deps/couchbase-cxx-client/cmake/0001-fix-build-for-mingw-w64-ucrt-x86_64-toolchain.patch +3 -4
  6. package/deps/couchbase-cxx-client/cmake/CompilerWarnings.cmake +2 -1
  7. package/deps/couchbase-cxx-client/cmake/Packaging.cmake +41 -0
  8. package/deps/couchbase-cxx-client/cmake/Sanitizers.cmake +1 -0
  9. package/deps/couchbase-cxx-client/cmake/VersionInfo.cmake +5 -5
  10. package/deps/couchbase-cxx-client/cmake/build_version.hxx.in +1 -0
  11. package/deps/couchbase-cxx-client/cmake/couchbase-cxx-client.pc.in +10 -0
  12. package/deps/couchbase-cxx-client/cmake/test_boringssl.cxx +1 -1
  13. package/deps/couchbase-cxx-client/cmake/test_openssl.cxx +1 -1
  14. package/deps/couchbase-cxx-client/core/agent.cxx +353 -304
  15. package/deps/couchbase-cxx-client/core/agent.hxx +94 -76
  16. package/deps/couchbase-cxx-client/core/agent_config.cxx +9 -8
  17. package/deps/couchbase-cxx-client/core/agent_config.hxx +7 -7
  18. package/deps/couchbase-cxx-client/core/agent_group.cxx +132 -120
  19. package/deps/couchbase-cxx-client/core/agent_group.hxx +26 -22
  20. package/deps/couchbase-cxx-client/core/agent_group_config.cxx +8 -7
  21. package/deps/couchbase-cxx-client/core/agent_group_config.hxx +6 -6
  22. package/deps/couchbase-cxx-client/core/agent_unit_test_api.hxx +6 -6
  23. package/deps/couchbase-cxx-client/core/analytics_query_options.cxx +21 -21
  24. package/deps/couchbase-cxx-client/core/analytics_query_options.hxx +19 -18
  25. package/deps/couchbase-cxx-client/core/analytics_scan_consistency.hxx +2 -2
  26. package/deps/couchbase-cxx-client/core/bucket.cxx +848 -776
  27. package/deps/couchbase-cxx-client/core/bucket.hxx +151 -139
  28. package/deps/couchbase-cxx-client/core/capella_ca.hxx +20 -19
  29. package/deps/couchbase-cxx-client/core/cluster.cxx +1240 -927
  30. package/deps/couchbase-cxx-client/core/cluster.hxx +254 -167
  31. package/deps/couchbase-cxx-client/core/cluster_agent.cxx +7 -7
  32. package/deps/couchbase-cxx-client/core/cluster_agent.hxx +4 -4
  33. package/deps/couchbase-cxx-client/core/cluster_agent_config.cxx +8 -7
  34. package/deps/couchbase-cxx-client/core/cluster_agent_config.hxx +6 -6
  35. package/deps/couchbase-cxx-client/core/cluster_options.cxx +17 -17
  36. package/deps/couchbase-cxx-client/core/cluster_options.hxx +50 -47
  37. package/deps/couchbase-cxx-client/core/cluster_state.hxx +3 -3
  38. package/deps/couchbase-cxx-client/core/collection_id_cache_entry.hxx +5 -4
  39. package/deps/couchbase-cxx-client/core/collections_component.cxx +372 -329
  40. package/deps/couchbase-cxx-client/core/collections_component.hxx +17 -13
  41. package/deps/couchbase-cxx-client/core/collections_component_unit_test_api.hxx +6 -6
  42. package/deps/couchbase-cxx-client/core/collections_options.hxx +29 -27
  43. package/deps/couchbase-cxx-client/core/config_listener.hxx +3 -3
  44. package/deps/couchbase-cxx-client/core/config_profile.hxx +3 -3
  45. package/deps/couchbase-cxx-client/core/config_profiles.cxx +31 -31
  46. package/deps/couchbase-cxx-client/core/config_profiles.hxx +19 -19
  47. package/deps/couchbase-cxx-client/core/core_sdk_shim.cxx +2 -1
  48. package/deps/couchbase-cxx-client/core/core_sdk_shim.hxx +2 -2
  49. package/deps/couchbase-cxx-client/core/crud_component.cxx +310 -276
  50. package/deps/couchbase-cxx-client/core/crud_component.hxx +21 -15
  51. package/deps/couchbase-cxx-client/core/crud_options.hxx +361 -354
  52. package/deps/couchbase-cxx-client/core/crypto/cbcrypto.cc +732 -627
  53. package/deps/couchbase-cxx-client/core/crypto/cbcrypto.h +12 -3
  54. package/deps/couchbase-cxx-client/core/design_document_namespace.hxx +2 -2
  55. package/deps/couchbase-cxx-client/core/design_document_namespace_fmt.hxx +18 -18
  56. package/deps/couchbase-cxx-client/core/diagnostics.hxx +44 -44
  57. package/deps/couchbase-cxx-client/core/diagnostics_fmt.hxx +76 -76
  58. package/deps/couchbase-cxx-client/core/diagnostics_json.hxx +61 -60
  59. package/deps/couchbase-cxx-client/core/diagntostics_options.hxx +14 -14
  60. package/deps/couchbase-cxx-client/core/dispatcher.cxx +4 -3
  61. package/deps/couchbase-cxx-client/core/dispatcher.hxx +8 -7
  62. package/deps/couchbase-cxx-client/core/document_id.cxx +37 -34
  63. package/deps/couchbase-cxx-client/core/document_id.hxx +87 -86
  64. package/deps/couchbase-cxx-client/core/document_id_fmt.hxx +10 -10
  65. package/deps/couchbase-cxx-client/core/durability_options.hxx +50 -49
  66. package/deps/couchbase-cxx-client/core/error_context/analytics.hxx +18 -18
  67. package/deps/couchbase-cxx-client/core/error_context/analytics_json.hxx +115 -0
  68. package/deps/couchbase-cxx-client/core/error_context/base_error_context.hxx +184 -0
  69. package/deps/couchbase-cxx-client/core/error_context/http.hxx +14 -14
  70. package/deps/couchbase-cxx-client/core/error_context/http_json.hxx +90 -0
  71. package/deps/couchbase-cxx-client/core/error_context/internal_tof_metadata_json.hxx +36 -0
  72. package/deps/couchbase-cxx-client/core/error_context/key_value.cxx +27 -27
  73. package/deps/couchbase-cxx-client/core/error_context/key_value.hxx +41 -38
  74. package/deps/couchbase-cxx-client/core/error_context/key_value_error_context.hxx +235 -0
  75. package/deps/couchbase-cxx-client/core/error_context/key_value_error_map_attribute.hxx +142 -0
  76. package/deps/couchbase-cxx-client/core/error_context/key_value_error_map_info.hxx +139 -0
  77. package/deps/couchbase-cxx-client/core/error_context/key_value_extended_error_info.hxx +86 -0
  78. package/deps/couchbase-cxx-client/core/error_context/key_value_json.hxx +83 -0
  79. package/deps/couchbase-cxx-client/core/error_context/key_value_status_code.hxx +109 -0
  80. package/deps/couchbase-cxx-client/core/error_context/query.hxx +18 -18
  81. package/deps/couchbase-cxx-client/core/error_context/query_error_context.hxx +150 -0
  82. package/deps/couchbase-cxx-client/core/error_context/query_json.hxx +114 -0
  83. package/deps/couchbase-cxx-client/core/error_context/query_public_json.hxx +84 -0
  84. package/deps/couchbase-cxx-client/core/error_context/search.hxx +17 -17
  85. package/deps/couchbase-cxx-client/core/error_context/search_json.hxx +101 -0
  86. package/deps/couchbase-cxx-client/core/error_context/subdocument_error_context.hxx +147 -0
  87. package/deps/couchbase-cxx-client/core/error_context/subdocument_json.hxx +48 -0
  88. package/deps/couchbase-cxx-client/{couchbase → core/error_context}/transaction_error_context.hxx +22 -22
  89. package/deps/couchbase-cxx-client/core/error_context/transaction_op_error_context.hxx +79 -0
  90. package/deps/couchbase-cxx-client/core/error_context/view.hxx +17 -17
  91. package/deps/couchbase-cxx-client/core/fmt/key_value_error_map_attribute.hxx +100 -0
  92. package/deps/couchbase-cxx-client/{couchbase → core}/fmt/key_value_extended_error_info.hxx +20 -20
  93. package/deps/couchbase-cxx-client/core/fmt/key_value_status_code.hxx +269 -0
  94. package/deps/couchbase-cxx-client/core/free_form_http_request.cxx +26 -26
  95. package/deps/couchbase-cxx-client/core/free_form_http_request.hxx +34 -33
  96. package/deps/couchbase-cxx-client/core/impl/analytics.cxx +111 -131
  97. package/deps/couchbase-cxx-client/core/impl/analytics.hxx +5 -7
  98. package/deps/couchbase-cxx-client/core/impl/analytics_error_category.cxx +29 -28
  99. package/deps/couchbase-cxx-client/core/impl/analytics_index_manager.cxx +615 -516
  100. package/deps/couchbase-cxx-client/core/impl/best_effort_retry_strategy.cxx +53 -50
  101. package/deps/couchbase-cxx-client/core/impl/binary_collection.cxx +346 -285
  102. package/deps/couchbase-cxx-client/core/impl/boolean_field_query.cxx +10 -10
  103. package/deps/couchbase-cxx-client/core/impl/boolean_query.cxx +27 -27
  104. package/deps/couchbase-cxx-client/core/impl/bootstrap_state_listener.hxx +6 -6
  105. package/deps/couchbase-cxx-client/core/impl/bucket.cxx +39 -34
  106. package/deps/couchbase-cxx-client/core/impl/bucket_manager.cxx +354 -313
  107. package/deps/couchbase-cxx-client/core/impl/cluster.cxx +430 -325
  108. package/deps/couchbase-cxx-client/core/impl/collection.cxx +1033 -1187
  109. package/deps/couchbase-cxx-client/core/impl/collection_manager.cxx +201 -170
  110. package/deps/couchbase-cxx-client/core/impl/common_error_category.cxx +58 -55
  111. package/deps/couchbase-cxx-client/core/impl/configuration_profiles_registry.cxx +46 -32
  112. package/deps/couchbase-cxx-client/core/impl/conjunction_query.cxx +17 -17
  113. package/deps/couchbase-cxx-client/core/impl/date_range.cxx +24 -20
  114. package/deps/couchbase-cxx-client/core/impl/date_range_facet.cxx +22 -22
  115. package/deps/couchbase-cxx-client/core/impl/date_range_facet_result.cxx +6 -6
  116. package/deps/couchbase-cxx-client/core/impl/date_range_query.cxx +50 -48
  117. package/deps/couchbase-cxx-client/core/impl/diagnostics.cxx +211 -198
  118. package/deps/couchbase-cxx-client/core/impl/diagnostics.hxx +7 -6
  119. package/deps/couchbase-cxx-client/core/impl/disjunction_query.cxx +18 -17
  120. package/deps/couchbase-cxx-client/core/impl/dns_srv_tracker.cxx +92 -75
  121. package/deps/couchbase-cxx-client/core/impl/dns_srv_tracker.hxx +24 -20
  122. package/deps/couchbase-cxx-client/core/impl/doc_id_query.cxx +9 -9
  123. package/deps/couchbase-cxx-client/core/impl/encoded_search_facet.hxx +2 -2
  124. package/deps/couchbase-cxx-client/core/impl/encoded_search_query.hxx +2 -2
  125. package/deps/couchbase-cxx-client/core/impl/encoded_search_sort.hxx +2 -2
  126. package/deps/couchbase-cxx-client/core/impl/error.cxx +171 -0
  127. package/deps/couchbase-cxx-client/core/impl/error.hxx +64 -0
  128. package/deps/couchbase-cxx-client/core/impl/error_context.cxx +56 -0
  129. package/deps/couchbase-cxx-client/core/impl/expiry.cxx +66 -53
  130. package/deps/couchbase-cxx-client/core/impl/fail_fast_retry_strategy.cxx +5 -4
  131. package/deps/couchbase-cxx-client/core/impl/field_level_encryption_error_category.cxx +30 -28
  132. package/deps/couchbase-cxx-client/core/impl/geo_bounding_box_query.cxx +17 -17
  133. package/deps/couchbase-cxx-client/core/impl/geo_distance_query.cxx +14 -14
  134. package/deps/couchbase-cxx-client/core/impl/geo_polygon_query.cxx +17 -17
  135. package/deps/couchbase-cxx-client/core/impl/get_all_replicas.hxx +26 -22
  136. package/deps/couchbase-cxx-client/core/impl/get_any_replica.hxx +25 -23
  137. package/deps/couchbase-cxx-client/core/impl/get_replica.cxx +18 -15
  138. package/deps/couchbase-cxx-client/core/impl/get_replica.hxx +23 -18
  139. package/deps/couchbase-cxx-client/core/impl/internal_date_range_facet_result.cxx +16 -14
  140. package/deps/couchbase-cxx-client/core/impl/internal_date_range_facet_result.hxx +16 -15
  141. package/deps/couchbase-cxx-client/core/impl/internal_error_context.cxx +79 -0
  142. package/deps/couchbase-cxx-client/core/impl/internal_error_context.hxx +52 -0
  143. package/deps/couchbase-cxx-client/core/impl/internal_numeric_range_facet_result.cxx +18 -15
  144. package/deps/couchbase-cxx-client/core/impl/internal_numeric_range_facet_result.hxx +16 -15
  145. package/deps/couchbase-cxx-client/core/impl/internal_scan_result.hxx +7 -7
  146. package/deps/couchbase-cxx-client/core/impl/internal_search_error_context.cxx +25 -22
  147. package/deps/couchbase-cxx-client/core/impl/internal_search_error_context.hxx +32 -31
  148. package/deps/couchbase-cxx-client/core/impl/internal_search_meta_data.cxx +15 -13
  149. package/deps/couchbase-cxx-client/core/impl/internal_search_meta_data.hxx +10 -9
  150. package/deps/couchbase-cxx-client/core/impl/internal_search_result.cxx +30 -22
  151. package/deps/couchbase-cxx-client/core/impl/internal_search_result.hxx +10 -9
  152. package/deps/couchbase-cxx-client/core/impl/internal_search_row.cxx +10 -10
  153. package/deps/couchbase-cxx-client/core/impl/internal_search_row.hxx +16 -16
  154. package/deps/couchbase-cxx-client/core/impl/internal_search_row_location.hxx +2 -2
  155. package/deps/couchbase-cxx-client/core/impl/internal_search_row_locations.cxx +68 -65
  156. package/deps/couchbase-cxx-client/core/impl/internal_search_row_locations.hxx +16 -13
  157. package/deps/couchbase-cxx-client/core/impl/internal_term_facet_result.cxx +16 -14
  158. package/deps/couchbase-cxx-client/core/impl/internal_term_facet_result.hxx +15 -15
  159. package/deps/couchbase-cxx-client/core/impl/key_value_error_category.cxx +73 -72
  160. package/deps/couchbase-cxx-client/core/impl/key_value_error_context.cxx +65 -65
  161. package/deps/couchbase-cxx-client/core/impl/logger.cxx +91 -0
  162. package/deps/couchbase-cxx-client/core/impl/lookup_in_all_replicas.hxx +32 -29
  163. package/deps/couchbase-cxx-client/core/impl/lookup_in_any_replica.hxx +33 -29
  164. package/deps/couchbase-cxx-client/core/impl/lookup_in_replica.cxx +75 -68
  165. package/deps/couchbase-cxx-client/core/impl/lookup_in_replica.hxx +30 -26
  166. package/deps/couchbase-cxx-client/core/impl/management_error_category.cxx +41 -40
  167. package/deps/couchbase-cxx-client/core/impl/match_all_query.cxx +6 -6
  168. package/deps/couchbase-cxx-client/core/impl/match_none_query.cxx +6 -6
  169. package/deps/couchbase-cxx-client/core/impl/match_phrase_query.cxx +13 -13
  170. package/deps/couchbase-cxx-client/core/impl/match_query.cxx +28 -28
  171. package/deps/couchbase-cxx-client/core/impl/network_error_category.cxx +39 -38
  172. package/deps/couchbase-cxx-client/core/impl/numeric_range.cxx +6 -6
  173. package/deps/couchbase-cxx-client/core/impl/numeric_range_facet.cxx +22 -22
  174. package/deps/couchbase-cxx-client/core/impl/numeric_range_facet_result.cxx +6 -6
  175. package/deps/couchbase-cxx-client/core/impl/numeric_range_query.cxx +22 -22
  176. package/deps/couchbase-cxx-client/core/impl/observe_poll.cxx +294 -277
  177. package/deps/couchbase-cxx-client/core/impl/observe_poll.hxx +1 -1
  178. package/deps/couchbase-cxx-client/core/impl/observe_seqno.cxx +21 -18
  179. package/deps/couchbase-cxx-client/core/impl/observe_seqno.hxx +31 -26
  180. package/deps/couchbase-cxx-client/core/impl/phrase_query.cxx +10 -10
  181. package/deps/couchbase-cxx-client/core/impl/prefix_query.cxx +10 -10
  182. package/deps/couchbase-cxx-client/core/impl/query.cxx +163 -154
  183. package/deps/couchbase-cxx-client/core/impl/query.hxx +6 -7
  184. package/deps/couchbase-cxx-client/core/impl/query_error_category.cxx +22 -21
  185. package/deps/couchbase-cxx-client/core/impl/query_error_context.cxx +45 -45
  186. package/deps/couchbase-cxx-client/core/impl/query_index_manager.cxx +488 -408
  187. package/deps/couchbase-cxx-client/core/impl/query_string_query.cxx +7 -7
  188. package/deps/couchbase-cxx-client/core/impl/regexp_query.cxx +10 -10
  189. package/deps/couchbase-cxx-client/core/impl/replica_utils.cxx +66 -0
  190. package/deps/couchbase-cxx-client/core/impl/replica_utils.hxx +48 -0
  191. package/deps/couchbase-cxx-client/core/impl/retry_action.cxx +3 -3
  192. package/deps/couchbase-cxx-client/core/impl/retry_reason.cxx +129 -56
  193. package/deps/couchbase-cxx-client/core/impl/retry_reason.hxx +28 -0
  194. package/deps/couchbase-cxx-client/core/impl/scan_result.cxx +53 -49
  195. package/deps/couchbase-cxx-client/core/impl/scope.cxx +103 -94
  196. package/deps/couchbase-cxx-client/core/impl/search.cxx +139 -130
  197. package/deps/couchbase-cxx-client/core/impl/search.hxx +4 -4
  198. package/deps/couchbase-cxx-client/core/impl/search_error_category.cxx +18 -17
  199. package/deps/couchbase-cxx-client/core/impl/search_index_manager.cxx +492 -390
  200. package/deps/couchbase-cxx-client/core/impl/search_meta_data.cxx +3 -3
  201. package/deps/couchbase-cxx-client/core/impl/search_request.cxx +78 -78
  202. package/deps/couchbase-cxx-client/core/impl/search_result.cxx +5 -5
  203. package/deps/couchbase-cxx-client/core/impl/search_row.cxx +7 -7
  204. package/deps/couchbase-cxx-client/core/impl/search_row_location.cxx +9 -8
  205. package/deps/couchbase-cxx-client/core/impl/search_row_locations.cxx +8 -7
  206. package/deps/couchbase-cxx-client/core/impl/search_sort_field.cxx +53 -53
  207. package/deps/couchbase-cxx-client/core/impl/search_sort_geo_distance.cxx +49 -48
  208. package/deps/couchbase-cxx-client/core/impl/search_sort_id.cxx +10 -10
  209. package/deps/couchbase-cxx-client/core/impl/search_sort_score.cxx +10 -10
  210. package/deps/couchbase-cxx-client/core/impl/streaming_json_lexer_error_category.cxx +70 -68
  211. package/deps/couchbase-cxx-client/core/impl/subdoc/array_add_unique.cxx +6 -6
  212. package/deps/couchbase-cxx-client/core/impl/subdoc/array_append.cxx +6 -6
  213. package/deps/couchbase-cxx-client/core/impl/subdoc/array_insert.cxx +6 -6
  214. package/deps/couchbase-cxx-client/core/impl/subdoc/array_prepend.cxx +6 -6
  215. package/deps/couchbase-cxx-client/core/impl/subdoc/command.hxx +5 -5
  216. package/deps/couchbase-cxx-client/core/impl/subdoc/command_bundle.hxx +11 -11
  217. package/deps/couchbase-cxx-client/core/impl/subdoc/count.cxx +6 -6
  218. package/deps/couchbase-cxx-client/core/impl/subdoc/counter.cxx +6 -6
  219. package/deps/couchbase-cxx-client/core/impl/subdoc/exists.cxx +6 -6
  220. package/deps/couchbase-cxx-client/core/impl/subdoc/get.cxx +6 -6
  221. package/deps/couchbase-cxx-client/core/impl/subdoc/insert.cxx +6 -6
  222. package/deps/couchbase-cxx-client/core/impl/subdoc/join_values.cxx +25 -25
  223. package/deps/couchbase-cxx-client/core/impl/subdoc/lookup_in_macro.cxx +61 -60
  224. package/deps/couchbase-cxx-client/core/impl/subdoc/lookup_in_specs.cxx +9 -9
  225. package/deps/couchbase-cxx-client/core/impl/subdoc/mutate_in_macro.cxx +48 -39
  226. package/deps/couchbase-cxx-client/core/impl/subdoc/mutate_in_specs.cxx +9 -9
  227. package/deps/couchbase-cxx-client/core/impl/subdoc/opcode.hxx +16 -16
  228. package/deps/couchbase-cxx-client/core/impl/subdoc/path_flags.hxx +40 -17
  229. package/deps/couchbase-cxx-client/core/impl/subdoc/remove.cxx +6 -6
  230. package/deps/couchbase-cxx-client/core/impl/subdoc/replace.cxx +6 -6
  231. package/deps/couchbase-cxx-client/core/impl/subdoc/upsert.cxx +6 -6
  232. package/deps/couchbase-cxx-client/core/impl/term_facet.cxx +8 -8
  233. package/deps/couchbase-cxx-client/core/impl/term_facet_result.cxx +6 -6
  234. package/deps/couchbase-cxx-client/core/impl/term_query.cxx +25 -25
  235. package/deps/couchbase-cxx-client/core/impl/term_range_query.cxx +22 -22
  236. package/deps/couchbase-cxx-client/core/impl/transaction_error_category.cxx +21 -20
  237. package/deps/couchbase-cxx-client/core/impl/transaction_get_result.cxx +41 -30
  238. package/deps/couchbase-cxx-client/core/impl/transaction_op_error_category.cxx +55 -56
  239. package/deps/couchbase-cxx-client/core/impl/vector_query.cxx +15 -10
  240. package/deps/couchbase-cxx-client/core/impl/vector_search.cxx +9 -9
  241. package/deps/couchbase-cxx-client/core/impl/view_error_category.cxx +17 -16
  242. package/deps/couchbase-cxx-client/core/impl/wildcard_query.cxx +10 -10
  243. package/deps/couchbase-cxx-client/core/impl/with_legacy_durability.hxx +30 -29
  244. package/deps/couchbase-cxx-client/core/io/dns_client.cxx +257 -232
  245. package/deps/couchbase-cxx-client/core/io/dns_client.hxx +19 -18
  246. package/deps/couchbase-cxx-client/core/io/dns_codec.hxx +156 -154
  247. package/deps/couchbase-cxx-client/core/io/dns_config.cxx +114 -109
  248. package/deps/couchbase-cxx-client/core/io/dns_config.hxx +15 -13
  249. package/deps/couchbase-cxx-client/core/io/dns_message.hxx +365 -342
  250. package/deps/couchbase-cxx-client/core/io/http_command.hxx +155 -134
  251. package/deps/couchbase-cxx-client/core/io/http_context.hxx +5 -5
  252. package/deps/couchbase-cxx-client/core/io/http_message.hxx +75 -71
  253. package/deps/couchbase-cxx-client/core/io/http_parser.cxx +70 -67
  254. package/deps/couchbase-cxx-client/core/io/http_parser.hxx +18 -18
  255. package/deps/couchbase-cxx-client/core/io/http_session.hxx +620 -520
  256. package/deps/couchbase-cxx-client/core/io/http_session_manager.hxx +406 -315
  257. package/deps/couchbase-cxx-client/core/io/http_traits.hxx +7 -0
  258. package/deps/couchbase-cxx-client/core/io/ip_protocol.hxx +3 -3
  259. package/deps/couchbase-cxx-client/core/io/mcbp_command.hxx +298 -278
  260. package/deps/couchbase-cxx-client/core/io/mcbp_context.hxx +7 -6
  261. package/deps/couchbase-cxx-client/core/io/mcbp_message.cxx +8 -8
  262. package/deps/couchbase-cxx-client/core/io/mcbp_message.hxx +19 -19
  263. package/deps/couchbase-cxx-client/core/io/mcbp_parser.cxx +60 -51
  264. package/deps/couchbase-cxx-client/core/io/mcbp_parser.hxx +21 -17
  265. package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +1769 -1616
  266. package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +63 -57
  267. package/deps/couchbase-cxx-client/core/io/query_cache.hxx +34 -34
  268. package/deps/couchbase-cxx-client/core/io/retry_context.hxx +45 -45
  269. package/deps/couchbase-cxx-client/core/io/retry_orchestrator.hxx +52 -42
  270. package/deps/couchbase-cxx-client/core/io/streams.hxx +210 -193
  271. package/deps/couchbase-cxx-client/core/json_string.hxx +47 -47
  272. package/deps/couchbase-cxx-client/core/key_value_config.cxx +8 -8
  273. package/deps/couchbase-cxx-client/core/key_value_config.hxx +12 -11
  274. package/deps/couchbase-cxx-client/core/logger/configuration.hxx +35 -35
  275. package/deps/couchbase-cxx-client/core/logger/custom_rotating_file_sink.cxx +73 -72
  276. package/deps/couchbase-cxx-client/core/logger/custom_rotating_file_sink.hxx +20 -18
  277. package/deps/couchbase-cxx-client/core/logger/level.hxx +9 -1
  278. package/deps/couchbase-cxx-client/core/logger/logger.cxx +279 -252
  279. package/deps/couchbase-cxx-client/core/logger/logger.hxx +110 -58
  280. package/deps/couchbase-cxx-client/core/management/analytics_dataset.hxx +4 -4
  281. package/deps/couchbase-cxx-client/core/management/analytics_index.hxx +4 -4
  282. package/deps/couchbase-cxx-client/core/management/analytics_link_azure_blob_external.cxx +35 -33
  283. package/deps/couchbase-cxx-client/core/management/analytics_link_azure_blob_external.hxx +36 -35
  284. package/deps/couchbase-cxx-client/core/management/analytics_link_azure_blob_external_json.hxx +24 -20
  285. package/deps/couchbase-cxx-client/core/management/analytics_link_couchbase_remote.cxx +66 -65
  286. package/deps/couchbase-cxx-client/core/management/analytics_link_couchbase_remote.hxx +77 -70
  287. package/deps/couchbase-cxx-client/core/management/analytics_link_couchbase_remote_json.hxx +38 -32
  288. package/deps/couchbase-cxx-client/core/management/analytics_link_s3_external.cxx +26 -25
  289. package/deps/couchbase-cxx-client/core/management/analytics_link_s3_external.hxx +30 -30
  290. package/deps/couchbase-cxx-client/core/management/analytics_link_s3_external_json.hxx +18 -16
  291. package/deps/couchbase-cxx-client/core/management/bucket_settings.hxx +109 -91
  292. package/deps/couchbase-cxx-client/core/management/bucket_settings_json.hxx +112 -94
  293. package/deps/couchbase-cxx-client/core/management/design_document.hxx +9 -9
  294. package/deps/couchbase-cxx-client/core/management/eventing_function.hxx +124 -121
  295. package/deps/couchbase-cxx-client/core/management/eventing_function_json.hxx +228 -184
  296. package/deps/couchbase-cxx-client/core/management/eventing_status.hxx +41 -41
  297. package/deps/couchbase-cxx-client/core/management/eventing_status_json.hxx +53 -45
  298. package/deps/couchbase-cxx-client/core/management/rbac.hxx +33 -28
  299. package/deps/couchbase-cxx-client/core/management/rbac_fmt.hxx +21 -21
  300. package/deps/couchbase-cxx-client/core/management/rbac_json.hxx +132 -125
  301. package/deps/couchbase-cxx-client/core/management/search_index.cxx +79 -0
  302. package/deps/couchbase-cxx-client/core/management/search_index.hxx +11 -10
  303. package/deps/couchbase-cxx-client/core/management/search_index_json.hxx +27 -26
  304. package/deps/couchbase-cxx-client/core/mcbp/barrier_frame.hxx +4 -3
  305. package/deps/couchbase-cxx-client/core/mcbp/big_endian.cxx +22 -22
  306. package/deps/couchbase-cxx-client/core/mcbp/buffer_writer.cxx +22 -19
  307. package/deps/couchbase-cxx-client/core/mcbp/buffer_writer.hxx +9 -9
  308. package/deps/couchbase-cxx-client/core/mcbp/codec.cxx +419 -397
  309. package/deps/couchbase-cxx-client/core/mcbp/codec.hxx +14 -12
  310. package/deps/couchbase-cxx-client/core/mcbp/command_code.cxx +48 -48
  311. package/deps/couchbase-cxx-client/core/mcbp/completion_token.hxx +33 -33
  312. package/deps/couchbase-cxx-client/core/mcbp/datatype.hxx +3 -3
  313. package/deps/couchbase-cxx-client/core/mcbp/durability_level.hxx +8 -7
  314. package/deps/couchbase-cxx-client/core/mcbp/durability_level_frame.hxx +3 -2
  315. package/deps/couchbase-cxx-client/core/mcbp/durability_timeout_frame.hxx +4 -3
  316. package/deps/couchbase-cxx-client/core/mcbp/open_tracing_frame.hxx +3 -2
  317. package/deps/couchbase-cxx-client/core/mcbp/operation_consumer.cxx +3 -3
  318. package/deps/couchbase-cxx-client/core/mcbp/operation_consumer.hxx +9 -9
  319. package/deps/couchbase-cxx-client/core/mcbp/operation_queue.cxx +76 -70
  320. package/deps/couchbase-cxx-client/core/mcbp/operation_queue.hxx +18 -17
  321. package/deps/couchbase-cxx-client/core/mcbp/packet.cxx +65 -51
  322. package/deps/couchbase-cxx-client/core/mcbp/packet.hxx +25 -25
  323. package/deps/couchbase-cxx-client/core/mcbp/preserve_expiry_frame.hxx +4 -2
  324. package/deps/couchbase-cxx-client/core/mcbp/queue_callback.hxx +3 -2
  325. package/deps/couchbase-cxx-client/core/mcbp/queue_request.cxx +65 -62
  326. package/deps/couchbase-cxx-client/core/mcbp/queue_request.hxx +54 -52
  327. package/deps/couchbase-cxx-client/core/mcbp/queue_request_connection_info.hxx +3 -3
  328. package/deps/couchbase-cxx-client/core/mcbp/queue_response.hxx +7 -7
  329. package/deps/couchbase-cxx-client/core/mcbp/read_units_frame.hxx +3 -2
  330. package/deps/couchbase-cxx-client/core/mcbp/server_duration.cxx +7 -7
  331. package/deps/couchbase-cxx-client/core/mcbp/server_duration_frame.hxx +3 -2
  332. package/deps/couchbase-cxx-client/core/mcbp/stream_id_frame.hxx +3 -2
  333. package/deps/couchbase-cxx-client/core/mcbp/unsupported_frame.hxx +4 -3
  334. package/deps/couchbase-cxx-client/core/mcbp/user_impersonation_frame.hxx +1 -1
  335. package/deps/couchbase-cxx-client/core/mcbp/write_units_frame.hxx +3 -2
  336. package/deps/couchbase-cxx-client/core/meta/features.hxx +58 -0
  337. package/deps/couchbase-cxx-client/core/meta/version.cxx +255 -204
  338. package/deps/couchbase-cxx-client/core/meta/version.hxx +31 -20
  339. package/deps/couchbase-cxx-client/core/metrics/logging_meter.cxx +160 -154
  340. package/deps/couchbase-cxx-client/core/metrics/logging_meter.hxx +16 -15
  341. package/deps/couchbase-cxx-client/core/metrics/logging_meter_options.hxx +1 -1
  342. package/deps/couchbase-cxx-client/core/metrics/noop_meter.hxx +14 -13
  343. package/deps/couchbase-cxx-client/core/mozilla_ca_bundle.hxx +2 -2
  344. package/deps/couchbase-cxx-client/core/n1ql_query_options.cxx +31 -31
  345. package/deps/couchbase-cxx-client/core/n1ql_query_options.hxx +22 -21
  346. package/deps/couchbase-cxx-client/core/operation_map.hxx +3 -3
  347. package/deps/couchbase-cxx-client/core/operations/document_analytics.cxx +187 -176
  348. package/deps/couchbase-cxx-client/core/operations/document_analytics.hxx +79 -71
  349. package/deps/couchbase-cxx-client/core/operations/document_append.cxx +18 -15
  350. package/deps/couchbase-cxx-client/core/operations/document_append.hxx +18 -16
  351. package/deps/couchbase-cxx-client/core/operations/document_decrement.cxx +26 -23
  352. package/deps/couchbase-cxx-client/core/operations/document_decrement.hxx +24 -20
  353. package/deps/couchbase-cxx-client/core/operations/document_exists.cxx +23 -21
  354. package/deps/couchbase-cxx-client/core/operations/document_exists.hxx +25 -23
  355. package/deps/couchbase-cxx-client/core/operations/document_get.cxx +17 -15
  356. package/deps/couchbase-cxx-client/core/operations/document_get.hxx +17 -15
  357. package/deps/couchbase-cxx-client/core/operations/document_get_all_replicas.hxx +121 -92
  358. package/deps/couchbase-cxx-client/core/operations/document_get_and_lock.cxx +19 -16
  359. package/deps/couchbase-cxx-client/core/operations/document_get_and_lock.hxx +21 -17
  360. package/deps/couchbase-cxx-client/core/operations/document_get_and_touch.cxx +19 -16
  361. package/deps/couchbase-cxx-client/core/operations/document_get_and_touch.hxx +22 -18
  362. package/deps/couchbase-cxx-client/core/operations/document_get_any_replica.hxx +111 -82
  363. package/deps/couchbase-cxx-client/core/operations/document_get_projected.cxx +193 -184
  364. package/deps/couchbase-cxx-client/core/operations/document_get_projected.hxx +25 -21
  365. package/deps/couchbase-cxx-client/core/operations/document_increment.cxx +26 -23
  366. package/deps/couchbase-cxx-client/core/operations/document_increment.hxx +24 -20
  367. package/deps/couchbase-cxx-client/core/operations/document_insert.cxx +23 -20
  368. package/deps/couchbase-cxx-client/core/operations/document_insert.hxx +20 -18
  369. package/deps/couchbase-cxx-client/core/operations/document_lookup_in.cxx +80 -67
  370. package/deps/couchbase-cxx-client/core/operations/document_lookup_in.hxx +31 -27
  371. package/deps/couchbase-cxx-client/core/operations/document_lookup_in_all_replicas.hxx +187 -149
  372. package/deps/couchbase-cxx-client/core/operations/document_lookup_in_any_replica.hxx +190 -145
  373. package/deps/couchbase-cxx-client/core/operations/document_mutate_in.cxx +98 -80
  374. package/deps/couchbase-cxx-client/core/operations/document_mutate_in.hxx +38 -33
  375. package/deps/couchbase-cxx-client/core/operations/document_prepend.cxx +18 -15
  376. package/deps/couchbase-cxx-client/core/operations/document_prepend.hxx +18 -16
  377. package/deps/couchbase-cxx-client/core/operations/document_query.cxx +367 -356
  378. package/deps/couchbase-cxx-client/core/operations/document_query.hxx +83 -79
  379. package/deps/couchbase-cxx-client/core/operations/document_remove.cxx +18 -15
  380. package/deps/couchbase-cxx-client/core/operations/document_remove.hxx +18 -16
  381. package/deps/couchbase-cxx-client/core/operations/document_replace.cxx +27 -24
  382. package/deps/couchbase-cxx-client/core/operations/document_replace.hxx +22 -20
  383. package/deps/couchbase-cxx-client/core/operations/document_search.cxx +322 -308
  384. package/deps/couchbase-cxx-client/core/operations/document_search.hxx +125 -121
  385. package/deps/couchbase-cxx-client/core/operations/document_touch.cxx +16 -14
  386. package/deps/couchbase-cxx-client/core/operations/document_touch.hxx +19 -17
  387. package/deps/couchbase-cxx-client/core/operations/document_unlock.cxx +16 -14
  388. package/deps/couchbase-cxx-client/core/operations/document_unlock.hxx +19 -17
  389. package/deps/couchbase-cxx-client/core/operations/document_upsert.cxx +26 -23
  390. package/deps/couchbase-cxx-client/core/operations/document_upsert.hxx +21 -19
  391. package/deps/couchbase-cxx-client/core/operations/document_view.cxx +169 -159
  392. package/deps/couchbase-cxx-client/core/operations/document_view.hxx +68 -65
  393. package/deps/couchbase-cxx-client/core/operations/http_noop.cxx +38 -35
  394. package/deps/couchbase-cxx-client/core/operations/http_noop.hxx +12 -10
  395. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_create.cxx +58 -56
  396. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_create.hxx +20 -17
  397. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_drop.cxx +49 -44
  398. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_drop.hxx +18 -15
  399. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_get_all.cxx +46 -43
  400. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataset_get_all.hxx +16 -13
  401. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_create.cxx +48 -43
  402. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_create.hxx +17 -14
  403. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_drop.cxx +48 -43
  404. package/deps/couchbase-cxx-client/core/operations/management/analytics_dataverse_drop.hxx +17 -14
  405. package/deps/couchbase-cxx-client/core/operations/management/analytics_get_pending_mutations.cxx +38 -35
  406. package/deps/couchbase-cxx-client/core/operations/management/analytics_get_pending_mutations.hxx +16 -14
  407. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_create.cxx +68 -66
  408. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_create.hxx +20 -17
  409. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_drop.cxx +56 -51
  410. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_drop.hxx +19 -16
  411. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_get_all.cxx +44 -42
  412. package/deps/couchbase-cxx-client/core/operations/management/analytics_index_get_all.hxx +16 -13
  413. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_connect.cxx +49 -43
  414. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_connect.hxx +23 -20
  415. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_create.cxx +52 -51
  416. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_create.hxx +33 -30
  417. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_disconnect.cxx +46 -42
  418. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_disconnect.hxx +22 -19
  419. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_drop.cxx +70 -67
  420. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_drop.hxx +22 -19
  421. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_get_all.cxx +92 -85
  422. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_get_all.hxx +27 -24
  423. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_replace.cxx +52 -51
  424. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_replace.hxx +33 -30
  425. package/deps/couchbase-cxx-client/core/operations/management/analytics_link_utils.hxx +6 -4
  426. package/deps/couchbase-cxx-client/core/operations/management/analytics_problem.hxx +2 -2
  427. package/deps/couchbase-cxx-client/core/operations/management/bucket_create.cxx +158 -149
  428. package/deps/couchbase-cxx-client/core/operations/management/bucket_create.hxx +14 -12
  429. package/deps/couchbase-cxx-client/core/operations/management/bucket_describe.cxx +118 -42
  430. package/deps/couchbase-cxx-client/core/operations/management/bucket_describe.hxx +47 -22
  431. package/deps/couchbase-cxx-client/core/operations/management/bucket_drop.cxx +19 -18
  432. package/deps/couchbase-cxx-client/core/operations/management/bucket_drop.hxx +13 -11
  433. package/deps/couchbase-cxx-client/core/operations/management/bucket_flush.cxx +25 -24
  434. package/deps/couchbase-cxx-client/core/operations/management/bucket_flush.hxx +13 -11
  435. package/deps/couchbase-cxx-client/core/operations/management/bucket_get.cxx +24 -22
  436. package/deps/couchbase-cxx-client/core/operations/management/bucket_get.hxx +14 -12
  437. package/deps/couchbase-cxx-client/core/operations/management/bucket_get_all.cxx +25 -23
  438. package/deps/couchbase-cxx-client/core/operations/management/bucket_get_all.hxx +13 -11
  439. package/deps/couchbase-cxx-client/core/operations/management/bucket_update.cxx +112 -107
  440. package/deps/couchbase-cxx-client/core/operations/management/bucket_update.hxx +15 -13
  441. package/deps/couchbase-cxx-client/core/operations/management/change_password.cxx +22 -20
  442. package/deps/couchbase-cxx-client/core/operations/management/change_password.hxx +13 -11
  443. package/deps/couchbase-cxx-client/core/operations/management/cluster_describe.cxx +52 -50
  444. package/deps/couchbase-cxx-client/core/operations/management/cluster_describe.hxx +31 -29
  445. package/deps/couchbase-cxx-client/core/operations/management/cluster_developer_preview_enable.cxx +14 -12
  446. package/deps/couchbase-cxx-client/core/operations/management/cluster_developer_preview_enable.hxx +13 -11
  447. package/deps/couchbase-cxx-client/core/operations/management/collection_create.cxx +48 -46
  448. package/deps/couchbase-cxx-client/core/operations/management/collection_create.hxx +19 -16
  449. package/deps/couchbase-cxx-client/core/operations/management/collection_drop.cxx +37 -35
  450. package/deps/couchbase-cxx-client/core/operations/management/collection_drop.hxx +16 -14
  451. package/deps/couchbase-cxx-client/core/operations/management/collection_update.cxx +49 -47
  452. package/deps/couchbase-cxx-client/core/operations/management/collection_update.hxx +19 -16
  453. package/deps/couchbase-cxx-client/core/operations/management/collections_manifest_get.cxx +11 -9
  454. package/deps/couchbase-cxx-client/core/operations/management/collections_manifest_get.hxx +17 -13
  455. package/deps/couchbase-cxx-client/core/operations/management/error_utils.cxx +210 -198
  456. package/deps/couchbase-cxx-client/core/operations/management/error_utils.hxx +3 -1
  457. package/deps/couchbase-cxx-client/core/operations/management/eventing_deploy_function.cxx +30 -28
  458. package/deps/couchbase-cxx-client/core/operations/management/eventing_deploy_function.hxx +17 -14
  459. package/deps/couchbase-cxx-client/core/operations/management/eventing_drop_function.cxx +31 -29
  460. package/deps/couchbase-cxx-client/core/operations/management/eventing_drop_function.hxx +17 -14
  461. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_all_functions.cxx +49 -43
  462. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_all_functions.hxx +17 -14
  463. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_function.cxx +29 -27
  464. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_function.hxx +18 -15
  465. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_status.cxx +45 -39
  466. package/deps/couchbase-cxx-client/core/operations/management/eventing_get_status.hxx +17 -14
  467. package/deps/couchbase-cxx-client/core/operations/management/eventing_pause_function.cxx +30 -28
  468. package/deps/couchbase-cxx-client/core/operations/management/eventing_pause_function.hxx +17 -14
  469. package/deps/couchbase-cxx-client/core/operations/management/eventing_problem.hxx +3 -3
  470. package/deps/couchbase-cxx-client/core/operations/management/eventing_resume_function.cxx +30 -28
  471. package/deps/couchbase-cxx-client/core/operations/management/eventing_resume_function.hxx +17 -14
  472. package/deps/couchbase-cxx-client/core/operations/management/eventing_undeploy_function.cxx +30 -28
  473. package/deps/couchbase-cxx-client/core/operations/management/eventing_undeploy_function.hxx +17 -14
  474. package/deps/couchbase-cxx-client/core/operations/management/eventing_upsert_function.cxx +328 -318
  475. package/deps/couchbase-cxx-client/core/operations/management/eventing_upsert_function.hxx +17 -14
  476. package/deps/couchbase-cxx-client/core/operations/management/freeform.cxx +23 -22
  477. package/deps/couchbase-cxx-client/core/operations/management/freeform.hxx +19 -17
  478. package/deps/couchbase-cxx-client/core/operations/management/group_drop.cxx +18 -17
  479. package/deps/couchbase-cxx-client/core/operations/management/group_drop.hxx +13 -11
  480. package/deps/couchbase-cxx-client/core/operations/management/group_get.cxx +25 -23
  481. package/deps/couchbase-cxx-client/core/operations/management/group_get.hxx +14 -12
  482. package/deps/couchbase-cxx-client/core/operations/management/group_get_all.cxx +23 -22
  483. package/deps/couchbase-cxx-client/core/operations/management/group_get_all.hxx +13 -11
  484. package/deps/couchbase-cxx-client/core/operations/management/group_upsert.cxx +58 -55
  485. package/deps/couchbase-cxx-client/core/operations/management/group_upsert.hxx +14 -12
  486. package/deps/couchbase-cxx-client/core/operations/management/query_index_build.cxx +53 -48
  487. package/deps/couchbase-cxx-client/core/operations/management/query_index_build.hxx +25 -22
  488. package/deps/couchbase-cxx-client/core/operations/management/query_index_build_deferred.hxx +75 -67
  489. package/deps/couchbase-cxx-client/core/operations/management/query_index_create.cxx +128 -122
  490. package/deps/couchbase-cxx-client/core/operations/management/query_index_create.hxx +31 -28
  491. package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.cxx +95 -93
  492. package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.hxx +26 -24
  493. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.cxx +97 -93
  494. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.hxx +24 -21
  495. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all_deferred.cxx +66 -62
  496. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all_deferred.hxx +24 -22
  497. package/deps/couchbase-cxx-client/core/operations/management/role_get_all.cxx +24 -22
  498. package/deps/couchbase-cxx-client/core/operations/management/role_get_all.hxx +13 -11
  499. package/deps/couchbase-cxx-client/core/operations/management/scope_create.cxx +38 -36
  500. package/deps/couchbase-cxx-client/core/operations/management/scope_create.hxx +15 -13
  501. package/deps/couchbase-cxx-client/core/operations/management/scope_drop.cxx +33 -32
  502. package/deps/couchbase-cxx-client/core/operations/management/scope_drop.hxx +15 -13
  503. package/deps/couchbase-cxx-client/core/operations/management/scope_get_all.cxx +27 -25
  504. package/deps/couchbase-cxx-client/core/operations/management/scope_get_all.hxx +14 -12
  505. package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.cxx +12 -10
  506. package/deps/couchbase-cxx-client/core/operations/management/search_get_stats.hxx +13 -11
  507. package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.cxx +72 -67
  508. package/deps/couchbase-cxx-client/core/operations/management/search_index_analyze_document.hxx +20 -18
  509. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.cxx +62 -59
  510. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_ingest.hxx +19 -16
  511. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.cxx +62 -59
  512. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_plan_freeze.hxx +19 -17
  513. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.cxx +62 -59
  514. package/deps/couchbase-cxx-client/core/operations/management/search_index_control_query.hxx +19 -16
  515. package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.cxx +58 -55
  516. package/deps/couchbase-cxx-client/core/operations/management/search_index_drop.hxx +18 -15
  517. package/deps/couchbase-cxx-client/core/operations/management/search_index_get.cxx +59 -56
  518. package/deps/couchbase-cxx-client/core/operations/management/search_index_get.hxx +18 -16
  519. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.cxx +51 -46
  520. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_all.hxx +18 -15
  521. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.cxx +66 -61
  522. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_documents_count.hxx +19 -17
  523. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_stats.cxx +38 -36
  524. package/deps/couchbase-cxx-client/core/operations/management/search_index_get_stats.hxx +17 -14
  525. package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.cxx +98 -95
  526. package/deps/couchbase-cxx-client/core/operations/management/search_index_upsert.hxx +20 -17
  527. package/deps/couchbase-cxx-client/core/operations/management/user_drop.cxx +18 -17
  528. package/deps/couchbase-cxx-client/core/operations/management/user_drop.hxx +16 -12
  529. package/deps/couchbase-cxx-client/core/operations/management/user_get.cxx +25 -23
  530. package/deps/couchbase-cxx-client/core/operations/management/user_get.hxx +17 -13
  531. package/deps/couchbase-cxx-client/core/operations/management/user_get_all.cxx +24 -22
  532. package/deps/couchbase-cxx-client/core/operations/management/user_get_all.hxx +16 -12
  533. package/deps/couchbase-cxx-client/core/operations/management/user_upsert.cxx +63 -60
  534. package/deps/couchbase-cxx-client/core/operations/management/user_upsert.hxx +17 -13
  535. package/deps/couchbase-cxx-client/core/operations/management/view_index_drop.cxx +16 -12
  536. package/deps/couchbase-cxx-client/core/operations/management/view_index_drop.hxx +15 -13
  537. package/deps/couchbase-cxx-client/core/operations/management/view_index_get.cxx +40 -35
  538. package/deps/couchbase-cxx-client/core/operations/management/view_index_get.hxx +16 -14
  539. package/deps/couchbase-cxx-client/core/operations/management/view_index_get_all.cxx +73 -69
  540. package/deps/couchbase-cxx-client/core/operations/management/view_index_get_all.hxx +16 -13
  541. package/deps/couchbase-cxx-client/core/operations/management/view_index_upsert.cxx +39 -35
  542. package/deps/couchbase-cxx-client/core/operations/management/view_index_upsert.hxx +15 -12
  543. package/deps/couchbase-cxx-client/core/origin.cxx +259 -249
  544. package/deps/couchbase-cxx-client/core/origin.hxx +55 -49
  545. package/deps/couchbase-cxx-client/core/pending_operation.hxx +3 -3
  546. package/deps/couchbase-cxx-client/core/ping_collector.hxx +3 -3
  547. package/deps/couchbase-cxx-client/core/ping_options.hxx +30 -30
  548. package/deps/couchbase-cxx-client/core/ping_reporter.hxx +3 -3
  549. package/deps/couchbase-cxx-client/core/platform/backtrace.c +100 -91
  550. package/deps/couchbase-cxx-client/core/platform/base64.cc +135 -134
  551. package/deps/couchbase-cxx-client/core/platform/dirutils.cc +66 -63
  552. package/deps/couchbase-cxx-client/core/platform/random.cc +43 -42
  553. package/deps/couchbase-cxx-client/core/platform/random.h +4 -4
  554. package/deps/couchbase-cxx-client/core/platform/string_hex.cc +42 -40
  555. package/deps/couchbase-cxx-client/core/platform/terminate_handler.cc +54 -52
  556. package/deps/couchbase-cxx-client/core/platform/uuid.cc +47 -47
  557. package/deps/couchbase-cxx-client/core/protocol/client_opcode.hxx +336 -327
  558. package/deps/couchbase-cxx-client/core/protocol/client_opcode_fmt.hxx +291 -291
  559. package/deps/couchbase-cxx-client/core/protocol/client_request.cxx +13 -10
  560. package/deps/couchbase-cxx-client/core/protocol/client_request.hxx +133 -130
  561. package/deps/couchbase-cxx-client/core/protocol/client_response.cxx +40 -40
  562. package/deps/couchbase-cxx-client/core/protocol/client_response.hxx +153 -150
  563. package/deps/couchbase-cxx-client/core/protocol/cmd_append.cxx +24 -23
  564. package/deps/couchbase-cxx-client/core/protocol/cmd_append.hxx +65 -65
  565. package/deps/couchbase-cxx-client/core/protocol/cmd_cluster_map_change_notification.cxx +25 -21
  566. package/deps/couchbase-cxx-client/core/protocol/cmd_cluster_map_change_notification.hxx +33 -25
  567. package/deps/couchbase-cxx-client/core/protocol/cmd_decrement.cxx +38 -38
  568. package/deps/couchbase-cxx-client/core/protocol/cmd_decrement.hxx +87 -87
  569. package/deps/couchbase-cxx-client/core/protocol/cmd_get.cxx +17 -17
  570. package/deps/couchbase-cxx-client/core/protocol/cmd_get.hxx +59 -59
  571. package/deps/couchbase-cxx-client/core/protocol/cmd_get_and_lock.cxx +20 -20
  572. package/deps/couchbase-cxx-client/core/protocol/cmd_get_and_lock.hxx +72 -72
  573. package/deps/couchbase-cxx-client/core/protocol/cmd_get_and_touch.cxx +20 -20
  574. package/deps/couchbase-cxx-client/core/protocol/cmd_get_and_touch.hxx +72 -72
  575. package/deps/couchbase-cxx-client/core/protocol/cmd_get_cluster_config.cxx +46 -39
  576. package/deps/couchbase-cxx-client/core/protocol/cmd_get_cluster_config.hxx +57 -49
  577. package/deps/couchbase-cxx-client/core/protocol/cmd_get_collection_id.cxx +17 -17
  578. package/deps/couchbase-cxx-client/core/protocol/cmd_get_collection_id.hxx +59 -59
  579. package/deps/couchbase-cxx-client/core/protocol/cmd_get_collections_manifest.cxx +16 -14
  580. package/deps/couchbase-cxx-client/core/protocol/cmd_get_collections_manifest.hxx +39 -39
  581. package/deps/couchbase-cxx-client/core/protocol/cmd_get_error_map.cxx +18 -17
  582. package/deps/couchbase-cxx-client/core/protocol/cmd_get_error_map.hxx +62 -62
  583. package/deps/couchbase-cxx-client/core/protocol/cmd_get_meta.cxx +24 -23
  584. package/deps/couchbase-cxx-client/core/protocol/cmd_get_meta.hxx +81 -79
  585. package/deps/couchbase-cxx-client/core/protocol/cmd_get_replica.cxx +23 -23
  586. package/deps/couchbase-cxx-client/core/protocol/cmd_get_replica.hxx +44 -44
  587. package/deps/couchbase-cxx-client/core/protocol/cmd_hello.cxx +28 -27
  588. package/deps/couchbase-cxx-client/core/protocol/cmd_hello.hxx +106 -105
  589. package/deps/couchbase-cxx-client/core/protocol/cmd_increment.cxx +38 -38
  590. package/deps/couchbase-cxx-client/core/protocol/cmd_increment.hxx +87 -87
  591. package/deps/couchbase-cxx-client/core/protocol/cmd_info.hxx +3 -3
  592. package/deps/couchbase-cxx-client/core/protocol/cmd_insert.cxx +27 -27
  593. package/deps/couchbase-cxx-client/core/protocol/cmd_insert.hxx +81 -81
  594. package/deps/couchbase-cxx-client/core/protocol/cmd_lookup_in.cxx +54 -51
  595. package/deps/couchbase-cxx-client/core/protocol/cmd_lookup_in.hxx +90 -90
  596. package/deps/couchbase-cxx-client/core/protocol/cmd_lookup_in_replica.cxx +54 -51
  597. package/deps/couchbase-cxx-client/core/protocol/cmd_lookup_in_replica.hxx +88 -88
  598. package/deps/couchbase-cxx-client/core/protocol/cmd_mutate_in.cxx +105 -97
  599. package/deps/couchbase-cxx-client/core/protocol/cmd_mutate_in.hxx +161 -153
  600. package/deps/couchbase-cxx-client/core/protocol/cmd_noop.cxx +4 -4
  601. package/deps/couchbase-cxx-client/core/protocol/cmd_noop.hxx +32 -32
  602. package/deps/couchbase-cxx-client/core/protocol/cmd_observe_seqno.cxx +36 -34
  603. package/deps/couchbase-cxx-client/core/protocol/cmd_observe_seqno.hxx +89 -89
  604. package/deps/couchbase-cxx-client/core/protocol/cmd_prepend.cxx +22 -22
  605. package/deps/couchbase-cxx-client/core/protocol/cmd_prepend.hxx +63 -63
  606. package/deps/couchbase-cxx-client/core/protocol/cmd_remove.cxx +23 -23
  607. package/deps/couchbase-cxx-client/core/protocol/cmd_remove.hxx +54 -54
  608. package/deps/couchbase-cxx-client/core/protocol/cmd_replace.cxx +28 -28
  609. package/deps/couchbase-cxx-client/core/protocol/cmd_replace.hxx +88 -88
  610. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_auth.cxx +17 -15
  611. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_auth.hxx +56 -56
  612. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_list_mechs.cxx +24 -19
  613. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_list_mechs.hxx +39 -39
  614. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_step.cxx +17 -15
  615. package/deps/couchbase-cxx-client/core/protocol/cmd_sasl_step.hxx +56 -56
  616. package/deps/couchbase-cxx-client/core/protocol/cmd_select_bucket.cxx +6 -6
  617. package/deps/couchbase-cxx-client/core/protocol/cmd_select_bucket.hxx +36 -36
  618. package/deps/couchbase-cxx-client/core/protocol/cmd_touch.cxx +8 -8
  619. package/deps/couchbase-cxx-client/core/protocol/cmd_touch.hxx +38 -38
  620. package/deps/couchbase-cxx-client/core/protocol/cmd_unlock.cxx +5 -5
  621. package/deps/couchbase-cxx-client/core/protocol/cmd_unlock.hxx +36 -36
  622. package/deps/couchbase-cxx-client/core/protocol/cmd_upsert.cxx +28 -28
  623. package/deps/couchbase-cxx-client/core/protocol/cmd_upsert.hxx +83 -83
  624. package/deps/couchbase-cxx-client/core/protocol/datatype.hxx +19 -18
  625. package/deps/couchbase-cxx-client/core/protocol/frame_info_id.hxx +108 -103
  626. package/deps/couchbase-cxx-client/core/protocol/frame_info_id_fmt.hxx +45 -45
  627. package/deps/couchbase-cxx-client/core/protocol/frame_info_utils.cxx +24 -21
  628. package/deps/couchbase-cxx-client/core/protocol/frame_info_utils.hxx +3 -1
  629. package/deps/couchbase-cxx-client/core/protocol/hello_feature.hxx +211 -175
  630. package/deps/couchbase-cxx-client/core/protocol/hello_feature_fmt.hxx +93 -90
  631. package/deps/couchbase-cxx-client/core/protocol/magic.hxx +24 -24
  632. package/deps/couchbase-cxx-client/core/protocol/magic_fmt.hxx +30 -30
  633. package/deps/couchbase-cxx-client/core/protocol/server_opcode.hxx +11 -11
  634. package/deps/couchbase-cxx-client/core/protocol/server_opcode_fmt.hxx +18 -18
  635. package/deps/couchbase-cxx-client/core/protocol/server_request.hxx +90 -86
  636. package/deps/couchbase-cxx-client/core/protocol/status.cxx +138 -138
  637. package/deps/couchbase-cxx-client/core/protocol/status.hxx +86 -86
  638. package/deps/couchbase-cxx-client/core/query_context.hxx +44 -43
  639. package/deps/couchbase-cxx-client/core/range_scan_load_balancer.cxx +51 -50
  640. package/deps/couchbase-cxx-client/core/range_scan_load_balancer.hxx +26 -25
  641. package/deps/couchbase-cxx-client/core/range_scan_options.cxx +2 -2
  642. package/deps/couchbase-cxx-client/core/range_scan_options.hxx +62 -59
  643. package/deps/couchbase-cxx-client/core/range_scan_orchestrator.cxx +515 -470
  644. package/deps/couchbase-cxx-client/core/range_scan_orchestrator.hxx +23 -18
  645. package/deps/couchbase-cxx-client/core/range_scan_orchestrator_options.hxx +10 -10
  646. package/deps/couchbase-cxx-client/core/resource_units.hxx +2 -2
  647. package/deps/couchbase-cxx-client/core/response_handler.hxx +8 -8
  648. package/deps/couchbase-cxx-client/core/retry_orchestrator.cxx +27 -19
  649. package/deps/couchbase-cxx-client/core/retry_orchestrator.hxx +3 -2
  650. package/deps/couchbase-cxx-client/core/sasl/client.cc +22 -18
  651. package/deps/couchbase-cxx-client/core/sasl/client.h +66 -62
  652. package/deps/couchbase-cxx-client/core/sasl/context.cc +4 -4
  653. package/deps/couchbase-cxx-client/core/sasl/context.h +19 -19
  654. package/deps/couchbase-cxx-client/core/sasl/error.h +12 -1
  655. package/deps/couchbase-cxx-client/core/sasl/error_fmt.h +42 -42
  656. package/deps/couchbase-cxx-client/core/sasl/mechanism.cc +13 -10
  657. package/deps/couchbase-cxx-client/core/sasl/mechanism.h +8 -3
  658. package/deps/couchbase-cxx-client/core/sasl/plain/plain.cc +8 -8
  659. package/deps/couchbase-cxx-client/core/sasl/plain/plain.h +25 -24
  660. package/deps/couchbase-cxx-client/core/sasl/scram-sha/scram-sha.cc +225 -218
  661. package/deps/couchbase-cxx-client/core/sasl/scram-sha/scram-sha.h +133 -115
  662. package/deps/couchbase-cxx-client/core/sasl/scram-sha/stringutils.cc +20 -20
  663. package/deps/couchbase-cxx-client/core/scan_result.cxx +38 -38
  664. package/deps/couchbase-cxx-client/core/scan_result.hxx +16 -16
  665. package/deps/couchbase-cxx-client/core/search_highlight_style.hxx +4 -1
  666. package/deps/couchbase-cxx-client/core/search_query_options.cxx +21 -21
  667. package/deps/couchbase-cxx-client/core/search_query_options.hxx +19 -18
  668. package/deps/couchbase-cxx-client/core/search_scan_consistency.hxx +3 -1
  669. package/deps/couchbase-cxx-client/core/seed_config.cxx +10 -7
  670. package/deps/couchbase-cxx-client/core/seed_config.hxx +8 -8
  671. package/deps/couchbase-cxx-client/core/service_type.hxx +7 -7
  672. package/deps/couchbase-cxx-client/core/service_type_fmt.hxx +33 -33
  673. package/deps/couchbase-cxx-client/core/stats_options.hxx +13 -13
  674. package/deps/couchbase-cxx-client/core/subdoc_options.hxx +60 -58
  675. package/deps/couchbase-cxx-client/core/tls_verify_mode.hxx +2 -2
  676. package/deps/couchbase-cxx-client/core/topology/capabilities.hxx +83 -83
  677. package/deps/couchbase-cxx-client/core/topology/capabilities_fmt.hxx +111 -111
  678. package/deps/couchbase-cxx-client/core/topology/collections_manifest.hxx +14 -14
  679. package/deps/couchbase-cxx-client/core/topology/collections_manifest_fmt.hxx +23 -21
  680. package/deps/couchbase-cxx-client/core/topology/collections_manifest_json.hxx +26 -25
  681. package/deps/couchbase-cxx-client/core/topology/configuration.cxx +213 -192
  682. package/deps/couchbase-cxx-client/core/topology/configuration.hxx +104 -91
  683. package/deps/couchbase-cxx-client/core/topology/configuration_fmt.hxx +131 -128
  684. package/deps/couchbase-cxx-client/core/topology/configuration_json.hxx +276 -242
  685. package/deps/couchbase-cxx-client/core/topology/error_map.hxx +5 -5
  686. package/deps/couchbase-cxx-client/core/topology/error_map_json.hxx +65 -60
  687. package/deps/couchbase-cxx-client/core/tracing/constants.hxx +153 -153
  688. package/deps/couchbase-cxx-client/core/tracing/noop_tracer.hxx +29 -28
  689. package/deps/couchbase-cxx-client/core/tracing/threshold_logging_options.hxx +30 -30
  690. package/deps/couchbase-cxx-client/core/tracing/threshold_logging_tracer.cxx +354 -344
  691. package/deps/couchbase-cxx-client/core/tracing/threshold_logging_tracer.hxx +12 -12
  692. package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.cxx +153 -33
  693. package/deps/couchbase-cxx-client/core/transactions/active_transaction_record.hxx +30 -118
  694. package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.cxx +8 -2
  695. package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.hxx +163 -127
  696. package/deps/couchbase-cxx-client/core/transactions/atr_cleanup_entry.cxx +358 -334
  697. package/deps/couchbase-cxx-client/core/transactions/atr_ids.cxx +270 -185
  698. package/deps/couchbase-cxx-client/core/transactions/atr_ids.hxx +4 -4
  699. package/deps/couchbase-cxx-client/core/transactions/attempt_context.cxx +9 -5
  700. package/deps/couchbase-cxx-client/core/transactions/attempt_context.hxx +194 -154
  701. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +3278 -2159
  702. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.hxx +446 -573
  703. package/deps/couchbase-cxx-client/core/transactions/attempt_context_testing_hooks.cxx +15 -10
  704. package/deps/couchbase-cxx-client/core/transactions/attempt_context_testing_hooks.hxx +58 -49
  705. package/deps/couchbase-cxx-client/core/transactions/attempt_state.hxx +72 -72
  706. package/deps/couchbase-cxx-client/core/transactions/binary.cxx +3 -3
  707. package/deps/couchbase-cxx-client/core/transactions/cleanup_testing_hooks.cxx +2 -2
  708. package/deps/couchbase-cxx-client/core/transactions/cleanup_testing_hooks.hxx +28 -24
  709. package/deps/couchbase-cxx-client/core/transactions/document_metadata.hxx +68 -68
  710. package/deps/couchbase-cxx-client/core/transactions/durability_level.hxx +53 -53
  711. package/deps/couchbase-cxx-client/core/transactions/error_class.hxx +12 -12
  712. package/deps/couchbase-cxx-client/core/transactions/error_list.hxx +22 -22
  713. package/deps/couchbase-cxx-client/core/transactions/exceptions.cxx +167 -114
  714. package/deps/couchbase-cxx-client/core/transactions/exceptions.hxx +170 -139
  715. package/deps/couchbase-cxx-client/core/transactions/exceptions_fmt.hxx +105 -0
  716. package/deps/couchbase-cxx-client/core/transactions/forward_compat.cxx +220 -0
  717. package/deps/couchbase-cxx-client/core/transactions/forward_compat.hxx +63 -207
  718. package/deps/couchbase-cxx-client/core/transactions/internal/atr_cleanup_entry.hxx +110 -102
  719. package/deps/couchbase-cxx-client/core/transactions/internal/atr_entry.hxx +144 -144
  720. package/deps/couchbase-cxx-client/core/transactions/internal/client_record.hxx +53 -50
  721. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.cxx +5 -5
  722. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.hxx +38 -35
  723. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record_fmt.hxx +17 -16
  724. package/deps/couchbase-cxx-client/core/transactions/internal/exceptions_internal.hxx +238 -281
  725. package/deps/couchbase-cxx-client/core/transactions/internal/exceptions_internal_fmt.hxx +103 -0
  726. package/deps/couchbase-cxx-client/core/transactions/internal/logging.hxx +52 -29
  727. package/deps/couchbase-cxx-client/core/transactions/internal/transaction_attempt.hxx +3 -3
  728. package/deps/couchbase-cxx-client/core/transactions/internal/transaction_context.hxx +136 -120
  729. package/deps/couchbase-cxx-client/core/transactions/internal/transaction_fields.hxx +2 -1
  730. package/deps/couchbase-cxx-client/core/transactions/internal/transactions_cleanup.hxx +127 -122
  731. package/deps/couchbase-cxx-client/core/transactions/internal/utils.hxx +244 -219
  732. package/deps/couchbase-cxx-client/core/transactions/result.cxx +41 -40
  733. package/deps/couchbase-cxx-client/core/transactions/result.hxx +143 -141
  734. package/deps/couchbase-cxx-client/core/transactions/result_fmt.hxx +21 -20
  735. package/deps/couchbase-cxx-client/core/transactions/staged_mutation.cxx +759 -627
  736. package/deps/couchbase-cxx-client/core/transactions/staged_mutation.hxx +175 -156
  737. package/deps/couchbase-cxx-client/core/transactions/transaction_context.cxx +231 -179
  738. package/deps/couchbase-cxx-client/core/transactions/transaction_get_result.cxx +185 -198
  739. package/deps/couchbase-cxx-client/core/transactions/transaction_get_result.hxx +207 -222
  740. package/deps/couchbase-cxx-client/core/transactions/transaction_keyspace.cxx +15 -11
  741. package/deps/couchbase-cxx-client/core/transactions/transaction_links.cxx +11 -7
  742. package/deps/couchbase-cxx-client/core/transactions/transaction_links.hxx +222 -201
  743. package/deps/couchbase-cxx-client/core/transactions/transaction_options.cxx +44 -41
  744. package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +167 -125
  745. package/deps/couchbase-cxx-client/core/transactions/transactions_cleanup.cxx +491 -424
  746. package/deps/couchbase-cxx-client/core/transactions/transactions_config.cxx +25 -19
  747. package/deps/couchbase-cxx-client/core/transactions/uid_generator.cxx +3 -3
  748. package/deps/couchbase-cxx-client/core/transactions/uid_generator.hxx +2 -2
  749. package/deps/couchbase-cxx-client/core/transactions/utils.cxx +82 -69
  750. package/deps/couchbase-cxx-client/core/transactions/waitable_op_list.hxx +154 -140
  751. package/deps/couchbase-cxx-client/core/transactions.hxx +184 -180
  752. package/deps/couchbase-cxx-client/core/utils/binary.cxx +3 -3
  753. package/deps/couchbase-cxx-client/core/utils/binary.hxx +19 -15
  754. package/deps/couchbase-cxx-client/core/utils/byteswap.hxx +17 -17
  755. package/deps/couchbase-cxx-client/core/utils/connection_string.cxx +395 -328
  756. package/deps/couchbase-cxx-client/core/utils/connection_string.hxx +37 -36
  757. package/deps/couchbase-cxx-client/core/utils/crc32.hxx +42 -34
  758. package/deps/couchbase-cxx-client/core/utils/duration_parser.cxx +142 -133
  759. package/deps/couchbase-cxx-client/core/utils/duration_parser.hxx +9 -9
  760. package/deps/couchbase-cxx-client/core/utils/join_strings.hxx +24 -24
  761. package/deps/couchbase-cxx-client/core/utils/json.cxx +234 -228
  762. package/deps/couchbase-cxx-client/core/utils/json.hxx +12 -12
  763. package/deps/couchbase-cxx-client/core/utils/json_stream_control.hxx +8 -8
  764. package/deps/couchbase-cxx-client/core/utils/json_streaming_lexer.cxx +288 -263
  765. package/deps/couchbase-cxx-client/core/utils/json_streaming_lexer.hxx +20 -17
  766. package/deps/couchbase-cxx-client/core/utils/keyspace.hxx +22 -21
  767. package/deps/couchbase-cxx-client/core/utils/movable_function.hxx +78 -76
  768. package/deps/couchbase-cxx-client/core/utils/mutation_token.cxx +7 -3
  769. package/deps/couchbase-cxx-client/core/utils/mutation_token.hxx +3 -1
  770. package/deps/couchbase-cxx-client/core/utils/name_codec.hxx +13 -13
  771. package/deps/couchbase-cxx-client/core/utils/split_string.cxx +9 -9
  772. package/deps/couchbase-cxx-client/core/utils/split_string.hxx +2 -2
  773. package/deps/couchbase-cxx-client/core/utils/unsigned_leb128.hxx +92 -88
  774. package/deps/couchbase-cxx-client/core/utils/url_codec.cxx +301 -297
  775. package/deps/couchbase-cxx-client/core/utils/url_codec.hxx +35 -35
  776. package/deps/couchbase-cxx-client/core/vector_query_combination.hxx +4 -1
  777. package/deps/couchbase-cxx-client/core/view_on_error.hxx +4 -3
  778. package/deps/couchbase-cxx-client/core/view_query_options.cxx +21 -21
  779. package/deps/couchbase-cxx-client/core/view_query_options.hxx +23 -22
  780. package/deps/couchbase-cxx-client/core/view_scan_consistency.hxx +3 -3
  781. package/deps/couchbase-cxx-client/core/view_sort_order.hxx +4 -1
  782. package/deps/couchbase-cxx-client/core/wait_until_ready_options.hxx +11 -10
  783. package/deps/couchbase-cxx-client/couchbase/allow_querying_search_index_options.hxx +11 -11
  784. package/deps/couchbase-cxx-client/couchbase/analytics_index_manager.hxx +423 -405
  785. package/deps/couchbase-cxx-client/couchbase/analytics_meta_data.hxx +105 -105
  786. package/deps/couchbase-cxx-client/couchbase/analytics_metrics.hxx +120 -118
  787. package/deps/couchbase-cxx-client/couchbase/analytics_options.hxx +318 -292
  788. package/deps/couchbase-cxx-client/couchbase/analytics_result.hxx +56 -55
  789. package/deps/couchbase-cxx-client/couchbase/analytics_scan_consistency.hxx +24 -21
  790. package/deps/couchbase-cxx-client/couchbase/analytics_status.hxx +10 -10
  791. package/deps/couchbase-cxx-client/couchbase/analytics_warning.hxx +44 -43
  792. package/deps/couchbase-cxx-client/couchbase/analyze_document_options.hxx +9 -9
  793. package/deps/couchbase-cxx-client/couchbase/append_options.hxx +51 -47
  794. package/deps/couchbase-cxx-client/couchbase/behavior_options.hxx +75 -69
  795. package/deps/couchbase-cxx-client/couchbase/best_effort_retry_strategy.hxx +12 -10
  796. package/deps/couchbase-cxx-client/couchbase/binary_collection.hxx +213 -183
  797. package/deps/couchbase-cxx-client/couchbase/boolean_field_query.hxx +38 -38
  798. package/deps/couchbase-cxx-client/couchbase/boolean_query.hxx +166 -157
  799. package/deps/couchbase-cxx-client/couchbase/bucket.hxx +69 -68
  800. package/deps/couchbase-cxx-client/couchbase/bucket_manager.hxx +97 -88
  801. package/deps/couchbase-cxx-client/couchbase/build_query_index_options.hxx +22 -21
  802. package/deps/couchbase-cxx-client/couchbase/cas.hxx +74 -73
  803. package/deps/couchbase-cxx-client/couchbase/certificate_authenticator.hxx +10 -10
  804. package/deps/couchbase-cxx-client/couchbase/cluster.hxx +266 -310
  805. package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +235 -241
  806. package/deps/couchbase-cxx-client/couchbase/codec/binary_noop_serializer.hxx +11 -11
  807. package/deps/couchbase-cxx-client/couchbase/codec/codec_flags.hxx +39 -35
  808. package/deps/couchbase-cxx-client/couchbase/codec/encoded_value.hxx +15 -2
  809. package/deps/couchbase-cxx-client/couchbase/codec/json_transcoder.hxx +17 -15
  810. package/deps/couchbase-cxx-client/couchbase/codec/raw_binary_transcoder.hxx +19 -17
  811. package/deps/couchbase-cxx-client/couchbase/codec/raw_json_transcoder.hxx +31 -24
  812. package/deps/couchbase-cxx-client/couchbase/codec/raw_string_transcoder.hxx +20 -18
  813. package/deps/couchbase-cxx-client/couchbase/codec/tao_json_serializer.hxx +38 -30
  814. package/deps/couchbase-cxx-client/couchbase/collection.hxx +1007 -902
  815. package/deps/couchbase-cxx-client/couchbase/collection_manager.hxx +115 -107
  816. package/deps/couchbase-cxx-client/couchbase/collection_query_index_manager.hxx +200 -188
  817. package/deps/couchbase-cxx-client/couchbase/common_durability_options.hxx +68 -62
  818. package/deps/couchbase-cxx-client/couchbase/common_options.hxx +67 -67
  819. package/deps/couchbase-cxx-client/couchbase/compression_options.hxx +33 -33
  820. package/deps/couchbase-cxx-client/couchbase/configuration_profile.hxx +12 -11
  821. package/deps/couchbase-cxx-client/couchbase/configuration_profiles_registry.hxx +24 -22
  822. package/deps/couchbase-cxx-client/couchbase/conjunction_query.hxx +47 -45
  823. package/deps/couchbase-cxx-client/couchbase/connect_link_analytics_options.hxx +74 -72
  824. package/deps/couchbase-cxx-client/couchbase/counter_result.hxx +32 -32
  825. package/deps/couchbase-cxx-client/couchbase/create_bucket_options.hxx +9 -10
  826. package/deps/couchbase-cxx-client/couchbase/create_collection_options.hxx +35 -34
  827. package/deps/couchbase-cxx-client/couchbase/create_dataset_analytics_options.hxx +76 -76
  828. package/deps/couchbase-cxx-client/couchbase/create_dataverse_analytics_options.hxx +44 -44
  829. package/deps/couchbase-cxx-client/couchbase/create_index_analytics_options.hxx +60 -60
  830. package/deps/couchbase-cxx-client/couchbase/create_link_analytics_options.hxx +25 -25
  831. package/deps/couchbase-cxx-client/couchbase/create_primary_query_index_options.hxx +95 -94
  832. package/deps/couchbase-cxx-client/couchbase/create_query_index_options.hxx +97 -96
  833. package/deps/couchbase-cxx-client/couchbase/create_scope_options.hxx +9 -9
  834. package/deps/couchbase-cxx-client/couchbase/date_range.hxx +29 -27
  835. package/deps/couchbase-cxx-client/couchbase/date_range_facet.hxx +20 -20
  836. package/deps/couchbase-cxx-client/couchbase/date_range_facet_result.hxx +14 -14
  837. package/deps/couchbase-cxx-client/couchbase/date_range_query.hxx +219 -205
  838. package/deps/couchbase-cxx-client/couchbase/decrement_options.hxx +93 -91
  839. package/deps/couchbase-cxx-client/couchbase/diagnostics_options.hxx +42 -41
  840. package/deps/couchbase-cxx-client/couchbase/diagnostics_result.hxx +82 -83
  841. package/deps/couchbase-cxx-client/couchbase/disallow_querying_search_index_options.hxx +11 -10
  842. package/deps/couchbase-cxx-client/couchbase/disconnect_link_analytics_options.hxx +62 -62
  843. package/deps/couchbase-cxx-client/couchbase/disjunction_query.hxx +61 -60
  844. package/deps/couchbase-cxx-client/couchbase/dns_options.hxx +30 -30
  845. package/deps/couchbase-cxx-client/couchbase/doc_id_query.hxx +69 -69
  846. package/deps/couchbase-cxx-client/couchbase/drop_bucket_options.hxx +9 -9
  847. package/deps/couchbase-cxx-client/couchbase/drop_collection_options.hxx +9 -9
  848. package/deps/couchbase-cxx-client/couchbase/drop_dataset_analytics_options.hxx +60 -60
  849. package/deps/couchbase-cxx-client/couchbase/drop_dataverse_analytics_options.hxx +44 -44
  850. package/deps/couchbase-cxx-client/couchbase/drop_index_analytics_options.hxx +60 -60
  851. package/deps/couchbase-cxx-client/couchbase/drop_link_analytics_options.hxx +25 -25
  852. package/deps/couchbase-cxx-client/couchbase/drop_primary_query_index_options.hxx +58 -58
  853. package/deps/couchbase-cxx-client/couchbase/drop_query_index_options.hxx +44 -44
  854. package/deps/couchbase-cxx-client/couchbase/drop_scope_options.hxx +9 -9
  855. package/deps/couchbase-cxx-client/couchbase/drop_search_index_options.hxx +9 -9
  856. package/deps/couchbase-cxx-client/couchbase/durability_level.hxx +32 -29
  857. package/deps/couchbase-cxx-client/couchbase/endpoint_diagnostics.hxx +171 -171
  858. package/deps/couchbase-cxx-client/couchbase/endpoint_ping_report.hxx +166 -169
  859. package/deps/couchbase-cxx-client/couchbase/error.hxx +51 -0
  860. package/deps/couchbase-cxx-client/couchbase/error_codes.hxx +975 -940
  861. package/deps/couchbase-cxx-client/couchbase/error_context.hxx +19 -152
  862. package/deps/couchbase-cxx-client/couchbase/exists_options.hxx +25 -24
  863. package/deps/couchbase-cxx-client/couchbase/exists_result.hxx +32 -32
  864. package/deps/couchbase-cxx-client/couchbase/fail_fast_retry_strategy.hxx +4 -4
  865. package/deps/couchbase-cxx-client/couchbase/flush_bucket_options.hxx +9 -9
  866. package/deps/couchbase-cxx-client/couchbase/fmt/analytics_scan_consistency.hxx +18 -18
  867. package/deps/couchbase-cxx-client/couchbase/fmt/analytics_status.hxx +42 -42
  868. package/deps/couchbase-cxx-client/couchbase/fmt/cas.hxx +10 -10
  869. package/deps/couchbase-cxx-client/couchbase/fmt/durability_level.hxx +24 -24
  870. package/deps/couchbase-cxx-client/couchbase/fmt/error.hxx +53 -0
  871. package/deps/couchbase-cxx-client/couchbase/fmt/error_context.hxx +43 -0
  872. package/deps/couchbase-cxx-client/couchbase/fmt/mutation_token.hxx +15 -11
  873. package/deps/couchbase-cxx-client/couchbase/fmt/query_profile.hxx +21 -21
  874. package/deps/couchbase-cxx-client/couchbase/fmt/query_scan_consistency.hxx +18 -18
  875. package/deps/couchbase-cxx-client/couchbase/fmt/query_status.hxx +42 -42
  876. package/deps/couchbase-cxx-client/couchbase/fmt/retry_reason.hxx +75 -75
  877. package/deps/couchbase-cxx-client/couchbase/fmt/search_scan_consistency.hxx +15 -15
  878. package/deps/couchbase-cxx-client/couchbase/fmt/tls_verify_mode.hxx +18 -18
  879. package/deps/couchbase-cxx-client/couchbase/fmt/transaction_keyspace.hxx +15 -11
  880. package/deps/couchbase-cxx-client/couchbase/fork_event.hxx +12 -12
  881. package/deps/couchbase-cxx-client/couchbase/freeze_plan_search_index_options.hxx +9 -9
  882. package/deps/couchbase-cxx-client/couchbase/geo_bounding_box_query.hxx +71 -64
  883. package/deps/couchbase-cxx-client/couchbase/geo_distance_query.hxx +73 -66
  884. package/deps/couchbase-cxx-client/couchbase/geo_point.hxx +2 -2
  885. package/deps/couchbase-cxx-client/couchbase/geo_polygon_query.hxx +40 -39
  886. package/deps/couchbase-cxx-client/couchbase/get_all_buckets_options.hxx +9 -9
  887. package/deps/couchbase-cxx-client/couchbase/get_all_datasets_analytics_options.hxx +25 -25
  888. package/deps/couchbase-cxx-client/couchbase/get_all_indexes_analytics_options.hxx +26 -25
  889. package/deps/couchbase-cxx-client/couchbase/get_all_query_indexes_options.hxx +27 -25
  890. package/deps/couchbase-cxx-client/couchbase/get_all_replicas_options.hxx +49 -26
  891. package/deps/couchbase-cxx-client/couchbase/get_all_scopes_options.hxx +9 -9
  892. package/deps/couchbase-cxx-client/couchbase/get_all_search_indexes_options.hxx +9 -9
  893. package/deps/couchbase-cxx-client/couchbase/get_and_lock_options.hxx +25 -24
  894. package/deps/couchbase-cxx-client/couchbase/get_and_touch_options.hxx +25 -24
  895. package/deps/couchbase-cxx-client/couchbase/get_any_replica_options.hxx +49 -26
  896. package/deps/couchbase-cxx-client/couchbase/get_bucket_options.hxx +9 -9
  897. package/deps/couchbase-cxx-client/couchbase/get_indexed_search_index_options.hxx +9 -9
  898. package/deps/couchbase-cxx-client/couchbase/get_links_analytics_options.hxx +74 -74
  899. package/deps/couchbase-cxx-client/couchbase/get_options.hxx +63 -60
  900. package/deps/couchbase-cxx-client/couchbase/get_pending_mutations_analytics_options.hxx +30 -28
  901. package/deps/couchbase-cxx-client/couchbase/get_replica_result.hxx +79 -75
  902. package/deps/couchbase-cxx-client/couchbase/get_result.hxx +86 -80
  903. package/deps/couchbase-cxx-client/couchbase/get_search_index_options.hxx +9 -9
  904. package/deps/couchbase-cxx-client/couchbase/highlight_style.hxx +14 -14
  905. package/deps/couchbase-cxx-client/couchbase/increment_options.hxx +94 -91
  906. package/deps/couchbase-cxx-client/couchbase/insert_options.hxx +62 -59
  907. package/deps/couchbase-cxx-client/couchbase/ip_protocol.hxx +3 -3
  908. package/deps/couchbase-cxx-client/couchbase/logger.hxx +51 -0
  909. package/deps/couchbase-cxx-client/couchbase/lookup_in_all_replicas_options.hxx +54 -43
  910. package/deps/couchbase-cxx-client/couchbase/lookup_in_any_replica_options.hxx +54 -44
  911. package/deps/couchbase-cxx-client/couchbase/lookup_in_options.hxx +40 -40
  912. package/deps/couchbase-cxx-client/couchbase/lookup_in_replica_result.hxx +38 -35
  913. package/deps/couchbase-cxx-client/couchbase/lookup_in_result.hxx +222 -216
  914. package/deps/couchbase-cxx-client/couchbase/lookup_in_specs.hxx +101 -101
  915. package/deps/couchbase-cxx-client/couchbase/management/analytics_dataset.hxx +16 -16
  916. package/deps/couchbase-cxx-client/couchbase/management/analytics_index.hxx +16 -16
  917. package/deps/couchbase-cxx-client/couchbase/management/analytics_link.hxx +193 -189
  918. package/deps/couchbase-cxx-client/couchbase/management/bucket_settings.hxx +91 -75
  919. package/deps/couchbase-cxx-client/couchbase/management/collection_spec.hxx +4 -4
  920. package/deps/couchbase-cxx-client/couchbase/management/query_index.hxx +10 -10
  921. package/deps/couchbase-cxx-client/couchbase/management/scope_spec.hxx +2 -2
  922. package/deps/couchbase-cxx-client/couchbase/management/search_index.hxx +9 -9
  923. package/deps/couchbase-cxx-client/couchbase/match_all_query.hxx +10 -9
  924. package/deps/couchbase-cxx-client/couchbase/match_none_query.hxx +10 -9
  925. package/deps/couchbase-cxx-client/couchbase/match_operator.hxx +15 -14
  926. package/deps/couchbase-cxx-client/couchbase/match_phrase_query.hxx +70 -65
  927. package/deps/couchbase-cxx-client/couchbase/match_query.hxx +115 -114
  928. package/deps/couchbase-cxx-client/couchbase/metrics/meter.hxx +33 -30
  929. package/deps/couchbase-cxx-client/couchbase/metrics/otel_meter.hxx +86 -74
  930. package/deps/couchbase-cxx-client/couchbase/metrics_options.hxx +34 -34
  931. package/deps/couchbase-cxx-client/couchbase/mutate_in_options.hxx +160 -149
  932. package/deps/couchbase-cxx-client/couchbase/mutate_in_result.hxx +130 -123
  933. package/deps/couchbase-cxx-client/couchbase/mutate_in_specs.hxx +473 -454
  934. package/deps/couchbase-cxx-client/couchbase/mutation_result.hxx +32 -32
  935. package/deps/couchbase-cxx-client/couchbase/mutation_state.hxx +35 -34
  936. package/deps/couchbase-cxx-client/couchbase/mutation_token.hxx +78 -78
  937. package/deps/couchbase-cxx-client/couchbase/network_options.hxx +101 -72
  938. package/deps/couchbase-cxx-client/couchbase/numeric_range.hxx +26 -26
  939. package/deps/couchbase-cxx-client/couchbase/numeric_range_facet.hxx +20 -20
  940. package/deps/couchbase-cxx-client/couchbase/numeric_range_facet_result.hxx +14 -14
  941. package/deps/couchbase-cxx-client/couchbase/numeric_range_query.hxx +97 -95
  942. package/deps/couchbase-cxx-client/couchbase/password_authenticator.hxx +17 -17
  943. package/deps/couchbase-cxx-client/couchbase/pause_ingest_search_index_options.hxx +11 -10
  944. package/deps/couchbase-cxx-client/couchbase/persist_to.hxx +45 -44
  945. package/deps/couchbase-cxx-client/couchbase/phrase_query.hxx +69 -65
  946. package/deps/couchbase-cxx-client/couchbase/ping_options.hxx +55 -54
  947. package/deps/couchbase-cxx-client/couchbase/ping_result.hxx +79 -77
  948. package/deps/couchbase-cxx-client/couchbase/prefix_query.hxx +43 -40
  949. package/deps/couchbase-cxx-client/couchbase/prepend_options.hxx +51 -47
  950. package/deps/couchbase-cxx-client/couchbase/query_index_manager.hxx +207 -199
  951. package/deps/couchbase-cxx-client/couchbase/query_meta_data.hxx +120 -120
  952. package/deps/couchbase-cxx-client/couchbase/query_metrics.hxx +135 -133
  953. package/deps/couchbase-cxx-client/couchbase/query_options.hxx +518 -493
  954. package/deps/couchbase-cxx-client/couchbase/query_profile.hxx +29 -26
  955. package/deps/couchbase-cxx-client/couchbase/query_result.hxx +56 -55
  956. package/deps/couchbase-cxx-client/couchbase/query_scan_consistency.hxx +24 -21
  957. package/deps/couchbase-cxx-client/couchbase/query_status.hxx +10 -10
  958. package/deps/couchbase-cxx-client/couchbase/query_string_query.hxx +34 -29
  959. package/deps/couchbase-cxx-client/couchbase/query_warning.hxx +75 -71
  960. package/deps/couchbase-cxx-client/couchbase/read_preference.hxx +58 -0
  961. package/deps/couchbase-cxx-client/couchbase/regexp_query.hxx +40 -39
  962. package/deps/couchbase-cxx-client/couchbase/remove_options.hxx +51 -47
  963. package/deps/couchbase-cxx-client/couchbase/replace_link_analytics_options.hxx +25 -25
  964. package/deps/couchbase-cxx-client/couchbase/replace_options.hxx +112 -104
  965. package/deps/couchbase-cxx-client/couchbase/replicate_to.hxx +28 -28
  966. package/deps/couchbase-cxx-client/couchbase/result.hxx +28 -28
  967. package/deps/couchbase-cxx-client/couchbase/resume_ingest_search_index_options.hxx +11 -10
  968. package/deps/couchbase-cxx-client/couchbase/retry_action.hxx +10 -10
  969. package/deps/couchbase-cxx-client/couchbase/retry_reason.hxx +53 -51
  970. package/deps/couchbase-cxx-client/couchbase/retry_request.hxx +7 -7
  971. package/deps/couchbase-cxx-client/couchbase/retry_strategy.hxx +4 -4
  972. package/deps/couchbase-cxx-client/couchbase/scan_options.hxx +114 -108
  973. package/deps/couchbase-cxx-client/couchbase/scan_result.hxx +97 -96
  974. package/deps/couchbase-cxx-client/couchbase/scan_result_item.hxx +120 -118
  975. package/deps/couchbase-cxx-client/couchbase/scan_type.hxx +237 -232
  976. package/deps/couchbase-cxx-client/couchbase/scope.hxx +164 -157
  977. package/deps/couchbase-cxx-client/couchbase/scope_search_index_manager.hxx +263 -238
  978. package/deps/couchbase-cxx-client/couchbase/search_date_range.hxx +32 -29
  979. package/deps/couchbase-cxx-client/couchbase/search_facet.hxx +25 -25
  980. package/deps/couchbase-cxx-client/couchbase/search_facet_result.hxx +11 -11
  981. package/deps/couchbase-cxx-client/couchbase/search_geo_distance_units.hxx +11 -1
  982. package/deps/couchbase-cxx-client/couchbase/search_index_manager.hxx +261 -238
  983. package/deps/couchbase-cxx-client/couchbase/search_meta_data.hxx +37 -37
  984. package/deps/couchbase-cxx-client/couchbase/search_metrics.hxx +84 -83
  985. package/deps/couchbase-cxx-client/couchbase/search_numeric_range.hxx +32 -32
  986. package/deps/couchbase-cxx-client/couchbase/search_options.hxx +449 -435
  987. package/deps/couchbase-cxx-client/couchbase/search_query.hxx +32 -30
  988. package/deps/couchbase-cxx-client/couchbase/search_request.hxx +69 -68
  989. package/deps/couchbase-cxx-client/couchbase/search_result.hxx +29 -26
  990. package/deps/couchbase-cxx-client/couchbase/search_row.hxx +52 -52
  991. package/deps/couchbase-cxx-client/couchbase/search_row_location.hxx +20 -20
  992. package/deps/couchbase-cxx-client/couchbase/search_row_locations.hxx +39 -38
  993. package/deps/couchbase-cxx-client/couchbase/search_scan_consistency.hxx +11 -10
  994. package/deps/couchbase-cxx-client/couchbase/search_sort.hxx +20 -20
  995. package/deps/couchbase-cxx-client/couchbase/search_sort_field.hxx +77 -71
  996. package/deps/couchbase-cxx-client/couchbase/search_sort_field_missing.hxx +2 -2
  997. package/deps/couchbase-cxx-client/couchbase/search_sort_field_mode.hxx +3 -3
  998. package/deps/couchbase-cxx-client/couchbase/search_sort_field_type.hxx +4 -4
  999. package/deps/couchbase-cxx-client/couchbase/search_sort_geo_distance.hxx +41 -41
  1000. package/deps/couchbase-cxx-client/couchbase/search_sort_id.hxx +23 -23
  1001. package/deps/couchbase-cxx-client/couchbase/search_sort_score.hxx +23 -23
  1002. package/deps/couchbase-cxx-client/couchbase/search_term_range.hxx +17 -17
  1003. package/deps/couchbase-cxx-client/couchbase/security_options.hxx +50 -50
  1004. package/deps/couchbase-cxx-client/couchbase/service_type.hxx +34 -34
  1005. package/deps/couchbase-cxx-client/couchbase/store_semantics.hxx +28 -28
  1006. package/deps/couchbase-cxx-client/couchbase/subdoc/array_add_unique.hxx +54 -54
  1007. package/deps/couchbase-cxx-client/couchbase/subdoc/array_append.hxx +40 -40
  1008. package/deps/couchbase-cxx-client/couchbase/subdoc/array_insert.hxx +41 -41
  1009. package/deps/couchbase-cxx-client/couchbase/subdoc/array_prepend.hxx +41 -41
  1010. package/deps/couchbase-cxx-client/couchbase/subdoc/count.hxx +24 -24
  1011. package/deps/couchbase-cxx-client/couchbase/subdoc/counter.hxx +41 -41
  1012. package/deps/couchbase-cxx-client/couchbase/subdoc/exists.hxx +24 -24
  1013. package/deps/couchbase-cxx-client/couchbase/subdoc/get.hxx +45 -29
  1014. package/deps/couchbase-cxx-client/couchbase/subdoc/insert.hxx +70 -54
  1015. package/deps/couchbase-cxx-client/couchbase/subdoc/lookup_in_macro.hxx +13 -12
  1016. package/deps/couchbase-cxx-client/couchbase/subdoc/mutate_in_macro.hxx +7 -2
  1017. package/deps/couchbase-cxx-client/couchbase/subdoc/remove.hxx +24 -24
  1018. package/deps/couchbase-cxx-client/couchbase/subdoc/replace.hxx +55 -39
  1019. package/deps/couchbase-cxx-client/couchbase/subdoc/upsert.hxx +70 -54
  1020. package/deps/couchbase-cxx-client/couchbase/term_facet.hxx +16 -16
  1021. package/deps/couchbase-cxx-client/couchbase/term_facet_result.hxx +14 -14
  1022. package/deps/couchbase-cxx-client/couchbase/term_query.hxx +107 -104
  1023. package/deps/couchbase-cxx-client/couchbase/term_range_query.hxx +99 -96
  1024. package/deps/couchbase-cxx-client/couchbase/timeout_options.hxx +118 -112
  1025. package/deps/couchbase-cxx-client/couchbase/tls_verify_mode.hxx +2 -2
  1026. package/deps/couchbase-cxx-client/couchbase/touch_options.hxx +25 -24
  1027. package/deps/couchbase-cxx-client/couchbase/tracing/otel_tracer.hxx +45 -44
  1028. package/deps/couchbase-cxx-client/couchbase/tracing/request_span.hxx +34 -34
  1029. package/deps/couchbase-cxx-client/couchbase/tracing/request_tracer.hxx +27 -25
  1030. package/deps/couchbase-cxx-client/couchbase/tracing_options.hxx +147 -142
  1031. package/deps/couchbase-cxx-client/couchbase/transactions/async_attempt_context.hxx +149 -115
  1032. package/deps/couchbase-cxx-client/couchbase/transactions/attempt_context.hxx +146 -95
  1033. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_get_result.hxx +52 -80
  1034. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_keyspace.hxx +33 -29
  1035. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_options.hxx +101 -96
  1036. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_query_options.hxx +228 -223
  1037. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_query_result.hxx +11 -12
  1038. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_result.hxx +2 -3
  1039. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_cleanup_config.hxx +105 -104
  1040. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_config.hxx +191 -187
  1041. package/deps/couchbase-cxx-client/couchbase/transactions/transactions_query_config.hxx +32 -32
  1042. package/deps/couchbase-cxx-client/couchbase/transactions.hxx +56 -37
  1043. package/deps/couchbase-cxx-client/couchbase/unfreeze_plan_search_index_options.hxx +11 -10
  1044. package/deps/couchbase-cxx-client/couchbase/unlock_options.hxx +25 -24
  1045. package/deps/couchbase-cxx-client/couchbase/update_bucket_options.hxx +9 -9
  1046. package/deps/couchbase-cxx-client/couchbase/update_collection_options.hxx +35 -34
  1047. package/deps/couchbase-cxx-client/couchbase/upsert_options.hxx +85 -80
  1048. package/deps/couchbase-cxx-client/couchbase/upsert_search_index_options.hxx +9 -9
  1049. package/deps/couchbase-cxx-client/couchbase/vector_query.hxx +82 -62
  1050. package/deps/couchbase-cxx-client/couchbase/vector_search.hxx +51 -47
  1051. package/deps/couchbase-cxx-client/couchbase/vector_search_options.hxx +45 -41
  1052. package/deps/couchbase-cxx-client/couchbase/wan_development_configuration_profile.hxx +13 -13
  1053. package/deps/couchbase-cxx-client/couchbase/watch_query_indexes_options.hxx +41 -41
  1054. package/deps/couchbase-cxx-client/couchbase/wildcard_query.hxx +42 -41
  1055. package/deps/couchbase-cxx-client/third_party/expected/include/tl/expected.hpp +1746 -1584
  1056. package/deps/couchbase-cxx-client/third_party/jsonsl/jsonsl.c +2664 -2638
  1057. package/deps/couchbase-cxx-client/third_party/jsonsl/jsonsl.h +359 -342
  1058. package/dist/binding.d.ts +39 -4
  1059. package/dist/binding.js +4 -1
  1060. package/dist/collection.js +0 -1
  1061. package/dist/diagnosticstypes.js +2 -2
  1062. package/dist/searchtypes.d.ts +0 -4
  1063. package/dist/searchtypes.js +0 -4
  1064. package/dist/transactions.d.ts +1 -0
  1065. package/dist/transactions.js +12 -2
  1066. package/dist/vectorsearch.d.ts +4 -19
  1067. package/dist/vectorsearch.js +24 -19
  1068. package/package.json +29 -28
  1069. package/src/constants.cpp +111 -75
  1070. package/src/jstocbpp_autogen.hpp +146 -15
  1071. package/src/jstocbpp_basic.hpp +23 -0
  1072. package/src/jstocbpp_errors.hpp +9 -9
  1073. package/src/jstocbpp_transactions.hpp +17 -12
  1074. package/src/transaction.cpp +10 -5
  1075. package/tools/gen-bindings-js.js +1 -0
  1076. package/tools/gen-bindings-json.py +5 -2
  1077. package/deps/couchbase-cxx-cache/asio/41f31469d0dd420500b334dc8c2fd3ffe7320d8e/asio/asio/COPYING +0 -4
  1078. package/deps/couchbase-cxx-cache/asio/41f31469d0dd420500b334dc8c2fd3ffe7320d8e/asio/asio/README +0 -4
  1079. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/crypto/obj/README +0 -15
  1080. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/crypto/perlasm/readme +0 -100
  1081. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/pki/testdata/nist-pkits/README.chromium +0 -19
  1082. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/pki/testdata/ssl/certificates/README +0 -318
  1083. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/pki/testdata/verify_certificate_chain_unittest/README +0 -87
  1084. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/pki/testdata/verify_signed_data_unittest/README +0 -35
  1085. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/third_party/fiat/README.chromium +0 -11
  1086. package/deps/couchbase-cxx-cache/boringssl/e31ea00c1ea52052d2d78d44006cc88c80fa24a9/boringssl/src/util/bot/README +0 -3
  1087. package/deps/couchbase-cxx-cache/fmt/d3c862243fcf1c41b4c09903f35479bd42f135b7/fmt/support/README +0 -4
  1088. package/deps/couchbase-cxx-client/core/impl/internal_manager_error_context.cxx +0 -113
  1089. package/deps/couchbase-cxx-client/core/impl/internal_manager_error_context.hxx +0 -60
  1090. package/deps/couchbase-cxx-client/core/impl/manager_error_context.cxx +0 -100
  1091. package/deps/couchbase-cxx-client/core/impl/search_error_context.cxx +0 -147
  1092. package/deps/couchbase-cxx-client/couchbase/analytics_error_context.hxx +0 -143
  1093. package/deps/couchbase-cxx-client/couchbase/fmt/key_value_error_map_attribute.hxx +0 -100
  1094. package/deps/couchbase-cxx-client/couchbase/fmt/key_value_status_code.hxx +0 -269
  1095. package/deps/couchbase-cxx-client/couchbase/key_value_error_context.hxx +0 -229
  1096. package/deps/couchbase-cxx-client/couchbase/key_value_error_map_attribute.hxx +0 -136
  1097. package/deps/couchbase-cxx-client/couchbase/key_value_error_map_info.hxx +0 -138
  1098. package/deps/couchbase-cxx-client/couchbase/key_value_extended_error_info.hxx +0 -86
  1099. package/deps/couchbase-cxx-client/couchbase/key_value_status_code.hxx +0 -109
  1100. package/deps/couchbase-cxx-client/couchbase/manager_error_context.hxx +0 -111
  1101. package/deps/couchbase-cxx-client/couchbase/query_error_context.hxx +0 -145
  1102. package/deps/couchbase-cxx-client/couchbase/search_error_context.hxx +0 -138
  1103. package/deps/couchbase-cxx-client/couchbase/subdocument_error_context.hxx +0 -147
  1104. package/deps/couchbase-cxx-client/couchbase/transaction_op_error_context.hxx +0 -76
@@ -30,10 +30,10 @@ namespace internal
30
30
  #include <bcrypt.h>
31
31
 
32
32
  struct HeapAllocDeleter {
33
- void operator()(PBYTE bytes)
34
- {
35
- HeapFree(GetProcessHeap(), 0, bytes);
36
- }
33
+ void operator()(PBYTE bytes)
34
+ {
35
+ HeapFree(GetProcessHeap(), 0, bytes);
36
+ }
37
37
  };
38
38
 
39
39
  using uniqueHeapPtr = std::unique_ptr<BYTE, HeapAllocDeleter>;
@@ -41,260 +41,289 @@ using uniqueHeapPtr = std::unique_ptr<BYTE, HeapAllocDeleter>;
41
41
  static inline std::string
42
42
  hash(std::string_view key, std::string_view data, LPCWSTR algorithm, int flags)
43
43
  {
44
- BCRYPT_ALG_HANDLE hAlg;
45
- NTSTATUS status = BCryptOpenAlgorithmProvider(&hAlg, algorithm, nullptr, flags);
46
- if (status < 0) {
47
- throw std::runtime_error("digest: BCryptOpenAlgorithmProvider return: " + std::to_string(status));
48
- }
49
-
50
- DWORD pcbResult = 0;
51
- DWORD cbHashObject = 0;
52
-
53
- // calculate the size of the buffer to hold the hash object
54
- status = BCryptGetProperty(hAlg, BCRYPT_OBJECT_LENGTH, reinterpret_cast<PBYTE>(&cbHashObject), sizeof(DWORD), &pcbResult, 0);
55
- if (status < 0) {
56
- BCryptCloseAlgorithmProvider(hAlg, 0);
57
- throw std::runtime_error("digest: BCryptGetProperty return: " + std::to_string(status));
58
- }
59
-
60
- // calculate the length of the hash
61
- DWORD cbHash = 0;
62
- status = BCryptGetProperty(hAlg, BCRYPT_HASH_LENGTH, reinterpret_cast<PBYTE>(&cbHash), sizeof(DWORD), &pcbResult, 0);
63
- if (status < 0) {
64
- BCryptCloseAlgorithmProvider(hAlg, 0);
65
- throw std::runtime_error("digest: BCryptGetProperty return: " + std::to_string(status));
66
- }
67
-
68
- // allocate the hash object on the heap
69
- uniqueHeapPtr pbHashObject(static_cast<PBYTE>(HeapAlloc(GetProcessHeap(), 0, cbHashObject)));
70
- if (!pbHashObject) {
71
- BCryptCloseAlgorithmProvider(hAlg, 0);
72
- throw std::bad_alloc();
73
- }
74
-
75
- std::string ret;
76
- ret.resize(cbHash);
77
-
78
- // create the hash
79
- BCRYPT_HASH_HANDLE hHash;
80
- status = BCryptCreateHash(hAlg, &hHash, pbHashObject.get(), cbHashObject, (PUCHAR)key.data(), static_cast<ULONG>(key.size()), 0);
81
- if (status < 0) {
82
- BCryptCloseAlgorithmProvider(hAlg, 0);
83
- throw std::runtime_error("digest: BCryptCreateHash return: " + std::to_string(status));
84
- }
85
-
86
- status = BCryptHashData(hHash, (PBYTE)data.data(), static_cast<ULONG>(data.size()), 0);
87
- if (status < 0) {
88
- BCryptCloseAlgorithmProvider(hAlg, 0);
89
- BCryptDestroyHash(hHash);
90
- throw std::runtime_error("digest: BCryptHashData return: " + std::to_string(status));
91
- }
44
+ BCRYPT_ALG_HANDLE hAlg;
45
+ NTSTATUS status = BCryptOpenAlgorithmProvider(&hAlg, algorithm, nullptr, flags);
46
+ if (status < 0) {
47
+ throw std::runtime_error("digest: BCryptOpenAlgorithmProvider return: " +
48
+ std::to_string(status));
49
+ }
50
+
51
+ DWORD pcbResult = 0;
52
+ DWORD cbHashObject = 0;
53
+
54
+ // calculate the size of the buffer to hold the hash object
55
+ status = BCryptGetProperty(hAlg,
56
+ BCRYPT_OBJECT_LENGTH,
57
+ reinterpret_cast<PBYTE>(&cbHashObject),
58
+ sizeof(DWORD),
59
+ &pcbResult,
60
+ 0);
61
+ if (status < 0) {
62
+ BCryptCloseAlgorithmProvider(hAlg, 0);
63
+ throw std::runtime_error("digest: BCryptGetProperty return: " + std::to_string(status));
64
+ }
65
+
66
+ // calculate the length of the hash
67
+ DWORD cbHash = 0;
68
+ status = BCryptGetProperty(
69
+ hAlg, BCRYPT_HASH_LENGTH, reinterpret_cast<PBYTE>(&cbHash), sizeof(DWORD), &pcbResult, 0);
70
+ if (status < 0) {
71
+ BCryptCloseAlgorithmProvider(hAlg, 0);
72
+ throw std::runtime_error("digest: BCryptGetProperty return: " + std::to_string(status));
73
+ }
92
74
 
93
- status = BCryptFinishHash(hHash, reinterpret_cast<std::uint8_t*>(ret.data()), cbHash, 0);
75
+ // allocate the hash object on the heap
76
+ uniqueHeapPtr pbHashObject(static_cast<PBYTE>(HeapAlloc(GetProcessHeap(), 0, cbHashObject)));
77
+ if (!pbHashObject) {
78
+ BCryptCloseAlgorithmProvider(hAlg, 0);
79
+ throw std::bad_alloc();
80
+ }
81
+
82
+ std::string ret;
83
+ ret.resize(cbHash);
84
+
85
+ // create the hash
86
+ BCRYPT_HASH_HANDLE hHash;
87
+ status = BCryptCreateHash(hAlg,
88
+ &hHash,
89
+ pbHashObject.get(),
90
+ cbHashObject,
91
+ (PUCHAR)key.data(),
92
+ static_cast<ULONG>(key.size()),
93
+ 0);
94
+ if (status < 0) {
95
+ BCryptCloseAlgorithmProvider(hAlg, 0);
96
+ throw std::runtime_error("digest: BCryptCreateHash return: " + std::to_string(status));
97
+ }
94
98
 
95
- // Release resources
99
+ status = BCryptHashData(hHash, (PBYTE)data.data(), static_cast<ULONG>(data.size()), 0);
100
+ if (status < 0) {
96
101
  BCryptCloseAlgorithmProvider(hAlg, 0);
97
102
  BCryptDestroyHash(hHash);
103
+ throw std::runtime_error("digest: BCryptHashData return: " + std::to_string(status));
104
+ }
98
105
 
99
- if (status < 0) {
100
- throw std::runtime_error("digest: BCryptFinishHash return: " + std::to_string(status));
101
- }
106
+ status = BCryptFinishHash(hHash, reinterpret_cast<std::uint8_t*>(ret.data()), cbHash, 0);
102
107
 
103
- return ret;
108
+ // Release resources
109
+ BCryptCloseAlgorithmProvider(hAlg, 0);
110
+ BCryptDestroyHash(hHash);
111
+
112
+ if (status < 0) {
113
+ throw std::runtime_error("digest: BCryptFinishHash return: " + std::to_string(status));
114
+ }
115
+
116
+ return ret;
104
117
  }
105
118
 
106
119
  static std::string
107
120
  HMAC_SHA1(std::string_view key, std::string_view data)
108
121
  {
109
- return hash(key, data, BCRYPT_SHA1_ALGORITHM, BCRYPT_ALG_HANDLE_HMAC_FLAG);
122
+ return hash(key, data, BCRYPT_SHA1_ALGORITHM, BCRYPT_ALG_HANDLE_HMAC_FLAG);
110
123
  }
111
124
 
112
125
  static std::string
113
126
  HMAC_SHA256(std::string_view key, std::string_view data)
114
127
  {
115
- return hash(key, data, BCRYPT_SHA256_ALGORITHM, BCRYPT_ALG_HANDLE_HMAC_FLAG);
128
+ return hash(key, data, BCRYPT_SHA256_ALGORITHM, BCRYPT_ALG_HANDLE_HMAC_FLAG);
116
129
  }
117
130
 
118
131
  static std::string
119
132
  HMAC_SHA512(std::string_view key, std::string_view data)
120
133
  {
121
- return hash(key, data, BCRYPT_SHA512_ALGORITHM, BCRYPT_ALG_HANDLE_HMAC_FLAG);
134
+ return hash(key, data, BCRYPT_SHA512_ALGORITHM, BCRYPT_ALG_HANDLE_HMAC_FLAG);
122
135
  }
123
136
 
124
137
  static inline std::string
125
- PBKDF2(const std::string& pass, std::string_view salt, unsigned int iterationCount, LPCWSTR algorithm)
138
+ PBKDF2(const std::string& pass,
139
+ std::string_view salt,
140
+ unsigned int iterationCount,
141
+ LPCWSTR algorithm)
126
142
  {
127
- // open an algorithm handle
128
- BCRYPT_ALG_HANDLE hAlg;
129
- NTSTATUS status;
130
-
131
- status = BCryptOpenAlgorithmProvider(&hAlg, algorithm, nullptr, BCRYPT_ALG_HANDLE_HMAC_FLAG);
132
- if (status < 0) {
133
- throw std::runtime_error("digest: BCryptOpenAlgorithmProvider return: " + std::to_string(status));
134
- }
135
-
136
- DWORD pcbResult = 0;
137
-
138
- // calculate the length of the hash
139
- DWORD cbHash = 0;
140
- status = BCryptGetProperty(hAlg, BCRYPT_HASH_LENGTH, (PBYTE)&cbHash, sizeof(DWORD), &pcbResult, 0);
141
- if (status < 0) {
142
- BCryptCloseAlgorithmProvider(hAlg, 0);
143
- throw std::runtime_error("digest: BCryptGetProperty return: " + std::to_string(status));
144
- }
145
-
146
- std::string ret;
147
- ret.resize(cbHash);
148
-
149
- status = BCryptDeriveKeyPBKDF2(hAlg,
150
- (PUCHAR)pass.data(),
151
- ULONG(pass.size()),
152
- (PUCHAR)salt.data(),
153
- ULONG(salt.size()),
154
- iterationCount,
155
- (PUCHAR)ret.data(),
156
- ULONG(ret.size()),
157
- 0);
158
-
159
- // Release resources
143
+ // open an algorithm handle
144
+ BCRYPT_ALG_HANDLE hAlg;
145
+ NTSTATUS status;
146
+
147
+ status = BCryptOpenAlgorithmProvider(&hAlg, algorithm, nullptr, BCRYPT_ALG_HANDLE_HMAC_FLAG);
148
+ if (status < 0) {
149
+ throw std::runtime_error("digest: BCryptOpenAlgorithmProvider return: " +
150
+ std::to_string(status));
151
+ }
152
+
153
+ DWORD pcbResult = 0;
154
+
155
+ // calculate the length of the hash
156
+ DWORD cbHash = 0;
157
+ status =
158
+ BCryptGetProperty(hAlg, BCRYPT_HASH_LENGTH, (PBYTE)&cbHash, sizeof(DWORD), &pcbResult, 0);
159
+ if (status < 0) {
160
160
  BCryptCloseAlgorithmProvider(hAlg, 0);
161
-
162
- if (status < 0) {
163
- throw std::runtime_error("digest: BCryptDeriveKeyPBKDF2 return: " + std::to_string(status));
164
- }
165
-
166
- return ret;
161
+ throw std::runtime_error("digest: BCryptGetProperty return: " + std::to_string(status));
162
+ }
163
+
164
+ std::string ret;
165
+ ret.resize(cbHash);
166
+
167
+ status = BCryptDeriveKeyPBKDF2(hAlg,
168
+ (PUCHAR)pass.data(),
169
+ ULONG(pass.size()),
170
+ (PUCHAR)salt.data(),
171
+ ULONG(salt.size()),
172
+ iterationCount,
173
+ (PUCHAR)ret.data(),
174
+ ULONG(ret.size()),
175
+ 0);
176
+
177
+ // Release resources
178
+ BCryptCloseAlgorithmProvider(hAlg, 0);
179
+
180
+ if (status < 0) {
181
+ throw std::runtime_error("digest: BCryptDeriveKeyPBKDF2 return: " + std::to_string(status));
182
+ }
183
+
184
+ return ret;
167
185
  }
168
186
 
169
187
  static std::string
170
188
  PBKDF2_HMAC_SHA1(const std::string& pass, std::string_view salt, unsigned int iterationCount)
171
189
  {
172
- return PBKDF2(pass, salt, iterationCount, BCRYPT_SHA1_ALGORITHM);
190
+ return PBKDF2(pass, salt, iterationCount, BCRYPT_SHA1_ALGORITHM);
173
191
  }
174
192
 
175
193
  static std::string
176
194
  PBKDF2_HMAC_SHA256(const std::string& pass, std::string_view salt, unsigned int iterationCount)
177
195
  {
178
- return PBKDF2(pass, salt, iterationCount, BCRYPT_SHA256_ALGORITHM);
196
+ return PBKDF2(pass, salt, iterationCount, BCRYPT_SHA256_ALGORITHM);
179
197
  }
180
198
 
181
199
  static std::string
182
200
  PBKDF2_HMAC_SHA512(const std::string& pass, std::string_view salt, unsigned int iterationCount)
183
201
  {
184
- return PBKDF2(pass, salt, iterationCount, BCRYPT_SHA512_ALGORITHM);
202
+ return PBKDF2(pass, salt, iterationCount, BCRYPT_SHA512_ALGORITHM);
185
203
  }
186
204
 
187
205
  static std::string
188
206
  digest_sha1(std::string_view data)
189
207
  {
190
- return hash({}, data, BCRYPT_SHA1_ALGORITHM, 0);
208
+ return hash({}, data, BCRYPT_SHA1_ALGORITHM, 0);
191
209
  }
192
210
 
193
211
  static std::string
194
212
  digest_sha256(std::string_view data)
195
213
  {
196
- return hash({}, data, BCRYPT_SHA256_ALGORITHM, 0);
214
+ return hash({}, data, BCRYPT_SHA256_ALGORITHM, 0);
197
215
  }
198
216
 
199
217
  static std::string
200
218
  digest_sha512(std::string_view data)
201
219
  {
202
- return hash({}, data, BCRYPT_SHA512_ALGORITHM, 0);
220
+ return hash({}, data, BCRYPT_SHA512_ALGORITHM, 0);
203
221
  }
204
222
 
205
223
  std::string
206
224
  AES_256_cbc(bool encrypt, std::string_view key, std::string_view iv, std::string_view data)
207
225
  {
208
- BCRYPT_ALG_HANDLE hAlg;
209
- NTSTATUS status = BCryptOpenAlgorithmProvider(&hAlg, BCRYPT_AES_ALGORITHM, nullptr, 0);
210
-
211
- if (status < 0) {
212
- throw std::runtime_error("encrypt: BCryptOpenAlgorithmProvider() return: " + std::to_string(status));
213
- }
214
-
215
- DWORD cbData = 0;
216
- DWORD cbKeyObject = 0;
226
+ BCRYPT_ALG_HANDLE hAlg;
227
+ NTSTATUS status = BCryptOpenAlgorithmProvider(&hAlg, BCRYPT_AES_ALGORITHM, nullptr, 0);
217
228
 
218
- // Calculate the size of the buffer to hold the KeyObject.
219
- status = BCryptGetProperty(hAlg, BCRYPT_OBJECT_LENGTH, (PBYTE)&cbKeyObject, sizeof(DWORD), &cbData, 0);
220
- if (status < 0) {
221
- BCryptCloseAlgorithmProvider(hAlg, 0);
222
- throw std::runtime_error("encrypt: BCryptGetProperty() return: " + std::to_string(status));
223
- }
229
+ if (status < 0) {
230
+ throw std::runtime_error("encrypt: BCryptOpenAlgorithmProvider() return: " +
231
+ std::to_string(status));
232
+ }
224
233
 
225
- // Allocate the key object on the heap.
226
- uniqueHeapPtr pbKeyObject((PBYTE)HeapAlloc(GetProcessHeap(), 0, cbKeyObject));
227
- if (!pbKeyObject) {
228
- BCryptCloseAlgorithmProvider(hAlg, 0);
229
- throw std::bad_alloc();
230
- }
231
-
232
- status = BCryptSetProperty(hAlg, BCRYPT_CHAINING_MODE, (PBYTE)BCRYPT_CHAIN_MODE_CBC, sizeof(BCRYPT_CHAIN_MODE_CBC), 0);
233
- if (status < 0) {
234
- BCryptCloseAlgorithmProvider(hAlg, 0);
235
- throw std::runtime_error("encrypt: BCryptSetProperty() return: " + std::to_string(status));
236
- }
237
-
238
- // Generate the key from supplied input key bytes.
239
- BCRYPT_KEY_HANDLE hKey;
240
- status = BCryptGenerateSymmetricKey(hAlg, &hKey, pbKeyObject.get(), cbKeyObject, (PBYTE)key.data(), ULONG(key.size()), 0);
241
- if (status < 0) {
242
- BCryptCloseAlgorithmProvider(hAlg, 0);
243
- throw std::runtime_error("encrypt: BCryptGenerateSymmetricKey() return: " + std::to_string(status));
244
- }
245
-
246
- // For some reason the API will modify the input vector.. just create a
247
- // copy.. it's small anyway
248
- std::string civ(iv.begin(), iv.end());
249
-
250
- std::string ret;
251
- ret.resize(data.size() + iv.size());
252
- if (encrypt) {
253
- status = BCryptEncrypt(hKey,
254
- (PUCHAR)data.data(),
255
- ULONG(data.size()),
256
- nullptr,
257
- (PBYTE)civ.data(),
258
- ULONG(civ.size()),
259
- reinterpret_cast<std::uint8_t*>(ret.data()),
260
- ULONG(ret.size()),
261
- &cbData,
262
- BCRYPT_BLOCK_PADDING);
263
- } else {
264
- status = BCryptDecrypt(hKey,
265
- (PUCHAR)data.data(),
266
- ULONG(data.size()),
267
- nullptr,
268
- (PBYTE)civ.data(),
269
- ULONG(civ.size()),
270
- reinterpret_cast<std::uint8_t*>(ret.data()),
271
- ULONG(ret.size()),
272
- &cbData,
273
- BCRYPT_BLOCK_PADDING);
274
- }
234
+ DWORD cbData = 0;
235
+ DWORD cbKeyObject = 0;
275
236
 
237
+ // Calculate the size of the buffer to hold the KeyObject.
238
+ status =
239
+ BCryptGetProperty(hAlg, BCRYPT_OBJECT_LENGTH, (PBYTE)&cbKeyObject, sizeof(DWORD), &cbData, 0);
240
+ if (status < 0) {
276
241
  BCryptCloseAlgorithmProvider(hAlg, 0);
277
- BCryptDestroyKey(hKey);
242
+ throw std::runtime_error("encrypt: BCryptGetProperty() return: " + std::to_string(status));
243
+ }
278
244
 
279
- if (status < 0) {
280
- throw std::runtime_error("encrypt: BCryptEncrypt() return: " + std::to_string(status));
281
- }
282
-
283
- ret.resize(cbData);
245
+ // Allocate the key object on the heap.
246
+ uniqueHeapPtr pbKeyObject((PBYTE)HeapAlloc(GetProcessHeap(), 0, cbKeyObject));
247
+ if (!pbKeyObject) {
248
+ BCryptCloseAlgorithmProvider(hAlg, 0);
249
+ throw std::bad_alloc();
250
+ }
284
251
 
285
- return ret;
252
+ status = BCryptSetProperty(
253
+ hAlg, BCRYPT_CHAINING_MODE, (PBYTE)BCRYPT_CHAIN_MODE_CBC, sizeof(BCRYPT_CHAIN_MODE_CBC), 0);
254
+ if (status < 0) {
255
+ BCryptCloseAlgorithmProvider(hAlg, 0);
256
+ throw std::runtime_error("encrypt: BCryptSetProperty() return: " + std::to_string(status));
257
+ }
258
+
259
+ // Generate the key from supplied input key bytes.
260
+ BCRYPT_KEY_HANDLE hKey;
261
+ status = BCryptGenerateSymmetricKey(
262
+ hAlg, &hKey, pbKeyObject.get(), cbKeyObject, (PBYTE)key.data(), ULONG(key.size()), 0);
263
+ if (status < 0) {
264
+ BCryptCloseAlgorithmProvider(hAlg, 0);
265
+ throw std::runtime_error("encrypt: BCryptGenerateSymmetricKey() return: " +
266
+ std::to_string(status));
267
+ }
268
+
269
+ // For some reason the API will modify the input vector.. just create a
270
+ // copy.. it's small anyway
271
+ std::string civ(iv.begin(), iv.end());
272
+
273
+ std::string ret;
274
+ ret.resize(data.size() + iv.size());
275
+ if (encrypt) {
276
+ status = BCryptEncrypt(hKey,
277
+ (PUCHAR)data.data(),
278
+ ULONG(data.size()),
279
+ nullptr,
280
+ (PBYTE)civ.data(),
281
+ ULONG(civ.size()),
282
+ reinterpret_cast<std::uint8_t*>(ret.data()),
283
+ ULONG(ret.size()),
284
+ &cbData,
285
+ BCRYPT_BLOCK_PADDING);
286
+ } else {
287
+ status = BCryptDecrypt(hKey,
288
+ (PUCHAR)data.data(),
289
+ ULONG(data.size()),
290
+ nullptr,
291
+ (PBYTE)civ.data(),
292
+ ULONG(civ.size()),
293
+ reinterpret_cast<std::uint8_t*>(ret.data()),
294
+ ULONG(ret.size()),
295
+ &cbData,
296
+ BCRYPT_BLOCK_PADDING);
297
+ }
298
+
299
+ BCryptCloseAlgorithmProvider(hAlg, 0);
300
+ BCryptDestroyKey(hKey);
301
+
302
+ if (status < 0) {
303
+ throw std::runtime_error("encrypt: BCryptEncrypt() return: " + std::to_string(status));
304
+ }
305
+
306
+ ret.resize(cbData);
307
+
308
+ return ret;
286
309
  }
287
310
 
288
311
  std::string
289
- encrypt(const couchbase::core::crypto::Cipher /* cipher */, std::string_view key, std::string_view iv, std::string_view data)
312
+ encrypt(const couchbase::core::crypto::Cipher /* cipher */,
313
+ std::string_view key,
314
+ std::string_view iv,
315
+ std::string_view data)
290
316
  {
291
- return AES_256_cbc(true, key, iv, data);
317
+ return AES_256_cbc(true, key, iv, data);
292
318
  }
293
319
 
294
320
  std::string
295
- decrypt(const couchbase::core::crypto::Cipher /* cipher */, std::string_view key, std::string_view iv, std::string_view data)
321
+ decrypt(const couchbase::core::crypto::Cipher /* cipher */,
322
+ std::string_view key,
323
+ std::string_view iv,
324
+ std::string_view data)
296
325
  {
297
- return AES_256_cbc(false, key, iv, data);
326
+ return AES_256_cbc(false, key, iv, data);
298
327
  }
299
328
 
300
329
  #elif defined(__APPLE__)
@@ -307,120 +336,140 @@ decrypt(const couchbase::core::crypto::Cipher /* cipher */, std::string_view key
307
336
  static std::string
308
337
  HMAC_SHA1(std::string_view key, std::string_view data)
309
338
  {
310
- std::string ret;
311
- ret.resize(couchbase::core::crypto::SHA1_DIGEST_SIZE);
312
- CCHmac(kCCHmacAlgSHA1, key.data(), key.size(), data.data(), data.size(), reinterpret_cast<std::uint8_t*>(ret.data()));
313
- return ret;
339
+ std::string ret;
340
+ ret.resize(couchbase::core::crypto::SHA1_DIGEST_SIZE);
341
+ CCHmac(kCCHmacAlgSHA1,
342
+ key.data(),
343
+ key.size(),
344
+ data.data(),
345
+ data.size(),
346
+ reinterpret_cast<std::uint8_t*>(ret.data()));
347
+ return ret;
314
348
  }
315
349
 
316
350
  static std::string
317
351
  HMAC_SHA256(std::string_view key, std::string_view data)
318
352
  {
319
- std::string ret;
320
- ret.resize(couchbase::core::crypto::SHA256_DIGEST_SIZE);
321
- CCHmac(kCCHmacAlgSHA256, key.data(), key.size(), data.data(), data.size(), reinterpret_cast<std::uint8_t*>(ret.data()));
322
- return ret;
353
+ std::string ret;
354
+ ret.resize(couchbase::core::crypto::SHA256_DIGEST_SIZE);
355
+ CCHmac(kCCHmacAlgSHA256,
356
+ key.data(),
357
+ key.size(),
358
+ data.data(),
359
+ data.size(),
360
+ reinterpret_cast<std::uint8_t*>(ret.data()));
361
+ return ret;
323
362
  }
324
363
 
325
364
  static std::string
326
365
  HMAC_SHA512(std::string_view key, std::string_view data)
327
366
  {
328
- std::string ret;
329
- ret.resize(couchbase::core::crypto::SHA512_DIGEST_SIZE);
330
- CCHmac(kCCHmacAlgSHA512, key.data(), key.size(), data.data(), data.size(), reinterpret_cast<std::uint8_t*>(ret.data()));
331
- return ret;
367
+ std::string ret;
368
+ ret.resize(couchbase::core::crypto::SHA512_DIGEST_SIZE);
369
+ CCHmac(kCCHmacAlgSHA512,
370
+ key.data(),
371
+ key.size(),
372
+ data.data(),
373
+ data.size(),
374
+ reinterpret_cast<std::uint8_t*>(ret.data()));
375
+ return ret;
332
376
  }
333
377
 
334
378
  static std::string
335
379
  PBKDF2_HMAC_SHA1(const std::string& pass, std::string_view salt, unsigned int iterationCount)
336
380
  {
337
- std::string ret;
338
- ret.resize(couchbase::core::crypto::SHA1_DIGEST_SIZE);
339
- auto err = CCKeyDerivationPBKDF(kCCPBKDF2,
340
- pass.data(),
341
- pass.size(),
342
- reinterpret_cast<const std::uint8_t*>(salt.data()),
343
- salt.size(),
344
- kCCPRFHmacAlgSHA1,
345
- iterationCount,
346
- reinterpret_cast<std::uint8_t*>(ret.data()),
347
- ret.size());
348
-
349
- if (err != 0) {
350
- throw std::runtime_error("couchbase::core::crypto::PBKDF2_HMAC(SHA1): CCKeyDerivationPBKDF failed: " + std::to_string(err));
351
- }
352
- return ret;
381
+ std::string ret;
382
+ ret.resize(couchbase::core::crypto::SHA1_DIGEST_SIZE);
383
+ auto err = CCKeyDerivationPBKDF(kCCPBKDF2,
384
+ pass.data(),
385
+ pass.size(),
386
+ reinterpret_cast<const std::uint8_t*>(salt.data()),
387
+ salt.size(),
388
+ kCCPRFHmacAlgSHA1,
389
+ iterationCount,
390
+ reinterpret_cast<std::uint8_t*>(ret.data()),
391
+ ret.size());
392
+
393
+ if (err != 0) {
394
+ throw std::runtime_error(
395
+ "couchbase::core::crypto::PBKDF2_HMAC(SHA1): CCKeyDerivationPBKDF failed: " +
396
+ std::to_string(err));
397
+ }
398
+ return ret;
353
399
  }
354
400
 
355
401
  static std::string
356
402
  PBKDF2_HMAC_SHA256(const std::string& pass, std::string_view salt, unsigned int iterationCount)
357
403
  {
358
- std::string ret;
359
- ret.resize(couchbase::core::crypto::SHA256_DIGEST_SIZE);
360
- auto err = CCKeyDerivationPBKDF(kCCPBKDF2,
361
- pass.data(),
362
- pass.size(),
363
- reinterpret_cast<const std::uint8_t*>(salt.data()),
364
- salt.size(),
365
- kCCPRFHmacAlgSHA256,
366
- iterationCount,
367
- reinterpret_cast<std::uint8_t*>(ret.data()),
368
- ret.size());
369
- if (err != 0) {
370
- throw std::runtime_error("couchbase::core::crypto::PBKDF2_HMAC(SHA256): CCKeyDerivationPBKDF "
371
- "failed: " +
372
- std::to_string(err));
373
- }
374
- return ret;
404
+ std::string ret;
405
+ ret.resize(couchbase::core::crypto::SHA256_DIGEST_SIZE);
406
+ auto err = CCKeyDerivationPBKDF(kCCPBKDF2,
407
+ pass.data(),
408
+ pass.size(),
409
+ reinterpret_cast<const std::uint8_t*>(salt.data()),
410
+ salt.size(),
411
+ kCCPRFHmacAlgSHA256,
412
+ iterationCount,
413
+ reinterpret_cast<std::uint8_t*>(ret.data()),
414
+ ret.size());
415
+ if (err != 0) {
416
+ throw std::runtime_error("couchbase::core::crypto::PBKDF2_HMAC(SHA256): CCKeyDerivationPBKDF "
417
+ "failed: " +
418
+ std::to_string(err));
419
+ }
420
+ return ret;
375
421
  }
376
422
 
377
423
  static std::string
378
424
  PBKDF2_HMAC_SHA512(const std::string& pass, std::string_view salt, unsigned int iterationCount)
379
425
  {
380
- std::string ret;
381
- ret.resize(couchbase::core::crypto::SHA512_DIGEST_SIZE);
382
- auto err = CCKeyDerivationPBKDF(kCCPBKDF2,
383
- pass.data(),
384
- pass.size(),
385
- reinterpret_cast<const std::uint8_t*>(salt.data()),
386
- salt.size(),
387
- kCCPRFHmacAlgSHA512,
388
- iterationCount,
389
- reinterpret_cast<std::uint8_t*>(ret.data()),
390
- ret.size());
391
- if (err != 0) {
392
- throw std::runtime_error("couchbase::core::crypto::PBKDF2_HMAC(SHA512): CCKeyDerivationPBKDF "
393
- "failed: " +
394
- std::to_string(err));
395
- }
396
- return ret;
426
+ std::string ret;
427
+ ret.resize(couchbase::core::crypto::SHA512_DIGEST_SIZE);
428
+ auto err = CCKeyDerivationPBKDF(kCCPBKDF2,
429
+ pass.data(),
430
+ pass.size(),
431
+ reinterpret_cast<const std::uint8_t*>(salt.data()),
432
+ salt.size(),
433
+ kCCPRFHmacAlgSHA512,
434
+ iterationCount,
435
+ reinterpret_cast<std::uint8_t*>(ret.data()),
436
+ ret.size());
437
+ if (err != 0) {
438
+ throw std::runtime_error("couchbase::core::crypto::PBKDF2_HMAC(SHA512): CCKeyDerivationPBKDF "
439
+ "failed: " +
440
+ std::to_string(err));
441
+ }
442
+ return ret;
397
443
  }
398
444
 
399
445
  static std::string
400
446
  digest_sha1(std::string_view data)
401
447
  {
402
- std::string ret;
403
- ret.resize(couchbase::core::crypto::SHA1_DIGEST_SIZE);
404
- CC_SHA1(data.data(), static_cast<CC_LONG>(data.size()), reinterpret_cast<std::uint8_t*>(ret.data()));
405
- return ret;
448
+ std::string ret;
449
+ ret.resize(couchbase::core::crypto::SHA1_DIGEST_SIZE);
450
+ CC_SHA1(
451
+ data.data(), static_cast<CC_LONG>(data.size()), reinterpret_cast<std::uint8_t*>(ret.data()));
452
+ return ret;
406
453
  }
407
454
 
408
455
  static std::string
409
456
  digest_sha256(std::string_view data)
410
457
  {
411
- std::string ret;
412
- ret.resize(couchbase::core::crypto::SHA256_DIGEST_SIZE);
413
- CC_SHA256(data.data(), static_cast<CC_LONG>(data.size()), reinterpret_cast<std::uint8_t*>(ret.data()));
414
- return ret;
458
+ std::string ret;
459
+ ret.resize(couchbase::core::crypto::SHA256_DIGEST_SIZE);
460
+ CC_SHA256(
461
+ data.data(), static_cast<CC_LONG>(data.size()), reinterpret_cast<std::uint8_t*>(ret.data()));
462
+ return ret;
415
463
  }
416
464
 
417
465
  static std::string
418
466
  digest_sha512(std::string_view data)
419
467
  {
420
- std::string ret;
421
- ret.resize(couchbase::core::crypto::SHA512_DIGEST_SIZE);
422
- CC_SHA512(data.data(), static_cast<CC_LONG>(data.size()), reinterpret_cast<std::uint8_t*>(ret.data()));
423
- return ret;
468
+ std::string ret;
469
+ ret.resize(couchbase::core::crypto::SHA512_DIGEST_SIZE);
470
+ CC_SHA512(
471
+ data.data(), static_cast<CC_LONG>(data.size()), reinterpret_cast<std::uint8_t*>(ret.data()));
472
+ return ret;
424
473
  }
425
474
 
426
475
  /**
@@ -430,85 +479,99 @@ digest_sha512(std::string_view data)
430
479
  * Currently only AES_256_cbc is supported
431
480
  */
432
481
  static void
433
- validateEncryptionCipher(const couchbase::core::crypto::Cipher cipher, std::string_view key, std::string_view iv)
434
- {
435
- switch (cipher) {
436
- case couchbase::core::crypto::Cipher::AES_256_cbc:
437
- if (key.size() != kCCKeySizeAES256) {
438
- throw std::invalid_argument("couchbase::core::crypto::validateEncryptionCipher: Cipher requires a "
439
- "key "
440
- "length of " +
441
- std::to_string(kCCKeySizeAES256) + " provided key with length " + std::to_string(key.size()));
442
- }
443
-
444
- if (iv.size() != 16) {
445
- throw std::invalid_argument("couchbase::core::crypto::validateEncryptionCipher: Cipher requires a "
446
- "iv "
447
- "length of 16 provided iv with length " +
448
- std::to_string(iv.size()));
449
- }
450
- return;
451
- }
452
-
453
- throw std::invalid_argument("couchbase::core::crypto::validateEncryptionCipher: Unknown Cipher " + std::to_string(int(cipher)));
482
+ validateEncryptionCipher(const couchbase::core::crypto::Cipher cipher,
483
+ std::string_view key,
484
+ std::string_view iv)
485
+ {
486
+ switch (cipher) {
487
+ case couchbase::core::crypto::Cipher::AES_256_cbc:
488
+ if (key.size() != kCCKeySizeAES256) {
489
+ throw std::invalid_argument(
490
+ "couchbase::core::crypto::validateEncryptionCipher: Cipher requires a "
491
+ "key "
492
+ "length of " +
493
+ std::to_string(kCCKeySizeAES256) + " provided key with length " +
494
+ std::to_string(key.size()));
495
+ }
496
+
497
+ if (iv.size() != 16) {
498
+ throw std::invalid_argument(
499
+ "couchbase::core::crypto::validateEncryptionCipher: Cipher requires a "
500
+ "iv "
501
+ "length of 16 provided iv with length " +
502
+ std::to_string(iv.size()));
503
+ }
504
+ return;
505
+ }
506
+
507
+ throw std::invalid_argument("couchbase::core::crypto::validateEncryptionCipher: Unknown Cipher " +
508
+ std::to_string(int(cipher)));
454
509
  }
455
510
 
456
511
  std::string
457
- encrypt(const couchbase::core::crypto::Cipher cipher, std::string_view key, std::string_view iv, std::string_view data)
458
- {
459
- size_t outputsize = 0;
460
- std::string ret;
461
- ret.resize(data.size() + kCCBlockSizeAES128);
462
-
463
- validateEncryptionCipher(cipher, key, iv);
464
-
465
- auto status = CCCrypt(kCCEncrypt,
466
- kCCAlgorithmAES128,
467
- kCCOptionPKCS7Padding,
468
- key.data(),
469
- kCCKeySizeAES256,
470
- iv.data(),
471
- data.data(),
472
- data.size(),
473
- reinterpret_cast<std::uint8_t*>(ret.data()),
474
- ret.size(),
475
- &outputsize);
476
-
477
- if (status != kCCSuccess) {
478
- throw std::runtime_error("couchbase::core::crypto::encrypt: CCCrypt failed: " + std::to_string(status));
479
- }
480
-
481
- ret.resize(outputsize);
482
- return ret;
512
+ encrypt(const couchbase::core::crypto::Cipher cipher,
513
+ std::string_view key,
514
+ std::string_view iv,
515
+ std::string_view data)
516
+ {
517
+ size_t outputsize = 0;
518
+ std::string ret;
519
+ ret.resize(data.size() + kCCBlockSizeAES128);
520
+
521
+ validateEncryptionCipher(cipher, key, iv);
522
+
523
+ auto status = CCCrypt(kCCEncrypt,
524
+ kCCAlgorithmAES128,
525
+ kCCOptionPKCS7Padding,
526
+ key.data(),
527
+ kCCKeySizeAES256,
528
+ iv.data(),
529
+ data.data(),
530
+ data.size(),
531
+ reinterpret_cast<std::uint8_t*>(ret.data()),
532
+ ret.size(),
533
+ &outputsize);
534
+
535
+ if (status != kCCSuccess) {
536
+ throw std::runtime_error("couchbase::core::crypto::encrypt: CCCrypt failed: " +
537
+ std::to_string(status));
538
+ }
539
+
540
+ ret.resize(outputsize);
541
+ return ret;
483
542
  }
484
543
 
485
544
  std::string
486
- decrypt(const couchbase::core::crypto::Cipher cipher, std::string_view key, std::string_view iv, std::string_view data)
487
- {
488
- size_t outputsize = 0;
489
- std::string ret;
490
- ret.resize(data.size());
491
-
492
- validateEncryptionCipher(cipher, key, iv);
493
-
494
- auto status = CCCrypt(kCCDecrypt,
495
- kCCAlgorithmAES128,
496
- kCCOptionPKCS7Padding,
497
- key.data(),
498
- kCCKeySizeAES256,
499
- iv.data(),
500
- data.data(),
501
- data.size(),
502
- reinterpret_cast<std::uint8_t*>(ret.data()),
503
- ret.size(),
504
- &outputsize);
505
-
506
- if (status != kCCSuccess) {
507
- throw std::runtime_error("couchbase::core::crypto::decrypt: CCCrypt failed: " + std::to_string(status));
508
- }
509
-
510
- ret.resize(outputsize);
511
- return ret;
545
+ decrypt(const couchbase::core::crypto::Cipher cipher,
546
+ std::string_view key,
547
+ std::string_view iv,
548
+ std::string_view data)
549
+ {
550
+ size_t outputsize = 0;
551
+ std::string ret;
552
+ ret.resize(data.size());
553
+
554
+ validateEncryptionCipher(cipher, key, iv);
555
+
556
+ auto status = CCCrypt(kCCDecrypt,
557
+ kCCAlgorithmAES128,
558
+ kCCOptionPKCS7Padding,
559
+ key.data(),
560
+ kCCKeySizeAES256,
561
+ iv.data(),
562
+ data.data(),
563
+ data.size(),
564
+ reinterpret_cast<std::uint8_t*>(ret.data()),
565
+ ret.size(),
566
+ &outputsize);
567
+
568
+ if (status != kCCSuccess) {
569
+ throw std::runtime_error("couchbase::core::crypto::decrypt: CCCrypt failed: " +
570
+ std::to_string(status));
571
+ }
572
+
573
+ ret.resize(outputsize);
574
+ return ret;
512
575
  }
513
576
 
514
577
  #else
@@ -523,195 +586,205 @@ decrypt(const couchbase::core::crypto::Cipher cipher, std::string_view key, std:
523
586
  static std::string
524
587
  HMAC_SHA1(std::string_view key, std::string_view data)
525
588
  {
526
- std::string ret;
527
- ret.resize(couchbase::core::crypto::SHA1_DIGEST_SIZE);
589
+ std::string ret;
590
+ ret.resize(couchbase::core::crypto::SHA1_DIGEST_SIZE);
528
591
 
529
592
  #ifdef COUCHBASE_CXX_CLIENT_STATIC_BORINGSSL
530
- auto key_size = key.size();
593
+ auto key_size = key.size();
531
594
  #else
532
- auto key_size = static_cast<int>(key.size());
595
+ auto key_size = static_cast<int>(key.size());
533
596
  #endif
534
597
 
535
- if (HMAC(EVP_sha1(),
536
- key.data(),
537
- key_size,
538
- reinterpret_cast<const std::uint8_t*>(data.data()),
539
- data.size(),
540
- reinterpret_cast<std::uint8_t*>(ret.data()),
541
- nullptr) == nullptr) {
542
- throw std::runtime_error("couchbase::core::crypto::HMAC(SHA1): HMAC failed");
543
- }
544
- return ret;
598
+ if (HMAC(EVP_sha1(),
599
+ key.data(),
600
+ key_size,
601
+ reinterpret_cast<const std::uint8_t*>(data.data()),
602
+ data.size(),
603
+ reinterpret_cast<std::uint8_t*>(ret.data()),
604
+ nullptr) == nullptr) {
605
+ throw std::runtime_error("couchbase::core::crypto::HMAC(SHA1): HMAC failed");
606
+ }
607
+ return ret;
545
608
  }
546
609
 
547
610
  static std::string
548
611
  HMAC_SHA256(std::string_view key, std::string_view data)
549
612
  {
550
- std::string ret;
551
- ret.resize(couchbase::core::crypto::SHA256_DIGEST_SIZE);
613
+ std::string ret;
614
+ ret.resize(couchbase::core::crypto::SHA256_DIGEST_SIZE);
552
615
  #ifdef COUCHBASE_CXX_CLIENT_STATIC_BORINGSSL
553
- auto key_size = key.size();
616
+ auto key_size = key.size();
554
617
  #else
555
- auto key_size = static_cast<int>(key.size());
618
+ auto key_size = static_cast<int>(key.size());
556
619
  #endif
557
- if (HMAC(EVP_sha256(),
558
- key.data(),
559
- key_size,
560
- reinterpret_cast<const std::uint8_t*>(data.data()),
561
- data.size(),
562
- reinterpret_cast<std::uint8_t*>(ret.data()),
563
- nullptr) == nullptr) {
564
- throw std::runtime_error("couchbase::core::crypto::HMAC(SHA256): HMAC failed");
565
- }
566
- return ret;
620
+ if (HMAC(EVP_sha256(),
621
+ key.data(),
622
+ key_size,
623
+ reinterpret_cast<const std::uint8_t*>(data.data()),
624
+ data.size(),
625
+ reinterpret_cast<std::uint8_t*>(ret.data()),
626
+ nullptr) == nullptr) {
627
+ throw std::runtime_error("couchbase::core::crypto::HMAC(SHA256): HMAC failed");
628
+ }
629
+ return ret;
567
630
  }
568
631
 
569
632
  static std::string
570
633
  HMAC_SHA512(std::string_view key, std::string_view data)
571
634
  {
572
- std::string ret;
573
- ret.resize(couchbase::core::crypto::SHA512_DIGEST_SIZE);
635
+ std::string ret;
636
+ ret.resize(couchbase::core::crypto::SHA512_DIGEST_SIZE);
574
637
  #ifdef COUCHBASE_CXX_CLIENT_STATIC_BORINGSSL
575
- auto key_size = key.size();
638
+ auto key_size = key.size();
576
639
  #else
577
- auto key_size = static_cast<int>(key.size());
640
+ auto key_size = static_cast<int>(key.size());
578
641
  #endif
579
- if (HMAC(EVP_sha512(),
580
- key.data(),
581
- key_size,
582
- reinterpret_cast<const std::uint8_t*>(data.data()),
583
- data.size(),
584
- reinterpret_cast<std::uint8_t*>(ret.data()),
585
- nullptr) == nullptr) {
586
- throw std::runtime_error("couchbase::core::crypto::HMAC(SHA512): HMAC failed");
587
- }
588
- return ret;
642
+ if (HMAC(EVP_sha512(),
643
+ key.data(),
644
+ key_size,
645
+ reinterpret_cast<const std::uint8_t*>(data.data()),
646
+ data.size(),
647
+ reinterpret_cast<std::uint8_t*>(ret.data()),
648
+ nullptr) == nullptr) {
649
+ throw std::runtime_error("couchbase::core::crypto::HMAC(SHA512): HMAC failed");
650
+ }
651
+ return ret;
589
652
  }
590
653
 
591
654
  static std::string
592
655
  PBKDF2_HMAC_SHA1(const std::string& pass, std::string_view salt, unsigned int iterationCount)
593
656
  {
594
- std::string ret;
595
- ret.resize(couchbase::core::crypto::SHA1_DIGEST_SIZE);
657
+ std::string ret;
658
+ ret.resize(couchbase::core::crypto::SHA1_DIGEST_SIZE);
596
659
  #ifdef COUCHBASE_CXX_CLIENT_STATIC_BORINGSSL
597
- auto pw_size = pass.size();
598
- auto salt_size = salt.size();
599
- auto iteration_count = iterationCount;
660
+ auto pw_size = pass.size();
661
+ auto salt_size = salt.size();
662
+ auto iteration_count = iterationCount;
600
663
  #else
601
- auto pw_size = int(pass.size());
602
- auto salt_size = int(salt.size());
603
- auto iteration_count = int(iterationCount);
664
+ auto pw_size = int(pass.size());
665
+ auto salt_size = int(salt.size());
666
+ auto iteration_count = int(iterationCount);
604
667
  #endif
605
- auto err = PKCS5_PBKDF2_HMAC(pass.data(),
606
- pw_size,
607
- reinterpret_cast<const std::uint8_t*>(salt.data()),
608
- salt_size,
609
- iteration_count,
610
- EVP_sha1(),
611
- couchbase::core::crypto::SHA1_DIGEST_SIZE,
612
- reinterpret_cast<std::uint8_t*>(ret.data()));
613
-
614
- if (err != 1) {
615
- throw std::runtime_error("couchbase::core::crypto::PBKDF2_HMAC(SHA1): PKCS5_PBKDF2_HMAC_SHA1 "
616
- "failed: " +
617
- std::to_string(err));
618
- }
619
-
620
- return ret;
668
+ auto err = PKCS5_PBKDF2_HMAC(pass.data(),
669
+ pw_size,
670
+ reinterpret_cast<const std::uint8_t*>(salt.data()),
671
+ salt_size,
672
+ iteration_count,
673
+ EVP_sha1(),
674
+ couchbase::core::crypto::SHA1_DIGEST_SIZE,
675
+ reinterpret_cast<std::uint8_t*>(ret.data()));
676
+
677
+ if (err != 1) {
678
+ throw std::runtime_error("couchbase::core::crypto::PBKDF2_HMAC(SHA1): PKCS5_PBKDF2_HMAC_SHA1 "
679
+ "failed: " +
680
+ std::to_string(err));
681
+ }
682
+
683
+ return ret;
621
684
  }
622
685
 
623
686
  static std::string
624
687
  PBKDF2_HMAC_SHA256(const std::string& pass, std::string_view salt, unsigned int iterationCount)
625
688
  {
626
- std::string ret;
627
- ret.resize(couchbase::core::crypto::SHA256_DIGEST_SIZE);
689
+ std::string ret;
690
+ ret.resize(couchbase::core::crypto::SHA256_DIGEST_SIZE);
628
691
  #ifdef COUCHBASE_CXX_CLIENT_STATIC_BORINGSSL
629
- auto pw_size = pass.size();
630
- auto salt_size = salt.size();
631
- auto iteration_count = iterationCount;
692
+ auto pw_size = pass.size();
693
+ auto salt_size = salt.size();
694
+ auto iteration_count = iterationCount;
632
695
  #else
633
- auto pw_size = int(pass.size());
634
- auto salt_size = int(salt.size());
635
- auto iteration_count = int(iterationCount);
696
+ auto pw_size = int(pass.size());
697
+ auto salt_size = int(salt.size());
698
+ auto iteration_count = int(iterationCount);
636
699
  #endif
637
- auto err = PKCS5_PBKDF2_HMAC(pass.data(),
638
- pw_size,
639
- reinterpret_cast<const std::uint8_t*>(salt.data()),
640
- salt_size,
641
- iteration_count,
642
- EVP_sha256(),
643
- couchbase::core::crypto::SHA256_DIGEST_SIZE,
644
- reinterpret_cast<std::uint8_t*>(ret.data()));
645
- if (err != 1) {
646
- throw std::runtime_error("couchbase::core::crypto::PBKDF2_HMAC(SHA256): PKCS5_PBKDF2_HMAC failed" + std::to_string(err));
647
- }
648
-
649
- return ret;
700
+ auto err = PKCS5_PBKDF2_HMAC(pass.data(),
701
+ pw_size,
702
+ reinterpret_cast<const std::uint8_t*>(salt.data()),
703
+ salt_size,
704
+ iteration_count,
705
+ EVP_sha256(),
706
+ couchbase::core::crypto::SHA256_DIGEST_SIZE,
707
+ reinterpret_cast<std::uint8_t*>(ret.data()));
708
+ if (err != 1) {
709
+ throw std::runtime_error(
710
+ "couchbase::core::crypto::PBKDF2_HMAC(SHA256): PKCS5_PBKDF2_HMAC failed" +
711
+ std::to_string(err));
712
+ }
713
+
714
+ return ret;
650
715
  }
651
716
 
652
717
  static std::string
653
718
  PBKDF2_HMAC_SHA512(const std::string& pass, std::string_view salt, unsigned int iterationCount)
654
719
  {
655
- std::string ret;
656
- ret.resize(couchbase::core::crypto::SHA512_DIGEST_SIZE);
720
+ std::string ret;
721
+ ret.resize(couchbase::core::crypto::SHA512_DIGEST_SIZE);
657
722
  #ifdef COUCHBASE_CXX_CLIENT_STATIC_BORINGSSL
658
- auto pw_size = pass.size();
659
- auto salt_size = salt.size();
660
- auto iteration_count = iterationCount;
723
+ auto pw_size = pass.size();
724
+ auto salt_size = salt.size();
725
+ auto iteration_count = iterationCount;
661
726
  #else
662
- auto pw_size = int(pass.size());
663
- auto salt_size = int(salt.size());
664
- auto iteration_count = int(iterationCount);
727
+ auto pw_size = int(pass.size());
728
+ auto salt_size = int(salt.size());
729
+ auto iteration_count = int(iterationCount);
665
730
  #endif
666
- auto err = PKCS5_PBKDF2_HMAC(pass.data(),
667
- pw_size,
668
- reinterpret_cast<const std::uint8_t*>(salt.data()),
669
- salt_size,
670
- iteration_count,
671
- EVP_sha512(),
672
- couchbase::core::crypto::SHA512_DIGEST_SIZE,
673
- reinterpret_cast<std::uint8_t*>(ret.data()));
674
- if (err != 1) {
675
- throw std::runtime_error("couchbase::core::crypto::PBKDF2_HMAC(SHA512): PKCS5_PBKDF2_HMAC failed" + std::to_string(err));
676
- }
677
-
678
- return ret;
731
+ auto err = PKCS5_PBKDF2_HMAC(pass.data(),
732
+ pw_size,
733
+ reinterpret_cast<const std::uint8_t*>(salt.data()),
734
+ salt_size,
735
+ iteration_count,
736
+ EVP_sha512(),
737
+ couchbase::core::crypto::SHA512_DIGEST_SIZE,
738
+ reinterpret_cast<std::uint8_t*>(ret.data()));
739
+ if (err != 1) {
740
+ throw std::runtime_error(
741
+ "couchbase::core::crypto::PBKDF2_HMAC(SHA512): PKCS5_PBKDF2_HMAC failed" +
742
+ std::to_string(err));
743
+ }
744
+
745
+ return ret;
679
746
  }
680
747
 
681
748
  static std::string
682
749
  digest_sha1(std::string_view data)
683
750
  {
684
- std::string ret;
685
- ret.resize(couchbase::core::crypto::SHA1_DIGEST_SIZE);
686
- SHA1(reinterpret_cast<const std::uint8_t*>(data.data()), data.size(), reinterpret_cast<std::uint8_t*>(ret.data()));
687
- return ret;
751
+ std::string ret;
752
+ ret.resize(couchbase::core::crypto::SHA1_DIGEST_SIZE);
753
+ SHA1(reinterpret_cast<const std::uint8_t*>(data.data()),
754
+ data.size(),
755
+ reinterpret_cast<std::uint8_t*>(ret.data()));
756
+ return ret;
688
757
  }
689
758
 
690
759
  static std::string
691
760
  digest_sha256(std::string_view data)
692
761
  {
693
- std::string ret;
694
- ret.resize(couchbase::core::crypto::SHA256_DIGEST_SIZE);
695
- SHA256(reinterpret_cast<const std::uint8_t*>(data.data()), data.size(), reinterpret_cast<std::uint8_t*>(ret.data()));
696
- return ret;
762
+ std::string ret;
763
+ ret.resize(couchbase::core::crypto::SHA256_DIGEST_SIZE);
764
+ SHA256(reinterpret_cast<const std::uint8_t*>(data.data()),
765
+ data.size(),
766
+ reinterpret_cast<std::uint8_t*>(ret.data()));
767
+ return ret;
697
768
  }
698
769
 
699
770
  static std::string
700
771
  digest_sha512(std::string_view data)
701
772
  {
702
- std::string ret;
703
- ret.resize(couchbase::core::crypto::SHA512_DIGEST_SIZE);
704
- SHA512(reinterpret_cast<const std::uint8_t*>(data.data()), data.size(), reinterpret_cast<std::uint8_t*>(ret.data()));
705
- return ret;
773
+ std::string ret;
774
+ ret.resize(couchbase::core::crypto::SHA512_DIGEST_SIZE);
775
+ SHA512(reinterpret_cast<const std::uint8_t*>(data.data()),
776
+ data.size(),
777
+ reinterpret_cast<std::uint8_t*>(ret.data()));
778
+ return ret;
706
779
  }
707
780
 
708
781
  struct EVP_CIPHER_CTX_Deleter {
709
- void operator()(EVP_CIPHER_CTX* ctx)
710
- {
711
- if (ctx != nullptr) {
712
- EVP_CIPHER_CTX_free(ctx);
713
- }
782
+ void operator()(EVP_CIPHER_CTX* ctx)
783
+ {
784
+ if (ctx != nullptr) {
785
+ EVP_CIPHER_CTX_free(ctx);
714
786
  }
787
+ }
715
788
  };
716
789
 
717
790
  using unique_EVP_CIPHER_CTX_ptr = std::unique_ptr<EVP_CIPHER_CTX, EVP_CIPHER_CTX_Deleter>;
@@ -723,106 +796,121 @@ using unique_EVP_CIPHER_CTX_ptr = std::unique_ptr<EVP_CIPHER_CTX, EVP_CIPHER_CTX
723
796
  static const EVP_CIPHER*
724
797
  getCipher(const couchbase::core::crypto::Cipher cipher, std::string_view key, std::string_view iv)
725
798
  {
726
- const EVP_CIPHER* cip = nullptr;
727
-
728
- switch (cipher) {
729
- case couchbase::core::crypto::Cipher::AES_256_cbc:
730
- cip = EVP_aes_256_cbc();
731
- break;
732
- }
733
-
734
- if (cip == nullptr) {
735
- throw std::invalid_argument("couchbase::core::crypto::getCipher: Unknown Cipher " + std::to_string(int(cipher)));
736
- }
799
+ const EVP_CIPHER* cip = nullptr;
800
+
801
+ switch (cipher) {
802
+ case couchbase::core::crypto::Cipher::AES_256_cbc:
803
+ cip = EVP_aes_256_cbc();
804
+ break;
805
+ }
806
+
807
+ if (cip == nullptr) {
808
+ throw std::invalid_argument("couchbase::core::crypto::getCipher: Unknown Cipher " +
809
+ std::to_string(int(cipher)));
810
+ }
737
811
  #ifdef COUCHBASE_CXX_CLIENT_STATIC_BORINGSSL
738
- auto key_size = key.size();
739
- auto iv_size = iv.size();
812
+ auto key_size = key.size();
813
+ auto iv_size = iv.size();
740
814
  #else
741
- // NOTE that OpenSSL 3 changed EVP_CIPHER_key_length() -> EVP_CIPHER_get_key_length()
742
- auto key_size = int(key.size());
743
- auto iv_size = int(iv.size());
815
+ // NOTE that OpenSSL 3 changed EVP_CIPHER_key_length() -> EVP_CIPHER_get_key_length()
816
+ auto key_size = int(key.size());
817
+ auto iv_size = int(iv.size());
744
818
  #endif
745
- if (key_size != EVP_CIPHER_key_length(cip)) {
746
- throw std::invalid_argument("couchbase::core::crypto::getCipher: Cipher requires a key "
747
- "length of " +
748
- std::to_string(EVP_CIPHER_key_length(cip)) + " provided key with length " + std::to_string(key.size()));
749
- }
750
-
751
- if (iv_size != EVP_CIPHER_iv_length(cip)) {
752
- throw std::invalid_argument("couchbase::core::crypto::getCipher: Cipher requires a iv "
753
- "length of " +
754
- std::to_string(EVP_CIPHER_iv_length(cip)) + " provided iv with length " + std::to_string(iv.size()));
755
- }
756
-
757
- return cip;
819
+ if (key_size != EVP_CIPHER_key_length(cip)) {
820
+ throw std::invalid_argument("couchbase::core::crypto::getCipher: Cipher requires a key "
821
+ "length of " +
822
+ std::to_string(EVP_CIPHER_key_length(cip)) +
823
+ " provided key with length " + std::to_string(key.size()));
824
+ }
825
+
826
+ if (iv_size != EVP_CIPHER_iv_length(cip)) {
827
+ throw std::invalid_argument("couchbase::core::crypto::getCipher: Cipher requires a iv "
828
+ "length of " +
829
+ std::to_string(EVP_CIPHER_iv_length(cip)) +
830
+ " provided iv with length " + std::to_string(iv.size()));
831
+ }
832
+
833
+ return cip;
758
834
  }
759
835
 
760
836
  std::string
761
- encrypt(const couchbase::core::crypto::Cipher cipher, std::string_view key, std::string_view iv, std::string_view data)
837
+ encrypt(const couchbase::core::crypto::Cipher cipher,
838
+ std::string_view key,
839
+ std::string_view iv,
840
+ std::string_view data)
762
841
  {
763
- unique_EVP_CIPHER_CTX_ptr ctx(EVP_CIPHER_CTX_new());
764
-
765
- auto* cip = getCipher(cipher, key, iv);
766
- if (EVP_EncryptInit_ex(
767
- ctx.get(), cip, nullptr, reinterpret_cast<const std::uint8_t*>(key.data()), reinterpret_cast<const std::uint8_t*>(iv.data())) !=
768
- 1) {
769
- throw std::runtime_error("couchbase::core::crypto::encrypt: EVP_EncryptInit_ex failed");
770
- }
771
-
772
- std::string ret;
773
- ret.resize(data.size() + static_cast<std::string_view::size_type>(EVP_CIPHER_block_size(cip)));
774
- int len1 = int(ret.size());
775
-
776
- if (EVP_EncryptUpdate(ctx.get(),
777
- reinterpret_cast<std::uint8_t*>(ret.data()),
778
- &len1,
779
- reinterpret_cast<const std::uint8_t*>(data.data()),
780
- int(data.size())) != 1) {
781
- throw std::runtime_error("couchbase::core::crypto::encrypt: EVP_EncryptUpdate failed");
782
- }
783
-
784
- int len2 = int(ret.size()) - len1;
785
- if (EVP_EncryptFinal_ex(ctx.get(), reinterpret_cast<std::uint8_t*>(ret.data()) + len1, &len2) != 1) {
786
- throw std::runtime_error("couchbase::core::crypto::encrypt: EVP_EncryptFinal_ex failed");
787
- }
788
-
789
- // Resize the destination to the sum of the two length fields
790
- ret.resize(size_t(len1) + size_t(len2));
791
- return ret;
842
+ unique_EVP_CIPHER_CTX_ptr ctx(EVP_CIPHER_CTX_new());
843
+
844
+ auto* cip = getCipher(cipher, key, iv);
845
+ if (EVP_EncryptInit_ex(ctx.get(),
846
+ cip,
847
+ nullptr,
848
+ reinterpret_cast<const std::uint8_t*>(key.data()),
849
+ reinterpret_cast<const std::uint8_t*>(iv.data())) != 1) {
850
+ throw std::runtime_error("couchbase::core::crypto::encrypt: EVP_EncryptInit_ex failed");
851
+ }
852
+
853
+ std::string ret;
854
+ ret.resize(data.size() + static_cast<std::string_view::size_type>(EVP_CIPHER_block_size(cip)));
855
+ int len1 = int(ret.size());
856
+
857
+ if (EVP_EncryptUpdate(ctx.get(),
858
+ reinterpret_cast<std::uint8_t*>(ret.data()),
859
+ &len1,
860
+ reinterpret_cast<const std::uint8_t*>(data.data()),
861
+ int(data.size())) != 1) {
862
+ throw std::runtime_error("couchbase::core::crypto::encrypt: EVP_EncryptUpdate failed");
863
+ }
864
+
865
+ int len2 = int(ret.size()) - len1;
866
+ if (EVP_EncryptFinal_ex(ctx.get(), reinterpret_cast<std::uint8_t*>(ret.data()) + len1, &len2) !=
867
+ 1) {
868
+ throw std::runtime_error("couchbase::core::crypto::encrypt: EVP_EncryptFinal_ex failed");
869
+ }
870
+
871
+ // Resize the destination to the sum of the two length fields
872
+ ret.resize(size_t(len1) + size_t(len2));
873
+ return ret;
792
874
  }
793
875
 
794
876
  std::string
795
- decrypt(const couchbase::core::crypto::Cipher cipher, std::string_view key, std::string_view iv, std::string_view data)
877
+ decrypt(const couchbase::core::crypto::Cipher cipher,
878
+ std::string_view key,
879
+ std::string_view iv,
880
+ std::string_view data)
796
881
  {
797
- unique_EVP_CIPHER_CTX_ptr ctx(EVP_CIPHER_CTX_new());
798
- auto* cip = getCipher(cipher, key, iv);
799
-
800
- if (EVP_DecryptInit_ex(
801
- ctx.get(), cip, nullptr, reinterpret_cast<const std::uint8_t*>(key.data()), reinterpret_cast<const std::uint8_t*>(iv.data())) !=
802
- 1) {
803
- throw std::runtime_error("couchbase::core::crypto::decrypt: EVP_DecryptInit_ex failed");
804
- }
805
-
806
- std::string ret;
807
- ret.resize(data.size());
808
- int len1 = int(ret.size());
809
-
810
- if (EVP_DecryptUpdate(ctx.get(),
811
- reinterpret_cast<std::uint8_t*>(ret.data()),
812
- &len1,
813
- reinterpret_cast<const std::uint8_t*>(data.data()),
814
- int(data.size())) != 1) {
815
- throw std::runtime_error("couchbase::core::crypto::decrypt: EVP_DecryptUpdate failed");
816
- }
817
-
818
- int len2 = int(data.size()) - len1;
819
- if (EVP_DecryptFinal_ex(ctx.get(), reinterpret_cast<std::uint8_t*>(ret.data()) + len1, &len2) != 1) {
820
- throw std::runtime_error("couchbase::core::crypto::decrypt: EVP_DecryptFinal_ex failed");
821
- }
822
-
823
- // Resize the destination to the sum of the two length fields
824
- ret.resize(size_t(len1) + size_t(len2));
825
- return ret;
882
+ unique_EVP_CIPHER_CTX_ptr ctx(EVP_CIPHER_CTX_new());
883
+ auto* cip = getCipher(cipher, key, iv);
884
+
885
+ if (EVP_DecryptInit_ex(ctx.get(),
886
+ cip,
887
+ nullptr,
888
+ reinterpret_cast<const std::uint8_t*>(key.data()),
889
+ reinterpret_cast<const std::uint8_t*>(iv.data())) != 1) {
890
+ throw std::runtime_error("couchbase::core::crypto::decrypt: EVP_DecryptInit_ex failed");
891
+ }
892
+
893
+ std::string ret;
894
+ ret.resize(data.size());
895
+ int len1 = int(ret.size());
896
+
897
+ if (EVP_DecryptUpdate(ctx.get(),
898
+ reinterpret_cast<std::uint8_t*>(ret.data()),
899
+ &len1,
900
+ reinterpret_cast<const std::uint8_t*>(data.data()),
901
+ int(data.size())) != 1) {
902
+ throw std::runtime_error("couchbase::core::crypto::decrypt: EVP_DecryptUpdate failed");
903
+ }
904
+
905
+ int len2 = int(data.size()) - len1;
906
+ if (EVP_DecryptFinal_ex(ctx.get(), reinterpret_cast<std::uint8_t*>(ret.data()) + len1, &len2) !=
907
+ 1) {
908
+ throw std::runtime_error("couchbase::core::crypto::decrypt: EVP_DecryptFinal_ex failed");
909
+ }
910
+
911
+ // Resize the destination to the sum of the two length fields
912
+ ret.resize(size_t(len1) + size_t(len2));
913
+ return ret;
826
914
  }
827
915
 
828
916
  #endif
@@ -830,120 +918,137 @@ decrypt(const couchbase::core::crypto::Cipher cipher, std::string_view key, std:
830
918
  } // namespace internal
831
919
 
832
920
  std::string
833
- couchbase::core::crypto::CBC_HMAC(const Algorithm algorithm, std::string_view key, std::string_view data)
834
- {
835
- switch (algorithm) {
836
- case couchbase::core::crypto::Algorithm::ALG_SHA1:
837
- return internal::HMAC_SHA1(key, data);
838
- case Algorithm::ALG_SHA256:
839
- return internal::HMAC_SHA256(key, data);
840
- case Algorithm::ALG_SHA512:
841
- return internal::HMAC_SHA512(key, data);
842
- }
843
-
844
- throw std::invalid_argument("couchbase::core::crypto::HMAC: Unknown Algorithm: " + std::to_string(int(algorithm)));
921
+ couchbase::core::crypto::CBC_HMAC(const Algorithm algorithm,
922
+ std::string_view key,
923
+ std::string_view data)
924
+ {
925
+ switch (algorithm) {
926
+ case couchbase::core::crypto::Algorithm::ALG_SHA1:
927
+ return internal::HMAC_SHA1(key, data);
928
+ case Algorithm::ALG_SHA256:
929
+ return internal::HMAC_SHA256(key, data);
930
+ case Algorithm::ALG_SHA512:
931
+ return internal::HMAC_SHA512(key, data);
932
+ }
933
+
934
+ throw std::invalid_argument("couchbase::core::crypto::HMAC: Unknown Algorithm: " +
935
+ std::to_string(int(algorithm)));
845
936
  }
846
937
 
847
938
  std::string
848
- couchbase::core::crypto::PBKDF2_HMAC(const Algorithm algorithm, const std::string& pass, std::string_view salt, unsigned int iterationCount)
849
- {
850
- switch (algorithm) {
851
- case Algorithm::ALG_SHA1:
852
- return internal::PBKDF2_HMAC_SHA1(pass, salt, iterationCount);
853
- case Algorithm::ALG_SHA256:
854
- return internal::PBKDF2_HMAC_SHA256(pass, salt, iterationCount);
855
- case Algorithm::ALG_SHA512:
856
- return internal::PBKDF2_HMAC_SHA512(pass, salt, iterationCount);
857
- }
858
-
859
- throw std::invalid_argument("couchbase::core::crypto::PBKDF2_HMAC: Unknown Algorithm: " + std::to_string(int(algorithm)));
939
+ couchbase::core::crypto::PBKDF2_HMAC(const Algorithm algorithm,
940
+ const std::string& pass,
941
+ std::string_view salt,
942
+ unsigned int iterationCount)
943
+ {
944
+ switch (algorithm) {
945
+ case Algorithm::ALG_SHA1:
946
+ return internal::PBKDF2_HMAC_SHA1(pass, salt, iterationCount);
947
+ case Algorithm::ALG_SHA256:
948
+ return internal::PBKDF2_HMAC_SHA256(pass, salt, iterationCount);
949
+ case Algorithm::ALG_SHA512:
950
+ return internal::PBKDF2_HMAC_SHA512(pass, salt, iterationCount);
951
+ }
952
+
953
+ throw std::invalid_argument("couchbase::core::crypto::PBKDF2_HMAC: Unknown Algorithm: " +
954
+ std::to_string(int(algorithm)));
860
955
  }
861
956
 
862
957
  static inline void
863
958
  verifyLegalAlgorithm(const couchbase::core::crypto::Algorithm al)
864
959
  {
865
- switch (al) {
866
- case couchbase::core::crypto::Algorithm::ALG_SHA1:
867
- case couchbase::core::crypto::Algorithm::ALG_SHA256:
868
- case couchbase::core::crypto::Algorithm::ALG_SHA512:
869
- return;
870
- }
871
- throw std::invalid_argument("verifyLegalAlgorithm: Unknown Algorithm: " + std::to_string(int(al)));
960
+ switch (al) {
961
+ case couchbase::core::crypto::Algorithm::ALG_SHA1:
962
+ case couchbase::core::crypto::Algorithm::ALG_SHA256:
963
+ case couchbase::core::crypto::Algorithm::ALG_SHA512:
964
+ return;
965
+ }
966
+ throw std::invalid_argument("verifyLegalAlgorithm: Unknown Algorithm: " +
967
+ std::to_string(int(al)));
872
968
  }
873
969
 
874
970
  bool
875
971
  couchbase::core::crypto::isSupported(const Algorithm algorithm)
876
972
  {
877
- verifyLegalAlgorithm(algorithm);
973
+ verifyLegalAlgorithm(algorithm);
878
974
 
879
- return true;
975
+ return true;
880
976
  }
881
977
 
882
978
  std::string
883
979
  couchbase::core::crypto::digest(const Algorithm algorithm, std::string_view data)
884
980
  {
885
- switch (algorithm) {
886
- case Algorithm::ALG_SHA1:
887
- return internal::digest_sha1(data);
888
- case Algorithm::ALG_SHA256:
889
- return internal::digest_sha256(data);
890
- case Algorithm::ALG_SHA512:
891
- return internal::digest_sha512(data);
892
- }
893
-
894
- throw std::invalid_argument("couchbase::core::crypto::digest: Unknown Algorithm" + std::to_string(int(algorithm)));
981
+ switch (algorithm) {
982
+ case Algorithm::ALG_SHA1:
983
+ return internal::digest_sha1(data);
984
+ case Algorithm::ALG_SHA256:
985
+ return internal::digest_sha256(data);
986
+ case Algorithm::ALG_SHA512:
987
+ return internal::digest_sha512(data);
988
+ }
989
+
990
+ throw std::invalid_argument("couchbase::core::crypto::digest: Unknown Algorithm" +
991
+ std::to_string(int(algorithm)));
895
992
  }
896
993
 
897
994
  std::string
898
- couchbase::core::crypto::encrypt(const Cipher cipher, std::string_view key, std::string_view iv, std::string_view data)
995
+ couchbase::core::crypto::encrypt(const Cipher cipher,
996
+ std::string_view key,
997
+ std::string_view iv,
998
+ std::string_view data)
899
999
  {
900
- // We only support a single encryption scheme right now.
901
- // Verify the input parameters (no need of calling the internal library
902
- // functions in order to fetch these details)
903
- if (cipher != Cipher::AES_256_cbc) {
904
- throw std::invalid_argument("couchbase::core::crypto::encrypt(): Unsupported cipher");
905
- }
906
-
907
- if (key.size() != 32) {
908
- throw std::invalid_argument("couchbase::core::crypto::encrypt(): Invalid key size: " + std::to_string(key.size()) +
909
- " (expected 32)");
910
- }
911
-
912
- if (iv.size() != 16) {
913
- throw std::invalid_argument("couchbase::core::crypto::encrypt(): Invalid iv size: " + std::to_string(iv.size()) + " (expected 16)");
914
- }
915
-
916
- return internal::encrypt(cipher, key, iv, data);
1000
+ // We only support a single encryption scheme right now.
1001
+ // Verify the input parameters (no need of calling the internal library
1002
+ // functions in order to fetch these details)
1003
+ if (cipher != Cipher::AES_256_cbc) {
1004
+ throw std::invalid_argument("couchbase::core::crypto::encrypt(): Unsupported cipher");
1005
+ }
1006
+
1007
+ if (key.size() != 32) {
1008
+ throw std::invalid_argument("couchbase::core::crypto::encrypt(): Invalid key size: " +
1009
+ std::to_string(key.size()) + " (expected 32)");
1010
+ }
1011
+
1012
+ if (iv.size() != 16) {
1013
+ throw std::invalid_argument("couchbase::core::crypto::encrypt(): Invalid iv size: " +
1014
+ std::to_string(iv.size()) + " (expected 16)");
1015
+ }
1016
+
1017
+ return internal::encrypt(cipher, key, iv, data);
917
1018
  }
918
1019
 
919
1020
  std::string
920
- couchbase::core::crypto::decrypt(const Cipher cipher, std::string_view key, std::string_view iv, std::string_view data)
1021
+ couchbase::core::crypto::decrypt(const Cipher cipher,
1022
+ std::string_view key,
1023
+ std::string_view iv,
1024
+ std::string_view data)
921
1025
  {
922
- // We only support a single decryption scheme right now.
923
- // Verify the input parameters (no need of calling the internal library
924
- // functions in order to fetch these details)
925
- if (cipher != Cipher::AES_256_cbc) {
926
- throw std::invalid_argument("couchbase::core::crypto::decrypt(): Unsupported cipher");
927
- }
928
-
929
- if (key.size() != 32) {
930
- throw std::invalid_argument("couchbase::core::crypto::decrypt(): Invalid key size: " + std::to_string(key.size()) +
931
- " (expected 32)");
932
- }
933
-
934
- if (iv.size() != 16) {
935
- throw std::invalid_argument("couchbase::core::crypto::decrypt(): Invalid iv size: " + std::to_string(iv.size()) + " (expected 16)");
936
- }
937
-
938
- return internal::decrypt(cipher, key, iv, data);
1026
+ // We only support a single decryption scheme right now.
1027
+ // Verify the input parameters (no need of calling the internal library
1028
+ // functions in order to fetch these details)
1029
+ if (cipher != Cipher::AES_256_cbc) {
1030
+ throw std::invalid_argument("couchbase::core::crypto::decrypt(): Unsupported cipher");
1031
+ }
1032
+
1033
+ if (key.size() != 32) {
1034
+ throw std::invalid_argument("couchbase::core::crypto::decrypt(): Invalid key size: " +
1035
+ std::to_string(key.size()) + " (expected 32)");
1036
+ }
1037
+
1038
+ if (iv.size() != 16) {
1039
+ throw std::invalid_argument("couchbase::core::crypto::decrypt(): Invalid iv size: " +
1040
+ std::to_string(iv.size()) + " (expected 16)");
1041
+ }
1042
+
1043
+ return internal::decrypt(cipher, key, iv, data);
939
1044
  }
940
1045
 
941
1046
  couchbase::core::crypto::Cipher
942
1047
  couchbase::core::crypto::to_cipher(const std::string& str)
943
1048
  {
944
- if (str == "AES_256_cbc") {
945
- return Cipher::AES_256_cbc;
946
- }
1049
+ if (str == "AES_256_cbc") {
1050
+ return Cipher::AES_256_cbc;
1051
+ }
947
1052
 
948
- throw std::invalid_argument("to_cipher: Unknown cipher: " + str);
1053
+ throw std::invalid_argument("to_cipher: Unknown cipher: " + str);
949
1054
  }