1159d09a2SMark Phalan /*
2159d09a2SMark Phalan  * COPYRIGHT (c) 2006
3159d09a2SMark Phalan  * The Regents of the University of Michigan
4159d09a2SMark Phalan  * ALL RIGHTS RESERVED
5*55fea89dSDan Cross  *
6159d09a2SMark Phalan  * Permission is granted to use, copy, create derivative works
7159d09a2SMark Phalan  * and redistribute this software and such derivative works
8159d09a2SMark Phalan  * for any purpose, so long as the name of The University of
9159d09a2SMark Phalan  * Michigan is not used in any advertising or publicity
10159d09a2SMark Phalan  * pertaining to the use of distribution of this software
11159d09a2SMark Phalan  * without specific, written prior authorization.  If the
12159d09a2SMark Phalan  * above copyright notice or any other identification of the
13159d09a2SMark Phalan  * University of Michigan is included in any copy of any
14159d09a2SMark Phalan  * portion of this software, then the disclaimer below must
15159d09a2SMark Phalan  * also be included.
16*55fea89dSDan Cross  *
17159d09a2SMark Phalan  * THIS SOFTWARE IS PROVIDED AS IS, WITHOUT REPRESENTATION
18159d09a2SMark Phalan  * FROM THE UNIVERSITY OF MICHIGAN AS TO ITS FITNESS FOR ANY
19159d09a2SMark Phalan  * PURPOSE, AND WITHOUT WARRANTY BY THE UNIVERSITY OF
20159d09a2SMark Phalan  * MICHIGAN OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
21159d09a2SMark Phalan  * WITHOUT LIMITATION THE IMPLIED WARRANTIES OF
22159d09a2SMark Phalan  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
23159d09a2SMark Phalan  * REGENTS OF THE UNIVERSITY OF MICHIGAN SHALL NOT BE LIABLE
24159d09a2SMark Phalan  * FOR ANY DAMAGES, INCLUDING SPECIAL, INDIRECT, INCIDENTAL, OR
25159d09a2SMark Phalan  * CONSEQUENTIAL DAMAGES, WITH RESPECT TO ANY CLAIM ARISING
26159d09a2SMark Phalan  * OUT OF OR IN CONNECTION WITH THE USE OF THE SOFTWARE, EVEN
27159d09a2SMark Phalan  * IF IT HAS BEEN OR IS HEREAFTER ADVISED OF THE POSSIBILITY OF
28159d09a2SMark Phalan  * SUCH DAMAGES.
29159d09a2SMark Phalan  */
30159d09a2SMark Phalan 
31159d09a2SMark Phalan 
32159d09a2SMark Phalan #include "k5-int.h"
33159d09a2SMark Phalan #include "etypes.h"
34159d09a2SMark Phalan 
35159d09a2SMark Phalan /*
36159d09a2SMark Phalan  * keybytes is the number of bytes required as input to make a key,
37159d09a2SMark Phalan  * keylength is the length of the final key in bytes
38159d09a2SMark Phalan  */
39159d09a2SMark Phalan krb5_error_code KRB5_CALLCONV
krb5_c_keylengths(krb5_context context,krb5_enctype enctype,size_t * keybytes,size_t * keylength)40159d09a2SMark Phalan krb5_c_keylengths(krb5_context context, krb5_enctype enctype,
41159d09a2SMark Phalan 		  size_t *keybytes, size_t *keylength)
42159d09a2SMark Phalan {
43159d09a2SMark Phalan     int i;
44159d09a2SMark Phalan 
45159d09a2SMark Phalan     if (keybytes == NULL && keylength == NULL)
46159d09a2SMark Phalan 	return(EINVAL);
47159d09a2SMark Phalan 
48159d09a2SMark Phalan     for (i=0; i<krb5_enctypes_length; i++) {
49159d09a2SMark Phalan 	if (krb5_enctypes_list[i].etype == enctype)
50159d09a2SMark Phalan 	    break;
51159d09a2SMark Phalan     }
52159d09a2SMark Phalan 
53159d09a2SMark Phalan     if (i == krb5_enctypes_length)
54159d09a2SMark Phalan 	return(KRB5_BAD_ENCTYPE);
55159d09a2SMark Phalan 
56159d09a2SMark Phalan     if (keybytes)
57159d09a2SMark Phalan 	*keybytes = krb5_enctypes_list[i].enc->keybytes;
58159d09a2SMark Phalan     if (keylength)
59159d09a2SMark Phalan 	*keylength = krb5_enctypes_list[i].enc->keylength;
60159d09a2SMark Phalan 
61159d09a2SMark Phalan     return(0);
62159d09a2SMark Phalan }
63