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.

197 lines
4.7 KiB

  1. /*++
  2. Copyright (C) Microsoft Corporation, 1998 - 1999
  3. Module Name:
  4. Abstract:
  5. make all calls to CRYPT32.DLL functions go through a mapping layer
  6. Author:
  7. Jeff Roberts
  8. Revisions:
  9. Jeff Roberts (jroberts) 2-10-1998
  10. created the file
  11. --*/
  12. typedef
  13. HCERTSTORE
  14. (WINAPI *LPFN_CERTOPENSTORE)(
  15. IN LPCSTR lpszStoreProvider,
  16. IN DWORD dwEncodingType,
  17. IN HCRYPTPROV hCryptProv,
  18. IN DWORD dwFlags,
  19. IN const void *pvPara
  20. );
  21. typedef
  22. BOOL
  23. (WINAPI *LPFN_CERTCLOSESTORE)(
  24. IN HCERTSTORE hCertStore,
  25. DWORD dwFlags
  26. );
  27. typedef
  28. PCCERT_CONTEXT
  29. (WINAPI *LPFN_CERTFINDCERTIFICATEINSTORE)(
  30. IN HCERTSTORE hCertStore,
  31. IN DWORD dwCertEncodingType,
  32. IN DWORD dwFindFlags,
  33. IN DWORD dwFindType,
  34. IN const void *pvFindPara,
  35. IN PCCERT_CONTEXT pPrevCertContext
  36. );
  37. typedef
  38. BOOL
  39. (WINAPI *LPFN_CERTFREECERTIFICATECONTEXT)(
  40. IN PCCERT_CONTEXT pCertContext
  41. );
  42. typedef
  43. BOOL
  44. (WINAPI *LPFN_CERTCOMPARECERTIFICATENAME)(
  45. IN DWORD dwCertEncodingType,
  46. IN PCERT_NAME_BLOB pCertName1,
  47. IN PCERT_NAME_BLOB pCertName2
  48. );
  49. typedef
  50. BOOL
  51. (WINAPI *LPFN_CERTSTRTONAME)(
  52. IN DWORD dwCertEncodingType,
  53. IN RPC_CHAR *pszX500,
  54. IN DWORD dwStrType,
  55. IN OPTIONAL void *pvReserved,
  56. OUT BYTE *pbEncoded,
  57. IN OUT DWORD *pcbEncoded,
  58. OUT OPTIONAL RPC_CHAR **ppszError
  59. );
  60. typedef
  61. DWORD
  62. (WINAPI *LPFN_CERTNAMETOSTR)(
  63. IN DWORD dwCertEncodingType,
  64. IN PCERT_NAME_BLOB pName,
  65. IN DWORD dwStrType,
  66. OUT OPTIONAL RPC_CHAR *psz,
  67. IN DWORD csz
  68. );
  69. typedef
  70. PCERT_RDN_ATTR
  71. (WINAPI *LPFN_CERTFINDRDNATTR)(
  72. IN LPCSTR pszObjId,
  73. IN PCERT_NAME_INFO pName
  74. );
  75. typedef
  76. BOOL
  77. (WINAPI *LPFN_CRYPTDECODEOBJECT)(
  78. IN DWORD dwCertEncodingType,
  79. IN LPCSTR lpszStructType,
  80. IN const BYTE *pbEncoded,
  81. IN DWORD cbEncoded,
  82. IN DWORD dwFlags,
  83. OUT void *pvStructInfo,
  84. IN OUT DWORD *pcbStructInfo
  85. );
  86. typedef
  87. BOOL
  88. (WINAPI *LPFN_CERTVERIFYCERTIFICATECHAINPOLICY)(
  89. IN LPCSTR pszPolicyOID,
  90. IN PCCERT_CHAIN_CONTEXT pChainContext,
  91. IN PCERT_CHAIN_POLICY_PARA pPolicyPara,
  92. IN OUT PCERT_CHAIN_POLICY_STATUS pPolicyStatus
  93. );
  94. typedef
  95. BOOL
  96. (WINAPI *LPFN_CERTGETCERTIFICATECHAIN)(
  97. IN OPTIONAL HCERTCHAINENGINE hChainEngine,
  98. IN PCCERT_CONTEXT pCertContext,
  99. IN OPTIONAL LPFILETIME pTime,
  100. IN OPTIONAL HCERTSTORE hAdditionalStore,
  101. IN PCERT_CHAIN_PARA pChainPara,
  102. IN DWORD dwFlags,
  103. IN LPVOID pvReserved,
  104. OUT PCCERT_CHAIN_CONTEXT* ppChainContext
  105. );
  106. typedef
  107. BOOL
  108. (WINAPI *LPFN_CERTFREECERTIFICATECHAIN)(
  109. IN PCCERT_CHAIN_CONTEXT pChainContext
  110. );
  111. typedef
  112. DWORD
  113. (WINAPI *LPFN_CERTGETNAMESTRINGW)(
  114. IN PCCERT_CONTEXT pCertContext,
  115. IN DWORD dwType,
  116. IN DWORD dwFlags,
  117. IN void *pvTypePara,
  118. OUT OPTIONAL LPWSTR pszNameString,
  119. IN DWORD cchNameString
  120. );
  121. struct CRYPT32_FUNCTION_TABLE
  122. {
  123. LPFN_CERTOPENSTORE pCertOpenStore;
  124. LPFN_CERTCLOSESTORE pCertCloseStore;
  125. LPFN_CERTFINDCERTIFICATEINSTORE pCertFindCertificateInStore;
  126. LPFN_CERTFREECERTIFICATECONTEXT pCertFreeCertificateContext;
  127. LPFN_CERTCOMPARECERTIFICATENAME pCertCompareCertificateName;
  128. LPFN_CERTSTRTONAME pCertStrToName;
  129. LPFN_CERTNAMETOSTR pCertNameToStr;
  130. LPFN_CERTFINDRDNATTR pCertFindRDNAttr;
  131. LPFN_CRYPTDECODEOBJECT pCryptDecodeObject;
  132. #if MANUAL_CERT_CHECK
  133. LPFN_CERTVERIFYCERTIFICATECHAINPOLICY pCertVerifyCertificateChainPolicy;
  134. LPFN_CERTGETCERTIFICATECHAIN pGetCertificateChain;
  135. LPFN_CERTFREECERTIFICATECHAIN pFreeCertificateChain;
  136. #endif
  137. LPFN_CERTGETNAMESTRINGW pCertGetNameStringW;
  138. };
  139. extern struct CRYPT32_FUNCTION_TABLE CFT;
  140. #define CertOpenStore(s,t,p,f,pp) (CFT.pCertOpenStore)((s),(t),(p),(f),(pp))
  141. #define CertCloseStore(s,f) (CFT.pCertCloseStore)((s),(f))
  142. #define CertFindCertificateInStore(s,t,f,ft,pp,pc) (CFT.pCertFindCertificateInStore)((s),(t),(f),(ft),(pp),(pc))
  143. #define CertFreeCertificateContext(p) (CFT.pCertFreeCertificateContext)(p)
  144. #define CertCompareCertificateName(t,p1,p2) (CFT.pCertCompareCertificateName)((t),(p1),(p2))
  145. #define CertStrToNameT(e,sz,t,r,pb,cb,pp) (CFT.pCertStrToName)((e),(sz),(t),(r),(pb),(cb),(pp))
  146. #define CertNameToStrT(e,n,t,sz,c) (CFT.pCertNameToStr)((e),(n),(t),(sz),(c))
  147. #define CertFindRDNAttr(sz,n) (CFT.pCertFindRDNAttr)((sz),(n))
  148. #define CryptDecodeObject(t,s,pb,cb,f,pv,pcb) (CFT.pCryptDecodeObject)((t),(s),(pb),(cb),(f),(pv),(pcb))
  149. #define CertGetNameStringW(p,t,f,tp,ns,nc) (CFT.pCertGetNameStringW) ((p),(t),(f),(tp),(ns),(nc))
  150. extern BOOL LoadCrypt32Imports();