diff options
| author | elijah <elijah@riseup.net> | 2015-01-28 12:32:15 -0800 | 
|---|---|---|
| committer | elijah <elijah@riseup.net> | 2015-01-28 12:32:15 -0800 | 
| commit | eebe08aba43302b080c7b534a746f0f30359f370 (patch) | |
| tree | 40d20aa9db55319328d70126635a8d84b542828a | |
| parent | 42ba688eabcdb428e0ce230175b72c357bea9cdb (diff) | |
client certificates: allow for time units to be specified in client_cert_lifespan config option.
| -rw-r--r-- | app/models/client_certificate.rb | 8 | ||||
| -rw-r--r-- | config/defaults.yml | 2 | ||||
| -rw-r--r-- | test/integration/api/smtp_cert_test.rb | 3 | 
3 files changed, 8 insertions, 5 deletions
| diff --git a/app/models/client_certificate.rb b/app/models/client_certificate.rb index 815801e..688d5c0 100644 --- a/app/models/client_certificate.rb +++ b/app/models/client_certificate.rb @@ -48,7 +48,7 @@ class ClientCertificate    end    def expiry -    @expiry ||= lifespan.months.from_now.utc.at_midnight +    @expiry ||= lifespan    end    private @@ -109,12 +109,14 @@ class ClientCertificate    # We normalize timestamps at utc and midnight    # to reduce the fingerprinting possibilities.    # -    def last_month      1.month.ago.utc.at_midnight    end    def lifespan -    APP_CONFIG[:client_cert_lifespan] +    number, unit = APP_CONFIG[:client_cert_lifespan].split(' ') +    unit ||= :months +    Time.now.utc.at_midnight.advance(unit.to_sym => number.to_i)    end +  end diff --git a/config/defaults.yml b/config/defaults.yml index 9eccb5e..9ffdf6a 100644 --- a/config/defaults.yml +++ b/config/defaults.yml @@ -4,7 +4,7 @@ dev_ca: &dev_ca    ca_key_password: nil  cert_options: &cert_options -  client_cert_lifespan: 2 +  client_cert_lifespan: "2 months"    client_cert_bit_size: 2024    client_cert_hash: "SHA256"    allow_limited_certs: false diff --git a/test/integration/api/smtp_cert_test.rb b/test/integration/api/smtp_cert_test.rb index b1bfd43..2f50ef3 100644 --- a/test/integration/api/smtp_cert_test.rb +++ b/test/integration/api/smtp_cert_test.rb @@ -33,7 +33,8 @@ class SmtpCertTest < ApiIntegrationTest      assert_text_response      cert = OpenSSL::X509::Certificate.new(get_response.body)      fingerprint = OpenSSL::Digest::SHA1.hexdigest(cert.to_der).scan(/../).join(':') -    expiry = APP_CONFIG[:client_cert_lifespan].months.from_now.utc.midnight +    number, unit = APP_CONFIG[:client_cert_lifespan].split(' ') +    expiry = Time.now.utc.at_midnight.advance(unit.to_sym => number.to_i)      expiry_string = expiry.to_date.to_s      fingerprints = {fingerprint => expiry_string}      assert_equal fingerprints, @user.reload.identity.cert_fingerprints | 
