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 +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
|