/*
* Copyright (c) 2001-2006 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: EAP and WLAN authentication protocols.
*
*/
#ifndef _EAPTLSPEAPCERTINTERFACE_H_
#define _EAPTLSPEAPCERTINTERFACE_H_
// INCLUDES
#include <e32base.h>
#include "eap_tools.h"
#include "eap_am_type_tls_peap_symbian.h"
#include <unifiedcertstore.h>
#include <mctwritablecertstore.h>
#include <unifiedkeystore.h>
#include <pkixcertchain.h>
#include <x509cert.h>
#include "EapTlsPeapUtils.h"
const TInt KMaxHashLength = 128;
// FORWARD DECLARATIONS
// CLASS DECLARATION
class CEapTlsPeapCertInterface
: public CActive
{
public:
static CEapTlsPeapCertInterface* NewL(abs_eap_am_tools_c* const aTools,
eap_am_type_tls_peap_symbian_c* const aParent);
virtual ~CEapTlsPeapCertInterface();
void ReadCertificateL(SCertEntry& aCertInfo, const TBool aRetrieveChain);
void ReadCACertificateL(SCertEntry& aCertInfo);
void ReadPrivateKeyL(TKeyIdentifier& aHash);
void ValidateChainL(TDesC8& aCertChain, RArray<SCertEntry>& aCACerts);
void GetMatchingCertificatesL(
const RArray<SCertEntry>& aAllowedUserCerts,
const TBool aUseCertAuthoritiesFilter,
EAP_TEMPLATE_CONST eap_array_c<eap_variable_data_c> * const aCertAuthorities,
const TBool aUseCertTypesFilter,
EAP_TEMPLATE_CONST eap_array_c<u8_t> * const aCertTypes,
const TBool aUseAllowedCipherSuitesFilter,
const RArray<TUint>& aAllowedCipherSuites);
void SignL(
TKeyIdentifier& aKeyId,
const TDesC8& aHashIn,
const TUint aSignatureLength);
void DecryptL(
TKeyIdentifier& aKeyId,
const TDesC8& aData);
void CancelSignWithPrivateKey();
protected:
CEapTlsPeapCertInterface(abs_eap_am_tools_c* const aTools, eap_am_type_tls_peap_symbian_c* const aParent);
void ConstructL();
void RunL();
void DoCancel();
private:
enum TState
{
EReadCertInitStore,
EReadCertList,
EReadCert,
EValidateChainInitStore,
EValidateChainGetCACertList,
EValidateChainGetCACert,
EValidateChainEnd,
EGetMatchingCertsInitStore,
EGetMatchingCertsInitialize,
EGetMatchingCertsLoop,
ESignInitStore,
ESignList,
ESignOpenKeyStore,
ESign,
EDecryptInitStore,
EDecryptList,
EDecryptOpenKeyStore,
EDecrypt,
EGetAllCerts,
ECreateCertChain,
ERetrieveChainInitStore,
ESetPassphraseTimeout,
EReadCACertInitStore,
EReadCACertList,
EReadCACert
};
TState iState;
eap_am_type_tls_peap_symbian_c * const iParent;
abs_eap_am_tools_c * const m_am_tools;
CUnifiedCertStore* iCertStore;
MRSASigner* iRSASigner;
MDSASigner* iDSASigner;
MCTDecryptor* iDecryptor;
RFs iFs;
RArray<SCertEntry> iAllowedUserCerts;
TBool iUseCertAuthoritiesFilter;
TBool iUseCertTypesFilter;
TBool iUseAllowedCipherSuitesFilter;
TBool iRSACertsAllowed;
TBool iDSACertsAllowed;
RPointerArray<CX500DistinguishedName> iCertAuthorities;
const eap_array_c<u8_t>* iCertTypes;
RMPointerArray<CCTCertInfo> iCertInfos;
RMPointerArray<CCTKeyInfo> iKeyInfos;
HBufC8* iEncodedCertificate;
TPtr8 iCertPtr;
CCertAttributeFilter* iCertFilter;
TCTKeyAttributeFilter* iKeyFilter;
CPKIXCertChain* iCertChain;
CPKIXValidationResult* iValidationResult;
TTime iTime;
RPointerArray<CX509Certificate> iRootCerts;
RPointerArray<CX509Certificate> iMatchingUserCerts;
RPointerArray<CX509Certificate> iUserCertChain;
CArrayFixFlat<SCertEntry> iMatchingUserCertInfos;
TUint iCAIndex;
TUint iUserCertIndex;
RArray<SCertEntry> iAllowedCACerts;
HBufC8* iInputCertChain;
SCertEntry iCertInfo;
TAny *iResArray;
// SignL
TKeyIdentifier iKeyIdentifier;
TBuf8<KMaxHashLength> iHashIn;
HBufC8* iDataIn;
HBufC8* iDataOut;
HBufC8* iSignature;
CRSASignature* iRSASignature;
CDSASignature* iDSASignature;
TPtr8* iSignaturePtr;
TPtr8* iPtrOut;
CUnifiedKeyStore* iKeyStore;
TBool iRetrieveChain;
};
#endif // _EAPTLSPEAPCERTINTERFACE_H_
// End of file