1 // Copyright 2015-present 650 Industries. All rights reserved.
2 
3 // swiftlint:disable identifier_name
4 
5 import Foundation
6 
7 internal enum CodeSigningError: Error {
8   case CertificateEncodingError
9   case CertificateDERDecodeError
10   case CertificateValidityError
11   case CertificateMissingPublicKeyError
12   case CertificateDigitalSignatureNotPresentError
13   case CertificateMissingCodeSigningError
14   case CertificateRootNotCA
15   case CertificateProjectInformationChainError
16   case KeyIdMismatchError
17   case SecurityFrameworkError
18   case CertificateEmptyError
19   case CertificateChainError
20   case CertificateRootNotSelfSigned
21   case SignatureHeaderMissing
22   case SignatureHeaderStructuredFieldParseError
23   case SignatureHeaderSigMissing
24   case SignatureHeaderSignatureEncodingError
25   case SignatureEncodingError
26   case AlgorithmParseError
27   case InvalidExpoProjectInformationExtensionValue
28 
29   func message() -> String {
30     switch self {
31     case .CertificateEncodingError:
32       return "Code signing certificate could not be encoded in a lossless manner using utf8 encoding"
33     case .CertificateDERDecodeError:
34       return "Code signing certificate data not in DER format"
35     case .CertificateMissingPublicKeyError:
36       return "Code signing certificate missing public key"
37     case .CertificateValidityError:
38       return "Certificate not valid"
39     case .CertificateDigitalSignatureNotPresentError:
40       return "Certificate digital signature not present"
41     case .CertificateMissingCodeSigningError:
42       return "Certificate missing code signing extended key usage"
43     case .CertificateRootNotCA:
44       return "Root certificate subject must be a Certificate Authority"
45     case .CertificateProjectInformationChainError:
46       return "Expo project information must be a subset or equal of that of parent certificates"
47     case .KeyIdMismatchError:
48       return "Key with keyid from signature not found in client configuration"
49     case .SecurityFrameworkError:
50       return "Signature verification failed due to security framework error"
51     case .CertificateEmptyError:
52       return "No code signing certificates provided"
53     case .CertificateChainError:
54       return "Certificate chain error"
55     case .CertificateRootNotSelfSigned:
56       return "Root certificate not self-signed"
57     case .SignatureHeaderMissing:
58       return "No expo-signature header specified"
59     case .SignatureHeaderStructuredFieldParseError:
60       return "expo-signature structured header parsing failed"
61     case .SignatureHeaderSigMissing:
62       return "Structured field sig not found in expo-signature header"
63     case .SignatureHeaderSignatureEncodingError:
64       return "Signature in header has invalid encoding"
65     case .SignatureEncodingError:
66       return "Invalid signature encoding"
67     case .AlgorithmParseError:
68       return "Invalid algorithm"
69     case .InvalidExpoProjectInformationExtensionValue:
70       return "Invalid Expo project information extension value"
71     }
72   }
73 }
74