1 /* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
3 * Copyright (C) 1998 by the FundsXpress, INC.
7 * Export of this software from the United States of America may require
8 * a specific license from the United States Government. It is the
9 * responsibility of any person or organization contemplating export to
10 * obtain such a license before exporting.
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 FundsXpress. not be used in advertising or publicity pertaining
18 * to distribution of the software without specific, written prior
19 * permission. FundsXpress makes no representations about the suitability of
20 * this software for any purpose. It is provided "as is" without express
21 * or implied warranty.
23 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
24 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
25 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
30 #include "cksumtypes.h"
33 is_keyed_for(const struct krb5_cksumtypes *ctp,
34 const struct krb5_keytypes *ktp)
36 if (ctp->flags & CKSUM_UNKEYED)
38 return (!ctp->enc || ktp->enc == ctp->enc);
41 krb5_error_code KRB5_CALLCONV
42 krb5_c_keyed_checksum_types(krb5_context context, krb5_enctype enctype,
43 unsigned int *count, krb5_cksumtype **cksumtypes)
45 unsigned int i, c, nctypes;
46 krb5_cksumtype *ctypes;
47 const struct krb5_cksumtypes *ctp;
48 const struct krb5_keytypes *ktp;
53 ktp = find_enctype(enctype);
55 return KRB5_BAD_ENCTYPE;
58 for (i = 0; i < krb5int_cksumtypes_length; i++) {
59 ctp = &krb5int_cksumtypes_list[i];
60 if (is_keyed_for(ctp, ktp))
64 ctypes = malloc(nctypes * sizeof(krb5_cksumtype));
69 for (i = 0; i < krb5int_cksumtypes_length; i++) {
70 ctp = &krb5int_cksumtypes_list[i];
71 if (is_keyed_for(ctp, ktp))
72 ctypes[c++] = ctp->ctype;
81 krb5_free_cksumtypes(krb5_context context, krb5_cksumtype *val)