--- a/crypto/weakcrypto/source/asymmetric/dhkeys.cpp Tue Aug 31 17:00:08 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,221 +0,0 @@
-/*
-* Copyright (c) 2003-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 <asymmetrickeys.h>
-#include <bigint.h>
-
-/* CDHParameters */
-EXPORT_C const TInteger& CDHParameters::N(void) const
- {
- return iN;
- }
-
-EXPORT_C const TInteger& CDHParameters::G(void) const
- {
- return iG;
- }
-
-EXPORT_C CDHParameters::~CDHParameters(void)
- {
- iN.Close();
- iG.Close();
- }
-
-EXPORT_C CDHParameters::CDHParameters(RInteger& aN, RInteger& aG) : iN(aN), iG(aG)
- {
- }
-
-EXPORT_C CDHParameters::CDHParameters(void)
- {
- }
-
-/* CDHPublicKey */
-EXPORT_C CDHPublicKey* CDHPublicKey::NewL(RInteger& aN, RInteger& aG,
- RInteger& aX)
- {
- CDHPublicKey* self = new(ELeave) CDHPublicKey(aN, aG, aX);
- return self;
- }
-
-EXPORT_C CDHPublicKey* CDHPublicKey::NewLC(RInteger& aN, RInteger& aG,
- RInteger& aX)
- {
- CDHPublicKey* self = NewL(aN, aG, aX);
- CleanupStack::PushL(self);
- return self;
- }
-
-EXPORT_C const TInteger& CDHPublicKey::X(void) const
- {
- return iX;
- }
-
-EXPORT_C CDHPublicKey::CDHPublicKey(RInteger& aN, RInteger& aG, RInteger& aX)
- : CDHParameters(aN, aG), iX(aX)
- {
- }
-
-EXPORT_C CDHPublicKey::CDHPublicKey(void)
- {
- }
-
-EXPORT_C CDHPublicKey::~CDHPublicKey(void)
- {
- iX.Close();
- }
-
-/* CDHPrivateKey */
-EXPORT_C CDHPrivateKey* CDHPrivateKey::NewL(RInteger& aN, RInteger& aG,
- RInteger& ax)
- {
- CDHPrivateKey* self = new(ELeave) CDHPrivateKey(aN, aG, ax);
- return self;
- }
-
-EXPORT_C CDHPrivateKey* CDHPrivateKey::NewLC(RInteger& aN, RInteger& aG,
- RInteger& ax)
- {
- CDHPrivateKey* self = NewL(aN, aG, ax);
- CleanupStack::PushL(self);
- return self;
- }
-
-EXPORT_C const TInteger& CDHPrivateKey::x(void) const
- {
- return ix;
- }
-
-EXPORT_C CDHPrivateKey::CDHPrivateKey(RInteger& aN, RInteger& aG, RInteger& ax)
- : CDHParameters(aN, aG), ix(ax)
- {
- }
-
-EXPORT_C CDHPrivateKey::CDHPrivateKey(void)
- {
- }
-
-EXPORT_C CDHPrivateKey::~CDHPrivateKey(void)
- {
- ix.Close();
- }
-
-/* CDHKeyPair */
-
-EXPORT_C CDHKeyPair* CDHKeyPair::NewL(RInteger& aN, RInteger& aG)
- {
- CDHKeyPair* self = NewLC(aN, aG);
- CleanupStack::Pop(self);
- return self;
- }
-
-EXPORT_C CDHKeyPair* CDHKeyPair::NewLC(RInteger& aN, RInteger& aG)
- {
- CDHKeyPair* self = new(ELeave) CDHKeyPair();
- CleanupStack::PushL(self);
- self->ConstructL(aN, aG);
- return self;
- }
-
-EXPORT_C CDHKeyPair* CDHKeyPair::NewL(RInteger& aN, RInteger& aG, RInteger& ax)
- {
- CDHKeyPair* self = NewLC(aN, aG, ax);
- CleanupStack::Pop(self);
- return self;
- }
-
-EXPORT_C CDHKeyPair* CDHKeyPair::NewLC(RInteger& aN, RInteger& aG, RInteger& ax)
- {
- CDHKeyPair* self = new(ELeave) CDHKeyPair();
- CleanupStack::PushL(self);
- self->ConstructL(aN, aG, ax);
- return self;
- }
-
-EXPORT_C const CDHPublicKey& CDHKeyPair::PublicKey(void) const
- {
- return *iPublic;
- }
-
-EXPORT_C const CDHPrivateKey& CDHKeyPair::PrivateKey(void) const
- {
- return *iPrivate;
- }
-
-EXPORT_C CDHKeyPair::~CDHKeyPair(void)
- {
- delete iPublic;
- delete iPrivate;
- }
-
-EXPORT_C CDHKeyPair::CDHKeyPair(void)
- {
- }
-
-EXPORT_C void CDHKeyPair::ConstructL(RInteger& aN, RInteger& aG)
- {
- //declaring a reference just for clarity in NewRandomL statement
- RInteger& nminus2 = aN;
- --nminus2;
- --nminus2;
-
- //find a random x | 1 <= x <= n-2
- RInteger x = RInteger::NewRandomL(TInteger::One(), nminus2);
- CleanupStack::PushL(x);
- ++nminus2;
- ++nminus2; // reincrement aN
-
- ConstructL(aN, aG, x);
-
- CleanupStack::Pop(&x);
- }
-
-EXPORT_C void CDHKeyPair::ConstructL(RInteger& aN, RInteger& aG, RInteger& ax)
- {
- //declaring a reference just for clarity in if statements
- RInteger& nminus2 = aN;
- --nminus2;
- --nminus2;
-
- if( aG < TInteger::Two() || aG > nminus2 )
- {
- User::Leave(KErrArgument);
- }
- //In the case of the other ConstructL calling this function this if
- //statement is redundant. However, we need to check as this is can be
- //called without going through the other api.
- if( ax < TInteger::One() || ax > nminus2 )
- {
- User::Leave(KErrArgument);
- }
-
- ++nminus2;
- ++nminus2; // reincrement aN
-
- // Calculate X = g^(x) mod n; (note the case sensitivity)
- RInteger X = TInteger::ModularExponentiateL(aG, ax, aN);
- CleanupStack::PushL(X);
-
- RInteger n1 = RInteger::NewL(aN);
- CleanupStack::PushL(n1);
- RInteger g1 = RInteger::NewL(aG);
- CleanupStack::PushL(g1);
- iPublic = CDHPublicKey::NewL(n1, g1, X);
- CleanupStack::Pop(3, &X); // g1, n1, X all owned by iPublic
-
- iPrivate = CDHPrivateKey::NewL(aN, aG, ax);
- }