public Init ( bool forSigning, ICipherParameters parameters ) : void | ||
forSigning | bool | |
parameters | ICipherParameters | |
return | void |
public virtual void Init(
bool forSigning,
ICipherParameters parameters)
{
if (parameters is ParametersWithRandom)
{
ParametersWithRandom p = (ParametersWithRandom) parameters;
parameters = p.Parameters;
random = p.Random;
}
else
{
if (forSigning)
{
random = new SecureRandom();
}
}
cipher.Init(forSigning, parameters);
RsaKeyParameters kParam;
if (parameters is RsaBlindingParameters)
{
kParam = ((RsaBlindingParameters) parameters).PublicKey;
}
else
{
kParam = (RsaKeyParameters) parameters;
}
emBits = kParam.Modulus.BitLength - 1;
if (emBits < (8 * hLen + 8 * sLen + 9))
throw new ArgumentException("key too small for specified hash and salt lengths");
block = new byte[(emBits + 7) / 8];
}
private void doTestSig( int id, RsaKeyParameters pub, RsaKeyParameters prv, byte[] slt, byte[] msg, byte[] sig) { PssSigner eng = new PssSigner(new RsaEngine(), new Sha1Digest(), 20); eng.Init(true, new ParametersWithRandom(prv, new FixedRandom(slt))); eng.BlockUpdate(msg, 0, msg.Length); byte[] s = eng.GenerateSignature(); if (!AreEqual(s, sig)) { Fail("test " + id + " failed generation"); } eng.Init(false, pub); eng.BlockUpdate(msg, 0, msg.Length); if (!eng.VerifySignature(s)) { Fail("test " + id + " failed verification"); } }