예제 #1
0
        public static byte[] GetSalt(byte[] data)
        {
            byte[] salt = new byte[SaltLength];

            if (!ToxEncryptionFunctions.GetSalt(data, salt))
            {
                return(null);
            }

            return(salt);
        }
예제 #2
0
        internal static ToxPassKey?DeriveKey(string passphrase)
        {
            byte[] pp    = Encoding.UTF8.GetBytes(passphrase);
            var    error = ToxErrorKeyDerivation.Ok;
            var    key   = new ToxPassKey();

            if (!ToxEncryptionFunctions.DeriveKeyFromPass(pp, (uint)pp.Length, ref key, ref error) || error != ToxErrorKeyDerivation.Ok)
            {
                return(null);
            }

            return(key);
        }
예제 #3
0
        public static byte[] EncryptData(byte[] data, string password, out ToxErrorEncryption error)
        {
            if (data == null)
            {
                throw new ArgumentNullException("data");
            }

            if (password == null)
            {
                throw new ArgumentNullException("password");
            }

            byte[] output    = new byte[data.Length + EncryptionExtraLength];
            byte[] passBytes = Encoding.UTF8.GetBytes(password);
            error = ToxErrorEncryption.Ok;

            if (!ToxEncryptionFunctions.PassEncrypt(data, (uint)data.Length, passBytes, (uint)passBytes.Length, output, ref error) || error != ToxErrorEncryption.Ok)
            {
                return(null);
            }

            return(output);
        }
예제 #4
0
        public static byte[] DecryptData(byte[] data, ToxEncryptionKey key, out ToxErrorDecryption error)
        {
            if (data == null)
            {
                throw new ArgumentNullException("data");
            }

            if (key == null)
            {
                throw new ArgumentNullException("key");
            }

            byte[] output = new byte[data.Length - EncryptionExtraLength];
            var    pass   = key.ToPassKey();

            error = ToxErrorDecryption.Ok;

            if (!ToxEncryptionFunctions.PassKeyDecrypt(data, (uint)data.Length, ref pass, output, ref error) || error != ToxErrorDecryption.Ok)
            {
                return(null);
            }

            return(output);
        }
예제 #5
0
 public static bool IsDataEncrypted(byte[] data)
 {
     return(ToxEncryptionFunctions.IsDataEncrypted(data));
 }