sl@0: /* sl@0: * Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: * All rights reserved. sl@0: * This component and the accompanying materials are made available sl@0: * under the terms of the License "Eclipse Public License v1.0" sl@0: * which accompanies this distribution, and is available sl@0: * at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: * sl@0: * Initial Contributors: sl@0: * Nokia Corporation - initial contribution. sl@0: * sl@0: * Contributors: sl@0: * sl@0: * Description: sl@0: * CPKCS9ChallengePasswordAttr and CPKCS9ExtensionRequestAttr class implementation. sl@0: * sl@0: */ sl@0: sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: // CPKCS9ChallengePasswordAttr //////////////////////////////////////////////////////////// sl@0: sl@0: EXPORT_C CPKCS9ChallengePasswordAttr* CPKCS9ChallengePasswordAttr::NewLC(const TDesC8& aPassword) sl@0: { sl@0: CPKCS9ChallengePasswordAttr* self = new (ELeave) CPKCS9ChallengePasswordAttr; sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(aPassword); sl@0: return self; sl@0: } sl@0: sl@0: EXPORT_C CPKCS9ChallengePasswordAttr* CPKCS9ChallengePasswordAttr::NewL(const TDesC8& aPassword) sl@0: { sl@0: CPKCS9ChallengePasswordAttr* self = NewLC(aPassword); sl@0: CleanupStack::Pop(self); sl@0: return self; sl@0: } sl@0: sl@0: EXPORT_C void CPKCS9ChallengePasswordAttr::ResetL(const TDesC8& aPassword) sl@0: { sl@0: delete iRoot; sl@0: iRoot = NULL; sl@0: ConstructL(aPassword); sl@0: } sl@0: sl@0: CPKCS9ChallengePasswordAttr::CPKCS9ChallengePasswordAttr() sl@0: { sl@0: } sl@0: sl@0: CPKCS9ChallengePasswordAttr::~CPKCS9ChallengePasswordAttr() sl@0: { sl@0: } sl@0: sl@0: CASN1EncBase* CPKCS9ChallengePasswordAttr::GetEncodingLC() sl@0: { sl@0: return CPKCSAttributeBase::GetEncodingLC(); sl@0: } sl@0: sl@0: void CPKCS9ChallengePasswordAttr::ConstructL(const TDesC8& aPassword) sl@0: { sl@0: // Size of password string should be between bounds sl@0: if ((aPassword.Length() < KPkcs9StringLB) || (aPassword.Length() > KPkcs9StringUB)) sl@0: { sl@0: User::Leave(KErrArgument); sl@0: } sl@0: sl@0: iRoot = CASN1EncSequence::NewL(); sl@0: CASN1EncObjectIdentifier* oid = CASN1EncObjectIdentifier::NewLC(KPkcs9ChallengePasswordAttrOID); sl@0: iRoot->AddAndPopChildL(oid); sl@0: iValueSet = CASN1EncSet::NewLC(); sl@0: iRoot->AddAndPopChildL(iValueSet); // Takes ownership sl@0: CASN1EncPrintableString* value = CASN1EncPrintableString::NewLC(aPassword); sl@0: iValueSet->AddAndPopChildL(value); sl@0: } sl@0: sl@0: // CPKCS9ExtensionRequestAttr //////////////////////////////////////////////////////////// sl@0: sl@0: EXPORT_C CPKCS9ExtensionRequestAttr* CPKCS9ExtensionRequestAttr::NewLC(const CX509CertExtension& aExtension) sl@0: { sl@0: CPKCS9ExtensionRequestAttr* self = new (ELeave) CPKCS9ExtensionRequestAttr; sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(aExtension); sl@0: return self; sl@0: } sl@0: sl@0: EXPORT_C CPKCS9ExtensionRequestAttr* CPKCS9ExtensionRequestAttr::NewL(const CX509CertExtension& aExtension) sl@0: { sl@0: CPKCS9ExtensionRequestAttr* self = NewLC(aExtension); sl@0: CleanupStack::Pop(self); sl@0: return self; sl@0: } sl@0: sl@0: EXPORT_C void CPKCS9ExtensionRequestAttr::AddExtensionL(const CX509CertExtension& aExtension) sl@0: { sl@0: CASN1EncSequence *extension = aExtension.EncodeASN1DERLC(); sl@0: iExtSeq->AddAndPopChildL(extension); sl@0: } sl@0: sl@0: EXPORT_C void CPKCS9ExtensionRequestAttr::ResetL(const CX509CertExtension& aExtension) sl@0: { sl@0: delete iRoot; sl@0: iRoot = NULL; sl@0: ConstructL(aExtension); sl@0: } sl@0: sl@0: CPKCS9ExtensionRequestAttr::CPKCS9ExtensionRequestAttr() sl@0: { sl@0: } sl@0: sl@0: CPKCS9ExtensionRequestAttr::~CPKCS9ExtensionRequestAttr() sl@0: { sl@0: } sl@0: sl@0: CASN1EncBase* CPKCS9ExtensionRequestAttr::GetEncodingLC() sl@0: { sl@0: return CPKCSAttributeBase::GetEncodingLC(); sl@0: } sl@0: sl@0: void CPKCS9ExtensionRequestAttr::ConstructL(const CX509CertExtension& aExtension) sl@0: { sl@0: iRoot = CASN1EncSequence::NewL(); sl@0: CASN1EncObjectIdentifier* oid = CASN1EncObjectIdentifier::NewLC(KPkcs9ExtensionRequestAttrOID); sl@0: iRoot->AddAndPopChildL(oid); sl@0: iValueSet = CASN1EncSet::NewLC(); sl@0: iRoot->AddAndPopChildL(iValueSet); // Takes ownership sl@0: iExtSeq = CASN1EncSequence::NewLC(); sl@0: iValueSet->AddAndPopChildL(iExtSeq); sl@0: CASN1EncSequence *extension = aExtension.EncodeASN1DERLC(); sl@0: iExtSeq->AddAndPopChildL(extension); sl@0: } sl@0: