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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +66 -0
- data/Cargo.lock +1 -1
- data/README.md +2 -1
- data/ext/hanko_xml/Cargo.toml +1 -1
- data/ext/hanko_xml/src/dsig.rs +220 -0
- data/ext/hanko_xml/src/lib.rs +90 -1
- data/lib/hanko_xml/signer.rb +4 -1
- data/lib/hanko_xml/verifier.rb +10 -3
- data/lib/hanko_xml/version.rb +1 -1
- data/lib/hanko_xml/xades/augmenter.rb +248 -0
- data/lib/hanko_xml/xades/locator.rb +67 -0
- data/lib/hanko_xml/xades/long_term.rb +252 -0
- data/lib/hanko_xml/xades/timestamp.rb +386 -0
- data/lib/hanko_xml/xades/validation_data.rb +115 -0
- data/lib/hanko_xml/xades/verifier.rb +311 -37
- data/lib/hanko_xml/xades.rb +93 -6
- data/sig/hanko_xml/native.rbs +2 -0
- data/sig/hanko_xml/xades.rbs +91 -1
- metadata +6 -1
data/sig/hanko_xml/xades.rbs
CHANGED
|
@@ -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
|
-
|
|
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.
|
|
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
|