pwnedkeys-filter 0.2.0 → 0.2.1
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/filter.rb +39 -24
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 796245e9ca46b1a37b657cac0f5cbd0157c132e7f1d887e5f2f4f1392e61473c
|
|
4
|
+
data.tar.gz: 37806ed3fe2de6c008ccc2cf7de48c1a73d426d29e54aadd7b7a77496f31f4f7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 34d5b2e319c3018c0778489ef5896a3b6a09d1b0bde206daef1d61452072f7cddfb7754a14ff207131c093e1c1780910c190a29b51f0ad5a42da155e7d158f4b
|
|
7
|
+
data.tar.gz: 47bf7be5f1ff4a5e6b55a9626c513b40117a647e3215b219b8204a60d50c2d93ec928926fdd495500b41619f28d6be60cc90efeca0136819eba645d01f2d330d
|
data/lib/pwnedkeys/filter.rb
CHANGED
|
@@ -182,7 +182,11 @@ module Pwnedkeys
|
|
|
182
182
|
filter = Pwnedkeys::Filter.new(filename)
|
|
183
183
|
|
|
184
184
|
if block_given?
|
|
185
|
-
|
|
185
|
+
begin
|
|
186
|
+
yield filter
|
|
187
|
+
ensure
|
|
188
|
+
filter.close
|
|
189
|
+
end
|
|
186
190
|
else
|
|
187
191
|
filter
|
|
188
192
|
end
|
|
@@ -242,28 +246,34 @@ module Pwnedkeys
|
|
|
242
246
|
|
|
243
247
|
spki = spkify(key)
|
|
244
248
|
|
|
245
|
-
|
|
246
|
-
@fd.
|
|
247
|
-
|
|
248
|
-
|
|
249
|
+
begin
|
|
250
|
+
@fd.flock(File::LOCK_EX)
|
|
251
|
+
filter_positions(spki.to_der).each do |n|
|
|
252
|
+
@fd.seek(n / 8 + @header.header_size, :SET)
|
|
253
|
+
byte = @fd.read(1).ord
|
|
254
|
+
@fd.seek(-1, :CUR)
|
|
249
255
|
|
|
250
|
-
|
|
251
|
-
|
|
256
|
+
mask = 2 ** (7 - (n % 8))
|
|
257
|
+
new_byte = byte | mask
|
|
252
258
|
|
|
253
|
-
|
|
254
|
-
|
|
259
|
+
@fd.write(new_byte.chr)
|
|
260
|
+
end
|
|
255
261
|
|
|
256
|
-
|
|
262
|
+
@header.entry_added!
|
|
257
263
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
+
# Only update the revision if this is the first add in this filter,
|
|
265
|
+
# because otherwise the revision counter would just be the same as the
|
|
266
|
+
# entry counter, and that would be pointless.
|
|
267
|
+
unless @already_modified
|
|
268
|
+
@header.update!
|
|
269
|
+
end
|
|
264
270
|
|
|
265
|
-
|
|
266
|
-
|
|
271
|
+
@fd.seek(0)
|
|
272
|
+
@fd.write(@header.to_s)
|
|
273
|
+
@fd.fdatasync
|
|
274
|
+
ensure
|
|
275
|
+
@fd.flock(File::LOCK_UN)
|
|
276
|
+
end
|
|
267
277
|
|
|
268
278
|
@already_modified = true
|
|
269
279
|
end
|
|
@@ -333,12 +343,17 @@ module Pwnedkeys
|
|
|
333
343
|
end
|
|
334
344
|
|
|
335
345
|
def filter_bits(s)
|
|
336
|
-
|
|
337
|
-
@fd.
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
346
|
+
begin
|
|
347
|
+
@fd.flock(File::LOCK_SH)
|
|
348
|
+
filter_positions(s).map do |n|
|
|
349
|
+
@fd.seek(n / 8 + @header.header_size, :SET)
|
|
350
|
+
byte = @fd.read(1).ord
|
|
351
|
+
mask = 2 ** (7 - (n % 8))
|
|
352
|
+
|
|
353
|
+
(byte & mask) > 0
|
|
354
|
+
end
|
|
355
|
+
ensure
|
|
356
|
+
@fd.flock(File::LOCK_UN)
|
|
342
357
|
end
|
|
343
358
|
end
|
|
344
359
|
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pwnedkeys-filter
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Matt Palmer
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-07-04 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: openssl-additions
|