summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzul <azul@riseup.net>2017-09-23 13:43:29 +0200
committerAzul <azul@riseup.net>2017-09-23 16:53:27 +0200
commitf40ef14010af08c49810c0a6a2349072948170e6 (patch)
tree19a2b13d35bb45b7d36c0c6f84fd483efbf55ece
parent40916407517f4bdb75a295caf29e02d4f403349b (diff)
style: more rubocop fixes
-rw-r--r--Rakefile7
-rw-r--r--lib/nickserver/handler_chain.rb2
-rw-r--r--lib/nickserver/hkp/client.rb3
-rw-r--r--lib/nickserver/hkp/key_info.rb76
-rw-r--r--lib/nickserver/hkp/parse_key_info.rb14
-rw-r--r--lib/nickserver/wkd/source.rb4
-rw-r--r--lib/nickserver/wkd/url.rb35
-rw-r--r--nickserver.gemspec8
-rw-r--r--test/functional/sample_test.rb1
-rw-r--r--test/remote/wkd_source_test.rb6
-rw-r--r--test/support/http_stub_helper.rb12
11 files changed, 98 insertions, 70 deletions
diff --git a/Rakefile b/Rakefile
index a246c8e..576e54c 100644
--- a/Rakefile
+++ b/Rakefile
@@ -28,9 +28,7 @@ $gem_path = File.join($base_dir, 'pkg', "#{$spec.name}-#{$spec.version}.gem")
def run(cmd)
PTY.spawn(cmd) do |output, _input, _pid|
begin
- while line = output.gets
- puts line
- end
+ output.each { |line| puts line }
rescue Errno::EIO
end
end
@@ -38,7 +36,8 @@ rescue PTY::ChildExited
end
def built_gem_path
- Dir[File.join($base_dir, "#{$spec.name}-*.gem")].sort_by { |f| File.mtime(f) }.last
+ Dir[File.join($base_dir, "#{$spec.name}-*.gem")]
+ .max_by { |f| File.mtime(f) }
end
desc "Build #{$spec.name}-#{$spec.version}.gem into the pkg directory"
diff --git a/lib/nickserver/handler_chain.rb b/lib/nickserver/handler_chain.rb
index 843313e..f685a2e 100644
--- a/lib/nickserver/handler_chain.rb
+++ b/lib/nickserver/handler_chain.rb
@@ -1,3 +1,5 @@
+require 'English'
+
#
# Handler Chain
#
diff --git a/lib/nickserver/hkp/client.rb b/lib/nickserver/hkp/client.rb
index 3dbb1de..d632a36 100644
--- a/lib/nickserver/hkp/client.rb
+++ b/lib/nickserver/hkp/client.rb
@@ -1,4 +1,5 @@
require 'nickserver/hkp'
+require 'nickserver/config'
module Nickserver::Hkp
#
@@ -35,7 +36,7 @@ module Nickserver::Hkp
def get(query)
# in practice, exact=on seems to have no effect
query = { exact: 'on', options: 'mr' }.merge query
- response = adapter.get Config.hkp_url, query: query
+ response = adapter.get Nickserver::Config.hkp_url, query: query
response
end
end
diff --git a/lib/nickserver/hkp/key_info.rb b/lib/nickserver/hkp/key_info.rb
index ed38643..5c8b845 100644
--- a/lib/nickserver/hkp/key_info.rb
+++ b/lib/nickserver/hkp/key_info.rb
@@ -1,65 +1,83 @@
require 'cgi'
require 'nickserver/hkp'
-#
-# Class to represent the key information result from a query to a key server
-# (but not the key itself).
-#
-# The initialize method parses the hkp 'machine readable' output.
-#
-# format definition of machine readable index output is here:
-# http://tools.ietf.org/html/draft-shaw-openpgp-hkp-00#section-5.2
-#
module Nickserver::Hkp
+ #
+ # Class to represent the key information result from a query to a key server
+ # (but not the key itself).
+ #
+ # The initialize method parses the hkp 'machine readable' output.
+ #
+ # format definition of machine readable index output is here:
+ # http://tools.ietf.org/html/draft-shaw-openpgp-hkp-00#section-5.2
+ #
class KeyInfo
- attr_accessor :uids, :keyid, :algo, :flags
+ attr_accessor :uids
def initialize(hkp_record)
uid_lines = hkp_record.split("\n")
pub_line = uid_lines.shift
- @keyid, @algo, @keylen_s, @creationdate_s, @expirationdate_s, @flags = pub_line.split(':')[1..-1]
- @uids = []
- uid_lines.each do |uid_line|
- uid, _creationdate, _expirationdate, _flags = uid_line.split(':')[1..-1]
- # for now, ignore the expirationdate and flags of uids. sks does return them anyway
- @uids << CGI.unescape(uid.sub(/.*<(.+)>.*/, '\1'))
- end
+ @properties = pub_line.split(':')[1..-1]
+ @uids = extract_uids(uid_lines)
+ end
+
+ def keyid
+ properties.first
+ end
+
+ def algo
+ properties.second
end
def keylen
- @keylen ||= @keylen_s.to_i
+ properties[2].to_i
end
def creationdate
- @creationdate ||= begin
- Time.at(@creationdate_s.to_i) if @creationdate_s
- end
+ created = properties[3]
+ Time.at(created.to_i)
end
def expirationdate
- @expirationdate ||= begin
- Time.at(@expirationdate_s.to_i) if @expirationdate_s
- end
+ expires = properties[4]
+ Time.at(expires.to_i)
+ end
+
+ def flags
+ properties.last
end
def rsa?
- @algo == '1'
+ algo == '1'
end
def dsa?
- @algo == '17'
+ algo == '17'
end
def revoked?
- @flags =~ /r/
+ flags =~ /r/
end
def disabled?
- @flags =~ /d/
+ flags =~ /d/
end
def expired?
- @flags =~ /e/
+ flags =~ /e/
+ end
+
+ protected
+
+ attr_reader :properties
+
+ def extract_uids(uid_lines)
+ uid_lines.map do |uid_line|
+ # for now, ignore the expirationdate and flags of uids.
+ # sks does return them anyway
+ uid, _creationdate, _expirationdate, _flags = uid_line.split(':')[1..-1]
+ CGI.unescape(uid.sub(/.*<(.+)>.*/, '\1'))
+ end
end
end
end
diff --git a/lib/nickserver/hkp/parse_key_info.rb b/lib/nickserver/hkp/parse_key_info.rb
index 09dc69e..c23751b 100644
--- a/lib/nickserver/hkp/parse_key_info.rb
+++ b/lib/nickserver/hkp/parse_key_info.rb
@@ -1,11 +1,11 @@
-#
-# Simple parser for Hkp KeyInfo responses.
-#
-# Focus is on simple here. Trying to avoid state and sideeffects.
-# Parsing a response with 12 keys and validating them takes 2ms.
-# So no need for memoization and making things more complex.
-#
module Nickserver::Hkp
+ #
+ # Simple parser for Hkp KeyInfo responses.
+ #
+ # Focus is on simple here. Trying to avoid state and sideeffects.
+ # Parsing a response with 12 keys and validating them takes 2ms.
+ # So no need for memoization and making things more complex.
+ #
class ParseKeyInfo
# for this regexp to work, the source text must end in a trailing "\n",
# which the output of sks does.
diff --git a/lib/nickserver/wkd/source.rb b/lib/nickserver/wkd/source.rb
index b994c6c..43f0b2e 100644
--- a/lib/nickserver/wkd/source.rb
+++ b/lib/nickserver/wkd/source.rb
@@ -9,7 +9,9 @@ module Nickserver::Wkd
def query(email)
url = Url.new(email)
status, blob = adapter.get url
- Hkp::Response.new(email.to_s, armor_key(blob)) if status == 200
+ if status == 200
+ Nickserver::Hkp::Response.new(email.to_s, armor_key(blob))
+ end
end
protected
diff --git a/lib/nickserver/wkd/url.rb b/lib/nickserver/wkd/url.rb
index 6530efc..0ccff38 100644
--- a/lib/nickserver/wkd/url.rb
+++ b/lib/nickserver/wkd/url.rb
@@ -1,29 +1,28 @@
require 'digest/sha1'
require 'zbase32'
-module Nickserver
- module Wkd
- class Url
- def initialize(email)
- @domain = email.domain.downcase
- @local_part = email.local_part.downcase
- end
+module Nickserver::Wkd
+ # The url to lookup the given email address in the web key directory.
+ class Url
+ def initialize(email)
+ @domain = email.domain.downcase
+ @local_part = email.local_part.downcase
+ end
- def to_s
- "https://#{domain}/.well-known/openpgpkey/hu/#{encoded_digest}"
- end
+ def to_s
+ "https://#{domain}/.well-known/openpgpkey/hu/#{encoded_digest}"
+ end
- protected
+ protected
- attr_reader :domain, :local_part
+ attr_reader :domain, :local_part
- def encoded_digest
- ZBase32.encode32(digest.to_i(16).to_s(2))
- end
+ def encoded_digest
+ ZBase32.encode32(digest.to_i(16).to_s(2))
+ end
- def digest
- Digest::SHA1.hexdigest local_part
- end
+ def digest
+ Digest::SHA1.hexdigest local_part
end
end
end
diff --git a/nickserver.gemspec b/nickserver.gemspec
index 035efe5..aa4b3b8 100644
--- a/nickserver.gemspec
+++ b/nickserver.gemspec
@@ -1,5 +1,7 @@
# -*- encoding: utf-8 -*-
+require 'English'
+
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'nickserver/version'
@@ -10,8 +12,12 @@ Gem::Specification.new do |gem|
gem.authors = ['elijah']
gem.email = ['elijah@riseup.net']
gem.description = 'Provides a directory service to map uid to public key.'
- gem.summary = 'Nickserver provides the ability to map a uid (user@domain.org) to a public key. This is the opposite of a key server, whose job it is to map public key to uid. Nickserver is lightweight and asynchronous.'
gem.homepage = 'https://leap.se'
+ gem.summary = <<-EOSUM
+Nickserver provides the ability to map a uid (user@domain.org) to a public key.
+This is the opposite of a key server, whose job it is to map public key to uid.
+Nickserver is lightweight and asynchronous.
+ EOSUM
gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
diff --git a/test/functional/sample_test.rb b/test/functional/sample_test.rb
index dbd8796..412555e 100644
--- a/test/functional/sample_test.rb
+++ b/test/functional/sample_test.rb
@@ -1,3 +1,4 @@
+require 'English'
require 'support/functional_test'
class SampleTest < FunctionalTest
diff --git a/test/remote/wkd_source_test.rb b/test/remote/wkd_source_test.rb
index 7eaab79..1ed7ea5 100644
--- a/test/remote/wkd_source_test.rb
+++ b/test/remote/wkd_source_test.rb
@@ -27,14 +27,14 @@ class RemoteWkdSourceTest < CelluloidTest
def assert_pgp_key_in(response)
json = JSON.parse response.content
- assert_equal email_with_key.to_s, json['address']
- refute_empty json['openpgp']
+ assert_equal email_with_key.to_s, json["address"]
+ refute_empty json["openpgp"]
assert_equal file_content('dewey.pgp.asc'), json['openpgp']
end
def email_with_key
uid = 'dewey@test.gnupg.org'
- email = Nickserver::EmailAddress.new uid
+ Nickserver::EmailAddress.new uid
end
def source
diff --git a/test/support/http_stub_helper.rb b/test/support/http_stub_helper.rb
index ee50698..b0ec069 100644
--- a/test/support/http_stub_helper.rb
+++ b/test/support/http_stub_helper.rb
@@ -16,13 +16,13 @@ module HttpStubHelper
Hash
end
- def stub_sks_vindex_reponse(_uid, response = {})
+ def stub_sks_vindex_reponse(uid, response = {})
stub_http_get config.hkp_url,
response,
- query: vindex_query
+ query: vindex_query(uid)
end
- def vindex_query
+ def vindex_query(uid)
{ op: 'vindex',
search: uid,
exact: 'on',
@@ -30,13 +30,13 @@ module HttpStubHelper
fingerprint: 'on' }
end
- def stub_sks_get_reponse(_key_id, response = {})
+ def stub_sks_get_reponse(key_id, response = {})
stub_http_get config.hkp_url,
response,
- query: sks_get_query
+ query: sks_get_query(key_id)
end
- def sks_get_query
+ def sks_get_query(key_id)
{ op: 'get',
search: '0x' + key_id,
exact: 'on',