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.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +2 -2
  3. data/.github/workflows/test.yml +22 -0
  4. data/.gitignore +27 -27
  5. data/.rspec +1 -0
  6. data/CHANGELOG.md +19 -12
  7. data/Gemfile +9 -4
  8. data/README.md +24 -24
  9. data/Rakefile +7 -1
  10. data/lib/pki_express/auth_complete_result.rb +21 -21
  11. data/lib/pki_express/auth_start_result.rb +76 -76
  12. data/lib/pki_express/authentication.rb +284 -284
  13. data/lib/pki_express/base_signer.rb +54 -54
  14. data/lib/pki_express/cades_signature.rb +89 -89
  15. data/lib/pki_express/cades_signature_starter.rb +242 -242
  16. data/lib/pki_express/check_service_result.rb +15 -15
  17. data/lib/pki_express/command_error.rb +13 -13
  18. data/lib/pki_express/commands.rb +24 -24
  19. data/lib/pki_express/digest_algorithm.rb +118 -118
  20. data/lib/pki_express/digest_algorithm_and_value.rb +30 -30
  21. data/lib/pki_express/discovery_service_result.rb +25 -25
  22. data/lib/pki_express/enum.rb +9 -9
  23. data/lib/pki_express/error_codes.rb +46 -46
  24. data/lib/pki_express/installation_not_found_error.rb +8 -8
  25. data/lib/pki_express/name.rb +47 -47
  26. data/lib/pki_express/oids.rb +30 -30
  27. data/lib/pki_express/pades_certification_level.rb +7 -7
  28. data/lib/pki_express/pades_horizontal_align.rb +9 -9
  29. data/lib/pki_express/pades_measurement_units.rb +8 -8
  30. data/lib/pki_express/pades_page_optimization.rb +50 -50
  31. data/lib/pki_express/pades_page_orientation.rb +9 -9
  32. data/lib/pki_express/pades_paper_size.rb +21 -21
  33. data/lib/pki_express/pades_signature.rb +16 -16
  34. data/lib/pki_express/pades_signature_explorer.rb +30 -30
  35. data/lib/pki_express/pades_signature_starter.rb +251 -251
  36. data/lib/pki_express/pades_signer.rb +274 -274
  37. data/lib/pki_express/pades_signer_info.rb +9 -9
  38. data/lib/pki_express/pades_size.rb +17 -17
  39. data/lib/pki_express/pades_text_horizontal_align.rb +8 -8
  40. data/lib/pki_express/pades_vertical_align.rb +9 -9
  41. data/lib/pki_express/pades_visual_auto_positioning.rb +21 -21
  42. data/lib/pki_express/pades_visual_image.rb +51 -51
  43. data/lib/pki_express/pades_visual_manual_positioning.rb +16 -16
  44. data/lib/pki_express/pades_visual_positioning.rb +27 -27
  45. data/lib/pki_express/pades_visual_rectangle.rb +74 -74
  46. data/lib/pki_express/pades_visual_representation.rb +22 -22
  47. data/lib/pki_express/pades_visual_text.rb +35 -35
  48. data/lib/pki_express/pk_algorithms.rb +157 -157
  49. data/lib/pki_express/pk_certificate.rb +61 -61
  50. data/lib/pki_express/pki_brazil_certificate_fields.rb +57 -57
  51. data/lib/pki_express/pki_brazil_certificate_types.rb +19 -19
  52. data/lib/pki_express/pki_express_config.rb +39 -26
  53. data/lib/pki_express/pki_express_operator.rb +240 -234
  54. data/lib/pki_express/pki_italy_certificate_fields.rb +15 -15
  55. data/lib/pki_express/pki_italy_certificate_types.rb +11 -11
  56. data/lib/pki_express/signature_algorithm_and_value.rb +34 -34
  57. data/lib/pki_express/signature_explorer.rb +74 -74
  58. data/lib/pki_express/signature_finisher.rb +314 -314
  59. data/lib/pki_express/signature_policy_identifier.rb +20 -20
  60. data/lib/pki_express/signature_start_result.rb +12 -12
  61. data/lib/pki_express/signature_starter.rb +116 -116
  62. data/lib/pki_express/signer.rb +151 -151
  63. data/lib/pki_express/standard_signature_policies.rb +58 -58
  64. data/lib/pki_express/timestamp_authority.rb +50 -50
  65. data/lib/pki_express/trust_service_auth_parameters.rb +20 -20
  66. data/lib/pki_express/trust_service_info.rb +37 -37
  67. data/lib/pki_express/trust_service_manager.rb +258 -258
  68. data/lib/pki_express/trust_service_session_result.rb +29 -29
  69. data/lib/pki_express/trust_service_session_types.rb +7 -7
  70. data/lib/pki_express/tsa_authentication_type.rb +14 -14
  71. data/lib/pki_express/validation_error.rb +8 -8
  72. data/lib/pki_express/validation_item.rb +43 -43
  73. data/lib/pki_express/validation_item_types.rb +103 -103
  74. data/lib/pki_express/validation_results.rb +120 -120
  75. data/lib/pki_express/version.rb +3 -3
  76. data/lib/pki_express/version_manager.rb +20 -20
  77. data/lib/pki_express.rb +69 -69
  78. data/pki_express.gemspec +26 -26
  79. data/spec/pki_express/pki_express_config_spec.rb +73 -0
  80. data/spec/pki_express/pki_express_operator_spec.rb +31 -0
  81. data/spec/spec_helper.rb +13 -0
  82. metadata +17 -9
data/lib/pki_express.rb CHANGED
@@ -1,70 +1,70 @@
1
- require_relative 'pki_express/pki_express_config'
2
- require_relative 'pki_express/pki_express_operator'
3
- require_relative 'pki_express/enum'
4
- require_relative 'pki_express/pk_algorithms'
5
- require_relative 'pki_express/base_signer'
6
- require_relative 'pki_express/signature_starter'
7
- require_relative 'pki_express/signature_explorer'
8
- require_relative 'pki_express/signer'
9
- require_relative 'pki_express/auth_complete_result'
10
- require_relative 'pki_express/auth_start_result'
11
- require_relative 'pki_express/authentication'
12
- require_relative 'pki_express/cades_signature'
13
- require_relative 'pki_express/cades_signature_starter'
14
- require_relative 'pki_express/check_service_result'
15
- require_relative 'pki_express/command_error'
16
- require_relative 'pki_express/commands'
17
- require_relative 'pki_express/digest_algorithm'
18
- require_relative 'pki_express/digest_algorithm_and_value'
19
- require_relative 'pki_express/discovery_service_result'
20
- require_relative 'pki_express/error_codes'
21
- require_relative 'pki_express/installation_not_found_error'
22
- require_relative 'pki_express/oids'
23
- require_relative 'pki_express/name'
24
- require_relative 'pki_express/pades_certification_level'
25
- require_relative 'pki_express/pades_horizontal_align'
26
- require_relative 'pki_express/pades_measurement_units'
27
- require_relative 'pki_express/pades_page_optimization'
28
- require_relative 'pki_express/pades_page_optimization'
29
- require_relative 'pki_express/pades_paper_size'
30
- require_relative 'pki_express/pades_signature'
31
- require_relative 'pki_express/pades_signature_explorer'
32
- require_relative 'pki_express/pades_signature_starter'
33
- require_relative 'pki_express/pades_signer'
34
- require_relative 'pki_express/pades_signer_info'
35
- require_relative 'pki_express/pades_size'
36
- require_relative 'pki_express/pades_text_horizontal_align'
37
- require_relative 'pki_express/pades_vertical_align'
38
- require_relative 'pki_express/pades_visual_positioning'
39
- require_relative 'pki_express/pades_visual_auto_positioning'
40
- require_relative 'pki_express/pades_visual_image'
41
- require_relative 'pki_express/pades_visual_manual_positioning'
42
- require_relative 'pki_express/pades_visual_rectangle'
43
- require_relative 'pki_express/pades_visual_representation'
44
- require_relative 'pki_express/pades_visual_text'
45
- require_relative 'pki_express/pk_certificate'
46
- require_relative 'pki_express/pki_brazil_certificate_fields'
47
- require_relative 'pki_express/pki_brazil_certificate_types'
48
- require_relative 'pki_express/pki_italy_certificate_fields'
49
- require_relative 'pki_express/pki_italy_certificate_types'
50
- require_relative 'pki_express/signature_algorithm_and_value'
51
- require_relative 'pki_express/signature_finisher'
52
- require_relative 'pki_express/signature_policy_identifier'
53
- require_relative 'pki_express/signature_start_result'
54
- require_relative 'pki_express/standard_signature_policies'
55
- require_relative 'pki_express/timestamp_authority'
56
- require_relative 'pki_express/trust_service_auth_parameters'
57
- require_relative 'pki_express/trust_service_info'
58
- require_relative 'pki_express/trust_service_manager'
59
- require_relative 'pki_express/trust_service_session_result'
60
- require_relative 'pki_express/trust_service_session_types'
61
- require_relative 'pki_express/tsa_authentication_type'
62
- require_relative 'pki_express/validation_error'
63
- require_relative 'pki_express/validation_item'
64
- require_relative 'pki_express/validation_item_types'
65
- require_relative 'pki_express/validation_results'
66
- require_relative 'pki_express/version'
67
- require_relative 'pki_express/version_manager'
68
-
69
- module PkiExpress
1
+ require_relative 'pki_express/pki_express_config'
2
+ require_relative 'pki_express/pki_express_operator'
3
+ require_relative 'pki_express/enum'
4
+ require_relative 'pki_express/pk_algorithms'
5
+ require_relative 'pki_express/base_signer'
6
+ require_relative 'pki_express/signature_starter'
7
+ require_relative 'pki_express/signature_explorer'
8
+ require_relative 'pki_express/signer'
9
+ require_relative 'pki_express/auth_complete_result'
10
+ require_relative 'pki_express/auth_start_result'
11
+ require_relative 'pki_express/authentication'
12
+ require_relative 'pki_express/cades_signature'
13
+ require_relative 'pki_express/cades_signature_starter'
14
+ require_relative 'pki_express/check_service_result'
15
+ require_relative 'pki_express/command_error'
16
+ require_relative 'pki_express/commands'
17
+ require_relative 'pki_express/digest_algorithm'
18
+ require_relative 'pki_express/digest_algorithm_and_value'
19
+ require_relative 'pki_express/discovery_service_result'
20
+ require_relative 'pki_express/error_codes'
21
+ require_relative 'pki_express/installation_not_found_error'
22
+ require_relative 'pki_express/oids'
23
+ require_relative 'pki_express/name'
24
+ require_relative 'pki_express/pades_certification_level'
25
+ require_relative 'pki_express/pades_horizontal_align'
26
+ require_relative 'pki_express/pades_measurement_units'
27
+ require_relative 'pki_express/pades_page_optimization'
28
+ require_relative 'pki_express/pades_page_optimization'
29
+ require_relative 'pki_express/pades_paper_size'
30
+ require_relative 'pki_express/pades_signature'
31
+ require_relative 'pki_express/pades_signature_explorer'
32
+ require_relative 'pki_express/pades_signature_starter'
33
+ require_relative 'pki_express/pades_signer'
34
+ require_relative 'pki_express/pades_signer_info'
35
+ require_relative 'pki_express/pades_size'
36
+ require_relative 'pki_express/pades_text_horizontal_align'
37
+ require_relative 'pki_express/pades_vertical_align'
38
+ require_relative 'pki_express/pades_visual_positioning'
39
+ require_relative 'pki_express/pades_visual_auto_positioning'
40
+ require_relative 'pki_express/pades_visual_image'
41
+ require_relative 'pki_express/pades_visual_manual_positioning'
42
+ require_relative 'pki_express/pades_visual_rectangle'
43
+ require_relative 'pki_express/pades_visual_representation'
44
+ require_relative 'pki_express/pades_visual_text'
45
+ require_relative 'pki_express/pk_certificate'
46
+ require_relative 'pki_express/pki_brazil_certificate_fields'
47
+ require_relative 'pki_express/pki_brazil_certificate_types'
48
+ require_relative 'pki_express/pki_italy_certificate_fields'
49
+ require_relative 'pki_express/pki_italy_certificate_types'
50
+ require_relative 'pki_express/signature_algorithm_and_value'
51
+ require_relative 'pki_express/signature_finisher'
52
+ require_relative 'pki_express/signature_policy_identifier'
53
+ require_relative 'pki_express/signature_start_result'
54
+ require_relative 'pki_express/standard_signature_policies'
55
+ require_relative 'pki_express/timestamp_authority'
56
+ require_relative 'pki_express/trust_service_auth_parameters'
57
+ require_relative 'pki_express/trust_service_info'
58
+ require_relative 'pki_express/trust_service_manager'
59
+ require_relative 'pki_express/trust_service_session_result'
60
+ require_relative 'pki_express/trust_service_session_types'
61
+ require_relative 'pki_express/tsa_authentication_type'
62
+ require_relative 'pki_express/validation_error'
63
+ require_relative 'pki_express/validation_item'
64
+ require_relative 'pki_express/validation_item_types'
65
+ require_relative 'pki_express/validation_results'
66
+ require_relative 'pki_express/version'
67
+ require_relative 'pki_express/version_manager'
68
+
69
+ module PkiExpress
70
70
  end
data/pki_express.gemspec CHANGED
@@ -1,27 +1,27 @@
1
- # coding: utf-8
2
- require_relative 'lib/pki_express/version'
3
-
4
- Gem::Specification.new do |spec|
5
- spec.name = 'pki_express'
6
- spec.version = PkiExpress::VERSION
7
- spec.license = 'MIT'
8
- spec.authors = ['Ismael Medeiros']
9
- spec.email = %w{ismaelm@lacunasoftware.com}
10
- spec.homepage = 'http://docs.lacunasoftware.com/en-us/articles/pki-express'
11
- spec.summary = 'Gem for using PKI Express on Ruby'
12
- spec.description = 'Classes to use Lacuna Software\'s PKI Express'
13
- spec.files = `git ls-files -z`.split("\x0")
14
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
15
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
16
- spec.require_paths = ['lib']
17
-
18
- spec.metadata = {
19
- 'bug_tracker_uri' => 'https://github.com/LacunaSoftware/PkiExpressRuby/issues',
20
- 'changelog_uri' => 'https://github.com/LacunaSoftware/PkiExpressRuby/blob/develop/CHANGELOG.md',
21
- 'documentation_uri' => 'http://docs.lacunasoftware.com/en-us/articles/pki-express',
22
- 'source_code_uri' => 'https://github.com/LacunaSoftware/PkiExpressRuby'
23
- }
24
-
25
- spec.add_development_dependency 'bundler', '~> 1.7'
26
- spec.add_development_dependency 'rake', '~> 13'
1
+ # coding: utf-8
2
+ require_relative 'lib/pki_express/version'
3
+
4
+ Gem::Specification.new do |spec|
5
+ spec.name = 'pki_express'
6
+ spec.version = PkiExpress::VERSION
7
+ spec.license = 'MIT'
8
+ spec.authors = ['Ismael Medeiros']
9
+ spec.email = %w{ismaelm@lacunasoftware.com}
10
+ spec.homepage = 'http://docs.lacunasoftware.com/en-us/articles/pki-express'
11
+ spec.summary = 'Gem for using PKI Express on Ruby'
12
+ spec.description = 'Classes to use Lacuna Software\'s PKI Express'
13
+ spec.files = `git ls-files -z`.split("\x0")
14
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
15
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
16
+ spec.require_paths = ['lib']
17
+
18
+ spec.metadata = {
19
+ 'bug_tracker_uri' => 'https://github.com/LacunaSoftware/PkiExpressRuby/issues',
20
+ 'changelog_uri' => 'https://github.com/LacunaSoftware/PkiExpressRuby/blob/develop/CHANGELOG.md',
21
+ 'documentation_uri' => 'http://docs.lacunasoftware.com/en-us/articles/pki-express',
22
+ 'source_code_uri' => 'https://github.com/LacunaSoftware/PkiExpressRuby'
23
+ }
24
+
25
+ spec.add_development_dependency 'bundler', '~> 2.3'
26
+ spec.add_development_dependency 'rake', '~> 13'
27
27
  end
@@ -0,0 +1,73 @@
1
+ require 'faker'
2
+
3
+ require_relative '../spec_helper'
4
+
5
+ module PkiExpress
6
+ describe PkiExpressConfig do
7
+ it 'should set valid default values when no value is passed in contructor' do
8
+ config = PkiExpressConfig.new
9
+ expect(config.pki_express_home).to be_nil
10
+ expect(File.directory?(config.temp_folder)).to be(true)
11
+ expect(File.directory?(config.transfer_data_folder)).to be(true)
12
+ end
13
+
14
+ it 'should set pki_express_home folder when a valid path is passed' do
15
+ fake_pki_express_home = Dir.mktmpdir('pkie')
16
+ config = PkiExpressConfig.new(fake_pki_express_home)
17
+ expect(config.pki_express_home).to equal(fake_pki_express_home)
18
+ Dir.rmdir(fake_pki_express_home)
19
+ end
20
+
21
+ it 'should raise ArgumentError when an invalid path is passed' do
22
+ expect { PkiExpressConfig.new(Faker::String.random) }.to raise_error(ArgumentError)
23
+ end
24
+
25
+ it 'should raise ArgumentError when a path is passed but doesn\'t exist' do
26
+ fake_pki_express_home = Faker::File.dir
27
+ expect { PkiExpressConfig.new(fake_pki_express_home) }.to raise_error(ArgumentError)
28
+ end
29
+
30
+ it 'should set temp_folder when a valid path is passed' do
31
+ fake_temp_folder = Dir.mktmpdir('pkie')
32
+ config = PkiExpressConfig.new(nil, fake_temp_folder)
33
+ expect(config.temp_folder).to equal(fake_temp_folder)
34
+ Dir.rmdir(fake_temp_folder)
35
+ end
36
+
37
+ it 'should set temp_folder with a default folder when no path is passed' do
38
+ config1 = PkiExpressConfig.new
39
+ config2 = PkiExpressConfig.new
40
+ expect(config1.temp_folder).to equal(config2.temp_folder)
41
+ end
42
+
43
+ it 'should raise ArgumentError when an invalid path is passed' do
44
+ expect { PkiExpressConfig.new(nil, Faker::String.random) }.to raise_error(ArgumentError)
45
+ end
46
+
47
+ it 'should raise ArgumentError when a path is passed but doesn\'t exist' do
48
+ fake_pki_express_home = Faker::File.dir
49
+ expect { PkiExpressConfig.new(nil, fake_pki_express_home) }.to raise_error(ArgumentError)
50
+ end
51
+
52
+ it 'should set transfer_data_folder when a valid path is passed' do
53
+ fake_transfer_data_folder = Dir.mktmpdir('pkie')
54
+ config = PkiExpressConfig.new(nil, nil, fake_transfer_data_folder)
55
+ expect(config.transfer_data_folder).to equal(fake_transfer_data_folder)
56
+ Dir.rmdir(fake_transfer_data_folder)
57
+ end
58
+
59
+ it 'should set transfer_data_folder with temp_folder value when no path is passed' do
60
+ config = PkiExpressConfig.new
61
+ expect(config.transfer_data_folder).to equal(config.temp_folder)
62
+ end
63
+
64
+ it 'should raise ArgumentError when an invalid path is passed' do
65
+ expect { PkiExpressConfig.new(nil, nil, Faker::String.random) }.to raise_error(ArgumentError)
66
+ end
67
+
68
+ it 'should raise ArgumentError when a path is passed but doesn\'t exist' do
69
+ fake_pki_express_home = Faker::File.dir
70
+ expect { PkiExpressConfig.new(nil, nil, fake_pki_express_home) }.to raise_error(ArgumentError)
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,31 @@
1
+ require_relative '../spec_helper'
2
+
3
+ module PkiExpress
4
+ describe PkiExpressOperator do
5
+ it "should remove files created by child classes when GC remove its instance" do
6
+ operator = ChildOperator.new
7
+ temp_files = []
8
+ (1..3).each {
9
+ created_file = operator.create_temp_file
10
+ temp_files.append(created_file)
11
+ expect(File.exist?(created_file)).to equal(true)
12
+ }
13
+ operator = nil
14
+ GC.start
15
+
16
+ temp_files.each do |file|
17
+ expect(File.exist?(file)).to equal(false)
18
+ end
19
+ end
20
+ end
21
+
22
+ class ChildOperator < PkiExpressOperator
23
+ def initialize(config=PkiExpressConfig.new)
24
+ super(config)
25
+ end
26
+
27
+ def create_temp_file
28
+ super
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,13 @@
1
+ require_relative '../lib/pki_express'
2
+
3
+ RSpec.configure do |config|
4
+ config.expect_with :rspec do |expectations|
5
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
6
+ end
7
+
8
+ config.mock_with :rspec do |mocks|
9
+ mocks.verify_partial_doubles = true
10
+ end
11
+
12
+ config.shared_context_metadata_behavior = :apply_to_host_groups
13
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pki_express
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ismael Medeiros
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-04 00:00:00.000000000 Z
11
+ date: 2023-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: '2.3'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: '2.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -46,7 +46,9 @@ extensions: []
46
46
  extra_rdoc_files: []
47
47
  files:
48
48
  - ".gitattributes"
49
+ - ".github/workflows/test.yml"
49
50
  - ".gitignore"
51
+ - ".rspec"
50
52
  - CHANGELOG.md
51
53
  - Gemfile
52
54
  - README.md
@@ -120,6 +122,9 @@ files:
120
122
  - lib/pki_express/version.rb
121
123
  - lib/pki_express/version_manager.rb
122
124
  - pki_express.gemspec
125
+ - spec/pki_express/pki_express_config_spec.rb
126
+ - spec/pki_express/pki_express_operator_spec.rb
127
+ - spec/spec_helper.rb
123
128
  homepage: http://docs.lacunasoftware.com/en-us/articles/pki-express
124
129
  licenses:
125
130
  - MIT
@@ -128,7 +133,7 @@ metadata:
128
133
  changelog_uri: https://github.com/LacunaSoftware/PkiExpressRuby/blob/develop/CHANGELOG.md
129
134
  documentation_uri: http://docs.lacunasoftware.com/en-us/articles/pki-express
130
135
  source_code_uri: https://github.com/LacunaSoftware/PkiExpressRuby
131
- post_install_message:
136
+ post_install_message:
132
137
  rdoc_options: []
133
138
  require_paths:
134
139
  - lib
@@ -143,8 +148,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
148
  - !ruby/object:Gem::Version
144
149
  version: '0'
145
150
  requirements: []
146
- rubygems_version: 3.0.3
147
- signing_key:
151
+ rubygems_version: 3.0.3.1
152
+ signing_key:
148
153
  specification_version: 4
149
154
  summary: Gem for using PKI Express on Ruby
150
- test_files: []
155
+ test_files:
156
+ - spec/pki_express/pki_express_config_spec.rb
157
+ - spec/pki_express/pki_express_operator_spec.rb
158
+ - spec/spec_helper.rb