prevoty 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +19 -0
  3. data/Gemfile +2 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +38 -0
  6. data/Rakefile +8 -0
  7. data/lib/prevoty.rb +31 -0
  8. data/lib/prevoty/client.rb +341 -0
  9. data/lib/prevoty/crypto.rb +33 -0
  10. data/lib/prevoty/exceptions/account_quota_exceeded.rb +4 -0
  11. data/lib/prevoty/exceptions/bad_api_key.rb +4 -0
  12. data/lib/prevoty/exceptions/bad_input_parameter.rb +4 -0
  13. data/lib/prevoty/exceptions/internal_error.rb +4 -0
  14. data/lib/prevoty/hash.rb +12 -0
  15. data/lib/prevoty/pattern.rb +18 -0
  16. data/lib/prevoty/responses/api_key_info.rb +12 -0
  17. data/lib/prevoty/responses/decrypt_result.rb +9 -0
  18. data/lib/prevoty/responses/delete_token.rb +10 -0
  19. data/lib/prevoty/responses/ecdsa_private_key.rb +19 -0
  20. data/lib/prevoty/responses/ecdsa_public_key.rb +19 -0
  21. data/lib/prevoty/responses/ecdsa_signature.rb +17 -0
  22. data/lib/prevoty/responses/encrypt_result.rb +25 -0
  23. data/lib/prevoty/responses/filter_content.rb +11 -0
  24. data/lib/prevoty/responses/filter_statistics.rb +28 -0
  25. data/lib/prevoty/responses/generate_token.rb +10 -0
  26. data/lib/prevoty/responses/hash_result.rb +9 -0
  27. data/lib/prevoty/responses/input_validation.rb +10 -0
  28. data/lib/prevoty/responses/query_analysis.rb +87 -0
  29. data/lib/prevoty/responses/rsa_private_key.rb +22 -0
  30. data/lib/prevoty/responses/rsa_public_key.rb +17 -0
  31. data/lib/prevoty/responses/rsa_signature.rb +15 -0
  32. data/lib/prevoty/responses/signature_verify.rb +13 -0
  33. data/lib/prevoty/responses/validate_token.rb +10 -0
  34. data/lib/prevoty/version.rb +3 -0
  35. data/prevoty.gemspec +25 -0
  36. data/test/specs/client_spec.rb +563 -0
  37. data/test/test_helper.rb +10 -0
  38. metadata +124 -0
@@ -0,0 +1,13 @@
1
+ module Prevoty
2
+ class SignatureVerify
3
+ def initialize(data)
4
+ @is_valid = data["is_valid"]
5
+ end
6
+
7
+ def to_json(*a)
8
+ {
9
+ is_valid: @is_valid
10
+ }.to_json
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,10 @@
1
+ module Prevoty
2
+ class ValidateToken
3
+ attr_accessor :valid, :message
4
+
5
+ def initialize(data)
6
+ @valid = data["valid"]
7
+ @message = data["message"]
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,3 @@
1
+ module Prevoty
2
+ VERSION = "1.0.0"
3
+ end
data/prevoty.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'prevoty/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "prevoty"
8
+ spec.version = Prevoty::VERSION
9
+ spec.authors = ["Joe Rozner"]
10
+ spec.email = ["joe@prevoty.com"]
11
+ spec.summary = %q{Pevoty API client for Ruby}
12
+ spec.description = %q{Implementation of the Prevoty API}
13
+ spec.homepage = "https://www.prevoty.com"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "httparty", "~> 0.13"
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.5"
24
+ spec.add_development_dependency "rake", "~> 10.0"
25
+ end
@@ -0,0 +1,563 @@
1
+ require File.expand_path('../../test_helper', __FILE__)
2
+
3
+ describe Prevoty::Client do
4
+ it 'should throw BadInputParameter for verify_api_key without an api key' do
5
+ client = Prevoty::Client.new(nil)
6
+ assert_raises Prevoty::BadInputParameter do
7
+ client.verify_api_key
8
+ end
9
+ end
10
+
11
+ it 'should throw BadAPIKey for verify_api_key with an invalid api key' do
12
+ client = Prevoty::Client.new('badapikey')
13
+ assert_raises Prevoty::BadAPIKey do
14
+ client.verify_api_key
15
+ end
16
+ end
17
+
18
+ it 'should return true for verify_api_key with a valid api key' do
19
+ client = Prevoty::Client.new(API_KEY)
20
+ response = client.verify_api_key
21
+ response.must_equal true
22
+ end
23
+
24
+ it 'should throw BadInputParameter for api_key_info without an api key' do
25
+ client = Prevoty::Client.new('')
26
+ assert_raises Prevoty::BadInputParameter do
27
+ client.api_key_info
28
+ end
29
+ end
30
+
31
+ it 'should throw BadAPIKey for api_key_info with an invalid api key' do
32
+ client = Prevoty::Client.new('badapikey')
33
+ assert_raises Prevoty::BadAPIKey do
34
+ client.api_key_info
35
+ end
36
+ end
37
+
38
+ it 'should return an APIKeyInfo for api_key_info with a valid api key' do
39
+ client = Prevoty::Client.new(API_KEY)
40
+ response = client.api_key_info
41
+ response.class.must_equal Prevoty::APIKeyInfo
42
+ end
43
+
44
+ it 'should throw BadInputParameter for verify_content_configuration without an api key' do
45
+ client = Prevoty::Client.new('')
46
+ assert_raises Prevoty::BadInputParameter do
47
+ client.verify_content_configuration('')
48
+ end
49
+ end
50
+
51
+ it 'should throw BadAPIKey for verify_content_configuration with an invalid api key' do
52
+ client = Prevoty::Client.new('badapikey')
53
+ assert_raises Prevoty::BadAPIKey do
54
+ client.verify_content_configuration('')
55
+ end
56
+ end
57
+
58
+ it 'should throw BadInputParameter for verify_content_configuration with an invalid api key' do
59
+ client = Prevoty::Client.new(API_KEY)
60
+ assert_raises Prevoty::BadInputParameter do
61
+ client.verify_content_configuration('badkey')
62
+ end
63
+ end
64
+
65
+ it 'should return true for verify_content_configuration with a valid api key' do
66
+ client = Prevoty::Client.new(API_KEY)
67
+ response = client.verify_content_configuration(CONTENT_KEY)
68
+ response.must_equal true
69
+ end
70
+
71
+ it 'should throw BadInputParameter for filter_content without an api key' do
72
+ client = Prevoty::Client.new('')
73
+ assert_raises Prevoty::BadInputParameter do
74
+ client.filter_content(CONTENT_PAYLOAD, '')
75
+ end
76
+ end
77
+
78
+ it 'should throw BadAPIKey for filter_content with an invalid api key' do
79
+ client = Prevoty::Client.new('badapikey')
80
+ assert_raises Prevoty::BadAPIKey do
81
+ client.filter_content(CONTENT_PAYLOAD, '')
82
+ end
83
+ end
84
+
85
+ it 'should throw BadInputParameter for filter_content with an invalid content key' do
86
+ client = Prevoty::Client.new(API_KEY)
87
+ assert_raises Prevoty::BadInputParameter do
88
+ client.filter_content(CONTENT_PAYLOAD, 'badkey')
89
+ end
90
+ end
91
+
92
+ it 'should return a valid response for filter_content with a valid api key and content_key' do
93
+ client = Prevoty::Client.new(API_KEY)
94
+ response = client.filter_content(CONTENT_PAYLOAD, CONTENT_KEY)
95
+ response.class.must_equal Prevoty::FilterContent
96
+ response.statistics.class.must_equal Prevoty::FilterStatistics
97
+ end
98
+
99
+ it 'should throw BadInputParameter for bulk_filter without an api key' do
100
+ client = Prevoty::Client.new('')
101
+ assert_raises Prevoty::BadInputParameter do
102
+ client.bulk_filter(CONTENT_PAYLOAD, '')
103
+ end
104
+ end
105
+
106
+ it 'should throw BadAPIKey for bulk_filter with an invalid api key' do
107
+ client = Prevoty::Client.new('badapikey')
108
+ assert_raises Prevoty::BadAPIKey do
109
+ client.bulk_filter(CONTENT_PAYLOAD, '')
110
+ end
111
+ end
112
+
113
+ it 'should throw BadInputParameter for bulk_filter with an invalid content key' do
114
+ client = Prevoty::Client.new(API_KEY)
115
+ assert_raises Prevoty::BadInputParameter do
116
+ client.bulk_filter(CONTENT_PAYLOAD, 'badkey')
117
+ end
118
+ end
119
+
120
+ it 'should return a valid response for bulk_filter with a valid api key and content_key' do
121
+ client = Prevoty::Client.new(API_KEY)
122
+ response = client.bulk_filter(CONTENT_PAYLOAD, CONTENT_KEY)
123
+ response.class.must_equal Prevoty::FilterContent
124
+ response.statistics.class.must_equal Prevoty::FilterStatistics
125
+ end
126
+
127
+ it 'should throw BadInputParameter for generate_timed_token without an api key' do
128
+ client = Prevoty::Client.new('')
129
+ assert_raises Prevoty::BadInputParameter do
130
+ client.generate_timed_token('id', 'action', 3600)
131
+ end
132
+ end
133
+
134
+ it 'should throw BadAPIKey for generate_timed_token with an invalid api key' do
135
+ client = Prevoty::Client.new('badapikey')
136
+ assert_raises Prevoty::BadAPIKey do
137
+ client.generate_timed_token('id', 'action', 3600)
138
+ end
139
+ end
140
+
141
+ it 'should throw BadInputParameter for validate_timed_token without an api key' do
142
+ client = Prevoty::Client.new('')
143
+ assert_raises Prevoty::BadInputParameter do
144
+ client.validate_timed_token('id', 'action', 3600)
145
+ end
146
+ end
147
+
148
+ it 'should throw BadAPIKey for validate_timed_token with an invalid api key' do
149
+ client = Prevoty::Client.new('badapikey')
150
+ assert_raises Prevoty::BadAPIKey do
151
+ client.validate_timed_token('id', 'action', 3600)
152
+ end
153
+ end
154
+
155
+ it 'should throw BadInputParameter for delete_timed_token without an api key' do
156
+ client = Prevoty::Client.new('')
157
+ assert_raises Prevoty::BadInputParameter do
158
+ client.delete_timed_token('id', 'action', 3600)
159
+ end
160
+ end
161
+
162
+ it 'should throw BadAPIKey for delete_timed_token with an invalid api key' do
163
+ client = Prevoty::Client.new('badapikey')
164
+ assert_raises Prevoty::BadAPIKey do
165
+ client.delete_timed_token('id', 'action', 3600)
166
+ end
167
+ end
168
+
169
+ it 'should generate and validate a timed token' do
170
+ client = Prevoty::Client.new(API_KEY)
171
+ response = client.generate_timed_token('id', 'action', 3600)
172
+ response.class.must_equal Prevoty::GenerateToken
173
+ response = client.validate_timed_token('id', 'action', response.token)
174
+ response.class.must_equal Prevoty::ValidateToken
175
+ end
176
+
177
+ it 'should generate and delete a timed token' do
178
+ client = Prevoty::Client.new(API_KEY)
179
+ response = client.generate_timed_token('id', 'action', 3600)
180
+ response.class.must_equal Prevoty::GenerateToken
181
+ response = client.delete_timed_token('id', 'action', response.token)
182
+ response.class.must_equal Prevoty::DeleteToken
183
+ end
184
+
185
+
186
+
187
+ it 'should throw BadInputParameter for generate_persisted_token without an api key' do
188
+ client = Prevoty::Client.new('')
189
+ assert_raises Prevoty::BadInputParameter do
190
+ client.generate_persisted_token('id', 'action')
191
+ end
192
+ end
193
+
194
+ it 'should throw BadAPIKey for generate_persisted_token with an invalid api key' do
195
+ client = Prevoty::Client.new('badapikey')
196
+ assert_raises Prevoty::BadAPIKey do
197
+ client.generate_persisted_token('id', 'action')
198
+ end
199
+ end
200
+
201
+ it 'should throw BadInputParameter for validate_persisted_token without an api key' do
202
+ client = Prevoty::Client.new('')
203
+ assert_raises Prevoty::BadInputParameter do
204
+ client.validate_persisted_token('id', 'action', 'token')
205
+ end
206
+ end
207
+
208
+ it 'should throw BadAPIKey for validate_persisted_token with an invalid api key' do
209
+ client = Prevoty::Client.new('badapikey')
210
+ assert_raises Prevoty::BadAPIKey do
211
+ client.validate_persisted_token('id', 'action', 'token')
212
+ end
213
+ end
214
+
215
+ it 'should throw BadInputParameter for delete_persisted_token without an api key' do
216
+ client = Prevoty::Client.new('')
217
+ assert_raises Prevoty::BadInputParameter do
218
+ client.delete_persisted_token('id', 'action', 'token')
219
+ end
220
+ end
221
+
222
+ it 'should throw BadAPIKey for delete_persisted_token with an invalid api key' do
223
+ client = Prevoty::Client.new('badapikey')
224
+ assert_raises Prevoty::BadAPIKey do
225
+ client.delete_persisted_token('id', 'action', 'token')
226
+ end
227
+ end
228
+
229
+ it 'should generate and validate a persisted token' do
230
+ client = Prevoty::Client.new(API_KEY)
231
+ response = client.generate_persisted_token('id', 'action')
232
+ response.class.must_equal Prevoty::GenerateToken
233
+ response = client.validate_persisted_token('id', 'action', response.token)
234
+ response.class.must_equal Prevoty::ValidateToken
235
+ end
236
+
237
+ it 'should generate and delete a persisted token' do
238
+ client = Prevoty::Client.new(API_KEY)
239
+ response = client.generate_persisted_token('id', 'action')
240
+ response.class.must_equal Prevoty::GenerateToken
241
+ response = client.delete_persisted_token('id', 'action', response.token)
242
+ response.class.must_equal Prevoty::DeleteToken
243
+ end
244
+
245
+ it 'should throw BadInputParameter for analyze_query without an api key' do
246
+ client = Prevoty::Client.new('')
247
+ assert_raises Prevoty::BadInputParameter do
248
+ client.analyze_query(CONTENT_PAYLOAD, '')
249
+ end
250
+ end
251
+
252
+ it 'should throw BadAPIKey for analyze_query with an invalid api key' do
253
+ client = Prevoty::Client.new('badapikey')
254
+ assert_raises Prevoty::BadAPIKey do
255
+ client.analyze_query(CONTENT_PAYLOAD, '')
256
+ end
257
+ end
258
+
259
+ it 'should throw BadInputParameter for analyze_query with an invalid query key' do
260
+ client = Prevoty::Client.new(API_KEY)
261
+ assert_raises Prevoty::BadInputParameter do
262
+ client.analyze_query(CONTENT_PAYLOAD, 'badkey')
263
+ end
264
+ end
265
+
266
+ it 'should return a valid response for analyze_query with a valid api key and query_key' do
267
+ client = Prevoty::Client.new(API_KEY)
268
+ response = client.analyze_query(QUERY_PAYLOAD, QUERY_KEY)
269
+ response.class.must_equal Prevoty::QueryAnalysis
270
+ end
271
+
272
+
273
+ it 'should throw BadInputParameter for validate_pattern without an api key' do
274
+ client = Prevoty::Client.new('')
275
+ assert_raises Prevoty::BadInputParameter do
276
+ client.validate_pattern(Prevoty::Pattern::NUMERIC, '')
277
+ end
278
+ end
279
+
280
+ it 'should throw BadAPIKey for validate_pattern with an invalid api key' do
281
+ client = Prevoty::Client.new('badapikey')
282
+ assert_raises Prevoty::BadAPIKey do
283
+ client.validate_pattern(Prevoty::Pattern::NUMERIC, '')
284
+ end
285
+ end
286
+
287
+ it 'should throw BadInputParameter for validate_pattern with an invalid pattern' do
288
+ client = Prevoty::Client.new(API_KEY)
289
+ response = client.validate_pattern('badpattern', '12345')
290
+ response.matched.must_equal false
291
+ end
292
+
293
+ it 'should return a valid response for validate_pattern' do
294
+ client = Prevoty::Client.new(API_KEY)
295
+ response = client.validate_pattern(Prevoty::Pattern::NUMERIC, '12345')
296
+ response.class.must_equal Prevoty::InputValidation
297
+ response.matched.must_equal true
298
+ end
299
+
300
+ it 'should throw BadInputParameter for validate_string without an api key' do
301
+ client = Prevoty::Client.new('')
302
+ assert_raises Prevoty::BadInputParameter do
303
+ client.validate_string('test', 0, 5, 4)
304
+ end
305
+ end
306
+
307
+ it 'should throw BadAPIKey for validate_string with an invalid api key' do
308
+ client = Prevoty::Client.new('badapikey')
309
+ assert_raises Prevoty::BadAPIKey do
310
+ client.validate_string('test', 0, 5, 4)
311
+ end
312
+ end
313
+
314
+ it 'should return a valid response for validate_string' do
315
+ client = Prevoty::Client.new(API_KEY)
316
+ response = client.validate_string('test', 0, 5, 4)
317
+ response.class.must_equal Prevoty::InputValidation
318
+ response.matched.must_equal true
319
+ end
320
+
321
+
322
+ it 'should throw BadInputParameter for hash without an api key' do
323
+ client = Prevoty::Client.new('')
324
+ assert_raises Prevoty::BadInputParameter do
325
+ client.hash('test', Prevoty::Hash::MD5)
326
+ end
327
+ end
328
+
329
+ it 'should throw BadAPIKey for hash with an invalid api key' do
330
+ client = Prevoty::Client.new('badapikey')
331
+ assert_raises Prevoty::BadAPIKey do
332
+ client.hash('test', Prevoty::Hash::MD5)
333
+ end
334
+ end
335
+
336
+ it 'should return a valid response for hash with a valid api key and hash' do
337
+ client = Prevoty::Client.new(API_KEY)
338
+ response = client.hash('test', Prevoty::Hash::MD5)
339
+ response.class.must_equal Prevoty::HashResult
340
+ response.hash.must_equal Digest::MD5.hexdigest('test')
341
+ end
342
+
343
+ it 'should throw BadInputParameter for encrypt without an api key' do
344
+ client = Prevoty::Client.new('')
345
+ assert_raises Prevoty::BadInputParameter do
346
+ client.encrypt('test', Prevoty::Crypto::Algorithms::AES, Prevoty::Crypto::Modes::CBC)
347
+ end
348
+ end
349
+
350
+ it 'should throw BadAPIKey for encrypt with an invalid api key' do
351
+ client = Prevoty::Client.new('badapikey')
352
+ assert_raises Prevoty::BadAPIKey do
353
+ client.encrypt('test', Prevoty::Crypto::Algorithms::AES, Prevoty::Crypto::Modes::CBC)
354
+ end
355
+ end
356
+
357
+ it 'should return a valid response for encrypt with a valid api key' do
358
+ client = Prevoty::Client.new(API_KEY)
359
+ response = client.encrypt('testtesttesttesttesttesttesttest', Prevoty::Crypto::Algorithms::AES, Prevoty::Crypto::Modes::CBC)
360
+ response.class.must_equal Prevoty::EncryptResult
361
+ end
362
+
363
+ it 'should throw BadInputParameter for decrypt without an api key' do
364
+ client = Prevoty::Client.new('')
365
+ assert_raises Prevoty::BadInputParameter do
366
+ client.decrypt(Prevoty::EncryptResult.new({}))
367
+ end
368
+ end
369
+
370
+ it 'should throw BadAPIKey for decrypt with an invalid api key' do
371
+ client = Prevoty::Client.new('badapikey')
372
+ assert_raises Prevoty::BadAPIKey do
373
+ client.decrypt(Prevoty::EncryptResult.new({}))
374
+ end
375
+ end
376
+
377
+ it 'should return a valid response for decrypt with a valid api key' do
378
+ client = Prevoty::Client.new(API_KEY)
379
+ response = client.encrypt('testtesttesttesttesttesttesttest', Prevoty::Crypto::Algorithms::AES, Prevoty::Crypto::Modes::CBC)
380
+ response.class.must_equal Prevoty::EncryptResult
381
+ response = client.decrypt(response)
382
+ response.class.must_equal Prevoty::DecryptResult
383
+ response.plain_text.must_equal 'testtesttesttesttesttesttesttest'
384
+ end
385
+
386
+ it 'should throw BadInputParameter for generate_rsa_keypair without an api key' do
387
+ client = Prevoty::Client.new('')
388
+ assert_raises Prevoty::BadInputParameter do
389
+ client.generate_rsa_keypair(1024)
390
+ end
391
+ end
392
+
393
+ it 'should throw BadAPIKey for generate_rsa_keypair with an invalid api key' do
394
+ client = Prevoty::Client.new('badapikey')
395
+ assert_raises Prevoty::BadAPIKey do
396
+ client.generate_rsa_keypair(1024)
397
+ end
398
+ end
399
+
400
+ it 'should return a valid response for generate_rsa_keypair with a valid api key' do
401
+ client = Prevoty::Client.new(API_KEY)
402
+ response = client.generate_rsa_keypair(1024)
403
+ response.class.must_equal Prevoty::RSAPrivateKey
404
+ end
405
+
406
+ it 'should throw BadInputParameter for generate_ecdsa_keypair without an api key' do
407
+ client = Prevoty::Client.new('')
408
+ assert_raises Prevoty::BadInputParameter do
409
+ client.generate_ecdsa_keypair(Prevoty::Crypto::Curves::P224)
410
+ end
411
+ end
412
+
413
+ it 'should throw BadAPIKey for generate_ecdsa_keypair with an invalid api key' do
414
+ client = Prevoty::Client.new('badapikey')
415
+ assert_raises Prevoty::BadAPIKey do
416
+ client.generate_ecdsa_keypair(Prevoty::Crypto::Curves::P224)
417
+ end
418
+ end
419
+
420
+ it 'should return a valid response for generate_ecdsa_keypair with a valid api key' do
421
+ client = Prevoty::Client.new(API_KEY)
422
+ response = client.generate_ecdsa_keypair(Prevoty::Crypto::Curves::P224)
423
+ response.class.must_equal Prevoty::ECDSAPrivateKey
424
+ end
425
+
426
+ it 'should throw BadInputParameter for rsa_pss_signature without an api key' do
427
+ client = Prevoty::Client.new('')
428
+ assert_raises Prevoty::BadInputParameter do
429
+ client.rsa_pss_signature('test', Prevoty::Hash::SHA1, Prevoty::RSAPrivateKey.new({}), nil)
430
+ end
431
+ end
432
+
433
+ it 'should throw BadAPIKey for rsa_pss_signature with an invalid api key' do
434
+ client = Prevoty::Client.new('badapikey')
435
+ assert_raises Prevoty::BadAPIKey do
436
+ client.rsa_pss_signature('test', Prevoty::Hash::SHA1, Prevoty::RSAPrivateKey.new({}), nil)
437
+ end
438
+ end
439
+
440
+ it 'should return a valid response for rsa_pss_signature with a valid api key' do
441
+ client = Prevoty::Client.new(API_KEY)
442
+ response = client.generate_rsa_keypair(1024)
443
+ response.class.must_equal Prevoty::RSAPrivateKey
444
+ response = client.rsa_pss_signature('test', Prevoty::Hash::SHA1, response, Prevoty::Crypto::PSSSaltOptions::PSSSaltLengthAuto)
445
+ response.class.must_equal Prevoty::RSASignature
446
+ end
447
+
448
+ it 'should throw BadInputParameter for rsa_pkcs_signature without an api key' do
449
+ client = Prevoty::Client.new('')
450
+ assert_raises Prevoty::BadInputParameter do
451
+ client.rsa_pkcs_signature('test', Prevoty::Hash::SHA1, Prevoty::RSAPrivateKey.new({}))
452
+ end
453
+ end
454
+
455
+ it 'should throw BadAPIKey for rsa_pkcs_signature with an invalid api key' do
456
+ client = Prevoty::Client.new('badapikey')
457
+ assert_raises Prevoty::BadAPIKey do
458
+ client.rsa_pkcs_signature('test', Prevoty::Hash::SHA1, Prevoty::RSAPrivateKey.new({}))
459
+ end
460
+ end
461
+
462
+ it 'should return a valid response for rsa_pkcs_signature with a valid api key' do
463
+ client = Prevoty::Client.new(API_KEY)
464
+ response = client.generate_rsa_keypair(1024)
465
+ response.class.must_equal Prevoty::RSAPrivateKey
466
+ response = client.rsa_pkcs_signature('test', Prevoty::Hash::SHA1, response)
467
+ response.class.must_equal Prevoty::RSASignature
468
+ end
469
+
470
+ it 'should throw BadInputParameter for ecdsa_signature without an api key' do
471
+ client = Prevoty::Client.new('')
472
+ assert_raises Prevoty::BadInputParameter do
473
+ client.ecdsa_signature('test', Prevoty::Hash::SHA1, Prevoty::ECDSAPrivateKey.new({}))
474
+ end
475
+ end
476
+
477
+ it 'should throw BadAPIKey for ecdsa_signature with an invalid api key' do
478
+ client = Prevoty::Client.new('badapikey')
479
+ assert_raises Prevoty::BadAPIKey do
480
+ client.ecdsa_signature('test', Prevoty::Hash::SHA1, Prevoty::ECDSAPrivateKey.new({}))
481
+ end
482
+ end
483
+
484
+ it 'should return a valid response for ecdsa_signature with a valid api key' do
485
+ client = Prevoty::Client.new(API_KEY)
486
+ response = client.generate_ecdsa_keypair(Prevoty::Crypto::Curves::P224)
487
+ response.class.must_equal Prevoty::ECDSAPrivateKey
488
+ response = client.ecdsa_signature('test', Prevoty::Hash::SHA1, response)
489
+ response.class.must_equal Prevoty::ECDSASignature
490
+ end
491
+
492
+ it 'should throw BadInputParameter for verify_rsa_pss_signature without an api key' do
493
+ client = Prevoty::Client.new('')
494
+ assert_raises Prevoty::BadInputParameter do
495
+ client.rsa_pss_signature('test', Prevoty::Hash::SHA1, Prevoty::SignatureVerify.new({}), Prevoty::Crypto::PSSSaltOptions::PSSSaltLengthAuto)
496
+ end
497
+ end
498
+
499
+ it 'should throw BadAPIKey for verify_rsa_pss_signature with an invalid api key' do
500
+ client = Prevoty::Client.new('badapikey')
501
+ assert_raises Prevoty::BadAPIKey do
502
+ client.rsa_pss_signature('test', Prevoty::Hash::SHA1, Prevoty::SignatureVerify.new({}), Prevoty::Crypto::PSSSaltOptions::PSSSaltLengthAuto)
503
+ end
504
+ end
505
+
506
+ it 'should return a valid response for verify_rsa_pss_signature with a valid api key' do
507
+ client = Prevoty::Client.new(API_KEY)
508
+ key = client.generate_rsa_keypair(1024)
509
+ key.class.must_equal Prevoty::RSAPrivateKey
510
+ response = client.rsa_pss_signature('test', Prevoty::Hash::SHA1, key, Prevoty::Crypto::PSSSaltOptions::PSSSaltLengthAuto)
511
+ response.class.must_equal Prevoty::RSASignature
512
+ response = client.verify_rsa_pss_signature('test', Prevoty::Hash::SHA1, key, response, Prevoty::Crypto::PSSSaltOptions::PSSSaltLengthAuto)
513
+ response.class.must_equal Prevoty::SignatureVerify
514
+ end
515
+
516
+ it 'should throw BadInputParameter for verify_rsa_pkcs_signature without an api key' do
517
+ client = Prevoty::Client.new('')
518
+ assert_raises Prevoty::BadInputParameter do
519
+ client.rsa_pkcs_signature('test', Prevoty::Hash::SHA1, Prevoty::SignatureVerify.new({}))
520
+ end
521
+ end
522
+
523
+ it 'should throw BadAPIKey for verify_rsa_pkcs_signature with an invalid api key' do
524
+ client = Prevoty::Client.new('badapikey')
525
+ assert_raises Prevoty::BadAPIKey do
526
+ client.rsa_pkcs_signature('test', Prevoty::Hash::SHA1, Prevoty::SignatureVerify.new({}))
527
+ end
528
+ end
529
+
530
+ it 'should return a valid response for verify_rsa_pss_signature with a valid api key' do
531
+ client = Prevoty::Client.new(API_KEY)
532
+ key = client.generate_rsa_keypair(1024)
533
+ key.class.must_equal Prevoty::RSAPrivateKey
534
+ response = client.rsa_pkcs_signature('test', Prevoty::Hash::SHA1, key)
535
+ response.class.must_equal Prevoty::RSASignature
536
+ response = client.verify_rsa_pkcs_signature('test', Prevoty::Hash::SHA1, key, response)
537
+ response.class.must_equal Prevoty::SignatureVerify
538
+ end
539
+
540
+ it 'should throw BadInputParameter for verify_ecdsa_signature without an api key' do
541
+ client = Prevoty::Client.new('')
542
+ assert_raises Prevoty::BadInputParameter do
543
+ client.ecdsa_signature('test', Prevoty::Hash::SHA1, Prevoty::SignatureVerify.new({}))
544
+ end
545
+ end
546
+
547
+ it 'should throw BadAPIKey for verify_ecdsa_signature with an invalid api key' do
548
+ client = Prevoty::Client.new('badapikey')
549
+ assert_raises Prevoty::BadAPIKey do
550
+ client.ecdsa_signature('test', Prevoty::Hash::SHA1, Prevoty::SignatureVerify.new({}))
551
+ end
552
+ end
553
+
554
+ it 'should return a valid response for verify_ecdsa_signature with a valid api key' do
555
+ client = Prevoty::Client.new(API_KEY)
556
+ key = client.generate_ecdsa_keypair(Prevoty::Crypto::Curves::P224)
557
+ key.class.must_equal Prevoty::ECDSAPrivateKey
558
+ response = client.ecdsa_signature('test', Prevoty::Hash::SHA1, key)
559
+ response.class.must_equal Prevoty::ECDSASignature
560
+ response = client.verify_ecdsa_signature('test', Prevoty::Hash::SHA1, key, response)
561
+ response.class.must_equal Prevoty::SignatureVerify
562
+ end
563
+ end