diff -r 675a964f4eb5 -r 35751d3474b7 cryptoservices/certificateandkeymgmt/wtlscert/wtlscertchain.cpp --- a/cryptoservices/certificateandkeymgmt/wtlscert/wtlscertchain.cpp Tue Jul 21 01:04:32 2009 +0100 +++ b/cryptoservices/certificateandkeymgmt/wtlscert/wtlscertchain.cpp Thu Sep 10 14:01:51 2009 +0300 @@ -1,198 +1,200 @@ -/* -* Copyright (c) 1998-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: -* -*/ - - -#include -#include -#include "wtlscertchainao.h" - -//validation status -EXPORT_C TWTLSValidationStatus::TWTLSValidationStatus(const TValidationError aError, - const TInt aCert) - :iReason(aError), iCert(aCert) - { - } - -//validationresult - -EXPORT_C CWTLSValidationResult* CWTLSValidationResult::NewLC() - { - CWTLSValidationResult* s = new(ELeave) CWTLSValidationResult; - CleanupStack::PushL(s); - s->ConstructL(); - return s; - } - -EXPORT_C CWTLSValidationResult* CWTLSValidationResult::NewL() - { - CWTLSValidationResult* s = CWTLSValidationResult::NewLC(); - CleanupStack::Pop(); - return s; - } - -EXPORT_C CWTLSValidationResult::~CWTLSValidationResult() - { - delete iWarnings; - } - -CWTLSValidationResult::CWTLSValidationResult() - :iError(EValidatedOK, 0) - { - } - -void CWTLSValidationResult::ConstructL() - { - iWarnings = new(ELeave) CArrayFixFlat (1); - } - -EXPORT_C const TWTLSValidationStatus CWTLSValidationResult::Error() const - { - return iError; - } - -EXPORT_C const CArrayFixFlat& CWTLSValidationResult::Warnings() const - { - return *iWarnings; - } - -void CWTLSValidationResult::Reset() - { - iError = TWTLSValidationStatus(EValidatedOK, 0); - iWarnings->Reset(); - } - -void CWTLSValidationResult::SetError(const TValidationError aError, const TInt aCert) - { - iError.iReason = aError; - iError.iCert = aCert; - } - -void CWTLSValidationResult::AppendWarningL(TWTLSValidationStatus aWarning) - { - iWarnings->AppendL(aWarning); - } - - //WTLS cert chain - - //constructors -EXPORT_C CWTLSCertChain* CWTLSCertChain::NewL(RFs& aFs, - const TPtrC8& aEncodedCerts, - const TUid aClient) - { - CWTLSCertChain* self = CWTLSCertChain::NewLC(aFs, aEncodedCerts, aClient); - CleanupStack::Pop(); //self - return self; - } - -EXPORT_C CWTLSCertChain* CWTLSCertChain::NewLC(RFs& aFs, - const TPtrC8& aEncodedCerts, - const TUid aClient) - { - CWTLSCertChain* self = new(ELeave) CWTLSCertChain(aFs); - CleanupStack::PushL(self); - self->ConstructL(aEncodedCerts, aClient); - return self; - } - -EXPORT_C CWTLSCertChain* CWTLSCertChain::NewL(RFs& aFs, - const TPtrC8& aEncodedCerts, - const CArrayPtr& aRootCerts) - { - CWTLSCertChain* self = CWTLSCertChain::NewLC(aFs, aEncodedCerts, aRootCerts); - CleanupStack::Pop();//self - return self; - } - -EXPORT_C CWTLSCertChain* CWTLSCertChain::NewLC(RFs& aFs, - const TPtrC8& aEncodedCerts, - const CArrayPtr& aRootCerts) - { - CWTLSCertChain* self = new(ELeave) CWTLSCertChain(aFs); - CleanupStack::PushL(self); - self->ConstructL(aEncodedCerts, aRootCerts); - return self; - } - - //destructor -EXPORT_C CWTLSCertChain::~CWTLSCertChain() - { - if (iChain) - iChain->ResetAndDestroy(); - delete iChain; - delete iActiveObject; - } - - //validation -EXPORT_C void CWTLSCertChain::ValidateL(CWTLSValidationResult& aValidationResult, - const TTime& aValidationTime, - TRequestStatus& aStatus) - { - __ASSERT_DEBUG(iActiveObject, User::Panic(_L("CWTLSCertChain"), 1)); - - iActiveObject->Validate(aValidationResult, aValidationTime, aStatus); - } - - //accessors -EXPORT_C TInt CWTLSCertChain::Count() const - { - return iChain->Count(); - } - -EXPORT_C const CWTLSCertificate& CWTLSCertChain::Cert(TInt aIndex) const - { - return *(iChain->At(aIndex)); - } - -EXPORT_C TBool CWTLSCertChain::ChainHasRoot() const - { - return iChainHasRoot; - } - -EXPORT_C void CWTLSCertChain::AppendCertsL(const TPtrC8& aEncodedCerts) - { - for(TInt pos = 0; pos < aEncodedCerts.Size(); ) - { - CWTLSCertificate* eeCert = CWTLSCertificate::NewLC(aEncodedCerts, pos); - iChain->AppendL(eeCert); - CleanupStack::Pop(eeCert); - } - } - -//private functions -CWTLSCertChain::CWTLSCertChain(RFs& aFs) - : iFs(aFs), iChainHasRoot(EFalse) - { - } - -void CWTLSCertChain::ConstructL(const TPtrC8& aEncodedCerts, const TUid aClient) - { - iActiveObject = CWTLSCertChainAO::NewL(iFs, *this, aClient); - DoConstructL(aEncodedCerts); - } - -void CWTLSCertChain::ConstructL(const TPtrC8& aEncodedCerts, const CArrayPtr& aRootCerts) - { - iActiveObject = CWTLSCertChainAO::NewL(iFs, *this, aRootCerts); - DoConstructL(aEncodedCerts); - } - -void CWTLSCertChain::DoConstructL(const TPtrC8& aEncodedCerts) - { - iChain = new(ELeave) CArrayPtrFlat (5); - //typical cert chain unlikely to be more than 5 - AppendCertsL(aEncodedCerts); - } +/* +* Copyright (c) 1998-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: +* +*/ + + +#include +#include +#include "wtlscertchainao.h" + +//validation status +EXPORT_C TWTLSValidationStatus::TWTLSValidationStatus(const TValidationError aError, + const TInt aCert) + :iReason(aError), iCert(aCert) + { + } + +//validationresult + +EXPORT_C CWTLSValidationResult* CWTLSValidationResult::NewLC() + { + CWTLSValidationResult* s = new(ELeave) CWTLSValidationResult; + CleanupStack::PushL(s); + s->ConstructL(); + return s; + } + +EXPORT_C CWTLSValidationResult* CWTLSValidationResult::NewL() + { + CWTLSValidationResult* s = CWTLSValidationResult::NewLC(); + CleanupStack::Pop(); + return s; + } + +EXPORT_C CWTLSValidationResult::~CWTLSValidationResult() + { + delete iWarnings; + } + +CWTLSValidationResult::CWTLSValidationResult() + :iError(EValidatedOK, 0) + { + } + +void CWTLSValidationResult::ConstructL() + { + iWarnings = new(ELeave) CArrayFixFlat (1); + } + +EXPORT_C const TWTLSValidationStatus CWTLSValidationResult::Error() const + { + return iError; + } + +EXPORT_C const CArrayFixFlat& CWTLSValidationResult::Warnings() const + { + return *iWarnings; + } + +void CWTLSValidationResult::Reset() + { + iError = TWTLSValidationStatus(EValidatedOK, 0); + iWarnings->Reset(); + } + +void CWTLSValidationResult::SetError(const TValidationError aError, const TInt aCert) + { + iError.iReason = aError; + iError.iCert = aCert; + } + +void CWTLSValidationResult::AppendWarningL(TWTLSValidationStatus aWarning) + { + iWarnings->AppendL(aWarning); + } + + //WTLS cert chain + + //constructors +EXPORT_C CWTLSCertChain* CWTLSCertChain::NewL(RFs& aFs, + const TPtrC8& aEncodedCerts, + const TUid aClient) + { + CWTLSCertChain* self = CWTLSCertChain::NewLC(aFs, aEncodedCerts, aClient); + CleanupStack::Pop(); //self + return self; + } + +EXPORT_C CWTLSCertChain* CWTLSCertChain::NewLC(RFs& aFs, + const TPtrC8& aEncodedCerts, + const TUid aClient) + { + CWTLSCertChain* self = new(ELeave) CWTLSCertChain(aFs); + CleanupStack::PushL(self); + self->ConstructL(aEncodedCerts, aClient); + return self; + } + +EXPORT_C CWTLSCertChain* CWTLSCertChain::NewL(RFs& aFs, + const TPtrC8& aEncodedCerts, + const CArrayPtr& aRootCerts) + { + CWTLSCertChain* self = CWTLSCertChain::NewLC(aFs, aEncodedCerts, aRootCerts); + CleanupStack::Pop();//self + return self; + } + +EXPORT_C CWTLSCertChain* CWTLSCertChain::NewLC(RFs& aFs, + const TPtrC8& aEncodedCerts, + const CArrayPtr& aRootCerts) + { + CWTLSCertChain* self = new(ELeave) CWTLSCertChain(aFs); + CleanupStack::PushL(self); + self->ConstructL(aEncodedCerts, aRootCerts); + return self; + } + + //destructor +EXPORT_C CWTLSCertChain::~CWTLSCertChain() + { + if (iChain) + iChain->ResetAndDestroy(); + delete iChain; + delete iActiveObject; + } + + //validation +EXPORT_C void CWTLSCertChain::ValidateL(CWTLSValidationResult& aValidationResult, + const TTime& aValidationTime, + TRequestStatus& aStatus) + { + __ASSERT_DEBUG(iActiveObject, User::Panic(_L("CWTLSCertChain"), 1)); + + iActiveObject->Validate(aValidationResult, aValidationTime, aStatus); + } + + //accessors +EXPORT_C TInt CWTLSCertChain::Count() const + { + return iChain->Count(); + } + +EXPORT_C const CWTLSCertificate& CWTLSCertChain::Cert(TInt aIndex) const + { + return *(iChain->At(aIndex)); + } + +EXPORT_C TBool CWTLSCertChain::ChainHasRoot() const + { + return iChainHasRoot; + } + +EXPORT_C void CWTLSCertChain::AppendCertsL(const TPtrC8& aEncodedCerts) + { + for(TInt pos = 0; pos < aEncodedCerts.Size(); ) + { + CWTLSCertificate* eeCert = CWTLSCertificate::NewLC(aEncodedCerts, pos); + iChain->AppendL(eeCert); + CleanupStack::Pop(eeCert); + } + } + +//private functions +CWTLSCertChain::CWTLSCertChain(RFs& aFs) + : iFs(aFs), iChainHasRoot(EFalse) + { + } + +void CWTLSCertChain::ConstructL(const TPtrC8& aEncodedCerts, const TUid aClient) + { + iActiveObject = CWTLSCertChainAO::NewL(iFs, *this, aClient); + DoConstructL(aEncodedCerts); + } + +void CWTLSCertChain::ConstructL(const TPtrC8& aEncodedCerts, const CArrayPtr& aRootCerts) + { + iActiveObject = CWTLSCertChainAO::NewL(iFs, *this, aRootCerts); + DoConstructL(aEncodedCerts); + } + +void CWTLSCertChain::DoConstructL(const TPtrC8& aEncodedCerts) + { + iChain = new(ELeave) CArrayPtrFlat (5); + //typical cert chain unlikely to be more than 5 + AppendCertsL(aEncodedCerts); + } + +