mkey.c (102644) | mkey.c (120945) |
---|---|
1/* 2 * Copyright (c) 2000 - 2002 Kungliga Tekniska H�gskolan 3 * (Royal Institute of Technology, Stockholm, Sweden). 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 22 unchanged lines hidden (view full) --- 31 * SUCH DAMAGE. 32 */ 33 34#include "hdb_locl.h" 35#ifndef O_BINARY 36#define O_BINARY 0 37#endif 38 | 1/* 2 * Copyright (c) 2000 - 2002 Kungliga Tekniska H�gskolan 3 * (Royal Institute of Technology, Stockholm, Sweden). 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 22 unchanged lines hidden (view full) --- 31 * SUCH DAMAGE. 32 */ 33 34#include "hdb_locl.h" 35#ifndef O_BINARY 36#define O_BINARY 0 37#endif 38 |
39RCSID("$Id: mkey.c,v 1.14 2002/08/16 18:59:49 assar Exp $"); | 39RCSID("$Id: mkey.c,v 1.15 2003/03/28 02:01:33 lha Exp $"); |
40 41struct hdb_master_key_data { 42 krb5_keytab_entry keytab; 43 krb5_crypto crypto; 44 struct hdb_master_key_data *next; 45}; 46 47void --- 324 unchanged lines hidden (view full) --- 372} 373 374krb5_error_code 375hdb_unseal_keys_mkey(krb5_context context, hdb_entry *ent, hdb_master_key mkey) 376{ 377 int i; 378 krb5_error_code ret; 379 krb5_data res; | 40 41struct hdb_master_key_data { 42 krb5_keytab_entry keytab; 43 krb5_crypto crypto; 44 struct hdb_master_key_data *next; 45}; 46 47void --- 324 unchanged lines hidden (view full) --- 372} 373 374krb5_error_code 375hdb_unseal_keys_mkey(krb5_context context, hdb_entry *ent, hdb_master_key mkey) 376{ 377 int i; 378 krb5_error_code ret; 379 krb5_data res; |
380 size_t keysize; |
|
380 Key *k; 381 382 for(i = 0; i < ent->keys.len; i++){ 383 hdb_master_key key; 384 385 k = &ent->keys.val[i]; 386 if(k->mkvno == NULL) 387 continue; --- 5 unchanged lines hidden (view full) --- 393 394 ret = krb5_decrypt(context, key->crypto, HDB_KU_MKEY, 395 k->key.keyvalue.data, 396 k->key.keyvalue.length, 397 &res); 398 if (ret) 399 return ret; 400 | 381 Key *k; 382 383 for(i = 0; i < ent->keys.len; i++){ 384 hdb_master_key key; 385 386 k = &ent->keys.val[i]; 387 if(k->mkvno == NULL) 388 continue; --- 5 unchanged lines hidden (view full) --- 394 395 ret = krb5_decrypt(context, key->crypto, HDB_KU_MKEY, 396 k->key.keyvalue.data, 397 k->key.keyvalue.length, 398 &res); 399 if (ret) 400 return ret; 401 |
402 /* fixup keylength if the key got padded when encrypting it */ 403 ret = krb5_enctype_keysize(context, k->key.keytype, &keysize); 404 if (ret) { 405 krb5_data_free(&res); 406 return ret; 407 } 408 if (keysize > res.length) { 409 krb5_data_free(&res); 410 return KRB5_BAD_KEYSIZE; 411 } 412 |
|
401 memset(k->key.keyvalue.data, 0, k->key.keyvalue.length); 402 free(k->key.keyvalue.data); 403 k->key.keyvalue = res; | 413 memset(k->key.keyvalue.data, 0, k->key.keyvalue.length); 414 free(k->key.keyvalue.data); 415 k->key.keyvalue = res; |
416 k->key.keyvalue.length = keysize; |
|
404 free(k->mkvno); 405 k->mkvno = NULL; 406 } 407 return 0; 408} 409 410krb5_error_code 411hdb_unseal_keys(krb5_context context, HDB *db, hdb_entry *ent) --- 101 unchanged lines hidden --- | 417 free(k->mkvno); 418 k->mkvno = NULL; 419 } 420 return 0; 421} 422 423krb5_error_code 424hdb_unseal_keys(krb5_context context, HDB *db, hdb_entry *ent) --- 101 unchanged lines hidden --- |