mongo 2.12.0.rc0 → 2.12.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/README.md +2 -1
  5. data/lib/mongo/client.rb +23 -9
  6. data/lib/mongo/client_encryption.rb +1 -1
  7. data/lib/mongo/cluster.rb +6 -2
  8. data/lib/mongo/crypt/auto_decryption_context.rb +3 -5
  9. data/lib/mongo/crypt/auto_encrypter.rb +17 -7
  10. data/lib/mongo/crypt/binding.rb +446 -379
  11. data/lib/mongo/crypt/context.rb +4 -4
  12. data/lib/mongo/crypt/encryption_io.rb +16 -10
  13. data/lib/mongo/crypt/explicit_encrypter.rb +3 -3
  14. data/lib/mongo/crypt/explicit_encryption_context.rb +1 -1
  15. data/lib/mongo/crypt/handle.rb +26 -4
  16. data/lib/mongo/crypt/hooks.rb +1 -1
  17. data/lib/mongo/database.rb +11 -1
  18. data/lib/mongo/error/bulk_write_error.rb +16 -14
  19. data/lib/mongo/error/notable.rb +0 -15
  20. data/lib/mongo/error/parser.rb +1 -1
  21. data/lib/mongo/grid/file/info.rb +1 -1
  22. data/lib/mongo/monitoring/event/cmap/connection_check_out_failed.rb +1 -1
  23. data/lib/mongo/operation/insert/command.rb +3 -2
  24. data/lib/mongo/operation/insert/legacy.rb +2 -1
  25. data/lib/mongo/operation/insert/op_msg.rb +1 -1
  26. data/lib/mongo/operation/shared/executable.rb +9 -9
  27. data/lib/mongo/operation/shared/op_msg_or_command.rb +2 -2
  28. data/lib/mongo/operation/shared/read_preference_supported.rb +68 -19
  29. data/lib/mongo/operation/shared/response_handling.rb +1 -1
  30. data/lib/mongo/operation/shared/sessions_supported.rb +44 -3
  31. data/lib/mongo/protocol/bit_vector.rb +2 -1
  32. data/lib/mongo/protocol/message.rb +22 -7
  33. data/lib/mongo/protocol/msg.rb +2 -5
  34. data/lib/mongo/protocol/serializers.rb +32 -11
  35. data/lib/mongo/retryable.rb +1 -1
  36. data/lib/mongo/server/connection.rb +1 -1
  37. data/lib/mongo/server/connection_base.rb +9 -4
  38. data/lib/mongo/server/connection_pool/populator.rb +1 -1
  39. data/lib/mongo/session.rb +1 -1
  40. data/lib/mongo/srv/monitor.rb +73 -42
  41. data/lib/mongo/srv/result.rb +0 -1
  42. data/lib/mongo/uri.rb +1 -1
  43. data/lib/mongo/uri/srv_protocol.rb +1 -1
  44. data/lib/mongo/version.rb +1 -1
  45. data/mongo.gemspec +0 -2
  46. data/spec/README.md +106 -12
  47. data/spec/integration/client_construction_spec.rb +29 -5
  48. data/spec/integration/client_side_encryption/auto_encryption_bulk_writes_spec.rb +6 -4
  49. data/spec/integration/client_side_encryption/auto_encryption_command_monitoring_spec.rb +19 -17
  50. data/spec/integration/client_side_encryption/auto_encryption_mongocryptd_spawn_spec.rb +5 -4
  51. data/spec/integration/client_side_encryption/auto_encryption_old_wire_version_spec.rb +11 -8
  52. data/spec/integration/client_side_encryption/auto_encryption_reconnect_spec.rb +14 -9
  53. data/spec/integration/client_side_encryption/auto_encryption_spec.rb +46 -45
  54. data/spec/integration/client_side_encryption/bson_size_limit_spec.rb +11 -7
  55. data/spec/integration/client_side_encryption/bypass_mongocryptd_spawn_spec.rb +13 -9
  56. data/spec/integration/client_side_encryption/client_close_spec.rb +10 -6
  57. data/spec/integration/client_side_encryption/corpus_spec.rb +19 -14
  58. data/spec/integration/client_side_encryption/data_key_spec.rb +10 -8
  59. data/spec/integration/client_side_encryption/external_key_vault_spec.rb +12 -8
  60. data/spec/integration/client_side_encryption/views_spec.rb +6 -4
  61. data/spec/integration/client_update_spec.rb +36 -2
  62. data/spec/integration/crud_spec.rb +89 -0
  63. data/spec/integration/read_preference_spec.rb +26 -0
  64. data/spec/integration/srv_monitoring_spec.rb +2 -2
  65. data/spec/kerberos/kerberos_spec.rb +87 -0
  66. data/spec/lite_spec_helper.rb +4 -8
  67. data/spec/mongo/bulk_write/result_spec.rb +11 -7
  68. data/spec/mongo/client_encryption_spec.rb +3 -6
  69. data/spec/mongo/crypt/auto_encrypter_spec.rb +8 -3
  70. data/spec/mongo/crypt/handle_spec.rb +38 -4
  71. data/spec/mongo/error/bulk_write_error_spec.rb +49 -0
  72. data/spec/mongo/error/notable_spec.rb +59 -0
  73. data/spec/mongo/operation/find/legacy_spec.rb +1 -0
  74. data/spec/mongo/operation/read_preference_legacy_spec.rb +351 -0
  75. data/spec/mongo/operation/read_preference_op_msg_spec.rb +194 -0
  76. data/spec/mongo/srv/monitor_spec.rb +88 -69
  77. data/spec/runners/transactions.rb +5 -7
  78. data/spec/spec_tests/client_side_encryption_spec.rb +0 -5
  79. data/spec/spec_tests/data/client_side_encryption/bulk.yml +3 -0
  80. data/spec/spec_tests/data/client_side_encryption/replaceOne.yml +4 -1
  81. data/spec/spec_tests/data/client_side_encryption/updateOne.yml +3 -0
  82. data/spec/support/cluster_tools.rb +6 -1
  83. data/spec/support/crypt.rb +14 -0
  84. data/spec/support/lite_constraints.rb +3 -1
  85. data/spec/support/spec_config.rb +10 -0
  86. data/spec/support/utils.rb +9 -1
  87. metadata +15 -14
  88. metadata.gz.sig +0 -0
  89. data/lib/mongo/cluster/srv_monitor.rb +0 -127
  90. data/lib/mongo/srv/warning_result.rb +0 -35
  91. data/spec/enterprise_auth/kerberos_spec.rb +0 -58
  92. data/spec/mongo/cluster/srv_monitor_spec.rb +0 -214
  93. data/spec/mongo/operation/read_preference_spec.rb +0 -245
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 056e2cbfcb67349d4d1c9c530c110e8d27b9a7035b202b52665b8cddc3c5d3f7
4
- data.tar.gz: cd3752037a07e808bb9c45714546cd9cb450d6cfdae632bb81c09bc269e88b71
3
+ metadata.gz: 3445c61a01ced5590fabff016e17fb745789b0bca07628c653272ea5f1ba9c22
4
+ data.tar.gz: 6a945cc89db62d7bb613ef03c262407f56820e4aedfc5c2aa25fe813a02a7b51
5
5
  SHA512:
6
- metadata.gz: 13e11a08e91b16021e2fbe9663de2e1fe8319f547cebb3c101b6519ab45993eb3abdbbe18f8e48b3b7591a595c448f0cbb6d8077237c69331cbca8dcf6ff3a9f
7
- data.tar.gz: a1bb9120bac5385a6adf16ee960c3f8529c1c7c075dfd77ada2e9e7370ef4aecd5bbf1a94df3c099966800066db9824158235a2ca69e6e7d3bf0864d0defc426
6
+ metadata.gz: 207218c0f2715f90d877d697f24aa2dce851032ef8affd8e8fa222d608f886f0bb9e3a1f7763e57070bc0214952285d1ad7c54454d90772be4c8bbe2d274d6b8
7
+ data.tar.gz: d95ad222012c17207208e6d2bf32e33a744823ceaee1695cc794c89fb672c7a186eaba3c7aeae8b68dcfe4b0b03543b7474bd5420271f571513b6fdab29478d4
Binary file
data.tar.gz.sig CHANGED
Binary file
data/README.md CHANGED
@@ -18,7 +18,8 @@ Support & Feedback
18
18
  For issues, questions or feedback related to the Ruby driver, please look into
19
19
  our [support channels](http://www.mongodb.org/about/support). Please
20
20
  do not email any of the Ruby developers directly with issues or
21
- questions - you're more likely to get an answer quickly on the [mongodb-user list](http://groups.google.com/group/mongodb-user) on Google Groups.
21
+ questions - you're more likely to get an answer quickly on the
22
+ [MongoDB Community Forum](https://community.mongodb.com).
22
23
 
23
24
 
24
25
  Bugs & Feature Requests
@@ -475,16 +475,26 @@ module Mongo
475
475
  cluster_options.merge(srv_uri: srv_uri))
476
476
  end
477
477
 
478
- # Unset monitoring, it will be taken out of cluster from now on
479
- remove_instance_variable('@monitoring')
478
+ begin
479
+ # Unset monitoring, it will be taken out of cluster from now on
480
+ remove_instance_variable('@monitoring')
480
481
 
481
- if @options[:auto_encryption_options]
482
- @connect_lock.synchronize do
483
- build_encrypter
482
+ if @options[:auto_encryption_options]
483
+ @connect_lock.synchronize do
484
+ build_encrypter
485
+ end
484
486
  end
485
- end
486
487
 
487
- yield(self) if block_given?
488
+ yield(self) if block_given?
489
+ rescue
490
+ begin
491
+ @cluster.disconnect!
492
+ rescue => e
493
+ log_warn("Eror disconnecting cluster in client constructor's exception handler: #{e.class}: #{e}")
494
+ # Drop this exception so that the original exception is raised
495
+ end
496
+ raise
497
+ end
488
498
  end
489
499
 
490
500
  # @api private
@@ -695,9 +705,13 @@ module Mongo
695
705
  # If auto_encryption_options are nil, set @encrypter to nil, but do not
696
706
  # close the encrypter because it may still be used by the original client.
697
707
  if @options[:auto_encryption_options] && auto_encryption_options_changed
698
- build_encrypter
708
+ @connect_lock.synchronize do
709
+ build_encrypter
710
+ end
699
711
  elsif @options[:auto_encryption_options].nil?
700
- @encrypter = nil
712
+ @connect_lock.synchronize do
713
+ @encrypter = nil
714
+ end
701
715
  end
702
716
 
703
717
  validate_options!
@@ -44,7 +44,7 @@ module Mongo
44
44
  #
45
45
  # @param [ String ] kms_provider The KMS provider to use. Valid values are
46
46
  # "aws" and "local".
47
- # @params [ Hash ] options
47
+ # @param [ Hash ] options
48
48
  #
49
49
  # @option options [ Hash ] :master_key Information about the AWS master key.
50
50
  # Required if kms_provider is "aws".
@@ -487,6 +487,11 @@ module Mongo
487
487
  server.reconnect!
488
488
  end
489
489
  @periodic_executor.restart!
490
+ @srv_monitor_lock.synchronize do
491
+ if @srv_monitor
492
+ @srv_monitor.run!
493
+ end
494
+ end
490
495
  @connecting = false
491
496
  @connected = true
492
497
  end
@@ -855,7 +860,7 @@ module Mongo
855
860
  unless @srv_monitor
856
861
  monitor_options = options.merge(
857
862
  timeout: options[:connect_timeout] || Server::CONNECT_TIMEOUT)
858
- @srv_monitor = _srv_monitor = SrvMonitor.new(self, monitor_options)
863
+ @srv_monitor = _srv_monitor = Srv::Monitor.new(self, monitor_options)
859
864
  finalizer = lambda do
860
865
  _srv_monitor.stop!
861
866
  end
@@ -879,4 +884,3 @@ module Mongo
879
884
  end
880
885
 
881
886
  require 'mongo/cluster/sdam_flow'
882
- require 'mongo/cluster/srv_monitor'
@@ -23,13 +23,11 @@ module Mongo
23
23
  # Create a new AutoEncryptionContext object
24
24
  #
25
25
  # @param [ Mongo::Crypt::Handle ] mongocrypt a Handle that
26
- # wraps a mongocrypt_t object used to create a new mongocrypt_ctx_t
26
+ # wraps a mongocrypt_t object used to create a new mongocrypt_ctx_t.
27
27
  # @param [ ClientEncryption::IO ] io A instance of the IO class
28
28
  # that implements driver I/O methods required to run the
29
- # state machine
30
- # @param [ String ] db_name The name of the database against which
31
- # the command is being made
32
- # @param [ Hash ] command The command to be encrypted
29
+ # state machine.
30
+ # @param [ Hash ] command The command to be decrypted.
33
31
  def initialize(mongocrypt, io, command)
34
32
  super(mongocrypt, io)
35
33
 
@@ -79,13 +79,23 @@ module Mongo
79
79
  server_selection_timeout: 1,
80
80
  )
81
81
 
82
- @encryption_io = EncryptionIO.new(
83
- client: @options[:client],
84
- mongocryptd_client: @mongocryptd_client,
85
- key_vault_namespace: @options[:key_vault_namespace],
86
- key_vault_client: @key_vault_client,
87
- mongocryptd_options: @options[:extra_options]
88
- )
82
+ begin
83
+ @encryption_io = EncryptionIO.new(
84
+ client: @options[:client],
85
+ mongocryptd_client: @mongocryptd_client,
86
+ key_vault_namespace: @options[:key_vault_namespace],
87
+ key_vault_client: @key_vault_client,
88
+ mongocryptd_options: @options[:extra_options]
89
+ )
90
+ rescue
91
+ begin
92
+ @mongocryptd_client.close
93
+ rescue => e
94
+ log_warn("Eror closing mongocryptd client in auto encrypter's constructor: #{e.class}: #{e}")
95
+ # Drop this exception so that the original exception is raised
96
+ end
97
+ raise
98
+ end
89
99
  end
90
100
 
91
101
  # Whether this encrypter should perform encryption (returns false if
@@ -56,55 +56,62 @@ module Mongo
56
56
  "is invalid: #{ENV['LIBMONGOCRYPT_PATH']}\n\n#{e.class}: #{e.message}"
57
57
  end
58
58
 
59
- # Returns the version string of the libmongocrypt library
59
+ # @!method self.mongocrypt_version(len)
60
+ # @api private
60
61
  #
61
- # @param [ FFI::Pointer | nil ] len (out param) An optional pointer to a
62
- # uint8 that will reference the length of the returned string.
63
- #
64
- # @return [ String ] A version string for libmongocrypt
62
+ # Returns the version string of the libmongocrypt library.
63
+ # @param [ FFI::Pointer | nil ] len (out param) An optional pointer to a
64
+ # uint8 that will reference the length of the returned string.
65
+ # @return [ String ] A version string for libmongocrypt.
65
66
  attach_function :mongocrypt_version, [:pointer], :string
66
67
 
67
- # Create a new mongocrypt_binary_t object (a non-owning view of a byte
68
- # array)
68
+ # @!method self.mongocrypt_binary_new
69
+ # @api private
69
70
  #
70
- # @return [ FFI::Pointer ] A pointer to the newly-created
71
- # mongocrypt_binary_t object
71
+ # Creates a new mongocrypt_binary_t object (a non-owning view of a byte
72
+ # array).
73
+ # @return [ FFI::Pointer ] A pointer to the newly-created
74
+ # mongocrypt_binary_t object.
72
75
  attach_function :mongocrypt_binary_new, [], :pointer
73
76
 
74
- # Create a new mongocrypt_binary_t object that maintains a pointer to
75
- # the specified byte array.
76
- #
77
- # @param [ FFI::Pointer ] data A pointer to an array of bytes; the data
78
- # is not copied and must outlive the mongocrypt_binary_t object
79
- # @param [ Integer ] len The length of the array argument
77
+ # @!method self.mongocrypt_binary_new_from_data(data, len)
78
+ # @api private
80
79
  #
81
- # @return [ FFI::Pointer ] A pointer to the newly-created
82
- # mongocrypt_binary_t object
80
+ # Create a new mongocrypt_binary_t object that maintains a pointer to
81
+ # the specified byte array.
82
+ # @param [ FFI::Pointer ] data A pointer to an array of bytes; the data
83
+ # is not copied and must outlive the mongocrypt_binary_t object.
84
+ # @param [ Integer ] len The length of the array argument.
85
+ # @return [ FFI::Pointer ] A pointer to the newly-created
86
+ # mongocrypt_binary_t object.
83
87
  attach_function(
84
88
  :mongocrypt_binary_new_from_data,
85
89
  [:pointer, :int],
86
90
  :pointer
87
91
  )
88
92
 
89
- # Get the pointer to the underlying data for the mongocrypt_binary_t
90
- #
91
- # @param [ FFI::Pointer ] binary A pointer to a mongocrypt_binary_t object
93
+ # @!method self.mongocrypt_binary_data(binary)
94
+ # @api private
92
95
  #
93
- # @return [ FFI::Pointer ] A pointer to the data array
96
+ # Get the pointer to the underlying data for the mongocrypt_binary_t.
97
+ # @param [ FFI::Pointer ] binary A pointer to a mongocrypt_binary_t object.
98
+ # @return [ FFI::Pointer ] A pointer to the data array.
94
99
  attach_function :mongocrypt_binary_data, [:pointer], :pointer
95
100
 
96
- # Get the length of the underlying data array
101
+ # @!method self.mongocrypt_binary_len(binary)
102
+ # @api private
97
103
  #
98
- # @param [ FFI::Pointer ] binary A pointer to a mongocrypt_binary_t object
99
- #
100
- # @return [ Integer ] The length of the data array
104
+ # Get the length of the underlying data array.
105
+ # @param [ FFI::Pointer ] binary A pointer to a mongocrypt_binary_t object.
106
+ # @return [ Integer ] The length of the data array.
101
107
  attach_function :mongocrypt_binary_len, [:pointer], :int
102
108
 
103
- # Destroy the mongocrypt_binary_t object
104
- #
105
- # @param [ FFI::Pointer ] A pointer to a mongocrypt_binary_t object
109
+ # @!method self.mongocrypt_binary_destroy(binary)
110
+ # @api private
106
111
  #
107
- # @return [ nil ] Always nil
112
+ # Destroy the mongocrypt_binary_t object.
113
+ # @param [ FFI::Pointer ] binary A pointer to a mongocrypt_binary_t object.
114
+ # @return [ nil ] Always nil.
108
115
  attach_function :mongocrypt_binary_destroy, [:pointer], :void
109
116
 
110
117
  # Enum labeling different status types
@@ -114,63 +121,71 @@ module Mongo
114
121
  :error_kms, 2,
115
122
  ]
116
123
 
117
- # Create a new mongocrypt_status_t object
124
+ # @!method self.mongocrypt_status_new
125
+ # @api private
118
126
  #
119
- # @return [ FFI::Pointer ] A pointer to the new mongocrypt_status_ts
127
+ # Create a new mongocrypt_status_t object.
128
+ # @return [ FFI::Pointer ] A pointer to the new mongocrypt_status_ts.
120
129
  attach_function :mongocrypt_status_new, [], :pointer
121
130
 
122
- # Set a message, type, and code on an existing status
123
- #
124
- # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t
125
- # @param [ Symbol ] type The status type; possible values are defined
126
- # by the status_type enum
127
- # @param [ Integer ] code The status code
128
- # @param [ String ] message The status message
129
- # @param [ Integer ] len The length of the message argument (or -1 for a
130
- # null-terminated string)
131
- #
132
- # @return [ nil ] Always nil
131
+ # @!method self.mongocrypt_status_set(status, type, code, message, len)
132
+ # @api private
133
+ #
134
+ # Set a message, type, and code on an existing status.
135
+ # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t.
136
+ # @param [ Symbol ] type The status type; possible values are defined
137
+ # by the status_type enum.
138
+ # @param [ Integer ] code The status code.
139
+ # @param [ String ] message The status message.
140
+ # @param [ Integer ] len The length of the message argument (or -1 for a
141
+ # null-terminated string).
142
+ # @return [ nil ] Always nil.
133
143
  attach_function(
134
144
  :mongocrypt_status_set,
135
145
  [:pointer, :status_type, :int, :string, :int],
136
146
  :void
137
147
  )
138
148
 
139
- # Indicates the status type
149
+ # @!method self.mongocrypt_status_type(status)
150
+ # @api private
140
151
  #
141
- # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t
142
- #
143
- # @return [ Symbol ] The status type (as defined by the status_type enum)
152
+ # Indicates the status type.
153
+ # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t.
154
+ # @return [ Symbol ] The status type (as defined by the status_type enum).
144
155
  attach_function :mongocrypt_status_type, [:pointer], :status_type
145
156
 
146
- # Return the status error code
147
- #
148
- # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t
157
+ # @!method self.mongocrypt_status_code(status)
158
+ # @api private
149
159
  #
150
- # @return [ Integer ] The status code
160
+ # Return the status error code.
161
+ # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t.
162
+ # @return [ Integer ] The status code.
151
163
  attach_function :mongocrypt_status_code, [:pointer], :int
152
164
 
153
- # Returns the status message
165
+ # @!method self.mongocrypt_status_message(status, len=nil)
166
+ # @api private
154
167
  #
155
- # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t
156
- # @param [ FFI::Pointer | nil ] len (out param) An optional pointer to a
157
- # uint32, where the length of the retun string will be written
158
- #
159
- # @return [ String ] The status message
168
+ # Returns the status message.
169
+ # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t.
170
+ # @param [ FFI::Pointer | nil ] len (out param) An optional pointer to a
171
+ # uint32, where the length of the retun string will be written.
172
+ # @return [ String ] The status message.
160
173
  attach_function :mongocrypt_status_message, [:pointer, :pointer], :string
161
174
 
162
- # Returns whether the status is ok or an error
163
- #
164
- # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t
175
+ # @!method self.mongocrypt_status_ok(status)
176
+ # @api private
165
177
  #
166
- # @return [ Boolean ] Whether the status is ok
178
+ # Returns whether the status is ok or an error.
179
+ # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t.
180
+ # @return [ Boolean ] Whether the status is ok.
167
181
  attach_function :mongocrypt_status_ok, [:pointer], :bool
168
182
 
169
- # Destroys the reference to the mongocrypt_status_t object
170
- #
171
- # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t
183
+ # @!method self.mongocrypt_status_destroy(status)
184
+ # @api private
172
185
  #
173
- # @return [ nil ] Always nil
186
+ # Destroys the reference to the mongocrypt_status_t object.
187
+ # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t.
188
+ # @return [ nil ] Always nil.
174
189
  attach_function :mongocrypt_status_destroy, [:pointer], :void
175
190
 
176
191
  # Enum labeling the various log levels
@@ -182,34 +197,41 @@ module Mongo
182
197
  :debug, 4,
183
198
  ]
184
199
 
185
- # A callback to the mongocrypt log function
186
- # Set a custom log callback with the mongocrypt_setopt_log_handler method
187
- #
188
- # @param [ Symbol ] level The log level; possible values defined by the
189
- # log_level enum
190
- # @param [ String ] message The log message
191
- # @param [ Integer ] len The length of the message param, or -1 if the
192
- # string is null terminated
193
- # @param [ FFI::Pointer | nil ] ctx An optional pointer to a context
194
- # object when this callback was set
195
- #
196
- # @return [ nil ] Always nil.
200
+ # @!method mongocrypt_log_fn_t(level, message, len, ctx)
201
+ # @api private
202
+ #
203
+ # A callback to the mongocrypt log function. Set a custom log callback
204
+ # with the mongocrypt_setopt_log_handler method
205
+ # @param [ Symbol ] level The log level; possible values defined by the
206
+ # log_level enum
207
+ # @param [ String ] message The log message
208
+ # @param [ Integer ] len The length of the message param, or -1 if the
209
+ # string is null terminated
210
+ # @param [ FFI::Pointer | nil ] ctx An optional pointer to a context
211
+ # object when this callback was set
212
+ # @return [ nil ] Always nil.
213
+ #
214
+ # @note This defines a method signature for an FFI callback; it is not
215
+ # an instance method on the Binding class.
197
216
  callback :mongocrypt_log_fn_t, [:log_level, :string, :int, :pointer], :void
198
217
 
199
- # Creates a new mongocrypt_t object
218
+ # @!method self.ongocrypt_new
219
+ # @api private
200
220
  #
201
- # @return [ FFI::Pointer ] A pointer to a new mongocrypt_t object
221
+ # Creates a new mongocrypt_t object.
222
+ # @return [ FFI::Pointer ] A pointer to a new mongocrypt_t object.
202
223
  attach_function :mongocrypt_new, [], :pointer
203
224
 
204
- # Set the handler on the mongocrypt_t object to be called every time
205
- # libmongocrypt logs a message
206
- #
207
- # @param [ FFI::Pointer ] crypt A pointer to a mongocrypt_t object
208
- # @param [ Method ] log_fn A logging callback method
209
- # @param [ FFI::Pointer | nil ] log_ctx An optional pointer to a context
210
- # to be passed into the log callback on every invocation.
225
+ # @!method self.mongocrypt_setopt_log_handler(crypt, log_fn, log_ctx=nil)
226
+ # @api private
211
227
  #
212
- # @return [ Boolean ] Whether setting the callback was successful
228
+ # Set the handler on the mongocrypt_t object to be called every time
229
+ # libmongocrypt logs a message.
230
+ # @param [ FFI::Pointer ] crypt A pointer to a mongocrypt_t object.
231
+ # @param [ Method ] log_fn A logging callback method.
232
+ # @param [ FFI::Pointer | nil ] log_ctx An optional pointer to a context
233
+ # to be passed into the log callback on every invocation.
234
+ # @return [ Boolean ] Whether setting the callback was successful.
213
235
  attach_function(
214
236
  :mongocrypt_setopt_log_handler,
215
237
  [:pointer, :mongocrypt_log_fn_t, :pointer],
@@ -228,17 +250,18 @@ module Mongo
228
250
  end
229
251
  end
230
252
 
231
- # Configure mongocrypt_t object with AWS KMS provider options
232
- #
233
- # @param [ FFI::Pointer ] crypt A pointer to a mongocrypt_t object
234
- # @param [ String ] aws_access_key_id The AWS access key id
235
- # @param [ Integer ] aws_access_key_id_len The length of the AWS access
236
- # key string (or -1 for a null-terminated string)
237
- # @param [ String ] aws_secret_access_key The AWS secret access key
238
- # @param [ Integer ] aws_secret_access_key_len The length of the AWS
239
- # secret access key (or -1 for a null-terminated string)
240
- #
241
- # @return [ Boolean ] Returns whether the option was set successfully
253
+ # @!method self.mongocrypt_setopt_kms_provider_aws(crypt, aws_access_key_id, aws_access_key_id_len, aws_secret_access_key, aws_secret_access_key_len)
254
+ # @api private
255
+ #
256
+ # Configure mongocrypt_t object with AWS KMS provider options.
257
+ # @param [ FFI::Pointer ] crypt A pointer to a mongocrypt_t object.
258
+ # @param [ String ] aws_access_key_id The AWS access key id.
259
+ # @param [ Integer ] aws_access_key_id_len The length of the AWS access
260
+ # key string (or -1 for a null-terminated string).
261
+ # @param [ String ] aws_secret_access_key The AWS secret access key.
262
+ # @param [ Integer ] aws_secret_access_key_len The length of the AWS
263
+ # secret access key (or -1 for a null-terminated string).
264
+ # @return [ Boolean ] Returns whether the option was set successfully.
242
265
  attach_function(
243
266
  :mongocrypt_setopt_kms_provider_aws,
244
267
  [:pointer, :string, :int, :string, :int],
@@ -266,13 +289,14 @@ module Mongo
266
289
  end
267
290
  end
268
291
 
269
- # Configure mongocrypt_t object to take local KSM provider options
270
- #
271
- # @param [ FFI::Pointer ] crypt A pointer to a mongocrypt_t object
272
- # @param [ FFI::Pointer ] key A pointer to a mongocrypt_binary_t object
273
- # that references the 96-byte local master key
292
+ # @!method self.mongocrypt_setopt_kms_provider_local(crypt, key)
293
+ # @api private
274
294
  #
275
- # @return [ Boolean ] Returns whether the option was set successfully
295
+ # Configure mongocrypt_t object to take local KSM provider options.
296
+ # @param [ FFI::Pointer ] crypt A pointer to a mongocrypt_t object.
297
+ # @param [ FFI::Pointer ] key A pointer to a mongocrypt_binary_t object
298
+ # that references the 96-byte local master key.
299
+ # @return [ Boolean ] Returns whether the option was set successfully.
276
300
  attach_function(
277
301
  :mongocrypt_setopt_kms_provider_local,
278
302
  [:pointer, :pointer],
@@ -293,13 +317,14 @@ module Mongo
293
317
  end
294
318
  end
295
319
 
296
- # Sets a local schema map for encryption
297
- #
298
- # @param [ FFI::Pointer ] crypt A pointer to a mongocrypt_t object
299
- # @param [ FFI::Pointer ] schema_map A pointer to a mongocrypt_binary_t
300
- # object that references the schema map as a BSON binary string
320
+ # @!method self.mongocrypt_setopt_schema_map(crypt, schema_map)
321
+ # @api private
301
322
  #
302
- # @return [ Boolean ] Returns whether the option was set successfully
323
+ # Sets a local schema map for encryption.
324
+ # @param [ FFI::Pointer ] crypt A pointer to a mongocrypt_t object.
325
+ # @param [ FFI::Pointer ] schema_map A pointer to a mongocrypt_binary_t.
326
+ # object that references the schema map as a BSON binary string.
327
+ # @return [ Boolean ] Returns whether the option was set successfully.
303
328
  attach_function :mongocrypt_setopt_schema_map, [:pointer, :pointer], :bool
304
329
 
305
330
  # Set schema map on the Mongo::Crypt::Handle object
@@ -319,11 +344,12 @@ module Mongo
319
344
  end
320
345
  end
321
346
 
322
- # Initialize the mongocrypt_t object
347
+ # @!method self.mongocrypt_init(crypt)
348
+ # @api private
323
349
  #
324
- # @param [ FFI::Pointer ] crypt A pointer to a mongocrypt_t object
325
- #
326
- # @return [ Boolean ] Returns whether the crypt was initialized successfully
350
+ # Initialize the mongocrypt_t object.
351
+ # @param [ FFI::Pointer ] crypt A pointer to a mongocrypt_t object.
352
+ # @return [ Boolean ] Returns whether the crypt was initialized successfully.
327
353
  attach_function :mongocrypt_init, [:pointer], :bool
328
354
 
329
355
  # Initialize the Mongo::Crypt::Handle object
@@ -337,47 +363,52 @@ module Mongo
337
363
  end
338
364
  end
339
365
 
340
- # Set the status information from the mongocrypt_t object on the
341
- # mongocrypt_status_t object
342
- #
343
- # @param [ FFI::Pointer ] crypt A pointer to a mongocrypt_t object
344
- # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t object
366
+ # @!method self.mongocrypt_status(crypt, status)
367
+ # @api private
345
368
  #
346
- # @return [ Boolean ] Whether the status was successfully set
369
+ # Set the status information from the mongocrypt_t object on the
370
+ # mongocrypt_status_t object.
371
+ # @param [ FFI::Pointer ] crypt A pointer to a mongocrypt_t object.
372
+ # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t object.
373
+ # @return [ Boolean ] Whether the status was successfully set.
347
374
  attach_function :mongocrypt_status, [:pointer, :pointer], :bool
348
375
 
349
- # Destroy the reference the mongocrypt_t object
376
+ # @!method self.mongocrypt_destroy(crypt)
377
+ # @api private
350
378
  #
351
- # @param [ FFI::Pointer ] crypt A pointer to a mongocrypt_t object
352
- #
353
- # @return [ nil ] Always nil
379
+ # Destroy the reference the mongocrypt_t object.
380
+ # @param [ FFI::Pointer ] crypt A pointer to a mongocrypt_t object.
381
+ # @return [ nil ] Always nil.
354
382
  attach_function :mongocrypt_destroy, [:pointer], :void
355
383
 
356
- # Create a new mongocrypt_ctx_t object (a wrapper for the libmongocrypt
357
- # state machine)
358
- #
359
- # @param [ FFI::Pointer ] crypt A pointer to a mongocrypt_t object
384
+ # @!method self.mongocrypt_ctx_new(crypt)
385
+ # @api private
360
386
  #
361
- # @return [ FFI::Pointer ] A new mongocrypt_ctx_t object
387
+ # Create a new mongocrypt_ctx_t object (a wrapper for the libmongocrypt
388
+ # state machine).
389
+ # @param [ FFI::Pointer ] crypt A pointer to a mongocrypt_t object.
390
+ # @return [ FFI::Pointer ] A new mongocrypt_ctx_t object.
362
391
  attach_function :mongocrypt_ctx_new, [:pointer], :pointer
363
392
 
364
- # Set the status information from the mongocrypt_ctx_t object on the
365
- # mongocrypt_status_t object
393
+ # @!method self.mongocrypt_ctx_status(ctx, status)
394
+ # @api private
366
395
  #
367
- # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object
368
- # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t object
369
- #
370
- # @return [ Boolean ] Whether the status was successfully set
396
+ # Set the status information from the mongocrypt_ctx_t object on the
397
+ # mongocrypt_status_t object.
398
+ # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object.
399
+ # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t object.
400
+ # @return [ Boolean ] Whether the status was successfully set.
371
401
  attach_function :mongocrypt_ctx_status, [:pointer, :pointer], :bool
372
402
 
373
- # Set the key id used for explicit encryption
374
- #
375
- # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object
376
- # @param [ FFI::Pointer ] key_id A pointer to a mongocrypt_binary_t object
377
- # that references the 16-byte key-id
403
+ # @!method self.mongocrypt_ctx_setopt_key_id(ctx, key_id)
404
+ # @api private
378
405
  #
379
- # @note Do not initialize ctx before calling this method
380
- # @return [ Boolean ] Whether the option was successfully set
406
+ # Set the key id used for explicit encryption.
407
+ # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object.
408
+ # @param [ FFI::Pointer ] key_id A pointer to a mongocrypt_binary_t object
409
+ # that references the 16-byte key-id.
410
+ # @note Do not initialize ctx before calling this method.
411
+ # @return [ Boolean ] Whether the option was successfully set.
381
412
  attach_function :mongocrypt_ctx_setopt_key_id, [:pointer, :pointer], :bool
382
413
 
383
414
  # Sets the key id option on an explicit encryption context.
@@ -394,18 +425,18 @@ module Mongo
394
425
  end
395
426
  end
396
427
 
397
- # When creating a data key, set an alternate name on that key. When
398
- # performing explicit encryption, specifying which data key to use for
399
- # encryption based on its keyAltName field.
400
- #
401
- # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object
402
- # @param [ FFI::Pointer ] binary A pointer to a mongocrypt_binary_t
403
- # object that references a BSON document in the format
404
- # { "keyAltName": <BSON UTF8 value> }
405
- #
406
- # @return [ Boolean ] Whether the alternative name was successfully set
407
- #
408
- # @note Do not initialize ctx before calling this method
428
+ # @!method self.mongocrypt_ctx_setopt_key_alt_name(ctx, binary)
429
+ # @api private
430
+ #
431
+ # When creating a data key, set an alternate name on that key. When
432
+ # performing explicit encryption, specifying which data key to use for
433
+ # encryption based on its keyAltName field.
434
+ # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object.
435
+ # @param [ FFI::Pointer ] binary A pointer to a mongocrypt_binary_t
436
+ # object that references a BSON document in the format
437
+ # { "keyAltName": <BSON UTF8 value> }.
438
+ # @return [ Boolean ] Whether the alternative name was successfully set.
439
+ # @note Do not initialize ctx before calling this method.
409
440
  attach_function(
410
441
  :mongocrypt_ctx_setopt_key_alt_name,
411
442
  [:pointer, :pointer],
@@ -431,16 +462,17 @@ module Mongo
431
462
  end
432
463
  end
433
464
 
434
- # Set the algorithm used for explicit encryption
435
- #
436
- # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object
437
- # @param [ String ] algorithm The algorithm name. Valid values are:
438
- # - "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic"
439
- # - "AEAD_AES_256_CBC_HMAC_SHA_512-Random"
440
- # @param [ Integer ] len The length of the algorithm string
441
- #
442
- # @note Do not initialize ctx before calling this method
443
- # @return [ Boolean ] Whether the option was successfully set
465
+ # @!method self.mongocrypt_ctx_setopt_algorithm(ctx, algorithm, len)
466
+ # @api private
467
+ #
468
+ # Set the algorithm used for explicit encryption.
469
+ # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object.
470
+ # @param [ String ] algorithm The algorithm name. Valid values are:
471
+ # - "AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic"
472
+ # - "AEAD_AES_256_CBC_HMAC_SHA_512-Random"
473
+ # @param [ Integer ] len The length of the algorithm string.
474
+ # @note Do not initialize ctx before calling this method.
475
+ # @return [ Boolean ] Whether the option was successfully set.
444
476
  attach_function(
445
477
  :mongocrypt_ctx_setopt_algorithm,
446
478
  [:pointer, :string, :int],
@@ -461,17 +493,18 @@ module Mongo
461
493
  end
462
494
  end
463
495
 
464
- # Configure the ctx to take a master key from AWS
465
- #
466
- # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_object
467
- # @param [ String ] region The AWS region
468
- # @param [ Integer ] region_len The length of the region string (or -1
469
- # for a null-terminated string)
470
- # @param [ String ] arn The Amazon Resource Name (ARN) of the mater key
471
- # @param [ Integer ] arn_len The length of the ARN (or -1 for a
472
- # null-terminated string)
473
- #
474
- # @return [ Boolean ] Returns whether the option was set successfully
496
+ # @!method self.mongocrypt_ctx_setopt_masterkey_aws(ctx, region, region_len, arn, arn_len)
497
+ # @api private
498
+ #
499
+ # Configure the ctx to take a master key from AWS.
500
+ # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_object.
501
+ # @param [ String ] region The AWS region.
502
+ # @param [ Integer ] region_len The length of the region string (or -1
503
+ # for a null-terminated string).
504
+ # @param [ String ] arn The Amazon Resource Name (ARN) of the mater key.
505
+ # @param [ Integer ] arn_len The length of the ARN (or -1 for a
506
+ # null-terminated string).
507
+ # @return [ Boolean ] Returns whether the option was set successfully.
475
508
  attach_function(
476
509
  :mongocrypt_ctx_setopt_masterkey_aws,
477
510
  [:pointer, :string, :int, :string, :int],
@@ -497,14 +530,15 @@ module Mongo
497
530
  end
498
531
  end
499
532
 
500
- # Set a custom endpoint at which to fetch the AWS master key
501
- #
502
- # @param [ FFI::Pointer ] ctx
503
- # @param [ String ] endpoint The custom endpoint
504
- # @param [ Integer ] endpoint_len The length of the endpoint string (or
505
- # -1 for a null-terminated string)
533
+ # @!method self.mongocrypt_ctx_setopt_masterkey_aws_endpoint(ctx, endpoint, endpoint_len)
534
+ # @api private
506
535
  #
507
- # @return [ Boolean ] Returns whether the option was set successfully
536
+ # Set a custom endpoint at which to fetch the AWS master key
537
+ # @param [ FFI::Pointer ] ctx
538
+ # @param [ String ] endpoint The custom endpoint.
539
+ # @param [ Integer ] endpoint_len The length of the endpoint string (or
540
+ # -1 for a null-terminated string).
541
+ # @return [ Boolean ] Returns whether the option was set successfully.
508
542
  attach_function(
509
543
  :mongocrypt_ctx_setopt_masterkey_aws_endpoint,
510
544
  [:pointer, :string, :int],
@@ -527,12 +561,13 @@ module Mongo
527
561
  end
528
562
  end
529
563
 
530
- # Set the ctx to take a local master key
531
- #
532
- # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object
564
+ # @!method self.mongocrypt_ctx_setopt_masterkey_local(ctx)
565
+ # @api private
533
566
  #
534
- # @note Do not initialize ctx before calling this method
535
- # @return [ Boolean ] Whether the option was successfully set
567
+ # Set the ctx to take a local master key.
568
+ # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object.
569
+ # @note Do not initialize ctx before calling this method.
570
+ # @return [ Boolean ] Whether the option was successfully set.
536
571
  attach_function(
537
572
  :mongocrypt_ctx_setopt_masterkey_local,
538
573
  [:pointer],
@@ -550,16 +585,16 @@ module Mongo
550
585
  end
551
586
  end
552
587
 
553
- # Initializes the ctx to create a data key
554
- #
555
- # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object
556
- #
557
- # @note Before calling this method, master key options must be set.
558
- # Set AWS master key by calling mongocrypt_ctx_setopt_masterkey_aws
559
- # and mongocrypt_ctx_setopt_masterkey_aws_endpoint. Set local master
560
- # key by calling mongocrypt_ctx_setopt_masterkey_local.
588
+ # @!method self.mongocrypt_ctx_datakey_init(ctx)
589
+ # @api private
561
590
  #
562
- # @return [ Boolean ] Whether the initialization was successful
591
+ # Initializes the ctx to create a data key.
592
+ # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object.
593
+ # @note Before calling this method, master key options must be set.
594
+ # Set AWS master key by calling mongocrypt_ctx_setopt_masterkey_aws
595
+ # and mongocrypt_ctx_setopt_masterkey_aws_endpoint. Set local master
596
+ # key by calling mongocrypt_ctx_setopt_masterkey_local.
597
+ # @return [ Boolean ] Whether the initialization was successful.
563
598
  attach_function :mongocrypt_ctx_datakey_init, [:pointer], :bool
564
599
 
565
600
  # Initialize the Context to create a data key
@@ -573,19 +608,19 @@ module Mongo
573
608
  end
574
609
  end
575
610
 
576
- # Initializes the ctx for auto-encryption
577
- #
578
- # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object
579
- # @param [ String ] db The database name
580
- # @param [ Integer ] db_len The length of the database name argument (or
581
- # -1 for a null-terminated string)
582
- # @param [ FFI::Pointer ] cmd A pointer to a mongocrypt_binary_t object
583
- # that references the database command as a binary string
584
- #
585
- # @note This method expects the passed-in BSON to be in the format:
586
- # { "v": BSON value to decrypt }
587
- #
588
- # @return [ Boolean ] Whether the initialization was successful
611
+ # @!method self.mongocrypt_ctx_encrypt_init(ctx, db, db_len, cmd)
612
+ # @api private
613
+ #
614
+ # Initializes the ctx for auto-encryption.
615
+ # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object.
616
+ # @param [ String ] db The database name.
617
+ # @param [ Integer ] db_len The length of the database name argument
618
+ # (or -1 for a null-terminated string).
619
+ # @param [ FFI::Pointer ] cmd A pointer to a mongocrypt_binary_t object
620
+ # that references the database command as a binary string.
621
+ # @note This method expects the passed-in BSON to be in the format:
622
+ # { "v": BSON value to decrypt }.
623
+ # @return [ Boolean ] Whether the initialization was successful.
589
624
  attach_function(
590
625
  :mongocrypt_ctx_encrypt_init,
591
626
  [:pointer, :string, :int, :pointer],
@@ -610,18 +645,18 @@ module Mongo
610
645
  end
611
646
  end
612
647
 
613
- # Initializes the ctx for explicit encryption
614
- #
615
- # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object
616
- # @param [ FFI::Pointer ] msg A pointer to a mongocrypt_binary_t object
617
- # that references the message to be encrypted as a binary string
618
- #
619
- # @note Before calling this method, set a key_id, key_alt_name (optional),
620
- # and encryption algorithm using the following methods:
621
- # mongocrypt_ctx_setopt_key_id, mongocrypt_ctx_setopt_key_alt_name,
622
- # and mongocrypt_ctx_setopt_algorithm
623
- #
624
- # @return [ Boolean ] Whether the initialization was successful
648
+ # @!method self.mongocrypt_ctx_explicit_encrypt_init(ctx, msg)
649
+ # @api private
650
+ #
651
+ # Initializes the ctx for explicit encryption.
652
+ # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object.
653
+ # @param [ FFI::Pointer ] msg A pointer to a mongocrypt_binary_t object
654
+ # that references the message to be encrypted as a binary string.
655
+ # @note Before calling this method, set a key_id, key_alt_name (optional),
656
+ # and encryption algorithm using the following methods:
657
+ # mongocrypt_ctx_setopt_key_id, mongocrypt_ctx_setopt_key_alt_name,
658
+ # and mongocrypt_ctx_setopt_algorithm.
659
+ # @return [ Boolean ] Whether the initialization was successful.
625
660
  attach_function(
626
661
  :mongocrypt_ctx_explicit_encrypt_init,
627
662
  [:pointer, :pointer],
@@ -631,7 +666,7 @@ module Mongo
631
666
  # Initialize the Context for explicit encryption
632
667
  #
633
668
  # @param [ Mongo::Crypt::Context ] context
634
- # @param [ Hash ] A BSON document to encrypt
669
+ # @param [ Hash ] doc A BSON document to encrypt
635
670
  #
636
671
  # @raise [ Mongo::Error::CryptError ] If initialization fails
637
672
  def self.ctx_explicit_encrypt_init(context, doc)
@@ -644,19 +679,20 @@ module Mongo
644
679
  end
645
680
  end
646
681
 
647
- # Initializes the ctx for auto-decryption
682
+ # @!method self.mongocrypt_ctx_decrypt_init(ctx, doc)
683
+ # @api private
648
684
  #
649
- # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object
650
- # @param [ FFI::Pointer ] doc A pointer to a mongocrypt_binary_t object
651
- # that references the document to be decrypted as a BSON binary string
652
- #
653
- # @return [ Boolean ] Whether the initialization was successful
685
+ # Initializes the ctx for auto-decryption.
686
+ # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object.
687
+ # @param [ FFI::Pointer ] doc A pointer to a mongocrypt_binary_t object
688
+ # that references the document to be decrypted as a BSON binary string.
689
+ # @return [ Boolean ] Whether the initialization was successful.
654
690
  attach_function :mongocrypt_ctx_decrypt_init, [:pointer, :pointer], :bool
655
691
 
656
692
  # Initialize the Context for auto-decryption
657
693
  #
658
694
  # @param [ Mongo::Crypt::Context ] context
659
- # @param [ BSON::Document ] A BSON document to decrypt
695
+ # @param [ BSON::Document ] command A BSON document to decrypt
660
696
  #
661
697
  # @raise [ Mongo::Error::CryptError ] If initialization fails
662
698
  def self.ctx_decrypt_init(context, command)
@@ -669,13 +705,14 @@ module Mongo
669
705
  end
670
706
  end
671
707
 
672
- # Initializes the ctx for explicit decryption
673
- #
674
- # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object
675
- # @param [ FFI::Pointer ] msg A pointer to a mongocrypt_binary_t object
676
- # that references the message to be decrypted as a BSON binary string
708
+ # @!method self.mongocrypt_ctx_explicit_decrypt_init(ctx, msg)
709
+ # @api private
677
710
  #
678
- # @return [ Boolean ] Whether the initialization was successful
711
+ # Initializes the ctx for explicit decryption.
712
+ # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object.
713
+ # @param [ FFI::Pointer ] msg A pointer to a mongocrypt_binary_t object
714
+ # that references the message to be decrypted as a BSON binary string.
715
+ # @return [ Boolean ] Whether the initialization was successful.
679
716
  attach_function(
680
717
  :mongocrypt_ctx_explicit_decrypt_init,
681
718
  [:pointer, :pointer],
@@ -685,7 +722,7 @@ module Mongo
685
722
  # Initialize the Context for explicit decryption
686
723
  #
687
724
  # @param [ Mongo::Crypt::Context ] context
688
- # @param [ Hash ] A BSON document to decrypt
725
+ # @param [ Hash ] doc A BSON document to decrypt
689
726
  #
690
727
  # @raise [ Mongo::Error::CryptError ] If initialization fails
691
728
  def self.ctx_explicit_decrypt_init(context, doc)
@@ -709,23 +746,25 @@ module Mongo
709
746
  :done, 6,
710
747
  ]
711
748
 
712
- # Get the current state of the ctx
749
+ # @!method self.mongocrypt_ctx_state(ctx)
750
+ # @api private
713
751
  #
714
- # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object
715
- #
716
- # @return [ Symbol ] The current state, will be one of the values defined
717
- # by the mongocrypt_ctx_state enum
752
+ # Get the current state of the ctx.
753
+ # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object.
754
+ # @return [ Symbol ] The current state, will be one of the values defined
755
+ # by the mongocrypt_ctx_state enum.
718
756
  attach_function :mongocrypt_ctx_state, [:pointer], :mongocrypt_ctx_state
719
757
 
720
- # Get a BSON operation for the driver to run against the MongoDB
721
- # collection, the key vault database, or mongocryptd.
722
- #
723
- # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object
724
- # @param [ FFI::Pointer ] op_bson (out param) A pointer to a
725
- # mongocrypt_binary_t object that will have a reference to the
726
- # BSON operation written to it by libmongocrypt
758
+ # @!method self.mongocrypt_ctx_mongo_op(ctx, op_bson)
759
+ # @api private
727
760
  #
728
- # @return [ Boolean ] A boolean indicating the success of the operation
761
+ # Get a BSON operation for the driver to run against the MongoDB
762
+ # collection, the key vault database, or mongocryptd.
763
+ # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object.
764
+ # @param [ FFI::Pointer ] op_bson (out param) A pointer to a
765
+ # mongocrypt_binary_t object that will have a reference to the
766
+ # BSON operation written to it by libmongocrypt.
767
+ # @return [ Boolean ] A boolean indicating the success of the operation.
729
768
  attach_function :mongocrypt_ctx_mongo_op, [:pointer, :pointer], :bool
730
769
 
731
770
  # Returns a BSON::Document representing an operation that the
@@ -750,13 +789,14 @@ module Mongo
750
789
  BSON::Document.from_bson(BSON::ByteBuffer.new(binary.to_s), mode: :bson)
751
790
  end
752
791
 
753
- # Feed a BSON reply to libmongocrypt
792
+ # @!method self.mongocrypt_ctx_mongo_feed(ctx, reply)
793
+ # @api private
754
794
  #
755
- # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object
756
- # @param [ FFI::Pointer ] reply A mongocrypt_binary_t object that
757
- # references the BSON reply to feed to libmongocrypt
758
- #
759
- # @return [ Boolean ] A boolean indicating the success of the operation
795
+ # Feed a BSON reply to libmongocrypt.
796
+ # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object.
797
+ # @param [ FFI::Pointer ] reply A mongocrypt_binary_t object that
798
+ # references the BSON reply to feed to libmongocrypt.
799
+ # @return [ Boolean ] A boolean indicating the success of the operation.
760
800
  attach_function :mongocrypt_ctx_mongo_feed, [:pointer, :pointer], :bool
761
801
 
762
802
  # Feed a response from the driver back to libmongocrypt
@@ -775,18 +815,20 @@ module Mongo
775
815
  end
776
816
  end
777
817
 
778
- # Indicate to libmongocrypt that the driver is done feeding replies
779
- #
780
- # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object
818
+ # @!method self.mongocrypt_ctx_mongo_done(ctx)
819
+ # @api private
781
820
  #
782
- # @return [ Boolean ] A boolean indicating the success of the operation
821
+ # Indicate to libmongocrypt that the driver is done feeding replies.
822
+ # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object.
823
+ # @return [ Boolean ] A boolean indicating the success of the operation.
783
824
  attach_function :mongocrypt_ctx_mongo_done, [:pointer], :bool
784
825
 
785
- # Return a pointer to a mongocrypt_kms_ctx_t object or NULL.
826
+ # @!method self.mongocrypt_ctx_mongo_next_kms_ctx(ctx)
827
+ # @api private
786
828
  #
787
- # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object
788
- #
789
- # @return [ FFI::Pointer ] A pointer to a mongocrypt_kms_ctx_t object
829
+ # Return a pointer to a mongocrypt_kms_ctx_t object or NULL.
830
+ # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object.
831
+ # @return [ FFI::Pointer ] A pointer to a mongocrypt_kms_ctx_t object.
790
832
  attach_function :mongocrypt_ctx_next_kms_ctx, [:pointer], :pointer
791
833
 
792
834
  # Return a new KmsContext object needed by a Context object.
@@ -805,14 +847,15 @@ module Mongo
805
847
  end
806
848
  end
807
849
 
808
- # Get the message needed to fetch the AWS KMS master key.
809
- #
810
- # @param [ FFI::Pointer ] kms Pointer to the mongocrypt_kms_ctx_t object
811
- # @param [ FFI::Pointer ] msg (outparam) Pointer to a mongocrypt_binary_t
812
- # object that will have the location of the message written to it by
813
- # libmongocrypt
850
+ # @!method self.mongocrypt_kms_ctx_message(kms, msg)
851
+ # @api private
814
852
  #
815
- # @return [ Boolean ] Whether the operation is successful
853
+ # Get the message needed to fetch the AWS KMS master key.
854
+ # @param [ FFI::Pointer ] kms Pointer to the mongocrypt_kms_ctx_t object
855
+ # @param [ FFI::Pointer ] msg (outparam) Pointer to a mongocrypt_binary_t
856
+ # object that will have the location of the message written to it by
857
+ # libmongocrypt.
858
+ # @return [ Boolean ] Whether the operation is successful.
816
859
  attach_function :mongocrypt_kms_ctx_message, [:pointer, :pointer], :bool
817
860
 
818
861
  # Get the HTTP message needed to fetch the AWS KMS master key from a
@@ -833,14 +876,15 @@ module Mongo
833
876
  return binary.to_s
834
877
  end
835
878
 
836
- # Get the hostname with which to connect over TLS to get information about
837
- # the AWS master key.
838
- #
839
- # @param [ FFI::Pointer ] kms A pointer to a mongocrypt_kms_ctx_t object
840
- # @param [ FFI::Pointer ] endpoint (out param) A pointer to which the
841
- # endpoint string will be written by libmongocrypt
879
+ # @!method self.mongocrypt_kms_ctx_endpoint(kms, endpoint)
880
+ # @api private
842
881
  #
843
- # @return [ Boolean ] Whether the operation was successful
882
+ # Get the hostname with which to connect over TLS to get information about
883
+ # the AWS master key.
884
+ # @param [ FFI::Pointer ] kms A pointer to a mongocrypt_kms_ctx_t object.
885
+ # @param [ FFI::Pointer ] endpoint (out param) A pointer to which the
886
+ # endpoint string will be written by libmongocrypt.
887
+ # @return [ Boolean ] Whether the operation was successful.
844
888
  attach_function :mongocrypt_kms_ctx_endpoint, [:pointer, :pointer], :bool
845
889
 
846
890
  # Get the hostname with which to connect over TLS to get information
@@ -862,11 +906,12 @@ module Mongo
862
906
  str_ptr.null? ? nil : str_ptr.read_string.force_encoding('UTF-8')
863
907
  end
864
908
 
865
- # Get the number of bytes needed by the KMS context.
909
+ # @!method self.mongocrypt_kms_ctx_bytes_needed(kms)
910
+ # @api private
866
911
  #
867
- # @param [ FFI::Pointer ] kms The mongocrypt_kms_ctx_t object
868
- #
869
- # @return [ Integer ] The number of bytes needed
912
+ # Get the number of bytes needed by the KMS context.
913
+ # @param [ FFI::Pointer ] kms The mongocrypt_kms_ctx_t object.
914
+ # @return [ Integer ] The number of bytes needed.
870
915
  attach_function :mongocrypt_kms_ctx_bytes_needed, [:pointer], :int
871
916
 
872
917
  # Get the number of bytes needed by the KmsContext.
@@ -878,19 +923,20 @@ module Mongo
878
923
  mongocrypt_kms_ctx_bytes_needed(kms_context.kms_ctx_p)
879
924
  end
880
925
 
881
- # Feed replies from the KMS back to libmongocrypt.
882
- #
883
- # @param [ FFI::Pointer ] kms A pointer to the mongocrypt_kms_ctx_t object
884
- # @param [ FFI::Pointer ] bytes A pointer to a mongocrypt_binary_t
885
- # object that references the response from the KMS
926
+ # @!method self.mongocrypt_kms_ctx_feed(kms, bytes)
927
+ # @api private
886
928
  #
887
- # @return [ Boolean ] Whether the operation was successful
929
+ # Feed replies from the KMS back to libmongocrypt.
930
+ # @param [ FFI::Pointer ] kms A pointer to the mongocrypt_kms_ctx_t object.
931
+ # @param [ FFI::Pointer ] bytes A pointer to a mongocrypt_binary_t
932
+ # object that references the response from the KMS.
933
+ # @return [ Boolean ] Whether the operation was successful.
888
934
  attach_function :mongocrypt_kms_ctx_feed, [:pointer, :pointer], :bool
889
935
 
890
936
  # Feed replies from the KMS back to libmongocrypt.
891
937
  #
892
938
  # @param [ Mongo::Crypt::KmsContext ] kms_context
893
- # @oaram [ String ] data The data to feed to libmongocrypt
939
+ # @param [ String ] bytes The data to feed to libmongocrypt
894
940
  #
895
941
  # @raise [ Mongo::Error::CryptError ] If the response is not fed successfully
896
942
  def self.kms_ctx_feed(kms_context, bytes)
@@ -901,13 +947,14 @@ module Mongo
901
947
  end
902
948
  end
903
949
 
904
- # Write status information about the mongocrypt_kms_ctx_t object
905
- # to the mongocrypt_status_t object.
950
+ # @!method self.mongocrypt_kms_ctx_status(kms, status)
951
+ # @api private
906
952
  #
907
- # @param [ FFI::Pointer ] kms A pointer to the mongocrypt_kms_ctx_t object
908
- # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t object
909
- #
910
- # @return [ Boolean ] Whether the operation was successful
953
+ # Write status information about the mongocrypt_kms_ctx_t object
954
+ # to the mongocrypt_status_t object.
955
+ # @param [ FFI::Pointer ] kms A pointer to the mongocrypt_kms_ctx_t object.
956
+ # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t object.
957
+ # @return [ Boolean ] Whether the operation was successful.
911
958
  attach_function :mongocrypt_kms_ctx_status, [:pointer, :pointer], :bool
912
959
 
913
960
  # If the provided block returns false, raise a CryptError with the
@@ -925,12 +972,13 @@ module Mongo
925
972
  end
926
973
  end
927
974
 
928
- # Indicate to libmongocrypt that it will receive no more replies from
929
- # mongocrypt_kms_ctx_t objects.
930
- #
931
- # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object
975
+ # @!method self.mongocrypt_kms_ctx_done(ctx)
976
+ # @api private
932
977
  #
933
- # @return [ Boolean ] Whether the operation was successful
978
+ # Indicate to libmongocrypt that it will receive no more replies from
979
+ # mongocrypt_kms_ctx_t objects.
980
+ # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object.
981
+ # @return [ Boolean ] Whether the operation was successful.
934
982
  attach_function :mongocrypt_ctx_kms_done, [:pointer], :bool
935
983
 
936
984
  # Indicate to libmongocrypt that it will receive no more KMS replies.
@@ -944,14 +992,15 @@ module Mongo
944
992
  end
945
993
  end
946
994
 
947
- # Perform the final encryption or decryption and return a BSON document
995
+ # @!method self.mongocrypt_ctx_finalize(ctx, op_bson)
996
+ # @api private
948
997
  #
949
- # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object
950
- # @param [ FFI::Pointer ] op_bson (out param) A pointer to a
951
- # mongocrypt_binary_t object that will have a reference to the
952
- # final encrypted BSON document
953
- #
954
- # @return [ Boolean ] A boolean indicating the success of the operation
998
+ # Perform the final encryption or decryption and return a BSON document.
999
+ # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object.
1000
+ # @param [ FFI::Pointer ] op_bson (out param) A pointer to a
1001
+ # mongocrypt_binary_t object that will have a reference to the
1002
+ # final encrypted BSON document.
1003
+ # @return [ Boolean ] A boolean indicating the success of the operation.
955
1004
  attach_function :mongocrypt_ctx_finalize, [:pointer, :pointer], :void
956
1005
 
957
1006
  # Finalize the state machine represented by the Context
@@ -973,99 +1022,117 @@ module Mongo
973
1022
  BSON::Document.from_bson(BSON::ByteBuffer.new(binary.to_s), mode: :bson)
974
1023
  end
975
1024
 
976
- # Destroy the reference to the mongocrypt_ctx_t object
977
- #
978
- # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object
1025
+ # @!method self.mongocrypt_ctx_destroy(ctx)
1026
+ # @api private
979
1027
  #
980
- # @return [ nil ] Always nil
1028
+ # Destroy the reference to the mongocrypt_ctx_t object.
1029
+ # @param [ FFI::Pointer ] ctx A pointer to a mongocrypt_ctx_t object.
1030
+ # @return [ nil ] Always nil.
981
1031
  attach_function :mongocrypt_ctx_destroy, [:pointer], :void
982
1032
 
983
- # A callback to a function that performs AES encryption or decryption
984
- #
985
- # @param [ FFI::Pointer | nil] ctx An optional pointer to a context object
986
- # that may have been set when hooks were enabled.
987
- # @param [ FFI::Pointer ] key A pointer to a mongocrypt_binary_t object
988
- # that references the 32-byte AES encryption key
989
- # @param [ FFI::Pointer ] iv A pointer to a mongocrypt_binary_t object
990
- # that references the 16-byte AES IV
991
- # @param [ FFI::Pointer ] in A pointer to a mongocrypt_binary_t object
992
- # that references the value to be encrypted/decrypted
993
- # @param [ FFI::Pointer ] out (out param) A pointer to a
994
- # mongocrypt_binary_t object will have a reference to the encrypted/
995
- # decrypted value written to it by libmongocrypt
996
- # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t
997
- # object to which an error message will be written if encryption fails
998
- #
999
- # @return [ Bool ] Whether encryption/decryption was successful
1033
+ # @!method mongocrypt_crypto_fn(ctx, key, iv, input, output, status)
1034
+ # @api private
1035
+ #
1036
+ # A callback to a function that performs AES encryption or decryption.
1037
+ # @param [ FFI::Pointer | nil] ctx An optional pointer to a context object
1038
+ # that may have been set when hooks were enabled.
1039
+ # @param [ FFI::Pointer ] key A pointer to a mongocrypt_binary_t object
1040
+ # that references the 32-byte AES encryption key.
1041
+ # @param [ FFI::Pointer ] iv A pointer to a mongocrypt_binary_t object
1042
+ # that references the 16-byte AES IV.
1043
+ # @param [ FFI::Pointer ] input A pointer to a mongocrypt_binary_t object
1044
+ # that references the value to be encrypted/decrypted.
1045
+ # @param [ FFI::Pointer ] output (out param) A pointer to a
1046
+ # mongocrypt_binary_t object will have a reference to the encrypted/
1047
+ # decrypted value written to it by libmongocrypt.
1048
+ # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t
1049
+ # object to which an error message will be written if encryption fails.
1050
+ # @return [ Bool ] Whether encryption/decryption was successful.
1051
+ #
1052
+ # @note This defines a method signature for an FFI callback; it is not
1053
+ # an instance method on the Binding class.
1000
1054
  callback(
1001
1055
  :mongocrypt_crypto_fn,
1002
1056
  [:pointer, :pointer, :pointer, :pointer, :pointer, :pointer, :pointer],
1003
1057
  :bool
1004
1058
  )
1005
1059
 
1006
- # A callback to a function that performs HMAC SHA-512 or SHA-256
1007
- #
1008
- # @param [ FFI::Pointer | nil ] ctx An optional pointer to a context object
1009
- # that may have been set when hooks were enabled.
1010
- # @param [ FFI::Pointer ] key A pointer to a mongocrypt_binary_t object
1011
- # that references the 32-byte HMAC SHA encryption key
1012
- # @param [ FFI::Pointer ] in A pointer to a mongocrypt_binary_t object
1013
- # that references the input value
1014
- # @param [ FFI::Pointer ] out (out param) A pointer to a
1015
- # mongocrypt_binary_t object will have a reference to the output value
1016
- # written to it by libmongocrypt
1017
- # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t
1018
- # object to which an error message will be written if encryption fails
1019
- #
1020
- # @return [ Bool ] Whether HMAC-SHA was successful
1060
+ # @!method mongocrypt_hmac_fn(ctx, key, input, output, status)
1061
+ # @api private
1062
+ #
1063
+ # A callback to a function that performs HMAC SHA-512 or SHA-256.
1064
+ # @param [ FFI::Pointer | nil ] ctx An optional pointer to a context object
1065
+ # that may have been set when hooks were enabled.
1066
+ # @param [ FFI::Pointer ] key A pointer to a mongocrypt_binary_t object
1067
+ # that references the 32-byte HMAC SHA encryption key.
1068
+ # @param [ FFI::Pointer ] input A pointer to a mongocrypt_binary_t object
1069
+ # that references the input value.
1070
+ # @param [ FFI::Pointer ] output (out param) A pointer to a
1071
+ # mongocrypt_binary_t object will have a reference to the output value
1072
+ # written to it by libmongocrypt.
1073
+ # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t
1074
+ # object to which an error message will be written if encryption fails.
1075
+ # @return [ Bool ] Whether HMAC-SHA was successful.
1076
+ #
1077
+ # @note This defines a method signature for an FFI callback; it is not
1078
+ # an instance method on the Binding class.
1021
1079
  callback(
1022
1080
  :mongocrypt_hmac_fn,
1023
1081
  [:pointer, :pointer, :pointer, :pointer, :pointer],
1024
1082
  :bool
1025
1083
  )
1026
1084
 
1027
- # A callback to a SHA-256 hash function
1028
- #
1029
- # @param [ FFI::Pointer | nil ] ctx An optional pointer to a context object
1030
- # that may have been set when hooks were enabled.
1031
- # @param [ FFI::Pointer ] in A pointer to a mongocrypt_binary_t object
1032
- # that references the value to be hashed
1033
- # @param [ FFI::Pointer ] out (out param) A pointer to a
1034
- # mongocrypt_binary_t object will have a reference to the output value
1035
- # written to it by libmongocrypt
1036
- # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t
1037
- # object to which an error message will be written if encryption fails
1038
- #
1039
- # @return [ Bool ] Whether hashing was successful
1085
+ # @!method mongocrypt_hash_fn(ctx, input, output, status)
1086
+ # @api private
1087
+ #
1088
+ # A callback to a SHA-256 hash function.
1089
+ # @param [ FFI::Pointer | nil ] ctx An optional pointer to a context object
1090
+ # that may have been set when hooks were enabled.
1091
+ # @param [ FFI::Pointer ] input A pointer to a mongocrypt_binary_t object
1092
+ # that references the value to be hashed.
1093
+ # @param [ FFI::Pointer ] output (out param) A pointer to a
1094
+ # mongocrypt_binary_t object will have a reference to the output value
1095
+ # written to it by libmongocrypt.
1096
+ # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t
1097
+ # object to which an error message will be written if encryption fails.
1098
+ # @return [ Bool ] Whether hashing was successful.
1099
+ #
1100
+ # @note This defines a method signature for an FFI callback; it is not
1101
+ # an instance method on the Binding class.
1040
1102
  callback :mongocrypt_hash_fn, [:pointer, :pointer, :pointer, :pointer], :bool
1041
1103
 
1042
- # A callback to a crypto secure random function
1043
- #
1044
- # @param [ FFI::Pointer | nil ] ctx An optional pointer to a context object
1045
- # that may have been set when hooks were enabled.
1046
- # @param [ FFI::Pointer ] out (out param) A pointer to a
1047
- # mongocrypt_binary_t object will have a reference to the output value
1048
- # written to it by libmongocrypt
1049
- # @param [ Integer ] count The number of random bytes to return
1050
- # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t
1051
- # object to which an error message will be written if encryption fails
1052
- #
1053
- # @return [ Bool ] Whether hashing was successful
1104
+ # @!method mongocrypt_random_fn(ctx, output, count, status)
1105
+ # @api private
1106
+ #
1107
+ # A callback to a crypto secure random function.
1108
+ # @param [ FFI::Pointer | nil ] ctx An optional pointer to a context object
1109
+ # that may have been set when hooks were enabled.
1110
+ # @param [ FFI::Pointer ] output (out param) A pointer to a
1111
+ # mongocrypt_binary_t object will have a reference to the output value
1112
+ # written to it by libmongocrypt.
1113
+ # @param [ Integer ] count The number of random bytes to return.
1114
+ # @param [ FFI::Pointer ] status A pointer to a mongocrypt_status_t
1115
+ # object to which an error message will be written if encryption fails.
1116
+ # @return [ Bool ] Whether hashing was successful.
1117
+ #
1118
+ # @note This defines a method signature for an FFI callback; it is not
1119
+ # an instance method on the Binding class.
1054
1120
  callback :mongocrypt_random_fn, [:pointer, :pointer, :int, :pointer], :bool
1055
1121
 
1056
- # Set crypto hooks on the provided mongocrypt object
1057
- #
1058
- # @param [ FFI::Pointer ] crypt A pointer to a mongocrypt_t object
1059
- # @param [ Proc ] An AES encryption method
1060
- # @param [ Proc ] An AES decryption method
1061
- # @param [ Proc ] A random method
1062
- # @param [ Proc ] A HMAC SHA-512 method
1063
- # @param [ Proc ] A HMAC SHA-256 method
1064
- # @param [ Proc ] A SHA-256 hash method
1065
- # @param [ FFI::Pointer | nil ] ctx An optional pointer to a context object
1066
- # that may have been set when hooks were enabled.
1067
- #
1068
- # @return [ Boolean ] Whether setting this option succeeded
1122
+ # @!method self.mongocrypt_setopt_crypto_hooks(crypt, aes_enc_fn, aes_dec_fn, random_fn, sha_512_fn, sha_256_fn, hash_fn, ctx=nil)
1123
+ # @api private
1124
+ #
1125
+ # Set crypto hooks on the provided mongocrypt object.
1126
+ # @param [ FFI::Pointer ] crypt A pointer to a mongocrypt_t object.
1127
+ # @param [ Proc ] aes_enc_fn An AES encryption method.
1128
+ # @param [ Proc ] aes_dec_fn An AES decryption method.
1129
+ # @param [ Proc ] random_fn A random method.
1130
+ # @param [ Proc ] sha_512_fn A HMAC SHA-512 method.
1131
+ # @param [ Proc ] sha_256_fn A HMAC SHA-256 method.
1132
+ # @param [ Proc ] hash_fn A SHA-256 hash method.
1133
+ # @param [ FFI::Pointer | nil ] ctx An optional pointer to a context object
1134
+ # that may have been set when hooks were enabled.
1135
+ # @return [ Boolean ] Whether setting this option succeeded.
1069
1136
  attach_function(
1070
1137
  :mongocrypt_setopt_crypto_hooks,
1071
1138
  [