1*7934SMark.Phalan@Sun.COM /*
2*7934SMark.Phalan@Sun.COM * COPYRIGHT (c) 2006
3*7934SMark.Phalan@Sun.COM * The Regents of the University of Michigan
4*7934SMark.Phalan@Sun.COM * ALL RIGHTS RESERVED
5*7934SMark.Phalan@Sun.COM *
6*7934SMark.Phalan@Sun.COM * Permission is granted to use, copy, create derivative works
7*7934SMark.Phalan@Sun.COM * and redistribute this software and such derivative works
8*7934SMark.Phalan@Sun.COM * for any purpose, so long as the name of The University of
9*7934SMark.Phalan@Sun.COM * Michigan is not used in any advertising or publicity
10*7934SMark.Phalan@Sun.COM * pertaining to the use of distribution of this software
11*7934SMark.Phalan@Sun.COM * without specific, written prior authorization. If the
12*7934SMark.Phalan@Sun.COM * above copyright notice or any other identification of the
13*7934SMark.Phalan@Sun.COM * University of Michigan is included in any copy of any
14*7934SMark.Phalan@Sun.COM * portion of this software, then the disclaimer below must
15*7934SMark.Phalan@Sun.COM * also be included.
16*7934SMark.Phalan@Sun.COM *
17*7934SMark.Phalan@Sun.COM * THIS SOFTWARE IS PROVIDED AS IS, WITHOUT REPRESENTATION
18*7934SMark.Phalan@Sun.COM * FROM THE UNIVERSITY OF MICHIGAN AS TO ITS FITNESS FOR ANY
19*7934SMark.Phalan@Sun.COM * PURPOSE, AND WITHOUT WARRANTY BY THE UNIVERSITY OF
20*7934SMark.Phalan@Sun.COM * MICHIGAN OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
21*7934SMark.Phalan@Sun.COM * WITHOUT LIMITATION THE IMPLIED WARRANTIES OF
22*7934SMark.Phalan@Sun.COM * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
23*7934SMark.Phalan@Sun.COM * REGENTS OF THE UNIVERSITY OF MICHIGAN SHALL NOT BE LIABLE
24*7934SMark.Phalan@Sun.COM * FOR ANY DAMAGES, INCLUDING SPECIAL, INDIRECT, INCIDENTAL, OR
25*7934SMark.Phalan@Sun.COM * CONSEQUENTIAL DAMAGES, WITH RESPECT TO ANY CLAIM ARISING
26*7934SMark.Phalan@Sun.COM * OUT OF OR IN CONNECTION WITH THE USE OF THE SOFTWARE, EVEN
27*7934SMark.Phalan@Sun.COM * IF IT HAS BEEN OR IS HEREAFTER ADVISED OF THE POSSIBILITY OF
28*7934SMark.Phalan@Sun.COM * SUCH DAMAGES.
29*7934SMark.Phalan@Sun.COM */
30*7934SMark.Phalan@Sun.COM
31*7934SMark.Phalan@Sun.COM
32*7934SMark.Phalan@Sun.COM #include "k5-int.h"
33*7934SMark.Phalan@Sun.COM #include "etypes.h"
34*7934SMark.Phalan@Sun.COM
35*7934SMark.Phalan@Sun.COM /*
36*7934SMark.Phalan@Sun.COM * keybytes is the number of bytes required as input to make a key,
37*7934SMark.Phalan@Sun.COM * keylength is the length of the final key in bytes
38*7934SMark.Phalan@Sun.COM */
39*7934SMark.Phalan@Sun.COM krb5_error_code KRB5_CALLCONV
krb5_c_keylengths(krb5_context context,krb5_enctype enctype,size_t * keybytes,size_t * keylength)40*7934SMark.Phalan@Sun.COM krb5_c_keylengths(krb5_context context, krb5_enctype enctype,
41*7934SMark.Phalan@Sun.COM size_t *keybytes, size_t *keylength)
42*7934SMark.Phalan@Sun.COM {
43*7934SMark.Phalan@Sun.COM int i;
44*7934SMark.Phalan@Sun.COM
45*7934SMark.Phalan@Sun.COM if (keybytes == NULL && keylength == NULL)
46*7934SMark.Phalan@Sun.COM return(EINVAL);
47*7934SMark.Phalan@Sun.COM
48*7934SMark.Phalan@Sun.COM for (i=0; i<krb5_enctypes_length; i++) {
49*7934SMark.Phalan@Sun.COM if (krb5_enctypes_list[i].etype == enctype)
50*7934SMark.Phalan@Sun.COM break;
51*7934SMark.Phalan@Sun.COM }
52*7934SMark.Phalan@Sun.COM
53*7934SMark.Phalan@Sun.COM if (i == krb5_enctypes_length)
54*7934SMark.Phalan@Sun.COM return(KRB5_BAD_ENCTYPE);
55*7934SMark.Phalan@Sun.COM
56*7934SMark.Phalan@Sun.COM if (keybytes)
57*7934SMark.Phalan@Sun.COM *keybytes = krb5_enctypes_list[i].enc->keybytes;
58*7934SMark.Phalan@Sun.COM if (keylength)
59*7934SMark.Phalan@Sun.COM *keylength = krb5_enctypes_list[i].enc->keylength;
60*7934SMark.Phalan@Sun.COM
61*7934SMark.Phalan@Sun.COM return(0);
62*7934SMark.Phalan@Sun.COM }
63