at least try to handle diffrent enveloped enctypes
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@13737 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
		
							
								
								
									
										27
									
								
								kdc/pkinit.c
									
									
									
									
									
								
							
							
						
						
									
										27
									
								
								kdc/pkinit.c
									
									
									
									
									
								
							| @@ -601,19 +601,16 @@ pk_mk_pa_reply_enckey(krb5_context context, | ||||
| { | ||||
|     KeyTransRecipientInfo *ri; | ||||
|     EnvelopedData ed; | ||||
|  | ||||
|     krb5_error_code ret; | ||||
|     krb5_crypto crypto; | ||||
|  | ||||
|     krb5_data buf, sd_data, enc_sd_data; | ||||
|  | ||||
|     krb5_keyblock tmp_key; | ||||
|     krb5_enctype enctype = ETYPE_DES3_CBC_NONE; | ||||
|     krb5_enctype enveloped_enctype; | ||||
|     heim_oid *enc_type_oid = NULL; | ||||
|     X509_NAME *issuer_name; | ||||
|     heim_integer *serial; | ||||
|  | ||||
|     size_t size; | ||||
|     int i; | ||||
|  | ||||
|     krb5_data_zero(&enc_sd_data); | ||||
|     krb5_data_zero(&sd_data); | ||||
| @@ -621,12 +618,26 @@ pk_mk_pa_reply_enckey(krb5_context context, | ||||
|     memset(&tmp_key, 0, sizeof(tmp_key)); | ||||
|     memset(&ed, 0, sizeof(ed)); | ||||
|  | ||||
|     switch (enctype) { | ||||
|     /* default to DES3 if client doesn't tell us */ | ||||
|     enveloped_enctype = ETYPE_DES3_CBC_NONE; | ||||
|  | ||||
|     for (i = 0; i < req->req_body.etype.len; i++) { | ||||
| 	switch(req->req_body.etype.val[i]) { | ||||
| 	case 15: /* des-ede3-cbc-Env-OID */ | ||||
| 	    enveloped_enctype = ETYPE_DES3_CBC_NONE;	     | ||||
| 	    break; | ||||
| 	default: | ||||
| 	    break; | ||||
| 	} | ||||
|     } | ||||
|  | ||||
|     switch (enveloped_enctype) { | ||||
|     case ETYPE_DES3_CBC_NONE: | ||||
| 	enc_type_oid = &heim_des_ede3_cbc_oid; | ||||
| 	break; | ||||
|     default: | ||||
| 	krb5_set_error_string(context, "not support for enctype %d", enctype); | ||||
| 	krb5_set_error_string(context, "not support for enctype %d", | ||||
| 			      enveloped_enctype); | ||||
| 	return KRB5_PROG_KEYTYPE_NOSUPP; | ||||
|     } | ||||
|  | ||||
| @@ -665,7 +676,7 @@ pk_mk_pa_reply_enckey(krb5_context context, | ||||
|     if (ret)  | ||||
| 	goto out; | ||||
|  | ||||
|     ret = krb5_generate_random_keyblock(context, enctype, &tmp_key); | ||||
|     ret = krb5_generate_random_keyblock(context, enveloped_enctype, &tmp_key); | ||||
|     if (ret) | ||||
| 	goto out; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Love Hörnquist Åstrand
					Love Hörnquist Åstrand