public void Init( IDerivationParameters param) { DHKdfParameters parameters = (DHKdfParameters)param; this.algorithm = parameters.Algorithm; this.keySize = parameters.KeySize; this.z = parameters.GetZ(); // TODO Clone? }
public override BigInteger CalculateAgreement( ICipherParameters pubKey) { // Note that the ec.KeyAgreement class in JCE only uses kdf in one // of the engineGenerateSecret methods. BigInteger result = base.CalculateAgreement(pubKey); int keySize = GeneratorUtilities.GetDefaultKeySize(algorithm); DHKdfParameters dhKdfParams = new DHKdfParameters( new DerObjectIdentifier(algorithm), keySize, bigIntToBytes(result)); kdf.Init(dhKdfParams); byte[] keyBytes = new byte[keySize / 8]; kdf.GenerateBytes(keyBytes, 0, keyBytes.Length); return new BigInteger(1, keyBytes); }