public static unsafe int Decrypt(ReadOnlySpan <byte> data, ReadOnlySpan <byte> tag, Span <byte> outData, ICryptor cryptor) { fixed(byte *dataPtr = &data.GetPinnableReference(), tagPtr = &tag.GetPinnableReference(), outDataPtr = &outData.GetPinnableReference()) { var outLen = cryptor.DecryptAuth((ulong)dataPtr, (uint)data.Length, (ulong)tagPtr, (uint)tag.Length, (ulong)outDataPtr, (uint)outData.Length); if (outLen < 0) { throw new AeadOperationException(outLen); } return(outLen); } }