williamr@4: /* williamr@4: * Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@4: * All rights reserved. williamr@4: * This component and the accompanying materials are made available williamr@4: * under the terms of the License "Eclipse Public License v1.0" williamr@4: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: * williamr@4: * Initial Contributors: williamr@4: * Nokia Corporation - initial contribution. williamr@4: * williamr@4: * Contributors: williamr@4: * williamr@4: * Description: williamr@4: * Rule-based plugin selector definition williamr@4: * williamr@4: */ williamr@4: williamr@4: williamr@4: /** williamr@4: @file williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: williamr@4: #ifndef __CRYPTOAPI_RULESELECTOR_H__ williamr@4: #define __CRYPTOAPI_RULESELECTOR_H__ williamr@4: williamr@4: #include williamr@4: #include williamr@4: #include williamr@4: #include williamr@4: williamr@4: #ifndef SYMBIAN_ENABLE_SPLIT_HEADERS williamr@4: #include williamr@4: #endif williamr@4: williamr@4: namespace CryptoSpi williamr@4: { williamr@4: williamr@4: /** williamr@4: The operators of the plugin selection rule williamr@4: */ williamr@4: enum TRuleOperator williamr@4: { williamr@4: /** williamr@4: Operator == williamr@4: */ williamr@4: EOpEqual, williamr@4: williamr@4: /** williamr@4: Operator != williamr@4: */ williamr@4: EOpNotEqual, williamr@4: williamr@4: /** williamr@4: Operator > williamr@4: */ williamr@4: EOpGreaterThan, williamr@4: williamr@4: /** williamr@4: Operator < williamr@4: */ williamr@4: EOpLessThan, williamr@4: williamr@4: /** williamr@4: Operator >= williamr@4: */ williamr@4: EOpGreaterThanOrEqual, williamr@4: williamr@4: /** williamr@4: Operator <= williamr@4: */ williamr@4: EOpLessThanOrEqual, williamr@4: williamr@4: /** williamr@4: Ascending Sort of an characteristic williamr@4: */ williamr@4: EOpAscendingSort, williamr@4: williamr@4: /** williamr@4: Descending Sort of an characteristic williamr@4: */ williamr@4: EOpDescendingSort, williamr@4: williamr@4: /** williamr@4: The total number of operators williamr@4: */ williamr@4: EOpInvalid williamr@4: }; williamr@4: williamr@4: class CRulesCharacteristicsAndPluginName; williamr@4: /** williamr@4: A single plugin selection rule definition williamr@4: */ williamr@4: NONSHARABLE_CLASS(CSelectionRuleContent) : public CBase williamr@4: { williamr@4: public: williamr@4: /** williamr@4: Create a selection rule content instance; the supported characteristic uid's are williamr@4: defined in plugincharacteristics.h; the supported operators are defined in ruleselector.h williamr@4: @param aInterfaceScope The Interface scope of this rule williamr@4: @param aAlgorithmScope The Algorithm scope of this rule williamr@4: @param aCharacteristicValue The value of the rule of this characteristic williamr@4: @param aOperator The operator of the rule williamr@4: @param aIsOptional Whether this rule is optional or mandatory williamr@4: @return A pointer to a CSelectionRuleContent instance williamr@4: */ williamr@4: IMPORT_C static CSelectionRuleContent* NewL(TUid aInterfaceScope, williamr@4: TUid aAlgorithmScope, williamr@4: CCryptoParam* aCharacteristicValue, williamr@4: TRuleOperator aOperator, williamr@4: TBool aIsOptional); williamr@4: /** williamr@4: Destructor williamr@4: */ williamr@4: IMPORT_C ~CSelectionRuleContent(); williamr@4: williamr@4: /** williamr@4: * @internalComponent williamr@4: * williamr@4: * Get the Interface Scope of this rule williamr@4: * @return the Interface Scope Uid of this rule williamr@4: **/ williamr@4: TUid GetInterfaceScope(); williamr@4: williamr@4: /** williamr@4: * @internalComponent williamr@4: * williamr@4: * Get the Algorithm Scope of this rule williamr@4: * @return the Algorithm Scope Uid of this rule williamr@4: **/ williamr@4: TUid GetAlgorithmScope(); williamr@4: williamr@4: /** williamr@4: * @internalComponent williamr@4: * williamr@4: * Get the Rule operator williamr@4: * @return The Rule operator williamr@4: **/ williamr@4: TInt GetOperator(); williamr@4: williamr@4: /** williamr@4: * @internalComponent williamr@4: * williamr@4: * Get the value of the rule of this characteristic williamr@4: * @return The value of the rule of this characteristic williamr@4: **/ williamr@4: const CCryptoParam* GetCharacteristicValue(); williamr@4: williamr@4: /** williamr@4: * @internalComponent williamr@4: * williamr@4: * returns whether the rule is optional williamr@4: * @return Whether the rule is optional williamr@4: **/ williamr@4: TBool IsOptionalRule(); williamr@4: williamr@4: private: williamr@4: /** williamr@4: Constructor williamr@4: */ williamr@4: CSelectionRuleContent(TUid aInterfaceScope, williamr@4: TUid aAlgorithmScope, williamr@4: CCryptoParam* aCharacteristicValue, williamr@4: TRuleOperator aOperator, williamr@4: TBool aIsOptional); williamr@4: williamr@4: /** williamr@4: The scopes of this rule williamr@4: */ williamr@4: TUid iInterfaceScope; williamr@4: TUid iAlgorithmScope; williamr@4: williamr@4: /** williamr@4: The value of the rule of this characteristic williamr@4: */ williamr@4: const CCryptoParam* iCharacteristicValue; williamr@4: williamr@4: /** williamr@4: The Operator of the Characteristic williamr@4: */ williamr@4: TRuleOperator iOperator; williamr@4: williamr@4: /** williamr@4: if the rule on this characteristic is optional williamr@4: */ williamr@4: TBool iIsOptional; williamr@4: }; williamr@4: williamr@4: williamr@4: /** williamr@4: Definition of rule-based plugin selection rules williamr@4: */ williamr@4: NONSHARABLE_CLASS(CSelectionRules) : public CBase williamr@4: { williamr@4: public: williamr@4: /** williamr@4: create a Selection Rule instance which will hold the rules to filter the plugins williamr@4: @return a pointer to a CSelectionRules instance williamr@4: */ williamr@4: IMPORT_C static CSelectionRules* NewL(); williamr@4: williamr@4: /** williamr@4: Destructor williamr@4: */ williamr@4: IMPORT_C ~CSelectionRules(); williamr@4: williamr@4: /** williamr@4: Add a selection rule the this object williamr@4: @param aSelectionRule The rule to be added williamr@4: */ williamr@4: IMPORT_C void AddSelectionRuleL(CSelectionRuleContent* aSelectionRule); williamr@4: williamr@4: /** williamr@4: * @internalComponent williamr@4: * williamr@4: * Get the selection rules williamr@4: * @return The reference of the rules williamr@4: **/ williamr@4: RPointerArray& GetSelectionRules(); williamr@4: williamr@4: private: williamr@4: /** williamr@4: Constructor williamr@4: */ williamr@4: CSelectionRules(); williamr@4: williamr@4: /** williamr@4: a group of plugin rules williamr@4: */ williamr@4: RPointerArray iRules; williamr@4: }; williamr@4: williamr@4: /** williamr@4: Selector apply the rule-based selection to find the plugin. williamr@4: */ williamr@4: NONSHARABLE_CLASS(CRuleSelector) : public CBase, public MPluginSelector williamr@4: { williamr@4: public: williamr@4: /** williamr@4: NewL create the ruled-based selector williamr@4: @param aRules The Rules to select the plugins williamr@4: @return a pointer to a CRuleSelector instance williamr@4: */ williamr@4: IMPORT_C static CRuleSelector* NewL(CSelectionRules* aRules); williamr@4: IMPORT_C static CRuleSelector* NewLC(CSelectionRules* aRules); williamr@4: williamr@4: /** williamr@4: Destructor williamr@4: */ williamr@4: IMPORT_C ~CRuleSelector(); williamr@4: williamr@4: /** williamr@4: * @deprecated williamr@4: * williamr@4: * virtual function from MPluginSelector williamr@4: */ williamr@4: virtual void CreateHashL(CHash*& aHash, williamr@4: TUid aAlgorithmUid, williamr@4: TUid aOperationMode, williamr@4: const CKey* aKey, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: //virtual function from MPluginSelector williamr@4: virtual void CreateRandomL(CRandom*& aRandom, williamr@4: TUid aAlgorithmUid, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: //virtual function from MPluginSelector williamr@4: virtual void CreateSymmetricCipherL(CSymmetricCipher*& aCipher, williamr@4: TUid aAlgorithmUid, williamr@4: const CKey& aKey, williamr@4: TUid aCryptoMode, williamr@4: TUid aOperationMode, williamr@4: TUid aPaddingMode, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: //virtual function from MPluginSelector williamr@4: virtual void CreateAsymmetricCipherL(CAsymmetricCipher*& aCipher, williamr@4: TUid aAlgorithmUid, williamr@4: const CKey& aKey, williamr@4: TUid aCryptoMode, williamr@4: TUid aPaddingMode, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: //virtual function from MPluginSelector williamr@4: virtual void CreateSignerL(CSigner*& aSigner, williamr@4: TUid aAlgorithmUid, williamr@4: const CKey& aKey, williamr@4: TUid aPaddingMode, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: //virtual function from MPluginSelector williamr@4: virtual void CreateVerifierL(CVerifier*& aVerifier, williamr@4: TUid aAlgorithmUid, williamr@4: const CKey& aKey, williamr@4: TUid aPaddingMode, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: //virtual function from MPluginSelector williamr@4: virtual void CreateKeyPairGeneratorL(CKeyPairGenerator*& aKeyPairGenerator, williamr@4: TUid aKeyAlgorithmUid, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: //virtual function from MPluginSelector williamr@4: virtual void CreateKeyAgreementL(CKeyAgreement*& aKeyAgreement, williamr@4: TUid aAlgorithmUid, williamr@4: const CKey& aPrivateKey, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: /** williamr@4: * @deprecated williamr@4: * williamr@4: * virtual function from MPluginSelector williamr@4: */ williamr@4: virtual void CreateAsyncHashL(CAsyncHash*& aHash, williamr@4: TUid aAlgorithmUid, williamr@4: TUid aOperationMode, williamr@4: const CKey* aKey, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: //virtual function from MPluginSelector williamr@4: virtual void CreateAsyncRandomL(CAsyncRandom*& aRandom, williamr@4: TUid aAlgorithmUid, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: //virtual function from MPluginSelector williamr@4: virtual void CreateAsyncSymmetricCipherL(CAsyncSymmetricCipher*& aCipher, williamr@4: TUid aAlgorithmUid, williamr@4: const CKey& aKey, williamr@4: TUid aCryptoMode, williamr@4: TUid aOperationMode, williamr@4: TUid aPaddingMode, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: //virtual function from MPluginSelector williamr@4: virtual void CreateAsyncAsymmetricCipherL(CAsyncAsymmetricCipher*& aCipher, williamr@4: TUid aAlgorithmUid, williamr@4: const CKey& aKey, williamr@4: TUid aCryptoMode, williamr@4: TUid aPaddingMode, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: //virtual function from MPluginSelector williamr@4: virtual void CreateAsyncSignerL(CAsyncSigner*& aSigner, williamr@4: TUid aAlgorithmUid, williamr@4: const CKey& aKey, williamr@4: TUid aPaddingMode, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: //virtual function from MPluginSelector williamr@4: virtual void CreateAsyncVerifierL(CAsyncVerifier*& aVerifier, williamr@4: TUid aAlgorithmUid, williamr@4: const CKey& aKey, williamr@4: TUid aPaddingMode, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: //virtual function from MPluginSelector williamr@4: virtual void CreateAsyncKeyPairGeneratorL(CAsyncKeyPairGenerator*& aKeyPairGenerator, williamr@4: TUid aAlgorithmUid, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: //virtual function from MPluginSelector williamr@4: virtual void CreateAsyncKeyAgreementL(CAsyncKeyAgreement*& aKeyAgreement, williamr@4: TUid aAlgorithmUid, williamr@4: const CKey& aPrivateKey, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: #ifdef SYMBIAN_SDP_IPSEC_VOIP_SUPPORT williamr@4: williamr@4: //virtual function from MPluginSelector williamr@4: virtual void CreateMacL(CMac*& aMac, williamr@4: const TUid aAlgorithmUid, williamr@4: const CKey& aKey, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: //virtual function from MPluginSelector williamr@4: virtual void CreateAsyncMacL(CAsyncMac*& aMac, williamr@4: const TUid aAlgorithmUid, williamr@4: const CKey& aKey, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: //virtual function from MPluginSelector williamr@4: virtual void CreateHashL(CHash*& aHash, williamr@4: TUid aAlgorithmUid, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: //virtual function from MPluginSelector williamr@4: virtual void CreateAsyncHashL(CAsyncHash*& aHash, williamr@4: TUid aAlgorithmUid, williamr@4: const CCryptoParams* aAlgorithmParams); williamr@4: williamr@4: #endif williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt AscendCreatorName(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt DescendCreatorName(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt AscendExtendedTDesC8L(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt DescendExtendedTDesC8L(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt AscendMaxConcurrencySupported(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt DescendMaxConcurrencySupported(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt AscendLatency(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt DescendLatency(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt AscendThroughput(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt DescendThroughput(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt AscendHashBlockSize(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt DescendHashBlockSize(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt AscendSymmetricCipherBlockSize(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt DescendSymmetricCipherBlockSize(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt AscendHashOutputSize(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt DescendHashOutputSize(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt AscendRandomBlockingMode(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt DescendRandomBlockingMode(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt AscendSymmetricCipherKeyLength(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt DescendSymmetricCipherKeyLength(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt AscendAsymmetricCipherKeyLength(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt DescendAsymmetricCipherKeyLength(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt AscendAsymmetricSignatureKeyLength(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt DescendAsymmetricSignatureKeyLength(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt AscendSymmetricCipherKeySupport(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt DescendSymmetricCipherKeySupport(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt AscendAsymmetricCipherKeySupport(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt DescendAsymmetricCipherKeySupport(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt AscendAsymmetricSignatureKeySupport(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt DescendAsymmetricSignatureKeySupport(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt AscendAsymmetricKeypairGeneratorKeyLength(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt DescendAsymmetricKeypairGeneratorKeyLength(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt AscendExtendedCharacteristicL(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: /** @internalComponent */ williamr@4: static TInt DescendExtendedCharacteristicL(const CRulesCharacteristicsAndPluginName& aLeft, const CRulesCharacteristicsAndPluginName& aRight); williamr@4: williamr@4: private: williamr@4: williamr@4: /** williamr@4: Constructor williamr@4: @param aRules the Rules to select the plugins williamr@4: */ williamr@4: CRuleSelector(); williamr@4: williamr@4: /** williamr@4: Second Phase Constructor williamr@4: */ williamr@4: void ConstructL(CSelectionRules* aRules); williamr@4: williamr@4: void PerformFilterL(CSelectionRules* aRules); williamr@4: williamr@4: void PerformAlgorithmFilterL(TInt32 aInterfaceUid, RPointerArray& aCharacteristicsDLL, williamr@4: CSelectionRuleContent* aRules, TInt& aLastPreference); williamr@4: williamr@4: TBool FilterCommonCharacteristicsL(TInt32 aInterfaceUid, RPointerArray& aCharacteristicsDLL, williamr@4: CSelectionRuleContent* aRules, TInt& aLastPreference); williamr@4: williamr@4: TBool FilterNonCommonCharacteristicsL(TInt32 aInterfaceUid, RPointerArray& aCharacteristicsDLL, williamr@4: CSelectionRuleContent* aRules, TInt& aLastPreference); williamr@4: williamr@4: TBool FilterExtendedCharacteristicsL(TInt32 aInterfaceUid, RPointerArray& aCharacteristicsDLL, williamr@4: CSelectionRuleContent* aRules, TInt& aLastPreference); williamr@4: williamr@4: void FilterTInt32L(TInt32 aInterfaceUid, CRulesCharacteristicsAndPluginName& aCharacteristics, williamr@4: CSelectionRuleContent* aRules, TInt& aLastPreference, TInt32 aCharValue); williamr@4: williamr@4: void FilterMultiTInt32L(TInt32 aInterfaceUid, CRulesCharacteristicsAndPluginName& aCharacteristicsDLL, williamr@4: CSelectionRuleContent* aRules, TInt& aLastPreference, williamr@4: TBool aSupport); williamr@4: williamr@4: void FilterCreatorNameL(TInt32 aInterfaceUid, RPointerArray& aCharacteristicsDLL, williamr@4: CSelectionRuleContent* aRules, TInt& aLastPreference); williamr@4: williamr@4: void FilterExtendedTDesC8L(TInt32 aInterfaceUid, RPointerArray& aCharacteristicsDLL, williamr@4: CSelectionRuleContent* aRules, TInt& aLastPreference, const TDesC8& aCharValue); williamr@4: williamr@4: void FilterTBoolL(TInt32 aInterfaceUid, CRulesCharacteristicsAndPluginName& aCharacteristics, williamr@4: CSelectionRuleContent* aRules, TInt& aLastPreference, TBool aCharValue); williamr@4: williamr@4: void FilterTIntL(TInt32 aInterfaceUid, RPointerArray& aCharacteristicsDLL, williamr@4: CSelectionRuleContent* aRules, TInt& aLastPreference, TInt aCharValue); williamr@4: williamr@4: void TryAddToOptionalCharListL(TInt32 aInterfaceUid, CRulesCharacteristicsAndPluginName& aCharacteristics, williamr@4: CSelectionRuleContent* aRules); williamr@4: williamr@4: void AddToCharListL(TInt32 aInterfaceUid, CRulesCharacteristicsAndPluginName& aCharacteristics, williamr@4: TInt& aLastPreference); williamr@4: williamr@4: void AddOptionalToCharListL(TInt32 aInterfaceUid, CRulesCharacteristicsAndPluginName& aCharacteristics); williamr@4: williamr@4: void ConstructMapAL(); williamr@4: williamr@4: void SetSearchRecord(TUid aInterfaceUid, TInt aValue); williamr@4: williamr@4: /** williamr@4: Loads the crypto plugins williamr@4: */ williamr@4: void LoadPluginsL(); williamr@4: williamr@4: TInt FindPlugin(TUid aInterfaceUid, TUid aAlgorithmUid, TUid& aImplementationId, TFileName& aDllName); williamr@4: williamr@4: /** williamr@4: The selection rules to filter the plugins williamr@4: */ williamr@4: CSelectionRules* iSelectionRules; williamr@4: williamr@4: /** williamr@4: Maps of the interface UID and the pointer of algorithm's characteristic array williamr@4: They are used alternatively to filter from one array to the other williamr@4: The final array will be set to iActiveInterfaceCharacteristics_Map for plugin lookup williamr@4: */ williamr@4: RHashMap*> iSelectedInterfaceCharacteristics_MapA; williamr@4: RHashMap*> iSelectedInterfaceCharacteristics_MapB; williamr@4: williamr@4: /** williamr@4: Pointer of the active map of the interface UID and the characteristic list williamr@4: */ williamr@4: const RHashMap*>* iActiveInterfaceCharacteristics_Map; williamr@4: williamr@4: /** williamr@4: Records the next index to try williamr@4: */ williamr@4: RHashMap iNextTryCharacteristicsIndex; williamr@4: williamr@4: /** williamr@4: To indicate whether to use iSelectedInterfaceCharacteristics_MapA williamr@4: or iSelectedInterfaceCharacteristics_MapA to filter williamr@4: */ williamr@4: TBool iUseMapAToFilter; williamr@4: williamr@4: /** williamr@4: This is use to indicate whether to alternate the maps for next rule filtering or not williamr@4: */ williamr@4: TBool iToggleUseMap; williamr@4: williamr@4: /** williamr@4: The plugin DLL list, which holds all the plugin DLLs williamr@4: */ williamr@4: RArray iPluginDllList; williamr@4: }; williamr@4: } williamr@4: williamr@4: #endif //__CRYPTOAPI_RULESELECTOR_H__