OLD | NEW |
1 /* | 1 /* |
2 * Verification stuff. | 2 * Verification 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: secvfy.c,v 1.30 2012/06/25 21:48:39 rrelyea%redhat.com Exp $ */ | 7 /* $Id: secvfy.c,v 1.30 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 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 * Use the "buffer" union member to reference the buffer. | 96 * Use the "buffer" union member to reference the buffer. |
97 * Note: do not take the size of the "buffer" union member. Take | 97 * Note: do not take the size of the "buffer" union member. Take |
98 * the size of the union or some other union member instead. | 98 * the size of the union or some other union member instead. |
99 */ | 99 */ |
100 union { | 100 union { |
101 unsigned char buffer[1]; | 101 unsigned char buffer[1]; |
102 | 102 |
103 /* the digest in the decrypted RSA signature */ | 103 /* the digest in the decrypted RSA signature */ |
104 unsigned char rsadigest[HASH_LENGTH_MAX]; | 104 unsigned char rsadigest[HASH_LENGTH_MAX]; |
105 /* the full DSA signature... 40 bytes */ | 105 /* the full DSA signature... 40 bytes */ |
106 » unsigned char dsasig[DSA_SIGNATURE_LEN]; | 106 » unsigned char dsasig[DSA_MAX_SIGNATURE_LEN]; |
107 /* the full ECDSA signature */ | 107 /* the full ECDSA signature */ |
108 unsigned char ecdsasig[2 * MAX_ECKEY_LEN]; | 108 unsigned char ecdsasig[2 * MAX_ECKEY_LEN]; |
109 } u; | 109 } u; |
110 unsigned int rsadigestlen; | 110 unsigned int rsadigestlen; |
111 void * wincx; | 111 void * wincx; |
112 void *hashcx; | 112 void *hashcx; |
113 const SECHashObject *hashobj; | 113 const SECHashObject *hashobj; |
114 SECOidTag encAlg; /* enc alg */ | 114 SECOidTag encAlg; /* enc alg */ |
115 PRBool hasSignature; /* true if the signature was provided in the | 115 PRBool hasSignature; /* true if the signature was provided in the |
116 * VFY_CreateContext call. If false, the | 116 * VFY_CreateContext call. If false, the |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 case SEC_OID_ISO_SHA1_WITH_RSA_SIGNATURE: | 203 case SEC_OID_ISO_SHA1_WITH_RSA_SIGNATURE: |
204 *hashalg = SEC_OID_SHA1; | 204 *hashalg = SEC_OID_SHA1; |
205 break; | 205 break; |
206 case SEC_OID_PKCS1_RSA_ENCRYPTION: | 206 case SEC_OID_PKCS1_RSA_ENCRYPTION: |
207 case SEC_OID_PKCS1_RSA_PSS_SIGNATURE: | 207 case SEC_OID_PKCS1_RSA_PSS_SIGNATURE: |
208 *hashalg = SEC_OID_UNKNOWN; /* get it from the RSA signature */ | 208 *hashalg = SEC_OID_UNKNOWN; /* get it from the RSA signature */ |
209 break; | 209 break; |
210 | 210 |
211 case SEC_OID_ANSIX962_ECDSA_SHA224_SIGNATURE: | 211 case SEC_OID_ANSIX962_ECDSA_SHA224_SIGNATURE: |
212 case SEC_OID_PKCS1_SHA224_WITH_RSA_ENCRYPTION: | 212 case SEC_OID_PKCS1_SHA224_WITH_RSA_ENCRYPTION: |
| 213 case SEC_OID_NIST_DSA_SIGNATURE_WITH_SHA224_DIGEST: |
213 *hashalg = SEC_OID_SHA224; | 214 *hashalg = SEC_OID_SHA224; |
214 break; | 215 break; |
215 case SEC_OID_ANSIX962_ECDSA_SHA256_SIGNATURE: | 216 case SEC_OID_ANSIX962_ECDSA_SHA256_SIGNATURE: |
216 case SEC_OID_PKCS1_SHA256_WITH_RSA_ENCRYPTION: | 217 case SEC_OID_PKCS1_SHA256_WITH_RSA_ENCRYPTION: |
| 218 case SEC_OID_NIST_DSA_SIGNATURE_WITH_SHA256_DIGEST: |
217 *hashalg = SEC_OID_SHA256; | 219 *hashalg = SEC_OID_SHA256; |
218 break; | 220 break; |
219 case SEC_OID_ANSIX962_ECDSA_SHA384_SIGNATURE: | 221 case SEC_OID_ANSIX962_ECDSA_SHA384_SIGNATURE: |
220 case SEC_OID_PKCS1_SHA384_WITH_RSA_ENCRYPTION: | 222 case SEC_OID_PKCS1_SHA384_WITH_RSA_ENCRYPTION: |
221 *hashalg = SEC_OID_SHA384; | 223 *hashalg = SEC_OID_SHA384; |
222 break; | 224 break; |
223 case SEC_OID_ANSIX962_ECDSA_SHA512_SIGNATURE: | 225 case SEC_OID_ANSIX962_ECDSA_SHA512_SIGNATURE: |
224 case SEC_OID_PKCS1_SHA512_WITH_RSA_ENCRYPTION: | 226 case SEC_OID_PKCS1_SHA512_WITH_RSA_ENCRYPTION: |
225 *hashalg = SEC_OID_SHA512; | 227 *hashalg = SEC_OID_SHA512; |
226 break; | 228 break; |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 case SEC_OID_PKCS1_SHA512_WITH_RSA_ENCRYPTION: | 302 case SEC_OID_PKCS1_SHA512_WITH_RSA_ENCRYPTION: |
301 *encalg = SEC_OID_PKCS1_RSA_ENCRYPTION; | 303 *encalg = SEC_OID_PKCS1_RSA_ENCRYPTION; |
302 break; | 304 break; |
303 case SEC_OID_PKCS1_RSA_PSS_SIGNATURE: | 305 case SEC_OID_PKCS1_RSA_PSS_SIGNATURE: |
304 *encalg = SEC_OID_PKCS1_RSA_PSS_SIGNATURE; | 306 *encalg = SEC_OID_PKCS1_RSA_PSS_SIGNATURE; |
305 break; | 307 break; |
306 | 308 |
307 /* what about normal DSA? */ | 309 /* what about normal DSA? */ |
308 case SEC_OID_ANSIX9_DSA_SIGNATURE_WITH_SHA1_DIGEST: | 310 case SEC_OID_ANSIX9_DSA_SIGNATURE_WITH_SHA1_DIGEST: |
309 case SEC_OID_BOGUS_DSA_SIGNATURE_WITH_SHA1_DIGEST: | 311 case SEC_OID_BOGUS_DSA_SIGNATURE_WITH_SHA1_DIGEST: |
| 312 case SEC_OID_NIST_DSA_SIGNATURE_WITH_SHA224_DIGEST: |
| 313 case SEC_OID_NIST_DSA_SIGNATURE_WITH_SHA256_DIGEST: |
310 *encalg = SEC_OID_ANSIX9_DSA_SIGNATURE; | 314 *encalg = SEC_OID_ANSIX9_DSA_SIGNATURE; |
311 break; | 315 break; |
312 case SEC_OID_MISSI_DSS: | 316 case SEC_OID_MISSI_DSS: |
313 case SEC_OID_MISSI_KEA_DSS: | 317 case SEC_OID_MISSI_KEA_DSS: |
314 case SEC_OID_MISSI_KEA_DSS_OLD: | 318 case SEC_OID_MISSI_KEA_DSS_OLD: |
315 case SEC_OID_MISSI_DSS_OLD: | 319 case SEC_OID_MISSI_DSS_OLD: |
316 *encalg = SEC_OID_MISSI_DSS; | 320 *encalg = SEC_OID_MISSI_DSS; |
317 break; | 321 break; |
318 case SEC_OID_ANSIX962_ECDSA_SHA1_SIGNATURE: | 322 case SEC_OID_ANSIX962_ECDSA_SHA1_SIGNATURE: |
319 case SEC_OID_ANSIX962_ECDSA_SHA224_SIGNATURE: | 323 case SEC_OID_ANSIX962_ECDSA_SHA224_SIGNATURE: |
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
720 { | 724 { |
721 SECOidTag encAlg, hashAlg; | 725 SECOidTag encAlg, hashAlg; |
722 SECOidTag sigAlg = SECOID_GetAlgorithmTag((SECAlgorithmID *)sigAlgorithm); | 726 SECOidTag sigAlg = SECOID_GetAlgorithmTag((SECAlgorithmID *)sigAlgorithm); |
723 SECStatus rv = sec_DecodeSigAlg(key, sigAlg, | 727 SECStatus rv = sec_DecodeSigAlg(key, sigAlg, |
724 &sigAlgorithm->parameters, &encAlg, &hashAlg); | 728 &sigAlgorithm->parameters, &encAlg, &hashAlg); |
725 if (rv != SECSuccess) { | 729 if (rv != SECSuccess) { |
726 return rv; | 730 return rv; |
727 } | 731 } |
728 return vfy_VerifyData(buf, len, key, sig, encAlg, hashAlg, hash, wincx); | 732 return vfy_VerifyData(buf, len, key, sig, encAlg, hashAlg, hash, wincx); |
729 } | 733 } |
OLD | NEW |