");
sb.Append ("");
sb.Append (Convert.ToBase64String (dsaParams.P));
sb.Append ("
");
sb.Append ("");
sb.Append (Convert.ToBase64String (dsaParams.Q));
sb.Append ("
");
sb.Append ("");
sb.Append (Convert.ToBase64String (dsaParams.G));
sb.Append ("");
sb.Append ("");
sb.Append (Convert.ToBase64String (dsaParams.Y));
sb.Append( "");
sb.Append ("");
sb.Append (Convert.ToBase64String (dsaParams.J));
sb.Append ("");
sb.Append ("");
sb.Append (Convert.ToBase64String (dsaParams.Seed));
sb.Append ("");
sb.Append ("");
// the number of bytes is important (no matter == 0x00)
byte[] inArr = BitConverter.GetBytes (dsaParams.Counter);
int l = inArr.Length;
while (inArr[l-1] == 0x00)
l--;
byte[] c = new byte[l];
Array.Copy (inArr, 0, c, 0, l);
sb.Append (Convert.ToBase64String (c));
sb.Append ("");
if (dsaParams.X != null) {
sb.Append ("");
sb.Append (Convert.ToBase64String (dsaParams.X));
sb.Append ("");
}
else if (includePrivateParameters)
throw new CryptographicException();
sb.Append ("");
}
catch {
ZeroizePrivateKey (dsaParams);
throw;
}
return sb.ToString ();
}
public abstract bool VerifySignature (byte[] rgbHash, byte[] rgbSignature);
} // DSA
} // System.Security.Cryptography