wmdrm/wmdrmengine/wmdrmserver/server/src/wmdrmdatastore.cpp
changeset 23 493788a4a8a4
parent 0 95b198f216e5
--- a/wmdrm/wmdrmengine/wmdrmserver/server/src/wmdrmdatastore.cpp	Tue Feb 02 00:21:44 2010 +0200
+++ b/wmdrm/wmdrmengine/wmdrmserver/server/src/wmdrmdatastore.cpp	Fri Apr 16 15:14:55 2010 +0300
@@ -20,10 +20,10 @@
 #include <e32math.h>
 #include <symmetric.h>
 #include <bacntf.h>
-#include <centralrepository.h> 
+#include <centralrepository.h>
 
 #include "wmdrmdatastore.h"
-#include "wmdrmprivatecrkeys.h"
+#include "WMDRMPrivateCRKeys.h"
 #include "wmdrmkeystorage.h"
 #include "slotdatacache.h"
 #include "wmdrmdb.h"
@@ -56,7 +56,7 @@
     return self;
     }
 
-CWmDrmDataStore::CWmDrmDataStore( CWmDrmServer* aServer ) 
+CWmDrmDataStore::CWmDrmDataStore( CWmDrmServer* aServer )
     : iServer( aServer ), iMinFreeSpace2( 0 )
     {
     LOGFN( "CWmDrmDataStore::CWmDrmDataStore" );
@@ -67,23 +67,23 @@
     TDrmScheme drmScheme( EDrmSchemeWmDrm );
     TFileName tempFile, tempFile2;
     TChar driveLetter;
-    
+
     LOGFN( "CWmDrmDataStore::ConstructL" );
-    
+
     // Check which drive is configured in the Central Repository Key
     // for the desired storing location of WM DRM rights (license store).
-	iWmDrmRightsConfigFound = DrmRightsStoringLocation::CheckDrmRightsStorageDriveL(
-	    iServer->Fs(), drmScheme, driveLetter );
-    
-    // If the storing location is configured to other drive than the default 
-	// system drive, prepare utility files for that drive, too.
+    iWmDrmRightsConfigFound = DrmRightsStoringLocation::CheckDrmRightsStorageDriveL(
+        iServer->Fs(), drmScheme, driveLetter );
+
+    // If the storing location is configured to other drive than the default
+    // system drive, prepare utility files for that drive, too.
     if ( iWmDrmRightsConfigFound )
         {
         PrepareInfoFilesL( ETrue, driveLetter, iDummyDb2 );
         }
-    
+
     // Prepare the utility files for the default system drive
-    PrepareInfoFilesL( EFalse, (TUint)iServer->Fs().GetSystemDriveChar(), 
+    PrepareInfoFilesL( EFalse, (TUint)iServer->Fs().GetSystemDriveChar(),
         iDummyDb );
     }
 
@@ -111,53 +111,53 @@
     CAESDecryptor* aesDecryptor = NULL;
     CPaddingPKCS7* padding = NULL;
     TInt size = 0;
-    
+
     LOGFN( "CWmDrmDataStore::ReadInitialFreeSpaceL" );
     User::LeaveIfError( file.Open( iServer->Fs(), aFileName, EFileRead ) );
     CleanupClosePushL( file );
-    
+
     User::LeaveIfError( file.Size( size ) );
-	    
-	if( size != ( 2 * KAESKeyLength ) )
-	    {
-	    User::Leave(KErrCorrupt);
-	    }
+
+    if( size != ( 2 * KAESKeyLength ) )
+        {
+        User::Leave(KErrCorrupt);
+        }
 
     User::LeaveIfError( file.Read( iv ) );
-	User::LeaveIfError( file.Read( encryptedData ) );
+    User::LeaveIfError( file.Read( encryptedData ) );
 #if defined(FF_PLATFORM_SIMULATOR) || defined(__WINSCW__)
-	key.Copy( KDummyKey );
+    key.Copy( KDummyKey );
 #else
-	iServer->Cache()->iKeyStorage->GetDeviceSpecificKeyL( key );
+    iServer->Cache()->iKeyStorage->GetDeviceSpecificKeyL( key );
 #endif
-	aesDecryptor = CAESDecryptor::NewL( key );
+    aesDecryptor = CAESDecryptor::NewL( key );
     CleanupStack::PushL( aesDecryptor );
-    
+
     cbcDecryptor = CModeCBCDecryptor::NewL( aesDecryptor, iv );
     CleanupStack::Pop( aesDecryptor );
     CleanupStack::PushL( cbcDecryptor );
-    
+
     padding = CPaddingPKCS7::NewL( KAESKeyLength );
     CleanupStack::PushL( padding );
-    
+
     decryptor = CBufferedDecryptor::NewL( cbcDecryptor, padding );
     CleanupStack::Pop( 2, cbcDecryptor ); //padding, cbcDecryptor
     CleanupStack::PushL( decryptor );
-	
-	decryptor->ProcessFinalL( encryptedData, decryptedData );
-	CleanupStack::PopAndDestroy( 2, &file ); //decryptor, file
-	TLex8 lex( decryptedData );
-	
-	if ( aConfiguredDrive )
-	    {
-	    User::LeaveIfError( lex.Val( iInitialFreeSpace2 ) );
-	    }
-	else 
-	    {
-	    User::LeaveIfError( lex.Val( iInitialFreeSpace ) );
-	    }    
+
+    decryptor->ProcessFinalL( encryptedData, decryptedData );
+    CleanupStack::PopAndDestroy( 2, &file ); //decryptor, file
+    TLex8 lex( decryptedData );
+
+    if ( aConfiguredDrive )
+        {
+        User::LeaveIfError( lex.Val( iInitialFreeSpace2 ) );
+        }
+    else
+        {
+        User::LeaveIfError( lex.Val( iInitialFreeSpace ) );
+        }
     }
-        
+
 void CWmDrmDataStore::WriteInitialFreeSpaceL( const TDesC& aFileName,
     TBool& aConfiguredDrive )
     {
@@ -170,7 +170,7 @@
     CModeCBCEncryptor* cbcEncryptor = NULL;
     CAESEncryptor* aesEncryptor = NULL;
     CPaddingPKCS7* padding = NULL;
-    
+
     LOGFN( "CWmDrmDataStore::WriteInitialFreeSpaceL" );
     User::LeaveIfError( file.Create( iServer->Fs(), aFileName, EFileWrite ) );
     CleanupClosePushL( file );
@@ -181,7 +181,7 @@
     else
         {
         iInitialFreeSpace = iServer->FreeSpaceL( aConfiguredDrive );
-        }    
+        }
     iv.SetLength( KAESKeyLength );
     TRandom::RandomL( iv );
 #if defined(FF_PLATFORM_SIMULATOR) || defined(__WINSCW__)
@@ -191,18 +191,18 @@
 #endif
     aesEncryptor = CAESEncryptor::NewL( key );
     CleanupStack::PushL( aesEncryptor );
-    
+
     cbcEncryptor = CModeCBCEncryptor::NewL( aesEncryptor, iv );
     CleanupStack::Pop( aesEncryptor );
     CleanupStack::PushL( cbcEncryptor );
-    
+
     padding = CPaddingPKCS7::NewL( KAESKeyLength );
     CleanupStack::PushL( padding );
-    
+
     encryptor = CBufferedEncryptor::NewL( cbcEncryptor, padding );
     CleanupStack::Pop( 2, cbcEncryptor ); //padding, cbcEncryptor
     CleanupStack::PushL( encryptor );
-    
+
     if ( aConfiguredDrive )
         {
         decryptedData.AppendNum( iInitialFreeSpace2 );
@@ -210,8 +210,8 @@
     else
         {
         decryptedData.AppendNum( iInitialFreeSpace );
-        }    
-            
+        }
+
     encryptor->ProcessFinalL( decryptedData, encryptedData );
     User::LeaveIfError( file.Write( iv ) );
     User::LeaveIfError( file.Write( encryptedData ) );
@@ -228,25 +228,25 @@
     TInt ratio( 0 );
     TInt ratio2( 0 );
     TBool internalMassDriveNotFull( ETrue );
-    
+
     LOGFN( "CWmDrmDataStore::DataStoreStateL" );
     freeSpace = iServer->FreeSpaceL( EFalse );
-    
+
     if ( iWmDrmRightsConfigFound )
         {
         // Check free space from the configured drive, too.
         freeSpace2 = iServer->FreeSpaceL( ETrue );
-        
-        if ( freeSpace2 < iMinFreeSpace2 ) 
+
+        if ( freeSpace2 < iMinFreeSpace2 )
             {
             internalMassDriveNotFull = EFalse;
             }
-            
+
         dummyDbSize = DummyDBSizeL( ETrue );
         dataStoreSize = DataStoreSizeL( ETrue );
         ratio2 = dataStoreSize * 100 / iInitialFreeSpace2;
         freeSpace2 += dummyDbSize;
-#ifdef _LOGGING        
+#ifdef _LOGGING
         TBuf<KMaxTInt64BufLength> free2;
         LOG1( "CWmDrmDataStore::DataStoreStateL: Free space (2): ");
         free2.AppendNumUC( freeSpace2, EDecimal );
@@ -255,15 +255,15 @@
         LOG1( "CWmDrmDataStore::DataStoreStateL: Minimum free space (2): ");
         free2Min.AppendNumUC( iMinFreeSpace2, EDecimal );
         LOG( free2Min );
-#endif             
+#endif
         }
-    
-    // Check the system drive storage space next.   
+
+    // Check the system drive storage space next.
     dummyDbSize = DummyDBSizeL( EFalse );
     dataStoreSize = DataStoreSizeL( EFalse );
     ratio = dataStoreSize * 100 / iInitialFreeSpace;
     freeSpace += dummyDbSize;
-#ifdef _LOGGING        
+#ifdef _LOGGING
     TBuf<KMaxTInt64BufLength> free;
     LOG1( "CWmDrmDataStore::DataStoreStateL: Free space: ");
     free.AppendNumUC( freeSpace, EDecimal );
@@ -272,21 +272,21 @@
     LOG1( "CWmDrmDataStore::DataStoreStateL: Minimum free space: ");
     freeMin.AppendNumUC( iMinFreeSpace, EDecimal );
     LOG( freeMin );
-#endif      
-    
-    // Select the state of the storage space.      
-    if ( ( freeSpace > iMinFreeSpace ) && internalMassDriveNotFull ) 
+#endif
+
+    // Select the state of the storage space.
+    if ( ( freeSpace > iMinFreeSpace ) && internalMassDriveNotFull )
         {
         LOG1( "CWmDrmDataStore::DataStoreStateL: Store space Ok" );
         state = EStoreSpaceOK;
         }
     else
         {
-        // The configured drive is running out of space. The system drive 
+        // The configured drive is running out of space. The system drive
         // may also be running out of storage space, but calculate
         // the ratio of database size to initial free drive space and the
         // state of the drive storage space from the configured drive because
-        // it is likely to fill up faster since the media files may be synced to it. 
+        // it is likely to fill up faster since the media files may be synced to it.
         if ( !internalMassDriveNotFull )
             {
             LOG2( "Ratio (2): %d", ratio2 );
@@ -302,7 +302,7 @@
                 }
             }
         else
-            // Only the system drive is running out of storage space. 
+            // Only the system drive is running out of storage space.
             {
             LOG2( "Ratio: %d", ratio );
             if ( ratio <= iMaxSpaceRatio )
@@ -315,9 +315,9 @@
                 LOG1( "CWmDrmDataStore::DataStoreStateL Store space full" );
                 state = EStoreSpaceFull;
                 }
-            }    
+            }
         }
-        
+
     LOG2( "DataStoreState: %d", state );
     return state;
     }
@@ -326,13 +326,13 @@
     RFile& aDummyDb, TBool& aConfiguredDrive )
     {
     TInt r( KErrNone );
-    
+
     LOGFN( "CWmDrmDataStore::InitializeDummyDbFileL" );
-    
+
     r = aDummyDb.Create( iServer->Fs(), aFileName, EFileWrite );
     if ( r == KErrAlreadyExists )
         {
-        User::LeaveIfError( 
+        User::LeaveIfError(
             aDummyDb.Open( iServer->Fs(), aFileName, EFileWrite ) );
         }
     else if( !r )
@@ -342,7 +342,7 @@
             {
             if ( dataStoreSize <= iDummyDbInitialSize2 )
                 {
-                User::LeaveIfError( 
+                User::LeaveIfError(
                     aDummyDb.SetSize( iDummyDbInitialSize2 - dataStoreSize ) );
                 }
             else
@@ -350,18 +350,18 @@
                 User::LeaveIfError( aDummyDb.SetSize( 0 ) );
                 }
             }
-        else 
+        else
             {
             if ( dataStoreSize <= iDummyDbInitialSize )
                 {
-                User::LeaveIfError( 
+                User::LeaveIfError(
                     aDummyDb.SetSize( iDummyDbInitialSize - dataStoreSize ) );
                 }
             else
                 {
                 User::LeaveIfError( aDummyDb.SetSize( 0 ) );
                 }
-            } 
+            }
         }
     else
         {
@@ -379,26 +379,26 @@
         LOG2( "dummyDbSize: %d", dummyDbSize );
         if ( aSize <= dummyDbSize )
             {
-            if ( aConfiguredDrive ) 
+            if ( aConfiguredDrive )
                 {
-            	User::LeaveIfError( iDummyDb2.SetSize( dummyDbSize - aSize ) );
-            	}
+                User::LeaveIfError( iDummyDb2.SetSize( dummyDbSize - aSize ) );
+                }
             else
-            	{	
-            	User::LeaveIfError( iDummyDb.SetSize( dummyDbSize - aSize ) );
-            	}
-           	} 		
+                {
+                User::LeaveIfError( iDummyDb.SetSize( dummyDbSize - aSize ) );
+                }
+            }
         else
             {
             if ( aConfiguredDrive )
-            	{
-            	User::LeaveIfError( iDummyDb2.SetSize( 0 ) );
-            	}
-            else 
-            	{
-            	User::LeaveIfError( iDummyDb.SetSize( 0 ) );	
-          		}
-          	}		
+                {
+                User::LeaveIfError( iDummyDb2.SetSize( 0 ) );
+                }
+            else
+                {
+                User::LeaveIfError( iDummyDb.SetSize( 0 ) );
+                }
+            }
         }
     else
         {
@@ -408,27 +408,27 @@
             {
             if ( dataStoreSize <= iDummyDbInitialSize2 )
                 {
-                User::LeaveIfError( 
+                User::LeaveIfError(
                     iDummyDb2.SetSize( iDummyDbInitialSize2 - dataStoreSize ) );
-            	}
-            else 
-            	{
-            	User::LeaveIfError( iDummyDb2.SetSize( 0 ) );
-            	}
+                }
+            else
+                {
+                User::LeaveIfError( iDummyDb2.SetSize( 0 ) );
+                }
             }
-        else 
+        else
             {
             if ( dataStoreSize <= iDummyDbInitialSize )
                 {
-                User::LeaveIfError( 
+                User::LeaveIfError(
                     iDummyDb.SetSize( iDummyDbInitialSize - dataStoreSize ) );
-            	}
-            else 
-            	{
-            	User::LeaveIfError( iDummyDb.SetSize( 0 ) );
-            	}
+                }
+            else
+                {
+                User::LeaveIfError( iDummyDb.SetSize( 0 ) );
+                }
             }
-        } 
+        }
     }
 
 TInt CWmDrmDataStore::DataStoreSizeL( TBool aConfiguredDrive )
@@ -448,35 +448,35 @@
     else
         {
         User::LeaveIfError( iDummyDb.Size( dummyDbSize ) );
-        }    
+        }
     return dummyDbSize;
     }
 
-void CWmDrmDataStore::PrepareInfoFilesL( TBool aConfiguredDrive, 
+void CWmDrmDataStore::PrepareInfoFilesL( TBool aConfiguredDrive,
     TChar aDriveLetter, RFile& aDummyDb )
     {
     LOGFN( "CWmDrmDataStore::PrepareInfoFilesL" );
     CRepository* repository( NULL );
     TInt r( KErrNone );
-    TFileName dummyDbFile; 
+    TFileName dummyDbFile;
     TFileName initialFreeSpaceFile;
-    
+
     initialFreeSpaceFile.Format( KPrivateDir, (TUint)aDriveLetter );
     iServer->Fs().MkDirAll( initialFreeSpaceFile );
     initialFreeSpaceFile.Format( KInitialFreeSpaceFile, (TUint)aDriveLetter );
     dummyDbFile.Format( KDummyDbFile, (TUint)aDriveLetter );
-    	
-    TRAP( r, WriteInitialFreeSpaceL( initialFreeSpaceFile, 
+
+    TRAP( r, WriteInitialFreeSpaceL( initialFreeSpaceFile,
         aConfiguredDrive ) );
     if ( r )
         {
         r = KErrNone;
-        
+
         // catch the read error
-        TRAP( r, ReadInitialFreeSpaceL( initialFreeSpaceFile, 
+        TRAP( r, ReadInitialFreeSpaceL( initialFreeSpaceFile,
             aConfiguredDrive ) );
-        
-        // if an error occurs, this means that we are unable to read the info, 
+
+        // if an error occurs, this means that we are unable to read the info,
         // thus we need to delete the file and run write again.
         // hopefully this being a temporary error, but if we fail again we fail
         // until next ConstructL
@@ -484,60 +484,60 @@
             {
             // delete the file:
             iServer->Fs().Delete( initialFreeSpaceFile );
-            
+
             // Calc & Write the new info
             WriteInitialFreeSpaceL( initialFreeSpaceFile, aConfiguredDrive );
             }
         }
-    
+
     if ( aConfiguredDrive )
         {
-#ifdef _LOGGING        
+#ifdef _LOGGING
         TBuf<KMaxTInt64BufLength> freeSpace2;
         LOG1( "CWmDrmDataStore::DataStoreStateL: Initial free space (2): ");
         freeSpace2.AppendNumUC( iInitialFreeSpace2, EDecimal );
         LOG( freeSpace2 );
-#endif          
+#endif
         if ( iInitialFreeSpace2 <= 0 )
             {
             User::Leave( KErrNotReady );
             }
         }
-    else 
+    else
         {
-#ifdef _LOGGING        
+#ifdef _LOGGING
         TBuf<KMaxTInt64BufLength> freeSpace;
         LOG1( "CWmDrmDataStore::DataStoreStateL: Initial free space: ");
         freeSpace.AppendNumUC( iInitialFreeSpace, EDecimal );
         LOG( freeSpace );
-#endif          
+#endif
         if ( iInitialFreeSpace <= 0 )
             {
             User::Leave( KErrNotReady );
             }
         }
-    
+
     //LOG1( "CWmDrmDataStore::PrepareInfoFilesL Check Cenrep" );
-    
+
     TRAP( r, repository = CRepository::NewL( KCRUidWMDRM ) );
     if ( repository )
         {
         TInt rate( 0 );
-        
+
         // Check the cenrep key parameters either for the default system drive
         // or for the internal mass drive depending whether the WMDRM rights
         // are configured to be partially stored to the internal mass drive or
-        // not. 
+        // not.
         if ( !aConfiguredDrive )
-            { 
+            {
             r = repository->Get( KWMDRMLicStoreLowMem, rate );
             if ( r )
                 {
-                iMinFreeSpace = KMegaByte;      
+                iMinFreeSpace = KMegaByte;
                 }
             else
                 {
-                iMinFreeSpace = rate * KMegaByte;   
+                iMinFreeSpace = rate * KMegaByte;
                 }
             r = repository->Get( KWMDRMLicStoreSizeRatio, iMaxSpaceRatio );
             if ( r )
@@ -547,19 +547,19 @@
             r = repository->Get( KWMDRMLicStoreReservedSpace, rate );
             if ( r )
                 {
-                iDummyDbInitialSize = KDummyDbInitialSize;   
+                iDummyDbInitialSize = KDummyDbInitialSize;
                 }
             else
                 {
-                iDummyDbInitialSize = rate * KMegaByte;     
+                iDummyDbInitialSize = rate * KMegaByte;
                 }
             }
-        else 
+        else
             {
             r = repository->Get( KWMDRM2LicStoreLowMem, rate );
             if ( r )
                 {
-                iMinFreeSpace2 = KTwoHundredMegaBytes;      
+                iMinFreeSpace2 = KTwoHundredMegaBytes;
                 }
             else
                 {
@@ -573,31 +573,31 @@
             r = repository->Get( KWMDRM2LicStoreReservedSpace, rate );
             if ( r )
                 {
-                iDummyDbInitialSize2 = KDummyDbInitialSize;   
+                iDummyDbInitialSize2 = KDummyDbInitialSize;
                 }
             else
                 {
-                iDummyDbInitialSize2 = rate * KMegaByte;     
+                iDummyDbInitialSize2 = rate * KMegaByte;
                 }
-            }          
+            }
         delete repository;
         }
     else
         {
         if ( !aConfiguredDrive )
             {
-            iMinFreeSpace = KMegaByte; 
+            iMinFreeSpace = KMegaByte;
             iMaxSpaceRatio = KMaxSpaceRatio;
             iDummyDbInitialSize = KDummyDbInitialSize;
             }
-        else 
+        else
             {
-            iMinFreeSpace2 = KTwoHundredMegaBytes; 
+            iMinFreeSpace2 = KTwoHundredMegaBytes;
             iMaxSpaceRatio2 = KMaxSpaceRatio2;
-            iDummyDbInitialSize2 = KDummyDbInitialSize;            
+            iDummyDbInitialSize2 = KDummyDbInitialSize;
             }
         }
-     
+
     InitializeDummyDbFileL( dummyDbFile, aDummyDb, aConfiguredDrive );
-    
+
     }