ErrorTypeTests.swift 99 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102
  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. // Permission is hereby granted, free of charge, to any person obtaining a copy
  9. // of this software and associated documentation files (the "Software"), to deal
  10. // in the Software without restriction, including without limitation the rights
  11. // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  12. // copies of the Software, and to permit persons to whom the Software is
  13. // furnished to do so, subject to the following conditions:
  14. //
  15. // The above copyright notice and this permission notice shall be included in
  16. // all copies or substantial portions of the Software.
  17. //
  18. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  19. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  20. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  21. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  22. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  23. // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  24. // THE SOFTWARE.
  25. import XCTest
  26. import KeychainAccess
  27. class ErrorTypeTests: XCTestCase {
  28. override func setUp() {
  29. super.setUp()
  30. }
  31. override func tearDown() {
  32. super.tearDown()
  33. }
  34. func testErrorType() {
  35. do {
  36. let status = Status(rawValue: errSecSuccess)
  37. XCTAssertEqual(status, .success)
  38. XCTAssertEqual(status?.description, "No error.")
  39. }
  40. do {
  41. let status = Status(rawValue: errSecUnimplemented)
  42. XCTAssertEqual(status, .unimplemented)
  43. XCTAssertEqual(status?.description, "Function or operation not implemented.")
  44. }
  45. #if os(OSX)
  46. do {
  47. let status = Status(rawValue: errSecDskFull)
  48. XCTAssertEqual(status, .diskFull)
  49. XCTAssertEqual(status?.description, "The disk is full.")
  50. }
  51. #endif
  52. do {
  53. let status = Status(rawValue: errSecIO)
  54. XCTAssertEqual(status, .io)
  55. XCTAssertEqual(status?.description, "I/O error (bummers)")
  56. }
  57. #if os(iOS)
  58. do {
  59. let status = Status(rawValue: errSecOpWr)
  60. XCTAssertEqual(status, .opWr)
  61. XCTAssertEqual(status?.description, "file already open with with write permission")
  62. }
  63. #endif
  64. do {
  65. let status = Status(rawValue: errSecParam)
  66. XCTAssertEqual(status, .param)
  67. XCTAssertEqual(status?.description, "One or more parameters passed to a function were not valid.")
  68. }
  69. #if os(OSX)
  70. do {
  71. let status = Status(rawValue: errSecWrPerm)
  72. XCTAssertEqual(status, .wrPerm)
  73. XCTAssertEqual(status?.description, "write permissions error")
  74. }
  75. #endif
  76. do {
  77. let status = Status(rawValue: errSecAllocate)
  78. XCTAssertEqual(status, .allocate)
  79. XCTAssertEqual(status?.description, "Failed to allocate memory.")
  80. }
  81. do {
  82. let status = Status(rawValue: errSecUserCanceled)
  83. XCTAssertEqual(status, .userCanceled)
  84. XCTAssertEqual(status?.description, "User canceled the operation.")
  85. }
  86. do {
  87. let status = Status(rawValue: errSecBadReq)
  88. XCTAssertEqual(status, .badReq)
  89. XCTAssertEqual(status?.description, "Bad parameter or invalid state for operation.")
  90. }
  91. do {
  92. let status = Status(rawValue: errSecInternalComponent)
  93. XCTAssertEqual(status, .internalComponent)
  94. XCTAssertEqual(status?.description, "")
  95. }
  96. do {
  97. let status = Status(rawValue: errSecNotAvailable)
  98. XCTAssertEqual(status, .notAvailable)
  99. XCTAssertEqual(status?.description, "No keychain is available. You may need to restart your computer.")
  100. }
  101. #if os(OSX)
  102. do {
  103. let status = Status(rawValue: errSecReadOnly)
  104. XCTAssertEqual(status, .readOnly)
  105. XCTAssertEqual(status?.description, "This keychain cannot be modified.")
  106. }
  107. #endif
  108. do {
  109. let status = Status(rawValue: errSecAuthFailed)
  110. XCTAssertEqual(status, .authFailed)
  111. XCTAssertEqual(status?.description, "The user name or passphrase you entered is not correct.")
  112. }
  113. #if os(OSX)
  114. do {
  115. let status = Status(rawValue: errSecNoSuchKeychain)
  116. XCTAssertEqual(status, .noSuchKeychain)
  117. XCTAssertEqual(status?.description, "The specified keychain could not be found.")
  118. }
  119. do {
  120. let status = Status(rawValue: errSecInvalidKeychain)
  121. XCTAssertEqual(status, .invalidKeychain)
  122. XCTAssertEqual(status?.description, "The specified keychain is not a valid keychain file.")
  123. }
  124. do {
  125. let status = Status(rawValue: errSecDuplicateKeychain)
  126. XCTAssertEqual(status, .duplicateKeychain)
  127. XCTAssertEqual(status?.description, "A keychain with the same name already exists.")
  128. }
  129. do {
  130. let status = Status(rawValue: errSecDuplicateCallback)
  131. XCTAssertEqual(status, .duplicateCallback)
  132. XCTAssertEqual(status?.description, "The specified callback function is already installed.")
  133. }
  134. do {
  135. let status = Status(rawValue: errSecInvalidCallback)
  136. XCTAssertEqual(status, .invalidCallback)
  137. XCTAssertEqual(status?.description, "The specified callback function is not valid.")
  138. }
  139. #endif
  140. do {
  141. let status = Status(rawValue: errSecDuplicateItem)
  142. XCTAssertEqual(status, .duplicateItem)
  143. XCTAssertEqual(status?.description, "The specified item already exists in the keychain.")
  144. }
  145. do {
  146. let status = Status(rawValue: errSecItemNotFound)
  147. XCTAssertEqual(status, .itemNotFound)
  148. XCTAssertEqual(status?.description, "The specified item could not be found in the keychain.")
  149. }
  150. #if os(OSX)
  151. do {
  152. let status = Status(rawValue: errSecBufferTooSmall)
  153. XCTAssertEqual(status, .bufferTooSmall)
  154. XCTAssertEqual(status?.description, "There is not enough memory available to use the specified item.")
  155. }
  156. do {
  157. let status = Status(rawValue: errSecDataTooLarge)
  158. XCTAssertEqual(status, .dataTooLarge)
  159. XCTAssertEqual(status?.description, "This item contains information which is too large or in a format that cannot be displayed.")
  160. }
  161. do {
  162. let status = Status(rawValue: errSecNoSuchAttr)
  163. XCTAssertEqual(status, .noSuchAttr)
  164. XCTAssertEqual(status?.description, "The specified attribute does not exist.")
  165. }
  166. do {
  167. let status = Status(rawValue: errSecInvalidItemRef)
  168. XCTAssertEqual(status, .invalidItemRef)
  169. XCTAssertEqual(status?.description, "The specified item is no longer valid. It may have been deleted from the keychain.")
  170. }
  171. do {
  172. let status = Status(rawValue: errSecInvalidSearchRef)
  173. XCTAssertEqual(status, .invalidSearchRef)
  174. XCTAssertEqual(status?.description, "Unable to search the current keychain.")
  175. }
  176. do {
  177. let status = Status(rawValue: errSecNoSuchClass)
  178. XCTAssertEqual(status, .noSuchClass)
  179. XCTAssertEqual(status?.description, "The specified item does not appear to be a valid keychain item.")
  180. }
  181. do {
  182. let status = Status(rawValue: errSecNoDefaultKeychain)
  183. XCTAssertEqual(status, .noDefaultKeychain)
  184. XCTAssertEqual(status?.description, "A default keychain could not be found.")
  185. }
  186. #endif
  187. do {
  188. let status = Status(rawValue: errSecInteractionNotAllowed)
  189. XCTAssertEqual(status, .interactionNotAllowed)
  190. XCTAssertEqual(status?.description, "User interaction is not allowed.")
  191. }
  192. #if os(OSX)
  193. do {
  194. let status = Status(rawValue: errSecReadOnlyAttr)
  195. XCTAssertEqual(status, .readOnlyAttr)
  196. XCTAssertEqual(status?.description, "The specified attribute could not be modified.")
  197. }
  198. do {
  199. let status = Status(rawValue: errSecWrongSecVersion)
  200. XCTAssertEqual(status, .wrongSecVersion)
  201. XCTAssertEqual(status?.description, "This keychain was created by a different version of the system software and cannot be opened.")
  202. }
  203. do {
  204. let status = Status(rawValue: errSecKeySizeNotAllowed)
  205. XCTAssertEqual(status, .keySizeNotAllowed)
  206. XCTAssertEqual(status?.description, "This item specifies a key size which is too large.")
  207. }
  208. do {
  209. let status = Status(rawValue: errSecNoStorageModule)
  210. XCTAssertEqual(status, .noStorageModule)
  211. XCTAssertEqual(status?.description, "A required component (data storage module) could not be loaded. You may need to restart your computer.")
  212. }
  213. do {
  214. let status = Status(rawValue: errSecNoCertificateModule)
  215. XCTAssertEqual(status, .noCertificateModule)
  216. XCTAssertEqual(status?.description, "A required component (certificate module) could not be loaded. You may need to restart your computer.")
  217. }
  218. do {
  219. let status = Status(rawValue: errSecNoPolicyModule)
  220. XCTAssertEqual(status, .noPolicyModule)
  221. XCTAssertEqual(status?.description, "A required component (policy module) could not be loaded. You may need to restart your computer.")
  222. }
  223. do {
  224. let status = Status(rawValue: errSecInteractionRequired)
  225. XCTAssertEqual(status, .interactionRequired)
  226. XCTAssertEqual(status?.description, "User interaction is required, but is currently not allowed.")
  227. }
  228. do {
  229. let status = Status(rawValue: errSecDataNotAvailable)
  230. XCTAssertEqual(status, .dataNotAvailable)
  231. XCTAssertEqual(status?.description, "The contents of this item cannot be retrieved.")
  232. }
  233. do {
  234. let status = Status(rawValue: errSecDataNotModifiable)
  235. XCTAssertEqual(status, .dataNotModifiable)
  236. XCTAssertEqual(status?.description, "The contents of this item cannot be modified.")
  237. }
  238. do {
  239. let status = Status(rawValue: errSecCreateChainFailed)
  240. XCTAssertEqual(status, .createChainFailed)
  241. XCTAssertEqual(status?.description, "One or more certificates required to validate this certificate cannot be found.")
  242. }
  243. do {
  244. let status = Status(rawValue: errSecInvalidPrefsDomain)
  245. XCTAssertEqual(status, .invalidPrefsDomain)
  246. XCTAssertEqual(status?.description, "The specified preferences domain is not valid.")
  247. }
  248. do {
  249. let status = Status(rawValue: errSecInDarkWake)
  250. XCTAssertEqual(status, .inDarkWake)
  251. XCTAssertEqual(status?.description, "In dark wake, no UI possible")
  252. }
  253. do {
  254. let status = Status(rawValue: errSecACLNotSimple)
  255. XCTAssertEqual(status, .aclNotSimple)
  256. XCTAssertEqual(status?.description, "The specified access control list is not in standard (simple) form.")
  257. }
  258. do {
  259. let status = Status(rawValue: errSecPolicyNotFound)
  260. XCTAssertEqual(status, .policyNotFound)
  261. XCTAssertEqual(status?.description, "The specified policy cannot be found.")
  262. }
  263. do {
  264. let status = Status(rawValue: errSecInvalidTrustSetting)
  265. XCTAssertEqual(status, .invalidTrustSetting)
  266. XCTAssertEqual(status?.description, "The specified trust setting is invalid.")
  267. }
  268. do {
  269. let status = Status(rawValue: errSecNoAccessForItem)
  270. XCTAssertEqual(status, .noAccessForItem)
  271. XCTAssertEqual(status?.description, "The specified item has no access control.")
  272. }
  273. do {
  274. let status = Status(rawValue: errSecInvalidOwnerEdit)
  275. XCTAssertEqual(status, .invalidOwnerEdit)
  276. XCTAssertEqual(status?.description, "Invalid attempt to change the owner of this item.")
  277. }
  278. do {
  279. let status = Status(rawValue: errSecTrustNotAvailable)
  280. XCTAssertEqual(status, .trustNotAvailable)
  281. XCTAssertEqual(status?.description, "No trust results are available.")
  282. }
  283. do {
  284. let status = Status(rawValue: errSecUnsupportedFormat)
  285. XCTAssertEqual(status, .unsupportedFormat)
  286. XCTAssertEqual(status?.description, "Import/Export format unsupported.")
  287. }
  288. do {
  289. let status = Status(rawValue: errSecUnknownFormat)
  290. XCTAssertEqual(status, .unknownFormat)
  291. XCTAssertEqual(status?.description, "Unknown format in import.")
  292. }
  293. do {
  294. let status = Status(rawValue: errSecKeyIsSensitive)
  295. XCTAssertEqual(status, .keyIsSensitive)
  296. XCTAssertEqual(status?.description, "Key material must be wrapped for export.")
  297. }
  298. do {
  299. let status = Status(rawValue: errSecMultiplePrivKeys)
  300. XCTAssertEqual(status, .multiplePrivKeys)
  301. XCTAssertEqual(status?.description, "An attempt was made to import multiple private keys.")
  302. }
  303. do {
  304. let status = Status(rawValue: errSecPassphraseRequired)
  305. XCTAssertEqual(status, .passphraseRequired)
  306. XCTAssertEqual(status?.description, "Passphrase is required for import/export.")
  307. }
  308. do {
  309. let status = Status(rawValue: errSecInvalidPasswordRef)
  310. XCTAssertEqual(status, .invalidPasswordRef)
  311. XCTAssertEqual(status?.description, "The password reference was invalid.")
  312. }
  313. do {
  314. let status = Status(rawValue: errSecInvalidTrustSettings)
  315. XCTAssertEqual(status, .invalidTrustSettings)
  316. XCTAssertEqual(status?.description, "The Trust Settings Record was corrupted.")
  317. }
  318. do {
  319. let status = Status(rawValue: errSecNoTrustSettings)
  320. XCTAssertEqual(status, .noTrustSettings)
  321. XCTAssertEqual(status?.description, "No Trust Settings were found.")
  322. }
  323. do {
  324. let status = Status(rawValue: errSecPkcs12VerifyFailure)
  325. XCTAssertEqual(status, .pkcs12VerifyFailure)
  326. XCTAssertEqual(status?.description, "MAC verification failed during PKCS12 import (wrong password?)")
  327. }
  328. do {
  329. let errSecInvalidCertificate: OSStatus = -26265
  330. let status = Status(rawValue: errSecInvalidCertificate)
  331. XCTAssertEqual(status, .invalidCertificate)
  332. XCTAssertEqual(status?.description, "This certificate could not be decoded.")
  333. }
  334. do {
  335. let status = Status(rawValue: errSecNotSigner)
  336. XCTAssertEqual(status, .notSigner)
  337. XCTAssertEqual(status?.description, "A certificate was not signed by its proposed parent.")
  338. }
  339. do {
  340. let errSecPolicyDenied: OSStatus = -26270
  341. let status = Status(rawValue: errSecPolicyDenied)
  342. XCTAssertEqual(status, .policyDenied)
  343. XCTAssertEqual(status?.description, "The certificate chain was not trusted due to a policy not accepting it.")
  344. }
  345. do {
  346. let errSecInvalidKey: OSStatus = -26274
  347. let status = Status(rawValue: errSecInvalidKey)
  348. XCTAssertEqual(status, .invalidKey)
  349. XCTAssertEqual(status?.description, "The provided key material was not valid.")
  350. }
  351. #endif
  352. do {
  353. let status = Status(rawValue: errSecDecode)
  354. XCTAssertEqual(status, .decode)
  355. XCTAssertEqual(status?.description, "Unable to decode the provided data.")
  356. }
  357. do {
  358. let errSecInternal: OSStatus = -26276
  359. let status = Status(rawValue: errSecInternal)
  360. XCTAssertEqual(status, .internal)
  361. XCTAssertEqual(status?.description, "An internal error occurred in the Security framework.")
  362. }
  363. #if os(OSX)
  364. do {
  365. let status = Status(rawValue: errSecServiceNotAvailable)
  366. XCTAssertEqual(status, .serviceNotAvailable)
  367. XCTAssertEqual(status?.description, "The required service is not available.")
  368. }
  369. do {
  370. let errSecUnsupportedAlgorithm: OSStatus = -26268
  371. let status = Status(rawValue: errSecUnsupportedAlgorithm)
  372. XCTAssertEqual(status, .unsupportedAlgorithm)
  373. XCTAssertEqual(status?.description, "An unsupported algorithm was encountered.")
  374. }
  375. do {
  376. let errSecUnsupportedOperation: OSStatus = -26271
  377. let status = Status(rawValue: errSecUnsupportedOperation)
  378. XCTAssertEqual(status, .unsupportedOperation)
  379. XCTAssertEqual(status?.description, "The operation you requested is not supported by this key.")
  380. }
  381. do {
  382. let errSecUnsupportedPadding: OSStatus = -26273
  383. let status = Status(rawValue: errSecUnsupportedPadding)
  384. XCTAssertEqual(status, .unsupportedPadding)
  385. XCTAssertEqual(status?.description, "The padding you requested is not supported.")
  386. }
  387. do {
  388. let errSecItemInvalidKey: OSStatus = -34000
  389. let status = Status(rawValue: errSecItemInvalidKey)
  390. XCTAssertEqual(status, .itemInvalidKey)
  391. XCTAssertEqual(status?.description, "A string key in dictionary is not one of the supported keys.")
  392. }
  393. do {
  394. let errSecItemInvalidKeyType: OSStatus = -34001
  395. let status = Status(rawValue: errSecItemInvalidKeyType)
  396. XCTAssertEqual(status, .itemInvalidKeyType)
  397. XCTAssertEqual(status?.description, "A key in a dictionary is neither a CFStringRef nor a CFNumberRef.")
  398. }
  399. do {
  400. let errSecItemInvalidValue: OSStatus = -34002
  401. let status = Status(rawValue: errSecItemInvalidValue)
  402. XCTAssertEqual(status, .itemInvalidValue)
  403. XCTAssertEqual(status?.description, "A value in a dictionary is an invalid (or unsupported) CF type.")
  404. }
  405. do {
  406. let errSecItemClassMissing: OSStatus = -34003
  407. let status = Status(rawValue: errSecItemClassMissing)
  408. XCTAssertEqual(status, .itemClassMissing)
  409. XCTAssertEqual(status?.description, "No kSecItemClass key was specified in a dictionary.")
  410. }
  411. do {
  412. let errSecItemMatchUnsupported: OSStatus = -34004
  413. let status = Status(rawValue: errSecItemMatchUnsupported)
  414. XCTAssertEqual(status, .itemMatchUnsupported)
  415. XCTAssertEqual(status?.description, "The caller passed one or more kSecMatch keys to a function which does not support matches.")
  416. }
  417. do {
  418. let errSecUseItemListUnsupported: OSStatus = -34005
  419. let status = Status(rawValue: errSecUseItemListUnsupported)
  420. XCTAssertEqual(status, .useItemListUnsupported)
  421. XCTAssertEqual(status?.description, "The caller passed in a kSecUseItemList key to a function which does not support it.")
  422. }
  423. do {
  424. let errSecUseKeychainUnsupported: OSStatus = -34006
  425. let status = Status(rawValue: errSecUseKeychainUnsupported)
  426. XCTAssertEqual(status, .useKeychainUnsupported)
  427. XCTAssertEqual(status?.description, "The caller passed in a kSecUseKeychain key to a function which does not support it.")
  428. }
  429. do {
  430. let errSecUseKeychainListUnsupported: OSStatus = -34007
  431. let status = Status(rawValue: errSecUseKeychainListUnsupported)
  432. XCTAssertEqual(status, .useKeychainListUnsupported)
  433. XCTAssertEqual(status?.description, "The caller passed in a kSecUseKeychainList key to a function which does not support it.")
  434. }
  435. do {
  436. let errSecReturnDataUnsupported: OSStatus = -34008
  437. let status = Status(rawValue: errSecReturnDataUnsupported)
  438. XCTAssertEqual(status, .returnDataUnsupported)
  439. XCTAssertEqual(status?.description, "The caller passed in a kSecReturnData key to a function which does not support it.")
  440. }
  441. do {
  442. let errSecReturnAttributesUnsupported: OSStatus = -34009
  443. let status = Status(rawValue: errSecReturnAttributesUnsupported)
  444. XCTAssertEqual(status, .returnAttributesUnsupported)
  445. XCTAssertEqual(status?.description, "The caller passed in a kSecReturnAttributes key to a function which does not support it.")
  446. }
  447. do {
  448. let errSecReturnRefUnsupported: OSStatus = -34010
  449. let status = Status(rawValue: errSecReturnRefUnsupported)
  450. XCTAssertEqual(status, .returnRefUnsupported)
  451. XCTAssertEqual(status?.description, "The caller passed in a kSecReturnRef key to a function which does not support it.")
  452. }
  453. do {
  454. let errSecReturnPersitentRefUnsupported: OSStatus = -34011
  455. let status = Status(rawValue: errSecReturnPersitentRefUnsupported)
  456. XCTAssertEqual(status, .returnPersitentRefUnsupported)
  457. XCTAssertEqual(status?.description, "The caller passed in a kSecReturnPersistentRef key to a function which does not support it.")
  458. }
  459. do {
  460. let errSecValueRefUnsupported: OSStatus = -34012
  461. let status = Status(rawValue: errSecValueRefUnsupported)
  462. XCTAssertEqual(status, .valueRefUnsupported)
  463. XCTAssertEqual(status?.description, "The caller passed in a kSecValueRef key to a function which does not support it.")
  464. }
  465. do {
  466. let errSecValuePersistentRefUnsupported: OSStatus = -34013
  467. let status = Status(rawValue: errSecValuePersistentRefUnsupported)
  468. XCTAssertEqual(status, .valuePersistentRefUnsupported)
  469. XCTAssertEqual(status?.description, "The caller passed in a kSecValuePersistentRef key to a function which does not support it.")
  470. }
  471. do {
  472. let errSecReturnMissingPointer: OSStatus = -34014
  473. let status = Status(rawValue: errSecReturnMissingPointer)
  474. XCTAssertEqual(status, .returnMissingPointer)
  475. XCTAssertEqual(status?.description, "The caller passed asked for something to be returned but did not pass in a result pointer.")
  476. }
  477. do {
  478. let errSecMatchLimitUnsupported: OSStatus = -34015
  479. let status = Status(rawValue: errSecMatchLimitUnsupported)
  480. XCTAssertEqual(status, .matchLimitUnsupported)
  481. XCTAssertEqual(status?.description, "The caller passed in a kSecMatchLimit key to a call which does not support limits.")
  482. }
  483. do {
  484. let errSecItemIllegalQuery: OSStatus = -34016
  485. let status = Status(rawValue: errSecItemIllegalQuery)
  486. XCTAssertEqual(status, .itemIllegalQuery)
  487. XCTAssertEqual(status?.description, "The caller passed in a query which contained too many keys.")
  488. }
  489. do {
  490. let errSecWaitForCallback: OSStatus = -34017
  491. let status = Status(rawValue: errSecWaitForCallback)
  492. XCTAssertEqual(status, .waitForCallback)
  493. XCTAssertEqual(status?.description, "This operation is incomplete, until the callback is invoked (not an error).")
  494. }
  495. do {
  496. let errSecMissingEntitlement: OSStatus = -34018
  497. let status = Status(rawValue: errSecMissingEntitlement)
  498. XCTAssertEqual(status, .missingEntitlement)
  499. XCTAssertEqual(status?.description, "Internal error when a required entitlement isn't present, client has neither application-identifier nor keychain-access-groups entitlements.")
  500. }
  501. do {
  502. let errSecUpgradePending: OSStatus = -34019
  503. let status = Status(rawValue: errSecUpgradePending)
  504. XCTAssertEqual(status, .upgradePending)
  505. 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.")
  506. }
  507. do {
  508. let errSecMPSignatureInvalid: OSStatus = -25327
  509. let status = Status(rawValue: errSecMPSignatureInvalid)
  510. XCTAssertEqual(status, .mpSignatureInvalid)
  511. XCTAssertEqual(status?.description, "Signature invalid on MP message")
  512. }
  513. do {
  514. let errSecOTRTooOld: OSStatus = -25328
  515. let status = Status(rawValue: errSecOTRTooOld)
  516. XCTAssertEqual(status, .otrTooOld)
  517. XCTAssertEqual(status?.description, "Message is too old to use")
  518. }
  519. do {
  520. let errSecOTRIDTooNew: OSStatus = -25329
  521. let status = Status(rawValue: errSecOTRIDTooNew)
  522. XCTAssertEqual(status, .otrIDTooNew)
  523. XCTAssertEqual(status?.description, "Key ID is too new to use! Message from the future?")
  524. }
  525. do {
  526. let status = Status(rawValue: errSecInsufficientClientID)
  527. XCTAssertEqual(status, .insufficientClientID)
  528. XCTAssertEqual(status?.description, "The client ID is not correct.")
  529. }
  530. do {
  531. let status = Status(rawValue: errSecDeviceReset)
  532. XCTAssertEqual(status, .deviceReset)
  533. XCTAssertEqual(status?.description, "A device reset has occurred.")
  534. }
  535. do {
  536. let status = Status(rawValue: errSecDeviceFailed)
  537. XCTAssertEqual(status, .deviceFailed)
  538. XCTAssertEqual(status?.description, "A device failure has occurred.")
  539. }
  540. do {
  541. let status = Status(rawValue: errSecAppleAddAppACLSubject)
  542. XCTAssertEqual(status, .appleAddAppACLSubject)
  543. XCTAssertEqual(status?.description, "Adding an application ACL subject failed.")
  544. }
  545. do {
  546. let status = Status(rawValue: errSecApplePublicKeyIncomplete)
  547. XCTAssertEqual(status, .applePublicKeyIncomplete)
  548. XCTAssertEqual(status?.description, "The public key is incomplete.")
  549. }
  550. do {
  551. let status = Status(rawValue: errSecAppleSignatureMismatch)
  552. XCTAssertEqual(status, .appleSignatureMismatch)
  553. XCTAssertEqual(status?.description, "A signature mismatch has occurred.")
  554. }
  555. do {
  556. let status = Status(rawValue: errSecAppleInvalidKeyStartDate)
  557. XCTAssertEqual(status, .appleInvalidKeyStartDate)
  558. XCTAssertEqual(status?.description, "The specified key has an invalid start date.")
  559. }
  560. do {
  561. let status = Status(rawValue: errSecAppleInvalidKeyEndDate)
  562. XCTAssertEqual(status, .appleInvalidKeyEndDate)
  563. XCTAssertEqual(status?.description, "The specified key has an invalid end date.")
  564. }
  565. do {
  566. let status = Status(rawValue: errSecConversionError)
  567. XCTAssertEqual(status, .conversionError)
  568. XCTAssertEqual(status?.description, "A conversion error has occurred.")
  569. }
  570. do {
  571. let status = Status(rawValue: errSecAppleSSLv2Rollback)
  572. XCTAssertEqual(status, .appleSSLv2Rollback)
  573. XCTAssertEqual(status?.description, "A SSLv2 rollback error has occurred.")
  574. }
  575. do {
  576. let status = Status(rawValue: errSecDiskFull)
  577. XCTAssertEqual(status, .diskFull)
  578. XCTAssertEqual(status?.description, "The disk is full.")
  579. }
  580. do {
  581. let status = Status(rawValue: errSecQuotaExceeded)
  582. XCTAssertEqual(status, .quotaExceeded)
  583. XCTAssertEqual(status?.description, "The quota was exceeded.")
  584. }
  585. do {
  586. let status = Status(rawValue: errSecFileTooBig)
  587. XCTAssertEqual(status, .fileTooBig)
  588. XCTAssertEqual(status?.description, "The file is too big.")
  589. }
  590. do {
  591. let status = Status(rawValue: errSecInvalidDatabaseBlob)
  592. XCTAssertEqual(status, .invalidDatabaseBlob)
  593. XCTAssertEqual(status?.description, "The specified database has an invalid blob.")
  594. }
  595. do {
  596. let status = Status(rawValue: errSecInvalidKeyBlob)
  597. XCTAssertEqual(status, .invalidKeyBlob)
  598. XCTAssertEqual(status?.description, "The specified database has an invalid key blob.")
  599. }
  600. do {
  601. let status = Status(rawValue: errSecIncompatibleDatabaseBlob)
  602. XCTAssertEqual(status, .incompatibleDatabaseBlob)
  603. XCTAssertEqual(status?.description, "The specified database has an incompatible blob.")
  604. }
  605. do {
  606. let status = Status(rawValue: errSecIncompatibleKeyBlob)
  607. XCTAssertEqual(status, .incompatibleKeyBlob)
  608. XCTAssertEqual(status?.description, "The specified database has an incompatible key blob.")
  609. }
  610. do {
  611. let status = Status(rawValue: errSecHostNameMismatch)
  612. XCTAssertEqual(status, .hostNameMismatch)
  613. XCTAssertEqual(status?.description, "A host name mismatch has occurred.")
  614. }
  615. do {
  616. let status = Status(rawValue: errSecUnknownCriticalExtensionFlag)
  617. XCTAssertEqual(status, .unknownCriticalExtensionFlag)
  618. XCTAssertEqual(status?.description, "There is an unknown critical extension flag.")
  619. }
  620. do {
  621. let status = Status(rawValue: errSecNoBasicConstraints)
  622. XCTAssertEqual(status, .noBasicConstraints)
  623. XCTAssertEqual(status?.description, "No basic constraints were found.")
  624. }
  625. do {
  626. let status = Status(rawValue: errSecNoBasicConstraintsCA)
  627. XCTAssertEqual(status, .noBasicConstraintsCA)
  628. XCTAssertEqual(status?.description, "No basic CA constraints were found.")
  629. }
  630. do {
  631. let status = Status(rawValue: errSecInvalidAuthorityKeyID)
  632. XCTAssertEqual(status, .invalidAuthorityKeyID)
  633. XCTAssertEqual(status?.description, "The authority key ID is not valid.")
  634. }
  635. do {
  636. let status = Status(rawValue: errSecInvalidSubjectKeyID)
  637. XCTAssertEqual(status, .invalidSubjectKeyID)
  638. XCTAssertEqual(status?.description, "The subject key ID is not valid.")
  639. }
  640. do {
  641. let status = Status(rawValue: errSecInvalidKeyUsageForPolicy)
  642. XCTAssertEqual(status, .invalidKeyUsageForPolicy)
  643. XCTAssertEqual(status?.description, "The key usage is not valid for the specified policy.")
  644. }
  645. do {
  646. let status = Status(rawValue: errSecInvalidExtendedKeyUsage)
  647. XCTAssertEqual(status, .invalidExtendedKeyUsage)
  648. XCTAssertEqual(status?.description, "The extended key usage is not valid.")
  649. }
  650. do {
  651. let status = Status(rawValue: errSecInvalidIDLinkage)
  652. XCTAssertEqual(status, .invalidIDLinkage)
  653. XCTAssertEqual(status?.description, "The ID linkage is not valid.")
  654. }
  655. do {
  656. let status = Status(rawValue: errSecPathLengthConstraintExceeded)
  657. XCTAssertEqual(status, .pathLengthConstraintExceeded)
  658. XCTAssertEqual(status?.description, "The path length constraint was exceeded.")
  659. }
  660. do {
  661. let status = Status(rawValue: errSecInvalidRoot)
  662. XCTAssertEqual(status, .invalidRoot)
  663. XCTAssertEqual(status?.description, "The root or anchor certificate is not valid.")
  664. }
  665. do {
  666. let status = Status(rawValue: errSecCRLExpired)
  667. XCTAssertEqual(status, .crlExpired)
  668. XCTAssertEqual(status?.description, "The CRL has expired.")
  669. }
  670. do {
  671. let status = Status(rawValue: errSecCRLNotValidYet)
  672. XCTAssertEqual(status, .crlNotValidYet)
  673. XCTAssertEqual(status?.description, "The CRL is not yet valid.")
  674. }
  675. do {
  676. let status = Status(rawValue: errSecCRLNotFound)
  677. XCTAssertEqual(status, .crlNotFound)
  678. XCTAssertEqual(status?.description, "The CRL was not found.")
  679. }
  680. do {
  681. let status = Status(rawValue: errSecCRLServerDown)
  682. XCTAssertEqual(status, .crlServerDown)
  683. XCTAssertEqual(status?.description, "The CRL server is down.")
  684. }
  685. do {
  686. let status = Status(rawValue: errSecCRLBadURI)
  687. XCTAssertEqual(status, .crlBadURI)
  688. XCTAssertEqual(status?.description, "The CRL has a bad Uniform Resource Identifier.")
  689. }
  690. do {
  691. let status = Status(rawValue: errSecUnknownCertExtension)
  692. XCTAssertEqual(status, .unknownCertExtension)
  693. XCTAssertEqual(status?.description, "An unknown certificate extension was encountered.")
  694. }
  695. do {
  696. let status = Status(rawValue: errSecUnknownCRLExtension)
  697. XCTAssertEqual(status, .unknownCRLExtension)
  698. XCTAssertEqual(status?.description, "An unknown CRL extension was encountered.")
  699. }
  700. do {
  701. let status = Status(rawValue: errSecCRLNotTrusted)
  702. XCTAssertEqual(status, .crlNotTrusted)
  703. XCTAssertEqual(status?.description, "The CRL is not trusted.")
  704. }
  705. do {
  706. let status = Status(rawValue: errSecCRLPolicyFailed)
  707. XCTAssertEqual(status, .crlPolicyFailed)
  708. XCTAssertEqual(status?.description, "The CRL policy failed.")
  709. }
  710. do {
  711. let status = Status(rawValue: errSecIDPFailure)
  712. XCTAssertEqual(status, .idpFailure)
  713. XCTAssertEqual(status?.description, "The issuing distribution point was not valid.")
  714. }
  715. do {
  716. let status = Status(rawValue: errSecSMIMEEmailAddressesNotFound)
  717. XCTAssertEqual(status, .smimeEmailAddressesNotFound)
  718. XCTAssertEqual(status?.description, "An email address mismatch was encountered.")
  719. }
  720. do {
  721. let status = Status(rawValue: errSecSMIMEBadExtendedKeyUsage)
  722. XCTAssertEqual(status, .smimeBadExtendedKeyUsage)
  723. XCTAssertEqual(status?.description, "The appropriate extended key usage for SMIME was not found.")
  724. }
  725. do {
  726. let status = Status(rawValue: errSecSMIMEBadKeyUsage)
  727. XCTAssertEqual(status, .smimeBadKeyUsage)
  728. XCTAssertEqual(status?.description, "The key usage is not compatible with SMIME.")
  729. }
  730. do {
  731. let status = Status(rawValue: errSecSMIMEKeyUsageNotCritical)
  732. XCTAssertEqual(status, .smimeKeyUsageNotCritical)
  733. XCTAssertEqual(status?.description, "The key usage extension is not marked as critical.")
  734. }
  735. do {
  736. let status = Status(rawValue: errSecSMIMENoEmailAddress)
  737. XCTAssertEqual(status, .smimeNoEmailAddress)
  738. XCTAssertEqual(status?.description, "No email address was found in the certificate.")
  739. }
  740. do {
  741. let status = Status(rawValue: errSecSMIMESubjAltNameNotCritical)
  742. XCTAssertEqual(status, .smimeSubjAltNameNotCritical)
  743. XCTAssertEqual(status?.description, "The subject alternative name extension is not marked as critical.")
  744. }
  745. do {
  746. let status = Status(rawValue: errSecSSLBadExtendedKeyUsage)
  747. XCTAssertEqual(status, .sslBadExtendedKeyUsage)
  748. XCTAssertEqual(status?.description, "The appropriate extended key usage for SSL was not found.")
  749. }
  750. do {
  751. let status = Status(rawValue: errSecOCSPBadResponse)
  752. XCTAssertEqual(status, .ocspBadResponse)
  753. XCTAssertEqual(status?.description, "The OCSP response was incorrect or could not be parsed.")
  754. }
  755. do {
  756. let status = Status(rawValue: errSecOCSPBadRequest)
  757. XCTAssertEqual(status, .ocspBadRequest)
  758. XCTAssertEqual(status?.description, "The OCSP request was incorrect or could not be parsed.")
  759. }
  760. do {
  761. let status = Status(rawValue: errSecOCSPUnavailable)
  762. XCTAssertEqual(status, .ocspUnavailable)
  763. XCTAssertEqual(status?.description, "OCSP service is unavailable.")
  764. }
  765. do {
  766. let status = Status(rawValue: errSecOCSPStatusUnrecognized)
  767. XCTAssertEqual(status, .ocspStatusUnrecognized)
  768. XCTAssertEqual(status?.description, "The OCSP server did not recognize this certificate.")
  769. }
  770. do {
  771. let status = Status(rawValue: errSecEndOfData)
  772. XCTAssertEqual(status, .endOfData)
  773. XCTAssertEqual(status?.description, "An end-of-data was detected.")
  774. }
  775. do {
  776. let status = Status(rawValue: errSecIncompleteCertRevocationCheck)
  777. XCTAssertEqual(status, .incompleteCertRevocationCheck)
  778. XCTAssertEqual(status?.description, "An incomplete certificate revocation check occurred.")
  779. }
  780. do {
  781. let status = Status(rawValue: errSecNetworkFailure)
  782. XCTAssertEqual(status, .networkFailure)
  783. XCTAssertEqual(status?.description, "A network failure occurred.")
  784. }
  785. do {
  786. let status = Status(rawValue: errSecOCSPNotTrustedToAnchor)
  787. XCTAssertEqual(status, .ocspNotTrustedToAnchor)
  788. XCTAssertEqual(status?.description, "The OCSP response was not trusted to a root or anchor certificate.")
  789. }
  790. do {
  791. let status = Status(rawValue: errSecRecordModified)
  792. XCTAssertEqual(status, .recordModified)
  793. XCTAssertEqual(status?.description, "The record was modified.")
  794. }
  795. do {
  796. let status = Status(rawValue: errSecOCSPSignatureError)
  797. XCTAssertEqual(status, .ocspSignatureError)
  798. XCTAssertEqual(status?.description, "The OCSP response had an invalid signature.")
  799. }
  800. do {
  801. let status = Status(rawValue: errSecOCSPNoSigner)
  802. XCTAssertEqual(status, .ocspNoSigner)
  803. XCTAssertEqual(status?.description, "The OCSP response had no signer.")
  804. }
  805. do {
  806. let status = Status(rawValue: errSecOCSPResponderMalformedReq)
  807. XCTAssertEqual(status, .ocspResponderMalformedReq)
  808. XCTAssertEqual(status?.description, "The OCSP responder was given a malformed request.")
  809. }
  810. do {
  811. let status = Status(rawValue: errSecOCSPResponderInternalError)
  812. XCTAssertEqual(status, .ocspResponderInternalError)
  813. XCTAssertEqual(status?.description, "The OCSP responder encountered an internal error.")
  814. }
  815. do {
  816. let status = Status(rawValue: errSecOCSPResponderTryLater)
  817. XCTAssertEqual(status, .ocspResponderTryLater)
  818. XCTAssertEqual(status?.description, "The OCSP responder is busy, try again later.")
  819. }
  820. do {
  821. let status = Status(rawValue: errSecOCSPResponderSignatureRequired)
  822. XCTAssertEqual(status, .ocspResponderSignatureRequired)
  823. XCTAssertEqual(status?.description, "The OCSP responder requires a signature.")
  824. }
  825. do {
  826. let status = Status(rawValue: errSecOCSPResponderUnauthorized)
  827. XCTAssertEqual(status, .ocspResponderUnauthorized)
  828. XCTAssertEqual(status?.description, "The OCSP responder rejected this request as unauthorized.")
  829. }
  830. do {
  831. let status = Status(rawValue: errSecOCSPResponseNonceMismatch)
  832. XCTAssertEqual(status, .ocspResponseNonceMismatch)
  833. XCTAssertEqual(status?.description, "The OCSP response nonce did not match the request.")
  834. }
  835. do {
  836. let status = Status(rawValue: errSecCodeSigningBadCertChainLength)
  837. XCTAssertEqual(status, .codeSigningBadCertChainLength)
  838. XCTAssertEqual(status?.description, "Code signing encountered an incorrect certificate chain length.")
  839. }
  840. do {
  841. let status = Status(rawValue: errSecCodeSigningNoBasicConstraints)
  842. XCTAssertEqual(status, .codeSigningNoBasicConstraints)
  843. XCTAssertEqual(status?.description, "Code signing found no basic constraints.")
  844. }
  845. do {
  846. let status = Status(rawValue: errSecCodeSigningBadPathLengthConstraint)
  847. XCTAssertEqual(status, .codeSigningBadPathLengthConstraint)
  848. XCTAssertEqual(status?.description, "Code signing encountered an incorrect path length constraint.")
  849. }
  850. do {
  851. let status = Status(rawValue: errSecCodeSigningNoExtendedKeyUsage)
  852. XCTAssertEqual(status, .codeSigningNoExtendedKeyUsage)
  853. XCTAssertEqual(status?.description, "Code signing found no extended key usage.")
  854. }
  855. do {
  856. let status = Status(rawValue: errSecCodeSigningDevelopment)
  857. XCTAssertEqual(status, .codeSigningDevelopment)
  858. XCTAssertEqual(status?.description, "Code signing indicated use of a development-only certificate.")
  859. }
  860. do {
  861. let status = Status(rawValue: errSecResourceSignBadCertChainLength)
  862. XCTAssertEqual(status, .resourceSignBadCertChainLength)
  863. XCTAssertEqual(status?.description, "Resource signing has encountered an incorrect certificate chain length.")
  864. }
  865. do {
  866. let status = Status(rawValue: errSecResourceSignBadExtKeyUsage)
  867. XCTAssertEqual(status, .resourceSignBadExtKeyUsage)
  868. XCTAssertEqual(status?.description, "Resource signing has encountered an error in the extended key usage.")
  869. }
  870. do {
  871. let status = Status(rawValue: errSecTrustSettingDeny)
  872. XCTAssertEqual(status, .trustSettingDeny)
  873. XCTAssertEqual(status?.description, "The trust setting for this policy was set to Deny.")
  874. }
  875. do {
  876. let status = Status(rawValue: errSecInvalidSubjectName)
  877. XCTAssertEqual(status, .invalidSubjectName)
  878. XCTAssertEqual(status?.description, "An invalid certificate subject name was encountered.")
  879. }
  880. do {
  881. let status = Status(rawValue: errSecUnknownQualifiedCertStatement)
  882. XCTAssertEqual(status, .unknownQualifiedCertStatement)
  883. XCTAssertEqual(status?.description, "An unknown qualified certificate statement was encountered.")
  884. }
  885. do {
  886. let status = Status(rawValue: errSecMobileMeRequestQueued)
  887. XCTAssertEqual(status, .mobileMeRequestQueued)
  888. XCTAssertEqual(status?.description, "The MobileMe request will be sent during the next connection.")
  889. }
  890. do {
  891. let status = Status(rawValue: errSecMobileMeRequestRedirected)
  892. XCTAssertEqual(status, .mobileMeRequestRedirected)
  893. XCTAssertEqual(status?.description, "The MobileMe request was redirected.")
  894. }
  895. do {
  896. let status = Status(rawValue: errSecMobileMeServerError)
  897. XCTAssertEqual(status, .mobileMeServerError)
  898. XCTAssertEqual(status?.description, "A MobileMe server error occurred.")
  899. }
  900. do {
  901. let status = Status(rawValue: errSecMobileMeServerNotAvailable)
  902. XCTAssertEqual(status, .mobileMeServerNotAvailable)
  903. XCTAssertEqual(status?.description, "The MobileMe server is not available.")
  904. }
  905. do {
  906. let status = Status(rawValue: errSecMobileMeServerAlreadyExists)
  907. XCTAssertEqual(status, .mobileMeServerAlreadyExists)
  908. XCTAssertEqual(status?.description, "The MobileMe server reported that the item already exists.")
  909. }
  910. do {
  911. let status = Status(rawValue: errSecMobileMeServerServiceErr)
  912. XCTAssertEqual(status, .mobileMeServerServiceErr)
  913. XCTAssertEqual(status?.description, "A MobileMe service error has occurred.")
  914. }
  915. do {
  916. let status = Status(rawValue: errSecMobileMeRequestAlreadyPending)
  917. XCTAssertEqual(status, .mobileMeRequestAlreadyPending)
  918. XCTAssertEqual(status?.description, "A MobileMe request is already pending.")
  919. }
  920. do {
  921. let status = Status(rawValue: errSecMobileMeNoRequestPending)
  922. XCTAssertEqual(status, .mobileMeNoRequestPending)
  923. XCTAssertEqual(status?.description, "MobileMe has no request pending.")
  924. }
  925. do {
  926. let status = Status(rawValue: errSecMobileMeCSRVerifyFailure)
  927. XCTAssertEqual(status, .mobileMeCSRVerifyFailure)
  928. XCTAssertEqual(status?.description, "A MobileMe CSR verification failure has occurred.")
  929. }
  930. do {
  931. let status = Status(rawValue: errSecMobileMeFailedConsistencyCheck)
  932. XCTAssertEqual(status, .mobileMeFailedConsistencyCheck)
  933. XCTAssertEqual(status?.description, "MobileMe has found a failed consistency check.")
  934. }
  935. do {
  936. let status = Status(rawValue: errSecNotInitialized)
  937. XCTAssertEqual(status, .notInitialized)
  938. XCTAssertEqual(status?.description, "A function was called without initializing CSSM.")
  939. }
  940. do {
  941. let status = Status(rawValue: errSecInvalidHandleUsage)
  942. XCTAssertEqual(status, .invalidHandleUsage)
  943. XCTAssertEqual(status?.description, "The CSSM handle does not match with the service type.")
  944. }
  945. do {
  946. let status = Status(rawValue: errSecPVCReferentNotFound)
  947. XCTAssertEqual(status, .pvcReferentNotFound)
  948. XCTAssertEqual(status?.description, "A reference to the calling module was not found in the list of authorized callers.")
  949. }
  950. do {
  951. let status = Status(rawValue: errSecFunctionIntegrityFail)
  952. XCTAssertEqual(status, .functionIntegrityFail)
  953. XCTAssertEqual(status?.description, "A function address was not within the verified module.")
  954. }
  955. do {
  956. let status = Status(rawValue: errSecInternalError)
  957. XCTAssertEqual(status, .internalError)
  958. XCTAssertEqual(status?.description, "An internal error has occurred.")
  959. }
  960. do {
  961. let status = Status(rawValue: errSecMemoryError)
  962. XCTAssertEqual(status, .memoryError)
  963. XCTAssertEqual(status?.description, "A memory error has occurred.")
  964. }
  965. do {
  966. let status = Status(rawValue: errSecInvalidData)
  967. XCTAssertEqual(status, .invalidData)
  968. XCTAssertEqual(status?.description, "Invalid data was encountered.")
  969. }
  970. do {
  971. let status = Status(rawValue: errSecMDSError)
  972. XCTAssertEqual(status, .mdsError)
  973. XCTAssertEqual(status?.description, "A Module Directory Service error has occurred.")
  974. }
  975. do {
  976. let status = Status(rawValue: errSecInvalidPointer)
  977. XCTAssertEqual(status, .invalidPointer)
  978. XCTAssertEqual(status?.description, "An invalid pointer was encountered.")
  979. }
  980. do {
  981. let status = Status(rawValue: errSecSelfCheckFailed)
  982. XCTAssertEqual(status, .selfCheckFailed)
  983. XCTAssertEqual(status?.description, "Self-check has failed.")
  984. }
  985. do {
  986. let status = Status(rawValue: errSecFunctionFailed)
  987. XCTAssertEqual(status, .functionFailed)
  988. XCTAssertEqual(status?.description, "A function has failed.")
  989. }
  990. do {
  991. let status = Status(rawValue: errSecModuleManifestVerifyFailed)
  992. XCTAssertEqual(status, .moduleManifestVerifyFailed)
  993. XCTAssertEqual(status?.description, "A module manifest verification failure has occurred.")
  994. }
  995. do {
  996. let status = Status(rawValue: errSecInvalidGUID)
  997. XCTAssertEqual(status, .invalidGUID)
  998. XCTAssertEqual(status?.description, "An invalid GUID was encountered.")
  999. }
  1000. do {
  1001. let status = Status(rawValue: errSecInvalidHandle)
  1002. XCTAssertEqual(status, .invalidHandle)
  1003. XCTAssertEqual(status?.description, "An invalid handle was encountered.")
  1004. }
  1005. do {
  1006. let status = Status(rawValue: errSecInvalidDBList)
  1007. XCTAssertEqual(status, .invalidDBList)
  1008. XCTAssertEqual(status?.description, "An invalid DB list was encountered.")
  1009. }
  1010. do {
  1011. let status = Status(rawValue: errSecInvalidPassthroughID)
  1012. XCTAssertEqual(status, .invalidPassthroughID)
  1013. XCTAssertEqual(status?.description, "An invalid passthrough ID was encountered.")
  1014. }
  1015. do {
  1016. let status = Status(rawValue: errSecInvalidNetworkAddress)
  1017. XCTAssertEqual(status, .invalidNetworkAddress)
  1018. XCTAssertEqual(status?.description, "An invalid network address was encountered.")
  1019. }
  1020. do {
  1021. let status = Status(rawValue: errSecCRLAlreadySigned)
  1022. XCTAssertEqual(status, .crlAlreadySigned)
  1023. XCTAssertEqual(status?.description, "The certificate revocation list is already signed.")
  1024. }
  1025. do {
  1026. let status = Status(rawValue: errSecInvalidNumberOfFields)
  1027. XCTAssertEqual(status, .invalidNumberOfFields)
  1028. XCTAssertEqual(status?.description, "An invalid number of fields were encountered.")
  1029. }
  1030. do {
  1031. let status = Status(rawValue: errSecVerificationFailure)
  1032. XCTAssertEqual(status, .verificationFailure)
  1033. XCTAssertEqual(status?.description, "A verification failure occurred.")
  1034. }
  1035. do {
  1036. let status = Status(rawValue: errSecUnknownTag)
  1037. XCTAssertEqual(status, .unknownTag)
  1038. XCTAssertEqual(status?.description, "An unknown tag was encountered.")
  1039. }
  1040. do {
  1041. let status = Status(rawValue: errSecInvalidSignature)
  1042. XCTAssertEqual(status, .invalidSignature)
  1043. XCTAssertEqual(status?.description, "An invalid signature was encountered.")
  1044. }
  1045. do {
  1046. let status = Status(rawValue: errSecInvalidName)
  1047. XCTAssertEqual(status, .invalidName)
  1048. XCTAssertEqual(status?.description, "An invalid name was encountered.")
  1049. }
  1050. do {
  1051. let status = Status(rawValue: errSecInvalidCertificateRef)
  1052. XCTAssertEqual(status, .invalidCertificateRef)
  1053. XCTAssertEqual(status?.description, "An invalid certificate reference was encountered.")
  1054. }
  1055. do {
  1056. let status = Status(rawValue: errSecInvalidCertificateGroup)
  1057. XCTAssertEqual(status, .invalidCertificateGroup)
  1058. XCTAssertEqual(status?.description, "An invalid certificate group was encountered.")
  1059. }
  1060. do {
  1061. let status = Status(rawValue: errSecTagNotFound)
  1062. XCTAssertEqual(status, .tagNotFound)
  1063. XCTAssertEqual(status?.description, "The specified tag was not found.")
  1064. }
  1065. do {
  1066. let status = Status(rawValue: errSecInvalidQuery)
  1067. XCTAssertEqual(status, .invalidQuery)
  1068. XCTAssertEqual(status?.description, "The specified query was not valid.")
  1069. }
  1070. do {
  1071. let status = Status(rawValue: errSecInvalidValue)
  1072. XCTAssertEqual(status, .invalidValue)
  1073. XCTAssertEqual(status?.description, "An invalid value was detected.")
  1074. }
  1075. do {
  1076. let status = Status(rawValue: errSecCallbackFailed)
  1077. XCTAssertEqual(status, .callbackFailed)
  1078. XCTAssertEqual(status?.description, "A callback has failed.")
  1079. }
  1080. do {
  1081. let status = Status(rawValue: errSecACLDeleteFailed)
  1082. XCTAssertEqual(status, .aclDeleteFailed)
  1083. XCTAssertEqual(status?.description, "An ACL delete operation has failed.")
  1084. }
  1085. do {
  1086. let status = Status(rawValue: errSecACLReplaceFailed)
  1087. XCTAssertEqual(status, .aclReplaceFailed)
  1088. XCTAssertEqual(status?.description, "An ACL replace operation has failed.")
  1089. }
  1090. do {
  1091. let status = Status(rawValue: errSecACLAddFailed)
  1092. XCTAssertEqual(status, .aclAddFailed)
  1093. XCTAssertEqual(status?.description, "An ACL add operation has failed.")
  1094. }
  1095. do {
  1096. let status = Status(rawValue: errSecACLChangeFailed)
  1097. XCTAssertEqual(status, .aclChangeFailed)
  1098. XCTAssertEqual(status?.description, "An ACL change operation has failed.")
  1099. }
  1100. do {
  1101. let status = Status(rawValue: errSecInvalidAccessCredentials)
  1102. XCTAssertEqual(status, .invalidAccessCredentials)
  1103. XCTAssertEqual(status?.description, "Invalid access credentials were encountered.")
  1104. }
  1105. do {
  1106. let status = Status(rawValue: errSecInvalidRecord)
  1107. XCTAssertEqual(status, .invalidRecord)
  1108. XCTAssertEqual(status?.description, "An invalid record was encountered.")
  1109. }
  1110. do {
  1111. let status = Status(rawValue: errSecInvalidACL)
  1112. XCTAssertEqual(status, .invalidACL)
  1113. XCTAssertEqual(status?.description, "An invalid ACL was encountered.")
  1114. }
  1115. do {
  1116. let status = Status(rawValue: errSecInvalidSampleValue)
  1117. XCTAssertEqual(status, .invalidSampleValue)
  1118. XCTAssertEqual(status?.description, "An invalid sample value was encountered.")
  1119. }
  1120. do {
  1121. let status = Status(rawValue: errSecIncompatibleVersion)
  1122. XCTAssertEqual(status, .incompatibleVersion)
  1123. XCTAssertEqual(status?.description, "An incompatible version was encountered.")
  1124. }
  1125. do {
  1126. let status = Status(rawValue: errSecPrivilegeNotGranted)
  1127. XCTAssertEqual(status, .privilegeNotGranted)
  1128. XCTAssertEqual(status?.description, "The privilege was not granted.")
  1129. }
  1130. do {
  1131. let status = Status(rawValue: errSecInvalidScope)
  1132. XCTAssertEqual(status, .invalidScope)
  1133. XCTAssertEqual(status?.description, "An invalid scope was encountered.")
  1134. }
  1135. do {
  1136. let status = Status(rawValue: errSecPVCAlreadyConfigured)
  1137. XCTAssertEqual(status, .pvcAlreadyConfigured)
  1138. XCTAssertEqual(status?.description, "The PVC is already configured.")
  1139. }
  1140. do {
  1141. let status = Status(rawValue: errSecInvalidPVC)
  1142. XCTAssertEqual(status, .invalidPVC)
  1143. XCTAssertEqual(status?.description, "An invalid PVC was encountered.")
  1144. }
  1145. do {
  1146. let status = Status(rawValue: errSecEMMLoadFailed)
  1147. XCTAssertEqual(status, .emmLoadFailed)
  1148. XCTAssertEqual(status?.description, "The EMM load has failed.")
  1149. }
  1150. do {
  1151. let status = Status(rawValue: errSecEMMUnloadFailed)
  1152. XCTAssertEqual(status, .emmUnloadFailed)
  1153. XCTAssertEqual(status?.description, "The EMM unload has failed.")
  1154. }
  1155. do {
  1156. let status = Status(rawValue: errSecAddinLoadFailed)
  1157. XCTAssertEqual(status, .addinLoadFailed)
  1158. XCTAssertEqual(status?.description, "The add-in load operation has failed.")
  1159. }
  1160. do {
  1161. let status = Status(rawValue: errSecInvalidKeyRef)
  1162. XCTAssertEqual(status, .invalidKeyRef)
  1163. XCTAssertEqual(status?.description, "An invalid key was encountered.")
  1164. }
  1165. do {
  1166. let status = Status(rawValue: errSecInvalidKeyHierarchy)
  1167. XCTAssertEqual(status, .invalidKeyHierarchy)
  1168. XCTAssertEqual(status?.description, "An invalid key hierarchy was encountered.")
  1169. }
  1170. do {
  1171. let status = Status(rawValue: errSecAddinUnloadFailed)
  1172. XCTAssertEqual(status, .addinUnloadFailed)
  1173. XCTAssertEqual(status?.description, "The add-in unload operation has failed.")
  1174. }
  1175. do {
  1176. let status = Status(rawValue: errSecLibraryReferenceNotFound)
  1177. XCTAssertEqual(status, .libraryReferenceNotFound)
  1178. XCTAssertEqual(status?.description, "A library reference was not found.")
  1179. }
  1180. do {
  1181. let status = Status(rawValue: errSecInvalidAddinFunctionTable)
  1182. XCTAssertEqual(status, .invalidAddinFunctionTable)
  1183. XCTAssertEqual(status?.description, "An invalid add-in function table was encountered.")
  1184. }
  1185. do {
  1186. let status = Status(rawValue: errSecInvalidServiceMask)
  1187. XCTAssertEqual(status, .invalidServiceMask)
  1188. XCTAssertEqual(status?.description, "An invalid service mask was encountered.")
  1189. }
  1190. do {
  1191. let status = Status(rawValue: errSecModuleNotLoaded)
  1192. XCTAssertEqual(status, .moduleNotLoaded)
  1193. XCTAssertEqual(status?.description, "A module was not loaded.")
  1194. }
  1195. do {
  1196. let status = Status(rawValue: errSecInvalidSubServiceID)
  1197. XCTAssertEqual(status, .invalidSubServiceID)
  1198. XCTAssertEqual(status?.description, "An invalid subservice ID was encountered.")
  1199. }
  1200. do {
  1201. let status = Status(rawValue: errSecAttributeNotInContext)
  1202. XCTAssertEqual(status, .attributeNotInContext)
  1203. XCTAssertEqual(status?.description, "An attribute was not in the context.")
  1204. }
  1205. do {
  1206. let status = Status(rawValue: errSecModuleManagerInitializeFailed)
  1207. XCTAssertEqual(status, .moduleManagerInitializeFailed)
  1208. XCTAssertEqual(status?.description, "A module failed to initialize.")
  1209. }
  1210. do {
  1211. let status = Status(rawValue: errSecModuleManagerNotFound)
  1212. XCTAssertEqual(status, .moduleManagerNotFound)
  1213. XCTAssertEqual(status?.description, "A module was not found.")
  1214. }
  1215. do {
  1216. let status = Status(rawValue: errSecEventNotificationCallbackNotFound)
  1217. XCTAssertEqual(status, .eventNotificationCallbackNotFound)
  1218. XCTAssertEqual(status?.description, "An event notification callback was not found.")
  1219. }
  1220. do {
  1221. let status = Status(rawValue: errSecInputLengthError)
  1222. XCTAssertEqual(status, .inputLengthError)
  1223. XCTAssertEqual(status?.description, "An input length error was encountered.")
  1224. }
  1225. do {
  1226. let status = Status(rawValue: errSecOutputLengthError)
  1227. XCTAssertEqual(status, .outputLengthError)
  1228. XCTAssertEqual(status?.description, "An output length error was encountered.")
  1229. }
  1230. do {
  1231. let status = Status(rawValue: errSecPrivilegeNotSupported)
  1232. XCTAssertEqual(status, .privilegeNotSupported)
  1233. XCTAssertEqual(status?.description, "The privilege is not supported.")
  1234. }
  1235. do {
  1236. let status = Status(rawValue: errSecDeviceError)
  1237. XCTAssertEqual(status, .deviceError)
  1238. XCTAssertEqual(status?.description, "A device error was encountered.")
  1239. }
  1240. do {
  1241. let status = Status(rawValue: errSecAttachHandleBusy)
  1242. XCTAssertEqual(status, .attachHandleBusy)
  1243. XCTAssertEqual(status?.description, "The CSP handle was busy.")
  1244. }
  1245. do {
  1246. let status = Status(rawValue: errSecNotLoggedIn)
  1247. XCTAssertEqual(status, .notLoggedIn)
  1248. XCTAssertEqual(status?.description, "You are not logged in.")
  1249. }
  1250. do {
  1251. let status = Status(rawValue: errSecAlgorithmMismatch)
  1252. XCTAssertEqual(status, .algorithmMismatch)
  1253. XCTAssertEqual(status?.description, "An algorithm mismatch was encountered.")
  1254. }
  1255. do {
  1256. let status = Status(rawValue: errSecKeyUsageIncorrect)
  1257. XCTAssertEqual(status, .keyUsageIncorrect)
  1258. XCTAssertEqual(status?.description, "The key usage is incorrect.")
  1259. }
  1260. do {
  1261. let status = Status(rawValue: errSecKeyBlobTypeIncorrect)
  1262. XCTAssertEqual(status, .keyBlobTypeIncorrect)
  1263. XCTAssertEqual(status?.description, "The key blob type is incorrect.")
  1264. }
  1265. do {
  1266. let status = Status(rawValue: errSecKeyHeaderInconsistent)
  1267. XCTAssertEqual(status, .keyHeaderInconsistent)
  1268. XCTAssertEqual(status?.description, "The key header is inconsistent.")
  1269. }
  1270. do {
  1271. let status = Status(rawValue: errSecUnsupportedKeyFormat)
  1272. XCTAssertEqual(status, .unsupportedKeyFormat)
  1273. XCTAssertEqual(status?.description, "The key header format is not supported.")
  1274. }
  1275. do {
  1276. let status = Status(rawValue: errSecUnsupportedKeySize)
  1277. XCTAssertEqual(status, .unsupportedKeySize)
  1278. XCTAssertEqual(status?.description, "The key size is not supported.")
  1279. }
  1280. do {
  1281. let status = Status(rawValue: errSecInvalidKeyUsageMask)
  1282. XCTAssertEqual(status, .invalidKeyUsageMask)
  1283. XCTAssertEqual(status?.description, "The key usage mask is not valid.")
  1284. }
  1285. do {
  1286. let status = Status(rawValue: errSecUnsupportedKeyUsageMask)
  1287. XCTAssertEqual(status, .unsupportedKeyUsageMask)
  1288. XCTAssertEqual(status?.description, "The key usage mask is not supported.")
  1289. }
  1290. do {
  1291. let status = Status(rawValue: errSecInvalidKeyAttributeMask)
  1292. XCTAssertEqual(status, .invalidKeyAttributeMask)
  1293. XCTAssertEqual(status?.description, "The key attribute mask is not valid.")
  1294. }
  1295. do {
  1296. let status = Status(rawValue: errSecUnsupportedKeyAttributeMask)
  1297. XCTAssertEqual(status, .unsupportedKeyAttributeMask)
  1298. XCTAssertEqual(status?.description, "The key attribute mask is not supported.")
  1299. }
  1300. do {
  1301. let status = Status(rawValue: errSecInvalidKeyLabel)
  1302. XCTAssertEqual(status, .invalidKeyLabel)
  1303. XCTAssertEqual(status?.description, "The key label is not valid.")
  1304. }
  1305. do {
  1306. let status = Status(rawValue: errSecUnsupportedKeyLabel)
  1307. XCTAssertEqual(status, .unsupportedKeyLabel)
  1308. XCTAssertEqual(status?.description, "The key label is not supported.")
  1309. }
  1310. do {
  1311. let status = Status(rawValue: errSecInvalidKeyFormat)
  1312. XCTAssertEqual(status, .invalidKeyFormat)
  1313. XCTAssertEqual(status?.description, "The key format is not valid.")
  1314. }
  1315. do {
  1316. let status = Status(rawValue: errSecUnsupportedVectorOfBuffers)
  1317. XCTAssertEqual(status, .unsupportedVectorOfBuffers)
  1318. XCTAssertEqual(status?.description, "The vector of buffers is not supported.")
  1319. }
  1320. do {
  1321. let status = Status(rawValue: errSecInvalidInputVector)
  1322. XCTAssertEqual(status, .invalidInputVector)
  1323. XCTAssertEqual(status?.description, "The input vector is not valid.")
  1324. }
  1325. do {
  1326. let status = Status(rawValue: errSecInvalidOutputVector)
  1327. XCTAssertEqual(status, .invalidOutputVector)
  1328. XCTAssertEqual(status?.description, "The output vector is not valid.")
  1329. }
  1330. do {
  1331. let status = Status(rawValue: errSecInvalidContext)
  1332. XCTAssertEqual(status, .invalidContext)
  1333. XCTAssertEqual(status?.description, "An invalid context was encountered.")
  1334. }
  1335. do {
  1336. let status = Status(rawValue: errSecInvalidAlgorithm)
  1337. XCTAssertEqual(status, .invalidAlgorithm)
  1338. XCTAssertEqual(status?.description, "An invalid algorithm was encountered.")
  1339. }
  1340. do {
  1341. let status = Status(rawValue: errSecInvalidAttributeKey)
  1342. XCTAssertEqual(status, .invalidAttributeKey)
  1343. XCTAssertEqual(status?.description, "A key attribute was not valid.")
  1344. }
  1345. do {
  1346. let status = Status(rawValue: errSecMissingAttributeKey)
  1347. XCTAssertEqual(status, .missingAttributeKey)
  1348. XCTAssertEqual(status?.description, "A key attribute was missing.")
  1349. }
  1350. do {
  1351. let status = Status(rawValue: errSecInvalidAttributeInitVector)
  1352. XCTAssertEqual(status, .invalidAttributeInitVector)
  1353. XCTAssertEqual(status?.description, "An init vector attribute was not valid.")
  1354. }
  1355. do {
  1356. let status = Status(rawValue: errSecMissingAttributeInitVector)
  1357. XCTAssertEqual(status, .missingAttributeInitVector)
  1358. XCTAssertEqual(status?.description, "An init vector attribute was missing.")
  1359. }
  1360. do {
  1361. let status = Status(rawValue: errSecInvalidAttributeSalt)
  1362. XCTAssertEqual(status, .invalidAttributeSalt)
  1363. XCTAssertEqual(status?.description, "A salt attribute was not valid.")
  1364. }
  1365. do {
  1366. let status = Status(rawValue: errSecMissingAttributeSalt)
  1367. XCTAssertEqual(status, .missingAttributeSalt)
  1368. XCTAssertEqual(status?.description, "A salt attribute was missing.")
  1369. }
  1370. do {
  1371. let status = Status(rawValue: errSecInvalidAttributePadding)
  1372. XCTAssertEqual(status, .invalidAttributePadding)
  1373. XCTAssertEqual(status?.description, "A padding attribute was not valid.")
  1374. }
  1375. do {
  1376. let status = Status(rawValue: errSecMissingAttributePadding)
  1377. XCTAssertEqual(status, .missingAttributePadding)
  1378. XCTAssertEqual(status?.description, "A padding attribute was missing.")
  1379. }
  1380. do {
  1381. let status = Status(rawValue: errSecInvalidAttributeRandom)
  1382. XCTAssertEqual(status, .invalidAttributeRandom)
  1383. XCTAssertEqual(status?.description, "A random number attribute was not valid.")
  1384. }
  1385. do {
  1386. let status = Status(rawValue: errSecMissingAttributeRandom)
  1387. XCTAssertEqual(status, .missingAttributeRandom)
  1388. XCTAssertEqual(status?.description, "A random number attribute was missing.")
  1389. }
  1390. do {
  1391. let status = Status(rawValue: errSecInvalidAttributeSeed)
  1392. XCTAssertEqual(status, .invalidAttributeSeed)
  1393. XCTAssertEqual(status?.description, "A seed attribute was not valid.")
  1394. }
  1395. do {
  1396. let status = Status(rawValue: errSecMissingAttributeSeed)
  1397. XCTAssertEqual(status, .missingAttributeSeed)
  1398. XCTAssertEqual(status?.description, "A seed attribute was missing.")
  1399. }
  1400. do {
  1401. let status = Status(rawValue: errSecInvalidAttributePassphrase)
  1402. XCTAssertEqual(status, .invalidAttributePassphrase)
  1403. XCTAssertEqual(status?.description, "A passphrase attribute was not valid.")
  1404. }
  1405. do {
  1406. let status = Status(rawValue: errSecMissingAttributePassphrase)
  1407. XCTAssertEqual(status, .missingAttributePassphrase)
  1408. XCTAssertEqual(status?.description, "A passphrase attribute was missing.")
  1409. }
  1410. do {
  1411. let status = Status(rawValue: errSecInvalidAttributeKeyLength)
  1412. XCTAssertEqual(status, .invalidAttributeKeyLength)
  1413. XCTAssertEqual(status?.description, "A key length attribute was not valid.")
  1414. }
  1415. do {
  1416. let status = Status(rawValue: errSecMissingAttributeKeyLength)
  1417. XCTAssertEqual(status, .missingAttributeKeyLength)
  1418. XCTAssertEqual(status?.description, "A key length attribute was missing.")
  1419. }
  1420. do {
  1421. let status = Status(rawValue: errSecInvalidAttributeBlockSize)
  1422. XCTAssertEqual(status, .invalidAttributeBlockSize)
  1423. XCTAssertEqual(status?.description, "A block size attribute was not valid.")
  1424. }
  1425. do {
  1426. let status = Status(rawValue: errSecMissingAttributeBlockSize)
  1427. XCTAssertEqual(status, .missingAttributeBlockSize)
  1428. XCTAssertEqual(status?.description, "A block size attribute was missing.")
  1429. }
  1430. do {
  1431. let status = Status(rawValue: errSecInvalidAttributeOutputSize)
  1432. XCTAssertEqual(status, .invalidAttributeOutputSize)
  1433. XCTAssertEqual(status?.description, "An output size attribute was not valid.")
  1434. }
  1435. do {
  1436. let status = Status(rawValue: errSecMissingAttributeOutputSize)
  1437. XCTAssertEqual(status, .missingAttributeOutputSize)
  1438. XCTAssertEqual(status?.description, "An output size attribute was missing.")
  1439. }
  1440. do {
  1441. let status = Status(rawValue: errSecInvalidAttributeRounds)
  1442. XCTAssertEqual(status, .invalidAttributeRounds)
  1443. XCTAssertEqual(status?.description, "The number of rounds attribute was not valid.")
  1444. }
  1445. do {
  1446. let status = Status(rawValue: errSecMissingAttributeRounds)
  1447. XCTAssertEqual(status, .missingAttributeRounds)
  1448. XCTAssertEqual(status?.description, "The number of rounds attribute was missing.")
  1449. }
  1450. do {
  1451. let status = Status(rawValue: errSecInvalidAlgorithmParms)
  1452. XCTAssertEqual(status, .invalidAlgorithmParms)
  1453. XCTAssertEqual(status?.description, "An algorithm parameters attribute was not valid.")
  1454. }
  1455. do {
  1456. let status = Status(rawValue: errSecMissingAlgorithmParms)
  1457. XCTAssertEqual(status, .missingAlgorithmParms)
  1458. XCTAssertEqual(status?.description, "An algorithm parameters attribute was missing.")
  1459. }
  1460. do {
  1461. let status = Status(rawValue: errSecInvalidAttributeLabel)
  1462. XCTAssertEqual(status, .invalidAttributeLabel)
  1463. XCTAssertEqual(status?.description, "A label attribute was not valid.")
  1464. }
  1465. do {
  1466. let status = Status(rawValue: errSecMissingAttributeLabel)
  1467. XCTAssertEqual(status, .missingAttributeLabel)
  1468. XCTAssertEqual(status?.description, "A label attribute was missing.")
  1469. }
  1470. do {
  1471. let status = Status(rawValue: errSecInvalidAttributeKeyType)
  1472. XCTAssertEqual(status, .invalidAttributeKeyType)
  1473. XCTAssertEqual(status?.description, "A key type attribute was not valid.")
  1474. }
  1475. do {
  1476. let status = Status(rawValue: errSecMissingAttributeKeyType)
  1477. XCTAssertEqual(status, .missingAttributeKeyType)
  1478. XCTAssertEqual(status?.description, "A key type attribute was missing.")
  1479. }
  1480. do {
  1481. let status = Status(rawValue: errSecInvalidAttributeMode)
  1482. XCTAssertEqual(status, .invalidAttributeMode)
  1483. XCTAssertEqual(status?.description, "A mode attribute was not valid.")
  1484. }
  1485. do {
  1486. let status = Status(rawValue: errSecMissingAttributeMode)
  1487. XCTAssertEqual(status, .missingAttributeMode)
  1488. XCTAssertEqual(status?.description, "A mode attribute was missing.")
  1489. }
  1490. do {
  1491. let status = Status(rawValue: errSecInvalidAttributeEffectiveBits)
  1492. XCTAssertEqual(status, .invalidAttributeEffectiveBits)
  1493. XCTAssertEqual(status?.description, "An effective bits attribute was not valid.")
  1494. }
  1495. do {
  1496. let status = Status(rawValue: errSecMissingAttributeEffectiveBits)
  1497. XCTAssertEqual(status, .missingAttributeEffectiveBits)
  1498. XCTAssertEqual(status?.description, "An effective bits attribute was missing.")
  1499. }
  1500. do {
  1501. let status = Status(rawValue: errSecInvalidAttributeStartDate)
  1502. XCTAssertEqual(status, .invalidAttributeStartDate)
  1503. XCTAssertEqual(status?.description, "A start date attribute was not valid.")
  1504. }
  1505. do {
  1506. let status = Status(rawValue: errSecMissingAttributeStartDate)
  1507. XCTAssertEqual(status, .missingAttributeStartDate)
  1508. XCTAssertEqual(status?.description, "A start date attribute was missing.")
  1509. }
  1510. do {
  1511. let status = Status(rawValue: errSecInvalidAttributeEndDate)
  1512. XCTAssertEqual(status, .invalidAttributeEndDate)
  1513. XCTAssertEqual(status?.description, "An end date attribute was not valid.")
  1514. }
  1515. do {
  1516. let status = Status(rawValue: errSecMissingAttributeEndDate)
  1517. XCTAssertEqual(status, .missingAttributeEndDate)
  1518. XCTAssertEqual(status?.description, "An end date attribute was missing.")
  1519. }
  1520. do {
  1521. let status = Status(rawValue: errSecInvalidAttributeVersion)
  1522. XCTAssertEqual(status, .invalidAttributeVersion)
  1523. XCTAssertEqual(status?.description, "A version attribute was not valid.")
  1524. }
  1525. do {
  1526. let status = Status(rawValue: errSecMissingAttributeVersion)
  1527. XCTAssertEqual(status, .missingAttributeVersion)
  1528. XCTAssertEqual(status?.description, "A version attribute was missing.")
  1529. }
  1530. do {
  1531. let status = Status(rawValue: errSecInvalidAttributePrime)
  1532. XCTAssertEqual(status, .invalidAttributePrime)
  1533. XCTAssertEqual(status?.description, "A prime attribute was not valid.")
  1534. }
  1535. do {
  1536. let status = Status(rawValue: errSecMissingAttributePrime)
  1537. XCTAssertEqual(status, .missingAttributePrime)
  1538. XCTAssertEqual(status?.description, "A prime attribute was missing.")
  1539. }
  1540. do {
  1541. let status = Status(rawValue: errSecInvalidAttributeBase)
  1542. XCTAssertEqual(status, .invalidAttributeBase)
  1543. XCTAssertEqual(status?.description, "A base attribute was not valid.")
  1544. }
  1545. do {
  1546. let status = Status(rawValue: errSecMissingAttributeBase)
  1547. XCTAssertEqual(status, .missingAttributeBase)
  1548. XCTAssertEqual(status?.description, "A base attribute was missing.")
  1549. }
  1550. do {
  1551. let status = Status(rawValue: errSecInvalidAttributeSubprime)
  1552. XCTAssertEqual(status, .invalidAttributeSubprime)
  1553. XCTAssertEqual(status?.description, "A subprime attribute was not valid.")
  1554. }
  1555. do {
  1556. let status = Status(rawValue: errSecMissingAttributeSubprime)
  1557. XCTAssertEqual(status, .missingAttributeSubprime)
  1558. XCTAssertEqual(status?.description, "A subprime attribute was missing.")
  1559. }
  1560. do {
  1561. let status = Status(rawValue: errSecInvalidAttributeIterationCount)
  1562. XCTAssertEqual(status, .invalidAttributeIterationCount)
  1563. XCTAssertEqual(status?.description, "An iteration count attribute was not valid.")
  1564. }
  1565. do {
  1566. let status = Status(rawValue: errSecMissingAttributeIterationCount)
  1567. XCTAssertEqual(status, .missingAttributeIterationCount)
  1568. XCTAssertEqual(status?.description, "An iteration count attribute was missing.")
  1569. }
  1570. do {
  1571. let status = Status(rawValue: errSecInvalidAttributeDLDBHandle)
  1572. XCTAssertEqual(status, .invalidAttributeDLDBHandle)
  1573. XCTAssertEqual(status?.description, "A database handle attribute was not valid.")
  1574. }
  1575. do {
  1576. let status = Status(rawValue: errSecMissingAttributeDLDBHandle)
  1577. XCTAssertEqual(status, .missingAttributeDLDBHandle)
  1578. XCTAssertEqual(status?.description, "A database handle attribute was missing.")
  1579. }
  1580. do {
  1581. let status = Status(rawValue: errSecInvalidAttributeAccessCredentials)
  1582. XCTAssertEqual(status, .invalidAttributeAccessCredentials)
  1583. XCTAssertEqual(status?.description, "An access credentials attribute was not valid.")
  1584. }
  1585. do {
  1586. let status = Status(rawValue: errSecMissingAttributeAccessCredentials)
  1587. XCTAssertEqual(status, .missingAttributeAccessCredentials)
  1588. XCTAssertEqual(status?.description, "An access credentials attribute was missing.")
  1589. }
  1590. do {
  1591. let status = Status(rawValue: errSecInvalidAttributePublicKeyFormat)
  1592. XCTAssertEqual(status, .invalidAttributePublicKeyFormat)
  1593. XCTAssertEqual(status?.description, "A public key format attribute was not valid.")
  1594. }
  1595. do {
  1596. let status = Status(rawValue: errSecMissingAttributePublicKeyFormat)
  1597. XCTAssertEqual(status, .missingAttributePublicKeyFormat)
  1598. XCTAssertEqual(status?.description, "A public key format attribute was missing.")
  1599. }
  1600. do {
  1601. let status = Status(rawValue: errSecInvalidAttributePrivateKeyFormat)
  1602. XCTAssertEqual(status, .invalidAttributePrivateKeyFormat)
  1603. XCTAssertEqual(status?.description, "A private key format attribute was not valid.")
  1604. }
  1605. do {
  1606. let status = Status(rawValue: errSecMissingAttributePrivateKeyFormat)
  1607. XCTAssertEqual(status, .missingAttributePrivateKeyFormat)
  1608. XCTAssertEqual(status?.description, "A private key format attribute was missing.")
  1609. }
  1610. do {
  1611. let status = Status(rawValue: errSecInvalidAttributeSymmetricKeyFormat)
  1612. XCTAssertEqual(status, .invalidAttributeSymmetricKeyFormat)
  1613. XCTAssertEqual(status?.description, "A symmetric key format attribute was not valid.")
  1614. }
  1615. do {
  1616. let status = Status(rawValue: errSecMissingAttributeSymmetricKeyFormat)
  1617. XCTAssertEqual(status, .missingAttributeSymmetricKeyFormat)
  1618. XCTAssertEqual(status?.description, "A symmetric key format attribute was missing.")
  1619. }
  1620. do {
  1621. let status = Status(rawValue: errSecInvalidAttributeWrappedKeyFormat)
  1622. XCTAssertEqual(status, .invalidAttributeWrappedKeyFormat)
  1623. XCTAssertEqual(status?.description, "A wrapped key format attribute was not valid.")
  1624. }
  1625. do {
  1626. let status = Status(rawValue: errSecMissingAttributeWrappedKeyFormat)
  1627. XCTAssertEqual(status, .missingAttributeWrappedKeyFormat)
  1628. XCTAssertEqual(status?.description, "A wrapped key format attribute was missing.")
  1629. }
  1630. do {
  1631. let status = Status(rawValue: errSecStagedOperationInProgress)
  1632. XCTAssertEqual(status, .stagedOperationInProgress)
  1633. XCTAssertEqual(status?.description, "A staged operation is in progress.")
  1634. }
  1635. do {
  1636. let status = Status(rawValue: errSecStagedOperationNotStarted)
  1637. XCTAssertEqual(status, .stagedOperationNotStarted)
  1638. XCTAssertEqual(status?.description, "A staged operation was not started.")
  1639. }
  1640. do {
  1641. let status = Status(rawValue: errSecVerifyFailed)
  1642. XCTAssertEqual(status, .verifyFailed)
  1643. XCTAssertEqual(status?.description, "A cryptographic verification failure has occurred.")
  1644. }
  1645. do {
  1646. let status = Status(rawValue: errSecQuerySizeUnknown)
  1647. XCTAssertEqual(status, .querySizeUnknown)
  1648. XCTAssertEqual(status?.description, "The query size is unknown.")
  1649. }
  1650. do {
  1651. let status = Status(rawValue: errSecBlockSizeMismatch)
  1652. XCTAssertEqual(status, .blockSizeMismatch)
  1653. XCTAssertEqual(status?.description, "A block size mismatch occurred.")
  1654. }
  1655. do {
  1656. let status = Status(rawValue: errSecPublicKeyInconsistent)
  1657. XCTAssertEqual(status, .publicKeyInconsistent)
  1658. XCTAssertEqual(status?.description, "The public key was inconsistent.")
  1659. }
  1660. do {
  1661. let status = Status(rawValue: errSecDeviceVerifyFailed)
  1662. XCTAssertEqual(status, .deviceVerifyFailed)
  1663. XCTAssertEqual(status?.description, "A device verification failure has occurred.")
  1664. }
  1665. do {
  1666. let status = Status(rawValue: errSecInvalidLoginName)
  1667. XCTAssertEqual(status, .invalidLoginName)
  1668. XCTAssertEqual(status?.description, "An invalid login name was detected.")
  1669. }
  1670. do {
  1671. let status = Status(rawValue: errSecAlreadyLoggedIn)
  1672. XCTAssertEqual(status, .alreadyLoggedIn)
  1673. XCTAssertEqual(status?.description, "The user is already logged in.")
  1674. }
  1675. do {
  1676. let status = Status(rawValue: errSecInvalidDigestAlgorithm)
  1677. XCTAssertEqual(status, .invalidDigestAlgorithm)
  1678. XCTAssertEqual(status?.description, "An invalid digest algorithm was detected.")
  1679. }
  1680. do {
  1681. let status = Status(rawValue: errSecInvalidCRLGroup)
  1682. XCTAssertEqual(status, .invalidCRLGroup)
  1683. XCTAssertEqual(status?.description, "An invalid CRL group was detected.")
  1684. }
  1685. do {
  1686. let status = Status(rawValue: errSecCertificateCannotOperate)
  1687. XCTAssertEqual(status, .certificateCannotOperate)
  1688. XCTAssertEqual(status?.description, "The certificate cannot operate.")
  1689. }
  1690. do {
  1691. let status = Status(rawValue: errSecCertificateExpired)
  1692. XCTAssertEqual(status, .certificateExpired)
  1693. XCTAssertEqual(status?.description, "An expired certificate was detected.")
  1694. }
  1695. do {
  1696. let status = Status(rawValue: errSecCertificateNotValidYet)
  1697. XCTAssertEqual(status, .certificateNotValidYet)
  1698. XCTAssertEqual(status?.description, "The certificate is not yet valid.")
  1699. }
  1700. do {
  1701. let status = Status(rawValue: errSecCertificateRevoked)
  1702. XCTAssertEqual(status, .certificateRevoked)
  1703. XCTAssertEqual(status?.description, "The certificate was revoked.")
  1704. }
  1705. do {
  1706. let status = Status(rawValue: errSecCertificateSuspended)
  1707. XCTAssertEqual(status, .certificateSuspended)
  1708. XCTAssertEqual(status?.description, "The certificate was suspended.")
  1709. }
  1710. do {
  1711. let status = Status(rawValue: errSecInsufficientCredentials)
  1712. XCTAssertEqual(status, .insufficientCredentials)
  1713. XCTAssertEqual(status?.description, "Insufficient credentials were detected.")
  1714. }
  1715. do {
  1716. let status = Status(rawValue: errSecInvalidAction)
  1717. XCTAssertEqual(status, .invalidAction)
  1718. XCTAssertEqual(status?.description, "The action was not valid.")
  1719. }
  1720. do {
  1721. let status = Status(rawValue: errSecInvalidAuthority)
  1722. XCTAssertEqual(status, .invalidAuthority)
  1723. XCTAssertEqual(status?.description, "The authority was not valid.")
  1724. }
  1725. do {
  1726. let status = Status(rawValue: errSecVerifyActionFailed)
  1727. XCTAssertEqual(status, .verifyActionFailed)
  1728. XCTAssertEqual(status?.description, "A verify action has failed.")
  1729. }
  1730. do {
  1731. let status = Status(rawValue: errSecInvalidCertAuthority)
  1732. XCTAssertEqual(status, .invalidCertAuthority)
  1733. XCTAssertEqual(status?.description, "The certificate authority was not valid.")
  1734. }
  1735. do {
  1736. let status = Status(rawValue: errSecInvaldCRLAuthority)
  1737. XCTAssertEqual(status, .invaldCRLAuthority)
  1738. XCTAssertEqual(status?.description, "The CRL authority was not valid.")
  1739. }
  1740. do {
  1741. let status = Status(rawValue: errSecInvalidCRLEncoding)
  1742. XCTAssertEqual(status, .invalidCRLEncoding)
  1743. XCTAssertEqual(status?.description, "The CRL encoding was not valid.")
  1744. }
  1745. do {
  1746. let status = Status(rawValue: errSecInvalidCRLType)
  1747. XCTAssertEqual(status, .invalidCRLType)
  1748. XCTAssertEqual(status?.description, "The CRL type was not valid.")
  1749. }
  1750. do {
  1751. let status = Status(rawValue: errSecInvalidCRL)
  1752. XCTAssertEqual(status, .invalidCRL)
  1753. XCTAssertEqual(status?.description, "The CRL was not valid.")
  1754. }
  1755. do {
  1756. let status = Status(rawValue: errSecInvalidFormType)
  1757. XCTAssertEqual(status, .invalidFormType)
  1758. XCTAssertEqual(status?.description, "The form type was not valid.")
  1759. }
  1760. do {
  1761. let status = Status(rawValue: errSecInvalidID)
  1762. XCTAssertEqual(status, .invalidID)
  1763. XCTAssertEqual(status?.description, "The ID was not valid.")
  1764. }
  1765. do {
  1766. let status = Status(rawValue: errSecInvalidIdentifier)
  1767. XCTAssertEqual(status, .invalidIdentifier)
  1768. XCTAssertEqual(status?.description, "The identifier was not valid.")
  1769. }
  1770. do {
  1771. let status = Status(rawValue: errSecInvalidIndex)
  1772. XCTAssertEqual(status, .invalidIndex)
  1773. XCTAssertEqual(status?.description, "The index was not valid.")
  1774. }
  1775. do {
  1776. let status = Status(rawValue: errSecInvalidPolicyIdentifiers)
  1777. XCTAssertEqual(status, .invalidPolicyIdentifiers)
  1778. XCTAssertEqual(status?.description, "The policy identifiers are not valid.")
  1779. }
  1780. do {
  1781. let status = Status(rawValue: errSecInvalidTimeString)
  1782. XCTAssertEqual(status, .invalidTimeString)
  1783. XCTAssertEqual(status?.description, "The time specified was not valid.")
  1784. }
  1785. do {
  1786. let status = Status(rawValue: errSecInvalidReason)
  1787. XCTAssertEqual(status, .invalidReason)
  1788. XCTAssertEqual(status?.description, "The trust policy reason was not valid.")
  1789. }
  1790. do {
  1791. let status = Status(rawValue: errSecInvalidRequestInputs)
  1792. XCTAssertEqual(status, .invalidRequestInputs)
  1793. XCTAssertEqual(status?.description, "The request inputs are not valid.")
  1794. }
  1795. do {
  1796. let status = Status(rawValue: errSecInvalidResponseVector)
  1797. XCTAssertEqual(status, .invalidResponseVector)
  1798. XCTAssertEqual(status?.description, "The response vector was not valid.")
  1799. }
  1800. do {
  1801. let status = Status(rawValue: errSecInvalidStopOnPolicy)
  1802. XCTAssertEqual(status, .invalidStopOnPolicy)
  1803. XCTAssertEqual(status?.description, "The stop-on policy was not valid.")
  1804. }
  1805. do {
  1806. let status = Status(rawValue: errSecInvalidTuple)
  1807. XCTAssertEqual(status, .invalidTuple)
  1808. XCTAssertEqual(status?.description, "The tuple was not valid.")
  1809. }
  1810. do {
  1811. let status = Status(rawValue: errSecMultipleValuesUnsupported)
  1812. XCTAssertEqual(status, .multipleValuesUnsupported)
  1813. XCTAssertEqual(status?.description, "Multiple values are not supported.")
  1814. }
  1815. do {
  1816. let status = Status(rawValue: errSecNotTrusted)
  1817. XCTAssertEqual(status, .notTrusted)
  1818. XCTAssertEqual(status?.description, "The trust policy was not trusted.")
  1819. }
  1820. do {
  1821. let status = Status(rawValue: errSecNoDefaultAuthority)
  1822. XCTAssertEqual(status, .noDefaultAuthority)
  1823. XCTAssertEqual(status?.description, "No default authority was detected.")
  1824. }
  1825. do {
  1826. let status = Status(rawValue: errSecRejectedForm)
  1827. XCTAssertEqual(status, .rejectedForm)
  1828. XCTAssertEqual(status?.description, "The trust policy had a rejected form.")
  1829. }
  1830. do {
  1831. let status = Status(rawValue: errSecRequestLost)
  1832. XCTAssertEqual(status, .requestLost)
  1833. XCTAssertEqual(status?.description, "The request was lost.")
  1834. }
  1835. do {
  1836. let status = Status(rawValue: errSecRequestRejected)
  1837. XCTAssertEqual(status, .requestRejected)
  1838. XCTAssertEqual(status?.description, "The request was rejected.")
  1839. }
  1840. do {
  1841. let status = Status(rawValue: errSecUnsupportedAddressType)
  1842. XCTAssertEqual(status, .unsupportedAddressType)
  1843. XCTAssertEqual(status?.description, "The address type is not supported.")
  1844. }
  1845. do {
  1846. let status = Status(rawValue: errSecUnsupportedService)
  1847. XCTAssertEqual(status, .unsupportedService)
  1848. XCTAssertEqual(status?.description, "The service is not supported.")
  1849. }
  1850. do {
  1851. let status = Status(rawValue: errSecInvalidTupleGroup)
  1852. XCTAssertEqual(status, .invalidTupleGroup)
  1853. XCTAssertEqual(status?.description, "The tuple group was not valid.")
  1854. }
  1855. do {
  1856. let status = Status(rawValue: errSecInvalidBaseACLs)
  1857. XCTAssertEqual(status, .invalidBaseACLs)
  1858. XCTAssertEqual(status?.description, "The base ACLs are not valid.")
  1859. }
  1860. do {
  1861. let status = Status(rawValue: errSecInvalidTupleCredendtials)
  1862. XCTAssertEqual(status, .invalidTupleCredendtials)
  1863. XCTAssertEqual(status?.description, "The tuple credentials are not valid.")
  1864. }
  1865. do {
  1866. let status = Status(rawValue: errSecInvalidEncoding)
  1867. XCTAssertEqual(status, .invalidEncoding)
  1868. XCTAssertEqual(status?.description, "The encoding was not valid.")
  1869. }
  1870. do {
  1871. let status = Status(rawValue: errSecInvalidValidityPeriod)
  1872. XCTAssertEqual(status, .invalidValidityPeriod)
  1873. XCTAssertEqual(status?.description, "The validity period was not valid.")
  1874. }
  1875. do {
  1876. let status = Status(rawValue: errSecInvalidRequestor)
  1877. XCTAssertEqual(status, .invalidRequestor)
  1878. XCTAssertEqual(status?.description, "The requestor was not valid.")
  1879. }
  1880. do {
  1881. let status = Status(rawValue: errSecRequestDescriptor)
  1882. XCTAssertEqual(status, .requestDescriptor)
  1883. XCTAssertEqual(status?.description, "The request descriptor was not valid.")
  1884. }
  1885. do {
  1886. let status = Status(rawValue: errSecInvalidBundleInfo)
  1887. XCTAssertEqual(status, .invalidBundleInfo)
  1888. XCTAssertEqual(status?.description, "The bundle information was not valid.")
  1889. }
  1890. do {
  1891. let status = Status(rawValue: errSecInvalidCRLIndex)
  1892. XCTAssertEqual(status, .invalidCRLIndex)
  1893. XCTAssertEqual(status?.description, "The CRL index was not valid.")
  1894. }
  1895. do {
  1896. let status = Status(rawValue: errSecNoFieldValues)
  1897. XCTAssertEqual(status, .noFieldValues)
  1898. XCTAssertEqual(status?.description, "No field values were detected.")
  1899. }
  1900. do {
  1901. let status = Status(rawValue: errSecUnsupportedFieldFormat)
  1902. XCTAssertEqual(status, .unsupportedFieldFormat)
  1903. XCTAssertEqual(status?.description, "The field format is not supported.")
  1904. }
  1905. do {
  1906. let status = Status(rawValue: errSecUnsupportedIndexInfo)
  1907. XCTAssertEqual(status, .unsupportedIndexInfo)
  1908. XCTAssertEqual(status?.description, "The index information is not supported.")
  1909. }
  1910. do {
  1911. let status = Status(rawValue: errSecUnsupportedLocality)
  1912. XCTAssertEqual(status, .unsupportedLocality)
  1913. XCTAssertEqual(status?.description, "The locality is not supported.")
  1914. }
  1915. do {
  1916. let status = Status(rawValue: errSecUnsupportedNumAttributes)
  1917. XCTAssertEqual(status, .unsupportedNumAttributes)
  1918. XCTAssertEqual(status?.description, "The number of attributes is not supported.")
  1919. }
  1920. do {
  1921. let status = Status(rawValue: errSecUnsupportedNumIndexes)
  1922. XCTAssertEqual(status, .unsupportedNumIndexes)
  1923. XCTAssertEqual(status?.description, "The number of indexes is not supported.")
  1924. }
  1925. do {
  1926. let status = Status(rawValue: errSecUnsupportedNumRecordTypes)
  1927. XCTAssertEqual(status, .unsupportedNumRecordTypes)
  1928. XCTAssertEqual(status?.description, "The number of record types is not supported.")
  1929. }
  1930. do {
  1931. let status = Status(rawValue: errSecFieldSpecifiedMultiple)
  1932. XCTAssertEqual(status, .fieldSpecifiedMultiple)
  1933. XCTAssertEqual(status?.description, "Too many fields were specified.")
  1934. }
  1935. do {
  1936. let status = Status(rawValue: errSecIncompatibleFieldFormat)
  1937. XCTAssertEqual(status, .incompatibleFieldFormat)
  1938. XCTAssertEqual(status?.description, "The field format was incompatible.")
  1939. }
  1940. do {
  1941. let status = Status(rawValue: errSecInvalidParsingModule)
  1942. XCTAssertEqual(status, .invalidParsingModule)
  1943. XCTAssertEqual(status?.description, "The parsing module was not valid.")
  1944. }
  1945. do {
  1946. let status = Status(rawValue: errSecDatabaseLocked)
  1947. XCTAssertEqual(status, .databaseLocked)
  1948. XCTAssertEqual(status?.description, "The database is locked.")
  1949. }
  1950. do {
  1951. let status = Status(rawValue: errSecDatastoreIsOpen)
  1952. XCTAssertEqual(status, .datastoreIsOpen)
  1953. XCTAssertEqual(status?.description, "The data store is open.")
  1954. }
  1955. do {
  1956. let status = Status(rawValue: errSecMissingValue)
  1957. XCTAssertEqual(status, .missingValue)
  1958. XCTAssertEqual(status?.description, "A missing value was detected.")
  1959. }
  1960. do {
  1961. let status = Status(rawValue: errSecUnsupportedQueryLimits)
  1962. XCTAssertEqual(status, .unsupportedQueryLimits)
  1963. XCTAssertEqual(status?.description, "The query limits are not supported.")
  1964. }
  1965. do {
  1966. let status = Status(rawValue: errSecUnsupportedNumSelectionPreds)
  1967. XCTAssertEqual(status, .unsupportedNumSelectionPreds)
  1968. XCTAssertEqual(status?.description, "The number of selection predicates is not supported.")
  1969. }
  1970. do {
  1971. let status = Status(rawValue: errSecUnsupportedOperator)
  1972. XCTAssertEqual(status, .unsupportedOperator)
  1973. XCTAssertEqual(status?.description, "The operator is not supported.")
  1974. }
  1975. do {
  1976. let status = Status(rawValue: errSecInvalidDBLocation)
  1977. XCTAssertEqual(status, .invalidDBLocation)
  1978. XCTAssertEqual(status?.description, "The database location is not valid.")
  1979. }
  1980. do {
  1981. let status = Status(rawValue: errSecInvalidAccessRequest)
  1982. XCTAssertEqual(status, .invalidAccessRequest)
  1983. XCTAssertEqual(status?.description, "The access request is not valid.")
  1984. }
  1985. do {
  1986. let status = Status(rawValue: errSecInvalidIndexInfo)
  1987. XCTAssertEqual(status, .invalidIndexInfo)
  1988. XCTAssertEqual(status?.description, "The index information is not valid.")
  1989. }
  1990. do {
  1991. let status = Status(rawValue: errSecInvalidNewOwner)
  1992. XCTAssertEqual(status, .invalidNewOwner)
  1993. XCTAssertEqual(status?.description, "The new owner is not valid.")
  1994. }
  1995. do {
  1996. let status = Status(rawValue: errSecInvalidModifyMode)
  1997. XCTAssertEqual(status, .invalidModifyMode)
  1998. XCTAssertEqual(status?.description, "The modify mode is not valid.")
  1999. }
  2000. do {
  2001. let status = Status(rawValue: errSecMissingRequiredExtension)
  2002. XCTAssertEqual(status, .missingRequiredExtension)
  2003. XCTAssertEqual(status?.description, "A required certificate extension is missing.")
  2004. }
  2005. do {
  2006. let status = Status(rawValue: errSecExtendedKeyUsageNotCritical)
  2007. XCTAssertEqual(status, .extendedKeyUsageNotCritical)
  2008. XCTAssertEqual(status?.description, "The extended key usage extension was not marked critical.")
  2009. }
  2010. do {
  2011. let status = Status(rawValue: errSecTimestampMissing)
  2012. XCTAssertEqual(status, .timestampMissing)
  2013. XCTAssertEqual(status?.description, "A timestamp was expected but was not found.")
  2014. }
  2015. do {
  2016. let status = Status(rawValue: errSecTimestampInvalid)
  2017. XCTAssertEqual(status, .timestampInvalid)
  2018. XCTAssertEqual(status?.description, "The timestamp was not valid.")
  2019. }
  2020. do {
  2021. let status = Status(rawValue: errSecTimestampNotTrusted)
  2022. XCTAssertEqual(status, .timestampNotTrusted)
  2023. XCTAssertEqual(status?.description, "The timestamp was not trusted.")
  2024. }
  2025. do {
  2026. let status = Status(rawValue: errSecTimestampServiceNotAvailable)
  2027. XCTAssertEqual(status, .timestampServiceNotAvailable)
  2028. XCTAssertEqual(status?.description, "The timestamp service is not available.")
  2029. }
  2030. do {
  2031. let status = Status(rawValue: errSecTimestampBadAlg)
  2032. XCTAssertEqual(status, .timestampBadAlg)
  2033. XCTAssertEqual(status?.description, "An unrecognized or unsupported Algorithm Identifier in timestamp.")
  2034. }
  2035. do {
  2036. let status = Status(rawValue: errSecTimestampBadRequest)
  2037. XCTAssertEqual(status, .timestampBadRequest)
  2038. XCTAssertEqual(status?.description, "The timestamp transaction is not permitted or supported.")
  2039. }
  2040. do {
  2041. let status = Status(rawValue: errSecTimestampBadDataFormat)
  2042. XCTAssertEqual(status, .timestampBadDataFormat)
  2043. XCTAssertEqual(status?.description, "The timestamp data submitted has the wrong format.")
  2044. }
  2045. do {
  2046. let status = Status(rawValue: errSecTimestampTimeNotAvailable)
  2047. XCTAssertEqual(status, .timestampTimeNotAvailable)
  2048. XCTAssertEqual(status?.description, "The time source for the Timestamp Authority is not available.")
  2049. }
  2050. do {
  2051. let status = Status(rawValue: errSecTimestampUnacceptedPolicy)
  2052. XCTAssertEqual(status, .timestampUnacceptedPolicy)
  2053. XCTAssertEqual(status?.description, "The requested policy is not supported by the Timestamp Authority.")
  2054. }
  2055. do {
  2056. let status = Status(rawValue: errSecTimestampUnacceptedExtension)
  2057. XCTAssertEqual(status, .timestampUnacceptedExtension)
  2058. XCTAssertEqual(status?.description, "The requested extension is not supported by the Timestamp Authority.")
  2059. }
  2060. do {
  2061. let status = Status(rawValue: errSecTimestampAddInfoNotAvailable)
  2062. XCTAssertEqual(status, .timestampAddInfoNotAvailable)
  2063. XCTAssertEqual(status?.description, "The additional information requested is not available.")
  2064. }
  2065. do {
  2066. let status = Status(rawValue: errSecTimestampSystemFailure)
  2067. XCTAssertEqual(status, .timestampSystemFailure)
  2068. XCTAssertEqual(status?.description, "The timestamp request cannot be handled due to system failure.")
  2069. }
  2070. do {
  2071. let status = Status(rawValue: errSecSigningTimeMissing)
  2072. XCTAssertEqual(status, .signingTimeMissing)
  2073. XCTAssertEqual(status?.description, "A signing time was expected but was not found.")
  2074. }
  2075. do {
  2076. let status = Status(rawValue: errSecTimestampRejection)
  2077. XCTAssertEqual(status, .timestampRejection)
  2078. XCTAssertEqual(status?.description, "A timestamp transaction was rejected.")
  2079. }
  2080. do {
  2081. let status = Status(rawValue: errSecTimestampWaiting)
  2082. XCTAssertEqual(status, .timestampWaiting)
  2083. XCTAssertEqual(status?.description, "A timestamp transaction is waiting.")
  2084. }
  2085. do {
  2086. let status = Status(rawValue: errSecTimestampRevocationWarning)
  2087. XCTAssertEqual(status, .timestampRevocationWarning)
  2088. XCTAssertEqual(status?.description, "A timestamp authority revocation warning was issued.")
  2089. }
  2090. do {
  2091. let status = Status(rawValue: errSecTimestampRevocationNotification)
  2092. XCTAssertEqual(status, .timestampRevocationNotification)
  2093. XCTAssertEqual(status?.description, "A timestamp authority revocation notification was issued.")
  2094. }
  2095. #endif
  2096. }
  2097. }