os/security/cryptoservices/certificateandkeymgmt/pkcs10/pkcs9attr.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
/*
sl@0
     2
* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     3
* All rights reserved.
sl@0
     4
* This component and the accompanying materials are made available
sl@0
     5
* under the terms of the License "Eclipse Public License v1.0"
sl@0
     6
* which accompanies this distribution, and is available
sl@0
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     8
*
sl@0
     9
* Initial Contributors:
sl@0
    10
* Nokia Corporation - initial contribution.
sl@0
    11
*
sl@0
    12
* Contributors:
sl@0
    13
*
sl@0
    14
* Description: 
sl@0
    15
* CPKCS9ChallengePasswordAttr and CPKCS9ExtensionRequestAttr class implementation.
sl@0
    16
*
sl@0
    17
*/
sl@0
    18
sl@0
    19
sl@0
    20
#include <e32std.h>
sl@0
    21
#include <e32def.h>
sl@0
    22
#include <asn1enc.h>
sl@0
    23
#include <pkcs9attr.h>
sl@0
    24
sl@0
    25
// CPKCS9ChallengePasswordAttr ////////////////////////////////////////////////////////////
sl@0
    26
sl@0
    27
EXPORT_C CPKCS9ChallengePasswordAttr* CPKCS9ChallengePasswordAttr::NewLC(const TDesC8& aPassword)
sl@0
    28
	{
sl@0
    29
	CPKCS9ChallengePasswordAttr* self = new (ELeave) CPKCS9ChallengePasswordAttr;
sl@0
    30
	CleanupStack::PushL(self);
sl@0
    31
	self->ConstructL(aPassword);
sl@0
    32
	return self;
sl@0
    33
	}
sl@0
    34
sl@0
    35
EXPORT_C CPKCS9ChallengePasswordAttr* CPKCS9ChallengePasswordAttr::NewL(const TDesC8& aPassword)
sl@0
    36
	{
sl@0
    37
	CPKCS9ChallengePasswordAttr* self = NewLC(aPassword);
sl@0
    38
	CleanupStack::Pop(self);
sl@0
    39
	return self;
sl@0
    40
	}
sl@0
    41
sl@0
    42
EXPORT_C void CPKCS9ChallengePasswordAttr::ResetL(const TDesC8& aPassword)
sl@0
    43
	{
sl@0
    44
	delete iRoot;
sl@0
    45
	iRoot = NULL;
sl@0
    46
	ConstructL(aPassword);
sl@0
    47
	}
sl@0
    48
sl@0
    49
CPKCS9ChallengePasswordAttr::CPKCS9ChallengePasswordAttr()
sl@0
    50
	{
sl@0
    51
	}
sl@0
    52
sl@0
    53
CPKCS9ChallengePasswordAttr::~CPKCS9ChallengePasswordAttr()
sl@0
    54
	{
sl@0
    55
	}
sl@0
    56
sl@0
    57
CASN1EncBase* CPKCS9ChallengePasswordAttr::GetEncodingLC()
sl@0
    58
	{
sl@0
    59
	return CPKCSAttributeBase::GetEncodingLC();
sl@0
    60
	}
sl@0
    61
sl@0
    62
void CPKCS9ChallengePasswordAttr::ConstructL(const TDesC8& aPassword)
sl@0
    63
	{
sl@0
    64
	// Size of password string should be between bounds
sl@0
    65
	if ((aPassword.Length() < KPkcs9StringLB) || (aPassword.Length() > KPkcs9StringUB))
sl@0
    66
		{
sl@0
    67
		User::Leave(KErrArgument);
sl@0
    68
		}
sl@0
    69
sl@0
    70
	iRoot = CASN1EncSequence::NewL();
sl@0
    71
	CASN1EncObjectIdentifier* oid = CASN1EncObjectIdentifier::NewLC(KPkcs9ChallengePasswordAttrOID);
sl@0
    72
	iRoot->AddAndPopChildL(oid);
sl@0
    73
	iValueSet = CASN1EncSet::NewLC();
sl@0
    74
	iRoot->AddAndPopChildL(iValueSet);		// Takes ownership
sl@0
    75
	CASN1EncPrintableString* value = CASN1EncPrintableString::NewLC(aPassword);
sl@0
    76
	iValueSet->AddAndPopChildL(value);
sl@0
    77
	}
sl@0
    78
sl@0
    79
// CPKCS9ExtensionRequestAttr ////////////////////////////////////////////////////////////
sl@0
    80
sl@0
    81
EXPORT_C CPKCS9ExtensionRequestAttr* CPKCS9ExtensionRequestAttr::NewLC(const CX509CertExtension& aExtension)
sl@0
    82
	{
sl@0
    83
	CPKCS9ExtensionRequestAttr* self = new (ELeave) CPKCS9ExtensionRequestAttr;
sl@0
    84
	CleanupStack::PushL(self);
sl@0
    85
	self->ConstructL(aExtension);
sl@0
    86
	return self;
sl@0
    87
	}
sl@0
    88
sl@0
    89
EXPORT_C CPKCS9ExtensionRequestAttr* CPKCS9ExtensionRequestAttr::NewL(const CX509CertExtension& aExtension)
sl@0
    90
	{
sl@0
    91
	CPKCS9ExtensionRequestAttr* self = NewLC(aExtension);
sl@0
    92
	CleanupStack::Pop(self);
sl@0
    93
	return self;
sl@0
    94
	}
sl@0
    95
sl@0
    96
EXPORT_C void CPKCS9ExtensionRequestAttr::AddExtensionL(const CX509CertExtension& aExtension)
sl@0
    97
	{
sl@0
    98
	CASN1EncSequence *extension = aExtension.EncodeASN1DERLC();
sl@0
    99
	iExtSeq->AddAndPopChildL(extension);
sl@0
   100
	}
sl@0
   101
sl@0
   102
EXPORT_C void CPKCS9ExtensionRequestAttr::ResetL(const CX509CertExtension& aExtension)
sl@0
   103
	{
sl@0
   104
	delete iRoot;
sl@0
   105
	iRoot = NULL;
sl@0
   106
	ConstructL(aExtension);
sl@0
   107
	}
sl@0
   108
sl@0
   109
CPKCS9ExtensionRequestAttr::CPKCS9ExtensionRequestAttr()
sl@0
   110
	{
sl@0
   111
	}
sl@0
   112
sl@0
   113
CPKCS9ExtensionRequestAttr::~CPKCS9ExtensionRequestAttr()
sl@0
   114
	{
sl@0
   115
	}
sl@0
   116
sl@0
   117
CASN1EncBase* CPKCS9ExtensionRequestAttr::GetEncodingLC()
sl@0
   118
	{
sl@0
   119
	return CPKCSAttributeBase::GetEncodingLC();
sl@0
   120
	}
sl@0
   121
sl@0
   122
void CPKCS9ExtensionRequestAttr::ConstructL(const CX509CertExtension& aExtension)
sl@0
   123
	{
sl@0
   124
	iRoot = CASN1EncSequence::NewL();
sl@0
   125
	CASN1EncObjectIdentifier* oid = CASN1EncObjectIdentifier::NewLC(KPkcs9ExtensionRequestAttrOID);
sl@0
   126
	iRoot->AddAndPopChildL(oid);
sl@0
   127
	iValueSet = CASN1EncSet::NewLC();
sl@0
   128
	iRoot->AddAndPopChildL(iValueSet);		// Takes ownership
sl@0
   129
	iExtSeq = CASN1EncSequence::NewLC();
sl@0
   130
	iValueSet->AddAndPopChildL(iExtSeq);
sl@0
   131
	CASN1EncSequence *extension = aExtension.EncodeASN1DERLC();
sl@0
   132
	iExtSeq->AddAndPopChildL(extension);
sl@0
   133
	}
sl@0
   134