OLD | NEW |
1 /* | 1 /* |
2 * Signature stuff. | 2 * Signature stuff. |
3 * | 3 * |
4 * This Source Code Form is subject to the terms of the Mozilla Public | 4 * This Source Code Form is subject to the terms of the Mozilla Public |
5 * License, v. 2.0. If a copy of the MPL was not distributed with this | 5 * License, v. 2.0. If a copy of the MPL was not distributed with this |
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ | 6 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
7 /* $Id: secsign.c,v 1.29 2012/06/25 21:48:39 rrelyea%redhat.com Exp $ */ | 7 /* $Id: secsign.c,v 1.29 2012/06/25 21:48:39 rrelyea%redhat.com Exp $ */ |
8 | 8 |
9 #include <stdio.h> | 9 #include <stdio.h> |
10 #include "cryptohi.h" | 10 #include "cryptohi.h" |
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
319 /* XXX We should probably have some asserts here to make sure the key type | 319 /* XXX We should probably have some asserts here to make sure the key type |
320 * and algID match | 320 * and algID match |
321 */ | 321 */ |
322 | 322 |
323 if (algID == SEC_OID_UNKNOWN) { | 323 if (algID == SEC_OID_UNKNOWN) { |
324 switch(pk->keyType) { | 324 switch(pk->keyType) { |
325 case rsaKey: | 325 case rsaKey: |
326 algID = SEC_OID_PKCS1_SHA1_WITH_RSA_ENCRYPTION; | 326 algID = SEC_OID_PKCS1_SHA1_WITH_RSA_ENCRYPTION; |
327 break; | 327 break; |
328 case dsaKey: | 328 case dsaKey: |
329 » algID = SEC_OID_ANSIX9_DSA_SIGNATURE_WITH_SHA1_DIGEST; | 329 » /* get Signature length (= q_len*2) and work from there */ |
| 330 » switch (PK11_SignatureLen(pk)) { |
| 331 » » case 448: |
| 332 » » algID = SEC_OID_NIST_DSA_SIGNATURE_WITH_SHA224_DIGEST; |
| 333 » » break; |
| 334 » » case 512: |
| 335 » » algID = SEC_OID_NIST_DSA_SIGNATURE_WITH_SHA256_DIGEST; |
| 336 » » break; |
| 337 » » default: |
| 338 » » algID = SEC_OID_ANSIX9_DSA_SIGNATURE_WITH_SHA1_DIGEST; |
| 339 » » break; |
| 340 » } |
330 break; | 341 break; |
331 case ecKey: | 342 case ecKey: |
332 algID = SEC_OID_ANSIX962_ECDSA_SIGNATURE_WITH_SHA1_DIGEST; | 343 algID = SEC_OID_ANSIX962_ECDSA_SIGNATURE_WITH_SHA1_DIGEST; |
333 break; | 344 break; |
334 default: | 345 default: |
335 PORT_SetError(SEC_ERROR_INVALID_KEY); | 346 PORT_SetError(SEC_ERROR_INVALID_KEY); |
336 return SECFailure; | 347 return SECFailure; |
337 } | 348 } |
338 } | 349 } |
339 | 350 |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
455 sigTag = SEC_OID_PKCS1_SHA512_WITH_RSA_ENCRYPTION; break; | 466 sigTag = SEC_OID_PKCS1_SHA512_WITH_RSA_ENCRYPTION; break; |
456 default: | 467 default: |
457 break; | 468 break; |
458 } | 469 } |
459 break; | 470 break; |
460 case dsaKey: | 471 case dsaKey: |
461 switch (hashAlgTag) { | 472 switch (hashAlgTag) { |
462 case SEC_OID_UNKNOWN: /* default for DSA if not specified */ | 473 case SEC_OID_UNKNOWN: /* default for DSA if not specified */ |
463 case SEC_OID_SHA1: | 474 case SEC_OID_SHA1: |
464 sigTag = SEC_OID_ANSIX9_DSA_SIGNATURE_WITH_SHA1_DIGEST; break; | 475 sigTag = SEC_OID_ANSIX9_DSA_SIGNATURE_WITH_SHA1_DIGEST; break; |
| 476 case SEC_OID_SHA224: |
| 477 sigTag = SEC_OID_NIST_DSA_SIGNATURE_WITH_SHA224_DIGEST; break; |
| 478 case SEC_OID_SHA256: |
| 479 sigTag = SEC_OID_NIST_DSA_SIGNATURE_WITH_SHA256_DIGEST; break; |
465 default: | 480 default: |
466 break; | 481 break; |
467 } | 482 } |
468 break; | 483 break; |
469 case ecKey: | 484 case ecKey: |
470 switch (hashAlgTag) { | 485 switch (hashAlgTag) { |
471 case SEC_OID_UNKNOWN: /* default for ECDSA if not specified */ | 486 case SEC_OID_UNKNOWN: /* default for ECDSA if not specified */ |
472 case SEC_OID_SHA1: | 487 case SEC_OID_SHA1: |
473 sigTag = SEC_OID_ANSIX962_ECDSA_SHA1_SIGNATURE; break; | 488 sigTag = SEC_OID_ANSIX962_ECDSA_SHA1_SIGNATURE; break; |
474 case SEC_OID_SHA224: | 489 case SEC_OID_SHA224: |
475 sigTag = SEC_OID_ANSIX962_ECDSA_SHA224_SIGNATURE; break; | 490 sigTag = SEC_OID_ANSIX962_ECDSA_SHA224_SIGNATURE; break; |
476 case SEC_OID_SHA256: | 491 case SEC_OID_SHA256: |
477 sigTag = SEC_OID_ANSIX962_ECDSA_SHA256_SIGNATURE; break; | 492 sigTag = SEC_OID_ANSIX962_ECDSA_SHA256_SIGNATURE; break; |
478 case SEC_OID_SHA384: | 493 case SEC_OID_SHA384: |
479 sigTag = SEC_OID_ANSIX962_ECDSA_SHA384_SIGNATURE; break; | 494 sigTag = SEC_OID_ANSIX962_ECDSA_SHA384_SIGNATURE; break; |
480 case SEC_OID_SHA512: | 495 case SEC_OID_SHA512: |
481 sigTag = SEC_OID_ANSIX962_ECDSA_SHA512_SIGNATURE; break; | 496 sigTag = SEC_OID_ANSIX962_ECDSA_SHA512_SIGNATURE; break; |
482 default: | 497 default: |
483 break; | 498 break; |
484 } | 499 } |
485 default: | 500 default: |
486 break; | 501 break; |
487 } | 502 } |
488 return sigTag; | 503 return sigTag; |
489 } | 504 } |
OLD | NEW |