summaryrefslogtreecommitdiff
path: root/lib
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 /lib
parent40916407517f4bdb75a295caf29e02d4f403349b (diff)
style: more rubocop fixes
Diffstat (limited to 'lib')
-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
6 files changed, 78 insertions, 56 deletions
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