From 98c12387a603b7f763bc225442cd67fb66a430a6 Mon Sep 17 00:00:00 2001 From: Rajasekaran Nagarajan Date: Tue, 19 Dec 2006 23:21:24 +0000 Subject: [PATCH] Changes to make ProtectedData.Protect() and ProtectedData.Unprotect() use entropy. --- CASA/micasad/lss/CASACrypto.cs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/CASA/micasad/lss/CASACrypto.cs b/CASA/micasad/lss/CASACrypto.cs index 10453b63..6130fc45 100644 --- a/CASA/micasad/lss/CASACrypto.cs +++ b/CASA/micasad/lss/CASACrypto.cs @@ -678,7 +678,7 @@ namespace sscs.crypto fs.Close(); baSavedMasterPasscode = new byte[16]; - baSavedMasterPasscode = ProtectedData.Unprotect( encryptedMasterPasscode, null, DataProtectionScope.CurrentUser ); + baSavedMasterPasscode = ProtectedData.Unprotect( encryptedMasterPasscode, RetrieveIV(fileName, new byte[16]), DataProtectionScope.CurrentUser ); } catch (CryptographicException e) { @@ -740,7 +740,7 @@ namespace sscs.crypto myRijndael.GenerateKey(); baPasscode = myRijndael.Key; - byte [] encryptedMasterPasscode = ProtectedData.Protect( baPasscode, null, DataProtectionScope.CurrentUser ); + byte [] encryptedMasterPasscode = ProtectedData.Protect( baPasscode, GenerateAndSaveIV(fileName, null), DataProtectionScope.CurrentUser ); FileStream fs = new FileStream(fileName, FileMode.Create); File.SetAttributes(fileName, FileAttributes.Hidden); fs.Write(encryptedMasterPasscode, 0, encryptedMasterPasscode.Length); @@ -801,8 +801,18 @@ namespace sscs.crypto private static byte[] GenerateAndSaveIV(string sFileName, RijndaelManaged theRiManaged) { - theRiManaged.GenerateIV(); - byte[] baIV = theRiManaged.IV; + byte[] baIV = null; + if ( theRiManaged != null ) + { + theRiManaged.GenerateIV(); + baIV = theRiManaged.IV; + } + else + { + RandomNumberGenerator rng = RandomNumberGenerator.Create (); + baIV = new byte [16]; + rng.GetBytes (baIV); + } try {