diff -r 000000000000 -r 164170e6151a pkiutilities/DeviceToken/Src/KeyStore/Client/DevCertOpenedKeys.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pkiutilities/DeviceToken/Src/KeyStore/Client/DevCertOpenedKeys.cpp Tue Jan 26 15:20:08 2010 +0200 @@ -0,0 +1,531 @@ +/* +* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "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: Implementation of DevCertOpenedKey +* +*/ + + + +#include +#include +#include +#include +#include +#include "DevCertOpenedKeys.h" +#include "DevCertKeyStore.h" + + +// ======== MEMBER FUNCTIONS ======== + +//CDevCertOpenedKey + +// ----------------------------------------------------------------------------- +// CDevCertOpenedKey::~CDevCertOpenedKey() +// ----------------------------------------------------------------------------- +// +CDevCertOpenedKey::~CDevCertOpenedKey() + { + if ( iClient ) + { + iClient->ReleaseObject(iHandle); + } + delete iLabel; + } + +// CDevCertRSARepudiableSigner + +// ----------------------------------------------------------------------------- +// CDevCertRSARepudiableSigner::New() +// ----------------------------------------------------------------------------- +// +CDevCertRSARepudiableSigner* CDevCertRSARepudiableSigner::New(CDevCertKeyStore* aClient) + { + return new CDevCertRSARepudiableSigner(aClient); + } + + +// ----------------------------------------------------------------------------- +// CDevCertRSARepudiableSigner::CDevCertRSARepudiableSigner() +// ----------------------------------------------------------------------------- +// +CDevCertRSARepudiableSigner::CDevCertRSARepudiableSigner(CDevCertKeyStore* aClient) + : MCTSigner(aClient->Token()) + { + iClient = aClient; + iHandle.iTokenHandle = aClient->Token().Handle(); + iHandle.iObjectId = 0; + } + + +// ----------------------------------------------------------------------------- +// CDevCertRSARepudiableSigner::~CDevCertRSARepudiableSigner() +// ----------------------------------------------------------------------------- +// +CDevCertRSARepudiableSigner::~CDevCertRSARepudiableSigner() + { + delete iDigest; + } + + +// ----------------------------------------------------------------------------- +// CDevCertRSARepudiableSigner::Release() +// ----------------------------------------------------------------------------- +// +void CDevCertRSARepudiableSigner::Release() + { + MCTTokenObject::Release(); + } + + +// ----------------------------------------------------------------------------- +// CDevCertRSARepudiableSigner::Label() +// ----------------------------------------------------------------------------- +// +const TDesC& CDevCertRSARepudiableSigner::Label() const + { + return iLabel ? static_cast(*iLabel) : static_cast(KNullDesC); + } + + +// ----------------------------------------------------------------------------- +// CDevCertRSARepudiableSigner::Token() +// ----------------------------------------------------------------------------- +// +MCTToken& CDevCertRSARepudiableSigner::Token() const + { + return iClient->Token(); + } + + +// ----------------------------------------------------------------------------- +// CDevCertRSARepudiableSigner::Type() +// ----------------------------------------------------------------------------- +// +TUid CDevCertRSARepudiableSigner::Type() const + { + return KRSARepudiableSignerUID; + } + + +// ----------------------------------------------------------------------------- +// CDevCertRSARepudiableSigner::Handle() +// ----------------------------------------------------------------------------- +// +TCTTokenObjectHandle CDevCertRSARepudiableSigner::Handle() const + { + return iHandle; + } + + +// ----------------------------------------------------------------------------- +// CDevCertRSARepudiableSigner::SignMessage() +// ----------------------------------------------------------------------------- +// +void CDevCertRSARepudiableSigner::SignMessage(const TDesC8& aPlaintext, + CRSASignature*& aSignature, + TRequestStatus& aStatus) + { + // Hash the data on the client side + TRAPD(err, iDigest = CSHA1::NewL()); + if (err != KErrNone) + { + TRequestStatus* status = &aStatus; + User::RequestComplete(status, err); + } + else + { + iDigest->Update(aPlaintext); + Sign(iDigest->Final(), aSignature, aStatus); + } + } + + +// ----------------------------------------------------------------------------- +// CDevCertRSARepudiableSigner::Sign() +// ----------------------------------------------------------------------------- +// +void CDevCertRSARepudiableSigner::Sign(const TDesC8& aPlaintext, + CRSASignature*& aSignature, + TRequestStatus& aStatus) + { + iClient->RepudiableRSASign(Handle(),aPlaintext, aSignature, aStatus); + } + + +// ----------------------------------------------------------------------------- +// CDevCertRSARepudiableSigner::CancelSign() +// ----------------------------------------------------------------------------- +// +void CDevCertRSARepudiableSigner::CancelSign() + { + // Synchronous, no need to cancel + } + + +// CDevCertDSARepudiableSigner + +// ----------------------------------------------------------------------------- +// CDevCertDSARepudiableSigner::New() +// ----------------------------------------------------------------------------- +// +CDevCertDSARepudiableSigner* CDevCertDSARepudiableSigner::New(CDevCertKeyStore* aClient) + { + return new CDevCertDSARepudiableSigner(aClient); + } + + +// ----------------------------------------------------------------------------- +// CDevCertDSARepudiableSigner::CDevCertDSARepudiableSigner() +// ----------------------------------------------------------------------------- +// +CDevCertDSARepudiableSigner::CDevCertDSARepudiableSigner(CDevCertKeyStore* aClient) + : MCTSigner(aClient->Token()) + { + iClient = aClient; + iHandle.iTokenHandle = aClient->Token().Handle(); + iHandle.iObjectId = 0; + } + + +// ----------------------------------------------------------------------------- +// CDevCertDSARepudiableSigner::~CDevCertDSARepudiableSigner() +// ----------------------------------------------------------------------------- +// +CDevCertDSARepudiableSigner::~CDevCertDSARepudiableSigner() + { + delete iDigest; + } + + +// ----------------------------------------------------------------------------- +// CDevCertDSARepudiableSigner::Release() +// ----------------------------------------------------------------------------- +// +void CDevCertDSARepudiableSigner::Release() + { + MCTTokenObject::Release(); + } + + +// ----------------------------------------------------------------------------- +// CDevCertDSARepudiableSigner::Label() +// ----------------------------------------------------------------------------- +// +const TDesC& CDevCertDSARepudiableSigner::Label() const + { + return iLabel ? static_cast(*iLabel) : static_cast(KNullDesC); + } + + +// ----------------------------------------------------------------------------- +// CDevCertDSARepudiableSigner::Token() +// ----------------------------------------------------------------------------- +// +MCTToken& CDevCertDSARepudiableSigner::Token() const + { + return iClient->Token(); + } + + +// ----------------------------------------------------------------------------- +// CDevCertDSARepudiableSigner::Type() +// ----------------------------------------------------------------------------- +// +TUid CDevCertDSARepudiableSigner::Type() const + { + return KDSARepudiableSignerUID; + } + + +// ----------------------------------------------------------------------------- +// CDevCertDSARepudiableSigner::Handle() +// ----------------------------------------------------------------------------- +// +TCTTokenObjectHandle CDevCertDSARepudiableSigner::Handle() const + { + return iHandle; + } + + +// ----------------------------------------------------------------------------- +// CDevCertDSARepudiableSigner::SignMessage() +// ----------------------------------------------------------------------------- +// +void CDevCertDSARepudiableSigner::SignMessage(const TDesC8& aPlaintext, + CDSASignature*& aSignature, + TRequestStatus& aStatus) + { + // Hash the data on the client side + TRAPD(err, iDigest = CSHA1::NewL()); + if (err != KErrNone) + { + TRequestStatus* status = &aStatus; + User::RequestComplete(status, err); + } + else + { + iDigest->Update(aPlaintext); + Sign(iDigest->Final(), aSignature, aStatus); + } + } + + +// ----------------------------------------------------------------------------- +// CDevCertDSARepudiableSigner::Sign() +// ----------------------------------------------------------------------------- +// +void CDevCertDSARepudiableSigner::Sign(const TDesC8& aPlaintext, + CDSASignature*& aSignature, + TRequestStatus& aStatus) + { + iClient->RepudiableDSASign(Handle(),aPlaintext, aSignature, aStatus); + } + + +// ----------------------------------------------------------------------------- +// CDevCertDSARepudiableSigner::CancelSign() +// ----------------------------------------------------------------------------- +// +void CDevCertDSARepudiableSigner::CancelSign() + { + // Synchronous, no need to cancel + } + + +// CDevCertRSADecryptor + +// ----------------------------------------------------------------------------- +// CDevCertRSADecryptor::New() +// ----------------------------------------------------------------------------- +// +CDevCertRSADecryptor* CDevCertRSADecryptor::New(CDevCertKeyStore* aClient) + { + return new CDevCertRSADecryptor(aClient); + } + + +// ----------------------------------------------------------------------------- +// CDevCertRSADecryptor::CDevCertRSADecryptor() +// ----------------------------------------------------------------------------- +// +CDevCertRSADecryptor::CDevCertRSADecryptor(CDevCertKeyStore* aClient) + : MCTDecryptor(aClient->Token()) + { + iClient = aClient; + iHandle.iTokenHandle = aClient->Token().Handle(); + iHandle.iObjectId = 0; + } + + +// ----------------------------------------------------------------------------- +// CDevCertRSADecryptor::~CDevCertRSADecryptor() +// ----------------------------------------------------------------------------- +// +CDevCertRSADecryptor::~CDevCertRSADecryptor() + { + } + + +// ----------------------------------------------------------------------------- +// CDevCertRSADecryptor::Release() +// ----------------------------------------------------------------------------- +// +void CDevCertRSADecryptor::Release() + { + MCTTokenObject::Release(); + } + + +// ----------------------------------------------------------------------------- +// CDevCertRSADecryptor::Label() +// ----------------------------------------------------------------------------- +// +const TDesC& CDevCertRSADecryptor::Label() const + { + return iLabel ? static_cast(*iLabel) : static_cast(KNullDesC); + } + + +// ----------------------------------------------------------------------------- +// CDevCertRSADecryptor::Token() +// ----------------------------------------------------------------------------- +// +MCTToken& CDevCertRSADecryptor::Token() const + { + return iClient->Token(); + } + + +// ----------------------------------------------------------------------------- +// CDevCertRSADecryptor::Type() +// ----------------------------------------------------------------------------- +// +TUid CDevCertRSADecryptor::Type() const + { + return KPrivateDecryptorUID; + } + + +// ----------------------------------------------------------------------------- +// CDevCertRSADecryptor::Handle() +// ----------------------------------------------------------------------------- +// +TCTTokenObjectHandle CDevCertRSADecryptor::Handle() const + { + return iHandle; + } + + +// ----------------------------------------------------------------------------- +// CDevCertRSADecryptor::Decrypt() +// ----------------------------------------------------------------------------- +// +void CDevCertRSADecryptor::Decrypt(const TDesC8& aCiphertext, + TDes8& aPlaintext, + TRequestStatus& aStatus) + { + iClient->Decrypt(Handle(),aCiphertext,aPlaintext, aStatus); + } + + +// ----------------------------------------------------------------------------- +// CDevCertRSADecryptor::CancelDecrypt() +// ----------------------------------------------------------------------------- +// +void CDevCertRSADecryptor::CancelDecrypt() + { + // Synchronous, no need to cancel + } + + +// CDevCertDHAgreement + +// ----------------------------------------------------------------------------- +// CDevCertDHAgreement::New() +// ----------------------------------------------------------------------------- +// +CDevCertDHAgreement* CDevCertDHAgreement::New(CDevCertKeyStore* aClient) + { + return new CDevCertDHAgreement(aClient); + } + + +// ----------------------------------------------------------------------------- +// CDevCertDHAgreement::CDevCertDHAgreement() +// ----------------------------------------------------------------------------- +// +CDevCertDHAgreement::CDevCertDHAgreement(CDevCertKeyStore* aClient) + : MCTDH(aClient->Token()) + { + iClient = aClient; + iHandle.iTokenHandle = aClient->Token().Handle(); + iHandle.iObjectId = 0; + } + + +// ----------------------------------------------------------------------------- +// CDevCertDHAgreement::~CDevCertDHAgreement() +// ----------------------------------------------------------------------------- +// +CDevCertDHAgreement::~CDevCertDHAgreement() + { + } + + +// ----------------------------------------------------------------------------- +// CDevCertDHAgreement::Release() +// ----------------------------------------------------------------------------- +// +void CDevCertDHAgreement::Release() + { + MCTTokenObject::Release(); + } + + +// ----------------------------------------------------------------------------- +// CDevCertDHAgreement::Label() +// ----------------------------------------------------------------------------- +// +const TDesC& CDevCertDHAgreement::Label() const + { + return iLabel ? static_cast(*iLabel) : static_cast(KNullDesC); + } + + +// ----------------------------------------------------------------------------- +// CDevCertDHAgreement::Token() +// ----------------------------------------------------------------------------- +// +MCTToken& CDevCertDHAgreement::Token() const + { + return iClient->Token(); + } + + +// ----------------------------------------------------------------------------- +// CDevCertDHAgreement::Type() +// ----------------------------------------------------------------------------- +// +TUid CDevCertDHAgreement::Type() const + { + return KKeyAgreementUID; + } + + +// ----------------------------------------------------------------------------- +// CDevCertDHAgreement::Handle() +// ----------------------------------------------------------------------------- +// +TCTTokenObjectHandle CDevCertDHAgreement::Handle() const + { + return iHandle; + } + + +// ----------------------------------------------------------------------------- +// CDevCertDHAgreement::PublicKey() +// Returns the public key ('Big X') for the supplied set of parameters +// ----------------------------------------------------------------------------- +// +void CDevCertDHAgreement::PublicKey(const TInteger& aN, const TInteger& aG, + CDHPublicKey*& aX, TRequestStatus& aStatus) + { + iClient->DHPublicKey(Handle(), aN, aG, aX, aStatus); + } + + +// ----------------------------------------------------------------------------- +// CDevCertDHAgreement::Agree() +// Agrees a session key given the public key of the other party +// ----------------------------------------------------------------------------- +// +void CDevCertDHAgreement::Agree(const CDHPublicKey& iY, HBufC8*& aAgreedKey, + TRequestStatus& aStatus) + { + iClient->DHAgree(Handle(), iY, aAgreedKey, aStatus); + } + + +// ----------------------------------------------------------------------------- +// CDevCertDHAgreement::CancelAgreement() +// Cancels either a PublicKey or Agree operation +// ----------------------------------------------------------------------------- +// +void CDevCertDHAgreement::CancelAgreement() + { + // Synchronous, no need to cancel + } + +//EOF +