【问题标题】:How can I display a dialog box that contains the properties of an X.509 certificate?如何显示包含 X.509 证书属性的对话框?
【发布时间】:2011-09-07 08:19:48
【问题描述】:

我想显示包含 X509 证书属性的对话框。该框包括三个选项卡:

  1. 常规
  2. 详情
  3. 认证路径

如图所示。

对于 C#,我使用一个语句:

X509Certificate2UI.DisplayCertificate(X509Certificate2 cert);

但是用Java,我找不到类似的说法!

如何显示包含 X.509 证书属性的对话框?

【问题讨论】:

  • “Sr about my English!” 你不认为通过拼写 all 来更好地与不懂英语的其他人交流是否有意义5 个“对不起”的字母?顺便说一句,我会不加评论地让“sory”通过,但“sr”似乎很懒。
  • Desktop.getDesktop().open("x509.cer"); 会发生什么?
  • 我的证书在我的令牌中,我只在我的代码中获取它们,无法提取到我的桌面。所以你的陈述不能使用,我认为!

标签: java x509certificate


【解决方案1】:

据我所知,.NET 将使用以下函数来显示证书信息:

[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)]
internal class CRYPTUI_VIEWCERTIFICATE_STRUCTW
{
    internal uint dwSize;
    internal IntPtr hwndParent;
    internal uint dwFlags;
    internal string szTitle;
    internal IntPtr pCertContext;
    internal IntPtr rgszPurposes;
    internal uint cPurposes;
    internal IntPtr pCryptProviderData;
    internal bool fpCryptProviderDataTrustedUsage;
    internal uint idxSigner;
    internal uint idxCert;
    internal bool fCounterSigner;
    internal uint idxCounterSigner;
    internal uint cStores;
    internal IntPtr rghStores;
    internal uint cPropSheetPages;
    internal IntPtr rgPropSheetPages;
    internal uint nStartPage;
    public CRYPTUI_VIEWCERTIFICATE_STRUCTW();
}

[DllImport("cryptui.dll", CharSet=CharSet.Unicode, SetLastError=true)]
internal static extern bool CryptUIDlgViewCertificateW(
    [In, MarshalAs(UnmanagedType.LPStruct)] CRYPTUI_VIEWCERTIFICATE_STRUCTW ViewInfo, 
    [In, Out] IntPtr pfPropertiesChanged);

我不是 java 专家,不确定如何从 java 调用 Windows 函数,但必须有办法。看MSDN的CryptUIDlgViewCertificate函数,你就知道了

【讨论】:

  • 这是一个JNI编程项目。
猜你喜欢
  • 1970-01-01
  • 2011-09-21
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多