-: 0:Source:make_checksum_iov.c -: 0:Graph:/var/tsitkova/Sources/v10/trunk/src/lib/crypto/krb/make_checksum_iov.so.gcno -: 0:Data:/var/tsitkova/Sources/v10/trunk/src/lib/crypto/krb/make_checksum_iov.so.gcda -: 0:Runs:1630 -: 0:Programs:1 -: 1:/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */ -: 2:/* lib/crypto/krb/make_checksum_iov.c */ -: 3:/* -: 4: * Copyright 2008 by the Massachusetts Institute of Technology. -: 5: * All Rights Reserved. -: 6: * -: 7: * Export of this software from the United States of America may -: 8: * require a specific license from the United States Government. -: 9: * It is the responsibility of any person or organization contemplating -: 10: * export to obtain such a license before exporting. -: 11: * -: 12: * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and -: 13: * distribute this software and its documentation for any purpose and -: 14: * without fee is hereby granted, provided that the above copyright -: 15: * notice appear in all copies and that both that copyright notice and -: 16: * this permission notice appear in supporting documentation, and that -: 17: * the name of M.I.T. not be used in advertising or publicity pertaining -: 18: * to distribution of the software without specific, written prior -: 19: * permission. Furthermore if you modify this software you must label -: 20: * your software as modified software and not distribute it in such a -: 21: * fashion that it might be confused with the original M.I.T. software. -: 22: * M.I.T. makes no representations about the suitability of -: 23: * this software for any purpose. It is provided "as is" without express -: 24: * or implied warranty. -: 25: */ -: 26: -: 27:#include "crypto_int.h" -: 28: -: 29:krb5_error_code KRB5_CALLCONV 66: 30:krb5_k_make_checksum_iov(krb5_context context, -: 31: krb5_cksumtype cksumtype, -: 32: krb5_key key, -: 33: krb5_keyusage usage, -: 34: krb5_crypto_iov *data, -: 35: size_t num_data) -: 36:{ -: 37: krb5_error_code ret; -: 38: krb5_data cksum_data; -: 39: krb5_crypto_iov *checksum; -: 40: const struct krb5_cksumtypes *ctp; -: 41: 66: 42: if (cksumtype == 0) { #####: 43: ret = krb5int_c_mandatory_cksumtype(context, key->keyblock.enctype, -: 44: &cksumtype); #####: 45: if (ret != 0) #####: 46: return ret; -: 47: } 66: 48: ctp = find_cksumtype(cksumtype); 66: 49: if (ctp == NULL) #####: 50: return KRB5_BAD_ENCTYPE; -: 51: 66: 52: ret = verify_key(ctp, key); 66: 53: if (ret != 0) #####: 54: return ret; -: 55: 66: 56: checksum = krb5int_c_locate_iov(data, num_data, KRB5_CRYPTO_TYPE_CHECKSUM); 66: 57: if (checksum == NULL || checksum->data.length < ctp->output_size) #####: 58: return(KRB5_BAD_MSIZE); -: 59: 66: 60: ret = alloc_data(&cksum_data, ctp->compute_size); 66: 61: if (ret != 0) #####: 62: return ret; -: 63: 66: 64: ret = ctp->checksum(ctp, key, usage, data, num_data, &cksum_data); 66: 65: if (ret != 0) #####: 66: goto cleanup; -: 67: 66: 68: memcpy(checksum->data.data, cksum_data.data, ctp->output_size); 66: 69: checksum->data.length = ctp->output_size; -: 70: -: 71:cleanup: 66: 72: zapfree(cksum_data.data, ctp->compute_size); 66: 73: return ret; -: 74:} -: 75: -: 76:krb5_error_code KRB5_CALLCONV 18: 77:krb5_c_make_checksum_iov(krb5_context context, -: 78: krb5_cksumtype cksumtype, -: 79: const krb5_keyblock *keyblock, -: 80: krb5_keyusage usage, -: 81: krb5_crypto_iov *data, -: 82: size_t num_data) -: 83:{ -: 84: krb5_key key; -: 85: krb5_error_code ret; -: 86: 18: 87: ret = krb5_k_create_key(context, keyblock, &key); 18: 88: if (ret != 0) #####: 89: return ret; 18: 90: ret = krb5_k_make_checksum_iov(context, cksumtype, key, usage, -: 91: data, num_data); 18: 92: krb5_k_free_key(context, key); 18: 93: return ret; -: 94:}