diff -r 675a964f4eb5 -r 35751d3474b7 crypto/weakcrypto/inc/rijndael.h --- a/crypto/weakcrypto/inc/rijndael.h Tue Jul 21 01:04:32 2009 +0100 +++ b/crypto/weakcrypto/inc/rijndael.h Thu Sep 10 14:01:51 2009 +0300 @@ -1,162 +1,155 @@ -/* -* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the License "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: -* ** IMPORTANT ** PublishedPartner API's in this file are published to 3rd party developers via the -* Symbian website. Changes to these API's should be treated as PublishedAll API changes and the Security TA should be consulted. -* Rijndael implementation -* -*/ - - - - -/** - @file - @internalAll -*/ - -#ifndef __RIJNDAEL_H__ -#define __RIJNDAEL_H__ - -#include "blocktransformation.h" - -/** -* Abstract base class for Rijndael, implementing the parts of Rijndael common to both -* Rijndael encryption and decryption. -* -* @publishedPartner -* @released -*/ -class CRijndael : public CBlockTransformation -{ -public: // From CBlockTransformation - virtual void Reset(void); - virtual TInt KeySize(void) const; - /** The destructor frees all resources owned by the object, prior to its destruction. */ - IMPORT_C virtual ~CRijndael(void); -protected: - /** Default constructor */ - IMPORT_C CRijndael(void); - virtual void SetKey(const TDesC8& aKey); - virtual void ConstructL(const TDesC8& aKey); -protected: - /** - * The key schedule - * - * The maximum size is (((KAESMaxBlockSize/4)+6)+1)*4 - */ - TUint32 iK[60]; - /** The number of rounds */ - TUint iRounds; - /** - * The input key - * - * The key length (in bytes) must be one of the following: - * - KAESKeySize128 (=16) - * - KAESKeySize192 (=24) - * - KAESKeySize256 (=32). - */ - HBufC8* iKey; -private: - CRijndael(const CRijndael&); - const CRijndael& operator= (const CRijndael&); -}; - -/** -* Concrete class for AES encryption. -* -* @publishedPartner -* @released -*/ -class CAESEncryptor : public CRijndael -{ -public: // From CBlockTransformation - /** - * Creates an instance of this class. - * - * @param aKey The key to be used for encryption. The key length must be either - * KAESKeySize128 (=16), KAESKeySize192 (=24) or KAESKeySize256 (=32) bytes. - * - * @leave KErrKeyNotWeakEnough If the key size is larger than that allowed by the - * cipher strength restrictions of the crypto library. - * See TCrypto::IsSymmetricWeakEnoughL() - */ - IMPORT_C static CAESEncryptor* NewL(const TDesC8& aKey); - - /** - * Creates an instance of this class and leaves it on the cleanup stack. - * - * @param aKey The key to be used for encryption. The key length must be either - * KAESKeySize128 (=16), KAESKeySize192 (=24) or KAESKeySize256 (=32) bytes. - * - * @leave KErrKeyNotWeakEnough If the key size is larger than that allowed by the - * cipher strength restrictions of the crypto library. - * See TCrypto::IsSymmetricWeakEnoughL() - */ - IMPORT_C static CAESEncryptor* NewLC(const TDesC8& aKey); - virtual TInt BlockSize() const; - virtual void Transform(TDes8& aBlock); -protected: - /** @internalAll */ - CAESEncryptor(void); -private: - CAESEncryptor(const CAESEncryptor&); - const CAESEncryptor& operator= (const CAESEncryptor&); -}; - -/** -* Concrete class for AES decryption. -* -* @publishedPartner -* @released -*/ -class CAESDecryptor : public CRijndael -{ -public: // From CBlockTransformation - /** - * Creates an instance of this class. - * - * @param aKey The key to be used for decryption. The key length must be either - * KAESKeySize128 (=16), KAESKeySize192 (=24) or KAESKeySize256 (=32) bytes. - * - * @leave KErrKeyNotWeakEnough If the key size is larger than that allowed by the - * cipher strength restrictions of the crypto library. - * See TCrypto::IsSymmetricWeakEnoughL() - */ - IMPORT_C static CAESDecryptor* NewL(const TDesC8& aKey); - - /** - * Creates an instance of this class and leaves it on the cleanup stack. - * - * @param aKey The key to be used for decryption. The key length must be either - * KAESKeySize128 (=16), KAESKeySize192 (=24) or KAESKeySize256 (=32) bytes. - * - * @leave KErrKeyNotWeakEnough If the key size is larger than that allowed by the - * cipher strength restrictions of the crypto library. - * See TCrypto::IsSymmetricWeakEnoughL() - */ - IMPORT_C static CAESDecryptor* NewLC(const TDesC8& aKey); - virtual TInt BlockSize() const; - virtual void Transform(TDes8& aBlock); -protected: - virtual void SetKey(const TDesC8& aKey); - /** @internalAll */ - CAESDecryptor(void); -private: - CAESDecryptor(const CAESDecryptor&); - const CAESDecryptor& operator= (const CAESDecryptor&); -}; - - -#endif // __RIJNDAEL_H__ +/* +* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* ** IMPORTANT ** PublishedPartner API's in this file are published to 3rd party developers via the +* Symbian website. Changes to these API's should be treated as PublishedAll API changes and the Security TA should be consulted. +* Rijndael implementation +* +*/ + + +/** + @file + @publishedPartner + @released +*/ + +#ifndef __RIJNDAEL_H__ +#define __RIJNDAEL_H__ + +#include "blocktransformation.h" + +/** +* Abstract base class for Rijndael, implementing the parts of Rijndael common to both +* Rijndael encryption and decryption. +* +*/ +class CRijndael : public CBlockTransformation +{ +public: // From CBlockTransformation + virtual void Reset(void); + virtual TInt KeySize(void) const; + /** The destructor frees all resources owned by the object, prior to its destruction. */ + IMPORT_C virtual ~CRijndael(void); +protected: + /** Default constructor */ + IMPORT_C CRijndael(void); + virtual void SetKey(const TDesC8& aKey); + virtual void ConstructL(const TDesC8& aKey); +protected: + /** + * The key schedule + * + * The maximum size is (((KAESMaxBlockSize/4)+6)+1)*4 + */ + TUint32 iK[60]; + /** The number of rounds */ + TUint iRounds; + /** + * The input key + * + * The key length (in bytes) must be one of the following: + * - KAESKeySize128 (=16) + * - KAESKeySize192 (=24) + * - KAESKeySize256 (=32). + */ + HBufC8* iKey; +private: + CRijndael(const CRijndael&); + const CRijndael& operator= (const CRijndael&); +}; + +/** +* Concrete class for AES encryption. +* +*/ +class CAESEncryptor : public CRijndael +{ +public: // From CBlockTransformation + /** + * Creates an instance of this class. + * + * @param aKey The key to be used for encryption. The key length must be either + * KAESKeySize128 (=16), KAESKeySize192 (=24) or KAESKeySize256 (=32) bytes. + * + * @leave KErrKeyNotWeakEnough If the key size is larger than that allowed by the + * cipher strength restrictions of the crypto library. + * See TCrypto::IsSymmetricWeakEnoughL() + */ + IMPORT_C static CAESEncryptor* NewL(const TDesC8& aKey); + + /** + * Creates an instance of this class and leaves it on the cleanup stack. + * + * @param aKey The key to be used for encryption. The key length must be either + * KAESKeySize128 (=16), KAESKeySize192 (=24) or KAESKeySize256 (=32) bytes. + * + * @leave KErrKeyNotWeakEnough If the key size is larger than that allowed by the + * cipher strength restrictions of the crypto library. + * See TCrypto::IsSymmetricWeakEnoughL() + */ + IMPORT_C static CAESEncryptor* NewLC(const TDesC8& aKey); + virtual TInt BlockSize() const; + virtual void Transform(TDes8& aBlock); +protected: + /** @internalAll */ + CAESEncryptor(void); +private: + CAESEncryptor(const CAESEncryptor&); + const CAESEncryptor& operator= (const CAESEncryptor&); +}; + +/** +* Concrete class for AES decryption. +* +*/ +class CAESDecryptor : public CRijndael +{ +public: // From CBlockTransformation + /** + * Creates an instance of this class. + * + * @param aKey The key to be used for decryption. The key length must be either + * KAESKeySize128 (=16), KAESKeySize192 (=24) or KAESKeySize256 (=32) bytes. + * + * @leave KErrKeyNotWeakEnough If the key size is larger than that allowed by the + * cipher strength restrictions of the crypto library. + * See TCrypto::IsSymmetricWeakEnoughL() + */ + IMPORT_C static CAESDecryptor* NewL(const TDesC8& aKey); + + /** + * Creates an instance of this class and leaves it on the cleanup stack. + * + * @param aKey The key to be used for decryption. The key length must be either + * KAESKeySize128 (=16), KAESKeySize192 (=24) or KAESKeySize256 (=32) bytes. + * + * @leave KErrKeyNotWeakEnough If the key size is larger than that allowed by the + * cipher strength restrictions of the crypto library. + * See TCrypto::IsSymmetricWeakEnoughL() + */ + IMPORT_C static CAESDecryptor* NewLC(const TDesC8& aKey); + virtual TInt BlockSize() const; + virtual void Transform(TDes8& aBlock); +protected: + virtual void SetKey(const TDesC8& aKey); + /** @internalAll */ + CAESDecryptor(void); +private: + CAESDecryptor(const CAESDecryptor&); + const CAESDecryptor& operator= (const CAESDecryptor&); +}; + + +#endif // __RIJNDAEL_H__