//https://gist.github.com/KoCMoHaBTa/d90dd89c5af4f194848486e78fd39f96 import Foundation let OSStatusErrorCodeMessageMapping: [OSStatus: String] = [ //the following lines are autogenerated trough OSStatusErrorCodeMessageMappingParser from swift's SecBase (CMD + click on any OSStatus code) errSecSuccess: "errSecSuccess - No error.", errSecUnimplemented: "errSecUnimplemented - Function or operation not implemented.", // errSecDskFull: "errSecDskFull", //conflicts with errSecDiskFull errSecIO: "errSecIO - I/O error (bummers)", errSecOpWr: "errSecOpWr - file already open with with write permission", errSecParam: "errSecParam - One or more parameters passed to a function were not valid.", errSecWrPerm: "errSecWrPerm - write permissions error", errSecAllocate: "errSecAllocate - Failed to allocate memory.", errSecUserCanceled: "errSecUserCanceled - User canceled the operation.", errSecBadReq: "errSecBadReq - Bad parameter or invalid state for operation.", errSecInternalComponent: "errSecInternalComponent", errSecCoreFoundationUnknown: "errSecCoreFoundationUnknown", errSecNotAvailable: "errSecNotAvailable - No keychain is available. You may need to restart your computer.", errSecReadOnly: "errSecReadOnly - This keychain cannot be modified.", errSecAuthFailed: "errSecAuthFailed - The user name or passphrase you entered is not correct.", errSecNoSuchKeychain: "errSecNoSuchKeychain - The specified keychain could not be found.", errSecInvalidKeychain: "errSecInvalidKeychain - The specified keychain is not a valid keychain file.", errSecDuplicateKeychain: "errSecDuplicateKeychain - A keychain with the same name already exists.", errSecDuplicateCallback: "errSecDuplicateCallback - The specified callback function is already installed.", errSecInvalidCallback: "errSecInvalidCallback - The specified callback function is not valid.", errSecDuplicateItem: "errSecDuplicateItem - The specified item already exists in the keychain.", errSecItemNotFound: "errSecItemNotFound - The specified item could not be found in the keychain.", errSecBufferTooSmall: "errSecBufferTooSmall - There is not enough memory available to use the specified item.", errSecDataTooLarge: "errSecDataTooLarge - This item contains information which is too large or in a format that cannot be displayed.", errSecNoSuchAttr: "errSecNoSuchAttr - The specified attribute does not exist.", errSecInvalidItemRef: "errSecInvalidItemRef - The specified item is no longer valid. It may have been deleted from the keychain.", errSecInvalidSearchRef: "errSecInvalidSearchRef - Unable to search the current keychain.", errSecNoSuchClass: "errSecNoSuchClass - The specified item does not appear to be a valid keychain item.", errSecNoDefaultKeychain: "errSecNoDefaultKeychain - A default keychain could not be found.", errSecInteractionNotAllowed: "errSecInteractionNotAllowed - User interaction is not allowed.", errSecReadOnlyAttr: "errSecReadOnlyAttr - The specified attribute could not be modified.", errSecWrongSecVersion: "errSecWrongSecVersion - This keychain was created by a different version of the system software and cannot be opened.", errSecKeySizeNotAllowed: "errSecKeySizeNotAllowed - This item specifies a key size which is too large.", errSecNoStorageModule: "errSecNoStorageModule - A required component (data storage module) could not be loaded. You may need to restart your computer.", errSecNoCertificateModule: "errSecNoCertificateModule - A required component (certificate module) could not be loaded. You may need to restart your computer.", errSecNoPolicyModule: "errSecNoPolicyModule - A required component (policy module) could not be loaded. You may need to restart your computer.", errSecInteractionRequired: "errSecInteractionRequired - User interaction is required, but is currently not allowed.", errSecDataNotAvailable: "errSecDataNotAvailable - The contents of this item cannot be retrieved.", errSecDataNotModifiable: "errSecDataNotModifiable - The contents of this item cannot be modified.", errSecCreateChainFailed: "errSecCreateChainFailed - One or more certificates required to validate this certificate cannot be found.", errSecInvalidPrefsDomain: "errSecInvalidPrefsDomain - The specified preferences domain is not valid.", errSecInDarkWake: "errSecInDarkWake - In dark wake, no UI possible", errSecACLNotSimple: "errSecACLNotSimple - The specified access control list is not in standard (simple) form.", errSecPolicyNotFound: "errSecPolicyNotFound - The specified policy cannot be found.", errSecInvalidTrustSetting: "errSecInvalidTrustSetting - The specified trust setting is invalid.", errSecNoAccessForItem: "errSecNoAccessForItem - The specified item has no access control.", errSecInvalidOwnerEdit: "errSecInvalidOwnerEdit - Invalid attempt to change the owner of this item.", errSecTrustNotAvailable: "errSecTrustNotAvailable - No trust results are available.", errSecUnsupportedFormat: "errSecUnsupportedFormat - Import/Export format unsupported.", errSecUnknownFormat: "errSecUnknownFormat - Unknown format in import.", errSecKeyIsSensitive: "errSecKeyIsSensitive - Key material must be wrapped for export.", errSecMultiplePrivKeys: "errSecMultiplePrivKeys - An attempt was made to import multiple private keys.", errSecPassphraseRequired: "errSecPassphraseRequired - Passphrase is required for import/export.", errSecInvalidPasswordRef: "errSecInvalidPasswordRef - The password reference was invalid.", errSecInvalidTrustSettings: "errSecInvalidTrustSettings - The Trust Settings Record was corrupted.", errSecNoTrustSettings: "errSecNoTrustSettings - No Trust Settings were found.", errSecPkcs12VerifyFailure: "errSecPkcs12VerifyFailure - MAC verification failed during PKCS12 import (wrong password?)", errSecNotSigner: "errSecNotSigner - A certificate was not signed by its proposed parent.", errSecDecode: "errSecDecode - Unable to decode the provided data.", errSecServiceNotAvailable: "errSecServiceNotAvailable - The required service is not available.", errSecInsufficientClientID: "errSecInsufficientClientID - The client ID is not correct.", errSecDeviceReset: "errSecDeviceReset - A device reset has occurred.", errSecDeviceFailed: "errSecDeviceFailed - A device failure has occurred.", errSecAppleAddAppACLSubject: "errSecAppleAddAppACLSubject - Adding an application ACL subject failed.", errSecApplePublicKeyIncomplete: "errSecApplePublicKeyIncomplete - The public key is incomplete.", errSecAppleSignatureMismatch: "errSecAppleSignatureMismatch - A signature mismatch has occurred.", errSecAppleInvalidKeyStartDate: "errSecAppleInvalidKeyStartDate - The specified key has an invalid start date.", errSecAppleInvalidKeyEndDate: "errSecAppleInvalidKeyEndDate - The specified key has an invalid end date.", errSecConversionError: "errSecConversionError - A conversion error has occurred.", errSecAppleSSLv2Rollback: "errSecAppleSSLv2Rollback - A SSLv2 rollback error has occurred.", errSecDiskFull: "errSecDiskFull - The disk is full.", errSecQuotaExceeded: "errSecQuotaExceeded - The quota was exceeded.", errSecFileTooBig: "errSecFileTooBig - The file is too big.", errSecInvalidDatabaseBlob: "errSecInvalidDatabaseBlob - The specified database has an invalid blob.", errSecInvalidKeyBlob: "errSecInvalidKeyBlob - The specified database has an invalid key blob.", errSecIncompatibleDatabaseBlob: "errSecIncompatibleDatabaseBlob - The specified database has an incompatible blob.", errSecIncompatibleKeyBlob: "errSecIncompatibleKeyBlob - The specified database has an incompatible key blob.", errSecHostNameMismatch: "errSecHostNameMismatch - A host name mismatch has occurred.", errSecUnknownCriticalExtensionFlag: "errSecUnknownCriticalExtensionFlag - There is an unknown critical extension flag.", errSecNoBasicConstraints: "errSecNoBasicConstraints - No basic constraints were found.", errSecNoBasicConstraintsCA: "errSecNoBasicConstraintsCA - No basic CA constraints were found.", errSecInvalidAuthorityKeyID: "errSecInvalidAuthorityKeyID - The authority key ID is not valid.", errSecInvalidSubjectKeyID: "errSecInvalidSubjectKeyID - The subject key ID is not valid.", errSecInvalidKeyUsageForPolicy: "errSecInvalidKeyUsageForPolicy - The key usage is not valid for the specified policy.", errSecInvalidExtendedKeyUsage: "errSecInvalidExtendedKeyUsage - The extended key usage is not valid.", errSecInvalidIDLinkage: "errSecInvalidIDLinkage - The ID linkage is not valid.", errSecPathLengthConstraintExceeded: "errSecPathLengthConstraintExceeded - The path length constraint was exceeded.", errSecInvalidRoot: "errSecInvalidRoot - The root or anchor certificate is not valid.", errSecCRLExpired: "errSecCRLExpired - The CRL has expired.", errSecCRLNotValidYet: "errSecCRLNotValidYet - The CRL is not yet valid.", errSecCRLNotFound: "errSecCRLNotFound - The CRL was not found.", errSecCRLServerDown: "errSecCRLServerDown - The CRL server is down.", errSecCRLBadURI: "errSecCRLBadURI - The CRL has a bad Uniform Resource Identifier.", errSecUnknownCertExtension: "errSecUnknownCertExtension - An unknown certificate extension was encountered.", errSecUnknownCRLExtension: "errSecUnknownCRLExtension - An unknown CRL extension was encountered.", errSecCRLNotTrusted: "errSecCRLNotTrusted - The CRL is not trusted.", errSecCRLPolicyFailed: "errSecCRLPolicyFailed - The CRL policy failed.", errSecIDPFailure: "errSecIDPFailure - The issuing distribution point was not valid.", errSecSMIMEEmailAddressesNotFound: "errSecSMIMEEmailAddressesNotFound - An email address mismatch was encountered.", errSecSMIMEBadExtendedKeyUsage: "errSecSMIMEBadExtendedKeyUsage - The appropriate extended key usage for SMIME was not found.", errSecSMIMEBadKeyUsage: "errSecSMIMEBadKeyUsage - The key usage is not compatible with SMIME.", errSecSMIMEKeyUsageNotCritical: "errSecSMIMEKeyUsageNotCritical - The key usage extension is not marked as critical.", errSecSMIMENoEmailAddress: "errSecSMIMENoEmailAddress - No email address was found in the certificate.", errSecSMIMESubjAltNameNotCritical: "errSecSMIMESubjAltNameNotCritical - The subject alternative name extension is not marked as critical.", errSecSSLBadExtendedKeyUsage: "errSecSSLBadExtendedKeyUsage - The appropriate extended key usage for SSL was not found.", errSecOCSPBadResponse: "errSecOCSPBadResponse - The OCSP response was incorrect or could not be parsed.", errSecOCSPBadRequest: "errSecOCSPBadRequest - The OCSP request was incorrect or could not be parsed.", errSecOCSPUnavailable: "errSecOCSPUnavailable - OCSP service is unavailable.", errSecOCSPStatusUnrecognized: "errSecOCSPStatusUnrecognized - The OCSP server did not recognize this certificate.", errSecEndOfData: "errSecEndOfData - An end-of-data was detected.", errSecIncompleteCertRevocationCheck: "errSecIncompleteCertRevocationCheck - An incomplete certificate revocation check occurred.", errSecNetworkFailure: "errSecNetworkFailure - A network failure occurred.", errSecOCSPNotTrustedToAnchor: "errSecOCSPNotTrustedToAnchor - The OCSP response was not trusted to a root or anchor certificate.", errSecRecordModified: "errSecRecordModified - The record was modified.", errSecOCSPSignatureError: "errSecOCSPSignatureError - The OCSP response had an invalid signature.", errSecOCSPNoSigner: "errSecOCSPNoSigner - The OCSP response had no signer.", errSecOCSPResponderMalformedReq: "errSecOCSPResponderMalformedReq - The OCSP responder was given a malformed request.", errSecOCSPResponderInternalError: "errSecOCSPResponderInternalError - The OCSP responder encountered an internal error.", errSecOCSPResponderTryLater: "errSecOCSPResponderTryLater - The OCSP responder is busy, try again later.", errSecOCSPResponderSignatureRequired: "errSecOCSPResponderSignatureRequired - The OCSP responder requires a signature.", errSecOCSPResponderUnauthorized: "errSecOCSPResponderUnauthorized - The OCSP responder rejected this request as unauthorized.", errSecOCSPResponseNonceMismatch: "errSecOCSPResponseNonceMismatch - The OCSP response nonce did not match the request.", errSecCodeSigningBadCertChainLength: "errSecCodeSigningBadCertChainLength - Code signing encountered an incorrect certificate chain length.", errSecCodeSigningNoBasicConstraints: "errSecCodeSigningNoBasicConstraints - Code signing found no basic constraints.", errSecCodeSigningBadPathLengthConstraint: "errSecCodeSigningBadPathLengthConstraint - Code signing encountered an incorrect path length constraint.", errSecCodeSigningNoExtendedKeyUsage: "errSecCodeSigningNoExtendedKeyUsage - Code signing found no extended key usage.", errSecCodeSigningDevelopment: "errSecCodeSigningDevelopment - Code signing indicated use of a development-only certificate.", errSecResourceSignBadCertChainLength: "errSecResourceSignBadCertChainLength - Resource signing has encountered an incorrect certificate chain length.", errSecResourceSignBadExtKeyUsage: "errSecResourceSignBadExtKeyUsage - Resource signing has encountered an error in the extended key usage.", errSecTrustSettingDeny: "errSecTrustSettingDeny - The trust setting for this policy was set to Deny.", errSecInvalidSubjectName: "errSecInvalidSubjectName - An invalid certificate subject name was encountered.", errSecUnknownQualifiedCertStatement: "errSecUnknownQualifiedCertStatement - An unknown qualified certificate statement was encountered.", errSecMobileMeRequestQueued: "errSecMobileMeRequestQueued - The MobileMe request will be sent during the next connection.", errSecMobileMeRequestRedirected: "errSecMobileMeRequestRedirected - The MobileMe request was redirected.", errSecMobileMeServerError: "errSecMobileMeServerError - A MobileMe server error occurred.", errSecMobileMeServerNotAvailable: "errSecMobileMeServerNotAvailable - The MobileMe server is not available.", errSecMobileMeServerAlreadyExists: "errSecMobileMeServerAlreadyExists - The MobileMe server reported that the item already exists.", errSecMobileMeServerServiceErr: "errSecMobileMeServerServiceErr - A MobileMe service error has occurred.", errSecMobileMeRequestAlreadyPending: "errSecMobileMeRequestAlreadyPending - A MobileMe request is already pending.", errSecMobileMeNoRequestPending: "errSecMobileMeNoRequestPending - MobileMe has no request pending.", errSecMobileMeCSRVerifyFailure: "errSecMobileMeCSRVerifyFailure - A MobileMe CSR verification failure has occurred.", errSecMobileMeFailedConsistencyCheck: "errSecMobileMeFailedConsistencyCheck - MobileMe has found a failed consistency check.", errSecNotInitialized: "errSecNotInitialized - A function was called without initializing CSSM.", errSecInvalidHandleUsage: "errSecInvalidHandleUsage - The CSSM handle does not match with the service type.", errSecPVCReferentNotFound: "errSecPVCReferentNotFound - A reference to the calling module was not found in the list of authorized callers.", errSecFunctionIntegrityFail: "errSecFunctionIntegrityFail - A function address was not within the verified module.", errSecInternalError: "errSecInternalError - An internal error has occurred.", errSecMemoryError: "errSecMemoryError - A memory error has occurred.", errSecInvalidData: "errSecInvalidData - Invalid data was encountered.", errSecMDSError: "errSecMDSError - A Module Directory Service error has occurred.", errSecInvalidPointer: "errSecInvalidPointer - An invalid pointer was encountered.", errSecSelfCheckFailed: "errSecSelfCheckFailed - Self-check has failed.", errSecFunctionFailed: "errSecFunctionFailed - A function has failed.", errSecModuleManifestVerifyFailed: "errSecModuleManifestVerifyFailed - A module manifest verification failure has occurred.", errSecInvalidGUID: "errSecInvalidGUID - An invalid GUID was encountered.", errSecInvalidHandle: "errSecInvalidHandle - An invalid handle was encountered.", errSecInvalidDBList: "errSecInvalidDBList - An invalid DB list was encountered.", errSecInvalidPassthroughID: "errSecInvalidPassthroughID - An invalid passthrough ID was encountered.", errSecInvalidNetworkAddress: "errSecInvalidNetworkAddress - An invalid network address was encountered.", errSecCRLAlreadySigned: "errSecCRLAlreadySigned - The certificate revocation list is already signed.", errSecInvalidNumberOfFields: "errSecInvalidNumberOfFields - An invalid number of fields were encountered.", errSecVerificationFailure: "errSecVerificationFailure - A verification failure occurred.", errSecUnknownTag: "errSecUnknownTag - An unknown tag was encountered.", errSecInvalidSignature: "errSecInvalidSignature - An invalid signature was encountered.", errSecInvalidName: "errSecInvalidName - An invalid name was encountered.", errSecInvalidCertificateRef: "errSecInvalidCertificateRef - An invalid certificate reference was encountered.", errSecInvalidCertificateGroup: "errSecInvalidCertificateGroup - An invalid certificate group was encountered.", errSecTagNotFound: "errSecTagNotFound - The specified tag was not found.", errSecInvalidQuery: "errSecInvalidQuery - The specified query was not valid.", errSecInvalidValue: "errSecInvalidValue - An invalid value was detected.", errSecCallbackFailed: "errSecCallbackFailed - A callback has failed.", errSecACLDeleteFailed: "errSecACLDeleteFailed - An ACL delete operation has failed.", errSecACLReplaceFailed: "errSecACLReplaceFailed - An ACL replace operation has failed.", errSecACLAddFailed: "errSecACLAddFailed - An ACL add operation has failed.", errSecACLChangeFailed: "errSecACLChangeFailed - An ACL change operation has failed.", errSecInvalidAccessCredentials: "errSecInvalidAccessCredentials - Invalid access credentials were encountered.", errSecInvalidRecord: "errSecInvalidRecord - An invalid record was encountered.", errSecInvalidACL: "errSecInvalidACL - An invalid ACL was encountered.", errSecInvalidSampleValue: "errSecInvalidSampleValue - An invalid sample value was encountered.", errSecIncompatibleVersion: "errSecIncompatibleVersion - An incompatible version was encountered.", errSecPrivilegeNotGranted: "errSecPrivilegeNotGranted - The privilege was not granted.", errSecInvalidScope: "errSecInvalidScope - An invalid scope was encountered.", errSecPVCAlreadyConfigured: "errSecPVCAlreadyConfigured - The PVC is already configured.", errSecInvalidPVC: "errSecInvalidPVC - An invalid PVC was encountered.", errSecEMMLoadFailed: "errSecEMMLoadFailed - The EMM load has failed.", errSecEMMUnloadFailed: "errSecEMMUnloadFailed - The EMM unload has failed.", errSecAddinLoadFailed: "errSecAddinLoadFailed - The add-in load operation has failed.", errSecInvalidKeyRef: "errSecInvalidKeyRef - An invalid key was encountered.", errSecInvalidKeyHierarchy: "errSecInvalidKeyHierarchy - An invalid key hierarchy was encountered.", errSecAddinUnloadFailed: "errSecAddinUnloadFailed - The add-in unload operation has failed.", errSecLibraryReferenceNotFound: "errSecLibraryReferenceNotFound - A library reference was not found.", errSecInvalidAddinFunctionTable: "errSecInvalidAddinFunctionTable - An invalid add-in function table was encountered.", errSecInvalidServiceMask: "errSecInvalidServiceMask - An invalid service mask was encountered.", errSecModuleNotLoaded: "errSecModuleNotLoaded - A module was not loaded.", errSecInvalidSubServiceID: "errSecInvalidSubServiceID - An invalid subservice ID was encountered.", errSecAttributeNotInContext: "errSecAttributeNotInContext - An attribute was not in the context.", errSecModuleManagerInitializeFailed: "errSecModuleManagerInitializeFailed - A module failed to initialize.", errSecModuleManagerNotFound: "errSecModuleManagerNotFound - A module was not found.", errSecEventNotificationCallbackNotFound: "errSecEventNotificationCallbackNotFound - An event notification callback was not found.", errSecInputLengthError: "errSecInputLengthError - An input length error was encountered.", errSecOutputLengthError: "errSecOutputLengthError - An output length error was encountered.", errSecPrivilegeNotSupported: "errSecPrivilegeNotSupported - The privilege is not supported.", errSecDeviceError: "errSecDeviceError - A device error was encountered.", errSecAttachHandleBusy: "errSecAttachHandleBusy - The CSP handle was busy.", errSecNotLoggedIn: "errSecNotLoggedIn - You are not logged in.", errSecAlgorithmMismatch: "errSecAlgorithmMismatch - An algorithm mismatch was encountered.", errSecKeyUsageIncorrect: "errSecKeyUsageIncorrect - The key usage is incorrect.", errSecKeyBlobTypeIncorrect: "errSecKeyBlobTypeIncorrect - The key blob type is incorrect.", errSecKeyHeaderInconsistent: "errSecKeyHeaderInconsistent - The key header is inconsistent.", errSecUnsupportedKeyFormat: "errSecUnsupportedKeyFormat - The key header format is not supported.", errSecUnsupportedKeySize: "errSecUnsupportedKeySize - The key size is not supported.", errSecInvalidKeyUsageMask: "errSecInvalidKeyUsageMask - The key usage mask is not valid.", errSecUnsupportedKeyUsageMask: "errSecUnsupportedKeyUsageMask - The key usage mask is not supported.", errSecInvalidKeyAttributeMask: "errSecInvalidKeyAttributeMask - The key attribute mask is not valid.", errSecUnsupportedKeyAttributeMask: "errSecUnsupportedKeyAttributeMask - The key attribute mask is not supported.", errSecInvalidKeyLabel: "errSecInvalidKeyLabel - The key label is not valid.", errSecUnsupportedKeyLabel: "errSecUnsupportedKeyLabel - The key label is not supported.", errSecInvalidKeyFormat: "errSecInvalidKeyFormat - The key format is not valid.", errSecUnsupportedVectorOfBuffers: "errSecUnsupportedVectorOfBuffers - The vector of buffers is not supported.", errSecInvalidInputVector: "errSecInvalidInputVector - The input vector is not valid.", errSecInvalidOutputVector: "errSecInvalidOutputVector - The output vector is not valid.", errSecInvalidContext: "errSecInvalidContext - An invalid context was encountered.", errSecInvalidAlgorithm: "errSecInvalidAlgorithm - An invalid algorithm was encountered.", errSecInvalidAttributeKey: "errSecInvalidAttributeKey - A key attribute was not valid.", errSecMissingAttributeKey: "errSecMissingAttributeKey - A key attribute was missing.", errSecInvalidAttributeInitVector: "errSecInvalidAttributeInitVector - An init vector attribute was not valid.", errSecMissingAttributeInitVector: "errSecMissingAttributeInitVector - An init vector attribute was missing.", errSecInvalidAttributeSalt: "errSecInvalidAttributeSalt - A salt attribute was not valid.", errSecMissingAttributeSalt: "errSecMissingAttributeSalt - A salt attribute was missing.", errSecInvalidAttributePadding: "errSecInvalidAttributePadding - A padding attribute was not valid.", errSecMissingAttributePadding: "errSecMissingAttributePadding - A padding attribute was missing.", errSecInvalidAttributeRandom: "errSecInvalidAttributeRandom - A random number attribute was not valid.", errSecMissingAttributeRandom: "errSecMissingAttributeRandom - A random number attribute was missing.", errSecInvalidAttributeSeed: "errSecInvalidAttributeSeed - A seed attribute was not valid.", errSecMissingAttributeSeed: "errSecMissingAttributeSeed - A seed attribute was missing.", errSecInvalidAttributePassphrase: "errSecInvalidAttributePassphrase - A passphrase attribute was not valid.", errSecMissingAttributePassphrase: "errSecMissingAttributePassphrase - A passphrase attribute was missing.", errSecInvalidAttributeKeyLength: "errSecInvalidAttributeKeyLength - A key length attribute was not valid.", errSecMissingAttributeKeyLength: "errSecMissingAttributeKeyLength - A key length attribute was missing.", errSecInvalidAttributeBlockSize: "errSecInvalidAttributeBlockSize - A block size attribute was not valid.", errSecMissingAttributeBlockSize: "errSecMissingAttributeBlockSize - A block size attribute was missing.", errSecInvalidAttributeOutputSize: "errSecInvalidAttributeOutputSize - An output size attribute was not valid.", errSecMissingAttributeOutputSize: "errSecMissingAttributeOutputSize - An output size attribute was missing.", errSecInvalidAttributeRounds: "errSecInvalidAttributeRounds - The number of rounds attribute was not valid.", errSecMissingAttributeRounds: "errSecMissingAttributeRounds - The number of rounds attribute was missing.", errSecInvalidAlgorithmParms: "errSecInvalidAlgorithmParms - An algorithm parameters attribute was not valid.", errSecMissingAlgorithmParms: "errSecMissingAlgorithmParms - An algorithm parameters attribute was missing.", errSecInvalidAttributeLabel: "errSecInvalidAttributeLabel - A label attribute was not valid.", errSecMissingAttributeLabel: "errSecMissingAttributeLabel - A label attribute was missing.", errSecInvalidAttributeKeyType: "errSecInvalidAttributeKeyType - A key type attribute was not valid.", errSecMissingAttributeKeyType: "errSecMissingAttributeKeyType - A key type attribute was missing.", errSecInvalidAttributeMode: "errSecInvalidAttributeMode - A mode attribute was not valid.", errSecMissingAttributeMode: "errSecMissingAttributeMode - A mode attribute was missing.", errSecInvalidAttributeEffectiveBits: "errSecInvalidAttributeEffectiveBits - An effective bits attribute was not valid.", errSecMissingAttributeEffectiveBits: "errSecMissingAttributeEffectiveBits - An effective bits attribute was missing.", errSecInvalidAttributeStartDate: "errSecInvalidAttributeStartDate - A start date attribute was not valid.", errSecMissingAttributeStartDate: "errSecMissingAttributeStartDate - A start date attribute was missing.", errSecInvalidAttributeEndDate: "errSecInvalidAttributeEndDate - An end date attribute was not valid.", errSecMissingAttributeEndDate: "errSecMissingAttributeEndDate - An end date attribute was missing.", errSecInvalidAttributeVersion: "errSecInvalidAttributeVersion - A version attribute was not valid.", errSecMissingAttributeVersion: "errSecMissingAttributeVersion - A version attribute was missing.", errSecInvalidAttributePrime: "errSecInvalidAttributePrime - A prime attribute was not valid.", errSecMissingAttributePrime: "errSecMissingAttributePrime - A prime attribute was missing.", errSecInvalidAttributeBase: "errSecInvalidAttributeBase - A base attribute was not valid.", errSecMissingAttributeBase: "errSecMissingAttributeBase - A base attribute was missing.", errSecInvalidAttributeSubprime: "errSecInvalidAttributeSubprime - A subprime attribute was not valid.", errSecMissingAttributeSubprime: "errSecMissingAttributeSubprime - A subprime attribute was missing.", errSecInvalidAttributeIterationCount: "errSecInvalidAttributeIterationCount - An iteration count attribute was not valid.", errSecMissingAttributeIterationCount: "errSecMissingAttributeIterationCount - An iteration count attribute was missing.", errSecInvalidAttributeDLDBHandle: "errSecInvalidAttributeDLDBHandle - A database handle attribute was not valid.", errSecMissingAttributeDLDBHandle: "errSecMissingAttributeDLDBHandle - A database handle attribute was missing.", errSecInvalidAttributeAccessCredentials: "errSecInvalidAttributeAccessCredentials - An access credentials attribute was not valid.", errSecMissingAttributeAccessCredentials: "errSecMissingAttributeAccessCredentials - An access credentials attribute was missing.", errSecInvalidAttributePublicKeyFormat: "errSecInvalidAttributePublicKeyFormat - A public key format attribute was not valid.", errSecMissingAttributePublicKeyFormat: "errSecMissingAttributePublicKeyFormat - A public key format attribute was missing.", errSecInvalidAttributePrivateKeyFormat: "errSecInvalidAttributePrivateKeyFormat - A private key format attribute was not valid.", errSecMissingAttributePrivateKeyFormat: "errSecMissingAttributePrivateKeyFormat - A private key format attribute was missing.", errSecInvalidAttributeSymmetricKeyFormat: "errSecInvalidAttributeSymmetricKeyFormat - A symmetric key format attribute was not valid.", errSecMissingAttributeSymmetricKeyFormat: "errSecMissingAttributeSymmetricKeyFormat - A symmetric key format attribute was missing.", errSecInvalidAttributeWrappedKeyFormat: "errSecInvalidAttributeWrappedKeyFormat - A wrapped key format attribute was not valid.", errSecMissingAttributeWrappedKeyFormat: "errSecMissingAttributeWrappedKeyFormat - A wrapped key format attribute was missing.", errSecStagedOperationInProgress: "errSecStagedOperationInProgress - A staged operation is in progress.", errSecStagedOperationNotStarted: "errSecStagedOperationNotStarted - A staged operation was not started.", errSecVerifyFailed: "errSecVerifyFailed - A cryptographic verification failure has occurred.", errSecQuerySizeUnknown: "errSecQuerySizeUnknown - The query size is unknown.", errSecBlockSizeMismatch: "errSecBlockSizeMismatch - A block size mismatch occurred.", errSecPublicKeyInconsistent: "errSecPublicKeyInconsistent - The public key was inconsistent.", errSecDeviceVerifyFailed: "errSecDeviceVerifyFailed - A device verification failure has occurred.", errSecInvalidLoginName: "errSecInvalidLoginName - An invalid login name was detected.", errSecAlreadyLoggedIn: "errSecAlreadyLoggedIn - The user is already logged in.", errSecInvalidDigestAlgorithm: "errSecInvalidDigestAlgorithm - An invalid digest algorithm was detected.", errSecInvalidCRLGroup: "errSecInvalidCRLGroup - An invalid CRL group was detected.", errSecCertificateCannotOperate: "errSecCertificateCannotOperate - The certificate cannot operate.", errSecCertificateExpired: "errSecCertificateExpired - An expired certificate was detected.", errSecCertificateNotValidYet: "errSecCertificateNotValidYet - The certificate is not yet valid.", errSecCertificateRevoked: "errSecCertificateRevoked - The certificate was revoked.", errSecCertificateSuspended: "errSecCertificateSuspended - The certificate was suspended.", errSecInsufficientCredentials: "errSecInsufficientCredentials - Insufficient credentials were detected.", errSecInvalidAction: "errSecInvalidAction - The action was not valid.", errSecInvalidAuthority: "errSecInvalidAuthority - The authority was not valid.", errSecVerifyActionFailed: "errSecVerifyActionFailed - A verify action has failed.", errSecInvalidCertAuthority: "errSecInvalidCertAuthority - The certificate authority was not valid.", errSecInvaldCRLAuthority: "errSecInvaldCRLAuthority - The CRL authority was not valid.", errSecInvalidCRLEncoding: "errSecInvalidCRLEncoding - The CRL encoding was not valid.", errSecInvalidCRLType: "errSecInvalidCRLType - The CRL type was not valid.", errSecInvalidCRL: "errSecInvalidCRL - The CRL was not valid.", errSecInvalidFormType: "errSecInvalidFormType - The form type was not valid.", errSecInvalidID: "errSecInvalidID - The ID was not valid.", errSecInvalidIdentifier: "errSecInvalidIdentifier - The identifier was not valid.", errSecInvalidIndex: "errSecInvalidIndex - The index was not valid.", errSecInvalidPolicyIdentifiers: "errSecInvalidPolicyIdentifiers - The policy identifiers are not valid.", errSecInvalidTimeString: "errSecInvalidTimeString - The time specified was not valid.", errSecInvalidReason: "errSecInvalidReason - The trust policy reason was not valid.", errSecInvalidRequestInputs: "errSecInvalidRequestInputs - The request inputs are not valid.", errSecInvalidResponseVector: "errSecInvalidResponseVector - The response vector was not valid.", errSecInvalidStopOnPolicy: "errSecInvalidStopOnPolicy - The stop-on policy was not valid.", errSecInvalidTuple: "errSecInvalidTuple - The tuple was not valid.", errSecMultipleValuesUnsupported: "errSecMultipleValuesUnsupported - Multiple values are not supported.", errSecNotTrusted: "errSecNotTrusted - The trust policy was not trusted.", errSecNoDefaultAuthority: "errSecNoDefaultAuthority - No default authority was detected.", errSecRejectedForm: "errSecRejectedForm - The trust policy had a rejected form.", errSecRequestLost: "errSecRequestLost - The request was lost.", errSecRequestRejected: "errSecRequestRejected - The request was rejected.", errSecUnsupportedAddressType: "errSecUnsupportedAddressType - The address type is not supported.", errSecUnsupportedService: "errSecUnsupportedService - The service is not supported.", errSecInvalidTupleGroup: "errSecInvalidTupleGroup - The tuple group was not valid.", errSecInvalidBaseACLs: "errSecInvalidBaseACLs - The base ACLs are not valid.", errSecInvalidTupleCredendtials: "errSecInvalidTupleCredendtials - The tuple credentials are not valid.", errSecInvalidEncoding: "errSecInvalidEncoding - The encoding was not valid.", errSecInvalidValidityPeriod: "errSecInvalidValidityPeriod - The validity period was not valid.", errSecInvalidRequestor: "errSecInvalidRequestor - The requestor was not valid.", errSecRequestDescriptor: "errSecRequestDescriptor - The request descriptor was not valid.", errSecInvalidBundleInfo: "errSecInvalidBundleInfo - The bundle information was not valid.", errSecInvalidCRLIndex: "errSecInvalidCRLIndex - The CRL index was not valid.", errSecNoFieldValues: "errSecNoFieldValues - No field values were detected.", errSecUnsupportedFieldFormat: "errSecUnsupportedFieldFormat - The field format is not supported.", errSecUnsupportedIndexInfo: "errSecUnsupportedIndexInfo - The index information is not supported.", errSecUnsupportedLocality: "errSecUnsupportedLocality - The locality is not supported.", errSecUnsupportedNumAttributes: "errSecUnsupportedNumAttributes - The number of attributes is not supported.", errSecUnsupportedNumIndexes: "errSecUnsupportedNumIndexes - The number of indexes is not supported.", errSecUnsupportedNumRecordTypes: "errSecUnsupportedNumRecordTypes - The number of record types is not supported.", errSecFieldSpecifiedMultiple: "errSecFieldSpecifiedMultiple - Too many fields were specified.", errSecIncompatibleFieldFormat: "errSecIncompatibleFieldFormat - The field format was incompatible.", errSecInvalidParsingModule: "errSecInvalidParsingModule - The parsing module was not valid.", errSecDatabaseLocked: "errSecDatabaseLocked - The database is locked.", errSecDatastoreIsOpen: "errSecDatastoreIsOpen - The data store is open.", errSecMissingValue: "errSecMissingValue - A missing value was detected.", errSecUnsupportedQueryLimits: "errSecUnsupportedQueryLimits - The query limits are not supported.", errSecUnsupportedNumSelectionPreds: "errSecUnsupportedNumSelectionPreds - The number of selection predicates is not supported.", errSecUnsupportedOperator: "errSecUnsupportedOperator - The operator is not supported.", errSecInvalidDBLocation: "errSecInvalidDBLocation - The database location is not valid.", errSecInvalidAccessRequest: "errSecInvalidAccessRequest - The access request is not valid.", errSecInvalidIndexInfo: "errSecInvalidIndexInfo - The index information is not valid.", errSecInvalidNewOwner: "errSecInvalidNewOwner - The new owner is not valid.", errSecInvalidModifyMode: "errSecInvalidModifyMode - The modify mode is not valid.", errSecMissingRequiredExtension: "errSecMissingRequiredExtension - A required certificate extension is missing.", errSecExtendedKeyUsageNotCritical: "errSecExtendedKeyUsageNotCritical - The extended key usage extension was not marked critical.", errSecTimestampMissing: "errSecTimestampMissing - A timestamp was expected but was not found.", errSecTimestampInvalid: "errSecTimestampInvalid - The timestamp was not valid.", errSecTimestampNotTrusted: "errSecTimestampNotTrusted - The timestamp was not trusted.", errSecTimestampServiceNotAvailable: "errSecTimestampServiceNotAvailable - The timestamp service is not available.", errSecTimestampBadAlg: "errSecTimestampBadAlg - An unrecognized or unsupported Algorithm Identifier in timestamp.", errSecTimestampBadRequest: "errSecTimestampBadRequest - The timestamp transaction is not permitted or supported.", errSecTimestampBadDataFormat: "errSecTimestampBadDataFormat - The timestamp data submitted has the wrong format.", errSecTimestampTimeNotAvailable: "errSecTimestampTimeNotAvailable - The time source for the Timestamp Authority is not available.", errSecTimestampUnacceptedPolicy: "errSecTimestampUnacceptedPolicy - The requested policy is not supported by the Timestamp Authority.", errSecTimestampUnacceptedExtension: "errSecTimestampUnacceptedExtension - The requested extension is not supported by the Timestamp Authority.", errSecTimestampAddInfoNotAvailable: "errSecTimestampAddInfoNotAvailable - The additional information requested is not available.", errSecTimestampSystemFailure: "errSecTimestampSystemFailure - The timestamp request cannot be handled due to system failure.", errSecSigningTimeMissing: "errSecSigningTimeMissing - A signing time was expected but was not found.", errSecTimestampRejection: "errSecTimestampRejection - A timestamp transaction was rejected.", errSecTimestampWaiting: "errSecTimestampWaiting - A timestamp transaction is waiting.", errSecTimestampRevocationWarning: "errSecTimestampRevocationWarning - A timestamp authority revocation warning was issued.", errSecTimestampRevocationNotification: "errSecTimestampRevocationNotification - A timestamp authority revocation notification was issued." ] func OSStatusGetErrorCodeMessage(_ status: OSStatus) -> String { return OSStatusErrorCodeMessageMapping[status] ?? "Unknown Status \(status)" } func OSStatusGetError(_ status: OSStatus) -> Error { return NSError(domain: NSOSStatusErrorDomain, code: Int(status), userInfo: [NSLocalizedDescriptionKey: NSLocalizedString(OSStatusGetErrorCodeMessage(status), comment: "")]) }