der_decode_subject_public_key_info: fix compile error
also make it possible to define min/max RSA key sizes externally This closes #59
This commit is contained in:
		
							parent
							
								
									62878de0c5
								
							
						
					
					
						commit
						90e968a202
					
				@ -367,6 +367,30 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#endif /* LTC_NO_PK */
 | 
					#endif /* LTC_NO_PK */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* define these PK sizes out of LTC_NO_PK
 | 
				
			||||||
 | 
					 * to have them always defined
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#if defined(LTC_MRSA)
 | 
				
			||||||
 | 
					/* Min and Max RSA key sizes (in bits) */
 | 
				
			||||||
 | 
					#ifndef MIN_RSA_SIZE
 | 
				
			||||||
 | 
					#define MIN_RSA_SIZE 1024
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef MAX_RSA_SIZE
 | 
				
			||||||
 | 
					#define MAX_RSA_SIZE 4096
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* in cases where you want ASN.1/DER functionality, but no
 | 
				
			||||||
 | 
					 * RSA, you can define this externally if 1024 is not enough
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#if defined(LTC_MRSA)
 | 
				
			||||||
 | 
					#define LTC_DER_MAX_PUBKEY_SIZE MAX_RSA_SIZE
 | 
				
			||||||
 | 
					#elif !defined(LTC_DER_MAX_PUBKEY_SIZE)
 | 
				
			||||||
 | 
					/* this includes DSA */
 | 
				
			||||||
 | 
					#define LTC_DER_MAX_PUBKEY_SIZE 1024
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* PKCS #1 (RSA) and #5 (Password Handling) stuff */
 | 
					/* PKCS #1 (RSA) and #5 (Password Handling) stuff */
 | 
				
			||||||
#ifndef LTC_NO_PKCS
 | 
					#ifndef LTC_NO_PKCS
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -28,10 +28,6 @@ int pk_get_oid(int pk, oid_st *st);
 | 
				
			|||||||
/* ---- RSA ---- */
 | 
					/* ---- RSA ---- */
 | 
				
			||||||
#ifdef LTC_MRSA
 | 
					#ifdef LTC_MRSA
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Min and Max RSA key sizes (in bits) */
 | 
					 | 
				
			||||||
#define MIN_RSA_SIZE 1024
 | 
					 | 
				
			||||||
#define MAX_RSA_SIZE 4096
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/** RSA PKCS style key */
 | 
					/** RSA PKCS style key */
 | 
				
			||||||
typedef struct Rsa_key {
 | 
					typedef struct Rsa_key {
 | 
				
			||||||
    /** Type of key, PK_PRIVATE or PK_PUBLIC */
 | 
					    /** Type of key, PK_PRIVATE or PK_PUBLIC */
 | 
				
			||||||
 | 
				
			|||||||
@ -54,7 +54,7 @@ int der_decode_subject_public_key_info(const unsigned char *in, unsigned long in
 | 
				
			|||||||
   }
 | 
					   }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   /* see if the OpenSSL DER format RSA public key will work */
 | 
					   /* see if the OpenSSL DER format RSA public key will work */
 | 
				
			||||||
   tmpbuf = XCALLOC(1, MAX_RSA_SIZE*8);
 | 
					   tmpbuf = XCALLOC(1, LTC_DER_MAX_PUBKEY_SIZE*8);
 | 
				
			||||||
   if (tmpbuf == NULL) {
 | 
					   if (tmpbuf == NULL) {
 | 
				
			||||||
       err = CRYPT_MEM;
 | 
					       err = CRYPT_MEM;
 | 
				
			||||||
       goto LBL_ERR;
 | 
					       goto LBL_ERR;
 | 
				
			||||||
@ -68,7 +68,7 @@ int der_decode_subject_public_key_info(const unsigned char *in, unsigned long in
 | 
				
			|||||||
    * in a **BIT** string ... so we have to extract it then proceed to convert bit to octet
 | 
					    * in a **BIT** string ... so we have to extract it then proceed to convert bit to octet
 | 
				
			||||||
    */
 | 
					    */
 | 
				
			||||||
   LTC_SET_ASN1(subject_pubkey, 0, LTC_ASN1_SEQUENCE, alg_id, 2);
 | 
					   LTC_SET_ASN1(subject_pubkey, 0, LTC_ASN1_SEQUENCE, alg_id, 2);
 | 
				
			||||||
   LTC_SET_ASN1(subject_pubkey, 1, LTC_ASN1_RAW_BIT_STRING, tmpbuf, MAX_RSA_SIZE*8);
 | 
					   LTC_SET_ASN1(subject_pubkey, 1, LTC_ASN1_RAW_BIT_STRING, tmpbuf, LTC_DER_MAX_PUBKEY_SIZE*8);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   err=der_decode_sequence(in, inlen, subject_pubkey, 2UL);
 | 
					   err=der_decode_sequence(in, inlen, subject_pubkey, 2UL);
 | 
				
			||||||
   if (err != CRYPT_OK) {
 | 
					   if (err != CRYPT_OK) {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user