pki_express 1.3.1 → 1.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.gitattributes +2 -2
  3. data/.github/workflows/test.yml +21 -21
  4. data/.gitignore +27 -27
  5. data/CHANGELOG.md +19 -16
  6. data/Gemfile +8 -7
  7. data/README.md +24 -24
  8. data/Rakefile +6 -6
  9. data/lib/pki_express/auth_complete_result.rb +21 -21
  10. data/lib/pki_express/auth_start_result.rb +76 -76
  11. data/lib/pki_express/authentication.rb +284 -284
  12. data/lib/pki_express/base_signer.rb +54 -54
  13. data/lib/pki_express/cades_signature.rb +89 -89
  14. data/lib/pki_express/cades_signature_starter.rb +242 -242
  15. data/lib/pki_express/check_service_result.rb +15 -15
  16. data/lib/pki_express/command_error.rb +13 -13
  17. data/lib/pki_express/commands.rb +24 -24
  18. data/lib/pki_express/digest_algorithm.rb +118 -118
  19. data/lib/pki_express/digest_algorithm_and_value.rb +30 -30
  20. data/lib/pki_express/discovery_service_result.rb +25 -25
  21. data/lib/pki_express/enum.rb +9 -9
  22. data/lib/pki_express/error_codes.rb +46 -46
  23. data/lib/pki_express/installation_not_found_error.rb +8 -8
  24. data/lib/pki_express/name.rb +47 -47
  25. data/lib/pki_express/oids.rb +30 -30
  26. data/lib/pki_express/pades_certification_level.rb +7 -7
  27. data/lib/pki_express/pades_horizontal_align.rb +9 -9
  28. data/lib/pki_express/pades_measurement_units.rb +8 -8
  29. data/lib/pki_express/pades_page_optimization.rb +50 -50
  30. data/lib/pki_express/pades_page_orientation.rb +9 -9
  31. data/lib/pki_express/pades_paper_size.rb +21 -21
  32. data/lib/pki_express/pades_signature.rb +16 -16
  33. data/lib/pki_express/pades_signature_explorer.rb +30 -30
  34. data/lib/pki_express/pades_signature_starter.rb +251 -251
  35. data/lib/pki_express/pades_signer.rb +274 -274
  36. data/lib/pki_express/pades_signer_info.rb +9 -9
  37. data/lib/pki_express/pades_size.rb +17 -17
  38. data/lib/pki_express/pades_text_horizontal_align.rb +8 -8
  39. data/lib/pki_express/pades_vertical_align.rb +9 -9
  40. data/lib/pki_express/pades_visual_auto_positioning.rb +21 -21
  41. data/lib/pki_express/pades_visual_image.rb +51 -51
  42. data/lib/pki_express/pades_visual_manual_positioning.rb +16 -16
  43. data/lib/pki_express/pades_visual_positioning.rb +27 -27
  44. data/lib/pki_express/pades_visual_rectangle.rb +74 -74
  45. data/lib/pki_express/pades_visual_representation.rb +22 -22
  46. data/lib/pki_express/pades_visual_text.rb +35 -35
  47. data/lib/pki_express/pk_algorithms.rb +157 -157
  48. data/lib/pki_express/pk_certificate.rb +61 -61
  49. data/lib/pki_express/pki_brazil_certificate_fields.rb +57 -57
  50. data/lib/pki_express/pki_brazil_certificate_types.rb +19 -19
  51. data/lib/pki_express/pki_express_config.rb +39 -26
  52. data/lib/pki_express/pki_express_operator.rb +240 -240
  53. data/lib/pki_express/pki_italy_certificate_fields.rb +15 -15
  54. data/lib/pki_express/pki_italy_certificate_types.rb +11 -11
  55. data/lib/pki_express/signature_algorithm_and_value.rb +34 -34
  56. data/lib/pki_express/signature_explorer.rb +74 -74
  57. data/lib/pki_express/signature_finisher.rb +314 -314
  58. data/lib/pki_express/signature_policy_identifier.rb +20 -20
  59. data/lib/pki_express/signature_start_result.rb +12 -12
  60. data/lib/pki_express/signature_starter.rb +116 -116
  61. data/lib/pki_express/signer.rb +151 -151
  62. data/lib/pki_express/standard_signature_policies.rb +58 -58
  63. data/lib/pki_express/timestamp_authority.rb +50 -50
  64. data/lib/pki_express/trust_service_auth_parameters.rb +20 -20
  65. data/lib/pki_express/trust_service_info.rb +37 -37
  66. data/lib/pki_express/trust_service_manager.rb +258 -258
  67. data/lib/pki_express/trust_service_session_result.rb +29 -29
  68. data/lib/pki_express/trust_service_session_types.rb +7 -7
  69. data/lib/pki_express/tsa_authentication_type.rb +14 -14
  70. data/lib/pki_express/validation_error.rb +8 -8
  71. data/lib/pki_express/validation_item.rb +43 -43
  72. data/lib/pki_express/validation_item_types.rb +103 -103
  73. data/lib/pki_express/validation_results.rb +120 -120
  74. data/lib/pki_express/version.rb +3 -3
  75. data/lib/pki_express/version_manager.rb +20 -20
  76. data/lib/pki_express.rb +69 -69
  77. data/pki_express.gemspec +26 -26
  78. data/spec/pki_express/pki_express_config_spec.rb +73 -0
  79. data/spec/pki_express/pki_express_operator_spec.rb +30 -30
  80. metadata +4 -2
@@ -1,44 +1,44 @@
1
- module PkiExpress
2
-
3
- class ValidationItem
4
- attr_accessor :type, :message, :detail, :inner_validation_results
5
-
6
- def initialize(model)
7
- @type = nil
8
- @message = nil
9
- @detail = nil
10
- @inner_validation_results = nil
11
-
12
- if model
13
- @type = model.fetch(:type)
14
- @message = model.fetch(:message)
15
- @detail = model.fetch(:detail)
16
-
17
- inner_validation_results = model.fetch(:innerValidationResults)
18
- if inner_validation_results
19
- @inner_validation_results = ValidationResults.new(inner_validation_results)
20
- end
21
- end
22
- end
23
-
24
- def to_str(indentation_level=0)
25
- to_s(indentation_level)
26
- end
27
-
28
- def to_s(indentation_level=0)
29
- tab = "\t" * indentation_level
30
- text = tab + @message
31
- if @detail
32
- text += " (#{@detail})"
33
- end
34
-
35
- if @inner_validation_results
36
- text += "\n"
37
- text += @inner_validation_results.to_s(indentation_level + 1)
38
- end
39
-
40
- text
41
- end
42
- end
43
-
1
+ module PkiExpress
2
+
3
+ class ValidationItem
4
+ attr_accessor :type, :message, :detail, :inner_validation_results
5
+
6
+ def initialize(model)
7
+ @type = nil
8
+ @message = nil
9
+ @detail = nil
10
+ @inner_validation_results = nil
11
+
12
+ if model
13
+ @type = model.fetch(:type)
14
+ @message = model.fetch(:message)
15
+ @detail = model.fetch(:detail)
16
+
17
+ inner_validation_results = model.fetch(:innerValidationResults)
18
+ if inner_validation_results
19
+ @inner_validation_results = ValidationResults.new(inner_validation_results)
20
+ end
21
+ end
22
+ end
23
+
24
+ def to_str(indentation_level=0)
25
+ to_s(indentation_level)
26
+ end
27
+
28
+ def to_s(indentation_level=0)
29
+ tab = "\t" * indentation_level
30
+ text = tab + @message
31
+ if @detail
32
+ text += " (#{@detail})"
33
+ end
34
+
35
+ if @inner_validation_results
36
+ text += "\n"
37
+ text += @inner_validation_results.to_s(indentation_level + 1)
38
+ end
39
+
40
+ text
41
+ end
42
+ end
43
+
44
44
  end
@@ -1,103 +1,103 @@
1
- module PkiExpress
2
- class ValidationItemTypes < Enum
3
- SUCCESS = 'Success'
4
- CERTIFICATE_NOT_YET_VALID = 'CertificateNotYetValid'
5
- CERTIFICATE_EXPIRED = 'CertificateExpired'
6
- CERTIFICATE_REVOKED = 'CertificateRevoked'
7
- CERTIFICATE_ISSUER_NOT_FOUND = 'CertificateIssuerNotFound'
8
- CERTIFICATE_REVOCATION_STATUS_UNKNOWN = 'CertificateRevocationStatusUnknown'
9
- CERTIFICATE_CHAIN_ROOT_NOT_TRUSTED = 'CertificateChainRootNotTrusted'
10
- INVALID_CERTIFICATE_SIGNATURE = 'InvalidCertificateSignature'
11
- DECODE_ERROR = 'DecodeError'
12
- REQUIRED_SIGNED_ATTRIBUTE_MISSING = 'RequiredSignedAttributeMissing'
13
- FORBIDDEN_SIGNED_ATTRIBUTE_PRESENT = 'ForbiddenSignedAttributePresent'
14
- REQUIRED_UNSIGNED_ATTRIBUTE_MISSING = 'RequiredUnsignedAttributeMissing'
15
- FORBIDDEN_UNSIGNED_ATTRIBUTE_PRESENT = 'ForbiddenUnsignedAttributePresent'
16
- CONTENT_TYPE_MISMATCH = 'ContentTypeMismatch'
17
- MESSAGE_DIGEST_MISMATCH = 'MessageDigestMismatch'
18
- SIGNING_CERTIFICATE_DIGEST_MISMATCH = 'SigningCertificateDigestMismatch'
19
- SIGNATURE_ALGORITHM_VALIDATION_FAILED = 'SignatureAlgorithmValidationFailed'
20
- REVOCATION_DATA_ISSUED_BEFORE_GRACE_PERIOD = 'RevocationDataIssuedBeforeGracePeriod'
21
- UNCERTIFIED_DATE_REFERENCE = 'UncertifiedDateReference'
22
- SIGNATURE_POLICY_MISMATCH = 'SignaturePolicyMismatch'
23
- SIGNING_TIME_OUT_OF_CERTIFICATE_VALIDITY = 'SigningTimeOutOfCertificateValidity'
24
- UNKNOWN_SIGNED_ATTRIBUTES_PRESENT = 'UnknownSignedAttributesPresent'
25
- UNKNOWN_UNSIGNED_ATTRIBUTES_PRESENT = 'UnknownUnsignedAttributesPresent'
26
- TIMESTAMP_WITH_MORE_THAN_ONE_SIGNED = 'TimestampWithMoreThanOneSigned'
27
- TIMESTAMP_MESSAGE_IMPRINT_MISMATCH = 'TimestampMessageImprintMismatch'
28
- TIMESTAMP_VALIDATION_EXCEPTION = 'TimestampValidationException'
29
- COMPLETE_REFERENCES_MISMATCH = 'CompleteReferencesMismatch'
30
- INVALID_SIGNATURE_TIMESTAMP = 'InvalidSignatureTimestamp'
31
- INVALID_REFERENCES_TIMESTAMP = 'InvalidReferencesTimestamp'
32
- INVALID_ARCHIVE_TIMESTAMP = 'InvalidArchiveTimestamp'
33
- INVALID_KEY_USAGE = 'InvalidKeyUsage'
34
- INVALID_OCSP_RESPONSE = 'InvalidOcspResponse'
35
- UNAUTHORIZED_ISSUER = 'UnauthorizedIssuer'
36
- UNKNOWN_ROOT_TRUST_STATUS = 'UnknownRootTrustStatus'
37
- INVALID_TSL = 'InvalidTsl'
38
- INVALID_CRL = 'InvalidCrl'
39
- CERTIFICATE_ISSUER_VALID = 'CertificateIssuerValid'
40
- CERTIFICATE_ISSUER_INVALID = 'CertificateIssuerInvalid'
41
- CERTIFICATE_VALIDATION_FAILED = 'CertificateValidationFailed'
42
- SIGNATURE_VULNERABLE_TO_SIGNER_SUBSTITUTION = 'SignatureVulnerableToSignerSubstitution'
43
- INVALID_XML_SIGNATURE_SCHEME = 'InvalidXmlSignatureScheme'
44
- XML_DSIG_CORE_VALIDATION_FAILED = 'XmlDSigCoreValidationFailed'
45
- SIGNATURE_TIMESTAMP_IGNORED = 'SignatureTimestampIgnored'
46
- INVALID_CERTIFICATION_PATH_LEN = 'InvalidCertificationPathLen'
47
- SIGNING_CERTIFICATE_NOT_FOUND = 'SigningCertificateNotFound'
48
- UNAUTHORIZED_AC_ISSUER = 'UnauthorizedACIssuer'
49
- ALGORITHM_NOT_ALLOWED = 'AlgorithmNotAllowed'
50
- UNACCEPTABLE_SIGNATURE_POLICY = 'UnacceptableSignaturePolicy'
51
-
52
- VALUES = [
53
- SUCCESS,
54
- CERTIFICATE_NOT_YET_VALID,
55
- CERTIFICATE_EXPIRED,
56
- CERTIFICATE_REVOKED,
57
- CERTIFICATE_ISSUER_NOT_FOUND,
58
- CERTIFICATE_REVOCATION_STATUS_UNKNOWN,
59
- CERTIFICATE_CHAIN_ROOT_NOT_TRUSTED,
60
- INVALID_CERTIFICATE_SIGNATURE,
61
- DECODE_ERROR,
62
- REQUIRED_SIGNED_ATTRIBUTE_MISSING,
63
- FORBIDDEN_SIGNED_ATTRIBUTE_PRESENT,
64
- REQUIRED_UNSIGNED_ATTRIBUTE_MISSING,
65
- FORBIDDEN_UNSIGNED_ATTRIBUTE_PRESENT,
66
- CONTENT_TYPE_MISMATCH,
67
- MESSAGE_DIGEST_MISMATCH,
68
- SIGNING_CERTIFICATE_DIGEST_MISMATCH,
69
- SIGNATURE_ALGORITHM_VALIDATION_FAILED,
70
- REVOCATION_DATA_ISSUED_BEFORE_GRACE_PERIOD,
71
- UNCERTIFIED_DATE_REFERENCE,
72
- SIGNATURE_POLICY_MISMATCH,
73
- SIGNING_TIME_OUT_OF_CERTIFICATE_VALIDITY,
74
- UNKNOWN_SIGNED_ATTRIBUTES_PRESENT,
75
- UNKNOWN_UNSIGNED_ATTRIBUTES_PRESENT,
76
- TIMESTAMP_WITH_MORE_THAN_ONE_SIGNED,
77
- TIMESTAMP_MESSAGE_IMPRINT_MISMATCH,
78
- TIMESTAMP_VALIDATION_EXCEPTION,
79
- COMPLETE_REFERENCES_MISMATCH,
80
- INVALID_SIGNATURE_TIMESTAMP,
81
- INVALID_REFERENCES_TIMESTAMP,
82
- INVALID_ARCHIVE_TIMESTAMP,
83
- INVALID_KEY_USAGE,
84
- INVALID_OCSP_RESPONSE,
85
- UNAUTHORIZED_ISSUER,
86
- UNKNOWN_ROOT_TRUST_STATUS,
87
- INVALID_TSL,
88
- INVALID_CRL,
89
- CERTIFICATE_ISSUER_VALID,
90
- CERTIFICATE_ISSUER_INVALID,
91
- CERTIFICATE_VALIDATION_FAILED,
92
- SIGNATURE_VULNERABLE_TO_SIGNER_SUBSTITUTION,
93
- INVALID_XML_SIGNATURE_SCHEME,
94
- XML_DSIG_CORE_VALIDATION_FAILED,
95
- SIGNATURE_TIMESTAMP_IGNORED,
96
- INVALID_CERTIFICATION_PATH_LEN,
97
- SIGNING_CERTIFICATE_NOT_FOUND,
98
- UNAUTHORIZED_AC_ISSUER,
99
- ALGORITHM_NOT_ALLOWED,
100
- UNACCEPTABLE_SIGNATURE_POLICY
101
- ]
102
- end
103
- end
1
+ module PkiExpress
2
+ class ValidationItemTypes < Enum
3
+ SUCCESS = 'Success'
4
+ CERTIFICATE_NOT_YET_VALID = 'CertificateNotYetValid'
5
+ CERTIFICATE_EXPIRED = 'CertificateExpired'
6
+ CERTIFICATE_REVOKED = 'CertificateRevoked'
7
+ CERTIFICATE_ISSUER_NOT_FOUND = 'CertificateIssuerNotFound'
8
+ CERTIFICATE_REVOCATION_STATUS_UNKNOWN = 'CertificateRevocationStatusUnknown'
9
+ CERTIFICATE_CHAIN_ROOT_NOT_TRUSTED = 'CertificateChainRootNotTrusted'
10
+ INVALID_CERTIFICATE_SIGNATURE = 'InvalidCertificateSignature'
11
+ DECODE_ERROR = 'DecodeError'
12
+ REQUIRED_SIGNED_ATTRIBUTE_MISSING = 'RequiredSignedAttributeMissing'
13
+ FORBIDDEN_SIGNED_ATTRIBUTE_PRESENT = 'ForbiddenSignedAttributePresent'
14
+ REQUIRED_UNSIGNED_ATTRIBUTE_MISSING = 'RequiredUnsignedAttributeMissing'
15
+ FORBIDDEN_UNSIGNED_ATTRIBUTE_PRESENT = 'ForbiddenUnsignedAttributePresent'
16
+ CONTENT_TYPE_MISMATCH = 'ContentTypeMismatch'
17
+ MESSAGE_DIGEST_MISMATCH = 'MessageDigestMismatch'
18
+ SIGNING_CERTIFICATE_DIGEST_MISMATCH = 'SigningCertificateDigestMismatch'
19
+ SIGNATURE_ALGORITHM_VALIDATION_FAILED = 'SignatureAlgorithmValidationFailed'
20
+ REVOCATION_DATA_ISSUED_BEFORE_GRACE_PERIOD = 'RevocationDataIssuedBeforeGracePeriod'
21
+ UNCERTIFIED_DATE_REFERENCE = 'UncertifiedDateReference'
22
+ SIGNATURE_POLICY_MISMATCH = 'SignaturePolicyMismatch'
23
+ SIGNING_TIME_OUT_OF_CERTIFICATE_VALIDITY = 'SigningTimeOutOfCertificateValidity'
24
+ UNKNOWN_SIGNED_ATTRIBUTES_PRESENT = 'UnknownSignedAttributesPresent'
25
+ UNKNOWN_UNSIGNED_ATTRIBUTES_PRESENT = 'UnknownUnsignedAttributesPresent'
26
+ TIMESTAMP_WITH_MORE_THAN_ONE_SIGNED = 'TimestampWithMoreThanOneSigned'
27
+ TIMESTAMP_MESSAGE_IMPRINT_MISMATCH = 'TimestampMessageImprintMismatch'
28
+ TIMESTAMP_VALIDATION_EXCEPTION = 'TimestampValidationException'
29
+ COMPLETE_REFERENCES_MISMATCH = 'CompleteReferencesMismatch'
30
+ INVALID_SIGNATURE_TIMESTAMP = 'InvalidSignatureTimestamp'
31
+ INVALID_REFERENCES_TIMESTAMP = 'InvalidReferencesTimestamp'
32
+ INVALID_ARCHIVE_TIMESTAMP = 'InvalidArchiveTimestamp'
33
+ INVALID_KEY_USAGE = 'InvalidKeyUsage'
34
+ INVALID_OCSP_RESPONSE = 'InvalidOcspResponse'
35
+ UNAUTHORIZED_ISSUER = 'UnauthorizedIssuer'
36
+ UNKNOWN_ROOT_TRUST_STATUS = 'UnknownRootTrustStatus'
37
+ INVALID_TSL = 'InvalidTsl'
38
+ INVALID_CRL = 'InvalidCrl'
39
+ CERTIFICATE_ISSUER_VALID = 'CertificateIssuerValid'
40
+ CERTIFICATE_ISSUER_INVALID = 'CertificateIssuerInvalid'
41
+ CERTIFICATE_VALIDATION_FAILED = 'CertificateValidationFailed'
42
+ SIGNATURE_VULNERABLE_TO_SIGNER_SUBSTITUTION = 'SignatureVulnerableToSignerSubstitution'
43
+ INVALID_XML_SIGNATURE_SCHEME = 'InvalidXmlSignatureScheme'
44
+ XML_DSIG_CORE_VALIDATION_FAILED = 'XmlDSigCoreValidationFailed'
45
+ SIGNATURE_TIMESTAMP_IGNORED = 'SignatureTimestampIgnored'
46
+ INVALID_CERTIFICATION_PATH_LEN = 'InvalidCertificationPathLen'
47
+ SIGNING_CERTIFICATE_NOT_FOUND = 'SigningCertificateNotFound'
48
+ UNAUTHORIZED_AC_ISSUER = 'UnauthorizedACIssuer'
49
+ ALGORITHM_NOT_ALLOWED = 'AlgorithmNotAllowed'
50
+ UNACCEPTABLE_SIGNATURE_POLICY = 'UnacceptableSignaturePolicy'
51
+
52
+ VALUES = [
53
+ SUCCESS,
54
+ CERTIFICATE_NOT_YET_VALID,
55
+ CERTIFICATE_EXPIRED,
56
+ CERTIFICATE_REVOKED,
57
+ CERTIFICATE_ISSUER_NOT_FOUND,
58
+ CERTIFICATE_REVOCATION_STATUS_UNKNOWN,
59
+ CERTIFICATE_CHAIN_ROOT_NOT_TRUSTED,
60
+ INVALID_CERTIFICATE_SIGNATURE,
61
+ DECODE_ERROR,
62
+ REQUIRED_SIGNED_ATTRIBUTE_MISSING,
63
+ FORBIDDEN_SIGNED_ATTRIBUTE_PRESENT,
64
+ REQUIRED_UNSIGNED_ATTRIBUTE_MISSING,
65
+ FORBIDDEN_UNSIGNED_ATTRIBUTE_PRESENT,
66
+ CONTENT_TYPE_MISMATCH,
67
+ MESSAGE_DIGEST_MISMATCH,
68
+ SIGNING_CERTIFICATE_DIGEST_MISMATCH,
69
+ SIGNATURE_ALGORITHM_VALIDATION_FAILED,
70
+ REVOCATION_DATA_ISSUED_BEFORE_GRACE_PERIOD,
71
+ UNCERTIFIED_DATE_REFERENCE,
72
+ SIGNATURE_POLICY_MISMATCH,
73
+ SIGNING_TIME_OUT_OF_CERTIFICATE_VALIDITY,
74
+ UNKNOWN_SIGNED_ATTRIBUTES_PRESENT,
75
+ UNKNOWN_UNSIGNED_ATTRIBUTES_PRESENT,
76
+ TIMESTAMP_WITH_MORE_THAN_ONE_SIGNED,
77
+ TIMESTAMP_MESSAGE_IMPRINT_MISMATCH,
78
+ TIMESTAMP_VALIDATION_EXCEPTION,
79
+ COMPLETE_REFERENCES_MISMATCH,
80
+ INVALID_SIGNATURE_TIMESTAMP,
81
+ INVALID_REFERENCES_TIMESTAMP,
82
+ INVALID_ARCHIVE_TIMESTAMP,
83
+ INVALID_KEY_USAGE,
84
+ INVALID_OCSP_RESPONSE,
85
+ UNAUTHORIZED_ISSUER,
86
+ UNKNOWN_ROOT_TRUST_STATUS,
87
+ INVALID_TSL,
88
+ INVALID_CRL,
89
+ CERTIFICATE_ISSUER_VALID,
90
+ CERTIFICATE_ISSUER_INVALID,
91
+ CERTIFICATE_VALIDATION_FAILED,
92
+ SIGNATURE_VULNERABLE_TO_SIGNER_SUBSTITUTION,
93
+ INVALID_XML_SIGNATURE_SCHEME,
94
+ XML_DSIG_CORE_VALIDATION_FAILED,
95
+ SIGNATURE_TIMESTAMP_IGNORED,
96
+ INVALID_CERTIFICATION_PATH_LEN,
97
+ SIGNING_CERTIFICATE_NOT_FOUND,
98
+ UNAUTHORIZED_AC_ISSUER,
99
+ ALGORITHM_NOT_ALLOWED,
100
+ UNACCEPTABLE_SIGNATURE_POLICY
101
+ ]
102
+ end
103
+ end
@@ -1,121 +1,121 @@
1
- module PkiExpress
2
-
3
- class ValidationResults
4
- attr_accessor :errors, :warnings, :passed_checks
5
-
6
- def initialize(model)
7
- @errors = []
8
- @warnings = []
9
- @passed_checks = []
10
-
11
- if model
12
- errors = model.fetch(:errors)
13
- if errors
14
- @errors = convert_items(errors)
15
- end
16
-
17
- warnings = model.fetch(:warnings)
18
- if warnings
19
- @warnings = convert_items(warnings)
20
- end
21
-
22
- passed_checks = model.fetch(:passedChecks)
23
- if passed_checks
24
- @passed_checks = convert_items(passed_checks)
25
- end
26
- end
27
- end
28
-
29
- def to_str(indentation_level = 0)
30
- to_s(indentation_level)
31
- end
32
-
33
- def to_s(indentation_level = 0)
34
- item_indent = "\t" * indentation_level
35
- text = ''
36
-
37
- text += get_summary(indentation_level)
38
- if has_errors
39
- text += "\n#{item_indent}Errors:\n"
40
- text += join_items(@errors, indentation_level)
41
- end
42
-
43
- if has_warnings
44
- text += "\n#{item_indent}Warnings:\n"
45
- text += join_items(@warnings, indentation_level)
46
- end
47
-
48
- if not @passed_checks.nil? and @passed_checks.length > 0
49
- text += "\n#{item_indent}Passed Checks:\n"
50
- text += join_items(@passed_checks, indentation_level)
51
- end
52
-
53
- text
54
- end
55
-
56
- def is_valid
57
- not has_errors
58
- end
59
-
60
- def checks_performed
61
- @errors.length + @warnings.length + @passed_checks.length
62
- end
63
-
64
- def has_errors
65
- @errors && @errors.length > 0
66
- end
67
-
68
- def has_warnings
69
- @warnings && @warnings.length > 0
70
- end
71
-
72
- def get_summary(indentation_level=0)
73
- item_indent = "\t" * indentation_level
74
- text = "#{item_indent}Validation Results: "
75
-
76
- if checks_performed == 0
77
- text += 'no checks performed'
78
- else
79
- text += "#{checks_performed} checks performed"
80
- if has_errors
81
- text += ", #{@errors.length} errors"
82
- end
83
- if has_warnings
84
- text += ", #{@warnings.length} warnings"
85
- end
86
- if not @passed_checks.nil? and @passed_checks.length
87
- if not has_errors and not has_warnings
88
- text += ', all passed'
89
- else
90
- text += ", #{@passed_checks.length} passed"
91
- end
92
- end
93
- end
94
-
95
- text
96
- end
97
-
98
- def convert_items(items)
99
- items.map { |i| ValidationItem.new(i) }
100
- end
101
-
102
- def join_items(items, indentation_level=0)
103
- text = ''
104
- is_first = true
105
- item_indent = "\t" * indentation_level
106
-
107
- items.each do |i|
108
- if is_first
109
- is_first = false
110
- else
111
- text += "\n"
112
- end
113
- text += item_indent + '- '
114
- text += i.to_s(indentation_level)
115
- end
116
-
117
- text
118
- end
119
- end
120
-
1
+ module PkiExpress
2
+
3
+ class ValidationResults
4
+ attr_accessor :errors, :warnings, :passed_checks
5
+
6
+ def initialize(model)
7
+ @errors = []
8
+ @warnings = []
9
+ @passed_checks = []
10
+
11
+ if model
12
+ errors = model.fetch(:errors)
13
+ if errors
14
+ @errors = convert_items(errors)
15
+ end
16
+
17
+ warnings = model.fetch(:warnings)
18
+ if warnings
19
+ @warnings = convert_items(warnings)
20
+ end
21
+
22
+ passed_checks = model.fetch(:passedChecks)
23
+ if passed_checks
24
+ @passed_checks = convert_items(passed_checks)
25
+ end
26
+ end
27
+ end
28
+
29
+ def to_str(indentation_level = 0)
30
+ to_s(indentation_level)
31
+ end
32
+
33
+ def to_s(indentation_level = 0)
34
+ item_indent = "\t" * indentation_level
35
+ text = ''
36
+
37
+ text += get_summary(indentation_level)
38
+ if has_errors
39
+ text += "\n#{item_indent}Errors:\n"
40
+ text += join_items(@errors, indentation_level)
41
+ end
42
+
43
+ if has_warnings
44
+ text += "\n#{item_indent}Warnings:\n"
45
+ text += join_items(@warnings, indentation_level)
46
+ end
47
+
48
+ if not @passed_checks.nil? and @passed_checks.length > 0
49
+ text += "\n#{item_indent}Passed Checks:\n"
50
+ text += join_items(@passed_checks, indentation_level)
51
+ end
52
+
53
+ text
54
+ end
55
+
56
+ def is_valid
57
+ not has_errors
58
+ end
59
+
60
+ def checks_performed
61
+ @errors.length + @warnings.length + @passed_checks.length
62
+ end
63
+
64
+ def has_errors
65
+ @errors && @errors.length > 0
66
+ end
67
+
68
+ def has_warnings
69
+ @warnings && @warnings.length > 0
70
+ end
71
+
72
+ def get_summary(indentation_level=0)
73
+ item_indent = "\t" * indentation_level
74
+ text = "#{item_indent}Validation Results: "
75
+
76
+ if checks_performed == 0
77
+ text += 'no checks performed'
78
+ else
79
+ text += "#{checks_performed} checks performed"
80
+ if has_errors
81
+ text += ", #{@errors.length} errors"
82
+ end
83
+ if has_warnings
84
+ text += ", #{@warnings.length} warnings"
85
+ end
86
+ if not @passed_checks.nil? and @passed_checks.length
87
+ if not has_errors and not has_warnings
88
+ text += ', all passed'
89
+ else
90
+ text += ", #{@passed_checks.length} passed"
91
+ end
92
+ end
93
+ end
94
+
95
+ text
96
+ end
97
+
98
+ def convert_items(items)
99
+ items.map { |i| ValidationItem.new(i) }
100
+ end
101
+
102
+ def join_items(items, indentation_level=0)
103
+ text = ''
104
+ is_first = true
105
+ item_indent = "\t" * indentation_level
106
+
107
+ items.each do |i|
108
+ if is_first
109
+ is_first = false
110
+ else
111
+ text += "\n"
112
+ end
113
+ text += item_indent + '- '
114
+ text += i.to_s(indentation_level)
115
+ end
116
+
117
+ text
118
+ end
119
+ end
120
+
121
121
  end
@@ -1,3 +1,3 @@
1
- module PkiExpress
2
- VERSION = '1.3.1'
3
- end
1
+ module PkiExpress
2
+ VERSION = '1.3.2'
3
+ end
@@ -1,21 +1,21 @@
1
- module PkiExpress
2
-
3
- class VersionManager
4
- attr_reader :min_version
5
-
6
- def initialize
7
- @min_version = '0.0.0'
8
- end
9
-
10
- def require_version(candidate)
11
- if Gem::Version.new(candidate) > Gem::Version.new(@min_version)
12
- @min_version = candidate
13
- end
14
- end
15
-
16
- def require_min_version_flag?
17
- Gem::Version.new(@min_version) > Gem::Version.new('1.3')
18
- end
19
- end
20
-
1
+ module PkiExpress
2
+
3
+ class VersionManager
4
+ attr_reader :min_version
5
+
6
+ def initialize
7
+ @min_version = '0.0.0'
8
+ end
9
+
10
+ def require_version(candidate)
11
+ if Gem::Version.new(candidate) > Gem::Version.new(@min_version)
12
+ @min_version = candidate
13
+ end
14
+ end
15
+
16
+ def require_min_version_flag?
17
+ Gem::Version.new(@min_version) > Gem::Version.new('1.3')
18
+ end
19
+ end
20
+
21
21
  end