private static SafeSecKeyRefHandle ImportKey(ECParameters parameters) { int fieldSize = parameters.Q !.X !.Length; Debug.Assert(parameters.Q.Y != null && parameters.Q.Y.Length == fieldSize); Debug.Assert(parameters.Q.X != null && parameters.Q.X.Length == fieldSize); int keySize = 1 + fieldSize * (parameters.D != null ? 3 : 2); byte[] dataKeyPool = CryptoPool.Rent(keySize); Span <byte> dataKey = dataKeyPool.AsSpan(0, keySize); try { AsymmetricAlgorithmHelpers.EncodeToUncompressedAnsiX963Key( parameters.Q.X, parameters.Q.Y, parameters.D, dataKey); return(Interop.AppleCrypto.CreateDataKey( dataKey, Interop.AppleCrypto.PAL_KeyAlgorithm.EC, isPublic: parameters.D == null)); } finally { CryptoPool.Return(dataKeyPool, keySize); } }