public static byte[] Open(byte[] cipherText, byte[] nonce, byte[] key) { if (key == null || key.Length != 32) { throw new KeyOutOfRangeException("key", (key == null) ? 0 : key.Length, string.Format("key must be {0} bytes in length.", 32)); } if (nonce == null || nonce.Length != 24) { throw new NonceOutOfRangeException("nonce", (nonce == null) ? 0 : nonce.Length, string.Format("nonce must be {0} bytes in length.", 24)); } byte[] array = new byte[cipherText.Length]; if (SodiumLibrary.crypto_secretbox_open(array, cipherText, (long)cipherText.Length, nonce, key) != 0) { throw new CryptographicException("Failed to open SecretBox"); } byte[] array2 = new byte[array.Length - 32]; Array.Copy(array, 32, array2, 0, array.Length - 32); return(array2); }