diff -r 675a964f4eb5 -r 35751d3474b7 cryptoservices/certificateandkeymgmt/inc/wtlsnames.h --- a/cryptoservices/certificateandkeymgmt/inc/wtlsnames.h Tue Jul 21 01:04:32 2009 +0100 +++ b/cryptoservices/certificateandkeymgmt/inc/wtlsnames.h Thu Sep 10 14:01:51 2009 +0300 @@ -1,470 +1,449 @@ -/* -* 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 -#include -#include - -/** -@file -This file contains the definition for class CWTLSName. - -@internalAll - -enum { 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 lot -of 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. - * - * @publishedAll - * @released - */ -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 - }; - -/** - * @publishedAll - * @released - */ -typedef TUint8 TWTLSNameType; - -/** - * @publishedAll - * @released - */ -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. - * - * @publishedAll - * @released - */ - { -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; - }; - -/** - * @publishedAll - * @released - */ -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: -//; ; [; [; [; [ …. ]]]] -_LIT(KWTLSCountryName,"C"); -_LIT(KWTLSOrganizationName,"O"); -_LIT(KWTLSServiceName,"OU"); -_LIT(KWTLSTitle,"T"); -_LIT(KWTLSCommonName,"CN"); - -/** - * @publishedAll - * @released - */ -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; - }; - -/** - * @publishedAll - * @released - */ -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* iFields; - }; - -#endif +/* +* 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 +#include +#include + +/** +@file +This file contains the definition for class CWTLSName. + +@publishedAll +@released + +enum { 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 lot +of 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: +//; ; [; [; [; [ …. ]]]] +_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* iFields; + }; + +#endif + +