1/*
2 * Copyright (c) 2002-2012 Apple Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23
24#include "EAPSecurity.h"
25#include <Security/SecureTransport.h>
26#include <TargetConditionals.h>
27/*
28 * Return string representation of {SecureTransport,Security}-related OSStatus.
29 */
30const char *
31EAPSecurityErrorString(OSStatus err)
32{
33    switch(err) {
34    case noErr:
35	return "noErr";
36#if ! TARGET_OS_EMBEDDED
37    case memFullErr:
38	return "memFullErr";
39    case paramErr:
40	return "paramErr";
41    case unimpErr:
42	return "unimpErr";
43    case ioErr:
44	return "ioErr";
45    case badReqErr:
46	return "badReqErr";
47#endif /* ! TARGET_OS_EMBEDDED */
48
49	/* SecureTransport.h: */
50    case errSSLProtocol:
51	return "errSSLProtocol";
52    case errSSLNegotiation:
53	return "errSSLNegotiation";
54    case errSSLFatalAlert:
55	return "errSSLFatalAlert";
56    case errSSLWouldBlock:
57	return "errSSLWouldBlock";
58    case errSSLSessionNotFound:
59	return "errSSLSessionNotFound";
60    case errSSLClosedGraceful:
61	return "errSSLClosedGraceful";
62    case errSSLClosedAbort:
63	return "errSSLClosedAbort";
64    case errSSLXCertChainInvalid:
65	return "errSSLXCertChainInvalid";
66    case errSSLBadCert:
67	return "errSSLBadCert";
68    case errSSLCrypto:
69	return "errSSLCrypto";
70    case errSSLInternal:
71	return "errSSLInternal";
72    case errSSLModuleAttach:
73	return "errSSLModuleAttach";
74    case errSSLUnknownRootCert:
75	return "errSSLUnknownRootCert";
76    case errSSLNoRootCert:
77	return "errSSLNoRootCert";
78    case errSSLCertExpired:
79	return "errSSLCertExpired";
80    case errSSLCertNotYetValid:
81	return "errSSLCertNotYetValid";
82    case errSSLClosedNoNotify:
83	return "errSSLClosedNoNotify";
84    case errSSLBufferOverflow:
85	return "errSSLBufferOverflow";
86    case errSSLBadCipherSuite:
87	return "errSSLBadCipherSuite";
88    case errSSLPeerUnexpectedMsg:
89	return "errSSLPeerUnexpectedMsg";
90    case errSSLPeerBadRecordMac:
91	return "errSSLPeerBadRecordMac";
92    case errSSLPeerDecryptionFail:
93	return "errSSLPeerDecryptionFail";
94    case errSSLPeerRecordOverflow:
95	return "errSSLPeerRecordOverflow";
96    case errSSLPeerDecompressFail:
97	return "errSSLPeerDecompressFail";
98    case errSSLPeerHandshakeFail:
99	return "errSSLPeerHandshakeFail";
100    case errSSLPeerBadCert:
101	return "errSSLPeerBadCert";
102    case errSSLPeerUnsupportedCert:
103	return "errSSLPeerUnsupportedCert";
104    case errSSLPeerCertRevoked:
105	return "errSSLPeerCertRevoked";
106    case errSSLPeerCertExpired:
107	return "errSSLPeerCertExpired";
108    case errSSLPeerCertUnknown:
109	return "errSSLPeerCertUnknown";
110    case errSSLIllegalParam:
111	return "errSSLIllegalParam";
112    case errSSLPeerUnknownCA:
113	return "errSSLPeerUnknownCA";
114    case errSSLPeerAccessDenied:
115	return "errSSLPeerAccessDenied";
116    case errSSLPeerDecodeError:
117	return "errSSLPeerDecodeError";
118    case errSSLPeerDecryptError:
119	return "errSSLPeerDecryptError";
120    case errSSLPeerExportRestriction:
121	return "errSSLPeerExportRestriction";
122    case errSSLPeerProtocolVersion:
123	return "errSSLPeerProtocolVersion";
124    case errSSLPeerInsufficientSecurity:
125	return "errSSLPeerInsufficientSecurity";
126    case errSSLPeerInternalError:
127	return "errSSLPeerInternalError";
128    case errSSLPeerUserCancelled:
129	return "errSSLPeerUserCancelled";
130	/* SecBase.h: */
131    case errSecNotAvailable:
132	return "errSecNotAvailable";
133    case errSecDuplicateItem:
134	return "errSecDuplicateItem";
135    case errSecItemNotFound:
136	return "errSecItemNotFound";
137    case errSSLServerAuthCompleted:
138	return "errSSLServerAuthCompleted";
139#if ! TARGET_OS_EMBEDDED
140    case errSecReadOnly:
141	return "errSecReadOnly";
142    case errSecAuthFailed:
143	return "errSecAuthFailed";
144    case errSecNoSuchKeychain:
145	return "errSecNoSuchKeychain";
146    case errSecInvalidKeychain:
147	return "errSecInvalidKeychain";
148    case errSecDuplicateKeychain:
149	return "errSecDuplicateKeychain";
150    case errSecDuplicateCallback:
151	return "errSecDuplicateCallback";
152    case errSecInvalidCallback:
153	return "errSecInvalidCallback";
154    case errSecBufferTooSmall:
155	return "errSecBufferTooSmall";
156    case errSecDataTooLarge:
157	return "errSecDataTooLarge";
158    case errSecNoSuchAttr:
159	return "errSecNoSuchAttr";
160    case errSecInvalidItemRef:
161	return "errSecInvalidItemRef";
162    case errSecInvalidSearchRef:
163	return "errSecInvalidSearchRef";
164    case errSecNoSuchClass:
165	return "errSecNoSuchClass";
166    case errSecNoDefaultKeychain:
167	return "errSecNoDefaultKeychain";
168    case errSecInteractionNotAllowed:
169	return "errSecInteractionNotAllowed";
170    case errSecReadOnlyAttr:
171	return "errSecReadOnlyAttr";
172    case errSecWrongSecVersion:
173	return "errSecWrongSecVersion";
174    case errSecKeySizeNotAllowed:
175	return "errSecKeySizeNotAllowed";
176    case errSecNoStorageModule:
177	return "errSecNoStorageModule";
178    case errSecNoCertificateModule:
179	return "errSecNoCertificateModule";
180    case errSecNoPolicyModule:
181	return "errSecNoPolicyModule";
182    case errSecInteractionRequired:
183	return "errSecInteractionRequired";
184    case errSecDataNotAvailable:
185	return "errSecDataNotAvailable";
186    case errSecDataNotModifiable:
187	return "errSecDataNotModifiable";
188    case errSecCreateChainFailed:
189	return "errSecCreateChainFailed";
190    case errSecACLNotSimple:
191	return "errSecACLNotSimple";
192    case errSecPolicyNotFound:
193	return "errSecPolicyNotFound";
194    case errSecInvalidTrustSetting:
195	return "errSecInvalidTrustSetting";
196    case errSecNoAccessForItem:
197	return "errSecNoAccessForItem";
198    case errSecInvalidOwnerEdit:
199	return "errSecInvalidOwnerEdit";
200#endif /* ! TARGET_OS_EMBEDDED */
201    default:
202	return "<unknown>";
203    }
204}
205
206