pwnedkeys-api-client 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5156705fc2f8ed04cc45a3076fb4728a092caddabbed5c4411c4d9272029d29f
4
- data.tar.gz: d0b7445ecdceaed25f344ec9e67be817462585cd663132f452645c488900442c
3
+ metadata.gz: 166520b315e6b27d8737dca7c597ccbee2e7bad01f4fd75eaeef687bf55b7e8a
4
+ data.tar.gz: 9ae8086acce3d9a566b11df15c03810a1e5c7bfe34bac320ceeb0a400c329d3e
5
5
  SHA512:
6
- metadata.gz: 428eb3e4d4f0112161cbf3ccd40db8ecb35a947d04a2bf2c9e50114e20a572ea46bccf0604414440cfa267468523614455cb7dab2a64c347cb00e5818360b428
7
- data.tar.gz: cf51ff367ba37c9473b7fb3b023fe8900a25f6a9267c0c904a57e7f203dd37e01520736b18a77079d282c873d5e9d063a5a6b91d2eb8904704b7a4611860ecb5
6
+ metadata.gz: 53d3c4ddeb857f3face8c5e37d4ebac004a1791ffa608a0b20e36120840c2262f8921ff9427b747f26bb29ceff9dcdcb99380b1f520718c941f995ddaefafbb1
7
+ data.tar.gz: 48fe943209d7b284e36586b3398f1a12ad8f9761e9f7a93080d612998bd3877a44a5dc086817b8e304a93a30b3fa3365c57cc091426cc03e9eed2958bae991eb
@@ -2,8 +2,8 @@ require "base64"
2
2
  require "json"
3
3
  require "net/http"
4
4
  require "openssl"
5
-
6
5
  require "openssl/x509/spki"
6
+ require "pwnedkeys/filter"
7
7
 
8
8
  # All the keys that are fit to be pwned.
9
9
  module Pwnedkeys
@@ -30,11 +30,16 @@ module Pwnedkeys
30
30
  # ASN.1 structure.
31
31
  #
32
32
  # If in doubt, just pass in a key and we'll take care of the rest.
33
+ #
34
+ # @param filter [#to_s] specify the location of a Pwnedkeys bloom filter.
35
+ # For more information on the format of a bloom filter file, see
36
+ # https://pwnedkeys.com/filter.html.
33
37
  #
34
38
  # @raise [Pwnedkeys::Request::Error] if the passed-in key representation
35
39
  # can't be induced into something useable.
36
40
  #
37
- def initialize(spki)
41
+ def initialize(spki, filter: nil)
42
+ @filter = filter
38
43
  @spki = if spki.is_a?(OpenSSL::X509::SPKI)
39
44
  spki
40
45
  elsif spki.is_a?(String)
@@ -67,6 +72,11 @@ module Pwnedkeys
67
72
  # completed.
68
73
  #
69
74
  def pwned?
75
+ if @filter && !included_in_filter?
76
+ # Can't be pwned, the filter says so
77
+ return false
78
+ end
79
+
70
80
  retry_count = 10
71
81
  uri = URI(ENV["PWNEDKEYS_API_URL"] || "https://v1.pwnedkeys.com")
72
82
  uri.path += "/#{@spki.spki_fingerprint.hexdigest}"
@@ -204,5 +214,11 @@ module Pwnedkeys
204
214
  raise Error, "Unsupported key type #{@key.class}"
205
215
  end
206
216
  end
217
+
218
+ def included_in_filter?
219
+ Pwnedkeys::Filter.open(@filter) do |f|
220
+ f.probably_includes?(@spki)
221
+ end
222
+ end
207
223
  end
208
224
  end
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
23
23
  s.required_ruby_version = ">= 2.5.0"
24
24
 
25
25
  s.add_runtime_dependency "openssl-additions"
26
+ s.add_runtime_dependency "pwnedkeys-filter"
26
27
 
27
28
  s.add_development_dependency 'bundler'
28
29
  s.add_development_dependency 'github-release'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pwnedkeys-api-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Palmer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-25 00:00:00.000000000 Z
11
+ date: 2020-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: openssl-additions
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: pwnedkeys-filter
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -196,7 +210,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
196
210
  - !ruby/object:Gem::Version
197
211
  version: '0'
198
212
  requirements: []
199
- rubygems_version: 3.0.1
213
+ rubygems_version: 3.0.3
200
214
  signing_key:
201
215
  specification_version: 4
202
216
  summary: Library to query the pwnedkeys.com API