3 つの異なる暗号化クラスのファクトリ パターンを実装しています。ファクトリは、作成するものを決定し、データベースから正しいクラスのシリアル化されたインスタンスを取得して、リクエスタに返します。現在、クラスをシリアル化してデータベースに格納する作業を行っています。という名前の PGP 暗号化クラス用に作成していBouncyCastle
ます。ファイルからクラスとキーを作成できますが、シリアル化しようとすると、クラス と のオブジェクトである 2 つのメンバー変数は、PgpPublicKey
パラメーターなしのPgpPrivateKey
コンストラクターがないため、シリアル化できないと表示されます。
public void createdBouncyFromFiles()
{
var bc = new BouncyCastle("C:\\TestFiles\\BouncyPublicKey.txt", "C:\\TestFiles\\BouncyPrivateKey.txt", "Password1");
var xmlSerializer = new XmlSerializer(bc.GetType());
var textWriter = new StringWriter();
xmlSerializer.Serialize(textWriter, bc);
var theSerializedClass = textWriter.ToString();
}
クラスには、問題となる 2 つのメンバー変数があります。
public class BouncyCastle : ICryptographyProvider
{
public PgpPublicKey m_publicKey;
public PgpPrivateKey m_privateKey;
public string m_passPhrase;
// cut out the irelevant parts
これは公開鍵クラスです。パラメーターなしのコンストラクターはありません。
public class PgpPublicKey
{
public PgpPublicKey(PublicKeyAlgorithmTag algorithm, AsymmetricKeyParameter pubKey, DateTime time);
// cut other methods
}