pkiutilities/DeviceToken/Src/KeyStore/Client/DevCertOpenedKeys.cpp
changeset 0 164170e6151a
equal deleted inserted replaced
-1:000000000000 0:164170e6151a
       
     1 /*
       
     2 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:   Implementation of DevCertOpenedKey
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 #include <e32base.h>
       
    21 #include <ct.h>
       
    22 #include <mctkeystore.h>
       
    23 #include <mctkeystoreuids.h>
       
    24 #include <hash.h>
       
    25 #include "DevCertOpenedKeys.h"
       
    26 #include "DevCertKeyStore.h"
       
    27 
       
    28 
       
    29 // ======== MEMBER FUNCTIONS ========
       
    30 
       
    31 //CDevCertOpenedKey
       
    32 
       
    33 // -----------------------------------------------------------------------------
       
    34 // CDevCertOpenedKey::~CDevCertOpenedKey()
       
    35 // -----------------------------------------------------------------------------
       
    36 //
       
    37 CDevCertOpenedKey::~CDevCertOpenedKey()
       
    38     {
       
    39     if ( iClient )
       
    40         {
       
    41         iClient->ReleaseObject(iHandle);
       
    42     	  }	
       
    43     delete iLabel;
       
    44     }
       
    45 
       
    46 // CDevCertRSARepudiableSigner
       
    47 
       
    48 // -----------------------------------------------------------------------------
       
    49 // CDevCertRSARepudiableSigner::New()
       
    50 // -----------------------------------------------------------------------------
       
    51 //
       
    52 CDevCertRSARepudiableSigner* CDevCertRSARepudiableSigner::New(CDevCertKeyStore* aClient)
       
    53     {
       
    54     return new CDevCertRSARepudiableSigner(aClient);
       
    55     }
       
    56 
       
    57 
       
    58 // -----------------------------------------------------------------------------
       
    59 // CDevCertRSARepudiableSigner::CDevCertRSARepudiableSigner()
       
    60 // -----------------------------------------------------------------------------
       
    61 //
       
    62 CDevCertRSARepudiableSigner::CDevCertRSARepudiableSigner(CDevCertKeyStore* aClient)
       
    63     : MCTSigner<CRSASignature*>(aClient->Token())
       
    64     {
       
    65     iClient = aClient;
       
    66     iHandle.iTokenHandle = aClient->Token().Handle();
       
    67     iHandle.iObjectId = 0;
       
    68     }
       
    69 
       
    70 
       
    71 // -----------------------------------------------------------------------------
       
    72 // CDevCertRSARepudiableSigner::~CDevCertRSARepudiableSigner()
       
    73 // -----------------------------------------------------------------------------
       
    74 //
       
    75 CDevCertRSARepudiableSigner::~CDevCertRSARepudiableSigner()
       
    76     {
       
    77     delete iDigest;
       
    78     }
       
    79 
       
    80 
       
    81 // -----------------------------------------------------------------------------
       
    82 // CDevCertRSARepudiableSigner::Release()
       
    83 // -----------------------------------------------------------------------------
       
    84 //
       
    85 void CDevCertRSARepudiableSigner::Release()
       
    86     {
       
    87     MCTTokenObject::Release();
       
    88     }
       
    89 
       
    90 
       
    91 // -----------------------------------------------------------------------------
       
    92 // CDevCertRSARepudiableSigner::Label()
       
    93 // -----------------------------------------------------------------------------
       
    94 //
       
    95 const TDesC& CDevCertRSARepudiableSigner::Label() const
       
    96     {
       
    97     return iLabel ? static_cast<const TDesC&>(*iLabel) : static_cast<const TDesC&>(KNullDesC);
       
    98     }
       
    99 
       
   100 
       
   101 // -----------------------------------------------------------------------------
       
   102 // CDevCertRSARepudiableSigner::Token()
       
   103 // -----------------------------------------------------------------------------
       
   104 //
       
   105 MCTToken& CDevCertRSARepudiableSigner::Token() const
       
   106     {
       
   107     return iClient->Token();
       
   108     }
       
   109 
       
   110 
       
   111 // -----------------------------------------------------------------------------
       
   112 // CDevCertRSARepudiableSigner::Type()
       
   113 // -----------------------------------------------------------------------------
       
   114 //
       
   115 TUid CDevCertRSARepudiableSigner::Type() const
       
   116     {
       
   117     return KRSARepudiableSignerUID;
       
   118     }
       
   119 
       
   120 
       
   121 // -----------------------------------------------------------------------------
       
   122 // CDevCertRSARepudiableSigner::Handle()
       
   123 // -----------------------------------------------------------------------------
       
   124 //
       
   125 TCTTokenObjectHandle CDevCertRSARepudiableSigner::Handle() const
       
   126     {
       
   127     return iHandle;
       
   128     }
       
   129 
       
   130 
       
   131 // -----------------------------------------------------------------------------
       
   132 // CDevCertRSARepudiableSigner::SignMessage()
       
   133 // -----------------------------------------------------------------------------
       
   134 //
       
   135 void CDevCertRSARepudiableSigner::SignMessage(const TDesC8& aPlaintext, 
       
   136           CRSASignature*& aSignature, 
       
   137           TRequestStatus& aStatus)
       
   138     {
       
   139     // Hash the data on the client side
       
   140     TRAPD(err, iDigest = CSHA1::NewL());
       
   141     if (err != KErrNone)
       
   142         {
       
   143         TRequestStatus* status = &aStatus;
       
   144         User::RequestComplete(status, err);
       
   145         }
       
   146     else
       
   147         {
       
   148         iDigest->Update(aPlaintext);  
       
   149         Sign(iDigest->Final(), aSignature, aStatus);
       
   150         }
       
   151     }
       
   152 
       
   153 
       
   154 // -----------------------------------------------------------------------------
       
   155 // CDevCertRSARepudiableSigner::Sign()
       
   156 // -----------------------------------------------------------------------------
       
   157 //
       
   158 void CDevCertRSARepudiableSigner::Sign(const TDesC8& aPlaintext, 
       
   159           CRSASignature*& aSignature, 
       
   160           TRequestStatus& aStatus)
       
   161     {
       
   162     iClient->RepudiableRSASign(Handle(),aPlaintext, aSignature, aStatus);
       
   163     }
       
   164 
       
   165 
       
   166 // -----------------------------------------------------------------------------
       
   167 // CDevCertRSARepudiableSigner::CancelSign()
       
   168 // -----------------------------------------------------------------------------
       
   169 //
       
   170 void CDevCertRSARepudiableSigner::CancelSign()
       
   171     {
       
   172     // Synchronous, no need to cancel
       
   173     }
       
   174 
       
   175 
       
   176 // CDevCertDSARepudiableSigner 
       
   177 
       
   178 // -----------------------------------------------------------------------------
       
   179 // CDevCertDSARepudiableSigner::New()
       
   180 // -----------------------------------------------------------------------------
       
   181 //
       
   182 CDevCertDSARepudiableSigner* CDevCertDSARepudiableSigner::New(CDevCertKeyStore* aClient)
       
   183     {
       
   184     return new CDevCertDSARepudiableSigner(aClient);
       
   185     }
       
   186 
       
   187 
       
   188 // -----------------------------------------------------------------------------
       
   189 // CDevCertDSARepudiableSigner::CDevCertDSARepudiableSigner()
       
   190 // -----------------------------------------------------------------------------
       
   191 //
       
   192 CDevCertDSARepudiableSigner::CDevCertDSARepudiableSigner(CDevCertKeyStore* aClient)
       
   193     : MCTSigner<CDSASignature*>(aClient->Token())
       
   194     {
       
   195     iClient = aClient;
       
   196     iHandle.iTokenHandle = aClient->Token().Handle();
       
   197     iHandle.iObjectId = 0;
       
   198     }
       
   199 
       
   200 
       
   201 // -----------------------------------------------------------------------------
       
   202 // CDevCertDSARepudiableSigner::~CDevCertDSARepudiableSigner()
       
   203 // -----------------------------------------------------------------------------
       
   204 //
       
   205 CDevCertDSARepudiableSigner::~CDevCertDSARepudiableSigner()
       
   206     {
       
   207     delete iDigest;
       
   208     }
       
   209 
       
   210 
       
   211 // -----------------------------------------------------------------------------
       
   212 // CDevCertDSARepudiableSigner::Release()
       
   213 // -----------------------------------------------------------------------------
       
   214 //
       
   215 void CDevCertDSARepudiableSigner::Release()
       
   216     {
       
   217     MCTTokenObject::Release();
       
   218     }
       
   219 
       
   220 
       
   221 // -----------------------------------------------------------------------------
       
   222 // CDevCertDSARepudiableSigner::Label()
       
   223 // -----------------------------------------------------------------------------
       
   224 //
       
   225 const TDesC& CDevCertDSARepudiableSigner::Label() const
       
   226     {
       
   227     return iLabel ? static_cast<const TDesC&>(*iLabel) : static_cast<const TDesC&>(KNullDesC);
       
   228     }
       
   229 
       
   230 
       
   231 // -----------------------------------------------------------------------------
       
   232 // CDevCertDSARepudiableSigner::Token()
       
   233 // -----------------------------------------------------------------------------
       
   234 //
       
   235 MCTToken& CDevCertDSARepudiableSigner::Token() const
       
   236     {
       
   237     return iClient->Token();
       
   238     }
       
   239 
       
   240 
       
   241 // -----------------------------------------------------------------------------
       
   242 // CDevCertDSARepudiableSigner::Type()
       
   243 // -----------------------------------------------------------------------------
       
   244 //
       
   245 TUid CDevCertDSARepudiableSigner::Type() const
       
   246     {
       
   247     return KDSARepudiableSignerUID;
       
   248     }
       
   249 
       
   250 
       
   251 // -----------------------------------------------------------------------------
       
   252 // CDevCertDSARepudiableSigner::Handle()
       
   253 // -----------------------------------------------------------------------------
       
   254 //
       
   255 TCTTokenObjectHandle CDevCertDSARepudiableSigner::Handle() const
       
   256     {
       
   257     return iHandle;
       
   258     }
       
   259 
       
   260 
       
   261 // -----------------------------------------------------------------------------
       
   262 // CDevCertDSARepudiableSigner::SignMessage()
       
   263 // -----------------------------------------------------------------------------
       
   264 //
       
   265 void CDevCertDSARepudiableSigner::SignMessage(const TDesC8& aPlaintext, 
       
   266           CDSASignature*& aSignature, 
       
   267         TRequestStatus& aStatus)
       
   268     {
       
   269     // Hash the data on the client side
       
   270     TRAPD(err, iDigest = CSHA1::NewL());
       
   271     if (err != KErrNone)
       
   272         {
       
   273         TRequestStatus* status = &aStatus;
       
   274         User::RequestComplete(status, err);
       
   275         }
       
   276     else
       
   277         {
       
   278         iDigest->Update(aPlaintext);
       
   279         Sign(iDigest->Final(), aSignature, aStatus);
       
   280         }
       
   281     }
       
   282 
       
   283 
       
   284 // -----------------------------------------------------------------------------
       
   285 // CDevCertDSARepudiableSigner::Sign()
       
   286 // -----------------------------------------------------------------------------
       
   287 //
       
   288 void CDevCertDSARepudiableSigner::Sign(const TDesC8& aPlaintext, 
       
   289           CDSASignature*& aSignature, 
       
   290         TRequestStatus& aStatus)
       
   291     {
       
   292     iClient->RepudiableDSASign(Handle(),aPlaintext, aSignature, aStatus);
       
   293     }
       
   294 
       
   295 
       
   296 // -----------------------------------------------------------------------------
       
   297 // CDevCertDSARepudiableSigner::CancelSign()
       
   298 // -----------------------------------------------------------------------------
       
   299 //
       
   300 void CDevCertDSARepudiableSigner::CancelSign()
       
   301     {
       
   302     // Synchronous, no need to cancel
       
   303     }
       
   304 
       
   305 
       
   306 // CDevCertRSADecryptor
       
   307 
       
   308 // -----------------------------------------------------------------------------
       
   309 // CDevCertRSADecryptor::New()
       
   310 // -----------------------------------------------------------------------------
       
   311 //
       
   312 CDevCertRSADecryptor* CDevCertRSADecryptor::New(CDevCertKeyStore* aClient)
       
   313     {
       
   314     return new CDevCertRSADecryptor(aClient);
       
   315     }
       
   316 
       
   317 
       
   318 // -----------------------------------------------------------------------------
       
   319 // CDevCertRSADecryptor::CDevCertRSADecryptor()
       
   320 // -----------------------------------------------------------------------------
       
   321 //
       
   322 CDevCertRSADecryptor::CDevCertRSADecryptor(CDevCertKeyStore* aClient)
       
   323     : MCTDecryptor(aClient->Token())
       
   324     {
       
   325     iClient = aClient;
       
   326     iHandle.iTokenHandle = aClient->Token().Handle();
       
   327     iHandle.iObjectId = 0;
       
   328     }
       
   329 
       
   330 
       
   331 // -----------------------------------------------------------------------------
       
   332 // CDevCertRSADecryptor::~CDevCertRSADecryptor()
       
   333 // -----------------------------------------------------------------------------
       
   334 //
       
   335 CDevCertRSADecryptor::~CDevCertRSADecryptor()
       
   336     {
       
   337     }
       
   338 
       
   339 
       
   340 // -----------------------------------------------------------------------------
       
   341 // CDevCertRSADecryptor::Release()
       
   342 // -----------------------------------------------------------------------------
       
   343 //
       
   344 void CDevCertRSADecryptor::Release()
       
   345     {
       
   346     MCTTokenObject::Release();
       
   347     }
       
   348 
       
   349 
       
   350 // -----------------------------------------------------------------------------
       
   351 // CDevCertRSADecryptor::Label()
       
   352 // -----------------------------------------------------------------------------
       
   353 //
       
   354 const TDesC& CDevCertRSADecryptor::Label() const
       
   355     {
       
   356     return iLabel ? static_cast<const TDesC&>(*iLabel) : static_cast<const TDesC&>(KNullDesC);
       
   357     }
       
   358 
       
   359 
       
   360 // -----------------------------------------------------------------------------
       
   361 // CDevCertRSADecryptor::Token()
       
   362 // -----------------------------------------------------------------------------
       
   363 //
       
   364 MCTToken& CDevCertRSADecryptor::Token() const
       
   365     {
       
   366     return iClient->Token();
       
   367     }
       
   368 
       
   369 
       
   370 // -----------------------------------------------------------------------------
       
   371 // CDevCertRSADecryptor::Type()
       
   372 // -----------------------------------------------------------------------------
       
   373 //
       
   374 TUid CDevCertRSADecryptor::Type() const
       
   375     {
       
   376     return KPrivateDecryptorUID;
       
   377     }
       
   378 
       
   379 
       
   380 // -----------------------------------------------------------------------------
       
   381 // CDevCertRSADecryptor::Handle()
       
   382 // -----------------------------------------------------------------------------
       
   383 //
       
   384 TCTTokenObjectHandle CDevCertRSADecryptor::Handle() const
       
   385     {
       
   386     return iHandle;
       
   387     }
       
   388 
       
   389 
       
   390 // -----------------------------------------------------------------------------
       
   391 // CDevCertRSADecryptor::Decrypt()
       
   392 // -----------------------------------------------------------------------------
       
   393 //
       
   394 void CDevCertRSADecryptor::Decrypt(const TDesC8& aCiphertext,
       
   395       TDes8& aPlaintext, 
       
   396       TRequestStatus& aStatus)
       
   397     {
       
   398     iClient->Decrypt(Handle(),aCiphertext,aPlaintext, aStatus);
       
   399     }
       
   400 
       
   401 
       
   402 // -----------------------------------------------------------------------------
       
   403 // CDevCertRSADecryptor::CancelDecrypt()
       
   404 // -----------------------------------------------------------------------------
       
   405 //
       
   406 void CDevCertRSADecryptor::CancelDecrypt()
       
   407     {
       
   408     // Synchronous, no need to cancel
       
   409     }
       
   410 
       
   411 
       
   412 // CDevCertDHAgreement
       
   413 
       
   414 // -----------------------------------------------------------------------------
       
   415 // CDevCertDHAgreement::New()
       
   416 // -----------------------------------------------------------------------------
       
   417 //
       
   418 CDevCertDHAgreement* CDevCertDHAgreement::New(CDevCertKeyStore* aClient)
       
   419     {
       
   420     return new CDevCertDHAgreement(aClient);
       
   421     }
       
   422 
       
   423 
       
   424 // -----------------------------------------------------------------------------
       
   425 // CDevCertDHAgreement::CDevCertDHAgreement()
       
   426 // -----------------------------------------------------------------------------
       
   427 //
       
   428 CDevCertDHAgreement::CDevCertDHAgreement(CDevCertKeyStore* aClient)
       
   429   : MCTDH(aClient->Token())
       
   430     {
       
   431     iClient = aClient;
       
   432     iHandle.iTokenHandle = aClient->Token().Handle();
       
   433     iHandle.iObjectId = 0;
       
   434     }
       
   435 
       
   436 
       
   437 // -----------------------------------------------------------------------------
       
   438 // CDevCertDHAgreement::~CDevCertDHAgreement()
       
   439 // -----------------------------------------------------------------------------
       
   440 //
       
   441 CDevCertDHAgreement::~CDevCertDHAgreement()
       
   442     {
       
   443     }
       
   444 
       
   445 
       
   446 // -----------------------------------------------------------------------------
       
   447 // CDevCertDHAgreement::Release()
       
   448 // -----------------------------------------------------------------------------
       
   449 //
       
   450 void CDevCertDHAgreement::Release()
       
   451     {
       
   452     MCTTokenObject::Release();
       
   453     }
       
   454 
       
   455 
       
   456 // -----------------------------------------------------------------------------
       
   457 // CDevCertDHAgreement::Label()
       
   458 // -----------------------------------------------------------------------------
       
   459 //
       
   460 const TDesC& CDevCertDHAgreement::Label() const
       
   461     {
       
   462     return iLabel ? static_cast<const TDesC&>(*iLabel) : static_cast<const TDesC&>(KNullDesC);
       
   463     }
       
   464 
       
   465 
       
   466 // -----------------------------------------------------------------------------
       
   467 // CDevCertDHAgreement::Token()
       
   468 // -----------------------------------------------------------------------------
       
   469 //
       
   470 MCTToken& CDevCertDHAgreement::Token() const
       
   471     {
       
   472     return iClient->Token();
       
   473     }
       
   474 
       
   475 
       
   476 // -----------------------------------------------------------------------------
       
   477 // CDevCertDHAgreement::Type()
       
   478 // -----------------------------------------------------------------------------
       
   479 //
       
   480 TUid CDevCertDHAgreement::Type() const
       
   481     {
       
   482     return KKeyAgreementUID;
       
   483     }
       
   484 
       
   485 
       
   486 // -----------------------------------------------------------------------------
       
   487 // CDevCertDHAgreement::Handle()
       
   488 // -----------------------------------------------------------------------------
       
   489 //
       
   490 TCTTokenObjectHandle CDevCertDHAgreement::Handle() const
       
   491     {
       
   492     return iHandle;
       
   493     }
       
   494 
       
   495 
       
   496 // -----------------------------------------------------------------------------
       
   497 // CDevCertDHAgreement::PublicKey()
       
   498 // Returns the public key ('Big X') for the supplied set of parameters
       
   499 // -----------------------------------------------------------------------------
       
   500 //
       
   501 void CDevCertDHAgreement::PublicKey(const TInteger& aN, const TInteger& aG, 
       
   502                CDHPublicKey*& aX, TRequestStatus& aStatus)
       
   503     {
       
   504     iClient->DHPublicKey(Handle(), aN, aG, aX, aStatus);
       
   505     }
       
   506 
       
   507 
       
   508 // -----------------------------------------------------------------------------
       
   509 // CDevCertDHAgreement::Agree()
       
   510 // Agrees a session key given the public key of the other party
       
   511 // -----------------------------------------------------------------------------
       
   512 //
       
   513 void CDevCertDHAgreement::Agree(const CDHPublicKey& iY, HBufC8*& aAgreedKey,
       
   514              TRequestStatus& aStatus)
       
   515     {
       
   516     iClient->DHAgree(Handle(), iY, aAgreedKey, aStatus);
       
   517     }
       
   518 
       
   519 
       
   520 // -----------------------------------------------------------------------------
       
   521 // CDevCertDHAgreement::CancelAgreement()
       
   522 // Cancels either a PublicKey or Agree operation
       
   523 // -----------------------------------------------------------------------------
       
   524 //
       
   525 void CDevCertDHAgreement::CancelAgreement()
       
   526     {
       
   527     // Synchronous, no need to cancel
       
   528     }
       
   529     
       
   530 //EOF
       
   531