Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(291)

Side by Side Diff: Source/platform/exported/WebCryptoAlgorithm.cpp

Issue 707743002: WebCrypto: Add ECDSA algorithm (Blink side). (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase onto master Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 WebCryptoAlgorithmParamsTypeRsaPssParams, // Sign 204 WebCryptoAlgorithmParamsTypeRsaPssParams, // Sign
205 WebCryptoAlgorithmParamsTypeRsaPssParams, // Verify 205 WebCryptoAlgorithmParamsTypeRsaPssParams, // Verify
206 WebCryptoAlgorithmInfo::Undefined, // Digest 206 WebCryptoAlgorithmInfo::Undefined, // Digest
207 WebCryptoAlgorithmParamsTypeRsaHashedKeyGenParams, // GenerateKey 207 WebCryptoAlgorithmParamsTypeRsaHashedKeyGenParams, // GenerateKey
208 WebCryptoAlgorithmParamsTypeRsaHashedImportParams, // ImportKey 208 WebCryptoAlgorithmParamsTypeRsaHashedImportParams, // ImportKey
209 WebCryptoAlgorithmInfo::Undefined, // DeriveKey 209 WebCryptoAlgorithmInfo::Undefined, // DeriveKey
210 WebCryptoAlgorithmInfo::Undefined, // DeriveBits 210 WebCryptoAlgorithmInfo::Undefined, // DeriveBits
211 WebCryptoAlgorithmParamsTypeNone, // WrapKey 211 WebCryptoAlgorithmParamsTypeNone, // WrapKey
212 WebCryptoAlgorithmParamsTypeNone // UnwrapKey 212 WebCryptoAlgorithmParamsTypeNone // UnwrapKey
213 } 213 }
214 }, { // Index 12
215 "ECDSA", {
216 WebCryptoAlgorithmInfo::Undefined, // Encrypt
217 WebCryptoAlgorithmInfo::Undefined, // Decrypt
218 WebCryptoAlgorithmParamsTypeEcdsaParams, // Sign
219 WebCryptoAlgorithmParamsTypeEcdsaParams, // Verify
220 WebCryptoAlgorithmInfo::Undefined, // Digest
221 WebCryptoAlgorithmParamsTypeEcKeyGenParams, // GenerateKey
222 WebCryptoAlgorithmParamsTypeEcKeyImportParams, // ImportKey
223 WebCryptoAlgorithmInfo::Undefined, // DeriveKey
224 WebCryptoAlgorithmInfo::Undefined, // DeriveBits
225 WebCryptoAlgorithmParamsTypeNone, // WrapKey
226 WebCryptoAlgorithmParamsTypeNone // UnwrapKey
227 }
214 }, 228 },
215 }; 229 };
216 230
217 // Initializing the algorithmIdToInfo table above depends on knowing the enum 231 // Initializing the algorithmIdToInfo table above depends on knowing the enum
218 // values for algorithm IDs. If those ever change, the table will need to be 232 // values for algorithm IDs. If those ever change, the table will need to be
219 // updated. 233 // updated.
220 COMPILE_ASSERT(WebCryptoAlgorithmIdAesCbc == 0, AesCbc_idDoesntMatch); 234 COMPILE_ASSERT(WebCryptoAlgorithmIdAesCbc == 0, AesCbc_idDoesntMatch);
221 COMPILE_ASSERT(WebCryptoAlgorithmIdHmac == 1, Hmac_idDoesntMatch); 235 COMPILE_ASSERT(WebCryptoAlgorithmIdHmac == 1, Hmac_idDoesntMatch);
222 COMPILE_ASSERT(WebCryptoAlgorithmIdRsaSsaPkcs1v1_5 == 2, RsaSsaPkcs1v1_5_idDoesn tMatch); 236 COMPILE_ASSERT(WebCryptoAlgorithmIdRsaSsaPkcs1v1_5 == 2, RsaSsaPkcs1v1_5_idDoesn tMatch);
223 COMPILE_ASSERT(WebCryptoAlgorithmIdSha1 == 3, Sha1_idDoesntMatch); 237 COMPILE_ASSERT(WebCryptoAlgorithmIdSha1 == 3, Sha1_idDoesntMatch);
224 COMPILE_ASSERT(WebCryptoAlgorithmIdSha256 == 4, Sha256_idDoesntMatch); 238 COMPILE_ASSERT(WebCryptoAlgorithmIdSha256 == 4, Sha256_idDoesntMatch);
225 COMPILE_ASSERT(WebCryptoAlgorithmIdSha384 == 5, Sha384_idDoesntMatch); 239 COMPILE_ASSERT(WebCryptoAlgorithmIdSha384 == 5, Sha384_idDoesntMatch);
226 COMPILE_ASSERT(WebCryptoAlgorithmIdSha512 == 6, Sha512_idDoesntMatch); 240 COMPILE_ASSERT(WebCryptoAlgorithmIdSha512 == 6, Sha512_idDoesntMatch);
227 COMPILE_ASSERT(WebCryptoAlgorithmIdAesGcm == 7, AesGcm_idDoesntMatch); 241 COMPILE_ASSERT(WebCryptoAlgorithmIdAesGcm == 7, AesGcm_idDoesntMatch);
228 COMPILE_ASSERT(WebCryptoAlgorithmIdRsaOaep == 8, RsaOaep_idDoesntMatch); 242 COMPILE_ASSERT(WebCryptoAlgorithmIdRsaOaep == 8, RsaOaep_idDoesntMatch);
229 COMPILE_ASSERT(WebCryptoAlgorithmIdAesCtr == 9, AesCtr_idDoesntMatch); 243 COMPILE_ASSERT(WebCryptoAlgorithmIdAesCtr == 9, AesCtr_idDoesntMatch);
230 COMPILE_ASSERT(WebCryptoAlgorithmIdAesKw == 10, AesKw_idDoesntMatch); 244 COMPILE_ASSERT(WebCryptoAlgorithmIdAesKw == 10, AesKw_idDoesntMatch);
231 COMPILE_ASSERT(WebCryptoAlgorithmIdRsaPss == 11, RsaPss_idDoesntMatch); 245 COMPILE_ASSERT(WebCryptoAlgorithmIdRsaPss == 11, RsaPss_idDoesntMatch);
232 COMPILE_ASSERT(WebCryptoAlgorithmIdLast == 11, Last_idDoesntMatch); 246 COMPILE_ASSERT(WebCryptoAlgorithmIdEcdsa == 12, Ecdsa_idDoesntMatch);
247 COMPILE_ASSERT(WebCryptoAlgorithmIdLast == 12, Last_idDoesntMatch);
233 COMPILE_ASSERT(10 == WebCryptoOperationLast, UpdateParamsMapping); 248 COMPILE_ASSERT(10 == WebCryptoOperationLast, UpdateParamsMapping);
234 249
235 } // namespace 250 } // namespace
236 251
237 class WebCryptoAlgorithmPrivate : public ThreadSafeRefCounted<WebCryptoAlgorithm Private> { 252 class WebCryptoAlgorithmPrivate : public ThreadSafeRefCounted<WebCryptoAlgorithm Private> {
238 public: 253 public:
239 WebCryptoAlgorithmPrivate(WebCryptoAlgorithmId id, PassOwnPtr<WebCryptoAlgor ithmParams> params) 254 WebCryptoAlgorithmPrivate(WebCryptoAlgorithmId id, PassOwnPtr<WebCryptoAlgor ithmParams> params)
240 : id(id) 255 : id(id)
241 , params(params) 256 , params(params)
242 { 257 {
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 } 375 }
361 376
362 const WebCryptoRsaPssParams* WebCryptoAlgorithm::rsaPssParams() const 377 const WebCryptoRsaPssParams* WebCryptoAlgorithm::rsaPssParams() const
363 { 378 {
364 ASSERT(!isNull()); 379 ASSERT(!isNull());
365 if (paramsType() == WebCryptoAlgorithmParamsTypeRsaPssParams) 380 if (paramsType() == WebCryptoAlgorithmParamsTypeRsaPssParams)
366 return static_cast<WebCryptoRsaPssParams*>(m_private->params.get()); 381 return static_cast<WebCryptoRsaPssParams*>(m_private->params.get());
367 return 0; 382 return 0;
368 } 383 }
369 384
385 const WebCryptoEcdsaParams* WebCryptoAlgorithm::ecdsaParams() const
386 {
387 ASSERT(!isNull());
388 if (paramsType() == WebCryptoAlgorithmParamsTypeEcdsaParams)
389 return static_cast<WebCryptoEcdsaParams*>(m_private->params.get());
390 return 0;
391 }
392
393 const WebCryptoEcKeyGenParams* WebCryptoAlgorithm::ecKeyGenParams() const
394 {
395 ASSERT(!isNull());
396 if (paramsType() == WebCryptoAlgorithmParamsTypeEcKeyGenParams)
397 return static_cast<WebCryptoEcKeyGenParams*>(m_private->params.get());
398 return 0;
399 }
400
401 const WebCryptoEcKeyImportParams* WebCryptoAlgorithm::ecKeyImportParams() const
402 {
403 ASSERT(!isNull());
404 if (paramsType() == WebCryptoAlgorithmParamsTypeEcKeyImportParams)
405 return static_cast<WebCryptoEcKeyImportParams*>(m_private->params.get()) ;
406 return 0;
407 }
408
370 bool WebCryptoAlgorithm::isHash(WebCryptoAlgorithmId id) 409 bool WebCryptoAlgorithm::isHash(WebCryptoAlgorithmId id)
371 { 410 {
372 switch (id) { 411 switch (id) {
373 case WebCryptoAlgorithmIdSha1: 412 case WebCryptoAlgorithmIdSha1:
374 case WebCryptoAlgorithmIdSha256: 413 case WebCryptoAlgorithmIdSha256:
375 case WebCryptoAlgorithmIdSha384: 414 case WebCryptoAlgorithmIdSha384:
376 case WebCryptoAlgorithmIdSha512: 415 case WebCryptoAlgorithmIdSha512:
377 return true; 416 return true;
378 case WebCryptoAlgorithmIdAesCbc: 417 case WebCryptoAlgorithmIdAesCbc:
379 case WebCryptoAlgorithmIdHmac: 418 case WebCryptoAlgorithmIdHmac:
380 case WebCryptoAlgorithmIdRsaSsaPkcs1v1_5: 419 case WebCryptoAlgorithmIdRsaSsaPkcs1v1_5:
381 case WebCryptoAlgorithmIdAesGcm: 420 case WebCryptoAlgorithmIdAesGcm:
382 case WebCryptoAlgorithmIdRsaOaep: 421 case WebCryptoAlgorithmIdRsaOaep:
383 case WebCryptoAlgorithmIdAesCtr: 422 case WebCryptoAlgorithmIdAesCtr:
384 case WebCryptoAlgorithmIdAesKw: 423 case WebCryptoAlgorithmIdAesKw:
385 case WebCryptoAlgorithmIdRsaPss: 424 case WebCryptoAlgorithmIdRsaPss:
425 case WebCryptoAlgorithmIdEcdsa:
386 break; 426 break;
387 } 427 }
388 return false; 428 return false;
389 } 429 }
390 430
391 void WebCryptoAlgorithm::assign(const WebCryptoAlgorithm& other) 431 void WebCryptoAlgorithm::assign(const WebCryptoAlgorithm& other)
392 { 432 {
393 m_private = other.m_private; 433 m_private = other.m_private;
394 } 434 }
395 435
396 void WebCryptoAlgorithm::reset() 436 void WebCryptoAlgorithm::reset()
397 { 437 {
398 m_private.reset(); 438 m_private.reset();
399 } 439 }
400 440
401 } // namespace blink 441 } // namespace blink
OLDNEW
« no previous file with comments | « Source/modules/crypto/SubtleCrypto.cpp ('k') | Source/platform/exported/WebCryptoKeyAlgorithm.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698