JwaCryptUIApi.pas
上传用户:davidchvip
上传日期:2009-07-28
资源大小:1749k
文件大小:7k
源码类别:

Windows编程

开发平台:

Delphi

  1. {******************************************************************************}
  2. {                                                                       }
  3. { Cryptograhic UI API interface Unit for Object Pascal                         }
  4. {                                                                       }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft          }
  6. { Corporation. All Rights Reserved.                                            }
  7. {                 }
  8. { The original file is: cryptuiapi.h, released August 2001. The original       }
  9. { Pascal code is: CryptUIApi.pas, released December 2001. The initial          }
  10. { developer of the Pascal code is Marcel van Brakel (brakelm@chello.nl).       }
  11. {                                                                              }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001            }
  13. { Marcel van Brakel. All Rights Reserved.                                      }
  14. {                 }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI)        }
  16. {                }
  17. { You may retrieve the latest version of this file at the Project JEDI home    }
  18. { page, located at http://delphi-jedi.org or my personal homepage located at   }
  19. { http://members.chello.nl/m.vanbrakel2                                        }
  20. {                }
  21. { The contents of this file are used with permission, subject to the Mozilla   }
  22. { Public License Version 1.1 (the "License"); you may not use this file except }
  23. { in compliance with the License. You may obtain a copy of the License at      }
  24. { http://www.mozilla.org/MPL/MPL-1.1.html                                      }
  25. {                                                                              }
  26. { Software distributed under the License is distributed on an "AS IS" basis,   }
  27. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  28. { the specific language governing rights and limitations under the License.    }
  29. {                                                                              }
  30. { Alternatively, the contents of this file may be used under the terms of the  }
  31. { GNU Lesser General Public License (the  "LGPL License"), in which case the   }
  32. { provisions of the LGPL License are applicable instead of those above.        }
  33. { If you wish to allow use of your version of this file only under the terms   }
  34. { of the LGPL License and not to allow others to use your version of this file }
  35. { under the MPL, indicate your decision by deleting  the provisions above and  }
  36. { replace  them with the notice and other provisions required by the LGPL      }
  37. { License.  If you do not delete the provisions above, a recipient may use     }
  38. { your version of this file under either the MPL or the LGPL License.          }
  39. {                 }
  40. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  41. {                 }
  42. {******************************************************************************}
  43. unit JwaCryptUIApi;
  44. {$WEAKPACKAGEUNIT}
  45. {$HPPEMIT ''}
  46. {$HPPEMIT '#include "cryptuiapi.h"'}
  47. {$HPPEMIT ''}
  48. {$I WINDEFINES.INC}
  49. interface
  50. uses
  51.   JwaWinCrypt, JwaWinType;
  52. // #include <pshpack8.h>
  53. //+-------------------------------------------------------------------------
  54. //  Dialog viewer of a certificate, CTL or CRL context.
  55. //
  56. //  dwContextType and associated pvContext's
  57. //      CERT_STORE_CERTIFICATE_CONTEXT  PCCERT_CONTEXT
  58. //      CERT_STORE_CRL_CONTEXT          PCCRL_CONTEXT
  59. //      CERT_STORE_CTL_CONTEXT          PCCTL_CONTEXT
  60. //
  61. //  dwFlags currently isn't used and should be set to 0.
  62. //--------------------------------------------------------------------------
  63. function CryptUIDlgViewContext(dwContextType: DWORD; pvContext: LPVOID; hwnd: HWND; pwszTitle: LPCWSTR;
  64.   dwFlags: DWORD; pvReserved: LPVOID): BOOL; stdcall;
  65. {$EXTERNALSYM CryptUIDlgViewContext}
  66. //+-------------------------------------------------------------------------
  67. //  Dialog to select a certificate from the specified store.
  68. //
  69. //  Returns the selected certificate context. If no certificate was
  70. //  selected, NULL is returned.
  71. //
  72. //  pwszTitle is either NULL or the title to be used for the dialog.
  73. //  If NULL, the default title is used.  The default title is
  74. //  "Select Certificate".
  75. //
  76. //  pwszDisplayString is either NULL or the text statement in the selection
  77. //  dialog.  If NULL, the default phrase
  78. //  "Select a certificate you wish to use" is used in the dialog.
  79. //
  80. //  dwDontUseColumn can be set to exclude columns from the selection
  81. //  dialog. See the CRYPTDLG_SELECTCERT_*_COLUMN definitions below.
  82. //
  83. //  dwFlags currently isn't used and should be set to 0.
  84. //--------------------------------------------------------------------------
  85. function CryptUIDlgSelectCertificateFromStore(hCertStore: HCERTSTORE; hwnd: HWND; pwszTitle, pwszDisplayString: LPCWSTR;
  86.   dwDontUseColumn, dwFlags: DWORD; pvReserved: LPVOID): PCCERT_CONTEXT; stdcall;
  87. {$EXTERNALSYM CryptUIDlgSelectCertificateFromStore}
  88. // flags for dwDontUseColumn
  89. const
  90.   CRYPTUI_SELECT_ISSUEDTO_COLUMN       = $000000001;
  91.   {$EXTERNALSYM CRYPTUI_SELECT_ISSUEDTO_COLUMN}
  92.   CRYPTUI_SELECT_ISSUEDBY_COLUMN       = $000000002;
  93.   {$EXTERNALSYM CRYPTUI_SELECT_ISSUEDBY_COLUMN}
  94.   CRYPTUI_SELECT_INTENDEDUSE_COLUMN    = $000000004;
  95.   {$EXTERNALSYM CRYPTUI_SELECT_INTENDEDUSE_COLUMN}
  96.   CRYPTUI_SELECT_FRIENDLYNAME_COLUMN   = $000000008;
  97.   {$EXTERNALSYM CRYPTUI_SELECT_FRIENDLYNAME_COLUMN}
  98.   CRYPTUI_SELECT_LOCATION_COLUMN       = $000000010;
  99.   {$EXTERNALSYM CRYPTUI_SELECT_LOCATION_COLUMN}
  100.   CRYPTUI_SELECT_EXPIRATION_COLUMN     = $000000020;
  101.   {$EXTERNALSYM CRYPTUI_SELECT_EXPIRATION_COLUMN}
  102. implementation
  103. const
  104.   cryptuiapi = 'cryptui.dll';
  105. {$IFDEF DYNAMIC_LINK}
  106. var
  107.   _CryptUIDlgViewContext: Pointer;
  108. function CryptUIDlgViewContext;
  109. begin
  110.   GetProcedureAddress(_CryptUIDlgViewContext, cryptuiapi, 'CryptUIDlgViewContext');
  111.   asm
  112.     mov esp, ebp
  113.     pop ebp
  114.     jmp [_CryptUIDlgViewContext]
  115.   end;
  116. end;
  117. {$ELSE}
  118. function CryptUIDlgViewContext; external cryptuiapi name 'CryptUIDlgViewContext';
  119. {$ENDIF DYNAMIC_LINK}
  120. {$IFDEF DYNAMIC_LINK}
  121. var
  122.   _CryptUIDlgSelCertFromStore: Pointer;
  123. function CryptUIDlgSelectCertificateFromStore;
  124. begin
  125.   GetProcedureAddress(_CryptUIDlgSelCertFromStore, cryptuiapi, 'CryptUIDlgSelectCertificateFromStore');
  126.   asm
  127.     mov esp, ebp
  128.     pop ebp
  129.     jmp [_CryptUIDlgSelCertFromStore]
  130.   end;
  131. end;
  132. {$ELSE}
  133. function CryptUIDlgSelectCertificateFromStore; external cryptuiapi name 'CryptUIDlgSelectCertificateFromStore';
  134. {$ENDIF DYNAMIC_LINK}
  135. end.