From 119e217e4b7d59c74534a173c55c94ff6d9ddd5f Mon Sep 17 00:00:00 2001 From: Jim Norman Date: Thu, 25 May 2006 22:18:58 +0000 Subject: [PATCH] Bug 178796: change the way we generate the new salt so that we are cross-plat. --- CASA.changes | 5 +++++ c_micasad/lss/Rfc2898DeriveBytes.cs | 20 +++++++++++++------- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/CASA.changes b/CASA.changes index e3665764..7b1b2f92 100644 --- a/CASA.changes +++ b/CASA.changes @@ -1,3 +1,8 @@ +-------------------------------------------------------------------- +Thursday May 25 16:15:53 MST 2006 - jnorman@novell.com +- Bug 178796: change the way we generate the new salt so that + we are cross-plat. + -------------------------------------------------------------------- Thursday May 25 09:21:53 MST 2006 - cmashayekhi@novell.com - casa-gnome-keyring.h was cleaned up. diff --git a/c_micasad/lss/Rfc2898DeriveBytes.cs b/c_micasad/lss/Rfc2898DeriveBytes.cs index db674f5b..48cd2f41 100644 --- a/c_micasad/lss/Rfc2898DeriveBytes.cs +++ b/c_micasad/lss/Rfc2898DeriveBytes.cs @@ -144,10 +144,12 @@ namespace sscs.crypto { // iterate thru each character, creating a new Random, // getting 2 bytes from each, until our salt buffer is full. - for (int i = 0; i < password.Length; i++) - { - FastRandom ranNum = new FastRandom((password[i].ToString().GetHashCode()) * (j+1)); - + for (int i = 0; i < password.Length;) + { + char letter = password[i]; + int iLetter = (int)letter; + + FastRandom ranNum = new FastRandom(iLetter * (j+1)); byte[] temp = new byte[2]; ranNum.NextBytes(temp); @@ -156,16 +158,20 @@ namespace sscs.crypto { buffer[j++] = temp[k]; // get out if buffer is full if (j >= saltSize) - { + { return buffer; } } + i++; + // reset i if at end of password - if ((i + 1) == password.Length) + if ((i + 1) > password.Length) { i = 0; - } + } + + } return buffer;