pki_express 1.3.0 → 1.3.2
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/.gitattributes +2 -2
- data/.github/workflows/test.yml +22 -0
- data/.gitignore +27 -27
- data/.rspec +1 -0
- data/CHANGELOG.md +19 -12
- data/Gemfile +9 -4
- data/README.md +24 -24
- data/Rakefile +7 -1
- data/lib/pki_express/auth_complete_result.rb +21 -21
- data/lib/pki_express/auth_start_result.rb +76 -76
- data/lib/pki_express/authentication.rb +284 -284
- data/lib/pki_express/base_signer.rb +54 -54
- data/lib/pki_express/cades_signature.rb +89 -89
- data/lib/pki_express/cades_signature_starter.rb +242 -242
- data/lib/pki_express/check_service_result.rb +15 -15
- data/lib/pki_express/command_error.rb +13 -13
- data/lib/pki_express/commands.rb +24 -24
- data/lib/pki_express/digest_algorithm.rb +118 -118
- data/lib/pki_express/digest_algorithm_and_value.rb +30 -30
- data/lib/pki_express/discovery_service_result.rb +25 -25
- data/lib/pki_express/enum.rb +9 -9
- data/lib/pki_express/error_codes.rb +46 -46
- data/lib/pki_express/installation_not_found_error.rb +8 -8
- data/lib/pki_express/name.rb +47 -47
- data/lib/pki_express/oids.rb +30 -30
- data/lib/pki_express/pades_certification_level.rb +7 -7
- data/lib/pki_express/pades_horizontal_align.rb +9 -9
- data/lib/pki_express/pades_measurement_units.rb +8 -8
- data/lib/pki_express/pades_page_optimization.rb +50 -50
- data/lib/pki_express/pades_page_orientation.rb +9 -9
- data/lib/pki_express/pades_paper_size.rb +21 -21
- data/lib/pki_express/pades_signature.rb +16 -16
- data/lib/pki_express/pades_signature_explorer.rb +30 -30
- data/lib/pki_express/pades_signature_starter.rb +251 -251
- data/lib/pki_express/pades_signer.rb +274 -274
- data/lib/pki_express/pades_signer_info.rb +9 -9
- data/lib/pki_express/pades_size.rb +17 -17
- data/lib/pki_express/pades_text_horizontal_align.rb +8 -8
- data/lib/pki_express/pades_vertical_align.rb +9 -9
- data/lib/pki_express/pades_visual_auto_positioning.rb +21 -21
- data/lib/pki_express/pades_visual_image.rb +51 -51
- data/lib/pki_express/pades_visual_manual_positioning.rb +16 -16
- data/lib/pki_express/pades_visual_positioning.rb +27 -27
- data/lib/pki_express/pades_visual_rectangle.rb +74 -74
- data/lib/pki_express/pades_visual_representation.rb +22 -22
- data/lib/pki_express/pades_visual_text.rb +35 -35
- data/lib/pki_express/pk_algorithms.rb +157 -157
- data/lib/pki_express/pk_certificate.rb +61 -61
- data/lib/pki_express/pki_brazil_certificate_fields.rb +57 -57
- data/lib/pki_express/pki_brazil_certificate_types.rb +19 -19
- data/lib/pki_express/pki_express_config.rb +39 -26
- data/lib/pki_express/pki_express_operator.rb +240 -234
- data/lib/pki_express/pki_italy_certificate_fields.rb +15 -15
- data/lib/pki_express/pki_italy_certificate_types.rb +11 -11
- data/lib/pki_express/signature_algorithm_and_value.rb +34 -34
- data/lib/pki_express/signature_explorer.rb +74 -74
- data/lib/pki_express/signature_finisher.rb +314 -314
- data/lib/pki_express/signature_policy_identifier.rb +20 -20
- data/lib/pki_express/signature_start_result.rb +12 -12
- data/lib/pki_express/signature_starter.rb +116 -116
- data/lib/pki_express/signer.rb +151 -151
- data/lib/pki_express/standard_signature_policies.rb +58 -58
- data/lib/pki_express/timestamp_authority.rb +50 -50
- data/lib/pki_express/trust_service_auth_parameters.rb +20 -20
- data/lib/pki_express/trust_service_info.rb +37 -37
- data/lib/pki_express/trust_service_manager.rb +258 -258
- data/lib/pki_express/trust_service_session_result.rb +29 -29
- data/lib/pki_express/trust_service_session_types.rb +7 -7
- data/lib/pki_express/tsa_authentication_type.rb +14 -14
- data/lib/pki_express/validation_error.rb +8 -8
- data/lib/pki_express/validation_item.rb +43 -43
- data/lib/pki_express/validation_item_types.rb +103 -103
- data/lib/pki_express/validation_results.rb +120 -120
- data/lib/pki_express/version.rb +3 -3
- data/lib/pki_express/version_manager.rb +20 -20
- data/lib/pki_express.rb +69 -69
- data/pki_express.gemspec +26 -26
- data/spec/pki_express/pki_express_config_spec.rb +73 -0
- data/spec/pki_express/pki_express_operator_spec.rb +31 -0
- data/spec/spec_helper.rb +13 -0
- metadata +17 -9
@@ -1,275 +1,275 @@
|
|
1
|
-
module PkiExpress
|
2
|
-
|
3
|
-
class PadesSigner < Signer
|
4
|
-
attr_accessor :suppress_default_visual_representation, :overwrite_original_file
|
5
|
-
attr_accessor :custom_signature_field_name, :certification_level, :reason
|
6
|
-
|
7
|
-
def initialize(config=PkiExpressConfig.new)
|
8
|
-
super(config)
|
9
|
-
@pdf_to_sign_path = nil
|
10
|
-
@vr_json_path = nil
|
11
|
-
@overwrite_original_file = false
|
12
|
-
@version_manager = VersionManager.new
|
13
|
-
@custom_signature_field_name = nil
|
14
|
-
@certification_level = nil
|
15
|
-
@reason = nil
|
16
|
-
@suppress_default_visual_representation = false
|
17
|
-
end
|
18
|
-
|
19
|
-
# region set_visual_representation
|
20
|
-
|
21
|
-
def visual_representation_content_raw
|
22
|
-
_get_visual_representation_content_raw
|
23
|
-
end
|
24
|
-
|
25
|
-
def _get_visual_representation_content_raw
|
26
|
-
unless @vr_json_path
|
27
|
-
return nil
|
28
|
-
end
|
29
|
-
|
30
|
-
File.read(@vr_json_path)
|
31
|
-
end
|
32
|
-
private :_get_visual_representation_content_raw
|
33
|
-
|
34
|
-
def visual_representation_content_raw=(content_raw)
|
35
|
-
_set_visual_representation_content_raw(content_raw)
|
36
|
-
end
|
37
|
-
|
38
|
-
def _set_visual_representation_content_raw(content_raw)
|
39
|
-
unless content_raw
|
40
|
-
raise 'The provided "visual_representation" is not valid'
|
41
|
-
end
|
42
|
-
|
43
|
-
temp_file_path = self.create_temp_file
|
44
|
-
File.open(temp_file_path, 'wb') do |f|
|
45
|
-
f.write(content_raw)
|
46
|
-
end
|
47
|
-
@vr_json_path = temp_file_path
|
48
|
-
end
|
49
|
-
private :_set_visual_representation_content_raw
|
50
|
-
|
51
|
-
def visual_representation_path
|
52
|
-
_get_visual_representation_path
|
53
|
-
end
|
54
|
-
|
55
|
-
def _get_visual_representation_path
|
56
|
-
@vr_json_path
|
57
|
-
end
|
58
|
-
private :_get_visual_representation_path
|
59
|
-
|
60
|
-
def visual_representation_path=(path)
|
61
|
-
_set_visual_representation_path(path)
|
62
|
-
end
|
63
|
-
|
64
|
-
def _set_visual_representation_path(path)
|
65
|
-
unless path
|
66
|
-
raise 'The provided "visual_representation_path" is not valid'
|
67
|
-
end
|
68
|
-
unless File.exists?(path)
|
69
|
-
raise 'The provided "visual_representation_path" does not exist'
|
70
|
-
end
|
71
|
-
@vr_json_path = path
|
72
|
-
end
|
73
|
-
private :_set_visual_representation_path
|
74
|
-
|
75
|
-
def visual_representation
|
76
|
-
_get_visual_representation
|
77
|
-
end
|
78
|
-
|
79
|
-
def _get_visual_representation
|
80
|
-
unless @vr_json_path
|
81
|
-
return nil
|
82
|
-
end
|
83
|
-
|
84
|
-
content = File.read(@vr_json_path)
|
85
|
-
JSON.parse(content)
|
86
|
-
end
|
87
|
-
private :_get_visual_representation
|
88
|
-
|
89
|
-
|
90
|
-
def visual_representation=(vr)
|
91
|
-
_set_visual_representation(vr)
|
92
|
-
end
|
93
|
-
|
94
|
-
def _set_visual_representation(vr)
|
95
|
-
temp_file_path = self.create_temp_file
|
96
|
-
json = JSON.pretty_generate(vr.to_model)
|
97
|
-
File.open(temp_file_path, 'w') do |f|
|
98
|
-
f.write(json)
|
99
|
-
end
|
100
|
-
@vr_json_path = temp_file_path
|
101
|
-
end
|
102
|
-
private :_set_visual_representation
|
103
|
-
|
104
|
-
# endregion
|
105
|
-
|
106
|
-
# region The "pdf_to_sign" accessors
|
107
|
-
|
108
|
-
def pdf_to_sign
|
109
|
-
_get_pdf_to_sign
|
110
|
-
end
|
111
|
-
|
112
|
-
def _get_pdf_to_sign
|
113
|
-
unless @pdf_to_sign_path
|
114
|
-
return nil
|
115
|
-
end
|
116
|
-
|
117
|
-
File.read(@pdf_to_sign_path)
|
118
|
-
end
|
119
|
-
private :_get_pdf_to_sign
|
120
|
-
|
121
|
-
def pdf_to_sign=(content_raw)
|
122
|
-
_set_pdf_to_sign(content_raw)
|
123
|
-
end
|
124
|
-
|
125
|
-
def _set_pdf_to_sign(content_raw)
|
126
|
-
unless content_raw
|
127
|
-
raise 'The provided "pdf_to_sign" is not valid'
|
128
|
-
end
|
129
|
-
|
130
|
-
temp_file_path = self.create_temp_file
|
131
|
-
File.open(temp_file_path, 'wb') do |f|
|
132
|
-
f.write(content_raw)
|
133
|
-
end
|
134
|
-
@pdf_to_sign_path = temp_file_path
|
135
|
-
end
|
136
|
-
private :_set_pdf_to_sign
|
137
|
-
|
138
|
-
def pdf_to_sign_base64
|
139
|
-
_get_pdf_to_sign_base64
|
140
|
-
end
|
141
|
-
|
142
|
-
def _get_pdf_to_sign_base64
|
143
|
-
unless @pdf_to_sign_path
|
144
|
-
return nil
|
145
|
-
end
|
146
|
-
|
147
|
-
content = File.read(@pdf_to_sign_path)
|
148
|
-
Base64.encode64(content)
|
149
|
-
end
|
150
|
-
private :_get_pdf_to_sign_base64
|
151
|
-
|
152
|
-
def pdf_to_sign_base64=(content_base64)
|
153
|
-
_set_pdf_to_sign_base64(content_base64)
|
154
|
-
end
|
155
|
-
|
156
|
-
def _set_pdf_to_sign_base64(content_base64)
|
157
|
-
unless content_base64
|
158
|
-
raise 'The provided "pdf_to_sign_base64" is not valid'
|
159
|
-
end
|
160
|
-
|
161
|
-
begin
|
162
|
-
content_raw = Base64.decode64(content_base64)
|
163
|
-
rescue Error
|
164
|
-
raise 'The provided "pdf_to_sign_base64" is not Base64-encoded'
|
165
|
-
end
|
166
|
-
|
167
|
-
_set_pdf_to_sign(content_raw)
|
168
|
-
end
|
169
|
-
private :_set_pdf_to_sign_base64
|
170
|
-
|
171
|
-
def pdf_to_sign_path
|
172
|
-
_get_pdf_to_sign_path
|
173
|
-
end
|
174
|
-
|
175
|
-
def _get_pdf_to_sign_path
|
176
|
-
@pdf_to_sign_path
|
177
|
-
end
|
178
|
-
private :_get_pdf_to_sign_path
|
179
|
-
|
180
|
-
def pdf_to_sign_path=(path)
|
181
|
-
_set_pdf_to_sign_path(path)
|
182
|
-
end
|
183
|
-
|
184
|
-
def _set_pdf_to_sign_path(path)
|
185
|
-
unless path
|
186
|
-
raise 'The provided "pdf_to_sign_path" is not valid'
|
187
|
-
end
|
188
|
-
unless File.exists?(path)
|
189
|
-
raise 'The provided "pdf_to_sign_path" does not exist'
|
190
|
-
end
|
191
|
-
@pdf_to_sign_path = path
|
192
|
-
end
|
193
|
-
private :_set_pdf_to_sign_path
|
194
|
-
|
195
|
-
# endregion
|
196
|
-
|
197
|
-
def sign(get_cert=false)
|
198
|
-
unless @pdf_to_sign_path
|
199
|
-
raise 'The PDF to be signed was not set'
|
200
|
-
end
|
201
|
-
|
202
|
-
unless @overwrite_original_file || @output_file_path
|
203
|
-
raise 'The output destination was not set'
|
204
|
-
end
|
205
|
-
|
206
|
-
args = [
|
207
|
-
@pdf_to_sign_path,
|
208
|
-
]
|
209
|
-
|
210
|
-
# Logic to overwrite original file or use the output file
|
211
|
-
if @overwrite_original_file
|
212
|
-
args.append('--overwrite')
|
213
|
-
else
|
214
|
-
args.append(@output_file_path)
|
215
|
-
end
|
216
|
-
|
217
|
-
# Verify and add common options between signers.
|
218
|
-
verify_and_add_common_options(args)
|
219
|
-
|
220
|
-
if @vr_json_path
|
221
|
-
args.append('--visual-rep')
|
222
|
-
args.append(@vr_json_path)
|
223
|
-
end
|
224
|
-
|
225
|
-
if @custom_signature_field_name
|
226
|
-
args.append('--custom-signature-field-name')
|
227
|
-
args.append(@custom_signature_field_name)
|
228
|
-
# This option can only be used on versions greater than 1.15.0 of the
|
229
|
-
# PKI Express.
|
230
|
-
@version_manager.require_version('1.15')
|
231
|
-
end
|
232
|
-
|
233
|
-
if @certification_level
|
234
|
-
args.append('--certification-level')
|
235
|
-
args.append(@certification_level)
|
236
|
-
# This option can only be used on versions greater than 1.16.0 of the
|
237
|
-
# PKI Express.
|
238
|
-
@version_manager.require_version('1.16')
|
239
|
-
end
|
240
|
-
|
241
|
-
if @suppress_default_visual_representation
|
242
|
-
args.append('--suppress-default-visual-rep')
|
243
|
-
# This option can only be used on versions greater than 1.13.1 of the
|
244
|
-
# PKI Express.
|
245
|
-
@version_manager.require_version('1.13.1')
|
246
|
-
end
|
247
|
-
|
248
|
-
if @reason
|
249
|
-
args.append('--reason')
|
250
|
-
args.append(@reason)
|
251
|
-
# This option can only be used on versions greater than 1.13 of the
|
252
|
-
# PKI Express.
|
253
|
-
@version_manager.require_version('1.13')
|
254
|
-
end
|
255
|
-
|
256
|
-
if get_cert
|
257
|
-
# This option can only be used on versions greater than 1.8.0 of the
|
258
|
-
# PKI Express.
|
259
|
-
@version_manager.require_version('1.8')
|
260
|
-
|
261
|
-
# Invoke command.
|
262
|
-
result = invoke(Commands::SIGN_PADES, args)
|
263
|
-
|
264
|
-
# Parse output and return result.
|
265
|
-
model = parse_output(result)
|
266
|
-
return PKCertificate.new(model.fetch(:signer))
|
267
|
-
else
|
268
|
-
# Invoke command with plain text output (to support PKI Express < 1.3)
|
269
|
-
result = invoke_plain(Commands::SIGN_PADES, args)
|
270
|
-
end
|
271
|
-
|
272
|
-
end
|
273
|
-
|
274
|
-
end
|
1
|
+
module PkiExpress
|
2
|
+
|
3
|
+
class PadesSigner < Signer
|
4
|
+
attr_accessor :suppress_default_visual_representation, :overwrite_original_file
|
5
|
+
attr_accessor :custom_signature_field_name, :certification_level, :reason
|
6
|
+
|
7
|
+
def initialize(config=PkiExpressConfig.new)
|
8
|
+
super(config)
|
9
|
+
@pdf_to_sign_path = nil
|
10
|
+
@vr_json_path = nil
|
11
|
+
@overwrite_original_file = false
|
12
|
+
@version_manager = VersionManager.new
|
13
|
+
@custom_signature_field_name = nil
|
14
|
+
@certification_level = nil
|
15
|
+
@reason = nil
|
16
|
+
@suppress_default_visual_representation = false
|
17
|
+
end
|
18
|
+
|
19
|
+
# region set_visual_representation
|
20
|
+
|
21
|
+
def visual_representation_content_raw
|
22
|
+
_get_visual_representation_content_raw
|
23
|
+
end
|
24
|
+
|
25
|
+
def _get_visual_representation_content_raw
|
26
|
+
unless @vr_json_path
|
27
|
+
return nil
|
28
|
+
end
|
29
|
+
|
30
|
+
File.read(@vr_json_path)
|
31
|
+
end
|
32
|
+
private :_get_visual_representation_content_raw
|
33
|
+
|
34
|
+
def visual_representation_content_raw=(content_raw)
|
35
|
+
_set_visual_representation_content_raw(content_raw)
|
36
|
+
end
|
37
|
+
|
38
|
+
def _set_visual_representation_content_raw(content_raw)
|
39
|
+
unless content_raw
|
40
|
+
raise 'The provided "visual_representation" is not valid'
|
41
|
+
end
|
42
|
+
|
43
|
+
temp_file_path = self.create_temp_file
|
44
|
+
File.open(temp_file_path, 'wb') do |f|
|
45
|
+
f.write(content_raw)
|
46
|
+
end
|
47
|
+
@vr_json_path = temp_file_path
|
48
|
+
end
|
49
|
+
private :_set_visual_representation_content_raw
|
50
|
+
|
51
|
+
def visual_representation_path
|
52
|
+
_get_visual_representation_path
|
53
|
+
end
|
54
|
+
|
55
|
+
def _get_visual_representation_path
|
56
|
+
@vr_json_path
|
57
|
+
end
|
58
|
+
private :_get_visual_representation_path
|
59
|
+
|
60
|
+
def visual_representation_path=(path)
|
61
|
+
_set_visual_representation_path(path)
|
62
|
+
end
|
63
|
+
|
64
|
+
def _set_visual_representation_path(path)
|
65
|
+
unless path
|
66
|
+
raise 'The provided "visual_representation_path" is not valid'
|
67
|
+
end
|
68
|
+
unless File.exists?(path)
|
69
|
+
raise 'The provided "visual_representation_path" does not exist'
|
70
|
+
end
|
71
|
+
@vr_json_path = path
|
72
|
+
end
|
73
|
+
private :_set_visual_representation_path
|
74
|
+
|
75
|
+
def visual_representation
|
76
|
+
_get_visual_representation
|
77
|
+
end
|
78
|
+
|
79
|
+
def _get_visual_representation
|
80
|
+
unless @vr_json_path
|
81
|
+
return nil
|
82
|
+
end
|
83
|
+
|
84
|
+
content = File.read(@vr_json_path)
|
85
|
+
JSON.parse(content)
|
86
|
+
end
|
87
|
+
private :_get_visual_representation
|
88
|
+
|
89
|
+
|
90
|
+
def visual_representation=(vr)
|
91
|
+
_set_visual_representation(vr)
|
92
|
+
end
|
93
|
+
|
94
|
+
def _set_visual_representation(vr)
|
95
|
+
temp_file_path = self.create_temp_file
|
96
|
+
json = JSON.pretty_generate(vr.to_model)
|
97
|
+
File.open(temp_file_path, 'w') do |f|
|
98
|
+
f.write(json)
|
99
|
+
end
|
100
|
+
@vr_json_path = temp_file_path
|
101
|
+
end
|
102
|
+
private :_set_visual_representation
|
103
|
+
|
104
|
+
# endregion
|
105
|
+
|
106
|
+
# region The "pdf_to_sign" accessors
|
107
|
+
|
108
|
+
def pdf_to_sign
|
109
|
+
_get_pdf_to_sign
|
110
|
+
end
|
111
|
+
|
112
|
+
def _get_pdf_to_sign
|
113
|
+
unless @pdf_to_sign_path
|
114
|
+
return nil
|
115
|
+
end
|
116
|
+
|
117
|
+
File.read(@pdf_to_sign_path)
|
118
|
+
end
|
119
|
+
private :_get_pdf_to_sign
|
120
|
+
|
121
|
+
def pdf_to_sign=(content_raw)
|
122
|
+
_set_pdf_to_sign(content_raw)
|
123
|
+
end
|
124
|
+
|
125
|
+
def _set_pdf_to_sign(content_raw)
|
126
|
+
unless content_raw
|
127
|
+
raise 'The provided "pdf_to_sign" is not valid'
|
128
|
+
end
|
129
|
+
|
130
|
+
temp_file_path = self.create_temp_file
|
131
|
+
File.open(temp_file_path, 'wb') do |f|
|
132
|
+
f.write(content_raw)
|
133
|
+
end
|
134
|
+
@pdf_to_sign_path = temp_file_path
|
135
|
+
end
|
136
|
+
private :_set_pdf_to_sign
|
137
|
+
|
138
|
+
def pdf_to_sign_base64
|
139
|
+
_get_pdf_to_sign_base64
|
140
|
+
end
|
141
|
+
|
142
|
+
def _get_pdf_to_sign_base64
|
143
|
+
unless @pdf_to_sign_path
|
144
|
+
return nil
|
145
|
+
end
|
146
|
+
|
147
|
+
content = File.read(@pdf_to_sign_path)
|
148
|
+
Base64.encode64(content)
|
149
|
+
end
|
150
|
+
private :_get_pdf_to_sign_base64
|
151
|
+
|
152
|
+
def pdf_to_sign_base64=(content_base64)
|
153
|
+
_set_pdf_to_sign_base64(content_base64)
|
154
|
+
end
|
155
|
+
|
156
|
+
def _set_pdf_to_sign_base64(content_base64)
|
157
|
+
unless content_base64
|
158
|
+
raise 'The provided "pdf_to_sign_base64" is not valid'
|
159
|
+
end
|
160
|
+
|
161
|
+
begin
|
162
|
+
content_raw = Base64.decode64(content_base64)
|
163
|
+
rescue Error
|
164
|
+
raise 'The provided "pdf_to_sign_base64" is not Base64-encoded'
|
165
|
+
end
|
166
|
+
|
167
|
+
_set_pdf_to_sign(content_raw)
|
168
|
+
end
|
169
|
+
private :_set_pdf_to_sign_base64
|
170
|
+
|
171
|
+
def pdf_to_sign_path
|
172
|
+
_get_pdf_to_sign_path
|
173
|
+
end
|
174
|
+
|
175
|
+
def _get_pdf_to_sign_path
|
176
|
+
@pdf_to_sign_path
|
177
|
+
end
|
178
|
+
private :_get_pdf_to_sign_path
|
179
|
+
|
180
|
+
def pdf_to_sign_path=(path)
|
181
|
+
_set_pdf_to_sign_path(path)
|
182
|
+
end
|
183
|
+
|
184
|
+
def _set_pdf_to_sign_path(path)
|
185
|
+
unless path
|
186
|
+
raise 'The provided "pdf_to_sign_path" is not valid'
|
187
|
+
end
|
188
|
+
unless File.exists?(path)
|
189
|
+
raise 'The provided "pdf_to_sign_path" does not exist'
|
190
|
+
end
|
191
|
+
@pdf_to_sign_path = path
|
192
|
+
end
|
193
|
+
private :_set_pdf_to_sign_path
|
194
|
+
|
195
|
+
# endregion
|
196
|
+
|
197
|
+
def sign(get_cert=false)
|
198
|
+
unless @pdf_to_sign_path
|
199
|
+
raise 'The PDF to be signed was not set'
|
200
|
+
end
|
201
|
+
|
202
|
+
unless @overwrite_original_file || @output_file_path
|
203
|
+
raise 'The output destination was not set'
|
204
|
+
end
|
205
|
+
|
206
|
+
args = [
|
207
|
+
@pdf_to_sign_path,
|
208
|
+
]
|
209
|
+
|
210
|
+
# Logic to overwrite original file or use the output file
|
211
|
+
if @overwrite_original_file
|
212
|
+
args.append('--overwrite')
|
213
|
+
else
|
214
|
+
args.append(@output_file_path)
|
215
|
+
end
|
216
|
+
|
217
|
+
# Verify and add common options between signers.
|
218
|
+
verify_and_add_common_options(args)
|
219
|
+
|
220
|
+
if @vr_json_path
|
221
|
+
args.append('--visual-rep')
|
222
|
+
args.append(@vr_json_path)
|
223
|
+
end
|
224
|
+
|
225
|
+
if @custom_signature_field_name
|
226
|
+
args.append('--custom-signature-field-name')
|
227
|
+
args.append(@custom_signature_field_name)
|
228
|
+
# This option can only be used on versions greater than 1.15.0 of the
|
229
|
+
# PKI Express.
|
230
|
+
@version_manager.require_version('1.15')
|
231
|
+
end
|
232
|
+
|
233
|
+
if @certification_level
|
234
|
+
args.append('--certification-level')
|
235
|
+
args.append(@certification_level)
|
236
|
+
# This option can only be used on versions greater than 1.16.0 of the
|
237
|
+
# PKI Express.
|
238
|
+
@version_manager.require_version('1.16')
|
239
|
+
end
|
240
|
+
|
241
|
+
if @suppress_default_visual_representation
|
242
|
+
args.append('--suppress-default-visual-rep')
|
243
|
+
# This option can only be used on versions greater than 1.13.1 of the
|
244
|
+
# PKI Express.
|
245
|
+
@version_manager.require_version('1.13.1')
|
246
|
+
end
|
247
|
+
|
248
|
+
if @reason
|
249
|
+
args.append('--reason')
|
250
|
+
args.append(@reason)
|
251
|
+
# This option can only be used on versions greater than 1.13 of the
|
252
|
+
# PKI Express.
|
253
|
+
@version_manager.require_version('1.13')
|
254
|
+
end
|
255
|
+
|
256
|
+
if get_cert
|
257
|
+
# This option can only be used on versions greater than 1.8.0 of the
|
258
|
+
# PKI Express.
|
259
|
+
@version_manager.require_version('1.8')
|
260
|
+
|
261
|
+
# Invoke command.
|
262
|
+
result = invoke(Commands::SIGN_PADES, args)
|
263
|
+
|
264
|
+
# Parse output and return result.
|
265
|
+
model = parse_output(result)
|
266
|
+
return PKCertificate.new(model.fetch(:signer))
|
267
|
+
else
|
268
|
+
# Invoke command with plain text output (to support PKI Express < 1.3)
|
269
|
+
result = invoke_plain(Commands::SIGN_PADES, args)
|
270
|
+
end
|
271
|
+
|
272
|
+
end
|
273
|
+
|
274
|
+
end
|
275
275
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
module PkiExpress
|
2
|
-
class PadesSignerInfo < CadesSignerInfo
|
3
|
-
attr_accessor :is_document_timestamp, :signature_file_name
|
4
|
-
def initialize(model)
|
5
|
-
super(model)
|
6
|
-
@is_document_timestamp = model.fetch(:isDocumentTimestamp)
|
7
|
-
@signature_field_name = model.fetch(:signatureFieldName)
|
8
|
-
end
|
9
|
-
end
|
1
|
+
module PkiExpress
|
2
|
+
class PadesSignerInfo < CadesSignerInfo
|
3
|
+
attr_accessor :is_document_timestamp, :signature_file_name
|
4
|
+
def initialize(model)
|
5
|
+
super(model)
|
6
|
+
@is_document_timestamp = model.fetch(:isDocumentTimestamp)
|
7
|
+
@signature_field_name = model.fetch(:signatureFieldName)
|
8
|
+
end
|
9
|
+
end
|
10
10
|
end
|
@@ -1,17 +1,17 @@
|
|
1
|
-
module PkiExpress
|
2
|
-
class PadesSize
|
3
|
-
attr_accessor :width, :height
|
4
|
-
|
5
|
-
def initialize(width, height)
|
6
|
-
@width = width
|
7
|
-
@height = height
|
8
|
-
end
|
9
|
-
|
10
|
-
def to_model
|
11
|
-
{
|
12
|
-
width: @width,
|
13
|
-
height: @height,
|
14
|
-
}
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
1
|
+
module PkiExpress
|
2
|
+
class PadesSize
|
3
|
+
attr_accessor :width, :height
|
4
|
+
|
5
|
+
def initialize(width, height)
|
6
|
+
@width = width
|
7
|
+
@height = height
|
8
|
+
end
|
9
|
+
|
10
|
+
def to_model
|
11
|
+
{
|
12
|
+
width: @width,
|
13
|
+
height: @height,
|
14
|
+
}
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
module PkiExpress
|
2
|
-
class PadesTextHorizontalAlign < Enum
|
3
|
-
LEFT = 'Left'
|
4
|
-
RIGHT = 'Right'
|
5
|
-
|
6
|
-
VALUES = [ LEFT, RIGHT ]
|
7
|
-
end
|
8
|
-
end
|
1
|
+
module PkiExpress
|
2
|
+
class PadesTextHorizontalAlign < Enum
|
3
|
+
LEFT = 'Left'
|
4
|
+
RIGHT = 'Right'
|
5
|
+
|
6
|
+
VALUES = [ LEFT, RIGHT ]
|
7
|
+
end
|
8
|
+
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
module PkiExpress
|
2
|
-
class PadesVerticalAlign < Enum
|
3
|
-
TOP = 'Top'
|
4
|
-
CENTER = 'Center'
|
5
|
-
BOTTOM = 'Bottom'
|
6
|
-
|
7
|
-
VALUES = [ TOP, CENTER, BOTTOM ]
|
8
|
-
end
|
9
|
-
end
|
1
|
+
module PkiExpress
|
2
|
+
class PadesVerticalAlign < Enum
|
3
|
+
TOP = 'Top'
|
4
|
+
CENTER = 'Center'
|
5
|
+
BOTTOM = 'Bottom'
|
6
|
+
|
7
|
+
VALUES = [ TOP, CENTER, BOTTOM ]
|
8
|
+
end
|
9
|
+
end
|
@@ -1,22 +1,22 @@
|
|
1
|
-
module PkiExpress
|
2
|
-
class PadesVisualAutoPositioning < PadesVisualPositioning
|
3
|
-
attr_accessor :container, :signature_rectangle_size, :row_spacing
|
4
|
-
|
5
|
-
def initialize(page_number=nil, measurement_units=nil, container=nil, signature_rectangle_size=nil, row_spacing=nil)
|
6
|
-
super(page_number, measurement_units)
|
7
|
-
@container = container
|
8
|
-
@signature_rectangle_size = signature_rectangle_size
|
9
|
-
@row_spacing = row_spacing
|
10
|
-
end
|
11
|
-
|
12
|
-
def to_model
|
13
|
-
model = super
|
14
|
-
model['auto'] = {
|
15
|
-
'container': @container&.to_model,
|
16
|
-
'signatureRectangleSize': @signature_rectangle_size&.to_model,
|
17
|
-
'rowSpacing': @row_spacing,
|
18
|
-
}
|
19
|
-
model
|
20
|
-
end
|
21
|
-
end
|
1
|
+
module PkiExpress
|
2
|
+
class PadesVisualAutoPositioning < PadesVisualPositioning
|
3
|
+
attr_accessor :container, :signature_rectangle_size, :row_spacing
|
4
|
+
|
5
|
+
def initialize(page_number=nil, measurement_units=nil, container=nil, signature_rectangle_size=nil, row_spacing=nil)
|
6
|
+
super(page_number, measurement_units)
|
7
|
+
@container = container
|
8
|
+
@signature_rectangle_size = signature_rectangle_size
|
9
|
+
@row_spacing = row_spacing
|
10
|
+
end
|
11
|
+
|
12
|
+
def to_model
|
13
|
+
model = super
|
14
|
+
model['auto'] = {
|
15
|
+
'container': @container&.to_model,
|
16
|
+
'signatureRectangleSize': @signature_rectangle_size&.to_model,
|
17
|
+
'rowSpacing': @row_spacing,
|
18
|
+
}
|
19
|
+
model
|
20
|
+
end
|
21
|
+
end
|
22
22
|
end
|