Changeset 745 for trunk/server/source4/heimdal/kdc/kx509.c
- Timestamp:
- Nov 27, 2012, 4:43:17 PM (13 years ago)
- Location:
- trunk/server
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/server
- Property svn:mergeinfo changed
/vendor/current merged: 581,587,591,594,597,600,615,618,740
- Property svn:mergeinfo changed
-
trunk/server/source4/heimdal/kdc/kx509.c
r414 r745 144 144 krb5_data *certificate) 145 145 { 146 hx509_context hxctx = NULL;147 146 hx509_ca_tbs tbs = NULL; 148 147 hx509_env env = NULL; … … 156 155 } 157 156 158 ret = hx509_context_init(&hxctx); 159 if (ret) 160 goto out; 161 162 ret = hx509_env_add(hxctx, &env, "principal-name", 157 ret = hx509_env_add(context->hx509ctx, &env, "principal-name", 163 158 krb5_principal_get_comp_string(context, principal, 0)); 164 159 if (ret) … … 169 164 hx509_query *q; 170 165 171 ret = hx509_certs_init( hxctx, config->kx509_ca, 0,166 ret = hx509_certs_init(context->hx509ctx, config->kx509_ca, 0, 172 167 NULL, &certs); 173 168 if (ret) { … … 176 171 goto out; 177 172 } 178 ret = hx509_query_alloc( hxctx, &q);173 ret = hx509_query_alloc(context->hx509ctx, &q); 179 174 if (ret) { 180 175 hx509_certs_free(&certs); … … 185 180 hx509_query_match_option(q, HX509_QUERY_OPTION_KU_KEYCERTSIGN); 186 181 187 ret = hx509_certs_find( hxctx, certs, q, &signer);188 hx509_query_free( hxctx, q);182 ret = hx509_certs_find(context->hx509ctx, certs, q, &signer); 183 hx509_query_free(context->hx509ctx, q); 189 184 hx509_certs_free(&certs); 190 185 if (ret) { … … 195 190 } 196 191 197 ret = hx509_ca_tbs_init( hxctx, &tbs);192 ret = hx509_ca_tbs_init(context->hx509ctx, &tbs); 198 193 if (ret) 199 194 goto out; … … 215 210 spki.algorithm.parameters = &any; 216 211 217 ret = hx509_ca_tbs_set_spki( hxctx, tbs, &spki);212 ret = hx509_ca_tbs_set_spki(context->hx509ctx, tbs, &spki); 218 213 der_free_oid(&spki.algorithm.algorithm); 219 214 if (ret) … … 225 220 hx509_cert template; 226 221 227 ret = hx509_certs_init( hxctx, config->kx509_template, 0,222 ret = hx509_certs_init(context->hx509ctx, config->kx509_template, 0, 228 223 NULL, &certs); 229 224 if (ret) { … … 232 227 goto out; 233 228 } 234 ret = hx509_get_one_cert( hxctx, certs, &template);229 ret = hx509_get_one_cert(context->hx509ctx, certs, &template); 235 230 hx509_certs_free(&certs); 236 231 if (ret) { … … 239 234 goto out; 240 235 } 241 ret = hx509_ca_tbs_set_template( hxctx, tbs,236 ret = hx509_ca_tbs_set_template(context->hx509ctx, tbs, 242 237 HX509_CA_TEMPLATE_SUBJECT| 243 238 HX509_CA_TEMPLATE_KU| … … 249 244 } 250 245 251 hx509_ca_tbs_set_notAfter( hxctx, tbs, endtime);252 253 hx509_ca_tbs_subject_expand( hxctx, tbs, env);246 hx509_ca_tbs_set_notAfter(context->hx509ctx, tbs, endtime); 247 248 hx509_ca_tbs_subject_expand(context->hx509ctx, tbs, env); 254 249 hx509_env_free(&env); 255 250 256 ret = hx509_ca_sign( hxctx, tbs, signer, &cert);251 ret = hx509_ca_sign(context->hx509ctx, tbs, signer, &cert); 257 252 hx509_cert_free(signer); 258 253 if (ret) … … 261 256 hx509_ca_tbs_free(&tbs); 262 257 263 ret = hx509_cert_binary( hxctx, cert, certificate);258 ret = hx509_cert_binary(context->hx509ctx, cert, certificate); 264 259 hx509_cert_free(cert); 265 260 if (ret) 266 261 goto out; 267 262 268 hx509_context_free(&hxctx);269 270 263 return 0; 271 264 out: … … 276 269 if (signer) 277 270 hx509_cert_free(signer); 278 if (hxctx)279 hx509_context_free(&hxctx);280 271 krb5_set_error_message(context, ret, "cert creation failed"); 281 272 return ret; … … 355 346 krb5_free_principal(context, principal); 356 347 if (ret != TRUE) { 348 char *expected, *used; 349 350 ret = krb5_unparse_name(context, sprincipal, &expected); 351 if (ret) 352 goto out; 353 ret = krb5_unparse_name(context, principal, &used); 354 if (ret) { 355 krb5_xfree(expected); 356 goto out; 357 } 358 357 359 ret = KRB5KDC_ERR_SERVER_NOMATCH; 358 360 krb5_set_error_message(context, ret, 359 "User %s used wrong Kx509 service principal", 360 cname); 361 "User %s used wrong Kx509 service " 362 "principal, expected: %s, used %s", 363 cname, expected, used); 364 krb5_xfree(expected); 365 krb5_xfree(used); 361 366 goto out; 362 367 }
Note:
See TracChangeset
for help on using the changeset viewer.