put dsa_set_pqg_dsaparam() in own c file
This commit is contained in:
		
							parent
							
								
									3c2e0d6686
								
							
						
					
					
						commit
						5640f8afc7
					
				| @ -57,51 +57,6 @@ LBL_ERR: | |||||||
|    return err; |    return err; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /**
 |  | ||||||
|   Import DSA's p, q & g from dsaparam |  | ||||||
| 
 |  | ||||||
|       dsaparam data: openssl dsaparam -outform DER -out dsaparam.der 2048 |  | ||||||
| 
 |  | ||||||
|   @param dsaparam    The DSA param DER encoded data |  | ||||||
|   @param dsaparamlen The length of dhparam data |  | ||||||
|   @param key         [out] the destination for the imported key |  | ||||||
|   @return CRYPT_OK if successful. |  | ||||||
| */ |  | ||||||
| int dsa_set_pqg_dsaparam(const unsigned char *dsaparam, unsigned long dsaparamlen, |  | ||||||
|                          dsa_key *key) |  | ||||||
| { |  | ||||||
|    int err; |  | ||||||
| 
 |  | ||||||
|    LTC_ARGCHK(dsaparam    != NULL); |  | ||||||
|    LTC_ARGCHK(key         != NULL); |  | ||||||
|    LTC_ARGCHK(ltc_mp.name != NULL); |  | ||||||
| 
 |  | ||||||
|    /* init key */ |  | ||||||
|    err = mp_init_multi(&key->p, &key->g, &key->q, &key->x, &key->y, NULL); |  | ||||||
|    if (err != CRYPT_OK) return err; |  | ||||||
| 
 |  | ||||||
|    if ((err = der_decode_sequence_multi(dsaparam, dsaparamlen, |  | ||||||
|                                         LTC_ASN1_INTEGER, 1UL, key->p, |  | ||||||
|                                         LTC_ASN1_INTEGER, 1UL, key->q, |  | ||||||
|                                         LTC_ASN1_INTEGER, 1UL, key->g, |  | ||||||
|                                         LTC_ASN1_EOL,     0UL, NULL)) != CRYPT_OK) { |  | ||||||
|       goto LBL_ERR; |  | ||||||
|    } |  | ||||||
| 
 |  | ||||||
|    key->qord = mp_unsigned_bin_size(key->q); |  | ||||||
| 
 |  | ||||||
|    if (key->qord >= LTC_MDSA_MAX_GROUP || key->qord <= 15 || |  | ||||||
|       (unsigned long)key->qord >= mp_unsigned_bin_size(key->p) || (mp_unsigned_bin_size(key->p) - key->qord) >= LTC_MDSA_DELTA) { |  | ||||||
|       err = CRYPT_INVALID_PACKET; |  | ||||||
|       goto LBL_ERR; |  | ||||||
|    } |  | ||||||
|    return CRYPT_OK; |  | ||||||
| 
 |  | ||||||
| LBL_ERR: |  | ||||||
|    dsa_free(key); |  | ||||||
|    return err; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /**
 | /**
 | ||||||
|   Import DSA public or private key from raw numbers |   Import DSA public or private key from raw numbers | ||||||
|   @param pub     DSA's y (public key) in binary representation |   @param pub     DSA's y (public key) in binary representation | ||||||
|  | |||||||
							
								
								
									
										63
									
								
								src/pk/dsa/dsa_set_pqg_dsaparam.c
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										63
									
								
								src/pk/dsa/dsa_set_pqg_dsaparam.c
									
									
									
									
									
										Executable file
									
								
							| @ -0,0 +1,63 @@ | |||||||
|  | /* LibTomCrypt, modular cryptographic library -- Tom St Denis
 | ||||||
|  |  * | ||||||
|  |  * LibTomCrypt is a library that provides various cryptographic | ||||||
|  |  * algorithms in a highly modular and flexible manner. | ||||||
|  |  * | ||||||
|  |  * The library is free for all purposes without any express | ||||||
|  |  * guarantee it works. | ||||||
|  |  */ | ||||||
|  | #include "tomcrypt.h" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | #ifdef LTC_MDSA | ||||||
|  | 
 | ||||||
|  | /**
 | ||||||
|  |   Import DSA's p, q & g from dsaparam | ||||||
|  | 
 | ||||||
|  |       dsaparam data: openssl dsaparam -outform DER -out dsaparam.der 2048 | ||||||
|  | 
 | ||||||
|  |   @param dsaparam    The DSA param DER encoded data | ||||||
|  |   @param dsaparamlen The length of dhparam data | ||||||
|  |   @param key         [out] the destination for the imported key | ||||||
|  |   @return CRYPT_OK if successful. | ||||||
|  | */ | ||||||
|  | int dsa_set_pqg_dsaparam(const unsigned char *dsaparam, unsigned long dsaparamlen, | ||||||
|  |                          dsa_key *key) | ||||||
|  | { | ||||||
|  |    int err; | ||||||
|  | 
 | ||||||
|  |    LTC_ARGCHK(dsaparam    != NULL); | ||||||
|  |    LTC_ARGCHK(key         != NULL); | ||||||
|  |    LTC_ARGCHK(ltc_mp.name != NULL); | ||||||
|  | 
 | ||||||
|  |    /* init key */ | ||||||
|  |    err = mp_init_multi(&key->p, &key->g, &key->q, &key->x, &key->y, NULL); | ||||||
|  |    if (err != CRYPT_OK) return err; | ||||||
|  | 
 | ||||||
|  |    if ((err = der_decode_sequence_multi(dsaparam, dsaparamlen, | ||||||
|  |                                         LTC_ASN1_INTEGER, 1UL, key->p, | ||||||
|  |                                         LTC_ASN1_INTEGER, 1UL, key->q, | ||||||
|  |                                         LTC_ASN1_INTEGER, 1UL, key->g, | ||||||
|  |                                         LTC_ASN1_EOL,     0UL, NULL)) != CRYPT_OK) { | ||||||
|  |       goto LBL_ERR; | ||||||
|  |    } | ||||||
|  | 
 | ||||||
|  |    key->qord = mp_unsigned_bin_size(key->q); | ||||||
|  | 
 | ||||||
|  |    if (key->qord >= LTC_MDSA_MAX_GROUP || key->qord <= 15 || | ||||||
|  |       (unsigned long)key->qord >= mp_unsigned_bin_size(key->p) || (mp_unsigned_bin_size(key->p) - key->qord) >= LTC_MDSA_DELTA) { | ||||||
|  |       err = CRYPT_INVALID_PACKET; | ||||||
|  |       goto LBL_ERR; | ||||||
|  |    } | ||||||
|  |    return CRYPT_OK; | ||||||
|  | 
 | ||||||
|  | LBL_ERR: | ||||||
|  |    dsa_free(key); | ||||||
|  |    return err; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | /* ref:         $Format:%D$ */ | ||||||
|  | /* git commit:  $Format:%H$ */ | ||||||
|  | /* commit time: $Format:%ai$ */ | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user