public void TestNONEwithDSA()
{
byte[] dummySha1 = Hex.Decode("01020304050607080910111213141516");
SecureRandom rand = new SecureRandom();
DsaParametersGenerator pGen = new DsaParametersGenerator();
pGen.Init(512, 80, rand);
IAsymmetricCipherKeyPairGenerator g = GeneratorUtilities.GetKeyPairGenerator("DSA");
g.Init(new DsaKeyGenerationParameters(rand, pGen.GenerateParameters()));
IAsymmetricCipherKeyPair kp = g.GenerateKeyPair();
ISigner sig = SignerUtilities.GetSigner("NONEwithDSA");
sig.Init(true, kp.Private);
sig.BlockUpdate(dummySha1, 0, dummySha1.Length);
byte[] sigBytes = sig.GenerateSignature();
sig.Init(false, kp.Public);
sig.BlockUpdate(dummySha1, 0, dummySha1.Length);
sig.VerifySignature(sigBytes);
// reset test
sig.BlockUpdate(dummySha1, 0, dummySha1.Length);
if (!sig.VerifySignature(sigBytes))
{
Fail("NONEwithDSA failed to reset");
}
// lightweight test
DsaSigner signer = new DsaSigner();
Asn1Sequence derSig = Asn1Sequence.GetInstance(Asn1Object.FromByteArray(sigBytes));
signer.Init(false, kp.Public);
if (!signer.VerifySignature(dummySha1,
DerInteger.GetInstance(derSig[0]).Value, DerInteger.GetInstance(derSig[1]).Value))
{
Fail("NONEwithDSA not really NONE!");
}
}