public bool CreateAndSaveAccount(string username, string password)
        {
            if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
            {
                return(false);
            }

            byte[] salt           = CryptoUtilities.Get256BitSalt();
            byte[] hashedPassword = CryptoUtilities.GetHash(CryptoUtilities.StringToByteArray(password), salt);

            AccountStore store = AccountStore.Create();

            if (GetAccountFromStore(store, username) != null)
            {
                return(false);
            }

            Account account = new Account(username);

            account.Properties.Add(key_password, Convert.ToBase64String(hashedPassword));
            account.Properties.Add(key_salt, Convert.ToBase64String(salt));
            account.Properties.Add(key_keymaterial, Convert.ToBase64String(
                                       CryptoUtilities.GetAES256KeyMaterial()));

            store.Save(account, service_id);

            return(true);
        }
        public bool LoginToAccount(string username, string password)
        {
            if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
            {
                return(false);
            }

            AccountStore store   = AccountStore.Create();
            Account      account = GetAccountFromStore(store, username);

            if (account == null)
            {
                return(false);
            }

            byte[] salt, hashedPassword;

            // Upgrade existing passwords to our new format
            if (!account.Properties.ContainsKey(key_salt))
            {
                salt           = CryptoUtilities.Get256BitSalt();
                hashedPassword = CryptoUtilities.GetHash(CryptoUtilities.StringToByteArray(account.Properties[key_password]), salt);
                account.Properties[key_password] = Convert.ToBase64String(hashedPassword);
                account.Properties.Add(key_salt, Convert.ToBase64String(salt));
                store.Save(account, service_id);
            }

            salt           = Convert.FromBase64String(account.Properties[key_salt]);
            hashedPassword = CryptoUtilities.GetHash(CryptoUtilities.StringToByteArray(password), salt);

            return(account.Properties[key_password] == Convert.ToBase64String(hashedPassword));
        }
        // Encryption of goal description
        byte[] GetCipherText(string diaryText)
        {
            Account account = accountManager.CheckForAccount();

            if (!account.Properties.TryGetValue("keymaterial", out string keyString))
            {
                return(null);
            }

            byte[] keyMaterial = Convert.FromBase64String(keyString);

            return(CryptoUtilities.Encrypt(CryptoUtilities.StringToByteArray(diaryText), keyMaterial));
        }
        byte[] GetCipherText(string diaryText)
        {
            string keyString;

            if (!account.Properties.TryGetValue(kmKey, out keyString))
            {
                return(null);
            }

            byte[] keyMaterial = Convert.FromBase64String(keyString);

            return(CryptoUtilities.Encrypt(CryptoUtilities.StringToByteArray(diaryText), keyMaterial));
        }
Beispiel #5
0
 byte[] GetCipherText(string diaryText)
 {
     //TODO
     return(CryptoUtilities.StringToByteArray(diaryText));
 }