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 +4 -4
- data/lib/pwnedkeys/request.rb +18 -2
- data/pwnedkeys-api-client.gemspec +1 -0
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 166520b315e6b27d8737dca7c597ccbee2e7bad01f4fd75eaeef687bf55b7e8a
|
4
|
+
data.tar.gz: 9ae8086acce3d9a566b11df15c03810a1e5c7bfe34bac320ceeb0a400c329d3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53d3c4ddeb857f3face8c5e37d4ebac004a1791ffa608a0b20e36120840c2262f8921ff9427b747f26bb29ceff9dcdcb99380b1f520718c941f995ddaefafbb1
|
7
|
+
data.tar.gz: 48fe943209d7b284e36586b3398f1a12ad8f9761e9f7a93080d612998bd3877a44a5dc086817b8e304a93a30b3fa3365c57cc091426cc03e9eed2958bae991eb
|
data/lib/pwnedkeys/request.rb
CHANGED
@@ -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
|
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.
|
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:
|
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.
|
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
|