diff -r 675a964f4eb5 -r 35751d3474b7 cryptoservices/certificateandkeymgmt/inc/pkcs12macdata.h --- a/cryptoservices/certificateandkeymgmt/inc/pkcs12macdata.h Tue Jul 21 01:04:32 2009 +0100 +++ b/cryptoservices/certificateandkeymgmt/inc/pkcs12macdata.h Thu Sep 10 14:01:51 2009 +0300 @@ -1,145 +1,144 @@ -/* -* Copyright (c) 2005-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: -* -*/ - - - - -/** - @file - @publishedPartner - @released -*/ -#ifndef __PKCS12_MACDATA_H__ -#define __PKCS12_MACDATA_H__ - -#include -#include -#include -#include -#include - -namespace PKCS12 -{ -/** Default Iteration Count */ -const TInt KDefaultIterationCount = 1; - -/** SHA-1 HMAC 160 bit Key length for key derivation. */ -const TInt KSha1HmacKeyLength = 20; - -/** - This class decodes the MacData - It has methods to return the PKCS#12 MACDATA structure. - */ -class CDecPkcs12MacData : public CBase - { -public: - /** - Creates a new PKCS#12MacData object. - - @param aMacData contains a PKCS#12 MacData Structure. - @param aAuthSafeData is the ContentData present in the authSafe Sequence - of PKCS#12 PFX Structure. - @return A pointer to the newly allocated object. - @leave KErrArgument if the data is not Pkcs12 macData structure. - */ - IMPORT_C static CDecPkcs12MacData* NewL(const TDesC8& aMacData, const TDesC8& aAuthSafeData); - - /** - The DigestInfo present in the MacData. - It has the DigestAlgorithmIdentifier, and the Digest. - @return A reference to the CPKCS7DigestInfo object containing - the decoded DigestInfo - */ - IMPORT_C const CPKCS7DigestInfo& DigestInfo() const; - - /** - This method returns the MacSalt. - MacSalt is used as input to the key generation mechanism. - @return A value indicating the MacSalt - */ - IMPORT_C const TDesC8& MacSalt() const; - - /** - This method returns the Iteration Count. It is used in creating the key. - @return An integer value indicating the IterationCount. - */ - IMPORT_C TInt IterationCount() const; - - /** - This method does the Integrity Check for Password Integrity Mode - by comparing the Digest present in the MacData of the PKCS#12 Structure - with the hash generated from the content field of the authenticated Safe, - password, the Iteration Count and the Salt present in the MacData. - @param aPassword contains the password to derive the key. - @return Returns ETrue, if the Integrity verification passes. - Returns EFalse, if the Integrity verification fails. - @leave KErrNotSupported if the Pkcs7 digest algorithm is otherthan MD2, - MD5 and SHA-1 - @see PKCS12KDF, CMessageDigest, - */ - IMPORT_C TBool VerifyIntegrityL(const TDesC& aPassword) const; - - /** - Destructor. - */ - virtual ~CDecPkcs12MacData(); - -private: - /** - This decodes the entire MacData structure. - @param aMacData contains a PKCS#12 MacData Structure. - @param aAuthSafeData is the ContentData present in the authSafe Sequence - of PKCS#12 PFX Structure. - @leave KErrArgument if the data is not Pkcs12 macData structure. - @see CPKCS7DigestInfo - */ - void ConstructL(const TDesC8& aMacData, const TDesC8& aAuthSafeData); - - /** - Constructor. - */ - CDecPkcs12MacData(); - - /** - Copy Constructor. - @param aDecPkcs12MacData A CDecPkcs12MacData object. - */ - CDecPkcs12MacData(const CDecPkcs12MacData& aDecPkcs12MacData); - - /** - Assignment operator. - @param aDecPkcs12MacData A CDecPkcs12MacData object. - @return A reference to CDecPkcs12MacData class. - */ - CDecPkcs12MacData& operator=(const CDecPkcs12MacData& aDecPkcs12MacData); - -private: - /** DigestInfo(PKCS#7 structure) present in the PKCS#12 MacData structure */ - CPKCS7DigestInfo* iDigestInfo; - - /** MacSalt present in the PKCS#12 MacData structure */ - TPtrC8 iMacSalt; - - /** Iteration Count present in the PKCS#12 MacData structure */ - TInt iIterationCount; - - /** authSafe sequence present in PKCS#12 PFX structure.*/ - TPtrC8 iAuthSafeDataPtr; - - }; -} // namespace PKCS12 -#endif // __PKCS12_MACDATA_H__ +/* +* Copyright (c) 2005-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: +* +*/ + + +/** + @file + @publishedPartner + @released +*/ +#ifndef __PKCS12_MACDATA_H__ +#define __PKCS12_MACDATA_H__ + +#include +#include +#include +#include +#include + +namespace PKCS12 +{ +/** Default Iteration Count */ +const TInt KDefaultIterationCount = 1; + +/** SHA-1 HMAC 160 bit Key length for key derivation. */ +const TInt KSha1HmacKeyLength = 20; + +/** + This class decodes the MacData + It has methods to return the PKCS#12 MACDATA structure. + */ +class CDecPkcs12MacData : public CBase + { +public: + /** + Creates a new PKCS#12MacData object. + + @param aMacData contains a PKCS#12 MacData Structure. + @param aAuthSafeData is the ContentData present in the authSafe Sequence + of PKCS#12 PFX Structure. + @return A pointer to the newly allocated object. + @leave KErrArgument if the data is not Pkcs12 macData structure. + */ + IMPORT_C static CDecPkcs12MacData* NewL(const TDesC8& aMacData, const TDesC8& aAuthSafeData); + + /** + The DigestInfo present in the MacData. + It has the DigestAlgorithmIdentifier, and the Digest. + @return A reference to the CPKCS7DigestInfo object containing + the decoded DigestInfo + */ + IMPORT_C const CPKCS7DigestInfo& DigestInfo() const; + + /** + This method returns the MacSalt. + MacSalt is used as input to the key generation mechanism. + @return A value indicating the MacSalt + */ + IMPORT_C const TDesC8& MacSalt() const; + + /** + This method returns the Iteration Count. It is used in creating the key. + @return An integer value indicating the IterationCount. + */ + IMPORT_C TInt IterationCount() const; + + /** + This method does the Integrity Check for Password Integrity Mode + by comparing the Digest present in the MacData of the PKCS#12 Structure + with the hash generated from the content field of the authenticated Safe, + password, the Iteration Count and the Salt present in the MacData. + @param aPassword contains the password to derive the key. + @return Returns ETrue, if the Integrity verification passes. + Returns EFalse, if the Integrity verification fails. + @leave KErrNotSupported if the Pkcs7 digest algorithm is otherthan MD2, + MD5 and SHA-1 + @see PKCS12KDF, CMessageDigest, + */ + IMPORT_C TBool VerifyIntegrityL(const TDesC& aPassword) const; + + /** + Destructor. + */ + virtual ~CDecPkcs12MacData(); + +private: + /** + This decodes the entire MacData structure. + @param aMacData contains a PKCS#12 MacData Structure. + @param aAuthSafeData is the ContentData present in the authSafe Sequence + of PKCS#12 PFX Structure. + @leave KErrArgument if the data is not Pkcs12 macData structure. + @see CPKCS7DigestInfo + */ + void ConstructL(const TDesC8& aMacData, const TDesC8& aAuthSafeData); + + /** + Constructor. + */ + CDecPkcs12MacData(); + + /** + Copy Constructor. + @param aDecPkcs12MacData A CDecPkcs12MacData object. + */ + CDecPkcs12MacData(const CDecPkcs12MacData& aDecPkcs12MacData); + + /** + Assignment operator. + @param aDecPkcs12MacData A CDecPkcs12MacData object. + @return A reference to CDecPkcs12MacData class. + */ + CDecPkcs12MacData& operator=(const CDecPkcs12MacData& aDecPkcs12MacData); + +private: + /** DigestInfo(PKCS#7 structure) present in the PKCS#12 MacData structure */ + CPKCS7DigestInfo* iDigestInfo; + + /** MacSalt present in the PKCS#12 MacData structure */ + TPtrC8 iMacSalt; + + /** Iteration Count present in the PKCS#12 MacData structure */ + TInt iIterationCount; + + /** authSafe sequence present in PKCS#12 PFX structure.*/ + TPtrC8 iAuthSafeDataPtr; + + }; +} // namespace PKCS12 +#endif // __PKCS12_MACDATA_H__ +