hanko_xml 0.1.0 → 0.2.0

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.
@@ -1,6 +1,7 @@
1
1
  module HankoXml
2
2
  module Xades
3
3
  NS: String
4
+ NS141: String
4
5
  LEGACY_NAMESPACES: Array[String]
5
6
  NAMESPACES: Array[String]
6
7
  SIGNED_PROPERTIES_TYPE: String
@@ -23,11 +24,19 @@ module HankoXml
23
24
  def initialize: (?mime_type: String?, ?description: String?, ?encoding: String?) -> void
24
25
  end
25
26
 
27
+ # Takes a DER TimeStampReq, returns the TSA's DER TimeStampResp (#162).
28
+ interface _Timestamper
29
+ def call: (String request_der) -> String
30
+ end
31
+
26
32
  class Signer < HankoXml::Signer
27
33
  attr_reader signing_time: Time?
28
34
  attr_reader signature_policy: (SignaturePolicy | :implied)?
29
35
  attr_reader claimed_roles: Array[String]
30
36
  attr_reader data_object_format: DataObjectFormat?
37
+ attr_reader timestamper: _Timestamper?
38
+ attr_reader timestamp_canonicalization_method: Symbol
39
+ attr_reader validation_data: ValidationData?
31
40
 
32
41
  def initialize: (
33
42
  ?certificate: (Key | OpenSSL::X509::Certificate | String | _ToPath)?,
@@ -37,10 +46,52 @@ module HankoXml
37
46
  ?data_object_format: (DataObjectFormat | Hash[Symbol, untyped])?,
38
47
  ?signature_id: String?,
39
48
  ?template: Symbol,
49
+ ?timestamper: _Timestamper?,
50
+ ?timestamp_digest_method: Symbol?,
51
+ ?timestamp_canonicalization_method: Symbol,
52
+ ?validation_data: (ValidationData | Hash[Symbol, untyped])?,
40
53
  **untyped
41
54
  ) ?{ (self) -> void } -> void
42
55
 
43
56
  def signed_properties_id: () -> String
57
+ def signature_timestamp_id: () -> String
58
+ def timestamp_digest_method: () -> Symbol
59
+ end
60
+
61
+ # XAdES-LT validation material (#167). Embedded, never trusted.
62
+ class ValidationData
63
+ attr_reader certificates: Array[OpenSSL::X509::Certificate]
64
+ attr_reader crls: Array[OpenSSL::X509::CRL]
65
+ attr_reader ocsp_responses: Array[OpenSSL::OCSP::Response]
66
+
67
+ def initialize: (
68
+ ?certificates: Array[OpenSSL::X509::Certificate | String | Key],
69
+ ?crls: Array[OpenSSL::X509::CRL | String],
70
+ ?ocsp_responses: Array[OpenSSL::OCSP::Response | String]
71
+ ) -> void
72
+ def self.coerce: ((ValidationData | Hash[Symbol, untyped])? value) -> ValidationData?
73
+ end
74
+
75
+ # Adds a SignatureTimeStamp and XAdES-LT validation data to an existing signature (#167).
76
+ class Augmenter
77
+ attr_reader timestamper: _Timestamper?
78
+ attr_reader timestamp_digest_method: Symbol
79
+ attr_reader timestamp_canonicalization_method: Symbol
80
+ attr_reader validation_data: ValidationData?
81
+ attr_reader archive_timestamp: bool
82
+ attr_reader archive_canonicalization_method: Symbol
83
+ attr_reader policy: Policy
84
+
85
+ def initialize: (
86
+ ?timestamper: _Timestamper?,
87
+ ?timestamp_digest_method: Symbol,
88
+ ?timestamp_canonicalization_method: Symbol,
89
+ ?validation_data: (ValidationData | Hash[Symbol, untyped])?,
90
+ ?archive_timestamp: bool,
91
+ ?archive_canonicalization_method: Symbol,
92
+ ?policy: Policy
93
+ ) -> void
94
+ def augment: (untyped source, ?signature: Integer?) -> SignedDocument
44
95
  end
45
96
  end
46
97
  end
@@ -57,12 +108,51 @@ module HankoXml
57
108
  attr_reader data_object_formats: Array[Hash[Symbol, String?]]
58
109
  end
59
110
 
111
+ class SignatureTimeStamp
112
+ attr_reader id: String?
113
+ attr_reader time: Time
114
+ attr_reader serial_number: Integer
115
+ attr_reader tsa_certificate: OpenSSL::X509::Certificate?
116
+ attr_reader digest_method: String
117
+ attr_reader policy_id: String?
118
+ end
119
+
120
+ # The revocation evidence a chain certificate passed with (#168).
121
+ class RevocationStatus
122
+ attr_reader certificate: OpenSSL::X509::Certificate
123
+ attr_reader source: :ocsp | :crl
124
+ attr_reader issued_at: Time
125
+ attr_reader status: :good | :revoked_later
126
+ end
127
+
128
+ # A passed XAdES-LT validation (#168).
129
+ class LongTermValidation
130
+ attr_reader time: Time
131
+ attr_reader certificate_chain: Array[OpenSSL::X509::Certificate]
132
+ attr_reader revocation: Array[RevocationStatus]
133
+ end
134
+
60
135
  class Verification < HankoXml::Verification
61
136
  attr_reader signed_properties: SignedProperties?
137
+ attr_reader signature_timestamps: Array[SignatureTimeStamp]?
138
+ attr_reader long_term_validation: LongTermValidation?
139
+ attr_reader archive_timestamps: Array[SignatureTimeStamp]?
140
+ def timestamp_time: () -> Time?
62
141
  end
63
142
 
64
143
  class Verifier < HankoXml::Verifier
65
- def initialize: (?signature_policy: (SignaturePolicy | Hash[Symbol, untyped] | :implied)?, **untyped) -> void
144
+ TIMESTAMP_MODES: Array[Symbol]
145
+ LONG_TERM_MODES: Array[Symbol]
146
+
147
+ def initialize: (
148
+ ?signature_policy: (SignaturePolicy | Hash[Symbol, untyped] | :implied)?,
149
+ ?timestamps: :verify | :require | :ignore,
150
+ ?tsa_store: OpenSSL::X509::Store?,
151
+ ?tsa_certificates: Array[OpenSSL::X509::Certificate | String | Key]?,
152
+ ?long_term: (:verify | :require | :ignore)?,
153
+ ?revocation_grace: Numeric,
154
+ **untyped
155
+ ) -> void
66
156
  def verify: (untyped xml) -> Verification
67
157
  def verify_all: (untyped xml) -> Array[Verification]
68
158
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hanko_xml
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Danimar Ribeiro
@@ -56,6 +56,11 @@ files:
56
56
  - lib/hanko_xml/verifier.rb
57
57
  - lib/hanko_xml/version.rb
58
58
  - lib/hanko_xml/xades.rb
59
+ - lib/hanko_xml/xades/augmenter.rb
60
+ - lib/hanko_xml/xades/locator.rb
61
+ - lib/hanko_xml/xades/long_term.rb
62
+ - lib/hanko_xml/xades/timestamp.rb
63
+ - lib/hanko_xml/xades/validation_data.rb
59
64
  - lib/hanko_xml/xades/verifier.rb
60
65
  - lib/hanko_xml/xml.rb
61
66
  - lib/hanko_xml/xmldsig-core-schema.xsd