Fix for bug 5329. Added browserrootcertificates to package_definition.xml file. Also correcte the wrong spelling.
/** Copyright (c) 1997-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: **/#if !defined (__WTLSNAMES_H__)#define __WTLSNAMES_H__#include <e32base.h>#include <e32std.h>#include <x500dn.h>/**@fileThis file contains the definition for class CWTLSName.@publishedAll@releasedenum { null(0), text(1), binary(2), key_hash_sha(254), x509_name(255)} IdentifierType;We only support text and x509_name as these are the only meaningful identifiers..x509_name is X.500 Distinguished Name, and should use our existing X.500 DN implementation. struct { IdentifierType identifier_type; select (identifier_type) { case null: struct {}; case text: CharacterSet character_set; opaque name<1.. 2^8-1>; case binary: opaque identifier<1..2^8-1>; case key_hash_sha: opaque key_hash[20]; case x509_name: opaque distinguished_name<1..2^8-1>; } Identifier;uint16 CharacterSet;This maps on to one of the IANA defined character sets. There are rather a lotof these. We just support the text type, with either Latin1 or UTF8 encoding.*//** * Enumerates the types of WTLS certificate name forms/identifiers. * * Only text strings and X.500 Distinguished Names are currently supported. * */enum { /* Null */ EWTLSNull = 0x00, /* Text string (Latin-1 or Unicode). * * A text identifier consists of a 16-bit character set identifier; * this represents the IANA-assigned character set number. */ EWTLSText = 0x01, /* Binary identifier. * * Certificates of this type will be rejected.*/ EWTLSBinary = 0x02, /* Key Hash SHA-1. * * Certificates of this type will be rejected.*/ EWTLSKeyHashSha = 0xfe, /* X.500 Distinguished Name. */ EWTLSX500DN = 0xff };typedef TUint8 TWTLSNameType;typedef TInt TWTLSCharSet;// MIBenum constants from the IANA list of character sets.// See http://www.iana.org/assignments/character-sets for more info./** MIBenum constant for the Latin1 IANA character set */const TInt KWTLSLatin1CharSet = 4;/** MIBenum constant for the UTF-8 IANA character set */const TInt KWTLSUTF8CharSet = 106;class CWTLSName : public CBase/** * Stores the type of a WTLS name and the underlying encoding of the type. * */ {public: /** * Creates a new CWTLSName object from the specified buffer containing the binary coded representation. * * @param aBinaryData The encoded binary representation. * @return The new CWTLSName object. */ IMPORT_C static CWTLSName* NewL(const TDesC8& aBinaryData); /** * Creates a new CWTLSName object from the specified buffer containing the binary coded representation, * and puts a pointer to it onto the cleanup stack. * * @param aBinaryData The encoded binary representation. * @return The new CWTLSName object. */ IMPORT_C static CWTLSName* NewLC(const TDesC8& aBinaryData); /** * Creates a new CWTLSName object from the specified buffer containing the binary coded representation, * starting at the specified offset. * * @param aBinaryData The encoded binary representation. * @param aPos The offset position from which to start decoding. It specifies an offset into the descriptor, * and is updated to the position at the end of the object. * @return The new CWTLSName object. */ IMPORT_C static CWTLSName* NewL(const TDesC8& aBinaryData, TInt& aPos); /** * Creates a new CWTLSName object from the specified buffer containing the binary coded representation, * starting at the specified offset, and puts a pointer to it onto the cleanup stack. * * @param aBinaryData The encoded binary representation. * @param aPos The offset position from which to start decoding. It specifies an offset into the descriptor, * and is updated to the position at the end of the object. * @return The new CWTLSName object. */ IMPORT_C static CWTLSName* NewLC(const TDesC8& aBinaryData, TInt& aPos); /** * Creates a new CWTLSName object from an existing one. * * @param aName An existing CWTLSName object. * @return The new CWTLSName object. */ IMPORT_C static CWTLSName* NewL(const CWTLSName& aName); /** * Creates a new CWTLSName object from an existing one, * and puts a pointer to it onto the cleanup stack. * * @param aName An existing CWTLSName object. * @return The new CWTLSName object. */ IMPORT_C static CWTLSName* NewLC(const CWTLSName& aName); /** * Destructor. * * Frees all resources owned by the object, prior to its destruction. */ IMPORT_C ~CWTLSName(); /** * Performs a simple byte compare between this WTLS name and a specified WTLS name. * * Needed for the constructing/validating of certificate chains. * * @param aName An existing CWTLSName object. * @return ETrue, if the WTLS names match; EFalse, otherwise. */ IMPORT_C TBool ExactMatchL(const CWTLSName& aName) const; /** * Gets the type of the WTLS name. * * @return Type of WTLS name form. */ IMPORT_C TWTLSNameType NameType() const; /** * Gets the encoding of the underlying type of WTLS name. * * @return Pointer descriptor representing the encoding of the WTLS name type. */ IMPORT_C TPtrC8 NameData() const; /** * Gets the decoded value for the common or organisation name. * * Provides the functionality required by the CCertificate::IssuerL() and SubjectL() functions. * * @return A heap descriptor containing the decoded value of the common or organisation name. */ IMPORT_C HBufC* DisplayNameL() const;private: CWTLSName(); void ConstructL(const TDesC8& aBinaryData, TInt& aPos); void ConstructL(const CWTLSName& aName); void AllocNameDataL(const TDesC8& aBinaryData, TInt& aPos); void AllocTextDataL(const TDesC8& aBinaryData, TInt& aPos); TWTLSNameType iNameType; HBufC8* iNameData; };class CWTLSText : public CBase {public: /** * Creates a new CWTLSText object from the specified buffer containing the binary coded representation. * * @param aBinaryData The encoded binary representation. * @return The new CWTLSText object. */ IMPORT_C static CWTLSText* NewL(const TDesC8& aBinaryData); /** * Creates a new CWTLSText object from the specified buffer containing the binary coded representation, * and puts a pointer to it onto the cleanup stack. * * @param aBinaryData The encoded binary representation. * @return The new CWTLSText object. */ IMPORT_C static CWTLSText* NewLC(const TDesC8& aBinaryData); /** * Creates a new CWTLSText object from the specified buffer containing the binary coded representation, * starting at the specified offset. * * @param aBinaryData The encoded binary representation. * @param aPos The offset position from which to start decoding. It specifies an offset into the descriptor, * and is updated to the position at the end of the object. * @return The new CWTLSText object. */ IMPORT_C static CWTLSText* NewL(const TDesC8& aBinaryData, TInt& aPos); /** * Creates a new CWTLSText object from the specified buffer containing the binary coded representation, * starting at the specified offset, and puts a pointer to it onto the cleanup stack. * * @param aBinaryData The encoded binary representation. * @param aPos The offset position from which to start decoding. It specifies an offset into the descriptor, * and is updated to the position at the end of the object. * @return The new CWTLSText object. */ IMPORT_C static CWTLSText* NewLC(const TDesC8& aBinaryData, TInt& aPos); /** * Destructor. * * Frees all resources owned by the object, prior to its destruction. */ IMPORT_C ~CWTLSText(); /** * Performs a simple byte compare between this CWTLSText object and a specified CWTLSText object. * * There is a subtle difference between this byte-match and CWTLSName::ExactMatchL(). * As opposed to the latter, this function should successfully match two names that * are the same that were encoded using different character sets. * * @param aName An existing CWTLSText object. * @return ETrue, if the CWTLSText objects match; EFalse, otherwise. */ IMPORT_C TBool ExactMatchL(const CWTLSText& aName) const; /** * Gets the name of the CWTLSText object. * * @return A pointer to the name of the CWTLSText object. */ IMPORT_C TPtrC Name() const; /** * Gets the character set of the CWTLSText object. * * @return The character set */ IMPORT_C TWTLSCharSet CharacterSet() const;protected: /** * @internalAll */ CWTLSText(); /** * @internalAll */ void ConstructL(const TDesC8& aBinaryData, TInt& aPos); HBufC* iName;private: TInt iCharacterSet; };//this class implements the 'structured' variant of the text type defined in the WTLS spec, section 10.5.2://<servicename>; <organization>; <country>[; <commonname>[; <extension>[; <extension>[ …. ]]]]_LIT(KWTLSCountryName,"C");_LIT(KWTLSOrganizationName,"O");_LIT(KWTLSServiceName,"OU");_LIT(KWTLSTitle,"T");_LIT(KWTLSCommonName,"CN");class TWTLSStructuredTextField {public: /** * @internalAll */ TWTLSStructuredTextField(const TDesC& aType, const TDesC& aValue); /** * * @return */ IMPORT_C TPtrC Type() const; /** * * @return */ IMPORT_C TPtrC Value() const;private: const TPtrC iType; const TPtrC iValue; };class CWTLSStructuredText : public CWTLSText {public: /** * Creates a new CWTLSStructuredText object from the specified buffer containing the binary coded representation. * * @param aBinaryData The encoded binary representation. * @return The new CWTLSStructuredText object. */ IMPORT_C static CWTLSStructuredText* NewL(const TDesC8& aBinaryData); /** * Creates a new CWTLSStructuredText object from the specified buffer containing the binary coded representation, * and puts a pointer to it onto the cleanup stack. * * @param aBinaryData The encoded binary representation. * @return The new CWTLSStructuredText object. */ IMPORT_C static CWTLSStructuredText* NewLC(const TDesC8& aBinaryData); /** * Creates a new CWTLSStructuredText object from the specified buffer containing the binary coded representation, * starting at the specified offset. * * @param aBinaryData The encoded binary representation. * @param aPos The offset position from which to start decoding. It specifies an offset into the descriptor, * and is updated to the position at the end of the object. * @return The new CWTLSStructuredText object. */ IMPORT_C static CWTLSStructuredText* NewL(const TDesC8& aBinaryData, TInt& aPos); /** * Creates a new CWTLSStructuredText object from the specified buffer containing the binary coded representation, * starting at the specified offset, and puts a pointer to it onto the cleanup stack. * * @param aBinaryData The encoded binary representation. * @param aPos The offset position from which to start decoding. It specifies an offset into the descriptor, * and is updated to the position at the end of the object. * @return The new CWTLSStructuredText object. */ IMPORT_C static CWTLSStructuredText* NewLC(const TDesC8& aBinaryData, TInt& aPos); /** * Destructor. * * Frees all resources owned by the object, prior to its destruction. */ IMPORT_C ~CWTLSStructuredText(); /** * * * @return */ IMPORT_C HBufC* DisplayNameL() const; //accessors for defined fields /** * * * @return */ IMPORT_C TPtrC ServiceName() const; /** * * * @return */ IMPORT_C TPtrC Organization() const; /** * * * @return */ IMPORT_C TPtrC Country() const; /** * * * @return */ IMPORT_C TInt Count() const; /** * * * Note * * @param aType * @return A pointer to a TWTLSStructuredTextField object; NULL if field not found. * The returned object remains the property of the structured text object * (so don't delete it). */ IMPORT_C const TWTLSStructuredTextField* FieldByName(const TDesC& aType) const; /** * * * @return */ IMPORT_C const TWTLSStructuredTextField& FieldByIndex(TInt aIndex) const;private: CWTLSStructuredText(); void ConstructL(const TDesC8& aBinaryData, TInt& aPos); void AddFieldValueL(const TDesC& aFieldName, TInt& aPos); void AddFieldL(TInt& aPos); TPtrC GetFieldL(TDesC& aString, TInt& aPos); TBool GetSubFieldL(TDesC& aString, TInt& aPos); CArrayFixFlat<TWTLSStructuredTextField>* iFields; };#endif