Deleted Added
full compact
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 ---