2017-09-04 9 views
0

デジタル証明書をキーとしてRSACryptoServiceProviderを使用して文字列に署名しています。RSACryptoServiceProviderの認証ウィンドウのハンドルを設定する

このプロセスは、デルファイアプリケーションから呼び出されるCOM DLL内で実行されます。

メソッドを介してハンドルを渡すことが可能である証明書の選択に:

scollection = X509Certificate2UI.SelectFromCollection (fcollection, "Available digital certificate (s)", "Select digital certificate", X509SelectionFlag.SingleSelection, ptr); 

が、私は似た何かをすることができませんでした認証画面では、誰もがこれで私を助けることができますか?

答えて

1

あなたは、いくつかのHWNDを親PINまたは同意プロンプトをしたい意味と仮定すると、あなたが欲しい、このコードは、あなたが説明した簡単なパスを使用して、ランタイムと.NET 4.7を持っていると仮定していること

private static RSACryptoServiceProvider AssociateHwnd(
    RSACryptoServiceProvider rsaCsp, 
    IntPtr hwnd) 
{ 
    CspKeyContainerInfo containerInfo = rsaCsp.CspKeyContainerInfo; 

    CspParameters newParameters = new CspParameters(
     containerInfo.ProviderType, 
     containerInfo.ProviderName, 
     containerInfo.KeyContainerName) 
    { 
     KeyNumber = (int)containerInfo.KeyNumber, 
     Flags = CspProviderFlags.UseExistingKey, 
     ParentWindowHandle = hwnd, 
    }; 

    if (containerInfo.MachineKeyStore) 
    { 
     newParameters.Flags |= CspProviderFlags.UseMachineKeyStore; 
    } 

    return new RSACryptoServiceProvider(newParameters); 
} 

ノートのようなものhttps://docs.microsoft.com/en-us/dotnet/framework/migration-guide/mitigation-cspparameters-parentwindowhandle-expects-an-hwnd

関連する問題