os/security/cryptoplugins/cryptospiplugins/test/dummyecchwplugin/src/dummyeccsignerimpl.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) 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
*
sl@0
    16
*/
sl@0
    17
sl@0
    18
sl@0
    19
#include "dummyeccsignerimpl.h"
sl@0
    20
#include "keys.h"
sl@0
    21
#include "pluginconfig.h"
sl@0
    22
#include "cryptospihai.h"
sl@0
    23
sl@0
    24
using namespace DummyEccHwCrypto;
sl@0
    25
using namespace CryptoSpiHai;
sl@0
    26
sl@0
    27
const TInt KMaxSignerOutputLength = 50;
sl@0
    28
const TInt KMaxSignerInputLength = 50;
sl@0
    29
sl@0
    30
// CDummyECCSignerImpl
sl@0
    31
CDummyECCSignerImpl* CDummyECCSignerImpl::NewL(const CKey& aKey,
sl@0
    32
        TUid aPaddingMode)
sl@0
    33
    {
sl@0
    34
    CDummyECCSignerImpl* self =
sl@0
    35
            CDummyECCSignerImpl::NewLC(aKey, aPaddingMode);
sl@0
    36
    CleanupStack::Pop(self);
sl@0
    37
    return self;
sl@0
    38
    }
sl@0
    39
sl@0
    40
CDummyECCSignerImpl* CDummyECCSignerImpl::NewLC(const CKey& aKey,
sl@0
    41
        TUid aPaddingMode)
sl@0
    42
    {
sl@0
    43
    CDummyECCSignerImpl* self =
sl@0
    44
            new (ELeave) CDummyECCSignerImpl(aPaddingMode);
sl@0
    45
    CleanupStack::PushL(self);
sl@0
    46
    self->ConstructL(aKey);
sl@0
    47
    return self;
sl@0
    48
    }
sl@0
    49
sl@0
    50
CDummyECCSignerImpl::CDummyECCSignerImpl(TUid aPaddingMode) :
sl@0
    51
    iPaddingMode(aPaddingMode)
sl@0
    52
    {
sl@0
    53
    }
sl@0
    54
sl@0
    55
CDummyECCSignerImpl::~CDummyECCSignerImpl()
sl@0
    56
    {
sl@0
    57
    delete iKey;
sl@0
    58
    }
sl@0
    59
sl@0
    60
void CDummyECCSignerImpl::ConstructL(const CKey& aKey)
sl@0
    61
    {
sl@0
    62
    SetKeyL(aKey);
sl@0
    63
    }
sl@0
    64
sl@0
    65
// MPlugin Interface
sl@0
    66
void CDummyECCSignerImpl::Close()
sl@0
    67
    {
sl@0
    68
    delete this;
sl@0
    69
    }
sl@0
    70
void CDummyECCSignerImpl::Reset()
sl@0
    71
    {
sl@0
    72
    }
sl@0
    73
void CDummyECCSignerImpl::GetCharacteristicsL(
sl@0
    74
        const TCharacteristics*& aPluginCharacteristics)
sl@0
    75
    {
sl@0
    76
    TInt numCiphers = sizeof(KSignerCharacteristics)
sl@0
    77
            / sizeof(TAsymmetricSignatureCharacteristics*);
sl@0
    78
    TInt32 implUid = ImplementationUid().iUid;
sl@0
    79
    for (TInt i = 0; i < numCiphers; ++i)
sl@0
    80
        {
sl@0
    81
        if (KSignerCharacteristics[i]->cmn.iImplementationUID == implUid)
sl@0
    82
            {
sl@0
    83
            aPluginCharacteristics = KSignerCharacteristics[i];
sl@0
    84
            break;
sl@0
    85
            }
sl@0
    86
        }
sl@0
    87
    }
sl@0
    88
sl@0
    89
const CExtendedCharacteristics* CDummyECCSignerImpl::GetExtendedCharacteristicsL()
sl@0
    90
    {
sl@0
    91
    // All Symbian software plug-ins have unlimited concurrency, cannot be reserved
sl@0
    92
    // for exclusive use and are not CERTIFIED to be standards compliant.
sl@0
    93
    return CExtendedCharacteristics::NewL(KMaxTInt, EFalse);
sl@0
    94
    }
sl@0
    95
sl@0
    96
TAny* CDummyECCSignerImpl::GetExtension(TUid /* aExtensionId */)
sl@0
    97
    {
sl@0
    98
    return 0;
sl@0
    99
    }
sl@0
   100
// End of MPlugin Interface
sl@0
   101
sl@0
   102
// MSignatureBase Interface
sl@0
   103
void CDummyECCSignerImpl::SetPaddingModeL(TUid /* aPaddingMode */)
sl@0
   104
    {
sl@0
   105
    User::Leave(KErrNotSupported);
sl@0
   106
    }
sl@0
   107
sl@0
   108
void CDummyECCSignerImpl::SetKeyL(const CKey& aKey)
sl@0
   109
    {
sl@0
   110
    // delete any previous key and recreate the key
sl@0
   111
    delete iKey;
sl@0
   112
    iKey = NULL;
sl@0
   113
    iKey = CKey::NewL(aKey);
sl@0
   114
    }
sl@0
   115
sl@0
   116
TInt CDummyECCSignerImpl::GetMaximumInputLengthL() const
sl@0
   117
    {
sl@0
   118
    return KMaxSignerInputLength;
sl@0
   119
    }
sl@0
   120
sl@0
   121
TInt CDummyECCSignerImpl::GetMaximumOutputLengthL() const
sl@0
   122
    {
sl@0
   123
    return KMaxSignerOutputLength;
sl@0
   124
    }
sl@0
   125
sl@0
   126
TUid CDummyECCSignerImpl::ImplementationUid() const
sl@0
   127
    {
sl@0
   128
    return KCryptoPluginEccSignerUid;
sl@0
   129
    }
sl@0
   130
sl@0
   131
void CDummyECCSignerImpl::SignL(const TDesC8& aInput,
sl@0
   132
        CCryptoParams& aSignature)
sl@0
   133
    {
sl@0
   134
    if (iKey->IsPresent(KPassedHandleToKeyUid))
sl@0
   135
        {
sl@0
   136
        const TInt keyHandle = iKey->GetTIntL(KPassedHandleToKeyUid);
sl@0
   137
sl@0
   138
        // Invoke the Spi HAI to perform the operation
sl@0
   139
        CCryptoSpiHai::SignL(keyHandle, aInput, aSignature);
sl@0
   140
        }
sl@0
   141
    else
sl@0
   142
        {
sl@0
   143
        User::Leave(KErrNotSupported);
sl@0
   144
        }
sl@0
   145
    }
sl@0
   146
sl@0
   147
// End of file