Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2112 lines
70 KiB

  1. //+--------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1996 - 1999
  5. //
  6. // File: dbtable.cpp
  7. //
  8. // Contents: Cert Server Database interface implementation
  9. //
  10. //---------------------------------------------------------------------------
  11. #include <pch.cpp>
  12. #pragma hdrstop
  13. #include "csprop.h"
  14. // To Add a column to one of these tables:
  15. // 1) Add a wszPROP<COLNAME> #define to ..\include\csprop.h and run mkcsinc.bat
  16. // 2) Add a IDS_COLUMN_<COLNAME> #define to ..\certcli\resource.h and add the
  17. // display name to ..\certcli\certcli.rc. Add an entry to g_aColTable in
  18. // ..\certcli\column.cpp that maps wszPROP<COLNAME> to IDS_COLUMN_<COLNAME>.
  19. // 3) Add a DT?_<COLNAME> to the appropriate list of #defines in dbtable.h.
  20. // Renumber subsequent #defines if inserting into the table.
  21. // Change DT?_MAX.
  22. // Add a #define sz<COLNAME> "$ColName" ansi internal column name.
  23. // If the column is to be indexed, add a #define sz<TABLE>_<COLNAME>
  24. // "$<Table><ColName>Index"
  25. // The internal names of text columns and their indexes must begin with '$'.
  26. // The internal names of computed DWORD columns must begin with '?'.
  27. // 4) Find a similar column type in the same table array (g_adt<Table>) in
  28. // dbtable.cpp, and copy the entry. If inserting, fix subsequent
  29. // #if (DT?_<xxx> != CONSTANT) expressions to match the dbtable.h changes.
  30. // Fix the #if (DT?_MAX != CONSTANT) expression.
  31. // For the new g_adt<Table> entry, use NULL for pszIndexName if unindexed.
  32. //
  33. // Running the new certdb.dll on a machine will automatically create the new
  34. // column(s) and indexes, and leave them empty.
  35. //
  36. // If DBTF_COLUMNRENAMED is set, the old column name is appended to
  37. // pszFieldName. When starting the database, if the old column exists, the
  38. // old column data is copied to the new column FOR EVERY ROW. Upon successful
  39. // completion, the old column is deleted.
  40. //
  41. // Special case processing exists to convert ansi text column data to Unicode.
  42. // Special case processing exists for a few missing columns: Key Length is
  43. // computed, for example.
  44. //
  45. // If DBTF_INDEXRENAMED is set, the old index name is appended to pszIndexName.
  46. // When starting the database, if the old index exists, it is deleted.
  47. //---------------------------------------------------------------------------
  48. //
  49. // Requests Table:
  50. //
  51. //---------------------------------------------------------------------------
  52. DBTABLE g_adtRequests[] =
  53. {
  54. #if (DTR_REQUESTID != 0)
  55. #error -- bad DTR_REQUESTID index
  56. #endif
  57. { // ColumnType: DWORD
  58. wszPROPREQUESTREQUESTID, // pwszPropName
  59. NULL, // pwszPropNameObjId
  60. DBTF_INDEXPRIMARY, // dwFlags
  61. sizeof(LONG), // dwcbMax
  62. TABLE_REQUESTS, // dwTable
  63. szREQUESTID, // pszFieldName
  64. szREQUEST_REQUESTIDINDEX, // pszIndexName
  65. 0, // dbcolumnMax
  66. JET_bitColumnFixed | JET_bitColumnAutoincrement, // dbgrbit
  67. JET_coltypLong, // dbcoltyp
  68. 0 // dbcolumnid
  69. },
  70. #if (DTR_REQUESTRAWREQUEST != 1)
  71. #error -- bad DTR_REQUESTRAWREQUEST index
  72. #endif
  73. { // ColumnType: BLOB
  74. wszPROPREQUESTRAWREQUEST, // pwszPropName
  75. NULL, // pwszPropNameObjId
  76. 0, // dwFlags
  77. CB_DBMAXRAWREQUEST, // dwcbMax
  78. TABLE_REQUESTS, // dwTable
  79. szRAWREQUEST, // pszFieldName
  80. NULL, // pszIndexName
  81. CB_DBMAXRAWREQUEST, // dbcolumnMax
  82. 0, // dbgrbit
  83. JET_coltypLongBinary, // dbcoltyp
  84. 0 // dbcolumnid
  85. },
  86. #if (DTR_REQUESTRAWARCHIVEDKEY != 2)
  87. #error -- bad DTR_REQUESTRAWARCHIVEDKEY index
  88. #endif
  89. { // ColumnType: BLOB
  90. wszPROPREQUESTRAWARCHIVEDKEY, // pwszPropName
  91. NULL, // pwszPropNameObjId
  92. 0, // dwFlags
  93. CB_DBMAXRAWREQUEST, // dwcbMax
  94. TABLE_REQUESTS, // dwTable
  95. szRAWARCHIVEDKEY, // pszFieldName
  96. NULL, // pszIndexName
  97. CB_DBMAXRAWREQUEST, // dbcolumnMax
  98. 0, // dbgrbit
  99. JET_coltypLongBinary, // dbcoltyp
  100. 0 // dbcolumnid
  101. },
  102. #if (DTR_REQUESTKEYRECOVERYHASHES != 3)
  103. #error -- bad DTR_REQUESTKEYRECOVERYHASHES index
  104. #endif
  105. { // ColumnType: STRING
  106. wszPROPREQUESTKEYRECOVERYHASHES, // pwszPropName
  107. NULL, // pwszPropNameObjId
  108. 0, // dwFlags
  109. CB_DBMAXTEXT_MEDIUM, // dwcbMax
  110. TABLE_REQUESTS, // dwTable
  111. szKEYRECOVERYHASHES, // pszFieldName
  112. NULL, // pszIndexName
  113. CB_DBMAXTEXT_MEDIUM, // dbcolumnMax
  114. 0, // dbgrbit
  115. JET_coltypLongText, // dbcoltyp
  116. 0 // dbcolumnid
  117. },
  118. #if (DTR_REQUESTRAWOLDCERTIFICATE != 4)
  119. #error -- bad DTR_REQUESTRAWOLDCERTIFICATE index
  120. #endif
  121. { // ColumnType: BLOB
  122. wszPROPREQUESTRAWOLDCERTIFICATE, // pwszPropName
  123. NULL, // pwszPropNameObjId
  124. 0, // dwFlags
  125. CB_DBMAXRAWCERTIFICATE, // dwcbMax
  126. TABLE_REQUESTS, // dwTable
  127. szRAWOLDCERTIFICATE, // pszFieldName
  128. NULL, // pszIndexName
  129. CB_DBMAXRAWCERTIFICATE, // dbcolumnMax
  130. 0, // dbgrbit
  131. JET_coltypLongBinary, // dbcoltyp
  132. 0 // dbcolumnid
  133. },
  134. #if (DTR_REQUESTATTRIBUTES != 5)
  135. #error -- bad DTR_REQUESTATTRIBUTES index
  136. #endif
  137. { // ColumnType: STRING
  138. wszPROPREQUESTATTRIBUTES, // pwszPropName
  139. NULL, // pwszPropNameObjId
  140. 0, // dwFlags
  141. CB_DBMAXTEXT_ATTRSTRING, // dwcbMax
  142. TABLE_REQUESTS, // dwTable
  143. szREQUESTATTRIBUTES, // pszFieldName
  144. NULL, // pszIndexName
  145. CB_DBMAXTEXT_ATTRSTRING, // dbcolumnMax
  146. 0, // dbgrbit
  147. JET_coltypLongText, // dbcoltyp
  148. 0 // dbcolumnid
  149. },
  150. #if (DTR_REQUESTTYPE != 6)
  151. #error -- bad DTR_REQUESTTYPE index
  152. #endif
  153. { // ColumnType: DWORD
  154. wszPROPREQUESTTYPE, // pwszPropName
  155. NULL, // pwszPropNameObjId
  156. 0, // dwFlags
  157. sizeof(LONG), // dwcbMax
  158. TABLE_REQUESTS, // dwTable
  159. szREQUESTTYPE, // pszFieldName
  160. NULL, // pszIndexName
  161. 0, // dbcolumnMax
  162. JET_bitColumnFixed, // dbgrbit
  163. JET_coltypLong, // dbcoltyp
  164. 0 // dbcolumnid
  165. },
  166. #if (DTR_REQUESTFLAGS != 7)
  167. #error -- bad DTR_REQUESTFLAGS index
  168. #endif
  169. { // ColumnType: DWORD
  170. wszPROPREQUESTFLAGS, // pwszPropName
  171. NULL, // pwszPropNameObjId
  172. 0, // dwFlags
  173. sizeof(LONG), // dwcbMax
  174. TABLE_REQUESTS, // dwTable
  175. szREQUESTFLAGS, // pszFieldName
  176. NULL, // pszIndexName
  177. 0, // dbcolumnMax
  178. JET_bitColumnFixed, // dbgrbit
  179. JET_coltypLong, // dbcoltyp
  180. 0 // dbcolumnid
  181. },
  182. #if (DTR_REQUESTSTATUSCODE != 8)
  183. #error -- bad DTR_REQUESTSTATUSCODE index
  184. #endif
  185. { // ColumnType: DWORD
  186. wszPROPREQUESTSTATUSCODE, // pwszPropName
  187. NULL, // pwszPropNameObjId
  188. 0, // dwFlags
  189. sizeof(LONG), // dwcbMax
  190. TABLE_REQUESTS, // dwTable
  191. szSTATUSCODE, // pszFieldName
  192. NULL, // pszIndexName
  193. 0, // dbcolumnMax
  194. JET_bitColumnFixed, // dbgrbit
  195. JET_coltypLong, // dbcoltyp
  196. 0 // dbcolumnid
  197. },
  198. #if (DTR_REQUESTDISPOSITION != 9)
  199. #error -- bad DTR_REQUESTDISPOSITION index
  200. #endif
  201. { // ColumnType: DWORD
  202. wszPROPREQUESTDISPOSITION, // pwszPropName
  203. NULL, // pwszPropNameObjId
  204. 0, // dwFlags
  205. sizeof(LONG), // dwcbMax
  206. TABLE_REQUESTS, // dwTable
  207. szDISPOSITION, // pszFieldName
  208. szREQUEST_DISPOSITIONINDEX, // pszIndexName
  209. 0, // dbcolumnMax
  210. JET_bitColumnFixed, // dbgrbit
  211. JET_coltypLong, // dbcoltyp
  212. 0 // dbcolumnid
  213. },
  214. #if (DTR_REQUESTDISPOSITIONMESSAGE != 10)
  215. #error -- bad DTR_REQUESTDISPOSITIONMESSAGE index
  216. #endif
  217. { // ColumnType: STRING
  218. wszPROPREQUESTDISPOSITIONMESSAGE, // pwszPropName
  219. NULL, // pwszPropNameObjId
  220. 0, // dwFlags
  221. CB_DBMAXTEXT_DISPSTRING, // dwcbMax
  222. TABLE_REQUESTS, // dwTable
  223. szDISPOSITIONMESSAGE, // pszFieldName
  224. NULL, // pszIndexName
  225. CB_DBMAXTEXT_DISPSTRING, // dbcolumnMax
  226. 0, // dbgrbit
  227. JET_coltypLongText, // dbcoltyp
  228. 0 // dbcolumnid
  229. },
  230. #if (DTR_REQUESTSUBMITTEDWHEN != 11)
  231. #error -- bad DTR_REQUESTSUBMITTEDWHEN index
  232. #endif
  233. { // ColumnType: FILETIME
  234. wszPROPREQUESTSUBMITTEDWHEN, // pwszPropName
  235. NULL, // pwszPropNameObjId
  236. 0, // dwFlags
  237. sizeof(DATE), // dwcbMax
  238. TABLE_REQUESTS, // dwTable
  239. szSUBMITTEDWHEN, // pszFieldName
  240. NULL, // pszIndexName
  241. 0, // dbcolumnMax
  242. JET_bitColumnFixed, // dbgrbit
  243. JET_coltypDateTime, // dbcoltyp
  244. 0 // dbcolumnid
  245. },
  246. #if (DTR_REQUESTRESOLVEDWHEN != 12)
  247. #error -- bad DTR_REQUESTRESOLVEDWHEN index
  248. #endif
  249. { // ColumnType: FILETIME
  250. wszPROPREQUESTRESOLVEDWHEN, // pwszPropName
  251. NULL, // pwszPropNameObjId
  252. DBTF_INDEXIGNORENULL | DBTF_INDEXRENAMED, // dwFlags
  253. sizeof(DATE), // dwcbMax
  254. TABLE_REQUESTS, // dwTable
  255. szRESOLVEDWHEN, // pszFieldName
  256. szREQUEST_RESOLVEDWHENINDEX "\0" szREQUEST_RESOLVEDWHENINDEX_OLD, // pszIndexName
  257. 0, // dbcolumnMax
  258. JET_bitColumnFixed, // dbgrbit
  259. JET_coltypDateTime, // dbcoltyp
  260. 0 // dbcolumnid
  261. },
  262. #if (DTR_REQUESTREVOKEDWHEN != 13)
  263. #error -- bad DTR_REQUESTREVOKEDWHEN index
  264. #endif
  265. { // ColumnType: FILETIME
  266. wszPROPREQUESTREVOKEDWHEN, // pwszPropName
  267. NULL, // pwszPropNameObjId
  268. 0, // dwFlags
  269. sizeof(DATE), // dwcbMax
  270. TABLE_REQUESTS, // dwTable
  271. szREVOKEDWHEN, // pszFieldName
  272. NULL, // pszIndexName
  273. 0, // dbcolumnMax
  274. JET_bitColumnFixed, // dbgrbit
  275. JET_coltypDateTime, // dbcoltyp
  276. 0 // dbcolumnid
  277. },
  278. #if (DTR_REQUESTREVOKEDEFFECTIVEWHEN != 14)
  279. #error -- bad DTR_REQUESTREVOKEDEFFECTIVEWHEN index
  280. #endif
  281. { // ColumnType: FILETIME
  282. wszPROPREQUESTREVOKEDEFFECTIVEWHEN, // pwszPropName
  283. NULL, // pwszPropNameObjId
  284. DBTF_INDEXIGNORENULL | DBTF_INDEXRENAMED, // dwFlags
  285. sizeof(DATE), // dwcbMax
  286. TABLE_REQUESTS, // dwTable
  287. szREVOKEDEFFECTIVEWHEN, // pszFieldName
  288. szREQUEST_REVOKEDEFFECTIVEWHENINDEX "\0" szREQUEST_REVOKEDEFFECTIVEWHENINDEX_OLD, // pszIndexName
  289. 0, // dbcolumnMax
  290. JET_bitColumnFixed, // dbgrbit
  291. JET_coltypDateTime, // dbcoltyp
  292. 0 // dbcolumnid
  293. },
  294. #if (DTR_REQUESTREVOKEDREASON != 15)
  295. #error -- bad DTR_REQUESTREVOKEDREASON index
  296. #endif
  297. { // ColumnType: DWORD
  298. wszPROPREQUESTREVOKEDREASON, // pwszPropName
  299. NULL, // pwszPropNameObjId
  300. 0, // dwFlags
  301. sizeof(LONG), // dwcbMax
  302. TABLE_REQUESTS, // dwTable
  303. szREVOKEDREASON, // pszFieldName
  304. NULL, // pszIndexName
  305. 0, // dbcolumnMax
  306. JET_bitColumnFixed, // dbgrbit
  307. JET_coltypLong, // dbcoltyp
  308. 0 // dbcolumnid
  309. },
  310. #if (DTR_REQUESTERNAME != 16)
  311. #error -- bad DTR_REQUESTERNAME index
  312. #endif
  313. { // ColumnType: STRING
  314. wszPROPREQUESTERNAME, // pwszPropName
  315. NULL, // pwszPropNameObjId
  316. 0, // dwFlags
  317. CB_DBMAXTEXT_REQUESTNAME, // dwcbMax
  318. TABLE_REQUESTS, // dwTable
  319. szREQUESTERNAME, // pszFieldName
  320. szREQUEST_REQUESTERNAMEINDEX, // pszIndexName
  321. CB_DBMAXTEXT_REQUESTNAME, // dbcolumnMax
  322. 0, // dbgrbit
  323. JET_coltypLongText, // dbcoltyp
  324. 0 // dbcolumnid
  325. },
  326. #if (DTR_CALLERNAME != 17)
  327. #error -- bad DTR_CALLERNAME index
  328. #endif
  329. { // ColumnType: STRING
  330. wszPROPCALLERNAME, // pwszPropName
  331. NULL, // pwszPropNameObjId
  332. 0, // dwFlags
  333. CB_DBMAXTEXT_REQUESTNAME, // dwcbMax
  334. TABLE_REQUESTS, // dwTable
  335. szCALLERNAME, // pszFieldName
  336. szREQUEST_CALLERNAMEINDEX, // pszIndexName
  337. CB_DBMAXTEXT_REQUESTNAME, // dbcolumnMax
  338. 0, // dbgrbit
  339. JET_coltypLongText, // dbcoltyp
  340. 0 // dbcolumnid
  341. },
  342. #if (DTR_SIGNERPOLICIES != 18)
  343. #error -- bad DTR_SIGNERPOLICIES index
  344. #endif
  345. { // ColumnType: STRING
  346. wszPROPSIGNERPOLICIES, // pwszPropName
  347. NULL, // pwszPropNameObjId
  348. 0, // dwFlags
  349. CB_DBMAXTEXT_MEDIUM, // dwcbMax
  350. TABLE_REQUESTS, // dwTable
  351. szSIGNERPOLICIES, // pszFieldName
  352. NULL, // pszIndexName
  353. CB_DBMAXTEXT_MEDIUM, // dbcolumnMax
  354. 0, // dbgrbit
  355. JET_coltypLongText, // dbcoltyp
  356. 0 // dbcolumnid
  357. },
  358. #if (DTR_SIGNERAPPLICATIONPOLICIES != 19)
  359. #error -- bad DTR_SIGNERAPPLICATIONPOLICIES index
  360. #endif
  361. { // ColumnType: STRING
  362. wszPROPSIGNERAPPLICATIONPOLICIES, // pwszPropName
  363. NULL, // pwszPropNameObjId
  364. 0, // dwFlags
  365. CB_DBMAXTEXT_MEDIUM, // dwcbMax
  366. TABLE_REQUESTS, // dwTable
  367. szSIGNERAPPLICATIONPOLICIES, // pszFieldName
  368. NULL, // pszIndexName
  369. CB_DBMAXTEXT_MEDIUM, // dbcolumnMax
  370. 0, // dbgrbit
  371. JET_coltypLongText, // dbcoltyp
  372. 0 // dbcolumnid
  373. },
  374. #if (DTR_OFFICER != 20)
  375. #error -- bad DTR_OFFICER index
  376. #endif
  377. { // ColumnType: DWORD
  378. wszPROPOFFICER, // pwszPropName
  379. NULL, // pwszPropNameObjId
  380. DBTF_COMPUTED, // dwFlags
  381. sizeof(LONG), // dwcbMax
  382. TABLE_REQUESTS, // dwTable
  383. szOFFICER, // pszFieldName
  384. NULL, // pszIndexName
  385. 0, // dbcolumnMax
  386. JET_bitColumnFixed, // dbgrbit
  387. JET_coltypLong, // dbcoltyp
  388. 0 // dbcolumnid
  389. },
  390. #if (DTR_DISTINGUISHEDNAME != 21)
  391. #error -- bad DTR_DISTINGUISHEDNAME index
  392. #endif
  393. { // ColumnType: STRING
  394. wszPROPDISTINGUISHEDNAME, // pwszPropName
  395. NULL, // pwszPropNameObjId
  396. DBTF_SUBJECT, // dwFlags
  397. CB_DBMAXTEXT_DN, // dwcbMax
  398. TABLE_REQUESTS, // dwTable
  399. szDISTINGUISHEDNAME, // pszFieldName
  400. NULL, // pszIndexName
  401. CB_DBMAXTEXT_DN, // dbcolumnMax
  402. 0, // dbgrbit
  403. JET_coltypLongText, // dbcoltyp
  404. 0 // dbcolumnid
  405. },
  406. #if (DTR_RAWNAME != 22)
  407. #error -- bad DTR_RAWNAME index
  408. #endif
  409. { // ColumnType: BLOB
  410. wszPROPRAWNAME, // pwszPropName
  411. NULL, // pwszPropNameObjId
  412. DBTF_SUBJECT, // dwFlags
  413. CB_DBMAXBINARY, // dwcbMax
  414. TABLE_REQUESTS, // dwTable
  415. szRAWNAME, // pszFieldName
  416. NULL, // pszIndexName
  417. CB_DBMAXBINARY, // dbcolumnMax
  418. 0, // dbgrbit
  419. JET_coltypLongBinary, // dbcoltyp
  420. 0 // dbcolumnid
  421. },
  422. #if (DTR_COUNTRY != 23)
  423. #error -- bad DTR_COUNTRY index
  424. #endif
  425. { // ColumnType: STRING
  426. wszPROPCOUNTRY, // pwszPropName
  427. TEXT(szOID_COUNTRY_NAME), // pwszPropNameObjId
  428. DBTF_SUBJECT, // dwFlags
  429. CB_DBMAXTEXT_RDN, // dwcbMax
  430. TABLE_REQUESTS, // dwTable
  431. szCOUNTRY, // pszFieldName
  432. NULL, // pszIndexName
  433. CB_DBMAXTEXT_RDN, // dbcolumnMax
  434. 0, // dbgrbit
  435. JET_coltypLongText, // dbcoltyp
  436. 0 // dbcolumnid
  437. },
  438. #if (DTR_ORGANIZATION != 24)
  439. #error -- bad DTR_ORGANIZATION index
  440. #endif
  441. { // ColumnType: STRING
  442. wszPROPORGANIZATION, // pwszPropName
  443. TEXT(szOID_ORGANIZATION_NAME), // pwszPropNameObjId
  444. DBTF_SUBJECT, // dwFlags
  445. CB_DBMAXTEXT_RDN, // dwcbMax
  446. TABLE_REQUESTS, // dwTable
  447. szORGANIZATION, // pszFieldName
  448. NULL, // pszIndexName
  449. CB_DBMAXTEXT_RDN, // dbcolumnMax
  450. 0, // dbgrbit
  451. JET_coltypLongText, // dbcoltyp
  452. 0 // dbcolumnid
  453. },
  454. #if (DTR_ORGUNIT != 25)
  455. #error -- bad DTR_ORGUNIT index
  456. #endif
  457. { // ColumnType: STRING
  458. wszPROPORGUNIT, // pwszPropName
  459. TEXT(szOID_ORGANIZATIONAL_UNIT_NAME), // pwszPropNameObjId
  460. DBTF_SUBJECT, // dwFlags
  461. CB_DBMAXTEXT_RDN, // dwcbMax
  462. TABLE_REQUESTS, // dwTable
  463. szORGANIZATIONALUNIT, // pszFieldName
  464. NULL, // pszIndexName
  465. CB_DBMAXTEXT_RDN, // dbcolumnMax
  466. 0, // dbgrbit
  467. JET_coltypLongText, // dbcoltyp
  468. 0 // dbcolumnid
  469. },
  470. #if (DTR_COMMONNAME != 26)
  471. #error -- bad DTR_COMMONNAME index
  472. #endif
  473. { // ColumnType: STRING
  474. wszPROPCOMMONNAME, // pwszPropName
  475. TEXT(szOID_COMMON_NAME), // pwszPropNameObjId
  476. DBTF_SUBJECT, // dwFlags
  477. CB_DBMAXTEXT_RDN, // dwcbMax
  478. TABLE_REQUESTS, // dwTable
  479. szCOMMONNAME, // pszFieldName
  480. NULL, // pszIndexName
  481. CB_DBMAXTEXT_RDN, // dbcolumnMax
  482. 0, // dbgrbit
  483. JET_coltypLongText, // dbcoltyp
  484. 0 // dbcolumnid
  485. },
  486. #if (DTR_LOCALITY != 27)
  487. #error -- bad DTR_LOCALITY index
  488. #endif
  489. { // ColumnType: STRING
  490. wszPROPLOCALITY, // pwszPropName
  491. TEXT(szOID_LOCALITY_NAME), // pwszPropNameObjId
  492. DBTF_SUBJECT, // dwFlags
  493. CB_DBMAXTEXT_RDN, // dwcbMax
  494. TABLE_REQUESTS, // dwTable
  495. szLOCALITY, // pszFieldName
  496. NULL, // pszIndexName
  497. CB_DBMAXTEXT_RDN, // dbcolumnMax
  498. 0, // dbgrbit
  499. JET_coltypLongText, // dbcoltyp
  500. 0 // dbcolumnid
  501. },
  502. #if (DTR_STATE != 28)
  503. #error -- bad DTR_STATE index
  504. #endif
  505. { // ColumnType: STRING
  506. wszPROPSTATE, // pwszPropName
  507. TEXT(szOID_STATE_OR_PROVINCE_NAME), // pwszPropNameObjId
  508. DBTF_SUBJECT, // dwFlags
  509. CB_DBMAXTEXT_RDN, // dwcbMax
  510. TABLE_REQUESTS, // dwTable
  511. szSTATEORPROVINCE, // pszFieldName
  512. NULL, // pszIndexName
  513. CB_DBMAXTEXT_RDN, // dbcolumnMax
  514. 0, // dbgrbit
  515. JET_coltypLongText, // dbcoltyp
  516. 0 // dbcolumnid
  517. },
  518. #if (DTR_TITLE != 29)
  519. #error -- bad DTR_TITLE index
  520. #endif
  521. { // ColumnType: STRING
  522. wszPROPTITLE, // pwszPropName
  523. TEXT(szOID_TITLE), // pwszPropNameObjId
  524. DBTF_SUBJECT, // dwFlags
  525. CB_DBMAXTEXT_RDN, // dwcbMax
  526. TABLE_REQUESTS, // dwTable
  527. szTITLE, // pszFieldName
  528. NULL, // pszIndexName
  529. CB_DBMAXTEXT_RDN, // dbcolumnMax
  530. 0, // dbgrbit
  531. JET_coltypLongText, // dbcoltyp
  532. 0 // dbcolumnid
  533. },
  534. #if (DTR_GIVENNAME != 30)
  535. #error -- bad DTR_GIVENNAME index
  536. #endif
  537. { // ColumnType: STRING
  538. wszPROPGIVENNAME, // pwszPropName
  539. TEXT(szOID_GIVEN_NAME), // pwszPropNameObjId
  540. DBTF_SUBJECT, // dwFlags
  541. CB_DBMAXTEXT_RDN, // dwcbMax
  542. TABLE_REQUESTS, // dwTable
  543. szGIVENNAME, // pszFieldName
  544. NULL, // pszIndexName
  545. CB_DBMAXTEXT_RDN, // dbcolumnMax
  546. 0, // dbgrbit
  547. JET_coltypLongText, // dbcoltyp
  548. 0 // dbcolumnid
  549. },
  550. #if (DTR_INITIALS != 31)
  551. #error -- bad DTR_INITIALS index
  552. #endif
  553. { // ColumnType: STRING
  554. wszPROPINITIALS, // pwszPropName
  555. TEXT(szOID_INITIALS), // pwszPropNameObjId
  556. DBTF_SUBJECT, // dwFlags
  557. CB_DBMAXTEXT_RDN, // dwcbMax
  558. TABLE_REQUESTS, // dwTable
  559. szINITIALS, // pszFieldName
  560. NULL, // pszIndexName
  561. CB_DBMAXTEXT_RDN, // dbcolumnMax
  562. 0, // dbgrbit
  563. JET_coltypLongText, // dbcoltyp
  564. 0 // dbcolumnid
  565. },
  566. #if (DTR_SURNAME != 32)
  567. #error -- bad DTR_SURNAME index
  568. #endif
  569. { // ColumnType: STRING
  570. wszPROPSURNAME, // pwszPropName
  571. TEXT(szOID_SUR_NAME), // pwszPropNameObjId
  572. DBTF_SUBJECT, // dwFlags
  573. CB_DBMAXTEXT_RDN, // dwcbMax
  574. TABLE_REQUESTS, // dwTable
  575. szSURNAME, // pszFieldName
  576. NULL, // pszIndexName
  577. CB_DBMAXTEXT_RDN, // dbcolumnMax
  578. 0, // dbgrbit
  579. JET_coltypLongText, // dbcoltyp
  580. 0 // dbcolumnid
  581. },
  582. #if (DTR_DOMAINCOMPONENT != 33)
  583. #error -- bad DTR_DOMAINCOMPONENT index
  584. #endif
  585. { // ColumnType: STRING
  586. wszPROPDOMAINCOMPONENT, // pwszPropName
  587. TEXT(szOID_DOMAIN_COMPONENT), // pwszPropNameObjId
  588. DBTF_SUBJECT, // dwFlags
  589. CB_DBMAXTEXT_RDN, // dwcbMax
  590. TABLE_REQUESTS, // dwTable
  591. szDOMAINCOMPONENT, // pszFieldName
  592. NULL, // pszIndexName
  593. CB_DBMAXTEXT_RDN, // dbcolumnMax
  594. 0, // dbgrbit
  595. JET_coltypLongText, // dbcoltyp
  596. 0 // dbcolumnid
  597. },
  598. #if (DTR_EMAIL != 34)
  599. #error -- bad DTR_EMAIL index
  600. #endif
  601. { // ColumnType: STRING
  602. wszPROPEMAIL, // pwszPropName
  603. TEXT(szOID_RSA_emailAddr), // pwszPropNameObjId
  604. DBTF_SUBJECT, // dwFlags
  605. CB_DBMAXTEXT_RDN, // dwcbMax
  606. TABLE_REQUESTS, // dwTable
  607. szEMAIL, // pszFieldName
  608. NULL, // pszIndexName
  609. CB_DBMAXTEXT_RDN, // dbcolumnMax
  610. 0, // dbgrbit
  611. JET_coltypLongText, // dbcoltyp
  612. 0 // dbcolumnid
  613. },
  614. #if (DTR_STREETADDRESS != 35)
  615. #error -- bad DTR_STREETADDRESS index
  616. #endif
  617. { // ColumnType: STRING
  618. wszPROPSTREETADDRESS, // pwszPropName
  619. TEXT(szOID_STREET_ADDRESS), // pwszPropNameObjId
  620. DBTF_SUBJECT, // dwFlags
  621. CB_DBMAXTEXT_RDN, // dwcbMax
  622. TABLE_REQUESTS, // dwTable
  623. szSTREETADDRESS, // pszFieldName
  624. NULL, // pszIndexName
  625. CB_DBMAXTEXT_RDN, // dbcolumnMax
  626. 0, // dbgrbit
  627. JET_coltypLongText, // dbcoltyp
  628. 0 // dbcolumnid
  629. },
  630. #if (DTR_UNSTRUCTUREDNAME != 36)
  631. #error -- bad DTR_UNSTRUCTUREDNAME index
  632. #endif
  633. { // ColumnType: STRING
  634. wszPROPUNSTRUCTUREDNAME, // pwszPropName
  635. TEXT(szOID_RSA_unstructName), // pwszPropNameObjId
  636. DBTF_SUBJECT | DBTF_SOFTFAIL, // dwFlags
  637. CB_DBMAXTEXT_RDN, // dwcbMax
  638. TABLE_REQUESTS, // dwTable
  639. szUNSTRUCTUREDNAME, // pszFieldName
  640. NULL, // pszIndexName
  641. CB_DBMAXTEXT_RDN, // dbcolumnMax
  642. 0, // dbgrbit
  643. JET_coltypLongText, // dbcoltyp
  644. 0 // dbcolumnid
  645. },
  646. #if (DTR_UNSTRUCTUREDADDRESS != 37)
  647. #error -- bad DTR_UNSTRUCTUREDADDRESS index
  648. #endif
  649. { // ColumnType: STRING
  650. wszPROPUNSTRUCTUREDADDRESS, // pwszPropName
  651. TEXT(szOID_RSA_unstructAddr), // pwszPropNameObjId
  652. DBTF_SUBJECT | DBTF_SOFTFAIL, // dwFlags
  653. CB_DBMAXTEXT_RDN, // dwcbMax
  654. TABLE_REQUESTS, // dwTable
  655. szUNSTRUCTUREDADDRESS, // pszFieldName
  656. NULL, // pszIndexName
  657. CB_DBMAXTEXT_RDN, // dbcolumnMax
  658. 0, // dbgrbit
  659. JET_coltypLongText, // dbcoltyp
  660. 0 // dbcolumnid
  661. },
  662. #if (DTR_DEVICESERIALNUMBER != 38)
  663. #error -- bad DTR_DEVICESERIALNUMBER index
  664. #endif
  665. { // ColumnType: STRING
  666. wszPROPDEVICESERIALNUMBER, // pwszPropName
  667. TEXT(szOID_DEVICE_SERIAL_NUMBER), // pwszPropNameObjId
  668. DBTF_SUBJECT | DBTF_SOFTFAIL, // dwFlags
  669. CB_DBMAXTEXT_RDN, // dwcbMax
  670. TABLE_REQUESTS, // dwTable
  671. szDEVICESERIALNUMBER, // pszFieldName
  672. NULL, // pszIndexName
  673. CB_DBMAXTEXT_RDN, // dbcolumnMax
  674. 0, // dbgrbit
  675. JET_coltypLongText, // dbcoltyp
  676. 0 // dbcolumnid
  677. },
  678. #if (DTR_MAX != 39)
  679. #error -- bad DTR_MAX index
  680. #endif
  681. DBTABLE_NULL // Termination marker
  682. };
  683. //---------------------------------------------------------------------------
  684. //
  685. // Certificates Table:
  686. //
  687. //---------------------------------------------------------------------------
  688. DBTABLE g_adtCertificates[] =
  689. {
  690. #if (DTC_REQUESTID != 0)
  691. #error -- bad DTC_REQUESTID index
  692. #endif
  693. { // ColumnType: DWORD
  694. wszPROPCERTIFICATEREQUESTID, // pwszPropName
  695. NULL, // pwszPropNameObjId
  696. DBTF_INDEXPRIMARY, // dwFlags
  697. sizeof(LONG), // dwcbMax
  698. TABLE_CERTIFICATES, // dwTable
  699. szREQUESTID, // pszFieldName
  700. szCERTIFICATE_REQUESTIDINDEX, // pszIndexName
  701. 0, // dbcolumnMax
  702. JET_bitColumnFixed, // dbgrbit
  703. JET_coltypLong, // dbcoltyp
  704. 0 // dbcolumnid
  705. },
  706. #if (DTC_RAWCERTIFICATE != 1)
  707. #error -- bad DTC_RAWCERTIFICATE index
  708. #endif
  709. { // ColumnType: BLOB
  710. wszPROPRAWCERTIFICATE, // pwszPropName
  711. NULL, // pwszPropNameObjId
  712. 0, // dwFlags
  713. CB_DBMAXRAWCERTIFICATE, // dwcbMax
  714. TABLE_CERTIFICATES, // dwTable
  715. szRAWCERTIFICATE, // pszFieldName
  716. NULL, // pszIndexName
  717. CB_DBMAXRAWCERTIFICATE, // dbcolumnMax
  718. 0, // dbgrbit
  719. JET_coltypLongBinary, // dbcoltyp
  720. 0 // dbcolumnid
  721. },
  722. #if (DTC_CERTIFICATEHASH != 2)
  723. #error -- bad DTC_CERTIFICATEHASH index
  724. #endif
  725. { // ColumnType: STRING
  726. wszPROPCERTIFICATEHASH, // pwszPropName
  727. NULL, // pwszPropNameObjId
  728. DBTF_INDEXIGNORENULL, // dwFlags
  729. cchHASHMAX * sizeof(WCHAR), // dwcbMax
  730. TABLE_CERTIFICATES, // dwTable
  731. szCERTIFICATEHASH, // pszFieldName
  732. szCERTIFICATE_HASHINDEX, // pszIndexName
  733. cchHASHMAX * sizeof(WCHAR), // dbcolumnMax
  734. 0, // dbgrbit
  735. JET_coltypText, // dbcoltyp
  736. 0 // dbcolumnid
  737. },
  738. #if (DTC_CERTIFICATETEMPLATE != 3)
  739. #error -- bad DTC_CERTIFICATETEMPLATE index
  740. #endif
  741. { // ColumnType: STRING
  742. wszPROPCERTIFICATETEMPLATE, // pwszPropName
  743. NULL, // pwszPropNameObjId
  744. DBTF_POLICYWRITEABLE | DBTF_SOFTFAIL, // dwFlags
  745. CB_DBMAXTEXT_OID, // dwcbMax
  746. TABLE_CERTIFICATES, // dwTable
  747. szCERTIFICATETEMPLATE, // pszFieldName
  748. szCERTIFICATE_TEMPLATEINDEX, // pszIndexName
  749. CB_DBMAXTEXT_OID, // dbcolumnMax
  750. 0, // dbgrbit
  751. JET_coltypText, // dbcoltyp
  752. 0 // dbcolumnid
  753. },
  754. #if (DTC_CERTIFICATEENROLLMENTFLAGS != 4)
  755. #error -- bad DTC_CERTIFICATEENROLLMENTFLAGS index
  756. #endif
  757. { // ColumnType: DWORD
  758. wszPROPCERTIFICATEENROLLMENTFLAGS, // pwszPropName
  759. NULL, // pwszPropNameObjId
  760. DBTF_POLICYWRITEABLE | DBTF_SOFTFAIL, // dwFlags
  761. sizeof(LONG), // dwcbMax
  762. TABLE_CERTIFICATES, // dwTable
  763. szCERTIFICATEENROLLMENTFLAGS, // pszFieldName
  764. NULL, // pszIndexName
  765. 0, // dbcolumnMax
  766. JET_bitColumnFixed, // dbgrbit
  767. JET_coltypLong, // dbcoltyp
  768. 0 // dbcolumnid
  769. },
  770. #if (DTC_CERTIFICATEGENERALFLAGS != 5)
  771. #error -- bad DTC_CERTIFICATEGENERALFLAGS index
  772. #endif
  773. { // ColumnType: DWORD
  774. wszPROPCERTIFICATEGENERALFLAGS, // pwszPropName
  775. NULL, // pwszPropNameObjId
  776. DBTF_POLICYWRITEABLE | DBTF_SOFTFAIL, // dwFlags
  777. sizeof(LONG), // dwcbMax
  778. TABLE_CERTIFICATES, // dwTable
  779. szCERTIFICATEGENERALFLAGS, // pszFieldName
  780. NULL, // pszIndexName
  781. 0, // dbcolumnMax
  782. JET_bitColumnFixed, // dbgrbit
  783. JET_coltypLong, // dbcoltyp
  784. 0 // dbcolumnid
  785. },
  786. #if (DTC_CERTIFICATESERIALNUMBER != 6)
  787. #error -- bad DTC_CERTIFICATESERIALNUMBER index
  788. #endif
  789. { // ColumnType: STRING
  790. wszPROPCERTIFICATESERIALNUMBER, // pwszPropName
  791. NULL, // pwszPropNameObjId
  792. DBTF_INDEXIGNORENULL | DBTF_INDEXRENAMED, // dwFlags
  793. cchSERIALNUMBERMAX * sizeof(WCHAR), // dwcbMax
  794. TABLE_CERTIFICATES, // dwTable
  795. szSERIALNUMBER, // pszFieldName
  796. szCERTIFICATE_SERIALNUMBERINDEX "\0" szCERTIFICATE_SERIALNUMBERINDEX_OLD, // pszIndexName
  797. cchSERIALNUMBERMAX * sizeof(WCHAR), // dbcolumnMax
  798. 0, // dbgrbit
  799. JET_coltypText, // dbcoltyp
  800. 0 // dbcolumnid
  801. },
  802. #if (DTC_CERTIFICATEISSUERNAMEID != 7)
  803. #error -- bad DTC_CERTIFICATEISSUERNAMEID index
  804. #endif
  805. { // ColumnType: DWORD
  806. wszPROPCERTIFICATEISSUERNAMEID, // pwszPropName
  807. NULL, // pwszPropNameObjId
  808. 0, // dwFlags
  809. sizeof(LONG), // dwcbMax
  810. TABLE_CERTIFICATES, // dwTable
  811. szISSUERNAMEID, // pszFieldName
  812. NULL, // pszIndexName
  813. 0, // dbcolumnMax
  814. JET_bitColumnFixed, // dbgrbit
  815. JET_coltypLong, // dbcoltyp
  816. 0 // dbcolumnid
  817. },
  818. #if (DTC_CERTIFICATENOTBEFOREDATE != 8)
  819. #error -- bad DTC_CERTIFICATENOTBEFOREDATE index
  820. #endif
  821. { // ColumnType: FILETIME
  822. wszPROPCERTIFICATENOTBEFOREDATE, // pwszPropName
  823. NULL, // pwszPropNameObjId
  824. DBTF_POLICYWRITEABLE, // dwFlags
  825. sizeof(DATE), // dwcbMax
  826. TABLE_CERTIFICATES, // dwTable
  827. szNOTBEFORE, // pszFieldName
  828. NULL, // pszIndexName
  829. 0, // dbcolumnMax
  830. JET_bitColumnFixed, // dbgrbit
  831. JET_coltypDateTime, // dbcoltyp
  832. 0 // dbcolumnid
  833. },
  834. #if (DTC_CERTIFICATENOTAFTERDATE != 9)
  835. #error -- bad DTC_CERTIFICATENOTAFTERDATE index
  836. #endif
  837. { // ColumnType: FILETIME
  838. wszPROPCERTIFICATENOTAFTERDATE, // pwszPropName
  839. NULL, // pwszPropNameObjId
  840. DBTF_POLICYWRITEABLE | DBTF_INDEXIGNORENULL | DBTF_INDEXRENAMED, // dwFlags
  841. sizeof(DATE), // dwcbMax
  842. TABLE_CERTIFICATES, // dwTable
  843. szNOTAFTER, // pszFieldName
  844. szCERTIFICATE_NOTAFTERINDEX "\0" szCERTIFICATE_NOTAFTERINDEX_OLD, // pszIndexName
  845. 0, // dbcolumnMax
  846. JET_bitColumnFixed, // dbgrbit
  847. JET_coltypDateTime, // dbcoltyp
  848. 0 // dbcolumnid
  849. },
  850. #if (DTC_CERTIFICATESUBJECTKEYIDENTIFIER != 10)
  851. #error -- bad DTC_CERTIFICATESUBJECTKEYIDENTIFIER index
  852. #endif
  853. { // ColumnType: STRING
  854. wszPROPCERTIFICATESUBJECTKEYIDENTIFIER, // pwszPropName
  855. NULL, // pwszPropNameObjId
  856. DBTF_COLUMNRENAMED, // dwFlags
  857. cchHASHMAX * sizeof(WCHAR), // dwcbMax
  858. TABLE_CERTIFICATES, // dwTable
  859. szSUBJECTKEYIDENTIFIER "\0" szSUBJECTKEYIDENTIFIER_OLD, // pszFieldName
  860. NULL, // pszIndexName
  861. cchHASHMAX * sizeof(WCHAR), // dbcolumnMax
  862. 0, // dbgrbit
  863. JET_coltypText, // dbcoltyp
  864. 0 // dbcolumnid
  865. },
  866. #if (DTC_CERTIFICATERAWPUBLICKEY != 11)
  867. #error -- bad DTC_CERTIFICATERAWPUBLICKEY index
  868. #endif
  869. { // ColumnType: BLOB
  870. wszPROPCERTIFICATERAWPUBLICKEY, // pwszPropName
  871. NULL, // pwszPropNameObjId
  872. 0, // dwFlags
  873. CB_DBMAXBINARY, // dwcbMax
  874. TABLE_CERTIFICATES, // dwTable
  875. szPUBLICKEY, // pszFieldName
  876. NULL, // pszIndexName
  877. CB_DBMAXBINARY, // dbcolumnMax
  878. 0, // dbgrbit
  879. JET_coltypLongBinary, // dbcoltyp
  880. 0 // dbcolumnid
  881. },
  882. #if (DTC_CERTIFICATEPUBLICKEYLENGTH != 12)
  883. #error -- bad DTC_CERTIFICATEPUBLICKEYLENGTH index
  884. #endif
  885. { // ColumnType: DWORD
  886. wszPROPCERTIFICATEPUBLICKEYLENGTH, // pwszPropName
  887. NULL, // pwszPropNameObjId
  888. 0, // dwFlags
  889. sizeof(LONG), // dwcbMax
  890. TABLE_CERTIFICATES, // dwTable
  891. szPUBLICKEYLENGTH, // pszFieldName
  892. NULL, // pszIndexName
  893. 0, // dbcolumnMax
  894. JET_bitColumnFixed, // dbgrbit
  895. JET_coltypLong, // dbcoltyp
  896. 0 // dbcolumnid
  897. },
  898. #if (DTC_CERTIFICATEPUBLICKEYALGORITHM != 13)
  899. #error -- bad DTC_CERTIFICATEPUBLICKEYALGORITHM index
  900. #endif
  901. { // ColumnType: STRING
  902. wszPROPCERTIFICATEPUBLICKEYALGORITHM, // pwszPropName
  903. NULL, // pwszPropNameObjId
  904. 0, // dwFlags
  905. CB_DBMAXTEXT_OID, // dwcbMax
  906. TABLE_CERTIFICATES, // dwTable
  907. szPUBLICKEYALGORITHM, // pszFieldName
  908. NULL, // pszIndexName
  909. CB_DBMAXTEXT_OID, // dbcolumnMax
  910. 0, // dbgrbit
  911. JET_coltypText, // dbcoltyp
  912. 0 // dbcolumnid
  913. },
  914. #if (DTC_CERTIFICATERAWPUBLICKEYALGORITHMPARAMETERS != 14)
  915. #error -- bad DTC_CERTIFICATERAWPUBLICKEYALGORITHMPARAMETERS index
  916. #endif
  917. { // ColumnType: BLOB
  918. wszPROPCERTIFICATERAWPUBLICKEYALGORITHMPARAMETERS, // pwszPropName
  919. NULL, // pwszPropNameObjId
  920. 0, // dwFlags
  921. CB_DBMAXBINARY, // dwcbMax
  922. TABLE_CERTIFICATES, // dwTable
  923. szPUBLICKEYPARAMS, // pszFieldName
  924. NULL, // pszIndexName
  925. CB_DBMAXBINARY, // dbcolumnMax
  926. 0, // dbgrbit
  927. JET_coltypLongBinary, // dbcoltyp
  928. 0 // dbcolumnid
  929. },
  930. #if (DTC_CERTIFICATEUPN != 15)
  931. #error -- bad DTC_CERTIFICATEUPN index
  932. #endif
  933. { // ColumnType: STRING
  934. wszPROPCERTIFICATEUPN, // pwszPropName
  935. NULL, // pwszPropNameObjId
  936. DBTF_POLICYWRITEABLE | DBTF_INDEXIGNORENULL,// dwFlags
  937. CB_DBMAXTEXT_REQUESTNAME, // dwcbMax
  938. TABLE_CERTIFICATES, // dwTable
  939. szUPN, // pszFieldName
  940. szCERTIFICATE_UPNINDEX, // pszIndexName
  941. CB_DBMAXTEXT_REQUESTNAME, // dbcolumnMax
  942. 0, // dbgrbit
  943. JET_coltypLongText, // dbcoltyp
  944. 0 // dbcolumnid
  945. },
  946. #if (DTC_DISTINGUISHEDNAME != 16)
  947. #error -- bad DTC_DISTINGUISHEDNAME index
  948. #endif
  949. { // ColumnType: STRING
  950. wszPROPDISTINGUISHEDNAME, // pwszPropName
  951. NULL, // pwszPropNameObjId
  952. DBTF_SUBJECT, // dwFlags
  953. CB_DBMAXTEXT_RDN, // dwcbMax
  954. TABLE_CERTIFICATES, // dwTable
  955. szDISTINGUISHEDNAME, // pszFieldName
  956. NULL, // pszIndexName
  957. CB_DBMAXTEXT_DN, // dbcolumnMax
  958. 0, // dbgrbit
  959. JET_coltypLongText, // dbcoltyp
  960. 0 // dbcolumnid
  961. },
  962. #if (DTC_RAWNAME != 17)
  963. #error -- bad DTC_RAWNAME index
  964. #endif
  965. { // ColumnType: BLOB
  966. wszPROPRAWNAME, // pwszPropName
  967. NULL, // pwszPropNameObjId
  968. DBTF_SUBJECT, // dwFlags
  969. CB_DBMAXBINARY, // dwcbMax
  970. TABLE_CERTIFICATES, // dwTable
  971. szRAWNAME, // pszFieldName
  972. NULL, // pszIndexName
  973. CB_DBMAXBINARY, // dbcolumnMax
  974. 0, // dbgrbit
  975. JET_coltypLongBinary, // dbcoltyp
  976. 0 // dbcolumnid
  977. },
  978. #if (DTC_COUNTRY != 18)
  979. #error -- bad DTC_COUNTRY index
  980. #endif
  981. { // ColumnType: STRING
  982. wszPROPCOUNTRY, // pwszPropName
  983. TEXT(szOID_COUNTRY_NAME), // pwszPropNameObjId
  984. DBTF_POLICYWRITEABLE | DBTF_SUBJECT, // dwFlags
  985. CB_DBMAXTEXT_RDN, // dwcbMax
  986. TABLE_CERTIFICATES, // dwTable
  987. szCOUNTRY, // pszFieldName
  988. NULL, // pszIndexName
  989. CB_DBMAXTEXT_RDN, // dbcolumnMax
  990. 0, // dbgrbit
  991. JET_coltypLongText, // dbcoltyp
  992. 0 // dbcolumnid
  993. },
  994. #if (DTC_ORGANIZATION != 19)
  995. #error -- bad DTC_ORGANIZATION index
  996. #endif
  997. { // ColumnType: STRING
  998. wszPROPORGANIZATION, // pwszPropName
  999. TEXT(szOID_ORGANIZATION_NAME), // pwszPropNameObjId
  1000. DBTF_POLICYWRITEABLE | DBTF_SUBJECT, // dwFlags
  1001. CB_DBMAXTEXT_RDN, // dwcbMax
  1002. TABLE_CERTIFICATES, // dwTable
  1003. szORGANIZATION, // pszFieldName
  1004. NULL, // pszIndexName
  1005. CB_DBMAXTEXT_RDN, // dbcolumnMax
  1006. 0, // dbgrbit
  1007. JET_coltypLongText, // dbcoltyp
  1008. 0 // dbcolumnid
  1009. },
  1010. #if (DTC_ORGUNIT != 20)
  1011. #error -- bad DTC_ORGUNIT index
  1012. #endif
  1013. { // ColumnType: STRING
  1014. wszPROPORGUNIT, // pwszPropName
  1015. TEXT(szOID_ORGANIZATIONAL_UNIT_NAME), // pwszPropNameObjId
  1016. DBTF_POLICYWRITEABLE | DBTF_SUBJECT, // dwFlags
  1017. CB_DBMAXTEXT_RDN, // dwcbMax
  1018. TABLE_CERTIFICATES, // dwTable
  1019. szORGANIZATIONALUNIT, // pszFieldName
  1020. NULL, // pszIndexName
  1021. CB_DBMAXTEXT_RDN, // dbcolumnMax
  1022. 0, // dbgrbit
  1023. JET_coltypLongText, // dbcoltyp
  1024. 0 // dbcolumnid
  1025. },
  1026. #if (DTC_COMMONNAME != 21)
  1027. #error -- bad DTC_COMMONNAME index
  1028. #endif
  1029. { // ColumnType: STRING
  1030. wszPROPCOMMONNAME, // pwszPropName
  1031. TEXT(szOID_COMMON_NAME), // pwszPropNameObjId
  1032. DBTF_POLICYWRITEABLE | DBTF_SUBJECT, // dwFlags
  1033. CB_DBMAXTEXT_RDN, // dwcbMax
  1034. TABLE_CERTIFICATES, // dwTable
  1035. szCOMMONNAME, // pszFieldName
  1036. szCERTIFICATE_COMMONNAMEINDEX, // pszIndexName
  1037. CB_DBMAXTEXT_RDN, // dbcolumnMax
  1038. 0, // dbgrbit
  1039. JET_coltypLongText, // dbcoltyp
  1040. 0 // dbcolumnid
  1041. },
  1042. #if (DTC_LOCALITY != 22)
  1043. #error -- bad DTC_LOCALITY index
  1044. #endif
  1045. { // ColumnType: STRING
  1046. wszPROPLOCALITY, // pwszPropName
  1047. TEXT(szOID_LOCALITY_NAME), // pwszPropNameObjId
  1048. DBTF_POLICYWRITEABLE | DBTF_SUBJECT, // dwFlags
  1049. CB_DBMAXTEXT_RDN, // dwcbMax
  1050. TABLE_CERTIFICATES, // dwTable
  1051. szLOCALITY, // pszFieldName
  1052. NULL, // pszIndexName
  1053. CB_DBMAXTEXT_RDN, // dbcolumnMax
  1054. 0, // dbgrbit
  1055. JET_coltypLongText, // dbcoltyp
  1056. 0 // dbcolumnid
  1057. },
  1058. #if (DTC_STATE != 23)
  1059. #error -- bad DTC_STATE index
  1060. #endif
  1061. { // ColumnType: STRING
  1062. wszPROPSTATE, // pwszPropName
  1063. TEXT(szOID_STATE_OR_PROVINCE_NAME), // pwszPropNameObjId
  1064. DBTF_POLICYWRITEABLE | DBTF_SUBJECT, // dwFlags
  1065. CB_DBMAXTEXT_RDN, // dwcbMax
  1066. TABLE_CERTIFICATES, // dwTable
  1067. szSTATEORPROVINCE, // pszFieldName
  1068. NULL, // pszIndexName
  1069. CB_DBMAXTEXT_RDN, // dbcolumnMax
  1070. 0, // dbgrbit
  1071. JET_coltypLongText, // dbcoltyp
  1072. 0 // dbcolumnid
  1073. },
  1074. #if (DTC_TITLE != 24)
  1075. #error -- bad DTC_TITLE index
  1076. #endif
  1077. { // ColumnType: STRING
  1078. wszPROPTITLE, // pwszPropName
  1079. TEXT(szOID_TITLE), // pwszPropNameObjId
  1080. DBTF_POLICYWRITEABLE | DBTF_SUBJECT, // dwFlags
  1081. CB_DBMAXTEXT_RDN, // dwcbMax
  1082. TABLE_CERTIFICATES, // dwTable
  1083. szTITLE, // pszFieldName
  1084. NULL, // pszIndexName
  1085. CB_DBMAXTEXT_RDN, // dbcolumnMax
  1086. 0, // dbgrbit
  1087. JET_coltypLongText, // dbcoltyp
  1088. 0 // dbcolumnid
  1089. },
  1090. #if (DTC_GIVENNAME != 25)
  1091. #error -- bad DTC_GIVENNAME index
  1092. #endif
  1093. { // ColumnType: STRING
  1094. wszPROPGIVENNAME, // pwszPropName
  1095. TEXT(szOID_GIVEN_NAME), // pwszPropNameObjId
  1096. DBTF_POLICYWRITEABLE | DBTF_SUBJECT, // dwFlags
  1097. CB_DBMAXTEXT_RDN, // dwcbMax
  1098. TABLE_CERTIFICATES, // dwTable
  1099. szGIVENNAME, // pszFieldName
  1100. NULL, // pszIndexName
  1101. CB_DBMAXTEXT_RDN, // dbcolumnMax
  1102. 0, // dbgrbit
  1103. JET_coltypLongText, // dbcoltyp
  1104. 0 // dbcolumnid
  1105. },
  1106. #if (DTC_INITIALS != 26)
  1107. #error -- bad DTC_INITIALS index
  1108. #endif
  1109. { // ColumnType: STRING
  1110. wszPROPINITIALS, // pwszPropName
  1111. TEXT(szOID_INITIALS), // pwszPropNameObjId
  1112. DBTF_POLICYWRITEABLE | DBTF_SUBJECT, // dwFlags
  1113. CB_DBMAXTEXT_RDN, // dwcbMax
  1114. TABLE_CERTIFICATES, // dwTable
  1115. szINITIALS, // pszFieldName
  1116. NULL, // pszIndexName
  1117. CB_DBMAXTEXT_RDN, // dbcolumnMax
  1118. 0, // dbgrbit
  1119. JET_coltypLongText, // dbcoltyp
  1120. 0 // dbcolumnid
  1121. },
  1122. #if (DTC_SURNAME != 27)
  1123. #error -- bad DTC_SURNAME index
  1124. #endif
  1125. { // ColumnType: STRING
  1126. wszPROPSURNAME, // pwszPropName
  1127. TEXT(szOID_SUR_NAME), // pwszPropNameObjId
  1128. DBTF_POLICYWRITEABLE | DBTF_SUBJECT, // dwFlags
  1129. CB_DBMAXTEXT_RDN, // dwcbMax
  1130. TABLE_CERTIFICATES, // dwTable
  1131. szSURNAME, // pszFieldName
  1132. NULL, // pszIndexName
  1133. CB_DBMAXTEXT_RDN, // dbcolumnMax
  1134. 0, // dbgrbit
  1135. JET_coltypLongText, // dbcoltyp
  1136. 0 // dbcolumnid
  1137. },
  1138. #if (DTC_DOMAINCOMPONENT != 28)
  1139. #error -- bad DTC_DOMAINCOMPONENT index
  1140. #endif
  1141. { // ColumnType: STRING
  1142. wszPROPDOMAINCOMPONENT, // pwszPropName
  1143. TEXT(szOID_DOMAIN_COMPONENT), // pwszPropNameObjId
  1144. DBTF_POLICYWRITEABLE | DBTF_SUBJECT, // dwFlags
  1145. CB_DBMAXTEXT_RDN, // dwcbMax
  1146. TABLE_CERTIFICATES, // dwTable
  1147. szDOMAINCOMPONENT, // pszFieldName
  1148. NULL, // pszIndexName
  1149. CB_DBMAXTEXT_RDN, // dbcolumnMax
  1150. 0, // dbgrbit
  1151. JET_coltypLongText, // dbcoltyp
  1152. 0 // dbcolumnid
  1153. },
  1154. #if (DTC_EMAIL != 29)
  1155. #error -- bad DTC_EMAIL index
  1156. #endif
  1157. { // ColumnType: STRING
  1158. wszPROPEMAIL, // pwszPropName
  1159. TEXT(szOID_RSA_emailAddr), // pwszPropNameObjId
  1160. DBTF_POLICYWRITEABLE | DBTF_SUBJECT, // dwFlags
  1161. CB_DBMAXTEXT_RDN, // dwcbMax
  1162. TABLE_CERTIFICATES, // dwTable
  1163. szEMAIL, // pszFieldName
  1164. NULL, // pszIndexName
  1165. CB_DBMAXTEXT_RDN, // dbcolumnMax
  1166. 0, // dbgrbit
  1167. JET_coltypLongText, // dbcoltyp
  1168. 0 // dbcolumnid
  1169. },
  1170. #if (DTC_STREETADDRESS != 30)
  1171. #error -- bad DTC_STREETADDRESS index
  1172. #endif
  1173. { // ColumnType: STRING
  1174. wszPROPSTREETADDRESS, // pwszPropName
  1175. TEXT(szOID_STREET_ADDRESS), // pwszPropNameObjId
  1176. DBTF_POLICYWRITEABLE | DBTF_SUBJECT, // dwFlags
  1177. CB_DBMAXTEXT_RDN, // dwcbMax
  1178. TABLE_CERTIFICATES, // dwTable
  1179. szSTREETADDRESS, // pszFieldName
  1180. NULL, // pszIndexName
  1181. CB_DBMAXTEXT_RDN, // dbcolumnMax
  1182. 0, // dbgrbit
  1183. JET_coltypLongText, // dbcoltyp
  1184. 0 // dbcolumnid
  1185. },
  1186. #if (DTC_UNSTRUCTUREDNAME != 31)
  1187. #error -- bad DTC_UNSTRUCTUREDNAME index
  1188. #endif
  1189. { // ColumnType: STRING
  1190. wszPROPUNSTRUCTUREDNAME, // pwszPropName
  1191. TEXT(szOID_RSA_unstructName), // pwszPropNameObjId
  1192. DBTF_POLICYWRITEABLE | DBTF_SUBJECT | DBTF_SOFTFAIL, // dwFlags
  1193. CB_DBMAXTEXT_RDN, // dwcbMax
  1194. TABLE_CERTIFICATES, // dwTable
  1195. szUNSTRUCTUREDNAME, // pszFieldName
  1196. NULL, // pszIndexName
  1197. CB_DBMAXTEXT_RDN, // dbcolumnMax
  1198. 0, // dbgrbit
  1199. JET_coltypLongText, // dbcoltyp
  1200. 0 // dbcolumnid
  1201. },
  1202. #if (DTC_UNSTRUCTUREDADDRESS != 32)
  1203. #error -- bad DTC_UNSTRUCTUREDADDRESS index
  1204. #endif
  1205. { // ColumnType: STRING
  1206. wszPROPUNSTRUCTUREDADDRESS, // pwszPropName
  1207. TEXT(szOID_RSA_unstructAddr), // pwszPropNameObjId
  1208. DBTF_POLICYWRITEABLE | DBTF_SUBJECT | DBTF_SOFTFAIL, // dwFlags
  1209. CB_DBMAXTEXT_RDN, // dwcbMax
  1210. TABLE_CERTIFICATES, // dwTable
  1211. szUNSTRUCTUREDADDRESS, // pszFieldName
  1212. NULL, // pszIndexName
  1213. CB_DBMAXTEXT_RDN, // dbcolumnMax
  1214. 0, // dbgrbit
  1215. JET_coltypLongText, // dbcoltyp
  1216. 0 // dbcolumnid
  1217. },
  1218. #if (DTC_DEVICESERIALNUMBER != 33)
  1219. #error -- bad DTC_DEVICESERIALNUMBER index
  1220. #endif
  1221. { // ColumnType: STRING
  1222. wszPROPDEVICESERIALNUMBER, // pwszPropName
  1223. TEXT(szOID_DEVICE_SERIAL_NUMBER), // pwszPropNameObjId
  1224. DBTF_POLICYWRITEABLE | DBTF_SUBJECT | DBTF_SOFTFAIL, // dwFlags
  1225. CB_DBMAXTEXT_RDN, // dwcbMax
  1226. TABLE_CERTIFICATES, // dwTable
  1227. szDEVICESERIALNUMBER, // pszFieldName
  1228. NULL, // pszIndexName
  1229. CB_DBMAXTEXT_RDN, // dbcolumnMax
  1230. 0, // dbgrbit
  1231. JET_coltypLongText, // dbcoltyp
  1232. 0 // dbcolumnid
  1233. },
  1234. #if (DTC_MAX != 34)
  1235. #error -- bad DTC_MAX index
  1236. #endif
  1237. DBTABLE_NULL // Termination marker
  1238. };
  1239. //---------------------------------------------------------------------------
  1240. //
  1241. // Request Attributes Table:
  1242. //
  1243. //---------------------------------------------------------------------------
  1244. DBTABLE g_adtRequestAttributes[] =
  1245. {
  1246. #if (DTA_REQUESTID != 0)
  1247. #error -- bad DTA_REQUESTID index
  1248. #endif
  1249. { // ColumnType: DWORD
  1250. wszPROPATTRIBREQUESTID, // pwszPropName
  1251. NULL, // pwszPropNameObjId
  1252. 0, // dwFlags
  1253. sizeof(LONG), // dwcbMax
  1254. TABLE_ATTRIBUTES, // dwTable
  1255. szREQUESTID, // pszFieldName
  1256. szATTRIBUTE_REQUESTIDINDEX, // pszIndexName
  1257. 0, // dbcolumnMax
  1258. JET_bitColumnFixed, // dbgrbit
  1259. JET_coltypLong, // dbcoltyp
  1260. 0, // dbcolumnid
  1261. },
  1262. #if (DTA_ATTRIBUTENAME != 1)
  1263. #error -- bad DTA_ATTRIBUTENAME index
  1264. #endif
  1265. { // ColumnType: STRING
  1266. wszPROPATTRIBNAME, // pwszPropName
  1267. NULL, // pwszPropNameObjId
  1268. DBTF_INDEXREQUESTID, // dwFlags
  1269. CB_DBMAXTEXT_ATTRNAME, // dwcbMax
  1270. TABLE_ATTRIBUTES, // dwTable
  1271. szATTRIBUTENAME, // pszFieldName
  1272. szATTRIBUTE_REQUESTIDNAMEINDEX, // pszIndexName
  1273. CB_DBMAXTEXT_ATTRNAME, // dbcolumnMax
  1274. 0, // dbgrbit
  1275. JET_coltypText, // dbcoltyp
  1276. 0, // dbcolumnid
  1277. },
  1278. #if (DTA_ATTRIBUTEVALUE != 2)
  1279. #error -- bad DTA_ATTRIBUTEVALUE index
  1280. #endif
  1281. { // ColumnType: STRING
  1282. wszPROPATTRIBVALUE, // pwszPropName
  1283. NULL, // pwszPropNameObjId
  1284. 0, // dwFlags
  1285. CB_DBMAXTEXT_ATTRVALUE, // dwcbMax
  1286. TABLE_ATTRIBUTES, // dwTable
  1287. szATTRIBUTEVALUE, // pszFieldName
  1288. NULL, // pszIndexName
  1289. CB_DBMAXTEXT_ATTRVALUE, // dbcolumnMax
  1290. 0, // dbgrbit
  1291. JET_coltypLongText, // dbcoltyp
  1292. 0, // dbcolumnid
  1293. },
  1294. #if (DTA_MAX != 3)
  1295. #error -- bad DTA_MAX index
  1296. #endif
  1297. DBTABLE_NULL // Termination marker
  1298. };
  1299. //---------------------------------------------------------------------------
  1300. //
  1301. // Name Extensions Table:
  1302. //
  1303. //---------------------------------------------------------------------------
  1304. #if 0
  1305. WCHAR const wszDummy[] = L"Dummy Prop Name";
  1306. DBTABLE g_adtNameExtensions[] =
  1307. {
  1308. { // ColumnType: DWORD
  1309. wszDummy, // pwszPropName
  1310. NULL, // pwszPropNameObjId
  1311. 0, // dwFlags
  1312. sizeof(LONG), // dwcbMax
  1313. TABLE_NAMES, // dwTable
  1314. szNAMEID, // pszFieldName
  1315. NULL, // pszIndexName
  1316. 0, // dbcolumnMax
  1317. JET_bitColumnFixed, // dbgrbit
  1318. JET_coltypLong, // dbcoltyp
  1319. 0, // dbcolumnid
  1320. },
  1321. { // ColumnType: STRING
  1322. wszDummy, // pwszPropName
  1323. NULL, // pwszPropNameObjId
  1324. 0, // dwFlags
  1325. CB_DBMAXTEXT_OID, // dwcbMax
  1326. TABLE_NAMES, // dwTable
  1327. szEXTENSIONNAME, // pszFieldName
  1328. NULL, // pszIndexName
  1329. CB_DBMAXTEXT_OID, // dbcolumnMax
  1330. 0, // dbgrbit
  1331. JET_coltypText, // dbcoltyp
  1332. 0, // dbcolumnid
  1333. },
  1334. { // ColumnType: STRING
  1335. wszDummy, // pwszPropName
  1336. NULL, // pwszPropNameObjId
  1337. 0, // dwFlags
  1338. CB_DBMAXTEXT_RDN, // dwcbMax
  1339. TABLE_NAMES, // dwTable
  1340. szEXTENSIONVALUE, // pszFieldName
  1341. NULL, // pszIndexName
  1342. CB_DBMAXTEXT_RDN, // dbcolumnMax
  1343. 0, // dbgrbit
  1344. JET_coltypLongText, // dbcoltyp
  1345. 0, // dbcolumnid
  1346. },
  1347. DBTABLE_NULL // Termination marker
  1348. };
  1349. #endif
  1350. //---------------------------------------------------------------------------
  1351. //
  1352. // Certificate Extensions Table:
  1353. //
  1354. //---------------------------------------------------------------------------
  1355. DBTABLE g_adtCertExtensions[] =
  1356. {
  1357. #if (DTE_REQUESTID != 0)
  1358. #error -- bad DTE_REQUESTID index
  1359. #endif
  1360. { // ColumnType: DWORD
  1361. wszPROPEXTREQUESTID, // pwszPropName
  1362. NULL, // pwszPropNameObjId
  1363. 0, // dwFlags
  1364. sizeof(LONG), // dwcbMax
  1365. TABLE_EXTENSIONS, // dwTable
  1366. szREQUESTID, // pszFieldName
  1367. szEXTENSION_REQUESTIDINDEX, // pszIndexName
  1368. 0, // dbcolumnMax
  1369. JET_bitColumnFixed, // dbgrbit
  1370. JET_coltypLong, // dbcoltyp
  1371. 0, // dbcolumnid
  1372. },
  1373. #if (DTE_EXTENSIONNAME != 1)
  1374. #error -- bad DTE_EXTENSIONNAME index
  1375. #endif
  1376. { // ColumnType: STRING
  1377. wszPROPEXTNAME, // pwszPropName
  1378. NULL, // pwszPropNameObjId
  1379. DBTF_INDEXREQUESTID, // dwFlags
  1380. CB_DBMAXTEXT_OID, // dwcbMax
  1381. TABLE_EXTENSIONS, // dwTable
  1382. szEXTENSIONNAME, // pszFieldName
  1383. szEXTENSION_REQUESTIDNAMEINDEX, // pszIndexName
  1384. CB_DBMAXTEXT_OID, // dbcolumnMax
  1385. 0, // dbgrbit
  1386. JET_coltypText, // dbcoltyp
  1387. 0, // dbcolumnid
  1388. },
  1389. #if (DTE_EXTENSIONFLAGS != 2)
  1390. #error -- bad DTE_EXTENSIONFLAGS index
  1391. #endif
  1392. { // ColumnType: DWORD
  1393. wszPROPEXTFLAGS, // pwszPropName
  1394. NULL, // pwszPropNameObjId
  1395. 0, // dwFlags
  1396. sizeof(LONG), // dwcbMax
  1397. TABLE_EXTENSIONS, // dwTable
  1398. szEXTENSIONFLAGS, // pszFieldName
  1399. NULL, // pszIndexName
  1400. 0, // dbcolumnMax
  1401. JET_bitColumnFixed, // dbgrbit
  1402. JET_coltypLong, // dbcoltyp
  1403. 0, // dbcolumnid
  1404. },
  1405. #if (DTE_EXTENSIONRAWVALUE != 3)
  1406. #error -- bad DTE_EXTENSIONRAWVALUE index
  1407. #endif
  1408. { // ColumnType: BLOB
  1409. wszPROPEXTRAWVALUE, // pwszPropName
  1410. NULL, // pwszPropNameObjId
  1411. 0, // dwFlags
  1412. CB_DBMAXBINARY, // dwcbMax
  1413. TABLE_EXTENSIONS, // dwTable
  1414. szEXTENSIONRAWVALUE, // pszFieldName
  1415. NULL, // pszIndexName
  1416. CB_DBMAXBINARY, // dbcolumnMax
  1417. 0, // dbgrbit
  1418. JET_coltypLongBinary, // dbcoltyp
  1419. 0, // dbcolumnid
  1420. },
  1421. #if (DTE_MAX != 4)
  1422. #error -- bad DTE_MAX index
  1423. #endif
  1424. DBTABLE_NULL // Termination marker
  1425. };
  1426. //---------------------------------------------------------------------------
  1427. //
  1428. // CRL Table:
  1429. //
  1430. //---------------------------------------------------------------------------
  1431. DBTABLE g_adtCRLs[] =
  1432. {
  1433. #if (DTL_ROWID != 0)
  1434. #error -- bad DTL_ROWID index
  1435. #endif
  1436. { // ColumnType: DWORD
  1437. wszPROPCRLROWID, // pwszPropName
  1438. NULL, // pwszPropNameObjId
  1439. DBTF_INDEXPRIMARY, // dwFlags
  1440. sizeof(LONG), // dwcbMax
  1441. TABLE_CRLS, // dwTable
  1442. szCRLROWID, // pszFieldName
  1443. szCRL_ROWIDINDEX, // pszIndexName
  1444. 0, // dbcolumnMax
  1445. JET_bitColumnFixed | JET_bitColumnAutoincrement, // dbgrbit
  1446. JET_coltypLong, // dbcoltyp
  1447. 0 // dbcolumnid
  1448. },
  1449. #if (DTL_NUMBER != 1)
  1450. #error -- bad DTL_NUMBER index
  1451. #endif
  1452. { // ColumnType: DWORD
  1453. wszPROPCRLNUMBER, // pwszPropName
  1454. NULL, // pwszPropNameObjId
  1455. 0, // dwFlags
  1456. sizeof(LONG), // dwcbMax
  1457. TABLE_CRLS, // dwTable
  1458. szCRLNUMBER, // pszFieldName
  1459. szCRL_CRLNUMBERINDEX, // pszIndexName
  1460. 0, // dbcolumnMax
  1461. JET_bitColumnFixed, // dbgrbit
  1462. JET_coltypLong, // dbcoltyp
  1463. 0 // dbcolumnid
  1464. },
  1465. #if (DTL_MINBASE != 2)
  1466. #error -- bad DTL_MINBASE index
  1467. #endif
  1468. { // ColumnType: DWORD
  1469. wszPROPCRLMINBASE, // pwszPropName
  1470. NULL, // pwszPropNameObjId
  1471. 0, // dwFlags
  1472. sizeof(LONG), // dwcbMax
  1473. TABLE_CRLS, // dwTable
  1474. szCRLMINBASE, // pszFieldName
  1475. NULL, // pszIndexName
  1476. 0, // dbcolumnMax
  1477. JET_bitColumnFixed, // dbgrbit
  1478. JET_coltypLong, // dbcoltyp
  1479. 0 // dbcolumnid
  1480. },
  1481. #if (DTL_NAMEID != 3)
  1482. #error -- bad DTL_NAMEID index
  1483. #endif
  1484. { // ColumnType: DWORD
  1485. wszPROPCRLNAMEID, // pwszPropName
  1486. NULL, // pwszPropNameObjId
  1487. 0, // dwFlags
  1488. sizeof(LONG), // dwcbMax
  1489. TABLE_CRLS, // dwTable
  1490. szCRLNAMEID, // pszFieldName
  1491. NULL, // pszIndexName
  1492. 0, // dbcolumnMax
  1493. JET_bitColumnFixed, // dbgrbit
  1494. JET_coltypLong, // dbcoltyp
  1495. 0 // dbcolumnid
  1496. },
  1497. #if (DTL_COUNT != 4)
  1498. #error -- bad DTL_COUNT index
  1499. #endif
  1500. { // ColumnType: DWORD
  1501. wszPROPCRLCOUNT, // pwszPropName
  1502. NULL, // pwszPropNameObjId
  1503. 0, // dwFlags
  1504. sizeof(LONG), // dwcbMax
  1505. TABLE_CRLS, // dwTable
  1506. szCRLCOUNT, // pszFieldName
  1507. NULL, // pszIndexName
  1508. 0, // dbcolumnMax
  1509. JET_bitColumnFixed, // dbgrbit
  1510. JET_coltypLong, // dbcoltyp
  1511. 0 // dbcolumnid
  1512. },
  1513. #if (DTL_THISUPDATEDATE != 5)
  1514. #error -- bad DTL_THISUPDATEDATE index
  1515. #endif
  1516. { // ColumnType: FILETIME
  1517. wszPROPCRLTHISUPDATE, // pwszPropName
  1518. NULL, // pwszPropNameObjId
  1519. 0, // dwFlags
  1520. sizeof(DATE), // dwcbMax
  1521. TABLE_CRLS, // dwTable
  1522. szCRLTHISUPDATE, // pszFieldName
  1523. NULL, // pszIndexName
  1524. 0, // dbcolumnMax
  1525. JET_bitColumnFixed, // dbgrbit
  1526. JET_coltypDateTime, // dbcoltyp
  1527. 0 // dbcolumnid
  1528. },
  1529. #if (DTL_NEXTUPDATEDATE != 6)
  1530. #error -- bad DTL_NEXTUPDATEDATE index
  1531. #endif
  1532. { // ColumnType: FILETIME
  1533. wszPROPCRLNEXTUPDATE, // pwszPropName
  1534. NULL, // pwszPropNameObjId
  1535. 0, // dwFlags
  1536. sizeof(DATE), // dwcbMax
  1537. TABLE_CRLS, // dwTable
  1538. szCRLNEXTUPDATE, // pszFieldName
  1539. szCRL_CRLNEXTUPDATEINDEX, // pszIndexName
  1540. 0, // dbcolumnMax
  1541. JET_bitColumnFixed, // dbgrbit
  1542. JET_coltypDateTime, // dbcoltyp
  1543. 0 // dbcolumnid
  1544. },
  1545. #if (DTL_THISPUBLISHDATE != 7)
  1546. #error -- bad DTL_THISPUBLISHDATE index
  1547. #endif
  1548. { // ColumnType: FILETIME
  1549. wszPROPCRLTHISPUBLISH, // pwszPropName
  1550. NULL, // pwszPropNameObjId
  1551. 0, // dwFlags
  1552. sizeof(DATE), // dwcbMax
  1553. TABLE_CRLS, // dwTable
  1554. szCRLTHISPUBLISH, // pszFieldName
  1555. NULL, // pszIndexName
  1556. 0, // dbcolumnMax
  1557. JET_bitColumnFixed, // dbgrbit
  1558. JET_coltypDateTime, // dbcoltyp
  1559. 0 // dbcolumnid
  1560. },
  1561. #if (DTL_NEXTPUBLISHDATE != 8)
  1562. #error -- bad DTL_NEXTPUBLISHDATE index
  1563. #endif
  1564. { // ColumnType: FILETIME
  1565. wszPROPCRLNEXTPUBLISH, // pwszPropName
  1566. NULL, // pwszPropNameObjId
  1567. 0, // dwFlags
  1568. sizeof(DATE), // dwcbMax
  1569. TABLE_CRLS, // dwTable
  1570. szCRLNEXTPUBLISH, // pszFieldName
  1571. szCRL_CRLNEXTPUBLISHINDEX, // pszIndexName
  1572. 0, // dbcolumnMax
  1573. JET_bitColumnFixed, // dbgrbit
  1574. JET_coltypDateTime, // dbcoltyp
  1575. 0 // dbcolumnid
  1576. },
  1577. #if (DTL_EFFECTIVEDATE != 9)
  1578. #error -- bad DTL_EFFECTIVEDATE index
  1579. #endif
  1580. { // ColumnType: FILETIME
  1581. wszPROPCRLEFFECTIVE, // pwszPropName
  1582. NULL, // pwszPropNameObjId
  1583. 0, // dwFlags
  1584. sizeof(DATE), // dwcbMax
  1585. TABLE_CRLS, // dwTable
  1586. szCRLEFFECTIVE, // pszFieldName
  1587. NULL, // pszIndexName
  1588. 0, // dbcolumnMax
  1589. JET_bitColumnFixed, // dbgrbit
  1590. JET_coltypDateTime, // dbcoltyp
  1591. 0 // dbcolumnid
  1592. },
  1593. #if (DTL_PROPAGATIONCOMPLETEDATE != 10)
  1594. #error -- bad DTL_PROPAGATIONCOMPLETEDATE index
  1595. #endif
  1596. { // ColumnType: FILETIME
  1597. wszPROPCRLPROPAGATIONCOMPLETE, // pwszPropName
  1598. NULL, // pwszPropNameObjId
  1599. 0, // dwFlags
  1600. sizeof(DATE), // dwcbMax
  1601. TABLE_CRLS, // dwTable
  1602. szCRLPROPAGATIONCOMPLETE, // pszFieldName
  1603. szCRL_CRLPROPAGATIONCOMPLETEINDEX, // pszIndexName
  1604. 0, // dbcolumnMax
  1605. JET_bitColumnFixed, // dbgrbit
  1606. JET_coltypDateTime, // dbcoltyp
  1607. 0 // dbcolumnid
  1608. },
  1609. #if (DTL_LASTPUBLISHEDDATE != 11)
  1610. #error -- bad DTL_LASTPUBLISHEDDATE index
  1611. #endif
  1612. { // ColumnType: FILETIME
  1613. wszPROPCRLLASTPUBLISHED, // pwszPropName
  1614. NULL, // pwszPropNameObjId
  1615. 0, // dwFlags
  1616. sizeof(DATE), // dwcbMax
  1617. TABLE_CRLS, // dwTable
  1618. szCRLLASTPUBLISHED, // pszFieldName
  1619. szCRL_CRLLASTPUBLISHEDINDEX, // pszIndexName
  1620. 0, // dbcolumnMax
  1621. JET_bitColumnFixed, // dbgrbit
  1622. JET_coltypDateTime, // dbcoltyp
  1623. 0 // dbcolumnid
  1624. },
  1625. #if (DTL_PUBLISHATTEMPTS != 12)
  1626. #error -- bad DTL_PUBLISHATTEMPTS index
  1627. #endif
  1628. { // ColumnType: DWORD
  1629. wszPROPCRLPUBLISHATTEMPTS, // pwszPropName
  1630. NULL, // pwszPropNameObjId
  1631. 0, // dwFlags
  1632. sizeof(LONG), // dwcbMax
  1633. TABLE_CRLS, // dwTable
  1634. szCRLPUBLISHATTEMPTS, // pszFieldName
  1635. szCRL_CRLPUBLISHATTEMPTSINDEX, // pszIndexName
  1636. 0, // dbcolumnMax
  1637. JET_bitColumnFixed, // dbgrbit
  1638. JET_coltypLong, // dbcoltyp
  1639. 0 // dbcolumnid
  1640. },
  1641. #if (DTL_PUBLISHFLAGS != 13)
  1642. #error -- bad DTL_PUBLISHFLAGS index
  1643. #endif
  1644. { // ColumnType: DWORD
  1645. wszPROPCRLPUBLISHFLAGS, // pwszPropName
  1646. NULL, // pwszPropNameObjId
  1647. 0, // dwFlags
  1648. sizeof(LONG), // dwcbMax
  1649. TABLE_CRLS, // dwTable
  1650. szCRLPUBLISHFLAGS, // pszFieldName
  1651. NULL, // pszIndexName
  1652. 0, // dbcolumnMax
  1653. JET_bitColumnFixed, // dbgrbit
  1654. JET_coltypLong, // dbcoltyp
  1655. 0 // dbcolumnid
  1656. },
  1657. #if (DTL_PUBLISHSTATUSCODE != 14)
  1658. #error -- bad DTL_PUBLISHSTATUSCODE index
  1659. #endif
  1660. { // ColumnType: DWORD
  1661. wszPROPCRLPUBLISHSTATUSCODE, // pwszPropName
  1662. NULL, // pwszPropNameObjId
  1663. 0, // dwFlags
  1664. sizeof(LONG), // dwcbMax
  1665. TABLE_CRLS, // dwTable
  1666. szCRLPUBLISHSTATUSCODE, // pszFieldName
  1667. szCRL_CRLPUBLSTATUSCODEISHINDEX, // pszIndexName
  1668. 0, // dbcolumnMax
  1669. JET_bitColumnFixed, // dbgrbit
  1670. JET_coltypLong, // dbcoltyp
  1671. 0 // dbcolumnid
  1672. },
  1673. #if (DTL_PUBLISHERROR != 15)
  1674. #error -- bad DTL_PUBLISHERROR index
  1675. #endif
  1676. { // ColumnType: STRING
  1677. wszPROPCRLPUBLISHERROR, // pwszPropName
  1678. NULL, // pwszPropNameObjId
  1679. DBTF_COLUMNRENAMED, // dwFlags
  1680. CB_DBMAXTEXT_DISPSTRING, // dwcbMax
  1681. TABLE_CRLS, // dwTable
  1682. szCRLPUBLISHERROR "\0" szCRLPUBLISHERROR_OLD, // pszFieldName
  1683. NULL, // pszIndexName
  1684. CB_DBMAXTEXT_DISPSTRING, // dwcbMax
  1685. 0, // dbgrbit
  1686. JET_coltypLongText, // dbcoltyp
  1687. 0, // dbcolumnid
  1688. },
  1689. #if (DTL_RAWCRL != 16)
  1690. #error -- bad DTL_RAWCRL index
  1691. #endif
  1692. { // ColumnType: BLOB
  1693. wszPROPCRLRAWCRL, // pwszPropName
  1694. NULL, // pwszPropNameObjId
  1695. 0, // dwFlags
  1696. CB_DBMAXRAWCRL, // dwcbMax
  1697. TABLE_CRLS, // dwTable
  1698. szRAWCRL, // pszFieldName
  1699. NULL, // pszIndexName
  1700. CB_DBMAXRAWCRL, // dbcolumnMax
  1701. 0, // dbgrbit
  1702. JET_coltypLongBinary, // dbcoltyp
  1703. 0, // dbcolumnid
  1704. },
  1705. #if (DTL_MAX != 17)
  1706. #error -- bad DTL_MAX index
  1707. #endif
  1708. DBTABLE_NULL // Termination marker
  1709. };
  1710. DBAUXDATA g_dbauxRequests = {
  1711. szREQUESTTABLE, // pszTable
  1712. szREQUEST_REQUESTIDINDEX, // pszRowIdIndex
  1713. NULL, // pszRowIdNameIndex
  1714. NULL, // pszNameIndex
  1715. &g_adtRequests[DTR_REQUESTID], // pdtRowId
  1716. NULL, // pdtName
  1717. NULL, // pdtFlags
  1718. NULL, // pdtValue
  1719. NULL, // pdtIssuerNameId
  1720. };
  1721. DBAUXDATA g_dbauxCertificates = {
  1722. szCERTIFICATETABLE, // pszTable
  1723. szCERTIFICATE_REQUESTIDINDEX, // pszRowIdIndex
  1724. NULL, // pszRowIdNameIndex
  1725. szCERTIFICATE_SERIALNUMBERINDEX, // pszNameIndex
  1726. &g_adtCertificates[DTC_REQUESTID], // pdtRowId
  1727. &g_adtCertificates[DTC_CERTIFICATESERIALNUMBER],// pdtName
  1728. NULL, // pdtFlags
  1729. NULL, // pdtValue
  1730. &g_adtCertificates[DTC_CERTIFICATEISSUERNAMEID],// pdtIssuerNameId
  1731. };
  1732. DBAUXDATA g_dbauxAttributes = {
  1733. szREQUESTATTRIBUTETABLE, // pszTable
  1734. szATTRIBUTE_REQUESTIDINDEX, // pszRowIdIndex
  1735. szATTRIBUTE_REQUESTIDNAMEINDEX, // pszRowIdNameIndex
  1736. NULL, // pszNameIndex
  1737. &g_adtRequestAttributes[DTA_REQUESTID], // pdtRowId
  1738. &g_adtRequestAttributes[DTA_ATTRIBUTENAME], // pdtName
  1739. NULL, // pdtFlags
  1740. &g_adtRequestAttributes[DTA_ATTRIBUTEVALUE],// pdtValue
  1741. NULL, // pdtIssuerNameId
  1742. };
  1743. DBAUXDATA g_dbauxExtensions = {
  1744. szCERTIFICATEEXTENSIONTABLE, // pszTable
  1745. szEXTENSION_REQUESTIDINDEX, // pszRowIdIndex
  1746. szEXTENSION_REQUESTIDNAMEINDEX, // pszRowIdNameIndex
  1747. NULL, // pszNameIndex
  1748. &g_adtCertExtensions[DTE_REQUESTID], // pdtRowId
  1749. &g_adtCertExtensions[DTE_EXTENSIONNAME], // pdtName
  1750. &g_adtCertExtensions[DTE_EXTENSIONFLAGS], // pdtFlags
  1751. &g_adtCertExtensions[DTE_EXTENSIONRAWVALUE],// pdtValue
  1752. NULL, // pdtIssuerNameId
  1753. };
  1754. DBAUXDATA g_dbauxCRLs = {
  1755. szCRLTABLE, // pszTable
  1756. szCRL_ROWIDINDEX, // pszRowIdIndex
  1757. NULL, // pszRowIdNameIndex
  1758. NULL, // pszNameIndex
  1759. &g_adtCRLs[DTL_ROWID], // pdtRowId
  1760. NULL, // pdtName
  1761. NULL, // pdtFlags
  1762. NULL, // pdtValue
  1763. &g_adtCRLs[DTL_NAMEID], // pdtIssuerNameId
  1764. };
  1765. DBCREATETABLE const g_actDataBase[] = {
  1766. { szCERTIFICATETABLE, &g_dbauxCertificates, g_adtCertificates },
  1767. { szREQUESTTABLE, &g_dbauxRequests, g_adtRequests },
  1768. { szREQUESTATTRIBUTETABLE, &g_dbauxAttributes, g_adtRequestAttributes },
  1769. //{ szNAMEEXTENSIONTABLE, &g_dbauxNameExtensions, g_adtNameExtensions },
  1770. { szCERTIFICATEEXTENSIONTABLE, &g_dbauxExtensions, g_adtCertExtensions },
  1771. { szCRLTABLE, &g_dbauxCRLs, g_adtCRLs },
  1772. { NULL, NULL, NULL },
  1773. };
  1774. // Note: Ordered DUPTABLE must include all Names Table columns.
  1775. DUPTABLE const g_dntr[] =
  1776. {
  1777. { "Country", wszPROPSUBJECTCOUNTRY, },
  1778. { "Organization", wszPROPSUBJECTORGANIZATION, },
  1779. { "OrganizationalUnit", wszPROPSUBJECTORGUNIT, },
  1780. { "CommonName", wszPROPSUBJECTCOMMONNAME, },
  1781. { "Locality", wszPROPSUBJECTLOCALITY, },
  1782. { "StateOrProvince", wszPROPSUBJECTSTATE, },
  1783. { "Title", wszPROPSUBJECTTITLE, },
  1784. { "GivenName", wszPROPSUBJECTGIVENNAME, },
  1785. { "Initials", wszPROPSUBJECTINITIALS, },
  1786. { "SurName", wszPROPSUBJECTSURNAME, },
  1787. { "DomainComponent", wszPROPSUBJECTDOMAINCOMPONENT, },
  1788. { "EMailAddress", wszPROPSUBJECTEMAIL, },
  1789. { "StreetAddress", wszPROPSUBJECTSTREETADDRESS, },
  1790. { "UnstructuredName", wszPROPSUBJECTUNSTRUCTUREDNAME, },
  1791. { "UnstructuredAddress", wszPROPSUBJECTUNSTRUCTUREDADDRESS, },
  1792. { "DeviceSerialNumber", wszPROPSUBJECTDEVICESERIALNUMBER, },
  1793. { NULL, NULL },
  1794. };
  1795. DWORD g_aColumnViewQueue[] =
  1796. {
  1797. DTI_REQUESTTABLE | DTR_REQUESTID,
  1798. DTI_REQUESTTABLE | DTR_REQUESTERNAME,
  1799. DTI_REQUESTTABLE | DTR_REQUESTSUBMITTEDWHEN,
  1800. DTI_REQUESTTABLE | DTR_REQUESTSTATUSCODE,
  1801. DTI_REQUESTTABLE | DTR_REQUESTDISPOSITIONMESSAGE,
  1802. DTI_CERTIFICATETABLE | DTC_CERTIFICATETEMPLATE,
  1803. DTI_REQUESTTABLE | DTR_COMMONNAME,
  1804. DTI_REQUESTTABLE | DTR_EMAIL,
  1805. DTI_REQUESTTABLE | DTR_ORGUNIT,
  1806. DTI_REQUESTTABLE | DTR_ORGANIZATION,
  1807. DTI_REQUESTTABLE | DTR_LOCALITY,
  1808. DTI_REQUESTTABLE | DTR_STATE,
  1809. DTI_REQUESTTABLE | DTR_COUNTRY,
  1810. DTI_REQUESTTABLE | DTR_REQUESTRAWREQUEST,
  1811. //DTI_REQUESTTABLE | DTR_REQUESTRAWOLDCERTIFICATE,
  1812. //DTI_REQUESTTABLE | DTR_REQUESTRAWARCHIVEDKEY,
  1813. //DTI_REQUESTTABLE | DTR_REQUESTKEYRECOVERYHASHES,
  1814. //DTI_REQUESTTABLE | DTR_STREETADDRESS,
  1815. //DTI_REQUESTTABLE | DTR_TITLE,
  1816. //DTI_REQUESTTABLE | DTR_GIVENNAME,
  1817. //DTI_REQUESTTABLE | DTR_INITIALS,
  1818. //DTI_REQUESTTABLE | DTR_SURNAME,
  1819. //DTI_REQUESTTABLE | DTR_DOMAINCOMPONENT,
  1820. //DTI_REQUESTTABLE | DTR_UNSTRUCTUREDNAME,
  1821. //DTI_REQUESTTABLE | DTR_UNSTRUCTUREDADDRESS,
  1822. //DTI_REQUESTTABLE | DTR_DEVICESERIALNUMBER,
  1823. //DTI_REQUESTTABLE | DTR_RAWNAME,
  1824. //DTI_REQUESTTABLE | DTR_REQUESTDISPOSITION,
  1825. //DTI_REQUESTTABLE | DTR_REQUESTATTRIBUTES,
  1826. //DTI_REQUESTTABLE | DTR_REQUESTTYPE,
  1827. //DTI_REQUESTTABLE | DTR_REQUESTFLAGS,
  1828. //DTI_REQUESTTABLE | DTR_REQUESTRESOLVEDWHEN,
  1829. //DTI_REQUESTTABLE | DTR_REQUESTREVOKEDWHEN,
  1830. //DTI_REQUESTTABLE | DTR_REQUESTREVOKEDEFFECTIVEWHEN,
  1831. //DTI_REQUESTTABLE | DTR_REQUESTREVOKEDREASON,
  1832. //DTI_REQUESTTABLE | DTR_CALLERNAME,
  1833. //DTI_REQUESTTABLE | DTR_SIGNERPOLICIES,
  1834. //DTI_REQUESTTABLE | DTR_SIGNERAPPLICATIONPOLICIES,
  1835. //DTI_REQUESTTABLE | DTR_OFFICER,
  1836. //DTI_REQUESTTABLE | DTR_DISTINGUISHEDNAME,
  1837. //DTI_CERTIFICATETABLE | DTC_REQUESTID,
  1838. //DTI_CERTIFICATETABLE | DTC_RAWCERTIFICATE,
  1839. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEHASH,
  1840. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEENROLLMENTFLAGS,
  1841. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEGENERALFLAGS,
  1842. //DTI_CERTIFICATETABLE | DTC_CERTIFICATESERIALNUMBER,
  1843. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEISSUERNAMEID,
  1844. //DTI_CERTIFICATETABLE | DTC_CERTIFICATENOTBEFOREDATE,
  1845. //DTI_CERTIFICATETABLE | DTC_CERTIFICATENOTAFTERDATE,
  1846. //DTI_CERTIFICATETABLE | DTC_CERTIFICATESUBJECTKEYIDENTIFIER,
  1847. //DTI_CERTIFICATETABLE | DTC_CERTIFICATERAWPUBLICKEY,
  1848. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEPUBLICKEYLENGTH,
  1849. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEPUBLICKEYALGORITHM,
  1850. //DTI_CERTIFICATETABLE | DTC_CERTIFICATERAWPUBLICKEYALGORITHMPARAMETERS,
  1851. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEUPN,
  1852. //DTI_CERTIFICATETABLE | DTC_DISTINGUISHEDNAME,
  1853. //DTI_CERTIFICATETABLE | DTC_RAWNAME,
  1854. //DTI_CERTIFICATETABLE | DTC_COUNTRY,
  1855. //DTI_CERTIFICATETABLE | DTC_ORGANIZATION,
  1856. //DTI_CERTIFICATETABLE | DTC_ORGUNIT,
  1857. //DTI_CERTIFICATETABLE | DTC_COMMONNAME,
  1858. //DTI_CERTIFICATETABLE | DTC_LOCALITY,
  1859. //DTI_CERTIFICATETABLE | DTC_STATE,
  1860. //DTI_CERTIFICATETABLE | DTC_TITLE,
  1861. //DTI_CERTIFICATETABLE | DTC_GIVENNAME,
  1862. //DTI_CERTIFICATETABLE | DTC_INITIALS,
  1863. //DTI_CERTIFICATETABLE | DTC_SURNAME,
  1864. //DTI_CERTIFICATETABLE | DTC_DOMAINCOMPONENT,
  1865. //DTI_CERTIFICATETABLE | DTC_EMAIL,
  1866. //DTI_CERTIFICATETABLE | DTC_STREETADDRESS,
  1867. //DTI_CERTIFICATETABLE | DTC_UNSTRUCTUREDNAME,
  1868. //DTI_CERTIFICATETABLE | DTC_UNSTRUCTUREDADDRESS,
  1869. //DTI_CERTIFICATETABLE | DTC_DEVICESERIALNUMBER,
  1870. };
  1871. DWORD g_cColumnViewQueue = ARRAYSIZE(g_aColumnViewQueue);
  1872. DWORD g_aColumnViewLog[] =
  1873. {
  1874. DTI_REQUESTTABLE | DTR_REQUESTID,
  1875. DTI_REQUESTTABLE | DTR_REQUESTERNAME,
  1876. DTI_CERTIFICATETABLE | DTC_CERTIFICATESERIALNUMBER,
  1877. DTI_CERTIFICATETABLE | DTC_CERTIFICATENOTBEFOREDATE,
  1878. DTI_CERTIFICATETABLE | DTC_CERTIFICATENOTAFTERDATE,
  1879. DTI_CERTIFICATETABLE | DTC_CERTIFICATETEMPLATE,
  1880. DTI_CERTIFICATETABLE | DTC_COMMONNAME,
  1881. DTI_CERTIFICATETABLE | DTC_EMAIL,
  1882. DTI_CERTIFICATETABLE | DTC_ORGUNIT,
  1883. DTI_CERTIFICATETABLE | DTC_ORGANIZATION,
  1884. DTI_CERTIFICATETABLE | DTC_LOCALITY,
  1885. DTI_CERTIFICATETABLE | DTC_STATE,
  1886. DTI_CERTIFICATETABLE | DTC_COUNTRY,
  1887. DTI_CERTIFICATETABLE | DTC_RAWCERTIFICATE,
  1888. //DTI_CERTIFICATETABLE | DTC_TITLE,
  1889. //DTI_CERTIFICATETABLE | DTC_GIVENNAME,
  1890. //DTI_CERTIFICATETABLE | DTC_INITIALS,
  1891. //DTI_CERTIFICATETABLE | DTC_SURNAME,
  1892. //DTI_CERTIFICATETABLE | DTC_DOMAINCOMPONENT,
  1893. //DTI_CERTIFICATETABLE | DTC_UNSTRUCTUREDNAME,
  1894. //DTI_CERTIFICATETABLE | DTC_UNSTRUCTUREDADDRESS,
  1895. //DTI_CERTIFICATETABLE | DTC_DEVICESERIALNUMBER,
  1896. //DTI_CERTIFICATETABLE | DTC_DISTINGUISHEDNAME,
  1897. //DTI_CERTIFICATETABLE | DTC_STREETADDRESS,
  1898. //DTI_REQUESTTABLE | DTR_REQUESTRAWREQUEST,
  1899. //DTI_REQUESTTABLE | DTR_REQUESTRAWOLDCERTIFICATE,
  1900. //DTI_REQUESTTABLE | DTR_REQUESTRAWARCHIVEDKEY,
  1901. //DTI_REQUESTTABLE | DTR_REQUESTKEYRECOVERYHASHES,
  1902. //DTI_REQUESTTABLE | DTR_REQUESTATTRIBUTES,
  1903. //DTI_REQUESTTABLE | DTR_REQUESTTYPE,
  1904. //DTI_REQUESTTABLE | DTR_REQUESTFLAGS,
  1905. //DTI_REQUESTTABLE | DTR_REQUESTSTATUSCODE,
  1906. //DTI_REQUESTTABLE | DTR_REQUESTDISPOSITION,
  1907. //DTI_REQUESTTABLE | DTR_REQUESTDISPOSITIONMESSAGE,
  1908. //DTI_REQUESTTABLE | DTR_REQUESTSUBMITTEDWHEN,
  1909. //DTI_REQUESTTABLE | DTR_REQUESTRESOLVEDWHEN,
  1910. //DTI_REQUESTTABLE | DTR_REQUESTREVOKEDWHEN,
  1911. //DTI_REQUESTTABLE | DTR_REQUESTREVOKEDEFFECTIVEWHEN,
  1912. //DTI_REQUESTTABLE | DTR_REQUESTREVOKEDREASON,
  1913. //DTI_REQUESTTABLE | DTR_CALLERNAME,
  1914. //DTI_REQUESTTABLE | DTR_SIGNERPOLICIES,
  1915. //DTI_REQUESTTABLE | DTR_SIGNERAPPLICATIONPOLICIES,
  1916. //DTI_REQUESTTABLE | DTR_OFFICER,
  1917. //DTI_REQUESTTABLE | DTR_DISTINGUISHEDNAME,
  1918. //DTI_REQUESTTABLE | DTR_RAWNAME,
  1919. //DTI_REQUESTTABLE | DTR_COUNTRY,
  1920. //DTI_REQUESTTABLE | DTR_ORGANIZATION,
  1921. //DTI_REQUESTTABLE | DTR_ORGUNIT,
  1922. //DTI_REQUESTTABLE | DTR_COMMONNAME,
  1923. //DTI_REQUESTTABLE | DTR_LOCALITY,
  1924. //DTI_REQUESTTABLE | DTR_STATE,
  1925. //DTI_REQUESTTABLE | DTR_TITLE,
  1926. //DTI_REQUESTTABLE | DTR_GIVENNAME,
  1927. //DTI_REQUESTTABLE | DTR_INITIALS,
  1928. //DTI_REQUESTTABLE | DTR_SURNAME,
  1929. //DTI_REQUESTTABLE | DTR_DOMAINCOMPONENT,
  1930. //DTI_REQUESTTABLE | DTR_EMAIL,
  1931. //DTI_REQUESTTABLE | DTR_STREETADDRESS,
  1932. //DTI_REQUESTTABLE | DTR_UNSTRUCTUREDNAME,
  1933. //DTI_REQUESTTABLE | DTR_UNSTRUCTUREDADDRESS,
  1934. //DTI_REQUESTTABLE | DTR_DEVICESERIALNUMBER,
  1935. //DTI_CERTIFICATETABLE | DTC_REQUESTID,
  1936. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEHASH,
  1937. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEENROLLMENTFLAGS,
  1938. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEGENERALFLAGS,
  1939. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEISSUERNAMEID,
  1940. //DTI_CERTIFICATETABLE | DTC_CERTIFICATESUBJECTKEYIDENTIFIER,
  1941. //DTI_CERTIFICATETABLE | DTC_CERTIFICATERAWPUBLICKEY,
  1942. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEPUBLICKEYLENGTH,
  1943. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEPUBLICKEYALGORITHM,
  1944. //DTI_CERTIFICATETABLE | DTC_CERTIFICATERAWPUBLICKEYALGORITHMPARAMETERS,
  1945. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEUPN,
  1946. //DTI_CERTIFICATETABLE | DTC_RAWNAME,
  1947. };
  1948. DWORD g_cColumnViewLog = ARRAYSIZE(g_aColumnViewLog);
  1949. DWORD g_aColumnViewRevoked[] =
  1950. {
  1951. DTI_REQUESTTABLE | DTR_REQUESTID,
  1952. DTI_REQUESTTABLE | DTR_REQUESTERNAME,
  1953. DTI_CERTIFICATETABLE | DTC_CERTIFICATESERIALNUMBER,
  1954. DTI_CERTIFICATETABLE | DTC_CERTIFICATENOTBEFOREDATE,
  1955. DTI_CERTIFICATETABLE | DTC_CERTIFICATENOTAFTERDATE,
  1956. DTI_CERTIFICATETABLE | DTC_CERTIFICATETEMPLATE,
  1957. DTI_CERTIFICATETABLE | DTC_COMMONNAME,
  1958. DTI_CERTIFICATETABLE | DTC_EMAIL,
  1959. DTI_CERTIFICATETABLE | DTC_ORGUNIT,
  1960. DTI_CERTIFICATETABLE | DTC_ORGANIZATION,
  1961. DTI_CERTIFICATETABLE | DTC_LOCALITY,
  1962. DTI_CERTIFICATETABLE | DTC_STATE,
  1963. DTI_CERTIFICATETABLE | DTC_COUNTRY,
  1964. DTI_CERTIFICATETABLE | DTC_RAWCERTIFICATE,
  1965. DTI_REQUESTTABLE | DTR_REQUESTREVOKEDWHEN,
  1966. DTI_REQUESTTABLE | DTR_REQUESTREVOKEDEFFECTIVEWHEN,
  1967. DTI_REQUESTTABLE | DTR_REQUESTREVOKEDREASON,
  1968. //DTI_CERTIFICATETABLE | DTC_TITLE,
  1969. //DTI_CERTIFICATETABLE | DTC_GIVENNAME,
  1970. //DTI_CERTIFICATETABLE | DTC_INITIALS,
  1971. //DTI_CERTIFICATETABLE | DTC_SURNAME,
  1972. //DTI_CERTIFICATETABLE | DTC_DOMAINCOMPONENT,
  1973. //DTI_CERTIFICATETABLE | DTC_UNSTRUCTUREDNAME,
  1974. //DTI_CERTIFICATETABLE | DTC_UNSTRUCTUREDADDRESS,
  1975. //DTI_CERTIFICATETABLE | DTC_DEVICESERIALNUMBER,
  1976. //DTI_CERTIFICATETABLE | DTC_DISTINGUISHEDNAME,
  1977. //DTI_CERTIFICATETABLE | DTC_STREETADDRESS,
  1978. //DTI_REQUESTTABLE | DTR_REQUESTRAWREQUEST,
  1979. //DTI_REQUESTTABLE | DTR_REQUESTRAWOLDCERTIFICATE,
  1980. //DTI_REQUESTTABLE | DTR_REQUESTRAWARCHIVEDKEY,
  1981. //DTI_REQUESTTABLE | DTR_REQUESTKEYRECOVERYHASHES,
  1982. //DTI_REQUESTTABLE | DTR_REQUESTATTRIBUTES,
  1983. //DTI_REQUESTTABLE | DTR_REQUESTTYPE,
  1984. //DTI_REQUESTTABLE | DTR_REQUESTFLAGS,
  1985. //DTI_REQUESTTABLE | DTR_REQUESTSTATUSCODE,
  1986. //DTI_REQUESTTABLE | DTR_REQUESTDISPOSITION,
  1987. //DTI_REQUESTTABLE | DTR_REQUESTDISPOSITIONMESSAGE,
  1988. //DTI_REQUESTTABLE | DTR_REQUESTSUBMITTEDWHEN,
  1989. //DTI_REQUESTTABLE | DTR_REQUESTRESOLVEDWHEN,
  1990. //DTI_REQUESTTABLE | DTR_CALLERNAME,
  1991. //DTI_REQUESTTABLE | DTR_SIGNERPOLICIES,
  1992. //DTI_REQUESTTABLE | DTR_SIGNERAPPLICATIONPOLICIES,
  1993. //DTI_REQUESTTABLE | DTR_OFFICER,
  1994. //DTI_REQUESTTABLE | DTR_DISTINGUISHEDNAME,
  1995. //DTI_REQUESTTABLE | DTR_RAWNAME,
  1996. //DTI_REQUESTTABLE | DTR_COUNTRY,
  1997. //DTI_REQUESTTABLE | DTR_ORGANIZATION,
  1998. //DTI_REQUESTTABLE | DTR_ORGUNIT,
  1999. //DTI_REQUESTTABLE | DTR_COMMONNAME,
  2000. //DTI_REQUESTTABLE | DTR_LOCALITY,
  2001. //DTI_REQUESTTABLE | DTR_STATE,
  2002. //DTI_REQUESTTABLE | DTR_TITLE,
  2003. //DTI_REQUESTTABLE | DTR_GIVENNAME,
  2004. //DTI_REQUESTTABLE | DTR_INITIALS,
  2005. //DTI_REQUESTTABLE | DTR_SURNAME,
  2006. //DTI_REQUESTTABLE | DTR_DOMAINCOMPONENT,
  2007. //DTI_REQUESTTABLE | DTR_EMAIL,
  2008. //DTI_REQUESTTABLE | DTR_STREETADDRESS,
  2009. //DTI_REQUESTTABLE | DTR_UNSTRUCTUREDNAME,
  2010. //DTI_REQUESTTABLE | DTR_UNSTRUCTUREDADDRESS,
  2011. //DTI_REQUESTTABLE | DTR_DEVICESERIALNUMBER,
  2012. //DTI_CERTIFICATETABLE | DTC_REQUESTID,
  2013. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEHASH,
  2014. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEENROLLMENTFLAGS,
  2015. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEGENERALFLAGS,
  2016. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEISSUERNAMEID,
  2017. //DTI_CERTIFICATETABLE | DTC_CERTIFICATESUBJECTKEYIDENTIFIER,
  2018. //DTI_CERTIFICATETABLE | DTC_CERTIFICATERAWPUBLICKEY,
  2019. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEPUBLICKEYLENGTH,
  2020. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEPUBLICKEYALGORITHM,
  2021. //DTI_CERTIFICATETABLE | DTC_CERTIFICATERAWPUBLICKEYALGORITHMPARAMETERS,
  2022. //DTI_CERTIFICATETABLE | DTC_CERTIFICATEUPN,
  2023. //DTI_CERTIFICATETABLE | DTC_RAWNAME,
  2024. };
  2025. DWORD g_cColumnViewRevoked = ARRAYSIZE(g_aColumnViewRevoked);
  2026. DWORD g_aColumnViewExtension[] =
  2027. {
  2028. DTI_EXTENSIONTABLE | DTE_REQUESTID,
  2029. DTI_EXTENSIONTABLE | DTE_EXTENSIONNAME,
  2030. DTI_EXTENSIONTABLE | DTE_EXTENSIONFLAGS,
  2031. DTI_EXTENSIONTABLE | DTE_EXTENSIONRAWVALUE,
  2032. };
  2033. DWORD g_cColumnViewExtension = ARRAYSIZE(g_aColumnViewExtension);
  2034. DWORD g_aColumnViewAttribute[] =
  2035. {
  2036. DTI_ATTRIBUTETABLE | DTA_REQUESTID,
  2037. DTI_ATTRIBUTETABLE | DTA_ATTRIBUTENAME,
  2038. DTI_ATTRIBUTETABLE | DTA_ATTRIBUTEVALUE,
  2039. };
  2040. DWORD g_cColumnViewAttribute = ARRAYSIZE(g_aColumnViewAttribute);
  2041. DWORD g_aColumnViewCRL[] =
  2042. {
  2043. DTI_CRLTABLE | DTL_ROWID,
  2044. DTI_CRLTABLE | DTL_NUMBER,
  2045. DTI_CRLTABLE | DTL_MINBASE,
  2046. DTI_CRLTABLE | DTL_NAMEID,
  2047. DTI_CRLTABLE | DTL_COUNT,
  2048. DTI_CRLTABLE | DTL_THISUPDATEDATE,
  2049. DTI_CRLTABLE | DTL_NEXTUPDATEDATE,
  2050. DTI_CRLTABLE | DTL_THISPUBLISHDATE,
  2051. DTI_CRLTABLE | DTL_NEXTPUBLISHDATE,
  2052. DTI_CRLTABLE | DTL_EFFECTIVEDATE,
  2053. DTI_CRLTABLE | DTL_PROPAGATIONCOMPLETEDATE,
  2054. DTI_CRLTABLE | DTL_LASTPUBLISHEDDATE,
  2055. DTI_CRLTABLE | DTL_PUBLISHATTEMPTS,
  2056. DTI_CRLTABLE | DTL_PUBLISHFLAGS,
  2057. DTI_CRLTABLE | DTL_PUBLISHSTATUSCODE,
  2058. DTI_CRLTABLE | DTL_PUBLISHERROR,
  2059. DTI_CRLTABLE | DTL_RAWCRL,
  2060. };
  2061. DWORD g_cColumnViewCRL = ARRAYSIZE(g_aColumnViewCRL);