void GetIVandKeys(int id, EncryptedFieldIds fieldId, out byte[] iv, out byte[] aesKey, out byte[] hmacKey) { BinaryProcedures.CreateBinaryWriter(out var ms, out var w); w.Write(id); w.Write((byte)fieldId); var sha256result = _cryptoLibrary.GetHashSHA256(ms.ToArray()); var preKey = _keyProvider.HsmOperation(sha256result); _cryptoLibrary.DeriveKeysRFC5869_32bytes(preKey, sha256result, out aesKey, out hmacKey); iv = sha256result.Take(16).ToArray(); }