pwnedkeys-api-client 0.2.0 → 0.3.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.
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