ruby-paseto 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +8 -0
  3. data/CODE_OF_CONDUCT.md +84 -0
  4. data/LICENSE.txt +21 -0
  5. data/README.md +549 -0
  6. data/lib/paseto/asn1/algorithm_identifier.rb +17 -0
  7. data/lib/paseto/asn1/curve_private_key.rb +22 -0
  8. data/lib/paseto/asn1/ec_private_key.rb +27 -0
  9. data/lib/paseto/asn1/ecdsa_full_r.rb +26 -0
  10. data/lib/paseto/asn1/ecdsa_sig_value.rb +23 -0
  11. data/lib/paseto/asn1/ecdsa_signature.rb +49 -0
  12. data/lib/paseto/asn1/ed25519_identifier.rb +15 -0
  13. data/lib/paseto/asn1/named_curve.rb +17 -0
  14. data/lib/paseto/asn1/one_asymmetric_key.rb +32 -0
  15. data/lib/paseto/asn1/private_key.rb +17 -0
  16. data/lib/paseto/asn1/private_key_algorithm_identifier.rb +17 -0
  17. data/lib/paseto/asn1/public_key.rb +17 -0
  18. data/lib/paseto/asn1/subject_public_key_info.rb +28 -0
  19. data/lib/paseto/asn1.rb +101 -0
  20. data/lib/paseto/asymmetric_key.rb +100 -0
  21. data/lib/paseto/configuration/box.rb +23 -0
  22. data/lib/paseto/configuration/decode_configuration.rb +68 -0
  23. data/lib/paseto/configuration.rb +18 -0
  24. data/lib/paseto/interface/i_d.rb +23 -0
  25. data/lib/paseto/interface/key.rb +113 -0
  26. data/lib/paseto/interface/pbkd.rb +83 -0
  27. data/lib/paseto/interface/pie.rb +59 -0
  28. data/lib/paseto/interface/pke.rb +86 -0
  29. data/lib/paseto/interface/serializer.rb +19 -0
  30. data/lib/paseto/interface/version.rb +161 -0
  31. data/lib/paseto/interface/wrapper.rb +20 -0
  32. data/lib/paseto/operations/i_d.rb +48 -0
  33. data/lib/paseto/operations/id/i_dv3.rb +20 -0
  34. data/lib/paseto/operations/id/i_dv4.rb +20 -0
  35. data/lib/paseto/operations/pbkd/p_b_k_dv3.rb +85 -0
  36. data/lib/paseto/operations/pbkd/p_b_k_dv4.rb +94 -0
  37. data/lib/paseto/operations/pbkw.rb +73 -0
  38. data/lib/paseto/operations/pke/p_k_ev3.rb +97 -0
  39. data/lib/paseto/operations/pke/p_k_ev4.rb +95 -0
  40. data/lib/paseto/operations/pke.rb +57 -0
  41. data/lib/paseto/operations/wrap.rb +29 -0
  42. data/lib/paseto/paserk.rb +55 -0
  43. data/lib/paseto/paserk_types.rb +46 -0
  44. data/lib/paseto/protocol/version3.rb +100 -0
  45. data/lib/paseto/protocol/version4.rb +99 -0
  46. data/lib/paseto/result.rb +9 -0
  47. data/lib/paseto/serializer/optional_json.rb +30 -0
  48. data/lib/paseto/serializer/raw.rb +23 -0
  49. data/lib/paseto/sodium/curve_25519.rb +46 -0
  50. data/lib/paseto/sodium/safe_ed25519_loader.rb +19 -0
  51. data/lib/paseto/sodium/stream/base.rb +82 -0
  52. data/lib/paseto/sodium/stream/x_cha_cha20_xor.rb +31 -0
  53. data/lib/paseto/sodium.rb +5 -0
  54. data/lib/paseto/symmetric_key.rb +119 -0
  55. data/lib/paseto/token.rb +127 -0
  56. data/lib/paseto/token_types.rb +29 -0
  57. data/lib/paseto/util.rb +105 -0
  58. data/lib/paseto/v3/local.rb +63 -0
  59. data/lib/paseto/v3/public.rb +204 -0
  60. data/lib/paseto/v4/local.rb +56 -0
  61. data/lib/paseto/v4/public.rb +169 -0
  62. data/lib/paseto/validator.rb +154 -0
  63. data/lib/paseto/verifiers/footer.rb +30 -0
  64. data/lib/paseto/verifiers/payload.rb +42 -0
  65. data/lib/paseto/verify.rb +48 -0
  66. data/lib/paseto/version.rb +6 -0
  67. data/lib/paseto/versions.rb +25 -0
  68. data/lib/paseto/wrappers/pie/pie_v3.rb +72 -0
  69. data/lib/paseto/wrappers/pie/pie_v4.rb +72 -0
  70. data/lib/paseto/wrappers/pie.rb +71 -0
  71. data/lib/paseto.rb +99 -0
  72. data/paseto.gemspec +58 -0
  73. data/sorbet/config +3 -0
  74. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  75. data/sorbet/rbi/gems/ast@2.4.2.rbi +584 -0
  76. data/sorbet/rbi/gems/diff-lcs@1.5.0.rbi +1083 -0
  77. data/sorbet/rbi/gems/docile@1.4.0.rbi +376 -0
  78. data/sorbet/rbi/gems/ffi@1.15.5.rbi +1994 -0
  79. data/sorbet/rbi/gems/io-console@0.5.11.rbi +8 -0
  80. data/sorbet/rbi/gems/irb@1.5.1.rbi +342 -0
  81. data/sorbet/rbi/gems/json@2.6.3.rbi +1541 -0
  82. data/sorbet/rbi/gems/multi_json@1.15.0.rbi +267 -0
  83. data/sorbet/rbi/gems/netrc@0.11.0.rbi +158 -0
  84. data/sorbet/rbi/gems/oj@3.13.23.rbi +603 -0
  85. data/sorbet/rbi/gems/openssl@3.0.1.rbi +1735 -0
  86. data/sorbet/rbi/gems/parallel@1.22.1.rbi +277 -0
  87. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +407 -0
  88. data/sorbet/rbi/gems/rake@13.0.6.rbi +3021 -0
  89. data/sorbet/rbi/gems/rbnacl@7.1.1.rbi +3218 -0
  90. data/sorbet/rbi/gems/regexp_parser@2.6.1.rbi +3481 -0
  91. data/sorbet/rbi/gems/reline@0.3.1.rbi +8 -0
  92. data/sorbet/rbi/gems/rexml@3.2.5.rbi +4717 -0
  93. data/sorbet/rbi/gems/rspec-core@3.12.0.rbi +10887 -0
  94. data/sorbet/rbi/gems/rspec-expectations@3.12.0.rbi +8090 -0
  95. data/sorbet/rbi/gems/rspec-mocks@3.12.0.rbi +5300 -0
  96. data/sorbet/rbi/gems/rspec-support@3.12.0.rbi +1617 -0
  97. data/sorbet/rbi/gems/rspec@3.12.0.rbi +88 -0
  98. data/sorbet/rbi/gems/ruby-progressbar@1.11.0.rbi +1239 -0
  99. data/sorbet/rbi/gems/simplecov-html@0.12.3.rbi +219 -0
  100. data/sorbet/rbi/gems/simplecov@0.21.2.rbi +2135 -0
  101. data/sorbet/rbi/gems/simplecov_json_formatter@0.1.4.rbi +8 -0
  102. data/sorbet/rbi/gems/thor@1.2.1.rbi +3956 -0
  103. data/sorbet/rbi/gems/timecop@0.9.6.rbi +350 -0
  104. data/sorbet/rbi/gems/unicode-display_width@2.3.0.rbi +48 -0
  105. data/sorbet/rbi/gems/webrick@1.7.0.rbi +2555 -0
  106. data/sorbet/rbi/gems/yard-sorbet@0.7.0.rbi +391 -0
  107. data/sorbet/rbi/gems/yard@0.9.28.rbi +17816 -0
  108. data/sorbet/rbi/gems/zeitwerk@2.6.6.rbi +950 -0
  109. data/sorbet/rbi/shims/multi_json.rbi +19 -0
  110. data/sorbet/rbi/shims/openssl.rbi +111 -0
  111. data/sorbet/rbi/shims/rbnacl.rbi +65 -0
  112. data/sorbet/rbi/shims/zeitwerk.rbi +6 -0
  113. data/sorbet/rbi/todo.rbi +7 -0
  114. data/sorbet/tapioca/config.yml +30 -0
  115. data/sorbet/tapioca/require.rb +12 -0
  116. metadata +376 -0
@@ -0,0 +1,3218 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `rbnacl` gem.
5
+ # Please instead update this file by running `bin/tapioca gem rbnacl`.
6
+
7
+ # NaCl/libsodium for Ruby
8
+ #
9
+ # source://rbnacl//lib/rbnacl/version.rb#5
10
+ module RbNaCl; end
11
+
12
+ # source://rbnacl//lib/rbnacl/aead/base.rb#5
13
+ module RbNaCl::AEAD; end
14
+
15
+ # Abstract base class for Authenticated Encryption with Additional Data
16
+ #
17
+ # This construction encrypts a message, and computes an authentication
18
+ # tag for the encrypted message and some optional additional data
19
+ #
20
+ # RbNaCl provides wrappers for both ChaCha20-Poly1305 AEAD implementations
21
+ # in libsodium: the original, and the IETF version.
22
+ #
23
+ # source://rbnacl//lib/rbnacl/aead/base.rb#13
24
+ class RbNaCl::AEAD::Base
25
+ # Create a new AEAD using the IETF chacha20poly1305 construction
26
+ #
27
+ # Sets up AEAD with a secret key for encrypting and decrypting messages.
28
+ #
29
+ # @param key [String] The key to encrypt and decrypt with
30
+ # @raise [RbNaCl::LengthError] on invalid keys
31
+ # @return [RbNaCl::AEAD::Chacha20Poly1305IETF] The new AEAD construct, ready to use
32
+ #
33
+ # source://rbnacl//lib/rbnacl/aead/base.rb#32
34
+ def initialize(key); end
35
+
36
+ # Decrypts and verifies an encrypted message with additional authenticated data
37
+ #
38
+ # @param nonce [String] An 8-byte string containing the nonce.
39
+ # @param ciphertext [String] The message to be decrypted.
40
+ # @param additional_data [String] The additional authenticated data
41
+ # @raise [RbNaCl::LengthError] If the nonce is not valid
42
+ # @raise [RbNaCl::CryptoError] If the ciphertext cannot be authenticated.
43
+ # @return [String] The decrypted message
44
+ #
45
+ # source://rbnacl//lib/rbnacl/aead/base.rb#68
46
+ def decrypt(nonce, ciphertext, additional_data); end
47
+
48
+ # Encrypts and authenticates a message with additional authenticated data
49
+ #
50
+ # @param nonce [String] An 8-byte string containing the nonce.
51
+ # @param message [String] The message to be encrypted.
52
+ # @param additional_data [String] The additional authenticated data
53
+ # @raise [RbNaCl::LengthError] If the nonce is not valid
54
+ # @raise [RbNaCl::CryptoError] If the ciphertext cannot be authenticated.
55
+ # @return [String] The encrypted message with the authenticator tag appended
56
+ #
57
+ # source://rbnacl//lib/rbnacl/aead/base.rb#46
58
+ def encrypt(nonce, message, additional_data); end
59
+
60
+ # The key bytes for the AEAD instance
61
+ #
62
+ # @return [Integer] The number of bytes in a valid key
63
+ #
64
+ # source://rbnacl//lib/rbnacl/aead/base.rb#111
65
+ def key_bytes; end
66
+
67
+ # The nonce bytes for the AEAD instance
68
+ #
69
+ # @return [Integer] The number of bytes in a valid nonce
70
+ #
71
+ # source://rbnacl//lib/rbnacl/aead/base.rb#97
72
+ def nonce_bytes; end
73
+
74
+ # The crypto primitive for this aead instance
75
+ #
76
+ # @return [Symbol] The primitive used
77
+ #
78
+ # source://rbnacl//lib/rbnacl/aead/base.rb#83
79
+ def primitive; end
80
+
81
+ # The number of bytes in the tag or authenticator for this AEAD instance
82
+ #
83
+ # @return [Integer] number of tag bytes
84
+ #
85
+ # source://rbnacl//lib/rbnacl/aead/base.rb#125
86
+ def tag_bytes; end
87
+
88
+ private
89
+
90
+ # source://rbnacl//lib/rbnacl/aead/base.rb#131
91
+ def data_len(data); end
92
+
93
+ # @raise [NotImplementedError]
94
+ #
95
+ # source://rbnacl//lib/rbnacl/aead/base.rb#141
96
+ def do_decrypt(_message, _message_len, _nonce, _ciphertext, _additional_data); end
97
+
98
+ # @raise [NotImplementedError]
99
+ #
100
+ # source://rbnacl//lib/rbnacl/aead/base.rb#137
101
+ def do_encrypt(_ciphertext, _ciphertext_len, _nonce, _message, _additional_data); end
102
+
103
+ # Returns the value of attribute key.
104
+ #
105
+ # source://rbnacl//lib/rbnacl/aead/base.rb#20
106
+ def key; end
107
+
108
+ class << self
109
+ # The key bytes for the AEAD class
110
+ #
111
+ # @return [Integer] The number of bytes in a valid key
112
+ #
113
+ # source://rbnacl//lib/rbnacl/aead/base.rb#104
114
+ def key_bytes; end
115
+
116
+ # The nonce bytes for the AEAD class
117
+ #
118
+ # @return [Integer] The number of bytes in a valid nonce
119
+ #
120
+ # source://rbnacl//lib/rbnacl/aead/base.rb#90
121
+ def nonce_bytes; end
122
+
123
+ # The number bytes in the tag or authenticator from this AEAD class
124
+ #
125
+ # @return [Integer] number of tag bytes
126
+ #
127
+ # source://rbnacl//lib/rbnacl/aead/base.rb#118
128
+ def tag_bytes; end
129
+ end
130
+ end
131
+
132
+ # Number of bytes in a valid key
133
+ #
134
+ # source://rbnacl//lib/rbnacl/aead/base.rb#15
135
+ RbNaCl::AEAD::Base::KEYBYTES = T.let(T.unsafe(nil), Integer)
136
+
137
+ # Number of bytes in a valid nonce
138
+ #
139
+ # source://rbnacl//lib/rbnacl/aead/base.rb#18
140
+ RbNaCl::AEAD::Base::NPUBBYTES = T.let(T.unsafe(nil), Integer)
141
+
142
+ # This class contains wrappers for the IETF implementation of
143
+ # Authenticated Encryption with Additional Data using ChaCha20-Poly1305
144
+ #
145
+ # source://rbnacl//lib/rbnacl/aead/chacha20poly1305_ietf.rb#8
146
+ class RbNaCl::AEAD::ChaCha20Poly1305IETF < ::RbNaCl::AEAD::Base
147
+ extend ::RbNaCl::Sodium
148
+ extend ::FFI::Library
149
+
150
+ def crypto_aead_chacha20poly1305_ietf_abytes(*_arg0); end
151
+ def crypto_aead_chacha20poly1305_ietf_decrypt(*_arg0); end
152
+ def crypto_aead_chacha20poly1305_ietf_encrypt(*_arg0); end
153
+ def crypto_aead_chacha20poly1305_ietf_keybytes(*_arg0); end
154
+ def crypto_aead_chacha20poly1305_ietf_npubbytes(*_arg0); end
155
+
156
+ private
157
+
158
+ # source://rbnacl//lib/rbnacl/aead/chacha20poly1305_ietf.rb#35
159
+ def do_decrypt(message, message_len, nonce, ciphertext, additional_data); end
160
+
161
+ # source://rbnacl//lib/rbnacl/aead/chacha20poly1305_ietf.rb#28
162
+ def do_encrypt(ciphertext, ciphertext_len, nonce, message, additional_data); end
163
+
164
+ class << self
165
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
166
+ def aead_chacha20poly1305_ietf_decrypt(*args); end
167
+
168
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
169
+ def aead_chacha20poly1305_ietf_encrypt(*args); end
170
+
171
+ def crypto_aead_chacha20poly1305_ietf_abytes(*_arg0); end
172
+ def crypto_aead_chacha20poly1305_ietf_decrypt(*_arg0); end
173
+ def crypto_aead_chacha20poly1305_ietf_encrypt(*_arg0); end
174
+ def crypto_aead_chacha20poly1305_ietf_keybytes(*_arg0); end
175
+ def crypto_aead_chacha20poly1305_ietf_npubbytes(*_arg0); end
176
+ end
177
+ end
178
+
179
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
180
+ RbNaCl::AEAD::ChaCha20Poly1305IETF::ABYTES = T.let(T.unsafe(nil), Integer)
181
+
182
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
183
+ RbNaCl::AEAD::ChaCha20Poly1305IETF::KEYBYTES = T.let(T.unsafe(nil), Integer)
184
+
185
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
186
+ RbNaCl::AEAD::ChaCha20Poly1305IETF::NPUBBYTES = T.let(T.unsafe(nil), Integer)
187
+
188
+ # This class contains wrappers for the original libsodium implementation of
189
+ # Authenticated Encryption with Additional Data using ChaCha20-Poly1305
190
+ #
191
+ # source://rbnacl//lib/rbnacl/aead/chacha20poly1305_legacy.rb#8
192
+ class RbNaCl::AEAD::ChaCha20Poly1305Legacy < ::RbNaCl::AEAD::Base
193
+ extend ::RbNaCl::Sodium
194
+ extend ::FFI::Library
195
+
196
+ def crypto_aead_chacha20poly1305_abytes(*_arg0); end
197
+ def crypto_aead_chacha20poly1305_decrypt(*_arg0); end
198
+ def crypto_aead_chacha20poly1305_encrypt(*_arg0); end
199
+ def crypto_aead_chacha20poly1305_keybytes(*_arg0); end
200
+ def crypto_aead_chacha20poly1305_npubbytes(*_arg0); end
201
+
202
+ private
203
+
204
+ # source://rbnacl//lib/rbnacl/aead/chacha20poly1305_legacy.rb#34
205
+ def do_decrypt(message, message_len, nonce, ciphertext, additional_data); end
206
+
207
+ # source://rbnacl//lib/rbnacl/aead/chacha20poly1305_legacy.rb#27
208
+ def do_encrypt(ciphertext, ciphertext_len, nonce, message, additional_data); end
209
+
210
+ class << self
211
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
212
+ def aead_chacha20poly1305_decrypt(*args); end
213
+
214
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
215
+ def aead_chacha20poly1305_encrypt(*args); end
216
+
217
+ def crypto_aead_chacha20poly1305_abytes(*_arg0); end
218
+ def crypto_aead_chacha20poly1305_decrypt(*_arg0); end
219
+ def crypto_aead_chacha20poly1305_encrypt(*_arg0); end
220
+ def crypto_aead_chacha20poly1305_keybytes(*_arg0); end
221
+ def crypto_aead_chacha20poly1305_npubbytes(*_arg0); end
222
+ end
223
+ end
224
+
225
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
226
+ RbNaCl::AEAD::ChaCha20Poly1305Legacy::ABYTES = T.let(T.unsafe(nil), Integer)
227
+
228
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
229
+ RbNaCl::AEAD::ChaCha20Poly1305Legacy::KEYBYTES = T.let(T.unsafe(nil), Integer)
230
+
231
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
232
+ RbNaCl::AEAD::ChaCha20Poly1305Legacy::NPUBBYTES = T.let(T.unsafe(nil), Integer)
233
+
234
+ # This class contains wrappers for the IETF implementation of
235
+ # Authenticated Encryption with Additional Data using ChaCha20-Poly1305
236
+ #
237
+ # source://rbnacl//lib/rbnacl/aead/xchacha20poly1305_ietf.rb#8
238
+ class RbNaCl::AEAD::XChaCha20Poly1305IETF < ::RbNaCl::AEAD::Base
239
+ extend ::RbNaCl::Sodium
240
+ extend ::FFI::Library
241
+
242
+ def crypto_aead_xchacha20poly1305_ietf_abytes(*_arg0); end
243
+ def crypto_aead_xchacha20poly1305_ietf_decrypt(*_arg0); end
244
+ def crypto_aead_xchacha20poly1305_ietf_encrypt(*_arg0); end
245
+ def crypto_aead_xchacha20poly1305_ietf_keybytes(*_arg0); end
246
+ def crypto_aead_xchacha20poly1305_ietf_npubbytes(*_arg0); end
247
+
248
+ private
249
+
250
+ # source://rbnacl//lib/rbnacl/aead/xchacha20poly1305_ietf.rb#35
251
+ def do_decrypt(message, message_len, nonce, ciphertext, additional_data); end
252
+
253
+ # source://rbnacl//lib/rbnacl/aead/xchacha20poly1305_ietf.rb#28
254
+ def do_encrypt(ciphertext, ciphertext_len, nonce, message, additional_data); end
255
+
256
+ class << self
257
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
258
+ def aead_xchacha20poly1305_ietf_decrypt(*args); end
259
+
260
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
261
+ def aead_xchacha20poly1305_ietf_encrypt(*args); end
262
+
263
+ def crypto_aead_xchacha20poly1305_ietf_abytes(*_arg0); end
264
+ def crypto_aead_xchacha20poly1305_ietf_decrypt(*_arg0); end
265
+ def crypto_aead_xchacha20poly1305_ietf_encrypt(*_arg0); end
266
+ def crypto_aead_xchacha20poly1305_ietf_keybytes(*_arg0); end
267
+ def crypto_aead_xchacha20poly1305_ietf_npubbytes(*_arg0); end
268
+ end
269
+ end
270
+
271
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
272
+ RbNaCl::AEAD::XChaCha20Poly1305IETF::ABYTES = T.let(T.unsafe(nil), Integer)
273
+
274
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
275
+ RbNaCl::AEAD::XChaCha20Poly1305IETF::KEYBYTES = T.let(T.unsafe(nil), Integer)
276
+
277
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
278
+ RbNaCl::AEAD::XChaCha20Poly1305IETF::NPUBBYTES = T.let(T.unsafe(nil), Integer)
279
+
280
+ # Secret Key Authenticators
281
+ #
282
+ # These provide a means of verifying the integrity of a message, but only
283
+ # with the knowledge of a shared key. This can be a preshared key, or one
284
+ # that is derived through some cryptographic protocol.
285
+ #
286
+ # source://rbnacl//lib/rbnacl/auth.rb#10
287
+ class RbNaCl::Auth
288
+ # A new authenticator, ready for auth and verification
289
+ #
290
+ # @param key [#to_str] the key used for authenticators, 32 bytes.
291
+ # @return [Auth] a new instance of Auth
292
+ #
293
+ # source://rbnacl//lib/rbnacl/auth.rb#23
294
+ def initialize(key); end
295
+
296
+ # Compute authenticator for message
297
+ #
298
+ # @param message [#to_str] the message to authenticate
299
+ # @return [String] the authenticator as raw bytes
300
+ #
301
+ # source://rbnacl//lib/rbnacl/auth.rb#56
302
+ def auth(message); end
303
+
304
+ # The number of key bytes for this Auth instance
305
+ #
306
+ # @return [Integer] number of key bytes
307
+ #
308
+ # source://rbnacl//lib/rbnacl/auth.rb#95
309
+ def key_bytes; end
310
+
311
+ # The crypto primitive for this authenticator instance
312
+ #
313
+ # @return [Symbol] The primitive used
314
+ #
315
+ # source://rbnacl//lib/rbnacl/auth.rb#81
316
+ def primitive; end
317
+
318
+ # The number of bytes in the tag or authenticator for this Auth instance
319
+ #
320
+ # @return [Integer] number of tag bytes
321
+ #
322
+ # source://rbnacl//lib/rbnacl/auth.rb#109
323
+ def tag_bytes; end
324
+
325
+ # Verifies the given authenticator with the message.
326
+ #
327
+ # @param authenticator [#to_str] to be checked
328
+ # @param message [#to_str] the message to be authenticated
329
+ # @raise [BadAuthenticatorError] if the tag isn't valid
330
+ # @raise [LengthError] if the tag is of the wrong length
331
+ # @return [Boolean] Was it valid?
332
+ #
333
+ # source://rbnacl//lib/rbnacl/auth.rb#72
334
+ def verify(authenticator, message); end
335
+
336
+ private
337
+
338
+ # @raise [NotImplementedError]
339
+ #
340
+ # source://rbnacl//lib/rbnacl/auth.rb#115
341
+ def compute_authenticator(_authenticator, _message); end
342
+
343
+ # Returns the value of attribute key.
344
+ #
345
+ # source://rbnacl//lib/rbnacl/auth.rb#17
346
+ def key; end
347
+
348
+ # @raise [NotImplementedError]
349
+ #
350
+ # source://rbnacl//lib/rbnacl/auth.rb#119
351
+ def verify_message(_authenticator, _message); end
352
+
353
+ class << self
354
+ # Compute authenticator for message
355
+ #
356
+ # @param key [#to_str] the key used for the authenticator
357
+ # @param message [#to_str] message to construct an authenticator for
358
+ # @return [String] The authenticator, as raw bytes
359
+ #
360
+ # source://rbnacl//lib/rbnacl/auth.rb#33
361
+ def auth(key, message); end
362
+
363
+ # The number of key bytes for this Auth class
364
+ #
365
+ # @return [Integer] number of key bytes
366
+ #
367
+ # source://rbnacl//lib/rbnacl/auth.rb#88
368
+ def key_bytes; end
369
+
370
+ # The number bytes in the tag or authenticator from this Auth class
371
+ #
372
+ # @return [Integer] number of tag bytes
373
+ #
374
+ # source://rbnacl//lib/rbnacl/auth.rb#102
375
+ def tag_bytes; end
376
+
377
+ # Verifies the given authenticator with the message.
378
+ #
379
+ # @param key [#to_str] the key used for the authenticator
380
+ # @param authenticator [#to_str] to be checked
381
+ # @param message [#to_str] the message to be authenticated
382
+ # @raise [BadAuthenticatorError] if the tag isn't valid
383
+ # @raise [LengthError] if the tag is of the wrong length
384
+ # @return [Boolean] Was it valid?
385
+ #
386
+ # source://rbnacl//lib/rbnacl/auth.rb#47
387
+ def verify(key, authenticator, message); end
388
+ end
389
+ end
390
+
391
+ # Number of bytes in a valid authenticator
392
+ #
393
+ # source://rbnacl//lib/rbnacl/auth.rb#15
394
+ RbNaCl::Auth::BYTES = T.let(T.unsafe(nil), Integer)
395
+
396
+ # Number of bytes in a valid key
397
+ #
398
+ # source://rbnacl//lib/rbnacl/auth.rb#12
399
+ RbNaCl::Auth::KEYBYTES = T.let(T.unsafe(nil), Integer)
400
+
401
+ # The authenticator was forged or otherwise corrupt
402
+ #
403
+ # source://rbnacl//lib/rbnacl.rb#48
404
+ class RbNaCl::BadAuthenticatorError < ::RbNaCl::CryptoError; end
405
+
406
+ # The signature was forged or otherwise corrupt
407
+ #
408
+ # source://rbnacl//lib/rbnacl.rb#45
409
+ class RbNaCl::BadSignatureError < ::RbNaCl::CryptoError; end
410
+
411
+ # Bind aliases used by the public API
412
+ #
413
+ # source://rbnacl//lib/rbnacl.rb#96
414
+ RbNaCl::Box = RbNaCl::Boxes::Curve25519XSalsa20Poly1305
415
+
416
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305.rb#5
417
+ module RbNaCl::Boxes; end
418
+
419
+ # The Box class boxes and unboxes messages between a pair of keys
420
+ #
421
+ # This class uses the given public and secret keys to derive a shared key,
422
+ # which is used with the nonce given to encrypt the given messages and
423
+ # decrypt the given ciphertexts. The same shared key will generated from
424
+ # both pairing of keys, so given two keypairs belonging to alice (pkalice,
425
+ # skalice) and bob(pkbob, skbob), the key derived from (pkalice, skbob) with
426
+ # equal that from (pkbob, skalice). This is how the system works:
427
+ #
428
+ # It is VITALLY important that the nonce is a nonce, i.e. it is a number used
429
+ # only once for any given pair of keys. If you fail to do this, you
430
+ # compromise the privacy of the the messages encrypted. Also, bear in mind
431
+ # the property mentioned just above. Give your nonces a different prefix, or
432
+ # have one side use an odd counter and one an even counter. Just make sure
433
+ # they are different.
434
+ #
435
+ # The ciphertexts generated by this class include a 16-byte authenticator which
436
+ # is checked as part of the decryption. An invalid authenticator will cause
437
+ # the unbox function to raise. The authenticator is not a signature. Once
438
+ # you've looked in the box, you've demonstrated the ability to create
439
+ # arbitrary valid messages, so messages you send are repudiable. For
440
+ # non-repudiable messages, sign them before or after encryption.
441
+ #
442
+ # @example
443
+ # # On bob's system
444
+ # bobkey = RbNaCl::PrivateKey.generate
445
+ # #=> #<RbNaCl::PrivateKey ...>
446
+ #
447
+ # # send bobkey.public_key to alice
448
+ # # receive alice's public key, alicepk
449
+ # # NB: This is actually the hard part of the system. How to do it securely
450
+ # # is left as an exercise to for the reader.
451
+ # alice_pubkey = "..."
452
+ #
453
+ # # make a box
454
+ # alicebob_box = RbNaCl::Box.new(alice_pubkey, bobkey)
455
+ # #=> #<RbNaCl::Box ...>
456
+ #
457
+ # # encrypt a message to alice
458
+ # cipher_text = alicebob_box.box("A bad example of a nonce", "Hello, Alice!")
459
+ # #=> "..." # a string of bytes, 29 bytes long
460
+ #
461
+ # # send ["A bad example of a nonce", cipher_text] to alice
462
+ # # note that nonces don't have to be secret
463
+ # # receive [nonce, cipher_text_to_bob] from alice
464
+ #
465
+ # # decrypt the reply
466
+ # # Alice has been a little more sensible than bob, and has a random nonce
467
+ # # that is too fiddly to type here. But there are other choices than just
468
+ # # random
469
+ # plain_text = alicebob_box.open(nonce, cipher_text_to_bob)
470
+ # #=> "Hey there, Bob!"
471
+ #
472
+ # # we have a new message!
473
+ # # But Eve has tampered with this message, by flipping some bytes around!
474
+ # # [nonce2, cipher_text_to_bob_honest_love_eve]
475
+ # alicebob_box.open(nonce2, cipher_text_to_bob_honest_love_eve)
476
+ #
477
+ # # BOOM!
478
+ # # Bob gets a RbNaCl::CryptoError to deal with!
479
+ #
480
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305.rb#66
481
+ class RbNaCl::Boxes::Curve25519XSalsa20Poly1305
482
+ extend ::RbNaCl::Sodium
483
+ extend ::FFI::Library
484
+
485
+ # Create a new Box
486
+ #
487
+ # Sets up the Box for deriving the shared key and encrypting and
488
+ # decrypting messages.
489
+ #
490
+ # @param public_key [String, RbNaCl::PublicKey] The public key to encrypt to
491
+ # @param private_key [String, RbNaCl::PrivateKey] The private key to encrypt with
492
+ # @raise [RbNaCl::LengthError] on invalid keys
493
+ # @return [RbNaCl::Box] The new Box, ready to use
494
+ #
495
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305.rb#101
496
+ def initialize(public_key, private_key); end
497
+
498
+ # Encrypts a message
499
+ #
500
+ # Encrypts the message with the given nonce to the keypair set up when
501
+ # initializing the class. Make sure the nonce is unique for any given
502
+ # keypair, or you might as well just send plain text.
503
+ #
504
+ # This function takes care of the padding required by the NaCL C API.
505
+ #
506
+ # @param nonce [String] A 24-byte string containing the nonce.
507
+ # @param message [String] The message to be encrypted.
508
+ # @raise [RbNaCl::LengthError] If the nonce is not valid
509
+ # @return [String] The ciphertext without the nonce prepended (BINARY encoded)
510
+ #
511
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305.rb#121
512
+ def box(nonce, message); end
513
+
514
+ def crypto_box_curve25519xsalsa20poly1305_afternm(*_arg0); end
515
+ def crypto_box_curve25519xsalsa20poly1305_beforenm(*_arg0); end
516
+ def crypto_box_curve25519xsalsa20poly1305_beforenmbytes(*_arg0); end
517
+ def crypto_box_curve25519xsalsa20poly1305_boxzerobytes(*_arg0); end
518
+ def crypto_box_curve25519xsalsa20poly1305_noncebytes(*_arg0); end
519
+ def crypto_box_curve25519xsalsa20poly1305_open_afternm(*_arg0); end
520
+ def crypto_box_curve25519xsalsa20poly1305_publickeybytes(*_arg0); end
521
+ def crypto_box_curve25519xsalsa20poly1305_secretkeybytes(*_arg0); end
522
+ def crypto_box_curve25519xsalsa20poly1305_zerobytes(*_arg0); end
523
+
524
+ # Decrypts a ciphertext
525
+ #
526
+ # Decrypts the ciphertext with the given nonce using the keypair setup when
527
+ # initializing the class.
528
+ #
529
+ # This function takes care of the padding required by the NaCL C API.
530
+ #
531
+ # @param nonce [String] A 24-byte string containing the nonce.
532
+ # @param ciphertext [String] The message to be decrypted.
533
+ # @raise [RbNaCl::LengthError] If the nonce is not valid
534
+ # @raise [RbNaCl::CryptoError] If the ciphertext cannot be authenticated.
535
+ # @return [String] The decrypted message (BINARY encoded)
536
+ #
537
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305.rb#147
538
+ def decrypt(nonce, ciphertext); end
539
+
540
+ # Encrypts a message
541
+ #
542
+ # Encrypts the message with the given nonce to the keypair set up when
543
+ # initializing the class. Make sure the nonce is unique for any given
544
+ # keypair, or you might as well just send plain text.
545
+ #
546
+ # This function takes care of the padding required by the NaCL C API.
547
+ #
548
+ # @param nonce [String] A 24-byte string containing the nonce.
549
+ # @param message [String] The message to be encrypted.
550
+ # @raise [RbNaCl::LengthError] If the nonce is not valid
551
+ # @return [String] The ciphertext without the nonce prepended (BINARY encoded)
552
+ #
553
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305.rb#121
554
+ def encrypt(nonce, message); end
555
+
556
+ # The nonce bytes for the box instance
557
+ #
558
+ # @return [Integer] The number of bytes in a valid nonce
559
+ #
560
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305.rb#176
561
+ def nonce_bytes; end
562
+
563
+ # Decrypts a ciphertext
564
+ #
565
+ # Decrypts the ciphertext with the given nonce using the keypair setup when
566
+ # initializing the class.
567
+ #
568
+ # This function takes care of the padding required by the NaCL C API.
569
+ #
570
+ # @param nonce [String] A 24-byte string containing the nonce.
571
+ # @param ciphertext [String] The message to be decrypted.
572
+ # @raise [RbNaCl::LengthError] If the nonce is not valid
573
+ # @raise [RbNaCl::CryptoError] If the ciphertext cannot be authenticated.
574
+ # @return [String] The decrypted message (BINARY encoded)
575
+ #
576
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305.rb#147
577
+ def open(nonce, ciphertext); end
578
+
579
+ # The crypto primitive for the box class
580
+ #
581
+ # @return [Symbol] The primitive used
582
+ #
583
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305.rb#162
584
+ def primitive; end
585
+
586
+ private
587
+
588
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305.rb#182
589
+ def beforenm; end
590
+
591
+ class << self
592
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
593
+ def box_curve25519xsalsa20poly1305_afternm(*args); end
594
+
595
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
596
+ def box_curve25519xsalsa20poly1305_beforenm(*args); end
597
+
598
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
599
+ def box_curve25519xsalsa20poly1305_open_afternm(*args); end
600
+
601
+ def crypto_box_curve25519xsalsa20poly1305_afternm(*_arg0); end
602
+ def crypto_box_curve25519xsalsa20poly1305_beforenm(*_arg0); end
603
+ def crypto_box_curve25519xsalsa20poly1305_beforenmbytes(*_arg0); end
604
+ def crypto_box_curve25519xsalsa20poly1305_boxzerobytes(*_arg0); end
605
+ def crypto_box_curve25519xsalsa20poly1305_noncebytes(*_arg0); end
606
+ def crypto_box_curve25519xsalsa20poly1305_open_afternm(*_arg0); end
607
+ def crypto_box_curve25519xsalsa20poly1305_publickeybytes(*_arg0); end
608
+ def crypto_box_curve25519xsalsa20poly1305_secretkeybytes(*_arg0); end
609
+ def crypto_box_curve25519xsalsa20poly1305_zerobytes(*_arg0); end
610
+
611
+ # The nonce bytes for the box class
612
+ #
613
+ # @return [Integer] The number of bytes in a valid nonce
614
+ #
615
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305.rb#169
616
+ def nonce_bytes; end
617
+ end
618
+ end
619
+
620
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
621
+ RbNaCl::Boxes::Curve25519XSalsa20Poly1305::BEFORENMBYTES = T.let(T.unsafe(nil), Integer)
622
+
623
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
624
+ RbNaCl::Boxes::Curve25519XSalsa20Poly1305::BOXZEROBYTES = T.let(T.unsafe(nil), Integer)
625
+
626
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
627
+ RbNaCl::Boxes::Curve25519XSalsa20Poly1305::NONCEBYTES = T.let(T.unsafe(nil), Integer)
628
+
629
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
630
+ RbNaCl::Boxes::Curve25519XSalsa20Poly1305::PRIVATEKEYBYTES = T.let(T.unsafe(nil), Integer)
631
+
632
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
633
+ RbNaCl::Boxes::Curve25519XSalsa20Poly1305::PUBLICKEYBYTES = T.let(T.unsafe(nil), Integer)
634
+
635
+ # RbNaCl::Box private key. Keep it safe
636
+ #
637
+ # This class generates and stores NaCL private keys, as well as providing a
638
+ # reference to the public key associated with this private key, if that's
639
+ # provided.
640
+ #
641
+ # Note that the documentation for NaCl refers to this as a secret key, but in
642
+ # this library its a private key, to avoid confusing the issue with the
643
+ # SecretBox, which does symmetric encryption.
644
+ #
645
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305/private_key.rb#16
646
+ class RbNaCl::Boxes::Curve25519XSalsa20Poly1305::PrivateKey
647
+ include ::Comparable
648
+ include ::RbNaCl::KeyComparator
649
+ include ::RbNaCl::Serializable
650
+ extend ::RbNaCl::Sodium
651
+ extend ::FFI::Library
652
+
653
+ # Initializes a new PrivateKey for key operations.
654
+ #
655
+ # Takes the (optionally encoded) private key bytes. This class can then be
656
+ # used for various key operations, including deriving the corresponding
657
+ # PublicKey
658
+ #
659
+ # @param private_key [String] The private key
660
+ # @raise [TypeError] If the key is nil
661
+ # @raise [RbNaCl::LengthError] If the key is not valid after decoding.
662
+ # @return A new PrivateKey
663
+ #
664
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305/private_key.rb#44
665
+ def initialize(private_key); end
666
+
667
+ def crypto_box_curve25519xsalsa20poly1305_keypair(*_arg0); end
668
+
669
+ # The crypto primitive this PrivateKey is to be used for.
670
+ #
671
+ # @return [Symbol] The primitive
672
+ #
673
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305/private_key.rb#77
674
+ def primitive; end
675
+
676
+ # the public key associated with this private key
677
+ #
678
+ # @return [PublicKey] the key
679
+ #
680
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305/private_key.rb#70
681
+ def public_key; end
682
+
683
+ # The raw bytes of the key
684
+ #
685
+ # @return [String] the raw bytes.
686
+ #
687
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305/private_key.rb#63
688
+ def to_bytes; end
689
+
690
+ class << self
691
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
692
+ def box_curve25519xsalsa20poly1305_keypair(*args); end
693
+
694
+ def crypto_box_curve25519xsalsa20poly1305_keypair(*_arg0); end
695
+
696
+ # Generates a new keypair
697
+ #
698
+ # @raise [RbNaCl::CryptoError] if key generation fails, due to insufficient randomness.
699
+ # @return [RbNaCl::PrivateKey] A new private key, with the associated public key also set.
700
+ #
701
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305/private_key.rb#53
702
+ def generate; end
703
+ end
704
+ end
705
+
706
+ # The size of the key, in bytes
707
+ #
708
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305/private_key.rb#30
709
+ RbNaCl::Boxes::Curve25519XSalsa20Poly1305::PrivateKey::BYTES = T.let(T.unsafe(nil), Integer)
710
+
711
+ # RbNaCl::Box public key. Send it (securely!) to your friends.
712
+ #
713
+ # This class stores the NaCL public key, and provides some convenience
714
+ # functions for working with it.
715
+ #
716
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305/public_key.rb#11
717
+ class RbNaCl::Boxes::Curve25519XSalsa20Poly1305::PublicKey
718
+ include ::Comparable
719
+ include ::RbNaCl::KeyComparator
720
+ include ::RbNaCl::Serializable
721
+
722
+ # Initializes a new PublicKey for key operations.
723
+ #
724
+ # Takes the (optionally encoded) public key bytes. This can be shared with
725
+ # many people and used to establish key pairs with their private key, for
726
+ # the exchanging of messages using a RbNaCl::Box
727
+ #
728
+ # @param public_key [String] The public key
729
+ # @raise [RbNaCl::LengthError] If the key is not valid after decoding.
730
+ # @return A new PublicKey
731
+ #
732
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305/public_key.rb#29
733
+ def initialize(public_key); end
734
+
735
+ # The crypto primitive this PublicKey is to be used for.
736
+ #
737
+ # @return [Symbol] The primitive
738
+ #
739
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305/public_key.rb#50
740
+ def primitive; end
741
+
742
+ # The raw bytes of the key
743
+ #
744
+ # @return [String] the raw bytes.
745
+ #
746
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305/public_key.rb#36
747
+ def to_bytes; end
748
+
749
+ class << self
750
+ # The crypto primitive the PublicKey class is to be used for
751
+ #
752
+ # @return [Symbol] The primitive
753
+ #
754
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305/public_key.rb#43
755
+ def primitive; end
756
+ end
757
+ end
758
+
759
+ # The size of the key, in bytes
760
+ #
761
+ # source://rbnacl//lib/rbnacl/boxes/curve25519xsalsa20poly1305/public_key.rb#16
762
+ RbNaCl::Boxes::Curve25519XSalsa20Poly1305::PublicKey::BYTES = T.let(T.unsafe(nil), Integer)
763
+
764
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
765
+ RbNaCl::Boxes::Curve25519XSalsa20Poly1305::ZEROBYTES = T.let(T.unsafe(nil), Integer)
766
+
767
+ # Sealed boxes are designed to anonymously send messages to a recipient
768
+ # given its public key.
769
+ #
770
+ # Only the recipient can decrypt these messages, using its private key.
771
+ # While the recipient can verify the integrity of the message, it cannot
772
+ # verify the identity of the sender.
773
+ #
774
+ # A message is encrypted using an ephemeral key pair, whose secret part
775
+ # is destroyed right after the encryption process.
776
+ #
777
+ # Without knowing the secret key used for a given message, the sender
778
+ # cannot decrypt its own message later. And without additional data,
779
+ # a message cannot be correlated with the identity of its sender.
780
+ #
781
+ # source://rbnacl//lib/rbnacl/boxes/sealed.rb#19
782
+ class RbNaCl::Boxes::Sealed
783
+ extend ::RbNaCl::Sodium
784
+ extend ::FFI::Library
785
+
786
+ # WARNING: you should strongly prefer the from_private_key/from_public_key class methods.
787
+ #
788
+ # Create a new Sealed Box
789
+ #
790
+ # Sets up the Box for deriving the shared key and encrypting and
791
+ # decrypting messages.
792
+ #
793
+ # @param public_key [String, RbNaCl::PublicKey] The public key to encrypt to
794
+ # @param private_key [String, RbNaCl::PrivateKey] The private key to decrypt with
795
+ # @raise [RbNaCl::LengthError] on invalid keys
796
+ # @return [RbNaCl::SealedBox] The new Box, ready to use
797
+ #
798
+ # source://rbnacl//lib/rbnacl/boxes/sealed.rb#47
799
+ def initialize(public_key, private_key = T.unsafe(nil)); end
800
+
801
+ # Encrypts a message
802
+ #
803
+ # @param message [String] The message to be encrypted.
804
+ # @raise [RbNaCl::CryptoError] If the encrytion fails.
805
+ # @return [String] The ciphertext (BINARY encoded)
806
+ #
807
+ # source://rbnacl//lib/rbnacl/boxes/sealed.rb#92
808
+ def box(message); end
809
+
810
+ def crypto_box_seal(*_arg0); end
811
+ def crypto_box_seal_open(*_arg0); end
812
+ def crypto_box_sealbytes(*_arg0); end
813
+
814
+ # Decrypts a ciphertext
815
+ #
816
+ # @param ciphertext [String] The message to be decrypted.
817
+ # @raise [RbNaCl::CryptoError] If no private key is available.
818
+ # @raise [RbNaCl::CryptoError] If the ciphertext cannot be authenticated.
819
+ # @return [String] The decrypted message (BINARY encoded)
820
+ #
821
+ # source://rbnacl//lib/rbnacl/boxes/sealed.rb#113
822
+ def decrypt(ciphertext); end
823
+
824
+ # Encrypts a message
825
+ #
826
+ # @param message [String] The message to be encrypted.
827
+ # @raise [RbNaCl::CryptoError] If the encrytion fails.
828
+ # @return [String] The ciphertext (BINARY encoded)
829
+ #
830
+ # source://rbnacl//lib/rbnacl/boxes/sealed.rb#92
831
+ def encrypt(message); end
832
+
833
+ # Decrypts a ciphertext
834
+ #
835
+ # @param ciphertext [String] The message to be decrypted.
836
+ # @raise [RbNaCl::CryptoError] If no private key is available.
837
+ # @raise [RbNaCl::CryptoError] If the ciphertext cannot be authenticated.
838
+ # @return [String] The decrypted message (BINARY encoded)
839
+ #
840
+ # source://rbnacl//lib/rbnacl/boxes/sealed.rb#113
841
+ def open(ciphertext); end
842
+
843
+ # The crypto primitive for the box class
844
+ #
845
+ # @return [Symbol] The primitive used
846
+ #
847
+ # source://rbnacl//lib/rbnacl/boxes/sealed.rb#131
848
+ def primitive; end
849
+
850
+ class << self
851
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
852
+ def box_seal(*args); end
853
+
854
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
855
+ def box_seal_open(*args); end
856
+
857
+ def crypto_box_seal(*_arg0); end
858
+ def crypto_box_seal_open(*_arg0); end
859
+ def crypto_box_sealbytes(*_arg0); end
860
+
861
+ # Create a new Sealed Box for encrypting
862
+ #
863
+ # Sets up the Box for encryoption of new messages.
864
+ #
865
+ # @param private_key [String, RbNaCl::PrivateKey] The private key to decrypt with
866
+ # @raise [RbNaCl::LengthError] on invalid keys
867
+ # @return [RbNaCl::SealedBox] The new Box, ready to use
868
+ #
869
+ # source://rbnacl//lib/rbnacl/boxes/sealed.rb#68
870
+ def from_private_key(private_key); end
871
+
872
+ # Create a new Sealed Box for decrypting
873
+ #
874
+ # Sets up the Box for decrytoption of new messages.
875
+ #
876
+ # @param public_key [String, RbNaCl::PublicKey] The public key to encrypt to
877
+ # @raise [RbNaCl::LengthError] on invalid keys
878
+ # @return [RbNaCl::SealedBox] The new Box, ready to use
879
+ #
880
+ # source://rbnacl//lib/rbnacl/boxes/sealed.rb#81
881
+ def from_public_key(public_key); end
882
+ end
883
+ end
884
+
885
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
886
+ RbNaCl::Boxes::Sealed::SEALBYTES = T.let(T.unsafe(nil), Integer)
887
+
888
+ # Oh no, something went wrong!
889
+ #
890
+ # This indicates a failure in the operation of a cryptographic primitive such
891
+ # as authentication failing on an attempt to decrypt a ciphertext. Classes
892
+ # in the library may define more specific subclasses.
893
+ #
894
+ # source://rbnacl//lib/rbnacl.rb#30
895
+ class RbNaCl::CryptoError < ::StandardError; end
896
+
897
+ # source://rbnacl//lib/rbnacl.rb#103
898
+ RbNaCl::GroupElement = RbNaCl::GroupElements::Curve25519
899
+
900
+ # source://rbnacl//lib/rbnacl/group_elements/curve25519.rb#5
901
+ module RbNaCl::GroupElements; end
902
+
903
+ # Points provide the interface to NaCl's Curve25519 high-speed elliptic
904
+ # curve cryptography, which can be used for implementing Diffie-Hellman
905
+ # and other forms of public key cryptography (e.g. RbNaCl::Box)
906
+ #
907
+ # Objects of the Point class represent points on Edwards curves. NaCl
908
+ # defines a base point (the "standard group element") which we can
909
+ # multiply by an arbitrary integer. This is how NaCl computes public
910
+ # keys from private keys.
911
+ #
912
+ # source://rbnacl//lib/rbnacl/group_elements/curve25519.rb#14
913
+ class RbNaCl::GroupElements::Curve25519
914
+ include ::Comparable
915
+ include ::RbNaCl::KeyComparator
916
+ include ::RbNaCl::Serializable
917
+ extend ::RbNaCl::Sodium
918
+ extend ::FFI::Library
919
+
920
+ # Creates a new Point from the given serialization
921
+ #
922
+ # @param point [String] location of a group element (32-bytes)
923
+ # @raise [CryptoError]
924
+ # @return [RbNaCl::Point] the Point at this location
925
+ #
926
+ # source://rbnacl//lib/rbnacl/group_elements/curve25519.rb#47
927
+ def initialize(point); end
928
+
929
+ def crypto_scalarmult_curve25519(*_arg0); end
930
+
931
+ # Multiply the given integer by this point
932
+ # This ordering is a bit confusing because traditionally the point
933
+ # would be the right-hand operand.
934
+ #
935
+ # @param integer [String] value to multiply with this Point (32-bytes)
936
+ # @raise [CryptoError]
937
+ # @return [RbNaCl::Point] result as a Point object
938
+ #
939
+ # source://rbnacl//lib/rbnacl/group_elements/curve25519.rb#64
940
+ def mult(integer); end
941
+
942
+ # Return the point serialized as bytes
943
+ #
944
+ # @return [String] 32-byte string representing this point
945
+ #
946
+ # source://rbnacl//lib/rbnacl/group_elements/curve25519.rb#78
947
+ def to_bytes; end
948
+
949
+ class << self
950
+ # NaCl's standard base point for all Curve25519 public keys
951
+ #
952
+ # @return [RbNaCl::Point] standard base point (a.k.a. standard group element)
953
+ #
954
+ # source://rbnacl//lib/rbnacl/group_elements/curve25519.rb#87
955
+ def base; end
956
+
957
+ # Returns the value of attribute base_point.
958
+ #
959
+ # source://rbnacl//lib/rbnacl/group_elements/curve25519.rb#92
960
+ def base_point; end
961
+
962
+ def crypto_scalarmult_curve25519(*_arg0); end
963
+
964
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
965
+ def scalarmult_curve25519(*args); end
966
+ end
967
+ end
968
+
969
+ # source://rbnacl//lib/rbnacl/group_elements/curve25519.rb#38
970
+ RbNaCl::GroupElements::Curve25519::BYTES = T.let(T.unsafe(nil), Integer)
971
+
972
+ # Degenerate key (all-zeroes, results in an all-zero shared secret)
973
+ #
974
+ # source://rbnacl//lib/rbnacl/group_elements/curve25519.rb#22
975
+ RbNaCl::GroupElements::Curve25519::DEGENERATE_KEY = T.let(T.unsafe(nil), String)
976
+
977
+ # Number of bytes in a scalar on this curve
978
+ #
979
+ # source://rbnacl//lib/rbnacl/group_elements/curve25519.rb#37
980
+ RbNaCl::GroupElements::Curve25519::SCALARBYTES = T.let(T.unsafe(nil), Integer)
981
+
982
+ # NaCl's Curve25519 base point (a.k.a. standard group element), serialized as hex
983
+ #
984
+ # source://rbnacl//lib/rbnacl/group_elements/curve25519.rb#16
985
+ RbNaCl::GroupElements::Curve25519::STANDARD_GROUP_ELEMENT = T.let(T.unsafe(nil), String)
986
+
987
+ # Order of the standard group
988
+ #
989
+ # source://rbnacl//lib/rbnacl/group_elements/curve25519.rb#19
990
+ RbNaCl::GroupElements::Curve25519::STANDARD_GROUP_ORDER = T.let(T.unsafe(nil), Integer)
991
+
992
+ # source://rbnacl//lib/rbnacl/hmac/sha256.rb#5
993
+ module RbNaCl::HMAC; end
994
+
995
+ # Computes an authenticator as HMAC-SHA-256
996
+ #
997
+ # The authenticator can be used at a later time to verify the provenance of
998
+ # the message by recomputing the HMAC over the message and then comparing it to
999
+ # the provided authenticator. The class provides methods for generating
1000
+ # signatures and also has a constant-time implementation for checking them.
1001
+ #
1002
+ # This is a secret key authenticator, i.e. anyone who can verify signatures
1003
+ # can also create them.
1004
+ #
1005
+ # @see http://nacl.cr.yp.to/auth.html
1006
+ #
1007
+ # source://rbnacl//lib/rbnacl/hmac/sha256.rb#17
1008
+ class RbNaCl::HMAC::SHA256 < ::RbNaCl::Auth
1009
+ extend ::RbNaCl::Sodium
1010
+ extend ::FFI::Library
1011
+
1012
+ # Create instance without checking key length
1013
+ #
1014
+ # RFC 2104 HMAC
1015
+ # The key for HMAC can be of any length.
1016
+ #
1017
+ # see https://tools.ietf.org/html/rfc2104#section-3
1018
+ #
1019
+ # @return [SHA256] a new instance of SHA256
1020
+ #
1021
+ # source://rbnacl//lib/rbnacl/hmac/sha256.rb#43
1022
+ def initialize(key); end
1023
+
1024
+ def crypto_auth_hmacsha256_bytes(*_arg0); end
1025
+ def crypto_auth_hmacsha256_final(*_arg0); end
1026
+ def crypto_auth_hmacsha256_init(*_arg0); end
1027
+ def crypto_auth_hmacsha256_keybytes(*_arg0); end
1028
+ def crypto_auth_hmacsha256_update(*_arg0); end
1029
+
1030
+ # Return the authenticator, as raw bytes
1031
+ #
1032
+ # @return [String] The authenticator, as raw bytes
1033
+ #
1034
+ # source://rbnacl//lib/rbnacl/hmac/sha256.rb#64
1035
+ def digest; end
1036
+
1037
+ # Return the authenticator, as hex string
1038
+ #
1039
+ # @return [String] The authenticator, as hex string
1040
+ #
1041
+ # source://rbnacl//lib/rbnacl/hmac/sha256.rb#71
1042
+ def hexdigest; end
1043
+
1044
+ # Compute authenticator for message
1045
+ #
1046
+ # source://rbnacl//lib/rbnacl/hmac/sha256.rb#54
1047
+ def update(message); end
1048
+
1049
+ private
1050
+
1051
+ # source://rbnacl//lib/rbnacl/hmac/sha256.rb#77
1052
+ def compute_authenticator(authenticator, message); end
1053
+
1054
+ # libsodium crypto_auth_hmacsha256_verify works only for 32 byte keys
1055
+ # ref: https://github.com/jedisct1/libsodium/blob/master/src/libsodium/crypto_auth/hmacsha256/auth_hmacsha256.c#L109
1056
+ #
1057
+ # source://rbnacl//lib/rbnacl/hmac/sha256.rb#87
1058
+ def verify_message(authenticator, message); end
1059
+
1060
+ class << self
1061
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
1062
+ def auth_hmacsha256_final(*args); end
1063
+
1064
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
1065
+ def auth_hmacsha256_init(*args); end
1066
+
1067
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
1068
+ def auth_hmacsha256_update(*args); end
1069
+
1070
+ def crypto_auth_hmacsha256_bytes(*_arg0); end
1071
+ def crypto_auth_hmacsha256_final(*_arg0); end
1072
+ def crypto_auth_hmacsha256_init(*_arg0); end
1073
+ def crypto_auth_hmacsha256_keybytes(*_arg0); end
1074
+ def crypto_auth_hmacsha256_update(*_arg0); end
1075
+ end
1076
+ end
1077
+
1078
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1079
+ RbNaCl::HMAC::SHA256::BYTES = T.let(T.unsafe(nil), Integer)
1080
+
1081
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1082
+ RbNaCl::HMAC::SHA256::KEYBYTES = T.let(T.unsafe(nil), Integer)
1083
+
1084
+ # The crypto_auth_hmacsha256_state struct representation
1085
+ # ref: jedisct1/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha256.h
1086
+ #
1087
+ # source://rbnacl//lib/rbnacl/hmac/sha256.rb#95
1088
+ class RbNaCl::HMAC::SHA256::SHA256State < ::FFI::Struct; end
1089
+
1090
+ # The crypto_hash_sha256_state struct representation
1091
+ # ref: jedisct1/libsodium/src/libsodium/include/sodium/crypto_hash_sha256.h
1092
+ #
1093
+ # source://rbnacl//lib/rbnacl/hmac/sha256.rb#103
1094
+ class RbNaCl::HMAC::SHA256::State < ::FFI::Struct; end
1095
+
1096
+ # Computes an authenticator as HMAC-SHA-512
1097
+ #
1098
+ # The authenticator can be used at a later time to verify the provenance of
1099
+ # the message by recomputing the HMAC over the message and then comparing it to
1100
+ # the provided authenticator. The class provides methods for generating
1101
+ # signatures and also has a constant-time implementation for checking them.
1102
+ #
1103
+ # This is a secret key authenticator, i.e. anyone who can verify signatures
1104
+ # can also create them.
1105
+ #
1106
+ # @see http://nacl.cr.yp.to/auth.html
1107
+ #
1108
+ # source://rbnacl//lib/rbnacl/hmac/sha512.rb#17
1109
+ class RbNaCl::HMAC::SHA512 < ::RbNaCl::Auth
1110
+ extend ::RbNaCl::Sodium
1111
+ extend ::FFI::Library
1112
+
1113
+ # Create instance without checking key length
1114
+ #
1115
+ # RFC 2104 HMAC
1116
+ # The key for HMAC can be of any length.
1117
+ #
1118
+ # see https://tools.ietf.org/html/rfc2104#section-3
1119
+ #
1120
+ # @return [SHA512] a new instance of SHA512
1121
+ #
1122
+ # source://rbnacl//lib/rbnacl/hmac/sha512.rb#43
1123
+ def initialize(key); end
1124
+
1125
+ def crypto_auth_hmacsha512_bytes(*_arg0); end
1126
+ def crypto_auth_hmacsha512_final(*_arg0); end
1127
+ def crypto_auth_hmacsha512_init(*_arg0); end
1128
+ def crypto_auth_hmacsha512_keybytes(*_arg0); end
1129
+ def crypto_auth_hmacsha512_update(*_arg0); end
1130
+
1131
+ # Return the authenticator, as raw bytes
1132
+ #
1133
+ # @return [String] The authenticator, as raw bytes
1134
+ #
1135
+ # source://rbnacl//lib/rbnacl/hmac/sha512.rb#64
1136
+ def digest; end
1137
+
1138
+ # Return the authenticator, as hex string
1139
+ #
1140
+ # @return [String] The authenticator, as hex string
1141
+ #
1142
+ # source://rbnacl//lib/rbnacl/hmac/sha512.rb#71
1143
+ def hexdigest; end
1144
+
1145
+ # Compute authenticator for message
1146
+ #
1147
+ # source://rbnacl//lib/rbnacl/hmac/sha512.rb#54
1148
+ def update(message); end
1149
+
1150
+ private
1151
+
1152
+ # source://rbnacl//lib/rbnacl/hmac/sha512.rb#77
1153
+ def compute_authenticator(authenticator, message); end
1154
+
1155
+ # libsodium crypto_auth_hmacsha512_verify works only for 32 byte keys
1156
+ # ref: https://github.com/jedisct1/libsodium/blob/master/src/libsodium/crypto_auth/hmacsha512/auth_hmacsha512.c#L109
1157
+ #
1158
+ # source://rbnacl//lib/rbnacl/hmac/sha512.rb#87
1159
+ def verify_message(authenticator, message); end
1160
+
1161
+ class << self
1162
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
1163
+ def auth_hmacsha512_final(*args); end
1164
+
1165
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
1166
+ def auth_hmacsha512_init(*args); end
1167
+
1168
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
1169
+ def auth_hmacsha512_update(*args); end
1170
+
1171
+ def crypto_auth_hmacsha512_bytes(*_arg0); end
1172
+ def crypto_auth_hmacsha512_final(*_arg0); end
1173
+ def crypto_auth_hmacsha512_init(*_arg0); end
1174
+ def crypto_auth_hmacsha512_keybytes(*_arg0); end
1175
+ def crypto_auth_hmacsha512_update(*_arg0); end
1176
+ end
1177
+ end
1178
+
1179
+ # Computes an authenticator as HMAC-SHA-512 truncated to 256-bits
1180
+ #
1181
+ # The authenticator can be used at a later time to verify the provenance of
1182
+ # the message by recomputing the HMAC over the message and then comparing it to
1183
+ # the provided authenticator. The class provides methods for generating
1184
+ # signatures and also has a constant-time implementation for checking them.
1185
+ #
1186
+ # This is a secret key authenticator, i.e. anyone who can verify signatures
1187
+ # can also create them.
1188
+ #
1189
+ # @see http://nacl.cr.yp.to/auth.html
1190
+ #
1191
+ # source://rbnacl//lib/rbnacl/hmac/sha512256.rb#17
1192
+ class RbNaCl::HMAC::SHA512256 < ::RbNaCl::Auth
1193
+ extend ::RbNaCl::Sodium
1194
+ extend ::FFI::Library
1195
+
1196
+ # Create instance without checking key length
1197
+ #
1198
+ # RFC 2104 HMAC
1199
+ # The key for HMAC can be of any length.
1200
+ #
1201
+ # see https://tools.ietf.org/html/rfc2104#section-3
1202
+ #
1203
+ # @return [SHA512256] a new instance of SHA512256
1204
+ #
1205
+ # source://rbnacl//lib/rbnacl/hmac/sha512256.rb#43
1206
+ def initialize(key); end
1207
+
1208
+ def crypto_auth_hmacsha512256_bytes(*_arg0); end
1209
+ def crypto_auth_hmacsha512256_final(*_arg0); end
1210
+ def crypto_auth_hmacsha512256_init(*_arg0); end
1211
+ def crypto_auth_hmacsha512256_keybytes(*_arg0); end
1212
+ def crypto_auth_hmacsha512256_update(*_arg0); end
1213
+
1214
+ # Return the authenticator, as raw bytes
1215
+ #
1216
+ # @return [String] The authenticator, as raw bytes
1217
+ #
1218
+ # source://rbnacl//lib/rbnacl/hmac/sha512256.rb#64
1219
+ def digest; end
1220
+
1221
+ # Return the authenticator, as hex string
1222
+ #
1223
+ # @return [String] The authenticator, as hex string
1224
+ #
1225
+ # source://rbnacl//lib/rbnacl/hmac/sha512256.rb#71
1226
+ def hexdigest; end
1227
+
1228
+ # Compute authenticator for message
1229
+ #
1230
+ # source://rbnacl//lib/rbnacl/hmac/sha512256.rb#54
1231
+ def update(message); end
1232
+
1233
+ private
1234
+
1235
+ # source://rbnacl//lib/rbnacl/hmac/sha512256.rb#77
1236
+ def compute_authenticator(authenticator, message); end
1237
+
1238
+ # source://rbnacl//lib/rbnacl/hmac/sha512256.rb#85
1239
+ def verify_message(authenticator, message); end
1240
+
1241
+ class << self
1242
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
1243
+ def auth_hmacsha512256_final(*args); end
1244
+
1245
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
1246
+ def auth_hmacsha512256_init(*args); end
1247
+
1248
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
1249
+ def auth_hmacsha512256_update(*args); end
1250
+
1251
+ def crypto_auth_hmacsha512256_bytes(*_arg0); end
1252
+ def crypto_auth_hmacsha512256_final(*_arg0); end
1253
+ def crypto_auth_hmacsha512256_init(*_arg0); end
1254
+ def crypto_auth_hmacsha512256_keybytes(*_arg0); end
1255
+ def crypto_auth_hmacsha512256_update(*_arg0); end
1256
+ end
1257
+ end
1258
+
1259
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1260
+ RbNaCl::HMAC::SHA512256::BYTES = T.let(T.unsafe(nil), Integer)
1261
+
1262
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1263
+ RbNaCl::HMAC::SHA512256::KEYBYTES = T.let(T.unsafe(nil), Integer)
1264
+
1265
+ # The crypto_auth_hmacsha512256_state struct representation
1266
+ # ref: jedisct1/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512256.h
1267
+ #
1268
+ # source://rbnacl//lib/rbnacl/hmac/sha512256.rb#93
1269
+ class RbNaCl::HMAC::SHA512256::SHA512256State < ::FFI::Struct; end
1270
+
1271
+ # The crypto_hash_sha512_state struct representation
1272
+ # ref: jedisct1/libsodium/src/libsodium/include/sodium/crypto_hash_sha512.h
1273
+ #
1274
+ # source://rbnacl//lib/rbnacl/hmac/sha512256.rb#101
1275
+ class RbNaCl::HMAC::SHA512256::State < ::FFI::Struct; end
1276
+
1277
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1278
+ RbNaCl::HMAC::SHA512::BYTES = T.let(T.unsafe(nil), Integer)
1279
+
1280
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1281
+ RbNaCl::HMAC::SHA512::KEYBYTES = T.let(T.unsafe(nil), Integer)
1282
+
1283
+ # The crypto_auth_hmacsha512_state struct representation
1284
+ # ref: jedisct1/libsodium/src/libsodium/include/sodium/crypto_auth_hmacsha512.h
1285
+ #
1286
+ # source://rbnacl//lib/rbnacl/hmac/sha512.rb#95
1287
+ class RbNaCl::HMAC::SHA512::SHA512State < ::FFI::Struct; end
1288
+
1289
+ # The crypto_hash_sha512_state struct representation
1290
+ # ref: jedisct1/libsodium/src/libsodium/include/sodium/crypto_hash_sha512.h
1291
+ #
1292
+ # source://rbnacl//lib/rbnacl/hmac/sha512.rb#103
1293
+ class RbNaCl::HMAC::SHA512::State < ::FFI::Struct; end
1294
+
1295
+ # Cryptographic hash functions
1296
+ #
1297
+ # Cryptographic hash functions take a variable length message and compute a
1298
+ # fixed length string, the message digest. Even a small change in the input
1299
+ # data should produce a large change in the digest, and it is 'very difficult'
1300
+ # to create two messages with the same digest.
1301
+ #
1302
+ # A cryptographic hash can be used for checking the integrity of data, but
1303
+ # there is no secret involved in the hashing, so anyone can create the hash of
1304
+ # a given message.
1305
+ #
1306
+ # RbNaCl provides the SHA-256,SHA-512 as well as the Blake2b hash functions.
1307
+ #
1308
+ # source://rbnacl//lib/rbnacl/hash.rb#17
1309
+ module RbNaCl::Hash
1310
+ class << self
1311
+ # Returns the Blake2b hash of the given data
1312
+ #
1313
+ # There's no streaming done, just pass in the data and be done with it.
1314
+ # This method returns a 64-byte hash by default.
1315
+ #
1316
+ # @option options
1317
+ # @option options
1318
+ # @option options
1319
+ # @option options
1320
+ # @param data [String] The data, as a collection of bytes
1321
+ # @param options [Hash] a customizable set of options
1322
+ # @raise [CryptoError] If the hashing fails for some reason.
1323
+ # @return [String] The Blake2b hash digest as raw bytes
1324
+ #
1325
+ # source://rbnacl//lib/rbnacl/hash.rb#65
1326
+ def blake2b(data, options = T.unsafe(nil)); end
1327
+
1328
+ # Returns the SHA-256 hash of the given data
1329
+ #
1330
+ # There's no streaming done, just pass in the data and be done with it.
1331
+ #
1332
+ # @param data [#to_str] The data, as a collection of bytes
1333
+ # @raise [CryptoError] If the hashing fails for some reason.
1334
+ # @return [String] The SHA-256 hash digest as raw bytes
1335
+ #
1336
+ # source://rbnacl//lib/rbnacl/hash.rb#27
1337
+ def sha256(data); end
1338
+
1339
+ # Returns the SHA-512 hash of the given data
1340
+ #
1341
+ # There's no streaming done, just pass in the data and be done with it.
1342
+ #
1343
+ # @param data [#to_str] The data, as a collection of bytes
1344
+ # @raise [CryptoError] If the hashing fails for some reason.
1345
+ # @return [String] The SHA-512 hash digest as raw bytes
1346
+ #
1347
+ # source://rbnacl//lib/rbnacl/hash.rb#43
1348
+ def sha512(data); end
1349
+ end
1350
+ end
1351
+
1352
+ # The Blake2b hash function
1353
+ #
1354
+ # Blake2b is based on Blake, a SHA3 finalist which was snubbed in favor of
1355
+ # Keccak, a much slower hash function but one sufficiently different from
1356
+ # SHA2 to let the SHA3 judges panel sleep easy. Back in the real world,
1357
+ # it'd be great if we can calculate hashes quickly if possible.
1358
+ #
1359
+ # Blake2b provides for up to 64-bit digests and also supports a keyed mode
1360
+ # similar to HMAC
1361
+ #
1362
+ # source://rbnacl//lib/rbnacl/hash/blake2b.rb#15
1363
+ class RbNaCl::Hash::Blake2b
1364
+ extend ::RbNaCl::Sodium
1365
+ extend ::FFI::Library
1366
+
1367
+ # Create a new Blake2b hash object
1368
+ #
1369
+ # @option opts
1370
+ # @option opts
1371
+ # @option opts
1372
+ # @option opts
1373
+ # @param opts [Hash] Blake2b configuration
1374
+ # @raise [RbNaCl::LengthError] Invalid length specified for one or more options
1375
+ # @return [RbNaCl::Hash::Blake2b] A Blake2b hasher object
1376
+ #
1377
+ # source://rbnacl//lib/rbnacl/hash/blake2b.rb#127
1378
+ def initialize(opts = T.unsafe(nil)); end
1379
+
1380
+ # Reentrant version of Blake2b digest calculation method
1381
+ #
1382
+ # @param message [String] Message to be hashed
1383
+ #
1384
+ # source://rbnacl//lib/rbnacl/hash/blake2b.rb#152
1385
+ def <<(message); end
1386
+
1387
+ def crypto_generichash_blake2b_bytes_max(*_arg0); end
1388
+ def crypto_generichash_blake2b_bytes_min(*_arg0); end
1389
+ def crypto_generichash_blake2b_final(*_arg0); end
1390
+ def crypto_generichash_blake2b_init_salt_personal(*_arg0); end
1391
+ def crypto_generichash_blake2b_keybytes_max(*_arg0); end
1392
+ def crypto_generichash_blake2b_keybytes_min(*_arg0); end
1393
+ def crypto_generichash_blake2b_personalbytes(*_arg0); end
1394
+ def crypto_generichash_blake2b_salt_personal(*_arg0); end
1395
+ def crypto_generichash_blake2b_saltbytes(*_arg0); end
1396
+ def crypto_generichash_blake2b_update(*_arg0); end
1397
+
1398
+ # Finalize digest calculation, return cached digest if any
1399
+ #
1400
+ # @raise [CryptoError]
1401
+ # @return [String] Blake2b digest of the string as raw bytes
1402
+ #
1403
+ # source://rbnacl//lib/rbnacl/hash/blake2b.rb#162
1404
+ def digest; end
1405
+
1406
+ # Initialize state for Blake2b hash calculation,
1407
+ # this will be called automatically from #update if needed
1408
+ #
1409
+ # source://rbnacl//lib/rbnacl/hash/blake2b.rb#140
1410
+ def reset; end
1411
+
1412
+ # Reentrant version of Blake2b digest calculation method
1413
+ #
1414
+ # @param message [String] Message to be hashed
1415
+ #
1416
+ # source://rbnacl//lib/rbnacl/hash/blake2b.rb#152
1417
+ def update(message); end
1418
+
1419
+ class << self
1420
+ def crypto_generichash_blake2b_bytes_max(*_arg0); end
1421
+ def crypto_generichash_blake2b_bytes_min(*_arg0); end
1422
+ def crypto_generichash_blake2b_final(*_arg0); end
1423
+ def crypto_generichash_blake2b_init_salt_personal(*_arg0); end
1424
+ def crypto_generichash_blake2b_keybytes_max(*_arg0); end
1425
+ def crypto_generichash_blake2b_keybytes_min(*_arg0); end
1426
+ def crypto_generichash_blake2b_personalbytes(*_arg0); end
1427
+ def crypto_generichash_blake2b_salt_personal(*_arg0); end
1428
+ def crypto_generichash_blake2b_saltbytes(*_arg0); end
1429
+ def crypto_generichash_blake2b_update(*_arg0); end
1430
+
1431
+ # Calculate a Blake2b digest
1432
+ #
1433
+ # @option opts
1434
+ # @option opts
1435
+ # @option opts
1436
+ # @option opts
1437
+ # @param message [String] Message to be hashed
1438
+ # @param options [Hash] Blake2b configuration
1439
+ # @param opts [Hash] a customizable set of options
1440
+ # @raise [RbNaCl::LengthError] Invalid length specified for one or more options
1441
+ # @return [String] Blake2b digest of the string as raw bytes
1442
+ #
1443
+ # source://rbnacl//lib/rbnacl/hash/blake2b.rb#60
1444
+ def digest(message, options); end
1445
+
1446
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
1447
+ def generichash_blake2b(*args); end
1448
+
1449
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
1450
+ def generichash_blake2b_final(*args); end
1451
+
1452
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
1453
+ def generichash_blake2b_init(*args); end
1454
+
1455
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
1456
+ def generichash_blake2b_update(*args); end
1457
+
1458
+ # source://rbnacl//lib/rbnacl/hash/blake2b.rb#109
1459
+ def new(opts = T.unsafe(nil)); end
1460
+
1461
+ private
1462
+
1463
+ # Validate and sanitize values for Blake2b configuration
1464
+ #
1465
+ # @option opts
1466
+ # @option opts
1467
+ # @option opts
1468
+ # @option opts
1469
+ # @param options [Hash] Blake2b configuration
1470
+ # @param opts [Hash] a customizable set of options
1471
+ # @raise [RbNaCl::LengthError] Invalid length specified for one or more options
1472
+ # @return [Hash] opts Configuration hash with sanitized values
1473
+ #
1474
+ # source://rbnacl//lib/rbnacl/hash/blake2b.rb#82
1475
+ def validate_opts(opts); end
1476
+ end
1477
+ end
1478
+
1479
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1480
+ RbNaCl::Hash::Blake2b::BYTES_MAX = T.let(T.unsafe(nil), Integer)
1481
+
1482
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1483
+ RbNaCl::Hash::Blake2b::BYTES_MIN = T.let(T.unsafe(nil), Integer)
1484
+
1485
+ # source://rbnacl//lib/rbnacl/hash/blake2b.rb#43
1486
+ RbNaCl::Hash::Blake2b::EMPTY_PERSONAL = T.let(T.unsafe(nil), String)
1487
+
1488
+ # source://rbnacl//lib/rbnacl/hash/blake2b.rb#44
1489
+ RbNaCl::Hash::Blake2b::EMPTY_SALT = T.let(T.unsafe(nil), String)
1490
+
1491
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1492
+ RbNaCl::Hash::Blake2b::KEYBYTES_MAX = T.let(T.unsafe(nil), Integer)
1493
+
1494
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1495
+ RbNaCl::Hash::Blake2b::KEYBYTES_MIN = T.let(T.unsafe(nil), Integer)
1496
+
1497
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1498
+ RbNaCl::Hash::Blake2b::PERSONALBYTES = T.let(T.unsafe(nil), Integer)
1499
+
1500
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1501
+ RbNaCl::Hash::Blake2b::SALTBYTES = T.let(T.unsafe(nil), Integer)
1502
+
1503
+ # The crypto_generichash_blake2b_state struct representation
1504
+ # ref: jedisct1/libsodium/blob/c87df74c7b5969f4/src/libsodium/include/sodium/crypto_generichash_blake2b.h#L23-L25
1505
+ #
1506
+ # source://rbnacl//lib/rbnacl/hash/blake2b.rb#174
1507
+ class RbNaCl::Hash::Blake2b::State < ::FFI::Struct; end
1508
+
1509
+ # Provides a binding for the SHA256 function in libsodium
1510
+ #
1511
+ # source://rbnacl//lib/rbnacl/hash/sha256.rb#7
1512
+ module RbNaCl::Hash::SHA256
1513
+ extend ::RbNaCl::Sodium
1514
+ extend ::FFI::Library
1515
+
1516
+ def crypto_hash_sha256(*_arg0); end
1517
+ def crypto_hash_sha256_bytes(*_arg0); end
1518
+
1519
+ class << self
1520
+ def crypto_hash_sha256(*_arg0); end
1521
+ def crypto_hash_sha256_bytes(*_arg0); end
1522
+
1523
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
1524
+ def hash_sha256(*args); end
1525
+ end
1526
+ end
1527
+
1528
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1529
+ RbNaCl::Hash::SHA256::BYTES = T.let(T.unsafe(nil), Integer)
1530
+
1531
+ # Provides the binding for the SHA512 hash function
1532
+ #
1533
+ # source://rbnacl//lib/rbnacl/hash/sha512.rb#7
1534
+ module RbNaCl::Hash::SHA512
1535
+ extend ::RbNaCl::Sodium
1536
+ extend ::FFI::Library
1537
+
1538
+ def crypto_hash_sha512(*_arg0); end
1539
+ def crypto_hash_sha512_bytes(*_arg0); end
1540
+
1541
+ class << self
1542
+ def crypto_hash_sha512(*_arg0); end
1543
+ def crypto_hash_sha512_bytes(*_arg0); end
1544
+
1545
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
1546
+ def hash_sha512(*args); end
1547
+ end
1548
+ end
1549
+
1550
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1551
+ RbNaCl::Hash::SHA512::BYTES = T.let(T.unsafe(nil), Integer)
1552
+
1553
+ # An incorrect primitive has been passed to a method
1554
+ #
1555
+ # This indicates that an attempt has been made to use something (probably a key)
1556
+ # with an incorrect primitive
1557
+ #
1558
+ # source://rbnacl//lib/rbnacl.rb#42
1559
+ class RbNaCl::IncorrectPrimitiveError < ::ArgumentError; end
1560
+
1561
+ # Defines the libsodium init function
1562
+ #
1563
+ # source://rbnacl//lib/rbnacl/init.rb#6
1564
+ module RbNaCl::Init
1565
+ extend ::FFI::Library
1566
+
1567
+ def sodium_init(*_arg0); end
1568
+
1569
+ class << self
1570
+ def sodium_init(*_arg0); end
1571
+ end
1572
+ end
1573
+
1574
+ # Implements comparisons of keys
1575
+ #
1576
+ # This permits both timing invariant equality tests, as well as
1577
+ # lexicographical sorting.
1578
+ #
1579
+ # source://rbnacl//lib/rbnacl/key_comparator.rb#9
1580
+ module RbNaCl::KeyComparator
1581
+ include ::Comparable
1582
+
1583
+ # spaceship operator
1584
+ #
1585
+ # @param other [KeyComparator, #to_str] The thing to compare
1586
+ # @return [0] if the keys are equal
1587
+ # @return [1] if the key is larger than the other key
1588
+ # @return [-1] if the key is smaller than the other key
1589
+ # @return [nil] if comparison doesn't make sense
1590
+ #
1591
+ # source://rbnacl//lib/rbnacl/key_comparator.rb#19
1592
+ def <=>(other); end
1593
+
1594
+ # equality operator
1595
+ #
1596
+ # The equality operator is explicity defined, despite including Comparable
1597
+ # and having a spaceship operator, so that if equality tests are desired,
1598
+ # they can be timing invariant, without any chance that the further
1599
+ # comparisons for greater than and less than can leak information. Maybe
1600
+ # this is too paranoid, but I don't know how ruby works under the hood with
1601
+ # comparable.
1602
+ #
1603
+ # @param other [KeyComparator, #to_str] The thing to compare
1604
+ # @return [true] if the keys are equal
1605
+ # @return [false] if they keys are not equal
1606
+ #
1607
+ # source://rbnacl//lib/rbnacl/key_comparator.rb#43
1608
+ def ==(other); end
1609
+
1610
+ private
1611
+
1612
+ # source://rbnacl//lib/rbnacl/key_comparator.rb#56
1613
+ def compare32(other); end
1614
+ end
1615
+
1616
+ # Something, probably a key, is the wrong length
1617
+ #
1618
+ # This indicates some argument with an expected length was not that length.
1619
+ # Since this is probably a cryptographic key, you should check that!
1620
+ #
1621
+ # source://rbnacl//lib/rbnacl.rb#36
1622
+ class RbNaCl::LengthError < ::ArgumentError; end
1623
+
1624
+ # source://rbnacl//lib/rbnacl.rb#104
1625
+ RbNaCl::OneTimeAuth = RbNaCl::OneTimeAuths::Poly1305
1626
+
1627
+ # source://rbnacl//lib/rbnacl/one_time_auths/poly1305.rb#5
1628
+ module RbNaCl::OneTimeAuths; end
1629
+
1630
+ # Computes an authenticator using poly1305
1631
+ #
1632
+ # The authenticator can be used at a later time to verify the provenance of
1633
+ # the message by recomputing the tag over the message and then comparing it to
1634
+ # the provided authenticator. The class provides methods for generating
1635
+ # signatures and also has a constant-time implementation for checking them.
1636
+ #
1637
+ # As the name suggests, this is a **ONE TIME** authenticator. Computing an
1638
+ # authenticator for two messages using the same key probably gives an
1639
+ # attacker enough information to forge further authenticators for the same
1640
+ # key.
1641
+ #
1642
+ # This is a secret key authenticator, i.e. anyone who can verify signatures
1643
+ # can also create them.
1644
+ #
1645
+ # @see http://nacl.cr.yp.to/onetimeauth.html
1646
+ #
1647
+ # source://rbnacl//lib/rbnacl/one_time_auths/poly1305.rb#22
1648
+ class RbNaCl::OneTimeAuths::Poly1305 < ::RbNaCl::Auth
1649
+ extend ::RbNaCl::Sodium
1650
+ extend ::FFI::Library
1651
+
1652
+ def crypto_onetimeauth_poly1305(*_arg0); end
1653
+ def crypto_onetimeauth_poly1305_bytes(*_arg0); end
1654
+ def crypto_onetimeauth_poly1305_keybytes(*_arg0); end
1655
+ def crypto_onetimeauth_poly1305_verify(*_arg0); end
1656
+
1657
+ private
1658
+
1659
+ # source://rbnacl//lib/rbnacl/one_time_auths/poly1305.rb#40
1660
+ def compute_authenticator(authenticator, message); end
1661
+
1662
+ # source://rbnacl//lib/rbnacl/one_time_auths/poly1305.rb#44
1663
+ def verify_message(authenticator, message); end
1664
+
1665
+ class << self
1666
+ def crypto_onetimeauth_poly1305(*_arg0); end
1667
+ def crypto_onetimeauth_poly1305_bytes(*_arg0); end
1668
+ def crypto_onetimeauth_poly1305_keybytes(*_arg0); end
1669
+ def crypto_onetimeauth_poly1305_verify(*_arg0); end
1670
+
1671
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
1672
+ def onetimeauth_poly1305(*args); end
1673
+
1674
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
1675
+ def onetimeauth_poly1305_verify(*args); end
1676
+ end
1677
+ end
1678
+
1679
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1680
+ RbNaCl::OneTimeAuths::Poly1305::BYTES = T.let(T.unsafe(nil), Integer)
1681
+
1682
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1683
+ RbNaCl::OneTimeAuths::Poly1305::KEYBYTES = T.let(T.unsafe(nil), Integer)
1684
+
1685
+ # Password hashing functions
1686
+ #
1687
+ # These hash functions are designed specifically for the purposes of securely
1688
+ # storing passwords in a way that they can be checked against a supplied
1689
+ # password but an attacker who obtains a hash cannot easily reverse them back
1690
+ # into the original password.
1691
+ #
1692
+ # Unlike normal hash functions, which are intentionally designed to hash data
1693
+ # as quickly as they can while remaining secure, password hashing functions
1694
+ # are intentionally designed to be slow so they are hard for attackers to
1695
+ # brute force.
1696
+ #
1697
+ # All password hashing functions take a "salt" value which should be randomly
1698
+ # generated on a per-password basis (using RbNaCl::Random, accept no
1699
+ # substitutes)
1700
+ #
1701
+ # All of them also take a CPU work factor, which increases the amount of
1702
+ # computation needed to produce the digest.
1703
+ #
1704
+ # source://rbnacl//lib/rbnacl/password_hash.rb#23
1705
+ module RbNaCl::PasswordHash
1706
+ class << self
1707
+ # argon2: state of the art in the design of memory-hard hashing functions
1708
+ # (default digest algorithm).
1709
+ #
1710
+ # @param password [String] to be hashed
1711
+ # @param salt [String] to make the digest unique
1712
+ # @param opslimit [Integer] the CPU cost (3..10)
1713
+ # @param memlimit [Integer] the memory cost, in bytes
1714
+ # @param digest_size [Integer] of the output
1715
+ # @raise [CryptoError] If calculating the digest fails for some reason.
1716
+ # @return [String] The argon2 digest as raw bytes
1717
+ #
1718
+ # source://rbnacl//lib/rbnacl/password_hash.rb#51
1719
+ def argon2(password, salt, opslimit, memlimit, digest_size = T.unsafe(nil)); end
1720
+
1721
+ # argon2_str: crypt-style password digest
1722
+ #
1723
+ # @param password [String] to be hashed
1724
+ # @param opslimit [Integer] the CPU cost (3..10)
1725
+ # @param memlimit [Integer] the memory cost, in bytes
1726
+ # @raise [CryptoError] If calculating the digest fails for some reason.
1727
+ # @return [String] The argon2i digest as crypt-style string
1728
+ #
1729
+ # source://rbnacl//lib/rbnacl/password_hash.rb#94
1730
+ def argon2_str(password, opslimit = T.unsafe(nil), memlimit = T.unsafe(nil)); end
1731
+
1732
+ # argon2_valid?: verify crypt-style password digest
1733
+ #
1734
+ # @param password [String] to verify
1735
+ # @param str_digest [String] to verify
1736
+ # @return [Boolean] true if digest was created using password
1737
+ #
1738
+ # source://rbnacl//lib/rbnacl/password_hash.rb#104
1739
+ def argon2_valid?(password, str_digest); end
1740
+
1741
+ # argon2i: argon2, using argon2i digest algorithm.
1742
+ #
1743
+ # @param password [String] to be hashed
1744
+ # @param salt [String] to make the digest unique
1745
+ # @param opslimit [Integer] the CPU cost (3..10)
1746
+ # @param memlimit [Integer] the memory cost, in bytes
1747
+ # @param digest_size [Integer] of the output
1748
+ # @raise [CryptoError] If calculating the digest fails for some reason.
1749
+ # @return [String] The argon2i digest as raw bytes
1750
+ #
1751
+ # source://rbnacl//lib/rbnacl/password_hash.rb#66
1752
+ def argon2i(password, salt, opslimit, memlimit, digest_size = T.unsafe(nil)); end
1753
+
1754
+ # argon2id: argon2, using argon2id digest algorithm.
1755
+ #
1756
+ # @param password [String] to be hashed
1757
+ # @param salt [String] to make the digest unique
1758
+ # @param opslimit [Integer] the CPU cost (3..10)
1759
+ # @param memlimit [Integer] the memory cost, in bytes
1760
+ # @param digest_size [Integer] of the output
1761
+ # @raise [CryptoError] If calculating the digest fails for some reason.
1762
+ # @return [String] The argon2id digest as raw bytes
1763
+ #
1764
+ # source://rbnacl//lib/rbnacl/password_hash.rb#81
1765
+ def argon2id(password, salt, opslimit, memlimit, digest_size = T.unsafe(nil)); end
1766
+
1767
+ # scrypt: the original sequential memory-hard password hashing function.
1768
+ #
1769
+ # @param password [String] to be hashed
1770
+ # @param salt [String] to make the digest unique
1771
+ # @param opslimit [Integer] the CPU cost (e.g. 2**20)
1772
+ # @param memlimit [Integer] the memory cost (e.g. 2**24)
1773
+ # @param digest_size [Integer] of the output
1774
+ # @raise [CryptoError] If calculating the digest fails for some reason.
1775
+ # @return [String] The scrypt digest as raw bytes
1776
+ #
1777
+ # source://rbnacl//lib/rbnacl/password_hash.rb#35
1778
+ def scrypt(password, salt, opslimit, memlimit, digest_size = T.unsafe(nil)); end
1779
+
1780
+ protected
1781
+
1782
+ # @return [Boolean]
1783
+ #
1784
+ # source://rbnacl//lib/rbnacl/password_hash.rb#111
1785
+ def argon2_supported?; end
1786
+ end
1787
+ end
1788
+
1789
+ # Since version 1.0.9, Sodium provides a password hashing scheme called
1790
+ # Argon2. Argon2 summarizes the state of the art in the design of memory-
1791
+ # hard functions. It aims at the highest memory filling rate and effective
1792
+ # use of multiple computing units, while still providing defense against
1793
+ # tradeoff attacks. It prevents ASICs from having a significant advantage
1794
+ # over software implementations.
1795
+ #
1796
+ # source://rbnacl//lib/rbnacl/password_hash/argon2.rb#12
1797
+ class RbNaCl::PasswordHash::Argon2
1798
+ extend ::RbNaCl::Sodium
1799
+ extend ::FFI::Library
1800
+
1801
+ # Create a new Argon2 password hash object
1802
+ #
1803
+ # opslimit and memlimit may be an integer, or one of the following
1804
+ # symbols:
1805
+ #
1806
+ # [:interactive] Suitable for interactive online operations. This
1807
+ # requires 32 Mb of dedicated RAM.
1808
+ # [:moderate] A compromise between interactive and sensitive. This
1809
+ # requires 128 Mb of dedicated RAM, and takes about 0.7
1810
+ # seconds on a 2.8 Ghz Core i7 CPU.
1811
+ # [:sensitive] For highly sensitive and non-interactive operations. This
1812
+ # requires 128 Mb of dedicated RAM, and takes about 0.7
1813
+ # seconds on a 2.8 Ghz Core i7 CPU
1814
+ #
1815
+ # @param opslimit [Integer] the CPU cost (1..10)
1816
+ # @param memlimit [Integer] the memory cost (e.g. 2**24)
1817
+ # @param digest_size [Integer] the byte length of the resulting digest
1818
+ # @return [RbNaCl::PasswordHash::Argon2] An Argon2 password hasher object
1819
+ #
1820
+ # source://rbnacl//lib/rbnacl/password_hash/argon2.rb#95
1821
+ def initialize(opslimit, memlimit, digest_size = T.unsafe(nil)); end
1822
+
1823
+ def crypto_pwhash(*_arg0); end
1824
+ def crypto_pwhash_alg_argon2i13(*_arg0); end
1825
+ def crypto_pwhash_alg_argon2id13(*_arg0); end
1826
+ def crypto_pwhash_alg_default(*_arg0); end
1827
+ def crypto_pwhash_memlimit_interactive(*_arg0); end
1828
+ def crypto_pwhash_memlimit_max(*_arg0); end
1829
+ def crypto_pwhash_memlimit_min(*_arg0); end
1830
+ def crypto_pwhash_memlimit_moderate(*_arg0); end
1831
+ def crypto_pwhash_memlimit_sensitive(*_arg0); end
1832
+ def crypto_pwhash_opslimit_interactive(*_arg0); end
1833
+ def crypto_pwhash_opslimit_max(*_arg0); end
1834
+ def crypto_pwhash_opslimit_min(*_arg0); end
1835
+ def crypto_pwhash_opslimit_moderate(*_arg0); end
1836
+ def crypto_pwhash_opslimit_sensitive(*_arg0); end
1837
+ def crypto_pwhash_saltbytes(*_arg0); end
1838
+ def crypto_pwhash_str(*_arg0); end
1839
+ def crypto_pwhash_str_verify(*_arg0); end
1840
+ def crypto_pwhash_strbytes(*_arg0); end
1841
+
1842
+ # Calculate an Argon2 digest for a given password and salt
1843
+ #
1844
+ # @param password [String] to be hashed
1845
+ # @param salt [String] to make the digest unique
1846
+ # @param digest [Symbol] algorithm to use (may be :argon2i or :argon2id)
1847
+ # if nil, the default is determined by libsodium
1848
+ # (argon2i for libsodium < 1.0.15, and argon2id for
1849
+ # libsodium >= 1.0.15).
1850
+ # @raise [ArgumentError]
1851
+ # @return [String] scrypt digest of the string as raw bytes
1852
+ #
1853
+ # source://rbnacl//lib/rbnacl/password_hash/argon2.rb#111
1854
+ def digest(password, salt, algo = T.unsafe(nil)); end
1855
+
1856
+ # Calculate an Argon2 digest in the form of a crypt-style string.
1857
+ # The resulting string encodes the parameters and salt.
1858
+ #
1859
+ # @param password [String] to be hashed
1860
+ # @raise [ArgumentError]
1861
+ # @return [String] argon2 digest string
1862
+ #
1863
+ # source://rbnacl//lib/rbnacl/password_hash/argon2.rb#143
1864
+ def digest_str(password); end
1865
+
1866
+ class << self
1867
+ def crypto_pwhash(*_arg0); end
1868
+ def crypto_pwhash_alg_argon2i13(*_arg0); end
1869
+ def crypto_pwhash_alg_argon2id13(*_arg0); end
1870
+ def crypto_pwhash_alg_default(*_arg0); end
1871
+ def crypto_pwhash_memlimit_interactive(*_arg0); end
1872
+ def crypto_pwhash_memlimit_max(*_arg0); end
1873
+ def crypto_pwhash_memlimit_min(*_arg0); end
1874
+ def crypto_pwhash_memlimit_moderate(*_arg0); end
1875
+ def crypto_pwhash_memlimit_sensitive(*_arg0); end
1876
+ def crypto_pwhash_opslimit_interactive(*_arg0); end
1877
+ def crypto_pwhash_opslimit_max(*_arg0); end
1878
+ def crypto_pwhash_opslimit_min(*_arg0); end
1879
+ def crypto_pwhash_opslimit_moderate(*_arg0); end
1880
+ def crypto_pwhash_opslimit_sensitive(*_arg0); end
1881
+ def crypto_pwhash_saltbytes(*_arg0); end
1882
+ def crypto_pwhash_str(*_arg0); end
1883
+ def crypto_pwhash_str_verify(*_arg0); end
1884
+ def crypto_pwhash_strbytes(*_arg0); end
1885
+
1886
+ # Clamps digest size between 16..4294967295
1887
+ #
1888
+ # @raise [LengthError] if the value is out of range
1889
+ # @return [Integer] digest_size a valid value for digest size
1890
+ #
1891
+ # source://rbnacl//lib/rbnacl/password_hash/argon2.rb#215
1892
+ def digest_size_value(digest_size); end
1893
+
1894
+ # Compares a password with a digest string
1895
+ #
1896
+ # @param password [String] to be hashed
1897
+ # @param digest_string [String] to compare to
1898
+ # @raise [ArgumentError]
1899
+ # @return [boolean] true if password matches digest_string
1900
+ #
1901
+ # source://rbnacl//lib/rbnacl/password_hash/argon2.rb#164
1902
+ def digest_str_verify(password, digest_string); end
1903
+
1904
+ # Clamps memlimit between 8192 bytes and 4 TB (eg. 2**32)
1905
+ #
1906
+ # @param memlimit, [Integer] in bytes
1907
+ # @raise [ArgumentError] if the value is out of range
1908
+ # @return [Integer] memlimit a valid value for memlimit
1909
+ #
1910
+ # source://rbnacl//lib/rbnacl/password_hash/argon2.rb#199
1911
+ def memlimit_value(memlimit); end
1912
+
1913
+ # Clamps opslimit to an acceptable range (3..10)
1914
+ #
1915
+ # @param opslimit [Integer] value to be checked
1916
+ # @raise [ArgumentError] if the value is out of range
1917
+ # @return [Integer] opslimit a valid value for opslimit
1918
+ #
1919
+ # source://rbnacl//lib/rbnacl/password_hash/argon2.rb#181
1920
+ def opslimit_value(opslimit); end
1921
+
1922
+ # source://rbnacl//lib/rbnacl/sodium.rb#60
1923
+ def pwhash(*args); end
1924
+
1925
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
1926
+ def pwhash_str(*args); end
1927
+
1928
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
1929
+ def pwhash_str_verify(*args); end
1930
+ end
1931
+ end
1932
+
1933
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1934
+ RbNaCl::PasswordHash::Argon2::ALG_ARGON2I13 = T.let(T.unsafe(nil), Integer)
1935
+
1936
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1937
+ RbNaCl::PasswordHash::Argon2::ALG_ARGON2ID13 = T.let(T.unsafe(nil), Integer)
1938
+
1939
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1940
+ RbNaCl::PasswordHash::Argon2::ALG_DEFAULT = T.let(T.unsafe(nil), Integer)
1941
+
1942
+ # source://rbnacl//lib/rbnacl/password_hash/argon2.rb#35
1943
+ RbNaCl::PasswordHash::Argon2::ARGON2_MAX_OUTLEN = T.let(T.unsafe(nil), Integer)
1944
+
1945
+ # source://rbnacl//lib/rbnacl/password_hash/argon2.rb#34
1946
+ RbNaCl::PasswordHash::Argon2::ARGON2_MIN_OUTLEN = T.let(T.unsafe(nil), Integer)
1947
+
1948
+ # source://rbnacl//lib/rbnacl/password_hash/argon2.rb#55
1949
+ RbNaCl::PasswordHash::Argon2::ARGON_ERROR_CODES = T.let(T.unsafe(nil), Hash)
1950
+
1951
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1952
+ RbNaCl::PasswordHash::Argon2::MEMLIMIT_INTERACTIVE = T.let(T.unsafe(nil), Integer)
1953
+
1954
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1955
+ RbNaCl::PasswordHash::Argon2::MEMLIMIT_MAX = T.let(T.unsafe(nil), Integer)
1956
+
1957
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1958
+ RbNaCl::PasswordHash::Argon2::MEMLIMIT_MIN = T.let(T.unsafe(nil), Integer)
1959
+
1960
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1961
+ RbNaCl::PasswordHash::Argon2::MEMLIMIT_MODERATE = T.let(T.unsafe(nil), Integer)
1962
+
1963
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1964
+ RbNaCl::PasswordHash::Argon2::MEMLIMIT_SENSITIVE = T.let(T.unsafe(nil), Integer)
1965
+
1966
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1967
+ RbNaCl::PasswordHash::Argon2::OPSLIMIT_INTERACTIVE = T.let(T.unsafe(nil), Integer)
1968
+
1969
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1970
+ RbNaCl::PasswordHash::Argon2::OPSLIMIT_MAX = T.let(T.unsafe(nil), Integer)
1971
+
1972
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1973
+ RbNaCl::PasswordHash::Argon2::OPSLIMIT_MIN = T.let(T.unsafe(nil), Integer)
1974
+
1975
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1976
+ RbNaCl::PasswordHash::Argon2::OPSLIMIT_MODERATE = T.let(T.unsafe(nil), Integer)
1977
+
1978
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1979
+ RbNaCl::PasswordHash::Argon2::OPSLIMIT_SENSITIVE = T.let(T.unsafe(nil), Integer)
1980
+
1981
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1982
+ RbNaCl::PasswordHash::Argon2::SALTBYTES = T.let(T.unsafe(nil), Integer)
1983
+
1984
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
1985
+ RbNaCl::PasswordHash::Argon2::STRBYTES = T.let(T.unsafe(nil), Integer)
1986
+
1987
+ # The scrypt sequential memory hard password hashing function
1988
+ #
1989
+ # scrypt is a password hash (or password based KDF). That is to say, where
1990
+ # most hash functions are designed to be fast because hashing is often a
1991
+ # bottleneck, scrypt is slow by design, because it's trying to "strengthen"
1992
+ # the password by combining it with a random "salt" value then perform a
1993
+ # series of operation on the result which are slow enough to defeat
1994
+ # brute-force password cracking attempts.
1995
+ #
1996
+ # scrypt is similar to the bcrypt and pbkdf2 password hashes in that it's
1997
+ # designed to strengthen passwords, but includes a new design element
1998
+ # called "sequential memory hardness" which helps defeat attempts by
1999
+ # attackers to compensate for their lack of memory (since they're typically
2000
+ # on GPUs or FPGAs) with additional computation.
2001
+ #
2002
+ # source://rbnacl//lib/rbnacl/password_hash/scrypt.rb#20
2003
+ class RbNaCl::PasswordHash::SCrypt
2004
+ extend ::RbNaCl::Sodium
2005
+ extend ::FFI::Library
2006
+
2007
+ # Create a new SCrypt password hash object
2008
+ #
2009
+ # @param opslimit [Integer] the CPU cost (e.g. 2**20)
2010
+ # @param memlimit [Integer] the memory cost (e.g. 2**24)
2011
+ # @return [RbNaCl::PasswordHash::SCrypt] An SCrypt password hasher object
2012
+ #
2013
+ # source://rbnacl//lib/rbnacl/password_hash/scrypt.rb#37
2014
+ def initialize(opslimit, memlimit, digest_size = T.unsafe(nil)); end
2015
+
2016
+ def crypto_pwhash_scryptsalsa208sha256(*_arg0); end
2017
+ def crypto_pwhash_scryptsalsa208sha256_saltbytes(*_arg0); end
2018
+
2019
+ # Calculate an scrypt digest for a given password and salt
2020
+ #
2021
+ # @param password [String] to be hashed
2022
+ # @param salt [String] to make the digest unique
2023
+ # @raise [CryptoError]
2024
+ # @return [String] scrypt digest of the string as raw bytes
2025
+ #
2026
+ # source://rbnacl//lib/rbnacl/password_hash/scrypt.rb#55
2027
+ def digest(password, salt); end
2028
+
2029
+ class << self
2030
+ def crypto_pwhash_scryptsalsa208sha256(*_arg0); end
2031
+ def crypto_pwhash_scryptsalsa208sha256_saltbytes(*_arg0); end
2032
+
2033
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
2034
+ def scrypt(*args); end
2035
+ end
2036
+ end
2037
+
2038
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
2039
+ RbNaCl::PasswordHash::SCrypt::SALTBYTES = T.let(T.unsafe(nil), Integer)
2040
+
2041
+ # source://rbnacl//lib/rbnacl.rb#97
2042
+ RbNaCl::PrivateKey = RbNaCl::Boxes::Curve25519XSalsa20Poly1305::PrivateKey
2043
+
2044
+ # source://rbnacl//lib/rbnacl.rb#98
2045
+ RbNaCl::PublicKey = RbNaCl::Boxes::Curve25519XSalsa20Poly1305::PublicKey
2046
+
2047
+ # Functions for random number generation
2048
+ #
2049
+ # This uses the underlying source of random number generation on the OS, so
2050
+ # /dev/urandom on UNIX-like systems, and the MS crypto providor on windows.
2051
+ #
2052
+ # source://rbnacl//lib/rbnacl/random.rb#9
2053
+ module RbNaCl::Random
2054
+ extend ::RbNaCl::Sodium
2055
+ extend ::FFI::Library
2056
+
2057
+ def randombytes_buf(*_arg0); end
2058
+
2059
+ class << self
2060
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
2061
+ def c_random_bytes(*args); end
2062
+
2063
+ # Returns a string of random bytes
2064
+ #
2065
+ # @param n [Integer] number of random bytes desired
2066
+ # @return [String] random bytes.
2067
+ #
2068
+ # source://rbnacl//lib/rbnacl/random.rb#23
2069
+ def random_bytes(n = T.unsafe(nil)); end
2070
+
2071
+ def randombytes_buf(*_arg0); end
2072
+ end
2073
+ end
2074
+
2075
+ # Backwards compatibility with the old RandomNonceBox name
2076
+ #
2077
+ # source://rbnacl//lib/rbnacl/simple_box.rb#116
2078
+ RbNaCl::RandomNonceBox = RbNaCl::SimpleBox
2079
+
2080
+ # source://rbnacl//lib/rbnacl.rb#99
2081
+ RbNaCl::SealedBox = RbNaCl::Boxes::Sealed
2082
+
2083
+ # source://rbnacl//lib/rbnacl.rb#100
2084
+ RbNaCl::SecretBox = RbNaCl::SecretBoxes::XSalsa20Poly1305
2085
+
2086
+ # source://rbnacl//lib/rbnacl/secret_boxes/xsalsa20poly1305.rb#5
2087
+ module RbNaCl::SecretBoxes; end
2088
+
2089
+ # The SecretBox class boxes and unboxes messages
2090
+ #
2091
+ # This class uses the given secret key to encrypt and decrypt messages.
2092
+ #
2093
+ # It is VITALLY important that the nonce is a nonce, i.e. it is a number used
2094
+ # only once for any given pair of keys. If you fail to do this, you
2095
+ # compromise the privacy of the messages encrypted. Give your nonces a
2096
+ # different prefix, or have one side use an odd counter and one an even counter.
2097
+ # Just make sure they are different.
2098
+ #
2099
+ # The ciphertexts generated by this class include a 16-byte authenticator which
2100
+ # is checked as part of the decryption. An invalid authenticator will cause
2101
+ # the unbox function to raise. The authenticator is not a signature. Once
2102
+ # you've looked in the box, you've demonstrated the ability to create
2103
+ # arbitrary valid messages, so messages you send are repudiable. For
2104
+ # non-repudiable messages, sign them before or after encryption.
2105
+ #
2106
+ # source://rbnacl//lib/rbnacl/secret_boxes/xsalsa20poly1305.rb#22
2107
+ class RbNaCl::SecretBoxes::XSalsa20Poly1305
2108
+ extend ::RbNaCl::Sodium
2109
+ extend ::FFI::Library
2110
+
2111
+ # Create a new SecretBox
2112
+ #
2113
+ # Sets up the Box with a secret key fro encrypting and decrypting messages.
2114
+ #
2115
+ # @param key [String] The key to encrypt and decrypt with
2116
+ # @raise [RbNaCl::LengthError] on invalid keys
2117
+ # @return [RbNaCl::SecretBox] The new Box, ready to use
2118
+ #
2119
+ # source://rbnacl//lib/rbnacl/secret_boxes/xsalsa20poly1305.rb#49
2120
+ def initialize(key); end
2121
+
2122
+ # Encrypts a message
2123
+ #
2124
+ # Encrypts the message with the given nonce to the key set up when
2125
+ # initializing the class. Make sure the nonce is unique for any given
2126
+ # key, or you might as well just send plain text.
2127
+ #
2128
+ # This function takes care of the padding required by the NaCL C API.
2129
+ #
2130
+ # @param nonce [String] A 24-byte string containing the nonce.
2131
+ # @param message [String] The message to be encrypted.
2132
+ # @raise [RbNaCl::LengthError] If the nonce is not valid
2133
+ # @return [String] The ciphertext without the nonce prepended (BINARY encoded)
2134
+ #
2135
+ # source://rbnacl//lib/rbnacl/secret_boxes/xsalsa20poly1305.rb#67
2136
+ def box(nonce, message); end
2137
+
2138
+ def crypto_secretbox_xsalsa20poly1305(*_arg0); end
2139
+ def crypto_secretbox_xsalsa20poly1305_boxzerobytes(*_arg0); end
2140
+ def crypto_secretbox_xsalsa20poly1305_keybytes(*_arg0); end
2141
+ def crypto_secretbox_xsalsa20poly1305_noncebytes(*_arg0); end
2142
+ def crypto_secretbox_xsalsa20poly1305_open(*_arg0); end
2143
+ def crypto_secretbox_xsalsa20poly1305_zerobytes(*_arg0); end
2144
+
2145
+ # Decrypts a ciphertext
2146
+ #
2147
+ # Decrypts the ciphertext with the given nonce using the key setup when
2148
+ # initializing the class.
2149
+ #
2150
+ # This function takes care of the padding required by the NaCL C API.
2151
+ #
2152
+ # @param nonce [String] A 24-byte string containing the nonce.
2153
+ # @param ciphertext [String] The message to be decrypted.
2154
+ # @raise [RbNaCl::LengthError] If the nonce is not valid
2155
+ # @raise [RbNaCl::CryptoError] If the ciphertext cannot be authenticated.
2156
+ # @return [String] The decrypted message (BINARY encoded)
2157
+ #
2158
+ # source://rbnacl//lib/rbnacl/secret_boxes/xsalsa20poly1305.rb#93
2159
+ def decrypt(nonce, ciphertext); end
2160
+
2161
+ # Encrypts a message
2162
+ #
2163
+ # Encrypts the message with the given nonce to the key set up when
2164
+ # initializing the class. Make sure the nonce is unique for any given
2165
+ # key, or you might as well just send plain text.
2166
+ #
2167
+ # This function takes care of the padding required by the NaCL C API.
2168
+ #
2169
+ # @param nonce [String] A 24-byte string containing the nonce.
2170
+ # @param message [String] The message to be encrypted.
2171
+ # @raise [RbNaCl::LengthError] If the nonce is not valid
2172
+ # @return [String] The ciphertext without the nonce prepended (BINARY encoded)
2173
+ #
2174
+ # source://rbnacl//lib/rbnacl/secret_boxes/xsalsa20poly1305.rb#67
2175
+ def encrypt(nonce, message); end
2176
+
2177
+ # The key bytes for the SecretBox instance
2178
+ #
2179
+ # @return [Integer] The number of bytes in a valid key
2180
+ #
2181
+ # source://rbnacl//lib/rbnacl/secret_boxes/xsalsa20poly1305.rb#136
2182
+ def key_bytes; end
2183
+
2184
+ # The nonce bytes for the SecretBox instance
2185
+ #
2186
+ # @return [Integer] The number of bytes in a valid nonce
2187
+ #
2188
+ # source://rbnacl//lib/rbnacl/secret_boxes/xsalsa20poly1305.rb#122
2189
+ def nonce_bytes; end
2190
+
2191
+ # Decrypts a ciphertext
2192
+ #
2193
+ # Decrypts the ciphertext with the given nonce using the key setup when
2194
+ # initializing the class.
2195
+ #
2196
+ # This function takes care of the padding required by the NaCL C API.
2197
+ #
2198
+ # @param nonce [String] A 24-byte string containing the nonce.
2199
+ # @param ciphertext [String] The message to be decrypted.
2200
+ # @raise [RbNaCl::LengthError] If the nonce is not valid
2201
+ # @raise [RbNaCl::CryptoError] If the ciphertext cannot be authenticated.
2202
+ # @return [String] The decrypted message (BINARY encoded)
2203
+ #
2204
+ # source://rbnacl//lib/rbnacl/secret_boxes/xsalsa20poly1305.rb#93
2205
+ def open(nonce, ciphertext); end
2206
+
2207
+ # The crypto primitive for the SecretBox instance
2208
+ #
2209
+ # @return [Symbol] The primitive used
2210
+ #
2211
+ # source://rbnacl//lib/rbnacl/secret_boxes/xsalsa20poly1305.rb#108
2212
+ def primitive; end
2213
+
2214
+ class << self
2215
+ def crypto_secretbox_xsalsa20poly1305(*_arg0); end
2216
+ def crypto_secretbox_xsalsa20poly1305_boxzerobytes(*_arg0); end
2217
+ def crypto_secretbox_xsalsa20poly1305_keybytes(*_arg0); end
2218
+ def crypto_secretbox_xsalsa20poly1305_noncebytes(*_arg0); end
2219
+ def crypto_secretbox_xsalsa20poly1305_open(*_arg0); end
2220
+ def crypto_secretbox_xsalsa20poly1305_zerobytes(*_arg0); end
2221
+
2222
+ # The key bytes for the SecretBox class
2223
+ #
2224
+ # @return [Integer] The number of bytes in a valid key
2225
+ #
2226
+ # source://rbnacl//lib/rbnacl/secret_boxes/xsalsa20poly1305.rb#129
2227
+ def key_bytes; end
2228
+
2229
+ # The nonce bytes for the SecretBox class
2230
+ #
2231
+ # @return [Integer] The number of bytes in a valid nonce
2232
+ #
2233
+ # source://rbnacl//lib/rbnacl/secret_boxes/xsalsa20poly1305.rb#115
2234
+ def nonce_bytes; end
2235
+
2236
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
2237
+ def secretbox_xsalsa20poly1305(*args); end
2238
+
2239
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
2240
+ def secretbox_xsalsa20poly1305_open(*args); end
2241
+ end
2242
+ end
2243
+
2244
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
2245
+ RbNaCl::SecretBoxes::XSalsa20Poly1305::BOXZEROBYTES = T.let(T.unsafe(nil), Integer)
2246
+
2247
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
2248
+ RbNaCl::SecretBoxes::XSalsa20Poly1305::KEYBYTES = T.let(T.unsafe(nil), Integer)
2249
+
2250
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
2251
+ RbNaCl::SecretBoxes::XSalsa20Poly1305::NONCEBYTES = T.let(T.unsafe(nil), Integer)
2252
+
2253
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
2254
+ RbNaCl::SecretBoxes::XSalsa20Poly1305::ZEROBYTES = T.let(T.unsafe(nil), Integer)
2255
+
2256
+ # Self-test performed at startup
2257
+ #
2258
+ # source://rbnacl//lib/rbnacl/self_test.rb#11
2259
+ module RbNaCl::SelfTest
2260
+ private
2261
+
2262
+ # source://rbnacl//lib/rbnacl/self_test.rb#31
2263
+ def box_common_test(box); end
2264
+
2265
+ # source://rbnacl//lib/rbnacl/self_test.rb#18
2266
+ def box_test; end
2267
+
2268
+ # source://rbnacl//lib/rbnacl/self_test.rb#51
2269
+ def digital_signature_test; end
2270
+
2271
+ # source://rbnacl//lib/rbnacl/self_test.rb#94
2272
+ def hmac_test(klass, tag); end
2273
+
2274
+ # source://rbnacl//lib/rbnacl/self_test.rb#26
2275
+ def secret_box_test; end
2276
+
2277
+ # source://rbnacl//lib/rbnacl/self_test.rb#87
2278
+ def sha256_test; end
2279
+
2280
+ # source://rbnacl//lib/rbnacl/self_test.rb#14
2281
+ def vector(name); end
2282
+
2283
+ class << self
2284
+ # @raise [SelfTestFailure]
2285
+ #
2286
+ # source://rbnacl//lib/rbnacl/self_test.rb#31
2287
+ def box_common_test(box); end
2288
+
2289
+ # source://rbnacl//lib/rbnacl/self_test.rb#18
2290
+ def box_test; end
2291
+
2292
+ # source://rbnacl//lib/rbnacl/self_test.rb#51
2293
+ def digital_signature_test; end
2294
+
2295
+ # @raise [SelfTestFailure]
2296
+ #
2297
+ # source://rbnacl//lib/rbnacl/self_test.rb#94
2298
+ def hmac_test(klass, tag); end
2299
+
2300
+ # source://rbnacl//lib/rbnacl/self_test.rb#26
2301
+ def secret_box_test; end
2302
+
2303
+ # @raise [SelfTestFailure]
2304
+ #
2305
+ # source://rbnacl//lib/rbnacl/self_test.rb#87
2306
+ def sha256_test; end
2307
+
2308
+ # source://rbnacl//lib/rbnacl/self_test.rb#14
2309
+ def vector(name); end
2310
+ end
2311
+ end
2312
+
2313
+ # source://rbnacl//lib/rbnacl/self_test.rb#8
2314
+ class RbNaCl::SelfTestFailure < ::RbNaCl::CryptoError; end
2315
+
2316
+ # Serialization features shared across all "key-like" classes
2317
+ #
2318
+ # source://rbnacl//lib/rbnacl/serializable.rb#6
2319
+ module RbNaCl::Serializable
2320
+ # Inspect this key
2321
+ #
2322
+ # @return [String] a string representing this key
2323
+ #
2324
+ # source://rbnacl//lib/rbnacl/serializable.rb#18
2325
+ def inspect; end
2326
+
2327
+ # source://rbnacl//lib/rbnacl/serializable.rb#7
2328
+ def to_s; end
2329
+
2330
+ # source://rbnacl//lib/rbnacl/serializable.rb#11
2331
+ def to_str; end
2332
+ end
2333
+
2334
+ # source://rbnacl//lib/rbnacl/signatures/ed25519.rb#5
2335
+ module RbNaCl::Signatures; end
2336
+
2337
+ # The EdDSA signature system implemented using the Ed25519 elliptic curve
2338
+ #
2339
+ # source://rbnacl//lib/rbnacl/signatures/ed25519.rb#7
2340
+ module RbNaCl::Signatures::Ed25519
2341
+ extend ::RbNaCl::Sodium
2342
+ extend ::FFI::Library
2343
+
2344
+ def crypto_sign_ed25519_bytes(*_arg0); end
2345
+ def crypto_sign_ed25519_publickeybytes(*_arg0); end
2346
+ def crypto_sign_ed25519_secretkeybytes(*_arg0); end
2347
+ def crypto_sign_ed25519_seedbytes(*_arg0); end
2348
+
2349
+ class << self
2350
+ def crypto_sign_ed25519_bytes(*_arg0); end
2351
+ def crypto_sign_ed25519_publickeybytes(*_arg0); end
2352
+ def crypto_sign_ed25519_secretkeybytes(*_arg0); end
2353
+ def crypto_sign_ed25519_seedbytes(*_arg0); end
2354
+ end
2355
+ end
2356
+
2357
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
2358
+ RbNaCl::Signatures::Ed25519::SEEDBYTES = T.let(T.unsafe(nil), Integer)
2359
+
2360
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
2361
+ RbNaCl::Signatures::Ed25519::SIGNATUREBYTES = T.let(T.unsafe(nil), Integer)
2362
+
2363
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
2364
+ RbNaCl::Signatures::Ed25519::SIGNINGKEYBYTES = T.let(T.unsafe(nil), Integer)
2365
+
2366
+ # Private key for producing digital signatures using the Ed25519 algorithm.
2367
+ # Ed25519 provides a 128-bit security level, that is to say, all known attacks
2368
+ # take at least 2^128 operations, providing the same security level as
2369
+ # AES-128, NIST P-256, and RSA-3072.
2370
+ #
2371
+ # Signing keys are produced from a 32-byte (256-bit) random seed value.
2372
+ # This value can be passed into the SigningKey constructor as a String
2373
+ # whose bytesize is 32.
2374
+ #
2375
+ # The public VerifyKey can be computed from the private 32-byte seed value
2376
+ # as well, eliminating the need to store a "keypair".
2377
+ #
2378
+ # SigningKey produces 64-byte (512-bit) signatures. The signatures are
2379
+ # deterministic: signing the same message will always produce the same
2380
+ # signature. This prevents "entropy failure" seen in other signature
2381
+ # algorithms like DSA and ECDSA, where poor random number generators can
2382
+ # leak enough information to recover the private key.
2383
+ #
2384
+ # source://rbnacl//lib/rbnacl/signatures/ed25519/signing_key.rb#24
2385
+ class RbNaCl::Signatures::Ed25519::SigningKey
2386
+ include ::Comparable
2387
+ include ::RbNaCl::KeyComparator
2388
+ include ::RbNaCl::Serializable
2389
+ extend ::RbNaCl::Sodium
2390
+ extend ::FFI::Library
2391
+
2392
+ # Create a SigningKey from a seed value
2393
+ #
2394
+ # @param seed [String] Random 32-byte value (i.e. private key)
2395
+ # @return [RbNaCl::SigningKey] Key which can sign messages
2396
+ #
2397
+ # source://rbnacl//lib/rbnacl/signatures/ed25519/signing_key.rb#55
2398
+ def initialize(seed); end
2399
+
2400
+ def crypto_sign_ed25519(*_arg0); end
2401
+ def crypto_sign_ed25519_seed_keypair(*_arg0); end
2402
+
2403
+ # Return the raw 64 byte value of this key
2404
+ #
2405
+ # @return [String] The signature key bytes. Left half is 32-byte
2406
+ # curve25519 private scalar, right half is 32-byte group element
2407
+ #
2408
+ # source://rbnacl//lib/rbnacl/signatures/ed25519/signing_key.rb#102
2409
+ def keypair_bytes; end
2410
+
2411
+ # The crypto primitive this SigningKey class uses for signatures
2412
+ #
2413
+ # @return [Symbol] The primitive
2414
+ #
2415
+ # source://rbnacl//lib/rbnacl/signatures/ed25519/signing_key.rb#109
2416
+ def primitive; end
2417
+
2418
+ # Sign a message using this key
2419
+ #
2420
+ # @param message [String] Message to be signed by this key
2421
+ # @return [String] Signature as bytes
2422
+ #
2423
+ # source://rbnacl//lib/rbnacl/signatures/ed25519/signing_key.rb#75
2424
+ def sign(message); end
2425
+
2426
+ # Sign a message using this key, attaching the signature to the message
2427
+ #
2428
+ # @param message [String] Message to be signed by this key
2429
+ # @return [String] Signature and the message as bytes
2430
+ #
2431
+ # source://rbnacl//lib/rbnacl/signatures/ed25519/signing_key.rb#84
2432
+ def sign_attached(message); end
2433
+
2434
+ # The size of signatures generated by the SigningKey instance
2435
+ #
2436
+ # @return [Integer] The number of bytes in a signature
2437
+ #
2438
+ # source://rbnacl//lib/rbnacl/signatures/ed25519/signing_key.rb#123
2439
+ def signature_bytes; end
2440
+
2441
+ # Return the raw seed value of this key
2442
+ #
2443
+ # @return [String] seed used to create this key
2444
+ #
2445
+ # source://rbnacl//lib/rbnacl/signatures/ed25519/signing_key.rb#94
2446
+ def to_bytes; end
2447
+
2448
+ # Returns the value of attribute verify_key.
2449
+ #
2450
+ # source://rbnacl//lib/rbnacl/signatures/ed25519/signing_key.rb#41
2451
+ def verify_key; end
2452
+
2453
+ class << self
2454
+ def crypto_sign_ed25519(*_arg0); end
2455
+ def crypto_sign_ed25519_seed_keypair(*_arg0); end
2456
+
2457
+ # Generate a random SigningKey
2458
+ #
2459
+ # @return [RbNaCl::SigningKey] Freshly-generated random SigningKey
2460
+ #
2461
+ # source://rbnacl//lib/rbnacl/signatures/ed25519/signing_key.rb#46
2462
+ def generate; end
2463
+
2464
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
2465
+ def sign_ed25519(*args); end
2466
+
2467
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
2468
+ def sign_ed25519_seed_keypair(*args); end
2469
+
2470
+ # The size of signatures generated by the SigningKey class
2471
+ #
2472
+ # @return [Integer] The number of bytes in a signature
2473
+ #
2474
+ # source://rbnacl//lib/rbnacl/signatures/ed25519/signing_key.rb#116
2475
+ def signature_bytes; end
2476
+ end
2477
+ end
2478
+
2479
+ # source://rbnacl//lib/rbnacl/sodium.rb#44
2480
+ RbNaCl::Signatures::Ed25519::VERIFYKEYBYTES = T.let(T.unsafe(nil), Integer)
2481
+
2482
+ # The public key counterpart to an Ed25519 SigningKey for producing digital
2483
+ # signatures. Like the name says, VerifyKeys can be used to verify that a
2484
+ # given digital signature is authentic.
2485
+ #
2486
+ # For more information on the Ed25519 digital signature system, please see
2487
+ # the SigningKey documentation.
2488
+ #
2489
+ # source://rbnacl//lib/rbnacl/signatures/ed25519/verify_key.rb#13
2490
+ class RbNaCl::Signatures::Ed25519::VerifyKey
2491
+ include ::Comparable
2492
+ include ::RbNaCl::KeyComparator
2493
+ include ::RbNaCl::Serializable
2494
+ extend ::RbNaCl::Sodium
2495
+ extend ::FFI::Library
2496
+
2497
+ # Create a new VerifyKey object from a public key.
2498
+ #
2499
+ # @param key [String] Ed25519 public key
2500
+ # @return [RbNaCl::VerifyKey] Key which can verify messages
2501
+ #
2502
+ # source://rbnacl//lib/rbnacl/signatures/ed25519/verify_key.rb#31
2503
+ def initialize(key); end
2504
+
2505
+ def crypto_sign_ed25519_open(*_arg0); end
2506
+
2507
+ # The crypto primitive this VerifyKey class uses for signatures
2508
+ #
2509
+ # @return [Symbol] The primitive
2510
+ #
2511
+ # source://rbnacl//lib/rbnacl/signatures/ed25519/verify_key.rb#85
2512
+ def primitive; end
2513
+
2514
+ # The size of signatures verified by the VerifyKey instance
2515
+ #
2516
+ # @return [Integer] The number of bytes in a signature
2517
+ #
2518
+ # source://rbnacl//lib/rbnacl/signatures/ed25519/verify_key.rb#99
2519
+ def signature_bytes; end
2520
+
2521
+ # Return the raw key in byte format
2522
+ #
2523
+ # @return [String] raw key as bytes
2524
+ #
2525
+ # source://rbnacl//lib/rbnacl/signatures/ed25519/verify_key.rb#78
2526
+ def to_bytes; end
2527
+
2528
+ # Verify a signature for a given message
2529
+ #
2530
+ # Raises if the signature is invalid.
2531
+ #
2532
+ # @param signature [String] Alleged signature to be checked
2533
+ # @param message [String] Message to be authenticated
2534
+ # @raise [BadSignatureError] if the signature check fails
2535
+ # @raise [LengthError] if the signature is of the wrong length
2536
+ # @return [Boolean] was the signature authentic?
2537
+ #
2538
+ # source://rbnacl//lib/rbnacl/signatures/ed25519/verify_key.rb#47
2539
+ def verify(signature, message); end
2540
+
2541
+ # Verify a signature for a given signed message
2542
+ #
2543
+ # Raises if the signature is invalid.
2544
+ #
2545
+ # @param signed_message [String] Message combined with signature to be authenticated
2546
+ # @raise [BadSignatureError] if the signature check fails
2547
+ # @return [Boolean] was the signature authentic?
2548
+ #
2549
+ # source://rbnacl//lib/rbnacl/signatures/ed25519/verify_key.rb#62
2550
+ def verify_attached(signed_message); end
2551
+
2552
+ class << self
2553
+ def crypto_sign_ed25519_open(*_arg0); end
2554
+
2555
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
2556
+ def sign_ed25519_open(*args); end
2557
+
2558
+ # The size of signatures verified by the VerifyKey class
2559
+ #
2560
+ # @return [Integer] The number of bytes in a signature
2561
+ #
2562
+ # source://rbnacl//lib/rbnacl/signatures/ed25519/verify_key.rb#92
2563
+ def signature_bytes; end
2564
+ end
2565
+ end
2566
+
2567
+ # source://rbnacl//lib/rbnacl.rb#101
2568
+ RbNaCl::SigningKey = RbNaCl::Signatures::Ed25519::SigningKey
2569
+
2570
+ # The simplest nonce strategy that could possibly work
2571
+ #
2572
+ # This class implements the simplest possible nonce generation strategy to
2573
+ # wrap a RbNaCl::Box or RbNaCl::SecretBox. A 24-byte random nonce is used
2574
+ # for the encryption and is prepended to the message. When it is time to
2575
+ # open the box, the message is split into nonce and ciphertext, and then the
2576
+ # box is decrypted.
2577
+ #
2578
+ # Thanks to the size of the nonce, the chance of a collision is negligible. For
2579
+ # example, after encrypting 2^64 messages, the odds of their having been
2580
+ # repeated nonce is approximately 2^-64. As an additional convenience, the
2581
+ # ciphertexts may be encoded or decoded by any of the encoders implemented in
2582
+ # the library.
2583
+ #
2584
+ # The resulting ciphertexts are 40 bytes longer than the plain text (24 byte
2585
+ # nonce plus a 16 byte authenticator). This might be annoying if you're
2586
+ # encrypting tweets, but for files represents a fairly small overhead.
2587
+ #
2588
+ # Some caveats:
2589
+ #
2590
+ # * If your random source is broken, so is the security of the messages. You
2591
+ # have bigger problems than just this library at that point, but it's worth
2592
+ # saying.
2593
+ # * The confidentiality of your messages is assured with this strategy, but
2594
+ # there is no protection against messages being reordered and replayed by an
2595
+ # active adversary.
2596
+ #
2597
+ # source://rbnacl//lib/rbnacl/simple_box.rb#34
2598
+ class RbNaCl::SimpleBox
2599
+ extend ::Forwardable
2600
+
2601
+ # Create a new SimpleBox
2602
+ #
2603
+ # @param box [SecretBox, Box] the SecretBox or Box to use.
2604
+ # @return [SimpleBox] Ready for use
2605
+ #
2606
+ # source://rbnacl//lib/rbnacl/simple_box.rb#43
2607
+ def initialize(box); end
2608
+
2609
+ # Encrypts the message with a random nonce
2610
+ #
2611
+ # Encrypts the message with a random nonce, then returns the ciphertext with
2612
+ # the nonce prepended. Optionally encodes the message using an encoder.
2613
+ #
2614
+ # @param message [String] The message to encrypt
2615
+ # @return [String] The enciphered message
2616
+ #
2617
+ # source://rbnacl//lib/rbnacl/simple_box.rb#80
2618
+ def box(message); end
2619
+
2620
+ # Decrypts the ciphertext with a random nonce
2621
+ #
2622
+ # Takes a ciphertext, optionally decodes it, then splits the nonce off the
2623
+ # front and uses this to decrypt. Returns the message.
2624
+ #
2625
+ # @param enciphered_message [String] The message to decrypt.
2626
+ # @raise [CryptoError] If the message has been tampered with.
2627
+ # @return [String] The decoded message
2628
+ #
2629
+ # source://rbnacl//lib/rbnacl/simple_box.rb#97
2630
+ def decrypt(enciphered_message); end
2631
+
2632
+ # Encrypts the message with a random nonce
2633
+ #
2634
+ # Encrypts the message with a random nonce, then returns the ciphertext with
2635
+ # the nonce prepended. Optionally encodes the message using an encoder.
2636
+ #
2637
+ # @param message [String] The message to encrypt
2638
+ # @return [String] The enciphered message
2639
+ #
2640
+ # source://rbnacl//lib/rbnacl/simple_box.rb#80
2641
+ def encrypt(message); end
2642
+
2643
+ # source://forwardable/1.3.2/forwardable.rb#229
2644
+ def nonce_bytes(*args, **_arg1, &block); end
2645
+
2646
+ # Decrypts the ciphertext with a random nonce
2647
+ #
2648
+ # Takes a ciphertext, optionally decodes it, then splits the nonce off the
2649
+ # front and uses this to decrypt. Returns the message.
2650
+ #
2651
+ # @param enciphered_message [String] The message to decrypt.
2652
+ # @raise [CryptoError] If the message has been tampered with.
2653
+ # @return [String] The decoded message
2654
+ #
2655
+ # source://rbnacl//lib/rbnacl/simple_box.rb#97
2656
+ def open(enciphered_message); end
2657
+
2658
+ # source://forwardable/1.3.2/forwardable.rb#229
2659
+ def primitive(*args, **_arg1, &block); end
2660
+
2661
+ private
2662
+
2663
+ # source://rbnacl//lib/rbnacl/simple_box.rb#109
2664
+ def extract_nonce(bytes); end
2665
+
2666
+ # source://rbnacl//lib/rbnacl/simple_box.rb#105
2667
+ def generate_nonce; end
2668
+
2669
+ class << self
2670
+ # Use a pair of keys to create a SimpleBox
2671
+ #
2672
+ # This is a convenience method. It takes a pair of keys and instantiates a
2673
+ # Box under the hood, then returns the new SimpleBox.
2674
+ #
2675
+ # @param public_key [PublicKey, String] The RbNaCl public key, as class or string
2676
+ # @param private_key [PrivateKey, String] The RbNaCl private key, as class or string
2677
+ # @return [SimpleBox] Ready for use
2678
+ #
2679
+ # source://rbnacl//lib/rbnacl/simple_box.rb#68
2680
+ def from_keypair(public_key, private_key); end
2681
+
2682
+ # Use a secret key to create a SimpleBox
2683
+ #
2684
+ # This is a convenience method. It takes a secret key and instantiates a
2685
+ # SecretBox under the hood, then returns the new SimpleBox.
2686
+ #
2687
+ # @param secret_key [String] The secret key, 32 bytes long.
2688
+ # @return [SimpleBox] Ready for use
2689
+ #
2690
+ # source://rbnacl//lib/rbnacl/simple_box.rb#55
2691
+ def from_secret_key(secret_key); end
2692
+ end
2693
+ end
2694
+
2695
+ # Provides helpers for defining the libsodium bindings
2696
+ #
2697
+ # source://rbnacl//lib/rbnacl/sodium.rb#8
2698
+ module RbNaCl::Sodium
2699
+ # source://rbnacl//lib/rbnacl/sodium.rb#28
2700
+ def primitive; end
2701
+
2702
+ # source://rbnacl//lib/rbnacl/sodium.rb#32
2703
+ def sodium_constant(constant, name: T.unsafe(nil), fallback: T.unsafe(nil)); end
2704
+
2705
+ # source://rbnacl//lib/rbnacl/sodium.rb#47
2706
+ def sodium_function(name, function, arguments); end
2707
+
2708
+ # source://rbnacl//lib/rbnacl/sodium.rb#57
2709
+ def sodium_function_with_return_code(name, function, arguments); end
2710
+
2711
+ # source://rbnacl//lib/rbnacl/sodium.rb#20
2712
+ def sodium_primitive(primitive = T.unsafe(nil)); end
2713
+
2714
+ # source://rbnacl//lib/rbnacl/sodium.rb#14
2715
+ def sodium_type(type = T.unsafe(nil)); end
2716
+
2717
+ class << self
2718
+ # @private
2719
+ #
2720
+ # source://rbnacl//lib/rbnacl/sodium.rb#9
2721
+ def extended(klass); end
2722
+ end
2723
+ end
2724
+
2725
+ # libsodium version API
2726
+ #
2727
+ # source://rbnacl//lib/rbnacl/sodium/version.rb#9
2728
+ module RbNaCl::Sodium::Version
2729
+ extend ::RbNaCl::Sodium
2730
+ extend ::FFI::Library
2731
+
2732
+ def sodium_version_string(*_arg0); end
2733
+
2734
+ class << self
2735
+ def sodium_version_string(*_arg0); end
2736
+
2737
+ # Determine if a given feature is supported based on Sodium version
2738
+ #
2739
+ # @return [Boolean]
2740
+ #
2741
+ # source://rbnacl//lib/rbnacl/sodium/version.rb#31
2742
+ def supported_version?(version); end
2743
+ end
2744
+ end
2745
+
2746
+ # source://rbnacl//lib/rbnacl/sodium/version.rb#28
2747
+ RbNaCl::Sodium::Version::ARGON2ID_SUPPORTED = T.let(T.unsafe(nil), TrueClass)
2748
+
2749
+ # source://rbnacl//lib/rbnacl/sodium/version.rb#27
2750
+ RbNaCl::Sodium::Version::ARGON2_SUPPORTED = T.let(T.unsafe(nil), TrueClass)
2751
+
2752
+ # source://rbnacl//lib/rbnacl/sodium/version.rb#20
2753
+ RbNaCl::Sodium::Version::INSTALLED_VERSION = T.let(T.unsafe(nil), Array)
2754
+
2755
+ # source://rbnacl//lib/rbnacl/sodium/version.rb#18
2756
+ RbNaCl::Sodium::Version::MAJOR = T.let(T.unsafe(nil), Integer)
2757
+
2758
+ # source://rbnacl//lib/rbnacl/sodium/version.rb#10
2759
+ RbNaCl::Sodium::Version::MINIMUM_LIBSODIUM_VERSION = T.let(T.unsafe(nil), Array)
2760
+
2761
+ # source://rbnacl//lib/rbnacl/sodium/version.rb#11
2762
+ RbNaCl::Sodium::Version::MINIMUM_LIBSODIUM_VERSION_FOR_ARGON2 = T.let(T.unsafe(nil), Array)
2763
+
2764
+ # source://rbnacl//lib/rbnacl/sodium/version.rb#12
2765
+ RbNaCl::Sodium::Version::MINIMUM_LIBSODIUM_VERSION_FOR_ARGON2ID = T.let(T.unsafe(nil), Array)
2766
+
2767
+ # source://rbnacl//lib/rbnacl/sodium/version.rb#18
2768
+ RbNaCl::Sodium::Version::MINOR = T.let(T.unsafe(nil), Integer)
2769
+
2770
+ # source://rbnacl//lib/rbnacl/sodium/version.rb#18
2771
+ RbNaCl::Sodium::Version::PATCH = T.let(T.unsafe(nil), Integer)
2772
+
2773
+ # source://rbnacl//lib/rbnacl/sodium/version.rb#17
2774
+ RbNaCl::Sodium::Version::STRING = T.let(T.unsafe(nil), String)
2775
+
2776
+ # Reference library of test vectors used to verify the software is correct
2777
+ #
2778
+ # source://rbnacl//lib/rbnacl/test_vectors.rb#8
2779
+ RbNaCl::TEST_VECTORS = T.let(T.unsafe(nil), Hash)
2780
+
2781
+ # Various utility functions
2782
+ #
2783
+ # source://rbnacl//lib/rbnacl/util.rb#6
2784
+ module RbNaCl::Util
2785
+ extend ::RbNaCl::Sodium
2786
+ extend ::FFI::Library
2787
+
2788
+ def crypto_verify_16(*_arg0); end
2789
+ def crypto_verify_32(*_arg0); end
2790
+ def crypto_verify_64(*_arg0); end
2791
+
2792
+ private
2793
+
2794
+ # Hex encodes a message
2795
+ #
2796
+ # @param bytes [String] The bytes to encode
2797
+ # @return [String] Tasty, tasty hexadecimal
2798
+ #
2799
+ # source://rbnacl//lib/rbnacl/util.rb#277
2800
+ def bin2hex(bytes); end
2801
+
2802
+ # Check a passed in string, convertion if necessary
2803
+ #
2804
+ # This method will check the key, and raise error
2805
+ # if argument is not a string, and if it's empty string.
2806
+ #
2807
+ # RFC 2104 HMAC
2808
+ # The key for HMAC can be of any length (keys longer than B bytes are
2809
+ # first hashed using H). However, less than L bytes is strongly
2810
+ # discouraged as it would decrease the security strength of the
2811
+ # function. Keys longer than L bytes are acceptable but the extra
2812
+ # length would not significantly increase the function strength. (A
2813
+ # longer key may be advisable if the randomness of the key is
2814
+ # considered weak.)
2815
+ #
2816
+ # see https://tools.ietf.org/html/rfc2104#section-3
2817
+ #
2818
+ # @param string [#to_str] The input string
2819
+ # @raise [ArgumentError] If we cannot convert to a string with #to_str
2820
+ # @raise [RbNaCl::LengthError] If the string is empty
2821
+ #
2822
+ # source://rbnacl//lib/rbnacl/util.rb#140
2823
+ def check_hmac_key(string, _description); end
2824
+
2825
+ # Check the length of the passed in string
2826
+ #
2827
+ # In several places through the codebase we have to be VERY strict with
2828
+ # what length of string we accept. This method supports that.
2829
+ #
2830
+ # @param string [String] The string to compare
2831
+ # @param length [Integer] The desired length
2832
+ # @param description [String] Description of the string (used in the error)
2833
+ # @raise [RbNaCl::LengthError] If the string is not the right length
2834
+ #
2835
+ # source://rbnacl//lib/rbnacl/util.rb#83
2836
+ def check_length(string, length, description); end
2837
+
2838
+ # Check a passed in string, converting the argument if necessary
2839
+ #
2840
+ # In several places through the codebase we have to be VERY strict with
2841
+ # the strings we accept. This method supports that.
2842
+ #
2843
+ # @param string [#to_str] The input string
2844
+ # @param length [Integer] The only acceptable length of the string
2845
+ # @param description [String] Description of the string (used in the error)
2846
+ # @raise [ArgumentError] If we cannot convert to a string with #to_str
2847
+ # @raise [RbNaCl::LengthError] If the string is not the right length
2848
+ #
2849
+ # source://rbnacl//lib/rbnacl/util.rb#111
2850
+ def check_string(string, length, description); end
2851
+
2852
+ # Check a passed string is it valid
2853
+ #
2854
+ # Raise an error if passed argument is invalid
2855
+ #
2856
+ # @param string [#to_str] The input string
2857
+ # @raise [TypeError] If string cannot convert to a string with #to_str
2858
+ # @raise [EncodingError] If string have wrong encoding
2859
+ #
2860
+ # source://rbnacl//lib/rbnacl/util.rb#162
2861
+ def check_string_validation(string); end
2862
+
2863
+ # Hex decodes a message
2864
+ #
2865
+ # @param hex [String] hex to decode.
2866
+ # @return [String] crisp and clean bytes
2867
+ #
2868
+ # source://rbnacl//lib/rbnacl/util.rb#286
2869
+ def hex2bin(hex); end
2870
+
2871
+ # Prepends a message with zeros
2872
+ #
2873
+ # Many functions require a string with some zeros prepended.
2874
+ #
2875
+ # @param n [Integer] The number of zeros to prepend
2876
+ # @param message [String] The string to be prepended
2877
+ # @return [String] a bunch of zeros
2878
+ #
2879
+ # source://rbnacl//lib/rbnacl/util.rb#37
2880
+ def prepend_zeros(n, message); end
2881
+
2882
+ # Remove zeros from the start of a message
2883
+ #
2884
+ # Many functions require a string with some zeros prepended, then need them removing after.
2885
+ # Note: this modifies the passed in string
2886
+ #
2887
+ # @param n [Integer] The number of zeros to remove
2888
+ # @param message [String] The string to be slice
2889
+ # @return [String] less a bunch of zeros
2890
+ #
2891
+ # source://rbnacl//lib/rbnacl/util.rb#50
2892
+ def remove_zeros(n, message); end
2893
+
2894
+ # Compare two 16 byte strings in constant time
2895
+ #
2896
+ # This should help to avoid timing attacks for string comparisons in your
2897
+ # application. Note that many of the functions (such as OneTime#verify)
2898
+ # use this method under the hood already.
2899
+ #
2900
+ # @param one [String] String #1
2901
+ # @param two [String] String #2
2902
+ # @return [Boolean] Well, are they equal?
2903
+ #
2904
+ # source://rbnacl//lib/rbnacl/util.rb#248
2905
+ def verify16(one, two); end
2906
+
2907
+ # Compare two 16 byte strings in constant time
2908
+ #
2909
+ # This should help to avoid timing attacks for string comparisons in your
2910
+ # application. Note that many of the functions (such as OneTime#verify)
2911
+ # use this method under the hood already.
2912
+ #
2913
+ # @param one [String] String #1
2914
+ # @param two [String] String #2
2915
+ # @raise [ArgumentError] If the strings are not equal in length
2916
+ # @return [Boolean] Well, are they equal?
2917
+ #
2918
+ # source://rbnacl//lib/rbnacl/util.rb#266
2919
+ def verify16!(one, two); end
2920
+
2921
+ # Compare two 32 byte strings in constant time
2922
+ #
2923
+ # This should help to avoid timing attacks for string comparisons in your
2924
+ # application. Note that many of the functions (such as HmacSha256#verify)
2925
+ # use this method under the hood already.
2926
+ #
2927
+ # @param one [String] String #1
2928
+ # @param two [String] String #2
2929
+ # @return [Boolean] Well, are they equal?
2930
+ #
2931
+ # source://rbnacl//lib/rbnacl/util.rb#214
2932
+ def verify32(one, two); end
2933
+
2934
+ # Compare two 32 byte strings in constant time
2935
+ #
2936
+ # This should help to avoid timing attacks for string comparisons in your
2937
+ # application. Note that many of the functions (such as HmacSha256#verify)
2938
+ # use this method under the hood already.
2939
+ #
2940
+ # @param one [String] String #1
2941
+ # @param two [String] String #2
2942
+ # @raise [ArgumentError] If the strings are not equal in length
2943
+ # @return [Boolean] Well, are they equal?
2944
+ #
2945
+ # source://rbnacl//lib/rbnacl/util.rb#232
2946
+ def verify32!(one, two); end
2947
+
2948
+ # Compare two 64 byte strings in constant time
2949
+ #
2950
+ # This should help to avoid timing attacks for string comparisons in your
2951
+ # application. Note that many of the functions (such as HmacSha512#verify)
2952
+ # use this method under the hood already.
2953
+ #
2954
+ # @param one [String] String #1
2955
+ # @param two [String] String #2
2956
+ # @return [Boolean] Well, are they equal?
2957
+ #
2958
+ # source://rbnacl//lib/rbnacl/util.rb#180
2959
+ def verify64(one, two); end
2960
+
2961
+ # Compare two 64 byte strings in constant time
2962
+ #
2963
+ # This should help to avoid timing attacks for string comparisons in your
2964
+ # application. Note that many of the functions (such as HmacSha512#verify)
2965
+ # use this method under the hood already.
2966
+ #
2967
+ # @param one [String] String #1
2968
+ # @param two [String] String #2
2969
+ # @raise [ArgumentError] If the strings are not equal in length
2970
+ # @return [Boolean] Well, are they equal?
2971
+ #
2972
+ # source://rbnacl//lib/rbnacl/util.rb#198
2973
+ def verify64!(one, two); end
2974
+
2975
+ # Pad a string out to n characters with zeros
2976
+ #
2977
+ # @param n [Integer] The length of the resulting string
2978
+ # @param message [String] the message to be padded
2979
+ # @raise [RbNaCl::LengthError] If the string is too long
2980
+ # @return [String] A string, n bytes long
2981
+ #
2982
+ # source://rbnacl//lib/rbnacl/util.rb#62
2983
+ def zero_pad(n, message); end
2984
+
2985
+ # Returns a string of n zeros
2986
+ #
2987
+ # Lots of the functions require us to create strings to pass into functions of a specified size.
2988
+ #
2989
+ # @param n [Integer] the size of the string to make
2990
+ # @return [String] A nice collection of zeros
2991
+ #
2992
+ # source://rbnacl//lib/rbnacl/util.rb#22
2993
+ def zeros(n = T.unsafe(nil)); end
2994
+
2995
+ class << self
2996
+ # Hex encodes a message
2997
+ #
2998
+ # @param bytes [String] The bytes to encode
2999
+ # @return [String] Tasty, tasty hexadecimal
3000
+ #
3001
+ # source://rbnacl//lib/rbnacl/util.rb#277
3002
+ def bin2hex(bytes); end
3003
+
3004
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
3005
+ def c_verify16(*args); end
3006
+
3007
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
3008
+ def c_verify32(*args); end
3009
+
3010
+ # source://rbnacl//lib/rbnacl/sodium.rb#50
3011
+ def c_verify64(*args); end
3012
+
3013
+ # Check a passed in string, convertion if necessary
3014
+ #
3015
+ # This method will check the key, and raise error
3016
+ # if argument is not a string, and if it's empty string.
3017
+ #
3018
+ # RFC 2104 HMAC
3019
+ # The key for HMAC can be of any length (keys longer than B bytes are
3020
+ # first hashed using H). However, less than L bytes is strongly
3021
+ # discouraged as it would decrease the security strength of the
3022
+ # function. Keys longer than L bytes are acceptable but the extra
3023
+ # length would not significantly increase the function strength. (A
3024
+ # longer key may be advisable if the randomness of the key is
3025
+ # considered weak.)
3026
+ #
3027
+ # see https://tools.ietf.org/html/rfc2104#section-3
3028
+ #
3029
+ # @param string [#to_str] The input string
3030
+ # @raise [ArgumentError] If we cannot convert to a string with #to_str
3031
+ # @raise [RbNaCl::LengthError] If the string is empty
3032
+ #
3033
+ # source://rbnacl//lib/rbnacl/util.rb#140
3034
+ def check_hmac_key(string, _description); end
3035
+
3036
+ # Check the length of the passed in string
3037
+ #
3038
+ # In several places through the codebase we have to be VERY strict with
3039
+ # what length of string we accept. This method supports that.
3040
+ #
3041
+ # @param string [String] The string to compare
3042
+ # @param length [Integer] The desired length
3043
+ # @param description [String] Description of the string (used in the error)
3044
+ # @raise [RbNaCl::LengthError] If the string is not the right length
3045
+ #
3046
+ # source://rbnacl//lib/rbnacl/util.rb#83
3047
+ def check_length(string, length, description); end
3048
+
3049
+ # Check a passed in string, converting the argument if necessary
3050
+ #
3051
+ # In several places through the codebase we have to be VERY strict with
3052
+ # the strings we accept. This method supports that.
3053
+ #
3054
+ # @param string [#to_str] The input string
3055
+ # @param length [Integer] The only acceptable length of the string
3056
+ # @param description [String] Description of the string (used in the error)
3057
+ # @raise [ArgumentError] If we cannot convert to a string with #to_str
3058
+ # @raise [RbNaCl::LengthError] If the string is not the right length
3059
+ #
3060
+ # source://rbnacl//lib/rbnacl/util.rb#111
3061
+ def check_string(string, length, description); end
3062
+
3063
+ # Check a passed string is it valid
3064
+ #
3065
+ # Raise an error if passed argument is invalid
3066
+ #
3067
+ # @param string [#to_str] The input string
3068
+ # @raise [TypeError] If string cannot convert to a string with #to_str
3069
+ # @raise [EncodingError] If string have wrong encoding
3070
+ #
3071
+ # source://rbnacl//lib/rbnacl/util.rb#162
3072
+ def check_string_validation(string); end
3073
+
3074
+ def crypto_verify_16(*_arg0); end
3075
+ def crypto_verify_32(*_arg0); end
3076
+ def crypto_verify_64(*_arg0); end
3077
+
3078
+ # Hex decodes a message
3079
+ #
3080
+ # @param hex [String] hex to decode.
3081
+ # @return [String] crisp and clean bytes
3082
+ #
3083
+ # source://rbnacl//lib/rbnacl/util.rb#286
3084
+ def hex2bin(hex); end
3085
+
3086
+ # Prepends a message with zeros
3087
+ #
3088
+ # Many functions require a string with some zeros prepended.
3089
+ #
3090
+ # @param n [Integer] The number of zeros to prepend
3091
+ # @param message [String] The string to be prepended
3092
+ # @return [String] a bunch of zeros
3093
+ #
3094
+ # source://rbnacl//lib/rbnacl/util.rb#37
3095
+ def prepend_zeros(n, message); end
3096
+
3097
+ # Remove zeros from the start of a message
3098
+ #
3099
+ # Many functions require a string with some zeros prepended, then need them removing after.
3100
+ # Note: this modifies the passed in string
3101
+ #
3102
+ # @param n [Integer] The number of zeros to remove
3103
+ # @param message [String] The string to be slice
3104
+ # @return [String] less a bunch of zeros
3105
+ #
3106
+ # source://rbnacl//lib/rbnacl/util.rb#50
3107
+ def remove_zeros(n, message); end
3108
+
3109
+ # Compare two 16 byte strings in constant time
3110
+ #
3111
+ # This should help to avoid timing attacks for string comparisons in your
3112
+ # application. Note that many of the functions (such as OneTime#verify)
3113
+ # use this method under the hood already.
3114
+ #
3115
+ # @param one [String] String #1
3116
+ # @param two [String] String #2
3117
+ # @return [Boolean] Well, are they equal?
3118
+ #
3119
+ # source://rbnacl//lib/rbnacl/util.rb#248
3120
+ def verify16(one, two); end
3121
+
3122
+ # Compare two 16 byte strings in constant time
3123
+ #
3124
+ # This should help to avoid timing attacks for string comparisons in your
3125
+ # application. Note that many of the functions (such as OneTime#verify)
3126
+ # use this method under the hood already.
3127
+ #
3128
+ # @param one [String] String #1
3129
+ # @param two [String] String #2
3130
+ # @raise [ArgumentError] If the strings are not equal in length
3131
+ # @return [Boolean] Well, are they equal?
3132
+ #
3133
+ # source://rbnacl//lib/rbnacl/util.rb#266
3134
+ def verify16!(one, two); end
3135
+
3136
+ # Compare two 32 byte strings in constant time
3137
+ #
3138
+ # This should help to avoid timing attacks for string comparisons in your
3139
+ # application. Note that many of the functions (such as HmacSha256#verify)
3140
+ # use this method under the hood already.
3141
+ #
3142
+ # @param one [String] String #1
3143
+ # @param two [String] String #2
3144
+ # @return [Boolean] Well, are they equal?
3145
+ #
3146
+ # source://rbnacl//lib/rbnacl/util.rb#214
3147
+ def verify32(one, two); end
3148
+
3149
+ # Compare two 32 byte strings in constant time
3150
+ #
3151
+ # This should help to avoid timing attacks for string comparisons in your
3152
+ # application. Note that many of the functions (such as HmacSha256#verify)
3153
+ # use this method under the hood already.
3154
+ #
3155
+ # @param one [String] String #1
3156
+ # @param two [String] String #2
3157
+ # @raise [ArgumentError] If the strings are not equal in length
3158
+ # @return [Boolean] Well, are they equal?
3159
+ #
3160
+ # source://rbnacl//lib/rbnacl/util.rb#232
3161
+ def verify32!(one, two); end
3162
+
3163
+ # Compare two 64 byte strings in constant time
3164
+ #
3165
+ # This should help to avoid timing attacks for string comparisons in your
3166
+ # application. Note that many of the functions (such as HmacSha512#verify)
3167
+ # use this method under the hood already.
3168
+ #
3169
+ # @param one [String] String #1
3170
+ # @param two [String] String #2
3171
+ # @return [Boolean] Well, are they equal?
3172
+ #
3173
+ # source://rbnacl//lib/rbnacl/util.rb#180
3174
+ def verify64(one, two); end
3175
+
3176
+ # Compare two 64 byte strings in constant time
3177
+ #
3178
+ # This should help to avoid timing attacks for string comparisons in your
3179
+ # application. Note that many of the functions (such as HmacSha512#verify)
3180
+ # use this method under the hood already.
3181
+ #
3182
+ # @param one [String] String #1
3183
+ # @param two [String] String #2
3184
+ # @raise [ArgumentError] If the strings are not equal in length
3185
+ # @return [Boolean] Well, are they equal?
3186
+ #
3187
+ # source://rbnacl//lib/rbnacl/util.rb#198
3188
+ def verify64!(one, two); end
3189
+
3190
+ # Pad a string out to n characters with zeros
3191
+ #
3192
+ # @param n [Integer] The length of the resulting string
3193
+ # @param message [String] the message to be padded
3194
+ # @raise [RbNaCl::LengthError] If the string is too long
3195
+ # @return [String] A string, n bytes long
3196
+ #
3197
+ # source://rbnacl//lib/rbnacl/util.rb#62
3198
+ def zero_pad(n, message); end
3199
+
3200
+ # Returns a string of n zeros
3201
+ #
3202
+ # Lots of the functions require us to create strings to pass into functions of a specified size.
3203
+ #
3204
+ # @param n [Integer] the size of the string to make
3205
+ # @return [String] A nice collection of zeros
3206
+ #
3207
+ # source://rbnacl//lib/rbnacl/util.rb#22
3208
+ def zeros(n = T.unsafe(nil)); end
3209
+ end
3210
+ end
3211
+
3212
+ # The library's version
3213
+ #
3214
+ # source://rbnacl//lib/rbnacl/version.rb#7
3215
+ RbNaCl::VERSION = T.let(T.unsafe(nil), String)
3216
+
3217
+ # source://rbnacl//lib/rbnacl.rb#102
3218
+ RbNaCl::VerifyKey = RbNaCl::Signatures::Ed25519::VerifyKey