rsa_verify_hash: fix possible bleichenbacher signature attack
This commit is contained in:
		
							parent
							
								
									c6dfef95eb
								
							
						
					
					
						commit
						5eb9743410
					
				| @ -103,7 +103,7 @@ int rsa_verify_hash_ex(const unsigned char *sig,      unsigned long siglen, | |||||||
|   } else { |   } else { | ||||||
|     /* PKCS #1 v1.5 decode it */ |     /* PKCS #1 v1.5 decode it */ | ||||||
|     unsigned char *out; |     unsigned char *out; | ||||||
|     unsigned long outlen, loid[16]; |     unsigned long outlen, loid[16], reallen; | ||||||
|     int           decoded; |     int           decoded; | ||||||
|     ltc_asn1_list digestinfo[2], siginfo[2]; |     ltc_asn1_list digestinfo[2], siginfo[2]; | ||||||
| 
 | 
 | ||||||
| @ -145,8 +145,14 @@ int rsa_verify_hash_ex(const unsigned char *sig,      unsigned long siglen, | |||||||
|        goto bail_2; |        goto bail_2; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     if ((err = der_length_sequence(siginfo, 2, &reallen)) != CRYPT_OK) { | ||||||
|  |        XFREE(out); | ||||||
|  |        goto bail_2; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /* test OID */ |     /* test OID */ | ||||||
|     if ((digestinfo[0].size == hash_descriptor[hash_idx].OIDlen) && |     if ((reallen == outlen) && | ||||||
|  |         (digestinfo[0].size == hash_descriptor[hash_idx].OIDlen) && | ||||||
|         (XMEMCMP(digestinfo[0].data, hash_descriptor[hash_idx].OID, sizeof(unsigned long) * hash_descriptor[hash_idx].OIDlen) == 0) && |         (XMEMCMP(digestinfo[0].data, hash_descriptor[hash_idx].OID, sizeof(unsigned long) * hash_descriptor[hash_idx].OIDlen) == 0) && | ||||||
|         (siginfo[1].size == hashlen) && |         (siginfo[1].size == hashlen) && | ||||||
|         (XMEMCMP(siginfo[1].data, hash, hashlen) == 0)) { |         (XMEMCMP(siginfo[1].data, hash, hashlen) == 0)) { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user