diff -r 675a964f4eb5 -r 35751d3474b7 cryptoservices/certificateandkeymgmt/x509/x509keysDH.cpp --- a/cryptoservices/certificateandkeymgmt/x509/x509keysDH.cpp Tue Jul 21 01:04:32 2009 +0100 +++ b/cryptoservices/certificateandkeymgmt/x509/x509keysDH.cpp Thu Sep 10 14:01:51 2009 +0300 @@ -1,273 +1,273 @@ -/* -* 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 -#include - -EXPORT_C CX509DHPublicKey* CX509DHPublicKey::NewL(const TDesC8& aParamsData, const TDesC8& aKeyData) - { - CX509DHPublicKey* me = CX509DHPublicKey::NewLC(aParamsData, aKeyData); - CleanupStack::Pop(me); - return (me); - } - -EXPORT_C CX509DHPublicKey* CX509DHPublicKey::NewLC(const TDesC8& aParamsData, const TDesC8& aKeyData) - { - CX509DHPublicKey* me = new (ELeave) CX509DHPublicKey(); - CleanupStack::PushL(me); - me->ConstructL(aParamsData, aKeyData); - return (me); - } - -EXPORT_C CX509DHPublicKey::~CX509DHPublicKey() - { - } - -CX509DHPublicKey::CX509DHPublicKey() - { - } - -void CX509DHPublicKey::ConstructL(const TDesC8& aParamsData, const TDesC8& aKeyData) - { - CX509DHDomainParams* params=CX509DHDomainParams::NewLC(aParamsData); - iN = RInteger::NewL(params->P()); - iG = RInteger::NewL(params->G()); - iX = RInteger::NewL(aKeyData); - CleanupStack::PopAndDestroy(params); - } - -//DH params -//DH validation params -EXPORT_C CX509DHValidationParams* CX509DHValidationParams::NewL(const TDesC8& aBinaryData) - { - TInt pos = 0; - return CX509DHValidationParams::NewL(aBinaryData, pos); - } - -EXPORT_C CX509DHValidationParams* CX509DHValidationParams::NewLC(const TDesC8& aBinaryData) - { - TInt pos = 0; - return CX509DHValidationParams::NewLC(aBinaryData, pos); - } - -EXPORT_C CX509DHValidationParams* CX509DHValidationParams::NewL(const TDesC8& aBinaryData, TInt& aPos) - { - CX509DHValidationParams* self = CX509DHValidationParams::NewLC(aBinaryData, aPos); - CleanupStack::Pop(); - return self; - } - -EXPORT_C CX509DHValidationParams* CX509DHValidationParams::NewLC(const TDesC8& aBinaryData, TInt& aPos) - { - CX509DHValidationParams* self = new(ELeave) CX509DHValidationParams; - CleanupStack::PushL(self); - self->ConstructL(aBinaryData, aPos); - return self; - } - -void CX509DHValidationParams::ConstructL(const TDesC8& aBinaryData, TInt& aPos) - { - TASN1DecGeneric dec(aBinaryData.Right(aBinaryData.Length() - aPos)); - dec.InitL(); - if (dec.Tag() != EASN1Sequence) - { - User::Leave(KErrArgument); - } - TInt end = aPos + dec.LengthDER(); - aPos += dec.LengthDERHeader();//add header length to aPos - - TASN1DecBitString encBS; - iSeed = encBS.ExtractOctetStringL(aBinaryData, aPos); - TASN1DecInteger encInt; - iPGenCounter = encInt.DecodeDERLongL(aBinaryData, aPos); - - if (aPos != end) - { - User::Leave(KErrArgument); - } - } - -EXPORT_C const TPtrC8 CX509DHValidationParams::Seed() const - { - return *iSeed; - } - -EXPORT_C const TInteger& CX509DHValidationParams::PGenCounter() const - { - return iPGenCounter; - } - -CX509DHValidationParams::~CX509DHValidationParams() - { - delete iSeed; - iPGenCounter.Close(); - } - -CX509DHValidationParams::CX509DHValidationParams() - { - } - -//DH domain params -EXPORT_C CX509DHDomainParams* CX509DHDomainParams::NewL(const TDesC8& aBinaryData) - { - TInt pos = 0; - return CX509DHDomainParams::NewL(aBinaryData, pos); - } - -EXPORT_C CX509DHDomainParams* CX509DHDomainParams::NewLC(const TDesC8& aBinaryData) - { - TInt pos = 0; - return CX509DHDomainParams::NewLC(aBinaryData, pos); - } - -EXPORT_C CX509DHDomainParams* CX509DHDomainParams::NewL(const TDesC8& aBinaryData, TInt& aPos) - { - CX509DHDomainParams* self = CX509DHDomainParams::NewLC(aBinaryData, aPos); - CleanupStack::Pop(); - return self; - } - -EXPORT_C CX509DHDomainParams* CX509DHDomainParams::NewLC(const TDesC8& aBinaryData, TInt& aPos) - { - CX509DHDomainParams* self = new(ELeave) CX509DHDomainParams; - CleanupStack::PushL(self); - self->ConstructL(aBinaryData, aPos); - return self; - } - -void CX509DHDomainParams::ConstructL(const TDesC8& aBinaryData, TInt& aPos) - { - TASN1DecGeneric dec(aBinaryData.Right(aBinaryData.Length() - aPos)); - dec.InitL(); - if (dec.Tag() != EASN1Sequence) - { - User::Leave(KErrArgument); - } - TInt end = aPos + dec.LengthDER(); - aPos += dec.LengthDERHeader();//add header length to aPos - - TASN1DecInteger encInt; - iP = encInt.DecodeDERLongL(aBinaryData, aPos); - iG = encInt.DecodeDERLongL(aBinaryData, aPos); - if (aPos < end) - { - iQ = encInt.DecodeDERLongL(aBinaryData, aPos); - } - - if (aPos < end) - { - TASN1DecGeneric gen1(aBinaryData.Right(aBinaryData.Length() - aPos)); - gen1.InitL(); - TBool doneVal = EFalse; - if (gen1.Tag() == EASN1Integer) - { - iJ = encInt.DecodeDERLongL(aBinaryData, aPos); - } - else - { - iValidationParams = CX509DHValidationParams::NewL(aBinaryData, aPos); - doneVal = EFalse; - } - if ((aPos < end) && (!doneVal)) - { - iValidationParams = CX509DHValidationParams::NewL(aBinaryData, aPos); - } - } - - if (aPos != end) - { - User::Leave(KErrArgument); - } - } - -EXPORT_C const TInteger& CX509DHDomainParams::P() const - { - return iP; - } - -EXPORT_C const TInteger& CX509DHDomainParams::G() const - { - return iG; - } - -EXPORT_C const TInteger& CX509DHDomainParams::Q() const - { - return iQ; - } - -EXPORT_C const TInteger& CX509DHDomainParams::J() const - { - return iJ; - } - -EXPORT_C const CX509DHValidationParams* CX509DHDomainParams::ValidationParams() const - { - return iValidationParams; - } - -CX509DHDomainParams::~CX509DHDomainParams() - { - iP.Close(); - iG.Close(); - iQ.Close(); - iJ.Close(); - delete iValidationParams; - } - -CX509DHDomainParams::CX509DHDomainParams() - { - } - -// CX509DHKeyPair - - -EXPORT_C CX509DHKeyPair* CX509DHKeyPair::NewL(const TDesC8& aParamsData) -{ - CX509DHKeyPair* me = CX509DHKeyPair::NewLC(aParamsData); - CleanupStack::Pop(me); - return (me); -} - -EXPORT_C CX509DHKeyPair* CX509DHKeyPair::NewLC(const TDesC8& aParamsData) -{ - CX509DHKeyPair* me = new (ELeave) CX509DHKeyPair(); - CleanupStack::PushL(me); - me->ConstructL(aParamsData); - return (me); -} - -EXPORT_C CX509DHKeyPair::~CX509DHKeyPair() -{} - -CX509DHKeyPair::CX509DHKeyPair() -{} - -void CX509DHKeyPair::ConstructL(const TDesC8& aParamsData) -{ - CX509DHDomainParams* params=CX509DHDomainParams::NewLC(aParamsData); - RInteger n = RInteger::NewL(params->P()); - CleanupStack::PushL(n); - RInteger g = RInteger::NewL(params->G()); - CleanupStack::PushL(g); - - CDHKeyPair::ConstructL(n, g); - CleanupStack::Pop(2, &n); // n, g owned by this now - CleanupStack::PopAndDestroy(params); -} +/* +* 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 +#include + +EXPORT_C CX509DHPublicKey* CX509DHPublicKey::NewL(const TDesC8& aParamsData, const TDesC8& aKeyData) + { + CX509DHPublicKey* me = CX509DHPublicKey::NewLC(aParamsData, aKeyData); + CleanupStack::Pop(me); + return (me); + } + +EXPORT_C CX509DHPublicKey* CX509DHPublicKey::NewLC(const TDesC8& aParamsData, const TDesC8& aKeyData) + { + CX509DHPublicKey* me = new (ELeave) CX509DHPublicKey(); + CleanupStack::PushL(me); + me->ConstructL(aParamsData, aKeyData); + return (me); + } + +EXPORT_C CX509DHPublicKey::~CX509DHPublicKey() + { + } + +CX509DHPublicKey::CX509DHPublicKey() + { + } + +void CX509DHPublicKey::ConstructL(const TDesC8& aParamsData, const TDesC8& aKeyData) + { + CX509DHDomainParams* params=CX509DHDomainParams::NewLC(aParamsData); + iN = RInteger::NewL(params->P()); + iG = RInteger::NewL(params->G()); + iX = RInteger::NewL(aKeyData); + CleanupStack::PopAndDestroy(params); + } + +//DH params +//DH validation params +EXPORT_C CX509DHValidationParams* CX509DHValidationParams::NewL(const TDesC8& aBinaryData) + { + TInt pos = 0; + return CX509DHValidationParams::NewL(aBinaryData, pos); + } + +EXPORT_C CX509DHValidationParams* CX509DHValidationParams::NewLC(const TDesC8& aBinaryData) + { + TInt pos = 0; + return CX509DHValidationParams::NewLC(aBinaryData, pos); + } + +EXPORT_C CX509DHValidationParams* CX509DHValidationParams::NewL(const TDesC8& aBinaryData, TInt& aPos) + { + CX509DHValidationParams* self = CX509DHValidationParams::NewLC(aBinaryData, aPos); + CleanupStack::Pop(); + return self; + } + +EXPORT_C CX509DHValidationParams* CX509DHValidationParams::NewLC(const TDesC8& aBinaryData, TInt& aPos) + { + CX509DHValidationParams* self = new(ELeave) CX509DHValidationParams; + CleanupStack::PushL(self); + self->ConstructL(aBinaryData, aPos); + return self; + } + +void CX509DHValidationParams::ConstructL(const TDesC8& aBinaryData, TInt& aPos) + { + TASN1DecGeneric dec(aBinaryData.Right(aBinaryData.Length() - aPos)); + dec.InitL(); + if (dec.Tag() != EASN1Sequence) + { + User::Leave(KErrArgument); + } + TInt end = aPos + dec.LengthDER(); + aPos += dec.LengthDERHeader();//add header length to aPos + + TASN1DecBitString encBS; + iSeed = encBS.ExtractOctetStringL(aBinaryData, aPos); + TASN1DecInteger encInt; + iPGenCounter = encInt.DecodeDERLongL(aBinaryData, aPos); + + if (aPos != end) + { + User::Leave(KErrArgument); + } + } + +EXPORT_C const TPtrC8 CX509DHValidationParams::Seed() const + { + return *iSeed; + } + +EXPORT_C const TInteger& CX509DHValidationParams::PGenCounter() const + { + return iPGenCounter; + } + +CX509DHValidationParams::~CX509DHValidationParams() + { + delete iSeed; + iPGenCounter.Close(); + } + +CX509DHValidationParams::CX509DHValidationParams() + { + } + +//DH domain params +EXPORT_C CX509DHDomainParams* CX509DHDomainParams::NewL(const TDesC8& aBinaryData) + { + TInt pos = 0; + return CX509DHDomainParams::NewL(aBinaryData, pos); + } + +EXPORT_C CX509DHDomainParams* CX509DHDomainParams::NewLC(const TDesC8& aBinaryData) + { + TInt pos = 0; + return CX509DHDomainParams::NewLC(aBinaryData, pos); + } + +EXPORT_C CX509DHDomainParams* CX509DHDomainParams::NewL(const TDesC8& aBinaryData, TInt& aPos) + { + CX509DHDomainParams* self = CX509DHDomainParams::NewLC(aBinaryData, aPos); + CleanupStack::Pop(); + return self; + } + +EXPORT_C CX509DHDomainParams* CX509DHDomainParams::NewLC(const TDesC8& aBinaryData, TInt& aPos) + { + CX509DHDomainParams* self = new(ELeave) CX509DHDomainParams; + CleanupStack::PushL(self); + self->ConstructL(aBinaryData, aPos); + return self; + } + +void CX509DHDomainParams::ConstructL(const TDesC8& aBinaryData, TInt& aPos) + { + TASN1DecGeneric dec(aBinaryData.Right(aBinaryData.Length() - aPos)); + dec.InitL(); + if (dec.Tag() != EASN1Sequence) + { + User::Leave(KErrArgument); + } + TInt end = aPos + dec.LengthDER(); + aPos += dec.LengthDERHeader();//add header length to aPos + + TASN1DecInteger encInt; + iP = encInt.DecodeDERLongL(aBinaryData, aPos); + iG = encInt.DecodeDERLongL(aBinaryData, aPos); + if (aPos < end) + { + iQ = encInt.DecodeDERLongL(aBinaryData, aPos); + } + + if (aPos < end) + { + TASN1DecGeneric gen1(aBinaryData.Right(aBinaryData.Length() - aPos)); + gen1.InitL(); + TBool doneVal = EFalse; + if (gen1.Tag() == EASN1Integer) + { + iJ = encInt.DecodeDERLongL(aBinaryData, aPos); + } + else + { + iValidationParams = CX509DHValidationParams::NewL(aBinaryData, aPos); + doneVal = EFalse; + } + if ((aPos < end) && (!doneVal)) + { + iValidationParams = CX509DHValidationParams::NewL(aBinaryData, aPos); + } + } + + if (aPos != end) + { + User::Leave(KErrArgument); + } + } + +EXPORT_C const TInteger& CX509DHDomainParams::P() const + { + return iP; + } + +EXPORT_C const TInteger& CX509DHDomainParams::G() const + { + return iG; + } + +EXPORT_C const TInteger& CX509DHDomainParams::Q() const + { + return iQ; + } + +EXPORT_C const TInteger& CX509DHDomainParams::J() const + { + return iJ; + } + +EXPORT_C const CX509DHValidationParams* CX509DHDomainParams::ValidationParams() const + { + return iValidationParams; + } + +CX509DHDomainParams::~CX509DHDomainParams() + { + iP.Close(); + iG.Close(); + iQ.Close(); + iJ.Close(); + delete iValidationParams; + } + +CX509DHDomainParams::CX509DHDomainParams() + { + } + +// CX509DHKeyPair + + +EXPORT_C CX509DHKeyPair* CX509DHKeyPair::NewL(const TDesC8& aParamsData) +{ + CX509DHKeyPair* me = CX509DHKeyPair::NewLC(aParamsData); + CleanupStack::Pop(me); + return (me); +} + +EXPORT_C CX509DHKeyPair* CX509DHKeyPair::NewLC(const TDesC8& aParamsData) +{ + CX509DHKeyPair* me = new (ELeave) CX509DHKeyPair(); + CleanupStack::PushL(me); + me->ConstructL(aParamsData); + return (me); +} + +EXPORT_C CX509DHKeyPair::~CX509DHKeyPair() +{} + +CX509DHKeyPair::CX509DHKeyPair() +{} + +void CX509DHKeyPair::ConstructL(const TDesC8& aParamsData) +{ + CX509DHDomainParams* params=CX509DHDomainParams::NewLC(aParamsData); + RInteger n = RInteger::NewL(params->P()); + CleanupStack::PushL(n); + RInteger g = RInteger::NewL(params->G()); + CleanupStack::PushL(g); + + CDHKeyPair::ConstructL(n, g); + CleanupStack::Pop(2, &n); // n, g owned by this now + CleanupStack::PopAndDestroy(params); +}