誰もがC#でそれが可能である方法を知っていますかx509証明書(実際にはx509Storeにあり、ファイルから検証しない)からデジタル署名値を取得し、それをたとえばテキストボックスに表示します。 GetRawCertDataString()が最後の行にデジタル署名を含むx509証明書全体の生データを返すことを知っていますが、デジタル署名のみを返すコマンドを見つけることができません。
回答:
回答№1は1あなたの最善の方法は、ASN.1パーサーを入手してデジタル署名を抽出するか、またはp / invokeを行うことです。あなたが使用する必要があります CryptDecodeObject 機能して合格 X509_CERT
として lpszStructType
パラメータ関数は pvStructInfo
へのポインタ CERT_SIGNED_CONTENT_INFO 構造。この構造は Signature
単純な分野 BIT_BLOB
バイト配列を含む構造体 cbData
そして pbData
フィールド(使用 Marshal.Copy
アンマネージメモリからマネージドバイト配列にバイトをコピーします。
回答№2の場合は0
public static string Sign(this X509Certificate2 x509, string message)
{
byte[] data = Encoding.UTF8.GetBytes(message);
byte[] signedData;
using (MD5 hasher = MD5.Create())
{
RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)x509.PrivateKey;
signedData = rsa.SignData(data, hasher);
}
return Convert.ToBase64String(signedData);// +Environment.NewLine + Environment.NewLine;
//return ByteArrayToString(signedData); //Convert.ToBase64String(signedData);
}