public void init(bool forSigning, CipherParameters param) { this.forSigning = forSigning; AsymmetricKeyParameter k; if (param is ParametersWithRandom) { k = (AsymmetricKeyParameter)((ParametersWithRandom)param).getParameters(); } else { k = (AsymmetricKeyParameter)param; } if (forSigning && !k.isPrivate()) { throw (new Exception("Signing Requires Private Key.")); } if (!forSigning && k.isPrivate()) { throw (new Exception("Verification Requires Public Key.")); } reset(); dsaSigner.init(forSigning, param); }