/*
* 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 __PKCS12ATTRIBUTE_H__
#define __PKCS12ATTRIBUTE_H__
#include <asn1dec.h>
namespace PKCS12
{
/**
This class decodes the bagAttributes present in the SafeBag.
It has methods to get the AttributeId and the AttributeValue.
*/
class CDecPkcs12Attribute : public CBase
{
public:
/**
Creates a new PKCS#12 attribute object.
PKCS#12AttrSet ATTRIBUTE ::= {
friendlyName |
localKeyId,
... -- Other attributes are allowed
}
@param aBagAttributes Contains a PKCS#12 attribute set.
@return A pointer to the newly allocated object.
@leave if the bag attribute set is not a sequence or class
tag name is not Universal.
*/
IMPORT_C static CDecPkcs12Attribute* NewL(const TDesC8& aBagAttributes);
/**
Returns the ObjectIdentifier indicating the attribute type:
- OID ---- 1.2.840.113549.1.9.20 friendlyName
- OID ---- 1.2.840.113549.1.9.21 localKeyId
@return An object identifier indicating the attribute type.
*/
IMPORT_C const TDesC& AttributeId() const;
/**
Returns the DER encoded attribute values present in the Safe Bag.
@return The ASN1Set of attribute values
*/
IMPORT_C const RPointerArray<TDesC8>& AttributeValue() const;
/**
Destructor.
*/
virtual ~CDecPkcs12Attribute();
private:
/**
This decodes the entire BagAttributes structure
@param aBagAttributes Contains a PKCS#12 attribute set.
@leave if the bag attribute set is not a sequence or class
tag name is not Universal.
*/
void ConstructL(const TDesC8& aBagAttributes);
/**
Construtor.
*/
CDecPkcs12Attribute();
/**
Copy Constructor.
@param aDecPkcs12Atrribute A CDecPkcs12Attribute object.
*/
CDecPkcs12Attribute(const CDecPkcs12Attribute& aDecPkcs12Atrribute);
/**
Assignment operator.
@param aDecPkcs12Atrribute A CDecPkcs12Attribute object.
@return A reference to CDecPkcs12Attribute class.
*/
CDecPkcs12Attribute& operator=(const CDecPkcs12Attribute& aDecPkcs12Atrribute);
private:
/** Contains the object identifier indicating the attribute type */
HBufC* iAttributeId;
/** Contains the attribute value which is an DER encoded value */
RPointerArray<TDesC8> iAttributeValue;
};
} // namespace PKCS12
#endif // __PKCS12ATTRIBUTE_H__