ErrorTypeTests.swift 97 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073
  1. //
  2. // ErrorTypeTests.swift
  3. // KeychainAccessTests
  4. //
  5. // Created by kishikawa katsumi on 10/12/15.
  6. // Copyright © 2015 kishikawa katsumi. All rights reserved.
  7. //
  8. import XCTest
  9. import KeychainAccess
  10. class ErrorTypeTests: XCTestCase {
  11. override func setUp() {
  12. super.setUp()
  13. }
  14. override func tearDown() {
  15. super.tearDown()
  16. }
  17. func testErrorType() {
  18. do {
  19. let status = Status(rawValue: errSecSuccess)
  20. XCTAssertEqual(status, .Success)
  21. XCTAssertEqual(status?.description, "No error.")
  22. }
  23. do {
  24. let status = Status(rawValue: errSecUnimplemented)
  25. XCTAssertEqual(status, .Unimplemented)
  26. XCTAssertEqual(status?.description, "Function or operation not implemented.")
  27. }
  28. #if os(OSX)
  29. do {
  30. let status = Status(rawValue: errSecDskFull)
  31. XCTAssertEqual(status, .DiskFull)
  32. XCTAssertEqual(status?.description, "The disk is full.")
  33. }
  34. #endif
  35. do {
  36. let status = Status(rawValue: errSecIO)
  37. XCTAssertEqual(status, .IO)
  38. XCTAssertEqual(status?.description, "I/O error (bummers)")
  39. }
  40. #if os(iOS)
  41. do {
  42. let status = Status(rawValue: errSecOpWr)
  43. XCTAssertEqual(status, .OpWr)
  44. XCTAssertEqual(status?.description, "file already open with with write permission")
  45. }
  46. #endif
  47. do {
  48. let status = Status(rawValue: errSecParam)
  49. XCTAssertEqual(status, .Param)
  50. XCTAssertEqual(status?.description, "One or more parameters passed to a function were not valid.")
  51. }
  52. #if os(OSX)
  53. do {
  54. let status = Status(rawValue: errSecWrPerm)
  55. XCTAssertEqual(status, .WrPerm)
  56. XCTAssertEqual(status?.description, "write permissions error")
  57. }
  58. #endif
  59. do {
  60. let status = Status(rawValue: errSecAllocate)
  61. XCTAssertEqual(status, .Allocate)
  62. XCTAssertEqual(status?.description, "Failed to allocate memory.")
  63. }
  64. do {
  65. let status = Status(rawValue: errSecUserCanceled)
  66. XCTAssertEqual(status, .UserCanceled)
  67. XCTAssertEqual(status?.description, "User canceled the operation.")
  68. }
  69. do {
  70. let status = Status(rawValue: errSecBadReq)
  71. XCTAssertEqual(status, .BadReq)
  72. XCTAssertEqual(status?.description, "Bad parameter or invalid state for operation.")
  73. }
  74. do {
  75. let status = Status(rawValue: errSecInternalComponent)
  76. XCTAssertEqual(status, .InternalComponent)
  77. XCTAssertEqual(status?.description, "")
  78. }
  79. do {
  80. let status = Status(rawValue: errSecNotAvailable)
  81. XCTAssertEqual(status, .NotAvailable)
  82. XCTAssertEqual(status?.description, "No keychain is available. You may need to restart your computer.")
  83. }
  84. #if os(OSX)
  85. do {
  86. let status = Status(rawValue: errSecReadOnly)
  87. XCTAssertEqual(status, .ReadOnly)
  88. XCTAssertEqual(status?.description, "This keychain cannot be modified.")
  89. }
  90. #endif
  91. do {
  92. let status = Status(rawValue: errSecAuthFailed)
  93. XCTAssertEqual(status, .AuthFailed)
  94. XCTAssertEqual(status?.description, "The user name or passphrase you entered is not correct.")
  95. }
  96. #if os(OSX)
  97. do {
  98. let status = Status(rawValue: errSecNoSuchKeychain)
  99. XCTAssertEqual(status, .NoSuchKeychain)
  100. XCTAssertEqual(status?.description, "The specified keychain could not be found.")
  101. }
  102. do {
  103. let status = Status(rawValue: errSecInvalidKeychain)
  104. XCTAssertEqual(status, .InvalidKeychain)
  105. XCTAssertEqual(status?.description, "The specified keychain is not a valid keychain file.")
  106. }
  107. do {
  108. let status = Status(rawValue: errSecDuplicateKeychain)
  109. XCTAssertEqual(status, .DuplicateKeychain)
  110. XCTAssertEqual(status?.description, "A keychain with the same name already exists.")
  111. }
  112. do {
  113. let status = Status(rawValue: errSecDuplicateCallback)
  114. XCTAssertEqual(status, .DuplicateCallback)
  115. XCTAssertEqual(status?.description, "The specified callback function is already installed.")
  116. }
  117. do {
  118. let status = Status(rawValue: errSecInvalidCallback)
  119. XCTAssertEqual(status, .InvalidCallback)
  120. XCTAssertEqual(status?.description, "The specified callback function is not valid.")
  121. }
  122. #endif
  123. do {
  124. let status = Status(rawValue: errSecDuplicateItem)
  125. XCTAssertEqual(status, .DuplicateItem)
  126. XCTAssertEqual(status?.description, "The specified item already exists in the keychain.")
  127. }
  128. do {
  129. let status = Status(rawValue: errSecItemNotFound)
  130. XCTAssertEqual(status, .ItemNotFound)
  131. XCTAssertEqual(status?.description, "The specified item could not be found in the keychain.")
  132. }
  133. #if os(OSX)
  134. do {
  135. let status = Status(rawValue: errSecBufferTooSmall)
  136. XCTAssertEqual(status, .BufferTooSmall)
  137. XCTAssertEqual(status?.description, "There is not enough memory available to use the specified item.")
  138. }
  139. do {
  140. let status = Status(rawValue: errSecDataTooLarge)
  141. XCTAssertEqual(status, .DataTooLarge)
  142. XCTAssertEqual(status?.description, "This item contains information which is too large or in a format that cannot be displayed.")
  143. }
  144. do {
  145. let status = Status(rawValue: errSecNoSuchAttr)
  146. XCTAssertEqual(status, .NoSuchAttr)
  147. XCTAssertEqual(status?.description, "The specified attribute does not exist.")
  148. }
  149. do {
  150. let status = Status(rawValue: errSecInvalidItemRef)
  151. XCTAssertEqual(status, .InvalidItemRef)
  152. XCTAssertEqual(status?.description, "The specified item is no longer valid. It may have been deleted from the keychain.")
  153. }
  154. do {
  155. let status = Status(rawValue: errSecInvalidSearchRef)
  156. XCTAssertEqual(status, .InvalidSearchRef)
  157. XCTAssertEqual(status?.description, "Unable to search the current keychain.")
  158. }
  159. do {
  160. let status = Status(rawValue: errSecNoSuchClass)
  161. XCTAssertEqual(status, .NoSuchClass)
  162. XCTAssertEqual(status?.description, "The specified item does not appear to be a valid keychain item.")
  163. }
  164. do {
  165. let status = Status(rawValue: errSecNoDefaultKeychain)
  166. XCTAssertEqual(status, .NoDefaultKeychain)
  167. XCTAssertEqual(status?.description, "A default keychain could not be found.")
  168. }
  169. #endif
  170. do {
  171. let status = Status(rawValue: errSecInteractionNotAllowed)
  172. XCTAssertEqual(status, .InteractionNotAllowed)
  173. XCTAssertEqual(status?.description, "User interaction is not allowed.")
  174. }
  175. #if os(OSX)
  176. do {
  177. let status = Status(rawValue: errSecReadOnlyAttr)
  178. XCTAssertEqual(status, .ReadOnlyAttr)
  179. XCTAssertEqual(status?.description, "The specified attribute could not be modified.")
  180. }
  181. do {
  182. let status = Status(rawValue: errSecWrongSecVersion)
  183. XCTAssertEqual(status, .WrongSecVersion)
  184. XCTAssertEqual(status?.description, "This keychain was created by a different version of the system software and cannot be opened.")
  185. }
  186. do {
  187. let status = Status(rawValue: errSecKeySizeNotAllowed)
  188. XCTAssertEqual(status, .KeySizeNotAllowed)
  189. XCTAssertEqual(status?.description, "This item specifies a key size which is too large.")
  190. }
  191. do {
  192. let status = Status(rawValue: errSecNoStorageModule)
  193. XCTAssertEqual(status, .NoStorageModule)
  194. XCTAssertEqual(status?.description, "A required component (data storage module) could not be loaded. You may need to restart your computer.")
  195. }
  196. do {
  197. let status = Status(rawValue: errSecNoCertificateModule)
  198. XCTAssertEqual(status, .NoCertificateModule)
  199. XCTAssertEqual(status?.description, "A required component (certificate module) could not be loaded. You may need to restart your computer.")
  200. }
  201. do {
  202. let status = Status(rawValue: errSecNoPolicyModule)
  203. XCTAssertEqual(status, .NoPolicyModule)
  204. XCTAssertEqual(status?.description, "A required component (policy module) could not be loaded. You may need to restart your computer.")
  205. }
  206. do {
  207. let status = Status(rawValue: errSecInteractionRequired)
  208. XCTAssertEqual(status, .InteractionRequired)
  209. XCTAssertEqual(status?.description, "User interaction is required, but is currently not allowed.")
  210. }
  211. do {
  212. let status = Status(rawValue: errSecDataNotAvailable)
  213. XCTAssertEqual(status, .DataNotAvailable)
  214. XCTAssertEqual(status?.description, "The contents of this item cannot be retrieved.")
  215. }
  216. do {
  217. let status = Status(rawValue: errSecDataNotModifiable)
  218. XCTAssertEqual(status, .DataNotModifiable)
  219. XCTAssertEqual(status?.description, "The contents of this item cannot be modified.")
  220. }
  221. do {
  222. let status = Status(rawValue: errSecCreateChainFailed)
  223. XCTAssertEqual(status, .CreateChainFailed)
  224. XCTAssertEqual(status?.description, "One or more certificates required to validate this certificate cannot be found.")
  225. }
  226. do {
  227. let status = Status(rawValue: errSecInvalidPrefsDomain)
  228. XCTAssertEqual(status, .InvalidPrefsDomain)
  229. XCTAssertEqual(status?.description, "The specified preferences domain is not valid.")
  230. }
  231. do {
  232. let status = Status(rawValue: errSecInDarkWake)
  233. XCTAssertEqual(status, .InDarkWake)
  234. XCTAssertEqual(status?.description, "In dark wake, no UI possible")
  235. }
  236. do {
  237. let status = Status(rawValue: errSecACLNotSimple)
  238. XCTAssertEqual(status, .ACLNotSimple)
  239. XCTAssertEqual(status?.description, "The specified access control list is not in standard (simple) form.")
  240. }
  241. do {
  242. let status = Status(rawValue: errSecPolicyNotFound)
  243. XCTAssertEqual(status, .PolicyNotFound)
  244. XCTAssertEqual(status?.description, "The specified policy cannot be found.")
  245. }
  246. do {
  247. let status = Status(rawValue: errSecInvalidTrustSetting)
  248. XCTAssertEqual(status, .InvalidTrustSetting)
  249. XCTAssertEqual(status?.description, "The specified trust setting is invalid.")
  250. }
  251. do {
  252. let status = Status(rawValue: errSecNoAccessForItem)
  253. XCTAssertEqual(status, .NoAccessForItem)
  254. XCTAssertEqual(status?.description, "The specified item has no access control.")
  255. }
  256. do {
  257. let status = Status(rawValue: errSecInvalidOwnerEdit)
  258. XCTAssertEqual(status, .InvalidOwnerEdit)
  259. XCTAssertEqual(status?.description, "Invalid attempt to change the owner of this item.")
  260. }
  261. do {
  262. let status = Status(rawValue: errSecTrustNotAvailable)
  263. XCTAssertEqual(status, .TrustNotAvailable)
  264. XCTAssertEqual(status?.description, "No trust results are available.")
  265. }
  266. do {
  267. let status = Status(rawValue: errSecUnsupportedFormat)
  268. XCTAssertEqual(status, .UnsupportedFormat)
  269. XCTAssertEqual(status?.description, "Import/Export format unsupported.")
  270. }
  271. do {
  272. let status = Status(rawValue: errSecUnknownFormat)
  273. XCTAssertEqual(status, .UnknownFormat)
  274. XCTAssertEqual(status?.description, "Unknown format in import.")
  275. }
  276. do {
  277. let status = Status(rawValue: errSecKeyIsSensitive)
  278. XCTAssertEqual(status, .KeyIsSensitive)
  279. XCTAssertEqual(status?.description, "Key material must be wrapped for export.")
  280. }
  281. do {
  282. let status = Status(rawValue: errSecMultiplePrivKeys)
  283. XCTAssertEqual(status, .MultiplePrivKeys)
  284. XCTAssertEqual(status?.description, "An attempt was made to import multiple private keys.")
  285. }
  286. do {
  287. let status = Status(rawValue: errSecPassphraseRequired)
  288. XCTAssertEqual(status, .PassphraseRequired)
  289. XCTAssertEqual(status?.description, "Passphrase is required for import/export.")
  290. }
  291. do {
  292. let status = Status(rawValue: errSecInvalidPasswordRef)
  293. XCTAssertEqual(status, .InvalidPasswordRef)
  294. XCTAssertEqual(status?.description, "The password reference was invalid.")
  295. }
  296. do {
  297. let status = Status(rawValue: errSecInvalidTrustSettings)
  298. XCTAssertEqual(status, .InvalidTrustSettings)
  299. XCTAssertEqual(status?.description, "The Trust Settings Record was corrupted.")
  300. }
  301. do {
  302. let status = Status(rawValue: errSecNoTrustSettings)
  303. XCTAssertEqual(status, .NoTrustSettings)
  304. XCTAssertEqual(status?.description, "No Trust Settings were found.")
  305. }
  306. do {
  307. let status = Status(rawValue: errSecPkcs12VerifyFailure)
  308. XCTAssertEqual(status, .Pkcs12VerifyFailure)
  309. XCTAssertEqual(status?.description, "MAC verification failed during PKCS12 import (wrong password?)")
  310. }
  311. do {
  312. let errSecInvalidCertificate: OSStatus = -26265
  313. let status = Status(rawValue: errSecInvalidCertificate)
  314. XCTAssertEqual(status, .InvalidCertificate)
  315. XCTAssertEqual(status?.description, "This certificate could not be decoded.")
  316. }
  317. do {
  318. let status = Status(rawValue: errSecNotSigner)
  319. XCTAssertEqual(status, .NotSigner)
  320. XCTAssertEqual(status?.description, "A certificate was not signed by its proposed parent.")
  321. }
  322. do {
  323. let errSecPolicyDenied: OSStatus = -26270
  324. let status = Status(rawValue: errSecPolicyDenied)
  325. XCTAssertEqual(status, .PolicyDenied)
  326. XCTAssertEqual(status?.description, "The certificate chain was not trusted due to a policy not accepting it.")
  327. }
  328. do {
  329. let errSecInvalidKey: OSStatus = -26274
  330. let status = Status(rawValue: errSecInvalidKey)
  331. XCTAssertEqual(status, .InvalidKey)
  332. XCTAssertEqual(status?.description, "The provided key material was not valid.")
  333. }
  334. #endif
  335. do {
  336. let status = Status(rawValue: errSecDecode)
  337. XCTAssertEqual(status, .Decode)
  338. XCTAssertEqual(status?.description, "Unable to decode the provided data.")
  339. }
  340. #if os(OSX)
  341. do {
  342. let status = Status(rawValue: errSecServiceNotAvailable)
  343. XCTAssertEqual(status, .ServiceNotAvailable)
  344. XCTAssertEqual(status?.description, "The required service is not available.")
  345. }
  346. do {
  347. let errSecUnsupportedAlgorithm: OSStatus = -26268
  348. let status = Status(rawValue: errSecUnsupportedAlgorithm)
  349. XCTAssertEqual(status, .UnsupportedAlgorithm)
  350. XCTAssertEqual(status?.description, "An unsupported algorithm was encountered.")
  351. }
  352. do {
  353. let errSecUnsupportedOperation: OSStatus = -26271
  354. let status = Status(rawValue: errSecUnsupportedOperation)
  355. XCTAssertEqual(status, .UnsupportedOperation)
  356. XCTAssertEqual(status?.description, "The operation you requested is not supported by this key.")
  357. }
  358. do {
  359. let errSecUnsupportedPadding: OSStatus = -26273
  360. let status = Status(rawValue: errSecUnsupportedPadding)
  361. XCTAssertEqual(status, .UnsupportedPadding)
  362. XCTAssertEqual(status?.description, "The padding you requested is not supported.")
  363. }
  364. do {
  365. let errSecItemInvalidKey: OSStatus = -34000
  366. let status = Status(rawValue: errSecItemInvalidKey)
  367. XCTAssertEqual(status, .ItemInvalidKey)
  368. XCTAssertEqual(status?.description, "A string key in dictionary is not one of the supported keys.")
  369. }
  370. do {
  371. let errSecItemInvalidKeyType: OSStatus = -34001
  372. let status = Status(rawValue: errSecItemInvalidKeyType)
  373. XCTAssertEqual(status, .ItemInvalidKeyType)
  374. XCTAssertEqual(status?.description, "A key in a dictionary is neither a CFStringRef nor a CFNumberRef.")
  375. }
  376. do {
  377. let errSecItemInvalidValue: OSStatus = -34002
  378. let status = Status(rawValue: errSecItemInvalidValue)
  379. XCTAssertEqual(status, .ItemInvalidValue)
  380. XCTAssertEqual(status?.description, "A value in a dictionary is an invalid (or unsupported) CF type.")
  381. }
  382. do {
  383. let errSecItemClassMissing: OSStatus = -34003
  384. let status = Status(rawValue: errSecItemClassMissing)
  385. XCTAssertEqual(status, .ItemClassMissing)
  386. XCTAssertEqual(status?.description, "No kSecItemClass key was specified in a dictionary.")
  387. }
  388. do {
  389. let errSecItemMatchUnsupported: OSStatus = -34004
  390. let status = Status(rawValue: errSecItemMatchUnsupported)
  391. XCTAssertEqual(status, .ItemMatchUnsupported)
  392. XCTAssertEqual(status?.description, "The caller passed one or more kSecMatch keys to a function which does not support matches.")
  393. }
  394. do {
  395. let errSecUseItemListUnsupported: OSStatus = -34005
  396. let status = Status(rawValue: errSecUseItemListUnsupported)
  397. XCTAssertEqual(status, .UseItemListUnsupported)
  398. XCTAssertEqual(status?.description, "The caller passed in a kSecUseItemList key to a function which does not support it.")
  399. }
  400. do {
  401. let errSecUseKeychainUnsupported: OSStatus = -34006
  402. let status = Status(rawValue: errSecUseKeychainUnsupported)
  403. XCTAssertEqual(status, .UseKeychainUnsupported)
  404. XCTAssertEqual(status?.description, "The caller passed in a kSecUseKeychain key to a function which does not support it.")
  405. }
  406. do {
  407. let errSecUseKeychainListUnsupported: OSStatus = -34007
  408. let status = Status(rawValue: errSecUseKeychainListUnsupported)
  409. XCTAssertEqual(status, .UseKeychainListUnsupported)
  410. XCTAssertEqual(status?.description, "The caller passed in a kSecUseKeychainList key to a function which does not support it.")
  411. }
  412. do {
  413. let errSecReturnDataUnsupported: OSStatus = -34008
  414. let status = Status(rawValue: errSecReturnDataUnsupported)
  415. XCTAssertEqual(status, .ReturnDataUnsupported)
  416. XCTAssertEqual(status?.description, "The caller passed in a kSecReturnData key to a function which does not support it.")
  417. }
  418. do {
  419. let errSecReturnAttributesUnsupported: OSStatus = -34009
  420. let status = Status(rawValue: errSecReturnAttributesUnsupported)
  421. XCTAssertEqual(status, .ReturnAttributesUnsupported)
  422. XCTAssertEqual(status?.description, "The caller passed in a kSecReturnAttributes key to a function which does not support it.")
  423. }
  424. do {
  425. let errSecReturnRefUnsupported: OSStatus = -34010
  426. let status = Status(rawValue: errSecReturnRefUnsupported)
  427. XCTAssertEqual(status, .ReturnRefUnsupported)
  428. XCTAssertEqual(status?.description, "The caller passed in a kSecReturnRef key to a function which does not support it.")
  429. }
  430. do {
  431. let errSecValueRefUnsupported: OSStatus = -34012
  432. let status = Status(rawValue: errSecValueRefUnsupported)
  433. XCTAssertEqual(status, .ValueRefUnsupported)
  434. XCTAssertEqual(status?.description, "The caller passed in a kSecValueRef key to a function which does not support it.")
  435. }
  436. do {
  437. let errSecValuePersistentRefUnsupported: OSStatus = -34013
  438. let status = Status(rawValue: errSecValuePersistentRefUnsupported)
  439. XCTAssertEqual(status, .ValuePersistentRefUnsupported)
  440. XCTAssertEqual(status?.description, "The caller passed in a kSecValuePersistentRef key to a function which does not support it.")
  441. }
  442. do {
  443. let errSecReturnMissingPointer: OSStatus = -34014
  444. let status = Status(rawValue: errSecReturnMissingPointer)
  445. XCTAssertEqual(status, .ReturnMissingPointer)
  446. XCTAssertEqual(status?.description, "The caller passed asked for something to be returned but did not pass in a result pointer.")
  447. }
  448. do {
  449. let errSecMatchLimitUnsupported: OSStatus = -34015
  450. let status = Status(rawValue: errSecMatchLimitUnsupported)
  451. XCTAssertEqual(status, .MatchLimitUnsupported)
  452. XCTAssertEqual(status?.description, "The caller passed in a kSecMatchLimit key to a call which does not support limits.")
  453. }
  454. do {
  455. let errSecItemIllegalQuery: OSStatus = -34016
  456. let status = Status(rawValue: errSecItemIllegalQuery)
  457. XCTAssertEqual(status, .ItemIllegalQuery)
  458. XCTAssertEqual(status?.description, "The caller passed in a query which contained too many keys.")
  459. }
  460. do {
  461. let errSecWaitForCallback: OSStatus = -34017
  462. let status = Status(rawValue: errSecWaitForCallback)
  463. XCTAssertEqual(status, .WaitForCallback)
  464. XCTAssertEqual(status?.description, "This operation is incomplete, until the callback is invoked (not an error).")
  465. }
  466. do {
  467. let errSecMissingEntitlement: OSStatus = -34018
  468. let status = Status(rawValue: errSecMissingEntitlement)
  469. XCTAssertEqual(status, .MissingEntitlement)
  470. XCTAssertEqual(status?.description, "Internal error when a required entitlement isn't present, client has neither application-identifier nor keychain-access-groups entitlements.")
  471. }
  472. do {
  473. let errSecUpgradePending: OSStatus = -34019
  474. let status = Status(rawValue: errSecUpgradePending)
  475. XCTAssertEqual(status, .UpgradePending)
  476. XCTAssertEqual(status?.description, "Error returned if keychain database needs a schema migration but the device is locked, clients should wait for a device unlock notification and retry the command.")
  477. }
  478. do {
  479. let errSecMPSignatureInvalid: OSStatus = -25327
  480. let status = Status(rawValue: errSecMPSignatureInvalid)
  481. XCTAssertEqual(status, .MPSignatureInvalid)
  482. XCTAssertEqual(status?.description, "Signature invalid on MP message")
  483. }
  484. do {
  485. let errSecOTRTooOld: OSStatus = -25328
  486. let status = Status(rawValue: errSecOTRTooOld)
  487. XCTAssertEqual(status, .OTRTooOld)
  488. XCTAssertEqual(status?.description, "Message is too old to use")
  489. }
  490. do {
  491. let errSecOTRIDTooNew: OSStatus = -25329
  492. let status = Status(rawValue: errSecOTRIDTooNew)
  493. XCTAssertEqual(status, .OTRIDTooNew)
  494. XCTAssertEqual(status?.description, "Key ID is too new to use! Message from the future?")
  495. }
  496. do {
  497. let status = Status(rawValue: errSecInsufficientClientID)
  498. XCTAssertEqual(status, .InsufficientClientID)
  499. XCTAssertEqual(status?.description, "The client ID is not correct.")
  500. }
  501. do {
  502. let status = Status(rawValue: errSecDeviceReset)
  503. XCTAssertEqual(status, .DeviceReset)
  504. XCTAssertEqual(status?.description, "A device reset has occurred.")
  505. }
  506. do {
  507. let status = Status(rawValue: errSecDeviceFailed)
  508. XCTAssertEqual(status, .DeviceFailed)
  509. XCTAssertEqual(status?.description, "A device failure has occurred.")
  510. }
  511. do {
  512. let status = Status(rawValue: errSecAppleAddAppACLSubject)
  513. XCTAssertEqual(status, .AppleAddAppACLSubject)
  514. XCTAssertEqual(status?.description, "Adding an application ACL subject failed.")
  515. }
  516. do {
  517. let status = Status(rawValue: errSecApplePublicKeyIncomplete)
  518. XCTAssertEqual(status, .ApplePublicKeyIncomplete)
  519. XCTAssertEqual(status?.description, "The public key is incomplete.")
  520. }
  521. do {
  522. let status = Status(rawValue: errSecAppleSignatureMismatch)
  523. XCTAssertEqual(status, .AppleSignatureMismatch)
  524. XCTAssertEqual(status?.description, "A signature mismatch has occurred.")
  525. }
  526. do {
  527. let status = Status(rawValue: errSecAppleInvalidKeyStartDate)
  528. XCTAssertEqual(status, .AppleInvalidKeyStartDate)
  529. XCTAssertEqual(status?.description, "The specified key has an invalid start date.")
  530. }
  531. do {
  532. let status = Status(rawValue: errSecAppleInvalidKeyEndDate)
  533. XCTAssertEqual(status, .AppleInvalidKeyEndDate)
  534. XCTAssertEqual(status?.description, "The specified key has an invalid end date.")
  535. }
  536. do {
  537. let status = Status(rawValue: errSecConversionError)
  538. XCTAssertEqual(status, .ConversionError)
  539. XCTAssertEqual(status?.description, "A conversion error has occurred.")
  540. }
  541. do {
  542. let status = Status(rawValue: errSecAppleSSLv2Rollback)
  543. XCTAssertEqual(status, .AppleSSLv2Rollback)
  544. XCTAssertEqual(status?.description, "A SSLv2 rollback error has occurred.")
  545. }
  546. do {
  547. let status = Status(rawValue: errSecDiskFull)
  548. XCTAssertEqual(status, .DiskFull)
  549. XCTAssertEqual(status?.description, "The disk is full.")
  550. }
  551. do {
  552. let status = Status(rawValue: errSecQuotaExceeded)
  553. XCTAssertEqual(status, .QuotaExceeded)
  554. XCTAssertEqual(status?.description, "The quota was exceeded.")
  555. }
  556. do {
  557. let status = Status(rawValue: errSecFileTooBig)
  558. XCTAssertEqual(status, .FileTooBig)
  559. XCTAssertEqual(status?.description, "The file is too big.")
  560. }
  561. do {
  562. let status = Status(rawValue: errSecInvalidDatabaseBlob)
  563. XCTAssertEqual(status, .InvalidDatabaseBlob)
  564. XCTAssertEqual(status?.description, "The specified database has an invalid blob.")
  565. }
  566. do {
  567. let status = Status(rawValue: errSecInvalidKeyBlob)
  568. XCTAssertEqual(status, .InvalidKeyBlob)
  569. XCTAssertEqual(status?.description, "The specified database has an invalid key blob.")
  570. }
  571. do {
  572. let status = Status(rawValue: errSecIncompatibleDatabaseBlob)
  573. XCTAssertEqual(status, .IncompatibleDatabaseBlob)
  574. XCTAssertEqual(status?.description, "The specified database has an incompatible blob.")
  575. }
  576. do {
  577. let status = Status(rawValue: errSecIncompatibleKeyBlob)
  578. XCTAssertEqual(status, .IncompatibleKeyBlob)
  579. XCTAssertEqual(status?.description, "The specified database has an incompatible key blob.")
  580. }
  581. do {
  582. let status = Status(rawValue: errSecHostNameMismatch)
  583. XCTAssertEqual(status, .HostNameMismatch)
  584. XCTAssertEqual(status?.description, "A host name mismatch has occurred.")
  585. }
  586. do {
  587. let status = Status(rawValue: errSecUnknownCriticalExtensionFlag)
  588. XCTAssertEqual(status, .UnknownCriticalExtensionFlag)
  589. XCTAssertEqual(status?.description, "There is an unknown critical extension flag.")
  590. }
  591. do {
  592. let status = Status(rawValue: errSecNoBasicConstraints)
  593. XCTAssertEqual(status, .NoBasicConstraints)
  594. XCTAssertEqual(status?.description, "No basic constraints were found.")
  595. }
  596. do {
  597. let status = Status(rawValue: errSecNoBasicConstraintsCA)
  598. XCTAssertEqual(status, .NoBasicConstraintsCA)
  599. XCTAssertEqual(status?.description, "No basic CA constraints were found.")
  600. }
  601. do {
  602. let status = Status(rawValue: errSecInvalidAuthorityKeyID)
  603. XCTAssertEqual(status, .InvalidAuthorityKeyID)
  604. XCTAssertEqual(status?.description, "The authority key ID is not valid.")
  605. }
  606. do {
  607. let status = Status(rawValue: errSecInvalidSubjectKeyID)
  608. XCTAssertEqual(status, .InvalidSubjectKeyID)
  609. XCTAssertEqual(status?.description, "The subject key ID is not valid.")
  610. }
  611. do {
  612. let status = Status(rawValue: errSecInvalidKeyUsageForPolicy)
  613. XCTAssertEqual(status, .InvalidKeyUsageForPolicy)
  614. XCTAssertEqual(status?.description, "The key usage is not valid for the specified policy.")
  615. }
  616. do {
  617. let status = Status(rawValue: errSecInvalidExtendedKeyUsage)
  618. XCTAssertEqual(status, .InvalidExtendedKeyUsage)
  619. XCTAssertEqual(status?.description, "The extended key usage is not valid.")
  620. }
  621. do {
  622. let status = Status(rawValue: errSecInvalidIDLinkage)
  623. XCTAssertEqual(status, .InvalidIDLinkage)
  624. XCTAssertEqual(status?.description, "The ID linkage is not valid.")
  625. }
  626. do {
  627. let status = Status(rawValue: errSecPathLengthConstraintExceeded)
  628. XCTAssertEqual(status, .PathLengthConstraintExceeded)
  629. XCTAssertEqual(status?.description, "The path length constraint was exceeded.")
  630. }
  631. do {
  632. let status = Status(rawValue: errSecInvalidRoot)
  633. XCTAssertEqual(status, .InvalidRoot)
  634. XCTAssertEqual(status?.description, "The root or anchor certificate is not valid.")
  635. }
  636. do {
  637. let status = Status(rawValue: errSecCRLExpired)
  638. XCTAssertEqual(status, .CRLExpired)
  639. XCTAssertEqual(status?.description, "The CRL has expired.")
  640. }
  641. do {
  642. let status = Status(rawValue: errSecCRLNotValidYet)
  643. XCTAssertEqual(status, .CRLNotValidYet)
  644. XCTAssertEqual(status?.description, "The CRL is not yet valid.")
  645. }
  646. do {
  647. let status = Status(rawValue: errSecCRLNotFound)
  648. XCTAssertEqual(status, .CRLNotFound)
  649. XCTAssertEqual(status?.description, "The CRL was not found.")
  650. }
  651. do {
  652. let status = Status(rawValue: errSecCRLServerDown)
  653. XCTAssertEqual(status, .CRLServerDown)
  654. XCTAssertEqual(status?.description, "The CRL server is down.")
  655. }
  656. do {
  657. let status = Status(rawValue: errSecCRLBadURI)
  658. XCTAssertEqual(status, .CRLBadURI)
  659. XCTAssertEqual(status?.description, "The CRL has a bad Uniform Resource Identifier.")
  660. }
  661. do {
  662. let status = Status(rawValue: errSecUnknownCertExtension)
  663. XCTAssertEqual(status, .UnknownCertExtension)
  664. XCTAssertEqual(status?.description, "An unknown certificate extension was encountered.")
  665. }
  666. do {
  667. let status = Status(rawValue: errSecUnknownCRLExtension)
  668. XCTAssertEqual(status, .UnknownCRLExtension)
  669. XCTAssertEqual(status?.description, "An unknown CRL extension was encountered.")
  670. }
  671. do {
  672. let status = Status(rawValue: errSecCRLNotTrusted)
  673. XCTAssertEqual(status, .CRLNotTrusted)
  674. XCTAssertEqual(status?.description, "The CRL is not trusted.")
  675. }
  676. do {
  677. let status = Status(rawValue: errSecCRLPolicyFailed)
  678. XCTAssertEqual(status, .CRLPolicyFailed)
  679. XCTAssertEqual(status?.description, "The CRL policy failed.")
  680. }
  681. do {
  682. let status = Status(rawValue: errSecIDPFailure)
  683. XCTAssertEqual(status, .IDPFailure)
  684. XCTAssertEqual(status?.description, "The issuing distribution point was not valid.")
  685. }
  686. do {
  687. let status = Status(rawValue: errSecSMIMEEmailAddressesNotFound)
  688. XCTAssertEqual(status, .SMIMEEmailAddressesNotFound)
  689. XCTAssertEqual(status?.description, "An email address mismatch was encountered.")
  690. }
  691. do {
  692. let status = Status(rawValue: errSecSMIMEBadExtendedKeyUsage)
  693. XCTAssertEqual(status, .SMIMEBadExtendedKeyUsage)
  694. XCTAssertEqual(status?.description, "The appropriate extended key usage for SMIME was not found.")
  695. }
  696. do {
  697. let status = Status(rawValue: errSecSMIMEBadKeyUsage)
  698. XCTAssertEqual(status, .SMIMEBadKeyUsage)
  699. XCTAssertEqual(status?.description, "The key usage is not compatible with SMIME.")
  700. }
  701. do {
  702. let status = Status(rawValue: errSecSMIMEKeyUsageNotCritical)
  703. XCTAssertEqual(status, .SMIMEKeyUsageNotCritical)
  704. XCTAssertEqual(status?.description, "The key usage extension is not marked as critical.")
  705. }
  706. do {
  707. let status = Status(rawValue: errSecSMIMENoEmailAddress)
  708. XCTAssertEqual(status, .SMIMENoEmailAddress)
  709. XCTAssertEqual(status?.description, "No email address was found in the certificate.")
  710. }
  711. do {
  712. let status = Status(rawValue: errSecSMIMESubjAltNameNotCritical)
  713. XCTAssertEqual(status, .SMIMESubjAltNameNotCritical)
  714. XCTAssertEqual(status?.description, "The subject alternative name extension is not marked as critical.")
  715. }
  716. do {
  717. let status = Status(rawValue: errSecSSLBadExtendedKeyUsage)
  718. XCTAssertEqual(status, .SSLBadExtendedKeyUsage)
  719. XCTAssertEqual(status?.description, "The appropriate extended key usage for SSL was not found.")
  720. }
  721. do {
  722. let status = Status(rawValue: errSecOCSPBadResponse)
  723. XCTAssertEqual(status, .OCSPBadResponse)
  724. XCTAssertEqual(status?.description, "The OCSP response was incorrect or could not be parsed.")
  725. }
  726. do {
  727. let status = Status(rawValue: errSecOCSPBadRequest)
  728. XCTAssertEqual(status, .OCSPBadRequest)
  729. XCTAssertEqual(status?.description, "The OCSP request was incorrect or could not be parsed.")
  730. }
  731. do {
  732. let status = Status(rawValue: errSecOCSPUnavailable)
  733. XCTAssertEqual(status, .OCSPUnavailable)
  734. XCTAssertEqual(status?.description, "OCSP service is unavailable.")
  735. }
  736. do {
  737. let status = Status(rawValue: errSecOCSPStatusUnrecognized)
  738. XCTAssertEqual(status, .OCSPStatusUnrecognized)
  739. XCTAssertEqual(status?.description, "The OCSP server did not recognize this certificate.")
  740. }
  741. do {
  742. let status = Status(rawValue: errSecEndOfData)
  743. XCTAssertEqual(status, .EndOfData)
  744. XCTAssertEqual(status?.description, "An end-of-data was detected.")
  745. }
  746. do {
  747. let status = Status(rawValue: errSecIncompleteCertRevocationCheck)
  748. XCTAssertEqual(status, .IncompleteCertRevocationCheck)
  749. XCTAssertEqual(status?.description, "An incomplete certificate revocation check occurred.")
  750. }
  751. do {
  752. let status = Status(rawValue: errSecNetworkFailure)
  753. XCTAssertEqual(status, .NetworkFailure)
  754. XCTAssertEqual(status?.description, "A network failure occurred.")
  755. }
  756. do {
  757. let status = Status(rawValue: errSecOCSPNotTrustedToAnchor)
  758. XCTAssertEqual(status, .OCSPNotTrustedToAnchor)
  759. XCTAssertEqual(status?.description, "The OCSP response was not trusted to a root or anchor certificate.")
  760. }
  761. do {
  762. let status = Status(rawValue: errSecRecordModified)
  763. XCTAssertEqual(status, .RecordModified)
  764. XCTAssertEqual(status?.description, "The record was modified.")
  765. }
  766. do {
  767. let status = Status(rawValue: errSecOCSPSignatureError)
  768. XCTAssertEqual(status, .OCSPSignatureError)
  769. XCTAssertEqual(status?.description, "The OCSP response had an invalid signature.")
  770. }
  771. do {
  772. let status = Status(rawValue: errSecOCSPNoSigner)
  773. XCTAssertEqual(status, .OCSPNoSigner)
  774. XCTAssertEqual(status?.description, "The OCSP response had no signer.")
  775. }
  776. do {
  777. let status = Status(rawValue: errSecOCSPResponderMalformedReq)
  778. XCTAssertEqual(status, .OCSPResponderMalformedReq)
  779. XCTAssertEqual(status?.description, "The OCSP responder was given a malformed request.")
  780. }
  781. do {
  782. let status = Status(rawValue: errSecOCSPResponderInternalError)
  783. XCTAssertEqual(status, .OCSPResponderInternalError)
  784. XCTAssertEqual(status?.description, "The OCSP responder encountered an internal error.")
  785. }
  786. do {
  787. let status = Status(rawValue: errSecOCSPResponderTryLater)
  788. XCTAssertEqual(status, .OCSPResponderTryLater)
  789. XCTAssertEqual(status?.description, "The OCSP responder is busy, try again later.")
  790. }
  791. do {
  792. let status = Status(rawValue: errSecOCSPResponderSignatureRequired)
  793. XCTAssertEqual(status, .OCSPResponderSignatureRequired)
  794. XCTAssertEqual(status?.description, "The OCSP responder requires a signature.")
  795. }
  796. do {
  797. let status = Status(rawValue: errSecOCSPResponderUnauthorized)
  798. XCTAssertEqual(status, .OCSPResponderUnauthorized)
  799. XCTAssertEqual(status?.description, "The OCSP responder rejected this request as unauthorized.")
  800. }
  801. do {
  802. let status = Status(rawValue: errSecOCSPResponseNonceMismatch)
  803. XCTAssertEqual(status, .OCSPResponseNonceMismatch)
  804. XCTAssertEqual(status?.description, "The OCSP response nonce did not match the request.")
  805. }
  806. do {
  807. let status = Status(rawValue: errSecCodeSigningBadCertChainLength)
  808. XCTAssertEqual(status, .CodeSigningBadCertChainLength)
  809. XCTAssertEqual(status?.description, "Code signing encountered an incorrect certificate chain length.")
  810. }
  811. do {
  812. let status = Status(rawValue: errSecCodeSigningNoBasicConstraints)
  813. XCTAssertEqual(status, .CodeSigningNoBasicConstraints)
  814. XCTAssertEqual(status?.description, "Code signing found no basic constraints.")
  815. }
  816. do {
  817. let status = Status(rawValue: errSecCodeSigningBadPathLengthConstraint)
  818. XCTAssertEqual(status, .CodeSigningBadPathLengthConstraint)
  819. XCTAssertEqual(status?.description, "Code signing encountered an incorrect path length constraint.")
  820. }
  821. do {
  822. let status = Status(rawValue: errSecCodeSigningNoExtendedKeyUsage)
  823. XCTAssertEqual(status, .CodeSigningNoExtendedKeyUsage)
  824. XCTAssertEqual(status?.description, "Code signing found no extended key usage.")
  825. }
  826. do {
  827. let status = Status(rawValue: errSecCodeSigningDevelopment)
  828. XCTAssertEqual(status, .CodeSigningDevelopment)
  829. XCTAssertEqual(status?.description, "Code signing indicated use of a development-only certificate.")
  830. }
  831. do {
  832. let status = Status(rawValue: errSecResourceSignBadCertChainLength)
  833. XCTAssertEqual(status, .ResourceSignBadCertChainLength)
  834. XCTAssertEqual(status?.description, "Resource signing has encountered an incorrect certificate chain length.")
  835. }
  836. do {
  837. let status = Status(rawValue: errSecResourceSignBadExtKeyUsage)
  838. XCTAssertEqual(status, .ResourceSignBadExtKeyUsage)
  839. XCTAssertEqual(status?.description, "Resource signing has encountered an error in the extended key usage.")
  840. }
  841. do {
  842. let status = Status(rawValue: errSecTrustSettingDeny)
  843. XCTAssertEqual(status, .TrustSettingDeny)
  844. XCTAssertEqual(status?.description, "The trust setting for this policy was set to Deny.")
  845. }
  846. do {
  847. let status = Status(rawValue: errSecInvalidSubjectName)
  848. XCTAssertEqual(status, .InvalidSubjectName)
  849. XCTAssertEqual(status?.description, "An invalid certificate subject name was encountered.")
  850. }
  851. do {
  852. let status = Status(rawValue: errSecUnknownQualifiedCertStatement)
  853. XCTAssertEqual(status, .UnknownQualifiedCertStatement)
  854. XCTAssertEqual(status?.description, "An unknown qualified certificate statement was encountered.")
  855. }
  856. do {
  857. let status = Status(rawValue: errSecMobileMeRequestQueued)
  858. XCTAssertEqual(status, .MobileMeRequestQueued)
  859. XCTAssertEqual(status?.description, "The MobileMe request will be sent during the next connection.")
  860. }
  861. do {
  862. let status = Status(rawValue: errSecMobileMeRequestRedirected)
  863. XCTAssertEqual(status, .MobileMeRequestRedirected)
  864. XCTAssertEqual(status?.description, "The MobileMe request was redirected.")
  865. }
  866. do {
  867. let status = Status(rawValue: errSecMobileMeServerError)
  868. XCTAssertEqual(status, .MobileMeServerError)
  869. XCTAssertEqual(status?.description, "A MobileMe server error occurred.")
  870. }
  871. do {
  872. let status = Status(rawValue: errSecMobileMeServerNotAvailable)
  873. XCTAssertEqual(status, .MobileMeServerNotAvailable)
  874. XCTAssertEqual(status?.description, "The MobileMe server is not available.")
  875. }
  876. do {
  877. let status = Status(rawValue: errSecMobileMeServerAlreadyExists)
  878. XCTAssertEqual(status, .MobileMeServerAlreadyExists)
  879. XCTAssertEqual(status?.description, "The MobileMe server reported that the item already exists.")
  880. }
  881. do {
  882. let status = Status(rawValue: errSecMobileMeServerServiceErr)
  883. XCTAssertEqual(status, .MobileMeServerServiceErr)
  884. XCTAssertEqual(status?.description, "A MobileMe service error has occurred.")
  885. }
  886. do {
  887. let status = Status(rawValue: errSecMobileMeRequestAlreadyPending)
  888. XCTAssertEqual(status, .MobileMeRequestAlreadyPending)
  889. XCTAssertEqual(status?.description, "A MobileMe request is already pending.")
  890. }
  891. do {
  892. let status = Status(rawValue: errSecMobileMeNoRequestPending)
  893. XCTAssertEqual(status, .MobileMeNoRequestPending)
  894. XCTAssertEqual(status?.description, "MobileMe has no request pending.")
  895. }
  896. do {
  897. let status = Status(rawValue: errSecMobileMeCSRVerifyFailure)
  898. XCTAssertEqual(status, .MobileMeCSRVerifyFailure)
  899. XCTAssertEqual(status?.description, "A MobileMe CSR verification failure has occurred.")
  900. }
  901. do {
  902. let status = Status(rawValue: errSecMobileMeFailedConsistencyCheck)
  903. XCTAssertEqual(status, .MobileMeFailedConsistencyCheck)
  904. XCTAssertEqual(status?.description, "MobileMe has found a failed consistency check.")
  905. }
  906. do {
  907. let status = Status(rawValue: errSecNotInitialized)
  908. XCTAssertEqual(status, .NotInitialized)
  909. XCTAssertEqual(status?.description, "A function was called without initializing CSSM.")
  910. }
  911. do {
  912. let status = Status(rawValue: errSecInvalidHandleUsage)
  913. XCTAssertEqual(status, .InvalidHandleUsage)
  914. XCTAssertEqual(status?.description, "The CSSM handle does not match with the service type.")
  915. }
  916. do {
  917. let status = Status(rawValue: errSecPVCReferentNotFound)
  918. XCTAssertEqual(status, .PVCReferentNotFound)
  919. XCTAssertEqual(status?.description, "A reference to the calling module was not found in the list of authorized callers.")
  920. }
  921. do {
  922. let status = Status(rawValue: errSecFunctionIntegrityFail)
  923. XCTAssertEqual(status, .FunctionIntegrityFail)
  924. XCTAssertEqual(status?.description, "A function address was not within the verified module.")
  925. }
  926. do {
  927. let status = Status(rawValue: errSecInternalError)
  928. XCTAssertEqual(status, .InternalError)
  929. XCTAssertEqual(status?.description, "An internal error has occurred.")
  930. }
  931. do {
  932. let status = Status(rawValue: errSecMemoryError)
  933. XCTAssertEqual(status, .MemoryError)
  934. XCTAssertEqual(status?.description, "A memory error has occurred.")
  935. }
  936. do {
  937. let status = Status(rawValue: errSecInvalidData)
  938. XCTAssertEqual(status, .InvalidData)
  939. XCTAssertEqual(status?.description, "Invalid data was encountered.")
  940. }
  941. do {
  942. let status = Status(rawValue: errSecMDSError)
  943. XCTAssertEqual(status, .MDSError)
  944. XCTAssertEqual(status?.description, "A Module Directory Service error has occurred.")
  945. }
  946. do {
  947. let status = Status(rawValue: errSecInvalidPointer)
  948. XCTAssertEqual(status, .InvalidPointer)
  949. XCTAssertEqual(status?.description, "An invalid pointer was encountered.")
  950. }
  951. do {
  952. let status = Status(rawValue: errSecSelfCheckFailed)
  953. XCTAssertEqual(status, .SelfCheckFailed)
  954. XCTAssertEqual(status?.description, "Self-check has failed.")
  955. }
  956. do {
  957. let status = Status(rawValue: errSecFunctionFailed)
  958. XCTAssertEqual(status, .FunctionFailed)
  959. XCTAssertEqual(status?.description, "A function has failed.")
  960. }
  961. do {
  962. let status = Status(rawValue: errSecModuleManifestVerifyFailed)
  963. XCTAssertEqual(status, .ModuleManifestVerifyFailed)
  964. XCTAssertEqual(status?.description, "A module manifest verification failure has occurred.")
  965. }
  966. do {
  967. let status = Status(rawValue: errSecInvalidGUID)
  968. XCTAssertEqual(status, .InvalidGUID)
  969. XCTAssertEqual(status?.description, "An invalid GUID was encountered.")
  970. }
  971. do {
  972. let status = Status(rawValue: errSecInvalidHandle)
  973. XCTAssertEqual(status, .InvalidHandle)
  974. XCTAssertEqual(status?.description, "An invalid handle was encountered.")
  975. }
  976. do {
  977. let status = Status(rawValue: errSecInvalidDBList)
  978. XCTAssertEqual(status, .InvalidDBList)
  979. XCTAssertEqual(status?.description, "An invalid DB list was encountered.")
  980. }
  981. do {
  982. let status = Status(rawValue: errSecInvalidPassthroughID)
  983. XCTAssertEqual(status, .InvalidPassthroughID)
  984. XCTAssertEqual(status?.description, "An invalid passthrough ID was encountered.")
  985. }
  986. do {
  987. let status = Status(rawValue: errSecInvalidNetworkAddress)
  988. XCTAssertEqual(status, .InvalidNetworkAddress)
  989. XCTAssertEqual(status?.description, "An invalid network address was encountered.")
  990. }
  991. do {
  992. let status = Status(rawValue: errSecCRLAlreadySigned)
  993. XCTAssertEqual(status, .CRLAlreadySigned)
  994. XCTAssertEqual(status?.description, "The certificate revocation list is already signed.")
  995. }
  996. do {
  997. let status = Status(rawValue: errSecInvalidNumberOfFields)
  998. XCTAssertEqual(status, .InvalidNumberOfFields)
  999. XCTAssertEqual(status?.description, "An invalid number of fields were encountered.")
  1000. }
  1001. do {
  1002. let status = Status(rawValue: errSecVerificationFailure)
  1003. XCTAssertEqual(status, .VerificationFailure)
  1004. XCTAssertEqual(status?.description, "A verification failure occurred.")
  1005. }
  1006. do {
  1007. let status = Status(rawValue: errSecUnknownTag)
  1008. XCTAssertEqual(status, .UnknownTag)
  1009. XCTAssertEqual(status?.description, "An unknown tag was encountered.")
  1010. }
  1011. do {
  1012. let status = Status(rawValue: errSecInvalidSignature)
  1013. XCTAssertEqual(status, .InvalidSignature)
  1014. XCTAssertEqual(status?.description, "An invalid signature was encountered.")
  1015. }
  1016. do {
  1017. let status = Status(rawValue: errSecInvalidName)
  1018. XCTAssertEqual(status, .InvalidName)
  1019. XCTAssertEqual(status?.description, "An invalid name was encountered.")
  1020. }
  1021. do {
  1022. let status = Status(rawValue: errSecInvalidCertificateRef)
  1023. XCTAssertEqual(status, .InvalidCertificateRef)
  1024. XCTAssertEqual(status?.description, "An invalid certificate reference was encountered.")
  1025. }
  1026. do {
  1027. let status = Status(rawValue: errSecInvalidCertificateGroup)
  1028. XCTAssertEqual(status, .InvalidCertificateGroup)
  1029. XCTAssertEqual(status?.description, "An invalid certificate group was encountered.")
  1030. }
  1031. do {
  1032. let status = Status(rawValue: errSecTagNotFound)
  1033. XCTAssertEqual(status, .TagNotFound)
  1034. XCTAssertEqual(status?.description, "The specified tag was not found.")
  1035. }
  1036. do {
  1037. let status = Status(rawValue: errSecInvalidQuery)
  1038. XCTAssertEqual(status, .InvalidQuery)
  1039. XCTAssertEqual(status?.description, "The specified query was not valid.")
  1040. }
  1041. do {
  1042. let status = Status(rawValue: errSecInvalidValue)
  1043. XCTAssertEqual(status, .InvalidValue)
  1044. XCTAssertEqual(status?.description, "An invalid value was detected.")
  1045. }
  1046. do {
  1047. let status = Status(rawValue: errSecCallbackFailed)
  1048. XCTAssertEqual(status, .CallbackFailed)
  1049. XCTAssertEqual(status?.description, "A callback has failed.")
  1050. }
  1051. do {
  1052. let status = Status(rawValue: errSecACLDeleteFailed)
  1053. XCTAssertEqual(status, .ACLDeleteFailed)
  1054. XCTAssertEqual(status?.description, "An ACL delete operation has failed.")
  1055. }
  1056. do {
  1057. let status = Status(rawValue: errSecACLReplaceFailed)
  1058. XCTAssertEqual(status, .ACLReplaceFailed)
  1059. XCTAssertEqual(status?.description, "An ACL replace operation has failed.")
  1060. }
  1061. do {
  1062. let status = Status(rawValue: errSecACLAddFailed)
  1063. XCTAssertEqual(status, .ACLAddFailed)
  1064. XCTAssertEqual(status?.description, "An ACL add operation has failed.")
  1065. }
  1066. do {
  1067. let status = Status(rawValue: errSecACLChangeFailed)
  1068. XCTAssertEqual(status, .ACLChangeFailed)
  1069. XCTAssertEqual(status?.description, "An ACL change operation has failed.")
  1070. }
  1071. do {
  1072. let status = Status(rawValue: errSecInvalidAccessCredentials)
  1073. XCTAssertEqual(status, .InvalidAccessCredentials)
  1074. XCTAssertEqual(status?.description, "Invalid access credentials were encountered.")
  1075. }
  1076. do {
  1077. let status = Status(rawValue: errSecInvalidRecord)
  1078. XCTAssertEqual(status, .InvalidRecord)
  1079. XCTAssertEqual(status?.description, "An invalid record was encountered.")
  1080. }
  1081. do {
  1082. let status = Status(rawValue: errSecInvalidACL)
  1083. XCTAssertEqual(status, .InvalidACL)
  1084. XCTAssertEqual(status?.description, "An invalid ACL was encountered.")
  1085. }
  1086. do {
  1087. let status = Status(rawValue: errSecInvalidSampleValue)
  1088. XCTAssertEqual(status, .InvalidSampleValue)
  1089. XCTAssertEqual(status?.description, "An invalid sample value was encountered.")
  1090. }
  1091. do {
  1092. let status = Status(rawValue: errSecIncompatibleVersion)
  1093. XCTAssertEqual(status, .IncompatibleVersion)
  1094. XCTAssertEqual(status?.description, "An incompatible version was encountered.")
  1095. }
  1096. do {
  1097. let status = Status(rawValue: errSecPrivilegeNotGranted)
  1098. XCTAssertEqual(status, .PrivilegeNotGranted)
  1099. XCTAssertEqual(status?.description, "The privilege was not granted.")
  1100. }
  1101. do {
  1102. let status = Status(rawValue: errSecInvalidScope)
  1103. XCTAssertEqual(status, .InvalidScope)
  1104. XCTAssertEqual(status?.description, "An invalid scope was encountered.")
  1105. }
  1106. do {
  1107. let status = Status(rawValue: errSecPVCAlreadyConfigured)
  1108. XCTAssertEqual(status, .PVCAlreadyConfigured)
  1109. XCTAssertEqual(status?.description, "The PVC is already configured.")
  1110. }
  1111. do {
  1112. let status = Status(rawValue: errSecInvalidPVC)
  1113. XCTAssertEqual(status, .InvalidPVC)
  1114. XCTAssertEqual(status?.description, "An invalid PVC was encountered.")
  1115. }
  1116. do {
  1117. let status = Status(rawValue: errSecEMMLoadFailed)
  1118. XCTAssertEqual(status, .EMMLoadFailed)
  1119. XCTAssertEqual(status?.description, "The EMM load has failed.")
  1120. }
  1121. do {
  1122. let status = Status(rawValue: errSecEMMUnloadFailed)
  1123. XCTAssertEqual(status, .EMMUnloadFailed)
  1124. XCTAssertEqual(status?.description, "The EMM unload has failed.")
  1125. }
  1126. do {
  1127. let status = Status(rawValue: errSecAddinLoadFailed)
  1128. XCTAssertEqual(status, .AddinLoadFailed)
  1129. XCTAssertEqual(status?.description, "The add-in load operation has failed.")
  1130. }
  1131. do {
  1132. let status = Status(rawValue: errSecInvalidKeyRef)
  1133. XCTAssertEqual(status, .InvalidKeyRef)
  1134. XCTAssertEqual(status?.description, "An invalid key was encountered.")
  1135. }
  1136. do {
  1137. let status = Status(rawValue: errSecInvalidKeyHierarchy)
  1138. XCTAssertEqual(status, .InvalidKeyHierarchy)
  1139. XCTAssertEqual(status?.description, "An invalid key hierarchy was encountered.")
  1140. }
  1141. do {
  1142. let status = Status(rawValue: errSecAddinUnloadFailed)
  1143. XCTAssertEqual(status, .AddinUnloadFailed)
  1144. XCTAssertEqual(status?.description, "The add-in unload operation has failed.")
  1145. }
  1146. do {
  1147. let status = Status(rawValue: errSecLibraryReferenceNotFound)
  1148. XCTAssertEqual(status, .LibraryReferenceNotFound)
  1149. XCTAssertEqual(status?.description, "A library reference was not found.")
  1150. }
  1151. do {
  1152. let status = Status(rawValue: errSecInvalidAddinFunctionTable)
  1153. XCTAssertEqual(status, .InvalidAddinFunctionTable)
  1154. XCTAssertEqual(status?.description, "An invalid add-in function table was encountered.")
  1155. }
  1156. do {
  1157. let status = Status(rawValue: errSecInvalidServiceMask)
  1158. XCTAssertEqual(status, .InvalidServiceMask)
  1159. XCTAssertEqual(status?.description, "An invalid service mask was encountered.")
  1160. }
  1161. do {
  1162. let status = Status(rawValue: errSecModuleNotLoaded)
  1163. XCTAssertEqual(status, .ModuleNotLoaded)
  1164. XCTAssertEqual(status?.description, "A module was not loaded.")
  1165. }
  1166. do {
  1167. let status = Status(rawValue: errSecInvalidSubServiceID)
  1168. XCTAssertEqual(status, .InvalidSubServiceID)
  1169. XCTAssertEqual(status?.description, "An invalid subservice ID was encountered.")
  1170. }
  1171. do {
  1172. let status = Status(rawValue: errSecAttributeNotInContext)
  1173. XCTAssertEqual(status, .AttributeNotInContext)
  1174. XCTAssertEqual(status?.description, "An attribute was not in the context.")
  1175. }
  1176. do {
  1177. let status = Status(rawValue: errSecModuleManagerInitializeFailed)
  1178. XCTAssertEqual(status, .ModuleManagerInitializeFailed)
  1179. XCTAssertEqual(status?.description, "A module failed to initialize.")
  1180. }
  1181. do {
  1182. let status = Status(rawValue: errSecModuleManagerNotFound)
  1183. XCTAssertEqual(status, .ModuleManagerNotFound)
  1184. XCTAssertEqual(status?.description, "A module was not found.")
  1185. }
  1186. do {
  1187. let status = Status(rawValue: errSecEventNotificationCallbackNotFound)
  1188. XCTAssertEqual(status, .EventNotificationCallbackNotFound)
  1189. XCTAssertEqual(status?.description, "An event notification callback was not found.")
  1190. }
  1191. do {
  1192. let status = Status(rawValue: errSecInputLengthError)
  1193. XCTAssertEqual(status, .InputLengthError)
  1194. XCTAssertEqual(status?.description, "An input length error was encountered.")
  1195. }
  1196. do {
  1197. let status = Status(rawValue: errSecOutputLengthError)
  1198. XCTAssertEqual(status, .OutputLengthError)
  1199. XCTAssertEqual(status?.description, "An output length error was encountered.")
  1200. }
  1201. do {
  1202. let status = Status(rawValue: errSecPrivilegeNotSupported)
  1203. XCTAssertEqual(status, .PrivilegeNotSupported)
  1204. XCTAssertEqual(status?.description, "The privilege is not supported.")
  1205. }
  1206. do {
  1207. let status = Status(rawValue: errSecDeviceError)
  1208. XCTAssertEqual(status, .DeviceError)
  1209. XCTAssertEqual(status?.description, "A device error was encountered.")
  1210. }
  1211. do {
  1212. let status = Status(rawValue: errSecAttachHandleBusy)
  1213. XCTAssertEqual(status, .AttachHandleBusy)
  1214. XCTAssertEqual(status?.description, "The CSP handle was busy.")
  1215. }
  1216. do {
  1217. let status = Status(rawValue: errSecNotLoggedIn)
  1218. XCTAssertEqual(status, .NotLoggedIn)
  1219. XCTAssertEqual(status?.description, "You are not logged in.")
  1220. }
  1221. do {
  1222. let status = Status(rawValue: errSecAlgorithmMismatch)
  1223. XCTAssertEqual(status, .AlgorithmMismatch)
  1224. XCTAssertEqual(status?.description, "An algorithm mismatch was encountered.")
  1225. }
  1226. do {
  1227. let status = Status(rawValue: errSecKeyUsageIncorrect)
  1228. XCTAssertEqual(status, .KeyUsageIncorrect)
  1229. XCTAssertEqual(status?.description, "The key usage is incorrect.")
  1230. }
  1231. do {
  1232. let status = Status(rawValue: errSecKeyBlobTypeIncorrect)
  1233. XCTAssertEqual(status, .KeyBlobTypeIncorrect)
  1234. XCTAssertEqual(status?.description, "The key blob type is incorrect.")
  1235. }
  1236. do {
  1237. let status = Status(rawValue: errSecKeyHeaderInconsistent)
  1238. XCTAssertEqual(status, .KeyHeaderInconsistent)
  1239. XCTAssertEqual(status?.description, "The key header is inconsistent.")
  1240. }
  1241. do {
  1242. let status = Status(rawValue: errSecUnsupportedKeyFormat)
  1243. XCTAssertEqual(status, .UnsupportedKeyFormat)
  1244. XCTAssertEqual(status?.description, "The key header format is not supported.")
  1245. }
  1246. do {
  1247. let status = Status(rawValue: errSecUnsupportedKeySize)
  1248. XCTAssertEqual(status, .UnsupportedKeySize)
  1249. XCTAssertEqual(status?.description, "The key size is not supported.")
  1250. }
  1251. do {
  1252. let status = Status(rawValue: errSecInvalidKeyUsageMask)
  1253. XCTAssertEqual(status, .InvalidKeyUsageMask)
  1254. XCTAssertEqual(status?.description, "The key usage mask is not valid.")
  1255. }
  1256. do {
  1257. let status = Status(rawValue: errSecUnsupportedKeyUsageMask)
  1258. XCTAssertEqual(status, .UnsupportedKeyUsageMask)
  1259. XCTAssertEqual(status?.description, "The key usage mask is not supported.")
  1260. }
  1261. do {
  1262. let status = Status(rawValue: errSecInvalidKeyAttributeMask)
  1263. XCTAssertEqual(status, .InvalidKeyAttributeMask)
  1264. XCTAssertEqual(status?.description, "The key attribute mask is not valid.")
  1265. }
  1266. do {
  1267. let status = Status(rawValue: errSecUnsupportedKeyAttributeMask)
  1268. XCTAssertEqual(status, .UnsupportedKeyAttributeMask)
  1269. XCTAssertEqual(status?.description, "The key attribute mask is not supported.")
  1270. }
  1271. do {
  1272. let status = Status(rawValue: errSecInvalidKeyLabel)
  1273. XCTAssertEqual(status, .InvalidKeyLabel)
  1274. XCTAssertEqual(status?.description, "The key label is not valid.")
  1275. }
  1276. do {
  1277. let status = Status(rawValue: errSecUnsupportedKeyLabel)
  1278. XCTAssertEqual(status, .UnsupportedKeyLabel)
  1279. XCTAssertEqual(status?.description, "The key label is not supported.")
  1280. }
  1281. do {
  1282. let status = Status(rawValue: errSecInvalidKeyFormat)
  1283. XCTAssertEqual(status, .InvalidKeyFormat)
  1284. XCTAssertEqual(status?.description, "The key format is not valid.")
  1285. }
  1286. do {
  1287. let status = Status(rawValue: errSecUnsupportedVectorOfBuffers)
  1288. XCTAssertEqual(status, .UnsupportedVectorOfBuffers)
  1289. XCTAssertEqual(status?.description, "The vector of buffers is not supported.")
  1290. }
  1291. do {
  1292. let status = Status(rawValue: errSecInvalidInputVector)
  1293. XCTAssertEqual(status, .InvalidInputVector)
  1294. XCTAssertEqual(status?.description, "The input vector is not valid.")
  1295. }
  1296. do {
  1297. let status = Status(rawValue: errSecInvalidOutputVector)
  1298. XCTAssertEqual(status, .InvalidOutputVector)
  1299. XCTAssertEqual(status?.description, "The output vector is not valid.")
  1300. }
  1301. do {
  1302. let status = Status(rawValue: errSecInvalidContext)
  1303. XCTAssertEqual(status, .InvalidContext)
  1304. XCTAssertEqual(status?.description, "An invalid context was encountered.")
  1305. }
  1306. do {
  1307. let status = Status(rawValue: errSecInvalidAlgorithm)
  1308. XCTAssertEqual(status, .InvalidAlgorithm)
  1309. XCTAssertEqual(status?.description, "An invalid algorithm was encountered.")
  1310. }
  1311. do {
  1312. let status = Status(rawValue: errSecInvalidAttributeKey)
  1313. XCTAssertEqual(status, .InvalidAttributeKey)
  1314. XCTAssertEqual(status?.description, "A key attribute was not valid.")
  1315. }
  1316. do {
  1317. let status = Status(rawValue: errSecMissingAttributeKey)
  1318. XCTAssertEqual(status, .MissingAttributeKey)
  1319. XCTAssertEqual(status?.description, "A key attribute was missing.")
  1320. }
  1321. do {
  1322. let status = Status(rawValue: errSecInvalidAttributeInitVector)
  1323. XCTAssertEqual(status, .InvalidAttributeInitVector)
  1324. XCTAssertEqual(status?.description, "An init vector attribute was not valid.")
  1325. }
  1326. do {
  1327. let status = Status(rawValue: errSecMissingAttributeInitVector)
  1328. XCTAssertEqual(status, .MissingAttributeInitVector)
  1329. XCTAssertEqual(status?.description, "An init vector attribute was missing.")
  1330. }
  1331. do {
  1332. let status = Status(rawValue: errSecInvalidAttributeSalt)
  1333. XCTAssertEqual(status, .InvalidAttributeSalt)
  1334. XCTAssertEqual(status?.description, "A salt attribute was not valid.")
  1335. }
  1336. do {
  1337. let status = Status(rawValue: errSecMissingAttributeSalt)
  1338. XCTAssertEqual(status, .MissingAttributeSalt)
  1339. XCTAssertEqual(status?.description, "A salt attribute was missing.")
  1340. }
  1341. do {
  1342. let status = Status(rawValue: errSecInvalidAttributePadding)
  1343. XCTAssertEqual(status, .InvalidAttributePadding)
  1344. XCTAssertEqual(status?.description, "A padding attribute was not valid.")
  1345. }
  1346. do {
  1347. let status = Status(rawValue: errSecMissingAttributePadding)
  1348. XCTAssertEqual(status, .MissingAttributePadding)
  1349. XCTAssertEqual(status?.description, "A padding attribute was missing.")
  1350. }
  1351. do {
  1352. let status = Status(rawValue: errSecInvalidAttributeRandom)
  1353. XCTAssertEqual(status, .InvalidAttributeRandom)
  1354. XCTAssertEqual(status?.description, "A random number attribute was not valid.")
  1355. }
  1356. do {
  1357. let status = Status(rawValue: errSecMissingAttributeRandom)
  1358. XCTAssertEqual(status, .MissingAttributeRandom)
  1359. XCTAssertEqual(status?.description, "A random number attribute was missing.")
  1360. }
  1361. do {
  1362. let status = Status(rawValue: errSecInvalidAttributeSeed)
  1363. XCTAssertEqual(status, .InvalidAttributeSeed)
  1364. XCTAssertEqual(status?.description, "A seed attribute was not valid.")
  1365. }
  1366. do {
  1367. let status = Status(rawValue: errSecMissingAttributeSeed)
  1368. XCTAssertEqual(status, .MissingAttributeSeed)
  1369. XCTAssertEqual(status?.description, "A seed attribute was missing.")
  1370. }
  1371. do {
  1372. let status = Status(rawValue: errSecInvalidAttributePassphrase)
  1373. XCTAssertEqual(status, .InvalidAttributePassphrase)
  1374. XCTAssertEqual(status?.description, "A passphrase attribute was not valid.")
  1375. }
  1376. do {
  1377. let status = Status(rawValue: errSecMissingAttributePassphrase)
  1378. XCTAssertEqual(status, .MissingAttributePassphrase)
  1379. XCTAssertEqual(status?.description, "A passphrase attribute was missing.")
  1380. }
  1381. do {
  1382. let status = Status(rawValue: errSecInvalidAttributeKeyLength)
  1383. XCTAssertEqual(status, .InvalidAttributeKeyLength)
  1384. XCTAssertEqual(status?.description, "A key length attribute was not valid.")
  1385. }
  1386. do {
  1387. let status = Status(rawValue: errSecMissingAttributeKeyLength)
  1388. XCTAssertEqual(status, .MissingAttributeKeyLength)
  1389. XCTAssertEqual(status?.description, "A key length attribute was missing.")
  1390. }
  1391. do {
  1392. let status = Status(rawValue: errSecInvalidAttributeBlockSize)
  1393. XCTAssertEqual(status, .InvalidAttributeBlockSize)
  1394. XCTAssertEqual(status?.description, "A block size attribute was not valid.")
  1395. }
  1396. do {
  1397. let status = Status(rawValue: errSecMissingAttributeBlockSize)
  1398. XCTAssertEqual(status, .MissingAttributeBlockSize)
  1399. XCTAssertEqual(status?.description, "A block size attribute was missing.")
  1400. }
  1401. do {
  1402. let status = Status(rawValue: errSecInvalidAttributeOutputSize)
  1403. XCTAssertEqual(status, .InvalidAttributeOutputSize)
  1404. XCTAssertEqual(status?.description, "An output size attribute was not valid.")
  1405. }
  1406. do {
  1407. let status = Status(rawValue: errSecMissingAttributeOutputSize)
  1408. XCTAssertEqual(status, .MissingAttributeOutputSize)
  1409. XCTAssertEqual(status?.description, "An output size attribute was missing.")
  1410. }
  1411. do {
  1412. let status = Status(rawValue: errSecInvalidAttributeRounds)
  1413. XCTAssertEqual(status, .InvalidAttributeRounds)
  1414. XCTAssertEqual(status?.description, "The number of rounds attribute was not valid.")
  1415. }
  1416. do {
  1417. let status = Status(rawValue: errSecMissingAttributeRounds)
  1418. XCTAssertEqual(status, .MissingAttributeRounds)
  1419. XCTAssertEqual(status?.description, "The number of rounds attribute was missing.")
  1420. }
  1421. do {
  1422. let status = Status(rawValue: errSecInvalidAlgorithmParms)
  1423. XCTAssertEqual(status, .InvalidAlgorithmParms)
  1424. XCTAssertEqual(status?.description, "An algorithm parameters attribute was not valid.")
  1425. }
  1426. do {
  1427. let status = Status(rawValue: errSecMissingAlgorithmParms)
  1428. XCTAssertEqual(status, .MissingAlgorithmParms)
  1429. XCTAssertEqual(status?.description, "An algorithm parameters attribute was missing.")
  1430. }
  1431. do {
  1432. let status = Status(rawValue: errSecInvalidAttributeLabel)
  1433. XCTAssertEqual(status, .InvalidAttributeLabel)
  1434. XCTAssertEqual(status?.description, "A label attribute was not valid.")
  1435. }
  1436. do {
  1437. let status = Status(rawValue: errSecMissingAttributeLabel)
  1438. XCTAssertEqual(status, .MissingAttributeLabel)
  1439. XCTAssertEqual(status?.description, "A label attribute was missing.")
  1440. }
  1441. do {
  1442. let status = Status(rawValue: errSecInvalidAttributeKeyType)
  1443. XCTAssertEqual(status, .InvalidAttributeKeyType)
  1444. XCTAssertEqual(status?.description, "A key type attribute was not valid.")
  1445. }
  1446. do {
  1447. let status = Status(rawValue: errSecMissingAttributeKeyType)
  1448. XCTAssertEqual(status, .MissingAttributeKeyType)
  1449. XCTAssertEqual(status?.description, "A key type attribute was missing.")
  1450. }
  1451. do {
  1452. let status = Status(rawValue: errSecInvalidAttributeMode)
  1453. XCTAssertEqual(status, .InvalidAttributeMode)
  1454. XCTAssertEqual(status?.description, "A mode attribute was not valid.")
  1455. }
  1456. do {
  1457. let status = Status(rawValue: errSecMissingAttributeMode)
  1458. XCTAssertEqual(status, .MissingAttributeMode)
  1459. XCTAssertEqual(status?.description, "A mode attribute was missing.")
  1460. }
  1461. do {
  1462. let status = Status(rawValue: errSecInvalidAttributeEffectiveBits)
  1463. XCTAssertEqual(status, .InvalidAttributeEffectiveBits)
  1464. XCTAssertEqual(status?.description, "An effective bits attribute was not valid.")
  1465. }
  1466. do {
  1467. let status = Status(rawValue: errSecMissingAttributeEffectiveBits)
  1468. XCTAssertEqual(status, .MissingAttributeEffectiveBits)
  1469. XCTAssertEqual(status?.description, "An effective bits attribute was missing.")
  1470. }
  1471. do {
  1472. let status = Status(rawValue: errSecInvalidAttributeStartDate)
  1473. XCTAssertEqual(status, .InvalidAttributeStartDate)
  1474. XCTAssertEqual(status?.description, "A start date attribute was not valid.")
  1475. }
  1476. do {
  1477. let status = Status(rawValue: errSecMissingAttributeStartDate)
  1478. XCTAssertEqual(status, .MissingAttributeStartDate)
  1479. XCTAssertEqual(status?.description, "A start date attribute was missing.")
  1480. }
  1481. do {
  1482. let status = Status(rawValue: errSecInvalidAttributeEndDate)
  1483. XCTAssertEqual(status, .InvalidAttributeEndDate)
  1484. XCTAssertEqual(status?.description, "An end date attribute was not valid.")
  1485. }
  1486. do {
  1487. let status = Status(rawValue: errSecMissingAttributeEndDate)
  1488. XCTAssertEqual(status, .MissingAttributeEndDate)
  1489. XCTAssertEqual(status?.description, "An end date attribute was missing.")
  1490. }
  1491. do {
  1492. let status = Status(rawValue: errSecInvalidAttributeVersion)
  1493. XCTAssertEqual(status, .InvalidAttributeVersion)
  1494. XCTAssertEqual(status?.description, "A version attribute was not valid.")
  1495. }
  1496. do {
  1497. let status = Status(rawValue: errSecMissingAttributeVersion)
  1498. XCTAssertEqual(status, .MissingAttributeVersion)
  1499. XCTAssertEqual(status?.description, "A version attribute was missing.")
  1500. }
  1501. do {
  1502. let status = Status(rawValue: errSecInvalidAttributePrime)
  1503. XCTAssertEqual(status, .InvalidAttributePrime)
  1504. XCTAssertEqual(status?.description, "A prime attribute was not valid.")
  1505. }
  1506. do {
  1507. let status = Status(rawValue: errSecMissingAttributePrime)
  1508. XCTAssertEqual(status, .MissingAttributePrime)
  1509. XCTAssertEqual(status?.description, "A prime attribute was missing.")
  1510. }
  1511. do {
  1512. let status = Status(rawValue: errSecInvalidAttributeBase)
  1513. XCTAssertEqual(status, .InvalidAttributeBase)
  1514. XCTAssertEqual(status?.description, "A base attribute was not valid.")
  1515. }
  1516. do {
  1517. let status = Status(rawValue: errSecMissingAttributeBase)
  1518. XCTAssertEqual(status, .MissingAttributeBase)
  1519. XCTAssertEqual(status?.description, "A base attribute was missing.")
  1520. }
  1521. do {
  1522. let status = Status(rawValue: errSecInvalidAttributeSubprime)
  1523. XCTAssertEqual(status, .InvalidAttributeSubprime)
  1524. XCTAssertEqual(status?.description, "A subprime attribute was not valid.")
  1525. }
  1526. do {
  1527. let status = Status(rawValue: errSecMissingAttributeSubprime)
  1528. XCTAssertEqual(status, .MissingAttributeSubprime)
  1529. XCTAssertEqual(status?.description, "A subprime attribute was missing.")
  1530. }
  1531. do {
  1532. let status = Status(rawValue: errSecInvalidAttributeIterationCount)
  1533. XCTAssertEqual(status, .InvalidAttributeIterationCount)
  1534. XCTAssertEqual(status?.description, "An iteration count attribute was not valid.")
  1535. }
  1536. do {
  1537. let status = Status(rawValue: errSecMissingAttributeIterationCount)
  1538. XCTAssertEqual(status, .MissingAttributeIterationCount)
  1539. XCTAssertEqual(status?.description, "An iteration count attribute was missing.")
  1540. }
  1541. do {
  1542. let status = Status(rawValue: errSecInvalidAttributeDLDBHandle)
  1543. XCTAssertEqual(status, .InvalidAttributeDLDBHandle)
  1544. XCTAssertEqual(status?.description, "A database handle attribute was not valid.")
  1545. }
  1546. do {
  1547. let status = Status(rawValue: errSecMissingAttributeDLDBHandle)
  1548. XCTAssertEqual(status, .MissingAttributeDLDBHandle)
  1549. XCTAssertEqual(status?.description, "A database handle attribute was missing.")
  1550. }
  1551. do {
  1552. let status = Status(rawValue: errSecInvalidAttributeAccessCredentials)
  1553. XCTAssertEqual(status, .InvalidAttributeAccessCredentials)
  1554. XCTAssertEqual(status?.description, "An access credentials attribute was not valid.")
  1555. }
  1556. do {
  1557. let status = Status(rawValue: errSecMissingAttributeAccessCredentials)
  1558. XCTAssertEqual(status, .MissingAttributeAccessCredentials)
  1559. XCTAssertEqual(status?.description, "An access credentials attribute was missing.")
  1560. }
  1561. do {
  1562. let status = Status(rawValue: errSecInvalidAttributePublicKeyFormat)
  1563. XCTAssertEqual(status, .InvalidAttributePublicKeyFormat)
  1564. XCTAssertEqual(status?.description, "A public key format attribute was not valid.")
  1565. }
  1566. do {
  1567. let status = Status(rawValue: errSecMissingAttributePublicKeyFormat)
  1568. XCTAssertEqual(status, .MissingAttributePublicKeyFormat)
  1569. XCTAssertEqual(status?.description, "A public key format attribute was missing.")
  1570. }
  1571. do {
  1572. let status = Status(rawValue: errSecInvalidAttributePrivateKeyFormat)
  1573. XCTAssertEqual(status, .InvalidAttributePrivateKeyFormat)
  1574. XCTAssertEqual(status?.description, "A private key format attribute was not valid.")
  1575. }
  1576. do {
  1577. let status = Status(rawValue: errSecMissingAttributePrivateKeyFormat)
  1578. XCTAssertEqual(status, .MissingAttributePrivateKeyFormat)
  1579. XCTAssertEqual(status?.description, "A private key format attribute was missing.")
  1580. }
  1581. do {
  1582. let status = Status(rawValue: errSecInvalidAttributeSymmetricKeyFormat)
  1583. XCTAssertEqual(status, .InvalidAttributeSymmetricKeyFormat)
  1584. XCTAssertEqual(status?.description, "A symmetric key format attribute was not valid.")
  1585. }
  1586. do {
  1587. let status = Status(rawValue: errSecMissingAttributeSymmetricKeyFormat)
  1588. XCTAssertEqual(status, .MissingAttributeSymmetricKeyFormat)
  1589. XCTAssertEqual(status?.description, "A symmetric key format attribute was missing.")
  1590. }
  1591. do {
  1592. let status = Status(rawValue: errSecInvalidAttributeWrappedKeyFormat)
  1593. XCTAssertEqual(status, .InvalidAttributeWrappedKeyFormat)
  1594. XCTAssertEqual(status?.description, "A wrapped key format attribute was not valid.")
  1595. }
  1596. do {
  1597. let status = Status(rawValue: errSecMissingAttributeWrappedKeyFormat)
  1598. XCTAssertEqual(status, .MissingAttributeWrappedKeyFormat)
  1599. XCTAssertEqual(status?.description, "A wrapped key format attribute was missing.")
  1600. }
  1601. do {
  1602. let status = Status(rawValue: errSecStagedOperationInProgress)
  1603. XCTAssertEqual(status, .StagedOperationInProgress)
  1604. XCTAssertEqual(status?.description, "A staged operation is in progress.")
  1605. }
  1606. do {
  1607. let status = Status(rawValue: errSecStagedOperationNotStarted)
  1608. XCTAssertEqual(status, .StagedOperationNotStarted)
  1609. XCTAssertEqual(status?.description, "A staged operation was not started.")
  1610. }
  1611. do {
  1612. let status = Status(rawValue: errSecVerifyFailed)
  1613. XCTAssertEqual(status, .VerifyFailed)
  1614. XCTAssertEqual(status?.description, "A cryptographic verification failure has occurred.")
  1615. }
  1616. do {
  1617. let status = Status(rawValue: errSecQuerySizeUnknown)
  1618. XCTAssertEqual(status, .QuerySizeUnknown)
  1619. XCTAssertEqual(status?.description, "The query size is unknown.")
  1620. }
  1621. do {
  1622. let status = Status(rawValue: errSecBlockSizeMismatch)
  1623. XCTAssertEqual(status, .BlockSizeMismatch)
  1624. XCTAssertEqual(status?.description, "A block size mismatch occurred.")
  1625. }
  1626. do {
  1627. let status = Status(rawValue: errSecPublicKeyInconsistent)
  1628. XCTAssertEqual(status, .PublicKeyInconsistent)
  1629. XCTAssertEqual(status?.description, "The public key was inconsistent.")
  1630. }
  1631. do {
  1632. let status = Status(rawValue: errSecDeviceVerifyFailed)
  1633. XCTAssertEqual(status, .DeviceVerifyFailed)
  1634. XCTAssertEqual(status?.description, "A device verification failure has occurred.")
  1635. }
  1636. do {
  1637. let status = Status(rawValue: errSecInvalidLoginName)
  1638. XCTAssertEqual(status, .InvalidLoginName)
  1639. XCTAssertEqual(status?.description, "An invalid login name was detected.")
  1640. }
  1641. do {
  1642. let status = Status(rawValue: errSecAlreadyLoggedIn)
  1643. XCTAssertEqual(status, .AlreadyLoggedIn)
  1644. XCTAssertEqual(status?.description, "The user is already logged in.")
  1645. }
  1646. do {
  1647. let status = Status(rawValue: errSecInvalidDigestAlgorithm)
  1648. XCTAssertEqual(status, .InvalidDigestAlgorithm)
  1649. XCTAssertEqual(status?.description, "An invalid digest algorithm was detected.")
  1650. }
  1651. do {
  1652. let status = Status(rawValue: errSecInvalidCRLGroup)
  1653. XCTAssertEqual(status, .InvalidCRLGroup)
  1654. XCTAssertEqual(status?.description, "An invalid CRL group was detected.")
  1655. }
  1656. do {
  1657. let status = Status(rawValue: errSecCertificateCannotOperate)
  1658. XCTAssertEqual(status, .CertificateCannotOperate)
  1659. XCTAssertEqual(status?.description, "The certificate cannot operate.")
  1660. }
  1661. do {
  1662. let status = Status(rawValue: errSecCertificateExpired)
  1663. XCTAssertEqual(status, .CertificateExpired)
  1664. XCTAssertEqual(status?.description, "An expired certificate was detected.")
  1665. }
  1666. do {
  1667. let status = Status(rawValue: errSecCertificateNotValidYet)
  1668. XCTAssertEqual(status, .CertificateNotValidYet)
  1669. XCTAssertEqual(status?.description, "The certificate is not yet valid.")
  1670. }
  1671. do {
  1672. let status = Status(rawValue: errSecCertificateRevoked)
  1673. XCTAssertEqual(status, .CertificateRevoked)
  1674. XCTAssertEqual(status?.description, "The certificate was revoked.")
  1675. }
  1676. do {
  1677. let status = Status(rawValue: errSecCertificateSuspended)
  1678. XCTAssertEqual(status, .CertificateSuspended)
  1679. XCTAssertEqual(status?.description, "The certificate was suspended.")
  1680. }
  1681. do {
  1682. let status = Status(rawValue: errSecInsufficientCredentials)
  1683. XCTAssertEqual(status, .InsufficientCredentials)
  1684. XCTAssertEqual(status?.description, "Insufficient credentials were detected.")
  1685. }
  1686. do {
  1687. let status = Status(rawValue: errSecInvalidAction)
  1688. XCTAssertEqual(status, .InvalidAction)
  1689. XCTAssertEqual(status?.description, "The action was not valid.")
  1690. }
  1691. do {
  1692. let status = Status(rawValue: errSecInvalidAuthority)
  1693. XCTAssertEqual(status, .InvalidAuthority)
  1694. XCTAssertEqual(status?.description, "The authority was not valid.")
  1695. }
  1696. do {
  1697. let status = Status(rawValue: errSecVerifyActionFailed)
  1698. XCTAssertEqual(status, .VerifyActionFailed)
  1699. XCTAssertEqual(status?.description, "A verify action has failed.")
  1700. }
  1701. do {
  1702. let status = Status(rawValue: errSecInvalidCertAuthority)
  1703. XCTAssertEqual(status, .InvalidCertAuthority)
  1704. XCTAssertEqual(status?.description, "The certificate authority was not valid.")
  1705. }
  1706. do {
  1707. let status = Status(rawValue: errSecInvaldCRLAuthority)
  1708. XCTAssertEqual(status, .InvaldCRLAuthority)
  1709. XCTAssertEqual(status?.description, "The CRL authority was not valid.")
  1710. }
  1711. do {
  1712. let status = Status(rawValue: errSecInvalidCRLEncoding)
  1713. XCTAssertEqual(status, .InvalidCRLEncoding)
  1714. XCTAssertEqual(status?.description, "The CRL encoding was not valid.")
  1715. }
  1716. do {
  1717. let status = Status(rawValue: errSecInvalidCRLType)
  1718. XCTAssertEqual(status, .InvalidCRLType)
  1719. XCTAssertEqual(status?.description, "The CRL type was not valid.")
  1720. }
  1721. do {
  1722. let status = Status(rawValue: errSecInvalidCRL)
  1723. XCTAssertEqual(status, .InvalidCRL)
  1724. XCTAssertEqual(status?.description, "The CRL was not valid.")
  1725. }
  1726. do {
  1727. let status = Status(rawValue: errSecInvalidFormType)
  1728. XCTAssertEqual(status, .InvalidFormType)
  1729. XCTAssertEqual(status?.description, "The form type was not valid.")
  1730. }
  1731. do {
  1732. let status = Status(rawValue: errSecInvalidID)
  1733. XCTAssertEqual(status, .InvalidID)
  1734. XCTAssertEqual(status?.description, "The ID was not valid.")
  1735. }
  1736. do {
  1737. let status = Status(rawValue: errSecInvalidIdentifier)
  1738. XCTAssertEqual(status, .InvalidIdentifier)
  1739. XCTAssertEqual(status?.description, "The identifier was not valid.")
  1740. }
  1741. do {
  1742. let status = Status(rawValue: errSecInvalidIndex)
  1743. XCTAssertEqual(status, .InvalidIndex)
  1744. XCTAssertEqual(status?.description, "The index was not valid.")
  1745. }
  1746. do {
  1747. let status = Status(rawValue: errSecInvalidPolicyIdentifiers)
  1748. XCTAssertEqual(status, .InvalidPolicyIdentifiers)
  1749. XCTAssertEqual(status?.description, "The policy identifiers are not valid.")
  1750. }
  1751. do {
  1752. let status = Status(rawValue: errSecInvalidTimeString)
  1753. XCTAssertEqual(status, .InvalidTimeString)
  1754. XCTAssertEqual(status?.description, "The time specified was not valid.")
  1755. }
  1756. do {
  1757. let status = Status(rawValue: errSecInvalidReason)
  1758. XCTAssertEqual(status, .InvalidReason)
  1759. XCTAssertEqual(status?.description, "The trust policy reason was not valid.")
  1760. }
  1761. do {
  1762. let status = Status(rawValue: errSecInvalidRequestInputs)
  1763. XCTAssertEqual(status, .InvalidRequestInputs)
  1764. XCTAssertEqual(status?.description, "The request inputs are not valid.")
  1765. }
  1766. do {
  1767. let status = Status(rawValue: errSecInvalidResponseVector)
  1768. XCTAssertEqual(status, .InvalidResponseVector)
  1769. XCTAssertEqual(status?.description, "The response vector was not valid.")
  1770. }
  1771. do {
  1772. let status = Status(rawValue: errSecInvalidStopOnPolicy)
  1773. XCTAssertEqual(status, .InvalidStopOnPolicy)
  1774. XCTAssertEqual(status?.description, "The stop-on policy was not valid.")
  1775. }
  1776. do {
  1777. let status = Status(rawValue: errSecInvalidTuple)
  1778. XCTAssertEqual(status, .InvalidTuple)
  1779. XCTAssertEqual(status?.description, "The tuple was not valid.")
  1780. }
  1781. do {
  1782. let status = Status(rawValue: errSecMultipleValuesUnsupported)
  1783. XCTAssertEqual(status, .MultipleValuesUnsupported)
  1784. XCTAssertEqual(status?.description, "Multiple values are not supported.")
  1785. }
  1786. do {
  1787. let status = Status(rawValue: errSecNotTrusted)
  1788. XCTAssertEqual(status, .NotTrusted)
  1789. XCTAssertEqual(status?.description, "The trust policy was not trusted.")
  1790. }
  1791. do {
  1792. let status = Status(rawValue: errSecNoDefaultAuthority)
  1793. XCTAssertEqual(status, .NoDefaultAuthority)
  1794. XCTAssertEqual(status?.description, "No default authority was detected.")
  1795. }
  1796. do {
  1797. let status = Status(rawValue: errSecRejectedForm)
  1798. XCTAssertEqual(status, .RejectedForm)
  1799. XCTAssertEqual(status?.description, "The trust policy had a rejected form.")
  1800. }
  1801. do {
  1802. let status = Status(rawValue: errSecRequestLost)
  1803. XCTAssertEqual(status, .RequestLost)
  1804. XCTAssertEqual(status?.description, "The request was lost.")
  1805. }
  1806. do {
  1807. let status = Status(rawValue: errSecRequestRejected)
  1808. XCTAssertEqual(status, .RequestRejected)
  1809. XCTAssertEqual(status?.description, "The request was rejected.")
  1810. }
  1811. do {
  1812. let status = Status(rawValue: errSecUnsupportedAddressType)
  1813. XCTAssertEqual(status, .UnsupportedAddressType)
  1814. XCTAssertEqual(status?.description, "The address type is not supported.")
  1815. }
  1816. do {
  1817. let status = Status(rawValue: errSecUnsupportedService)
  1818. XCTAssertEqual(status, .UnsupportedService)
  1819. XCTAssertEqual(status?.description, "The service is not supported.")
  1820. }
  1821. do {
  1822. let status = Status(rawValue: errSecInvalidTupleGroup)
  1823. XCTAssertEqual(status, .InvalidTupleGroup)
  1824. XCTAssertEqual(status?.description, "The tuple group was not valid.")
  1825. }
  1826. do {
  1827. let status = Status(rawValue: errSecInvalidBaseACLs)
  1828. XCTAssertEqual(status, .InvalidBaseACLs)
  1829. XCTAssertEqual(status?.description, "The base ACLs are not valid.")
  1830. }
  1831. do {
  1832. let status = Status(rawValue: errSecInvalidTupleCredendtials)
  1833. XCTAssertEqual(status, .InvalidTupleCredendtials)
  1834. XCTAssertEqual(status?.description, "The tuple credentials are not valid.")
  1835. }
  1836. do {
  1837. let status = Status(rawValue: errSecInvalidEncoding)
  1838. XCTAssertEqual(status, .InvalidEncoding)
  1839. XCTAssertEqual(status?.description, "The encoding was not valid.")
  1840. }
  1841. do {
  1842. let status = Status(rawValue: errSecInvalidValidityPeriod)
  1843. XCTAssertEqual(status, .InvalidValidityPeriod)
  1844. XCTAssertEqual(status?.description, "The validity period was not valid.")
  1845. }
  1846. do {
  1847. let status = Status(rawValue: errSecInvalidRequestor)
  1848. XCTAssertEqual(status, .InvalidRequestor)
  1849. XCTAssertEqual(status?.description, "The requestor was not valid.")
  1850. }
  1851. do {
  1852. let status = Status(rawValue: errSecRequestDescriptor)
  1853. XCTAssertEqual(status, .RequestDescriptor)
  1854. XCTAssertEqual(status?.description, "The request descriptor was not valid.")
  1855. }
  1856. do {
  1857. let status = Status(rawValue: errSecInvalidBundleInfo)
  1858. XCTAssertEqual(status, .InvalidBundleInfo)
  1859. XCTAssertEqual(status?.description, "The bundle information was not valid.")
  1860. }
  1861. do {
  1862. let status = Status(rawValue: errSecInvalidCRLIndex)
  1863. XCTAssertEqual(status, .InvalidCRLIndex)
  1864. XCTAssertEqual(status?.description, "The CRL index was not valid.")
  1865. }
  1866. do {
  1867. let status = Status(rawValue: errSecNoFieldValues)
  1868. XCTAssertEqual(status, .NoFieldValues)
  1869. XCTAssertEqual(status?.description, "No field values were detected.")
  1870. }
  1871. do {
  1872. let status = Status(rawValue: errSecUnsupportedFieldFormat)
  1873. XCTAssertEqual(status, .UnsupportedFieldFormat)
  1874. XCTAssertEqual(status?.description, "The field format is not supported.")
  1875. }
  1876. do {
  1877. let status = Status(rawValue: errSecUnsupportedIndexInfo)
  1878. XCTAssertEqual(status, .UnsupportedIndexInfo)
  1879. XCTAssertEqual(status?.description, "The index information is not supported.")
  1880. }
  1881. do {
  1882. let status = Status(rawValue: errSecUnsupportedLocality)
  1883. XCTAssertEqual(status, .UnsupportedLocality)
  1884. XCTAssertEqual(status?.description, "The locality is not supported.")
  1885. }
  1886. do {
  1887. let status = Status(rawValue: errSecUnsupportedNumAttributes)
  1888. XCTAssertEqual(status, .UnsupportedNumAttributes)
  1889. XCTAssertEqual(status?.description, "The number of attributes is not supported.")
  1890. }
  1891. do {
  1892. let status = Status(rawValue: errSecUnsupportedNumIndexes)
  1893. XCTAssertEqual(status, .UnsupportedNumIndexes)
  1894. XCTAssertEqual(status?.description, "The number of indexes is not supported.")
  1895. }
  1896. do {
  1897. let status = Status(rawValue: errSecUnsupportedNumRecordTypes)
  1898. XCTAssertEqual(status, .UnsupportedNumRecordTypes)
  1899. XCTAssertEqual(status?.description, "The number of record types is not supported.")
  1900. }
  1901. do {
  1902. let status = Status(rawValue: errSecFieldSpecifiedMultiple)
  1903. XCTAssertEqual(status, .FieldSpecifiedMultiple)
  1904. XCTAssertEqual(status?.description, "Too many fields were specified.")
  1905. }
  1906. do {
  1907. let status = Status(rawValue: errSecIncompatibleFieldFormat)
  1908. XCTAssertEqual(status, .IncompatibleFieldFormat)
  1909. XCTAssertEqual(status?.description, "The field format was incompatible.")
  1910. }
  1911. do {
  1912. let status = Status(rawValue: errSecInvalidParsingModule)
  1913. XCTAssertEqual(status, .InvalidParsingModule)
  1914. XCTAssertEqual(status?.description, "The parsing module was not valid.")
  1915. }
  1916. do {
  1917. let status = Status(rawValue: errSecDatabaseLocked)
  1918. XCTAssertEqual(status, .DatabaseLocked)
  1919. XCTAssertEqual(status?.description, "The database is locked.")
  1920. }
  1921. do {
  1922. let status = Status(rawValue: errSecDatastoreIsOpen)
  1923. XCTAssertEqual(status, .DatastoreIsOpen)
  1924. XCTAssertEqual(status?.description, "The data store is open.")
  1925. }
  1926. do {
  1927. let status = Status(rawValue: errSecMissingValue)
  1928. XCTAssertEqual(status, .MissingValue)
  1929. XCTAssertEqual(status?.description, "A missing value was detected.")
  1930. }
  1931. do {
  1932. let status = Status(rawValue: errSecUnsupportedQueryLimits)
  1933. XCTAssertEqual(status, .UnsupportedQueryLimits)
  1934. XCTAssertEqual(status?.description, "The query limits are not supported.")
  1935. }
  1936. do {
  1937. let status = Status(rawValue: errSecUnsupportedNumSelectionPreds)
  1938. XCTAssertEqual(status, .UnsupportedNumSelectionPreds)
  1939. XCTAssertEqual(status?.description, "The number of selection predicates is not supported.")
  1940. }
  1941. do {
  1942. let status = Status(rawValue: errSecUnsupportedOperator)
  1943. XCTAssertEqual(status, .UnsupportedOperator)
  1944. XCTAssertEqual(status?.description, "The operator is not supported.")
  1945. }
  1946. do {
  1947. let status = Status(rawValue: errSecInvalidDBLocation)
  1948. XCTAssertEqual(status, .InvalidDBLocation)
  1949. XCTAssertEqual(status?.description, "The database location is not valid.")
  1950. }
  1951. do {
  1952. let status = Status(rawValue: errSecInvalidAccessRequest)
  1953. XCTAssertEqual(status, .InvalidAccessRequest)
  1954. XCTAssertEqual(status?.description, "The access request is not valid.")
  1955. }
  1956. do {
  1957. let status = Status(rawValue: errSecInvalidIndexInfo)
  1958. XCTAssertEqual(status, .InvalidIndexInfo)
  1959. XCTAssertEqual(status?.description, "The index information is not valid.")
  1960. }
  1961. do {
  1962. let status = Status(rawValue: errSecInvalidNewOwner)
  1963. XCTAssertEqual(status, .InvalidNewOwner)
  1964. XCTAssertEqual(status?.description, "The new owner is not valid.")
  1965. }
  1966. do {
  1967. let status = Status(rawValue: errSecInvalidModifyMode)
  1968. XCTAssertEqual(status, .InvalidModifyMode)
  1969. XCTAssertEqual(status?.description, "The modify mode is not valid.")
  1970. }
  1971. do {
  1972. let status = Status(rawValue: errSecMissingRequiredExtension)
  1973. XCTAssertEqual(status, .MissingRequiredExtension)
  1974. XCTAssertEqual(status?.description, "A required certificate extension is missing.")
  1975. }
  1976. do {
  1977. let status = Status(rawValue: errSecExtendedKeyUsageNotCritical)
  1978. XCTAssertEqual(status, .ExtendedKeyUsageNotCritical)
  1979. XCTAssertEqual(status?.description, "The extended key usage extension was not marked critical.")
  1980. }
  1981. do {
  1982. let status = Status(rawValue: errSecTimestampMissing)
  1983. XCTAssertEqual(status, .TimestampMissing)
  1984. XCTAssertEqual(status?.description, "A timestamp was expected but was not found.")
  1985. }
  1986. do {
  1987. let status = Status(rawValue: errSecTimestampInvalid)
  1988. XCTAssertEqual(status, .TimestampInvalid)
  1989. XCTAssertEqual(status?.description, "The timestamp was not valid.")
  1990. }
  1991. do {
  1992. let status = Status(rawValue: errSecTimestampNotTrusted)
  1993. XCTAssertEqual(status, .TimestampNotTrusted)
  1994. XCTAssertEqual(status?.description, "The timestamp was not trusted.")
  1995. }
  1996. do {
  1997. let status = Status(rawValue: errSecTimestampServiceNotAvailable)
  1998. XCTAssertEqual(status, .TimestampServiceNotAvailable)
  1999. XCTAssertEqual(status?.description, "The timestamp service is not available.")
  2000. }
  2001. do {
  2002. let status = Status(rawValue: errSecTimestampBadAlg)
  2003. XCTAssertEqual(status, .TimestampBadAlg)
  2004. XCTAssertEqual(status?.description, "An unrecognized or unsupported Algorithm Identifier in timestamp.")
  2005. }
  2006. do {
  2007. let status = Status(rawValue: errSecTimestampBadRequest)
  2008. XCTAssertEqual(status, .TimestampBadRequest)
  2009. XCTAssertEqual(status?.description, "The timestamp transaction is not permitted or supported.")
  2010. }
  2011. do {
  2012. let status = Status(rawValue: errSecTimestampBadDataFormat)
  2013. XCTAssertEqual(status, .TimestampBadDataFormat)
  2014. XCTAssertEqual(status?.description, "The timestamp data submitted has the wrong format.")
  2015. }
  2016. do {
  2017. let status = Status(rawValue: errSecTimestampTimeNotAvailable)
  2018. XCTAssertEqual(status, .TimestampTimeNotAvailable)
  2019. XCTAssertEqual(status?.description, "The time source for the Timestamp Authority is not available.")
  2020. }
  2021. do {
  2022. let status = Status(rawValue: errSecTimestampUnacceptedPolicy)
  2023. XCTAssertEqual(status, .TimestampUnacceptedPolicy)
  2024. XCTAssertEqual(status?.description, "The requested policy is not supported by the Timestamp Authority.")
  2025. }
  2026. do {
  2027. let status = Status(rawValue: errSecTimestampUnacceptedExtension)
  2028. XCTAssertEqual(status, .TimestampUnacceptedExtension)
  2029. XCTAssertEqual(status?.description, "The requested extension is not supported by the Timestamp Authority.")
  2030. }
  2031. do {
  2032. let status = Status(rawValue: errSecTimestampAddInfoNotAvailable)
  2033. XCTAssertEqual(status, .TimestampAddInfoNotAvailable)
  2034. XCTAssertEqual(status?.description, "The additional information requested is not available.")
  2035. }
  2036. do {
  2037. let status = Status(rawValue: errSecTimestampSystemFailure)
  2038. XCTAssertEqual(status, .TimestampSystemFailure)
  2039. XCTAssertEqual(status?.description, "The timestamp request cannot be handled due to system failure.")
  2040. }
  2041. do {
  2042. let status = Status(rawValue: errSecSigningTimeMissing)
  2043. XCTAssertEqual(status, .SigningTimeMissing)
  2044. XCTAssertEqual(status?.description, "A signing time was expected but was not found.")
  2045. }
  2046. do {
  2047. let status = Status(rawValue: errSecTimestampRejection)
  2048. XCTAssertEqual(status, .TimestampRejection)
  2049. XCTAssertEqual(status?.description, "A timestamp transaction was rejected.")
  2050. }
  2051. do {
  2052. let status = Status(rawValue: errSecTimestampWaiting)
  2053. XCTAssertEqual(status, .TimestampWaiting)
  2054. XCTAssertEqual(status?.description, "A timestamp transaction is waiting.")
  2055. }
  2056. do {
  2057. let status = Status(rawValue: errSecTimestampRevocationWarning)
  2058. XCTAssertEqual(status, .TimestampRevocationWarning)
  2059. XCTAssertEqual(status?.description, "A timestamp authority revocation warning was issued.")
  2060. }
  2061. do {
  2062. let status = Status(rawValue: errSecTimestampRevocationNotification)
  2063. XCTAssertEqual(status, .TimestampRevocationNotification)
  2064. XCTAssertEqual(status?.description, "A timestamp authority revocation notification was issued.")
  2065. }
  2066. #endif
  2067. }
  2068. }