1

AsposeWordsの例にあるような空のテストドキュメントを生成する単体テストを作成しようとしています。VSコマンドプロンプトで次の行を使用してmakecert.exeを使用してテスト証明書を作成しました

makecert.exe -sv MyKey.pvk -n "CN=MY DIGITAL KEY" MyKey.cer

次に、次の行を使用して.pvkファイルに変換しました

pvk2pfx.exe -pvk MyKey.pvk -spc MyKey.cer -pfx MyPFX.pfx

これが完了したら、.pfxファイルを.netコンソールアプリにコピーし、copyパラメーターを常にcopyに設定して、デバッグでアプリをテストするときにファイルがbinディレクトリにコピーされるようにします。

次に、私のコンソールアプリには、デジタル署名されたpdfを書き込もうとする次のコード行が含まれています。

static void Main()
{
string MyDir = AppDomain.CurrentDomain.BaseDirectory;
// Create a simple document from scratch.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.Writeln("Test Signed PDF.");
// Load the certificate from disk.
// The other constructor overloads can be used to load certificates from different locations.
X509Certificate2 cert = new X509Certificate2(MyDir + "RpaKey.pfx", "");
Console.WriteLine("Loading certificate...");
// Pass the certificate and details to the save options class to sign with.
PdfSaveOptions options = new PdfSaveOptions();
options.DigitalSignatureDetails = new PdfDigitalSignatureDetails(
cert,
"Test Signing",
"Aspose Office",
DateTime.Now);
Console.WriteLine("Creating digital signature details...");
try
{
// Save the document as PDF with the digital signature set.
doc.Save(MyDir + "Document.Signed Out.pdf", options);
Console.WriteLine("File saved successfully.");
}
catch (Exception ex)
{
Console.WriteLine("File write failed.");
Console.WriteLine(ex.Message);
if (ex.InnerException != null)
{
Console.WriteLine("");
Console.WriteLine(ex.InnerException);
}
}
Console.ReadKey();
}

ただし、内部例外なしで「無効なアルゴリズムが指定されました」というエラーが発生し続けます。誰かがこの問題に遭遇しましたか?私は一歩を逃したことがありますか?どんな助けでも大歓迎です。

4

2 に答える 2

1

Asposeを使用したことはありませんが、最初に、PVKからPFX形式への変換が期待どおりに機能することを確認する必要があります。

これを変える:

X509Certificate2 cert = new X509Certificate2(MyDir + "RpaKey.pfx", "");
Console.WriteLine("Loading certificate...");

X509Certificate2 cert = new X509Certificate2(MyDir + "RpaKey.pfx", "");
Console.WriteLine("Loading certificate... private key available ? {0}", cert.HasPrivateKey);

例外がなかったので成功した可能性が高いことに注意してください-しかし、それは少なくともあなたのプロセスの最初の部分が有効であることを確認します:-)

これがtrueを示している場合は、質問を更新して、例外からの完全なスタックトレースを表示する必要があります。

catch (Exception ex)
{
    Console.WriteLine(ex);
}

したがって、エラーがAsposeによるものなのかBCL自体によるものなのかを確認します。

于 2011-10-25T13:52:19.670 に答える
1

フルスタックトレースは、例外が発生している場所とその理由を正確に理解するのに役立つというPoupouに同意します。さらに、この問題が解決しない場合は、 Aspose.Wordsフォーラムからサポートチームに連絡することもできます。この問題を詳細に調査し、実際にAspose.Wordsが原因であるかどうかを確認する必要があります。もしそうなら、私たちはあなたにその修正を提供します。

さらに、非常に単純なドキュメントを作成しているため、問題はおそらく署名が原因であるように見えます。他の署名ファイルを試してみてください。

開示:私はAsposeで開発者エバンジェリストとして働いています。

于 2011-10-25T14:59:18.663 に答える