Class: Saro::Dat::DatCertificate

Inherits:
Object
  • Object
show all
Defined in:
lib/saro/dat/dat_certificate.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cid, dat_issuance_start_seconds, dat_issuance_duration_seconds, dat_ttl_seconds, signature_key, crypto_key) ⇒ DatCertificate

Returns a new instance of DatCertificate.



12
13
14
15
16
17
18
19
# File 'lib/saro/dat/dat_certificate.rb', line 12

def initialize(cid, dat_issuance_start_seconds, dat_issuance_duration_seconds, dat_ttl_seconds, signature_key, crypto_key)
  @cid = cid
  @dat_issuance_start_seconds = dat_issuance_start_seconds
  @dat_issuance_end_seconds = dat_issuance_start_seconds + dat_issuance_duration_seconds
  @dat_ttl_seconds = dat_ttl_seconds
  @signature_key = signature_key
  @crypto_key = crypto_key
end

Instance Attribute Details

#cidObject (readonly)

Returns the value of attribute cid.



10
11
12
# File 'lib/saro/dat/dat_certificate.rb', line 10

def cid
  @cid
end

#crypto_keyObject (readonly)

Returns the value of attribute crypto_key.



10
11
12
# File 'lib/saro/dat/dat_certificate.rb', line 10

def crypto_key
  @crypto_key
end

#dat_issuance_end_secondsObject (readonly)

Returns the value of attribute dat_issuance_end_seconds.



10
11
12
# File 'lib/saro/dat/dat_certificate.rb', line 10

def dat_issuance_end_seconds
  @dat_issuance_end_seconds
end

#dat_issuance_start_secondsObject (readonly)

Returns the value of attribute dat_issuance_start_seconds.



10
11
12
# File 'lib/saro/dat/dat_certificate.rb', line 10

def dat_issuance_start_seconds
  @dat_issuance_start_seconds
end

#dat_ttl_secondsObject (readonly)

Returns the value of attribute dat_ttl_seconds.



10
11
12
# File 'lib/saro/dat/dat_certificate.rb', line 10

def dat_ttl_seconds
  @dat_ttl_seconds
end

#signature_keyObject (readonly)

Returns the value of attribute signature_key.



10
11
12
# File 'lib/saro/dat/dat_certificate.rb', line 10

def signature_key
  @signature_key
end

Class Method Details

.generate(cid, dat_issuance_start_seconds, dat_issuance_duration_seconds, dat_ttl_seconds, signature_algorithm, crypto_algorithm) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/saro/dat/dat_certificate.rb', line 34

def self.generate(cid, dat_issuance_start_seconds, dat_issuance_duration_seconds, dat_ttl_seconds, signature_algorithm, crypto_algorithm)
  new(
    cid, dat_issuance_start_seconds, dat_issuance_duration_seconds, dat_ttl_seconds,
    Saro::Dat::DatSignature.generate(signature_algorithm),
    Saro::Dat::DatCrypto.generate(crypto_algorithm)
  )
end

.imports(format_str) ⇒ Object

Raises:

  • (ArgumentError)


42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/saro/dat/dat_certificate.rb', line 42

def self.imports(format_str)
  parts = format_str.split(".")
  raise ArgumentError, "Invalid Certificate format" if parts.length != 8

  cid = parts[0].to_i(16)
  dat_issuance_start_seconds = parts[1].to_i
  dat_issuance_duration_seconds = parts[2].to_i
  dat_ttl_seconds = parts[3].to_i
  signature_algorithm = parts[4]
  crypto_algorithm = parts[5]
  signature_key = Saro::Dat::DatSignature.imports(signature_algorithm, parts[6])
  crypto_key = Saro::Dat::DatCrypto.imports(crypto_algorithm, parts[7])

  new(cid, dat_issuance_start_seconds, dat_issuance_duration_seconds, dat_ttl_seconds, signature_key, crypto_key)
end

Instance Method Details

#expiredObject Also known as: expired?



63
64
65
# File 'lib/saro/dat/dat_certificate.rb', line 63

def expired
  Time.now.to_i > (@dat_issuance_end_seconds + @dat_ttl_seconds)
end

#exports(verify_only = false) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/saro/dat/dat_certificate.rb', line 21

def exports(verify_only = false)
  cid_hex = @cid.to_s(16)
  dat_issuance_start_seconds = @dat_issuance_start_seconds.to_s
  dat_issuance_duration_seconds = (@dat_issuance_end_seconds - @dat_issuance_start_seconds).to_s
  dat_ttl_seconds = @dat_ttl_seconds.to_s
  signature_algorithm = @signature_key.algorithm
  crypto_algorithm = @crypto_key.algorithm
  signature_key = @signature_key.exports(verify_only)
  crypto_key = @crypto_key.exports

  "#{cid_hex}.#{dat_issuance_start_seconds}.#{dat_issuance_duration_seconds}.#{dat_ttl_seconds}.#{signature_algorithm}.#{crypto_algorithm}.#{signature_key}.#{crypto_key}"
end

#issuableObject Also known as: issuable?



58
59
60
61
# File 'lib/saro/dat/dat_certificate.rb', line 58

def issuable
  now = Time.now.to_i
  signable && @dat_issuance_start_seconds <= now && now <= @dat_issuance_end_seconds
end

#pairObject Also known as: pair?



71
72
73
# File 'lib/saro/dat/dat_certificate.rb', line 71

def pair
  @signature_key.pair
end

#signableObject Also known as: signable?



67
68
69
# File 'lib/saro/dat/dat_certificate.rb', line 67

def signable
  @signature_key.signable
end

#support_verify_onlyObject



75
76
77
# File 'lib/saro/dat/dat_certificate.rb', line 75

def support_verify_only
  @signature_key.support_verify_only
end