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