Update contrib.
2 * Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * under the terms of the License "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".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
15 * plugin entry implementation
16 * plugin entry implementation
25 #include "pluginentry.h"
26 #include <cryptospi/keypair.h>
27 #include "pluginconfig.h"
30 #include <cryptospi/keys.h>
32 #include "desextendimpl.h"
34 #include "rsakeypairgenimpl.h"
35 #include "randomimpl.h"
36 #include "rsasignerimpl.h"
38 #include "dhkeypairgenimpl.h"
39 #include <cryptospi/cryptospidef.h>
41 #ifdef SYMBIAN_SDP_IPSEC_VOIP_SUPPORT
42 #include "rijndaelimpl.h"
47 using namespace SoftwareCrypto;
49 EXPORT_C const TCharacteristics** CCryptoPluginEntry::Enumerate(TUid aInterface, TInt& aNumPlugins)
51 const TCharacteristics** ptr(0);
52 switch (aInterface.iUid)
54 case KSymmetricCipherInterface:
56 aNumPlugins=sizeof(KSymmetricCipherCharacteristics)/sizeof(TSymmetricCipherCharacteristics*);
57 ptr = (const TCharacteristics**) &KSymmetricCipherCharacteristics[0];
61 case KAsymmetricCipherInterface:
63 aNumPlugins=sizeof(KAsymmetricCipherCharacteristics)/sizeof(TAsymmetricCipherCharacteristics*);
64 ptr = (const TCharacteristics**) &KAsymmetricCipherCharacteristics[0];
70 aNumPlugins=sizeof(KHashCharacteristics)/sizeof(THashCharacteristics*);
71 ptr = (const TCharacteristics**) &KHashCharacteristics[0];
75 #ifdef SYMBIAN_SDP_IPSEC_VOIP_SUPPORT
78 aNumPlugins=sizeof(KMacCharacteristics)/sizeof(TMacCharacteristics*);
79 ptr = (const TCharacteristics**) &KMacCharacteristics[0];
84 case KRandomInterface:
86 aNumPlugins=sizeof(KRandomCharacteristics)/sizeof(TRandomCharacteristics*);
87 ptr= (const TCharacteristics**) &KRandomCharacteristics[0];
91 case KKeypairGeneratorInterface:
93 aNumPlugins=sizeof(KKeyPairGeneratorCharacteristics)/sizeof(TAsymmetricKeypairGeneratorCharacteristics*);
94 ptr = (const TCharacteristics**) &KKeyPairGeneratorCharacteristics[0];
98 case KSignerInterface:
100 aNumPlugins=sizeof(KSignerCharacteristics)/sizeof(TAsymmetricSignatureCharacteristics*);
101 ptr = (const TCharacteristics**) &KSignerCharacteristics[0];
105 case KKeyAgreementInterface:
107 aNumPlugins=sizeof(KKeyAgreementCharacteristics)/sizeof(TKeyAgreementCharacteristics*);
108 ptr = (const TCharacteristics**) &KKeyAgreementCharacteristics[0];
119 EXPORT_C void CCryptoPluginEntry::GetExtendedCharacteristicsL(TUid aImplementationUid, CExtendedCharacteristics*& aExt)
121 switch (aImplementationUid.iUid)
123 case KTestPlugin02Md5_1:
125 aExt = CMD5Impl::CreateExtendedCharacteristicsL();
129 case KTestPlugin02Random_1:
130 case KTestPlugin02Random_2:
132 aExt = CRandomImpl::CreateExtendedCharacteristicsL();
136 case KTestPlugin02Des_1:
138 aExt = CDesExtendImpl::CreateExtendedCharacteristicsL();
142 case KTestPlugin02Des_2:
144 aExt = CDesImpl::CreateExtendedCharacteristicsL();
148 case KTestPlugin02Rsa_1:
149 case KTestPlugin02Rsa_2:
151 aExt = CRSAImpl::CreateExtendedCharacteristicsL();
155 case KTestPlugin02RsaKeyGen_1:
157 aExt = CRSAKeyPairGenImpl::CreateExtendedCharacteristicsL();
161 case KTestPlugin02DHKeyGen_1:
163 aExt = CDHKeyPairGenImpl::CreateExtendedCharacteristicsL();
167 case KTestPlugin02RsaSigner_1:
169 aExt = CRSASignerImpl::CreateExtendedCharacteristicsL();
173 case KTestPlugin02DHKeyAgree_1:
175 aExt = CDHKeyPairGenImpl::CreateExtendedCharacteristicsL();
179 #ifdef SYMBIAN_SDP_IPSEC_VOIP_SUPPORT
180 case KTestPlugin02XcbcMac96:
181 case KTestPlugin02XcbcPrf128:
182 case KTestPlugin02Aes:
184 aExt = CRijndaelImpl::CreateExtendedCharacteristicsL();
190 User::Leave(KErrNotSupported);
196 EXPORT_C void CCryptoPluginEntry::CreateAsymmetricCipherL(MAsymmetricCipher*& aPlugin,
197 TUid aImplementationId,
201 const CCryptoParams* /*aAlgorithmParams*/)
203 switch (aImplementationId.iUid)
206 case KTestPlugin02Rsa_1:
207 case KTestPlugin02Rsa_2:
209 aPlugin = CRSAImpl::NewL(aImplementationId, aKey, aCryptoMode, aPaddingMode);
214 User::Leave(KErrNotFound);
219 EXPORT_C void CCryptoPluginEntry::CreateAsymmetricSignerL(MSigner*& aPlugin,
220 TUid aImplementationId,
223 const CCryptoParams* /*aAlgorithmParams*/)
225 switch (aImplementationId.iUid)
227 case KTestPlugin02RsaSigner_1:
229 aPlugin = CRSASignerImpl::NewL(aImplementationId, aKey, aPaddingMode);
234 User::Leave(KErrNotFound);
239 EXPORT_C void CCryptoPluginEntry::CreateAsymmetricVerifierL(MVerifier*& /*aPlugin*/,
240 TUid /*aImplementationId*/,
241 const CKey& /*aKey*/,
242 TUid /*aPaddingMode*/,
243 const CCryptoParams* /*aAlgorithmParams*/)
245 User::Leave(KErrNotFound);
249 EXPORT_C void CCryptoPluginEntry::CreateHashL(MHash*& aPlugin,
250 TUid aImplementationId,
253 const CCryptoParams* /*aAlgorithmParams*/)
255 aPlugin=CSoftwareHash::NewL(aImplementationId, aOperationMode, aKey);
259 #ifdef SYMBIAN_SDP_IPSEC_VOIP_SUPPORT
260 EXPORT_C void CCryptoPluginEntry::CreateHashL(MHash*& aPlugin,
261 TUid aImplementationId,
262 const CCryptoParams* /*aAlgorithmParams*/)
264 aPlugin=CSoftwareHash::NewL(aImplementationId);
268 EXPORT_C void CCryptoPluginEntry::CreateMacL(MMac*& aPlugin,
269 const TUid aImplementationId,
271 const CCryptoParams* aAlgorithmParams)
273 aPlugin=CMacImpl::NewL(aKey, aImplementationId, aAlgorithmParams);
278 EXPORT_C void CCryptoPluginEntry::CreateKeyAgreementL(MKeyAgreement*& aPlugin,
279 TUid aImplementationId,
280 const CKey& aPrivateKey,
281 const CCryptoParams* aAlgorithmParams)
283 // create requested key agreement implementation in this plugin
284 switch (aImplementationId.iUid)
286 case KTestPlugin02DHKeyAgree_1:
288 aPlugin = CDHImpl::NewL(aPrivateKey, aAlgorithmParams);
293 User::Leave(KErrNotFound);
298 EXPORT_C void CCryptoPluginEntry::CreateKeyPairGeneratorL(MKeyPairGenerator*& aPlugin,
299 TUid aImplementationId,
300 const CCryptoParams* /*aAlgorithmParams*/)
302 //create requested key pair generator implementation in this plugin
303 switch (aImplementationId.iUid)
306 case KTestPlugin02RsaKeyGen_1:
308 aPlugin = CRSAKeyPairGenImpl::NewL(aImplementationId);
312 case KTestPlugin02DHKeyGen_1:
314 aPlugin = CDHKeyPairGenImpl::NewL(aImplementationId);
319 User::Leave(KErrNotFound);
324 EXPORT_C void CCryptoPluginEntry::CreateRandomL(MRandom*& aPlugin,
325 TUid aImplementationId,
326 const CCryptoParams* /*aAlgorithmParams*/)
329 switch (aImplementationId.iUid)
332 case KTestPlugin02Random_1:
333 case KTestPlugin02Random_2:
335 aPlugin=CRandomImpl::NewL(aImplementationId);
340 User::Leave(KErrNotFound);
345 EXPORT_C void CCryptoPluginEntry::CreateSymmetricCipherL(MSymmetricCipher*& aPlugin,
346 TUid aImplementationId,
351 const CCryptoParams* /*aAlgorithmParams*/)
354 switch (aImplementationId.iUid)
356 case KTestPlugin02Des_1:
358 aPlugin=CDesExtendImpl::NewL(aImplementationId, aKey, aCryptoMode, aOperationMode, aPadding);
362 case KTestPlugin02Des_2:
364 aPlugin=CDesImpl::NewL(aImplementationId, aKey, aCryptoMode, aOperationMode, aPadding);
368 #ifdef SYMBIAN_SDP_IPSEC_VOIP_SUPPORT
369 case KTestPlugin02Aes:
371 aPlugin=CRijndaelImpl::NewL(aKey, aCryptoMode, aOperationMode, aPadding, KTestPlugin02AesUid);
377 User::Leave(KErrNotFound);