Beispiel #1
0
 public static byte[] OpenDetached(byte[] cipherText, byte[] mac, 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));
     }
     if (mac == null || mac.Length != 16)
     {
         throw new MacOutOfRangeException("mac", (mac == null) ? 0 : mac.Length, string.Format("mac must be {0} bytes in length.", 16));
     }
     byte[] array = new byte[cipherText.Length];
     if (SodiumLibrary.crypto_secretbox_open_detached(array, cipherText, mac, (long)cipherText.Length, nonce, key) != 0)
     {
         throw new CryptographicException("Failed to open detached SecretBox");
     }
     return(array);
 }