Beispiel #1
0
        /// <summary>
        /// Decrypts supplied buffer using xsalsa20_poly1305 algorithm, using supplied key and nonce to perform decryption.
        /// </summary>
        /// <param name="source">Buffer to decrypt from.</param>
        /// <param name="target">Decrypted message buffer.</param>
        /// <param name="key">Key to use for decryption.</param>
        /// <param name="nonce">Nonce to use for decryption.</param>
        /// <returns>Decryption status.</returns>
        // Token: 0x0600014D RID: 333 RVA: 0x0000456C File Offset: 0x0000276C
        public unsafe static int Decrypt(ReadOnlySpan <byte> source, Span <byte> target, ReadOnlySpan <byte> key, ReadOnlySpan <byte> nonce)
        {
            int result;

            fixed(byte *pinnableReference = source.GetPinnableReference())
            {
                byte *encryptedMessage = pinnableReference;

                fixed(byte *pinnableReference2 = target.GetPinnableReference())
                {
                    byte *buffer = pinnableReference2;

                    fixed(byte *pinnableReference3 = key.GetPinnableReference())
                    {
                        byte *key2 = pinnableReference3;

                        fixed(byte *pinnableReference4 = nonce.GetPinnableReference())
                        {
                            byte *nonce2 = pinnableReference4;

                            result = Interop._SodiumSecretBoxOpen(buffer, encryptedMessage, (ulong)((long)source.Length), nonce2, key2);
                        }
                    }
                }
            }

            return(result);
        }