Add public function to get keylenth associated with an enctype
authorKevin Coffman <kwc@citi.umich.edu>
Thu, 9 Nov 2006 20:15:54 +0000 (20:15 +0000)
committerKevin Coffman <kwc@citi.umich.edu>
Thu, 9 Nov 2006 20:15:54 +0000 (20:15 +0000)
Add a new function, krb5_c_keylength, to libk5crypto to obtain the
keylength associated with an enctype.

ticket: new
Tags: pullup

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@18789 dc483132-0cff-0310-8789-dd5450dbe970

src/include/krb5/krb5.hin
src/lib/crypto/Makefile.in
src/lib/crypto/keylength.c [new file with mode: 0644]
src/lib/crypto/libk5crypto.exports

index 081a43ffc259509c753f3a1a58e2273085bc6980..42d141ee3e9b2dcd257e180ea1c879010e2bd64e 100644 (file)
@@ -436,6 +436,11 @@ krb5_error_code KRB5_CALLCONV
     (krb5_context context, krb5_enctype enctype,
                    size_t *blocksize);
 
+krb5_error_code KRB5_CALLCONV
+    krb5_c_keylength
+    (krb5_context context, krb5_enctype enctype,
+                   size_t *keylength);
+
 krb5_error_code KRB5_CALLCONV
        krb5_c_init_state
 (krb5_context context,
index 9ee074376efd9e922da74afaf159a956a91c4b9b..71928d057332cbc0cb2ec5e053b557e1081faf91 100644 (file)
@@ -52,6 +52,7 @@ STLIBOBJS=\
        keyblocks.o \
        keyed_cksum.o           \
        keyed_checksum_types.o  \
+       keylength.o             \
        make_checksum.o         \
        make_random_key.o       \
        mandatory_sumtype.o     \
@@ -87,6 +88,7 @@ OBJS=\
        $(OUTPRE)keyblocks.$(OBJEXT) \
        $(OUTPRE)keyed_cksum.$(OBJEXT)          \
        $(OUTPRE)keyed_checksum_types.$(OBJEXT) \
+       $(OUTPRE)keylength.$(OBJEXT)    \
        $(OUTPRE)make_checksum.$(OBJEXT)        \
        $(OUTPRE)make_random_key.$(OBJEXT)      \
        $(OUTPRE)mandatory_sumtype.$(OBJEXT)    \
@@ -122,6 +124,7 @@ SRCS=\
        $(srcdir)/keyblocks.c \
        $(srcdir)/keyed_cksum.c         \
        $(srcdir)/keyed_checksum_types.c\
+       $(srcdir)/keylength.c           \
        $(srcdir)/make_checksum.c       \
        $(srcdir)/make_random_key.c     \
        $(srcdir)/mandatory_sumtype.c   \
@@ -524,6 +527,15 @@ keyed_checksum_types.so keyed_checksum_types.po $(OUTPRE)keyed_checksum_types.$(
   $(SRCTOP)/include/krb5/locate_plugin.h $(SRCTOP)/include/krb5/preauth_plugin.h \
   $(SRCTOP)/include/port-sockets.h $(SRCTOP)/include/socket-utils.h \
   cksumtypes.h etypes.h keyed_checksum_types.c
+keylength.so keylength.po $(OUTPRE)keylength.$(OBJEXT): \
+  $(BUILDTOP)/include/autoconf.h $(BUILDTOP)/include/krb5/krb5.h \
+  $(BUILDTOP)/include/osconf.h $(BUILDTOP)/include/profile.h \
+  $(COM_ERR_DEPS) $(SRCTOP)/include/k5-err.h $(SRCTOP)/include/k5-int.h \
+  $(SRCTOP)/include/k5-platform.h $(SRCTOP)/include/k5-plugin.h \
+  $(SRCTOP)/include/k5-thread.h $(SRCTOP)/include/krb5.h \
+  $(SRCTOP)/include/krb5/locate_plugin.h $(SRCTOP)/include/krb5/preauth_plugin.h \
+  $(SRCTOP)/include/port-sockets.h $(SRCTOP)/include/socket-utils.h \
+  etypes.h keylength.c
 make_checksum.so make_checksum.po $(OUTPRE)make_checksum.$(OBJEXT): \
   $(BUILDTOP)/include/autoconf.h $(BUILDTOP)/include/krb5/krb5.h \
   $(BUILDTOP)/include/osconf.h $(BUILDTOP)/include/profile.h \
diff --git a/src/lib/crypto/keylength.c b/src/lib/crypto/keylength.c
new file mode 100644 (file)
index 0000000..0b2a854
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * COPYRIGHT (c) 2006
+ * The Regents of the University of Michigan
+ * ALL RIGHTS RESERVED
+ * 
+ * Permission is granted to use, copy, create derivative works
+ * and redistribute this software and such derivative works
+ * for any purpose, so long as the name of The University of
+ * Michigan is not used in any advertising or publicity
+ * pertaining to the use of distribution of this software
+ * without specific, written prior authorization.  If the
+ * above copyright notice or any other identification of the
+ * University of Michigan is included in any copy of any
+ * portion of this software, then the disclaimer below must
+ * also be included.
+ * 
+ * THIS SOFTWARE IS PROVIDED AS IS, WITHOUT REPRESENTATION
+ * FROM THE UNIVERSITY OF MICHIGAN AS TO ITS FITNESS FOR ANY
+ * PURPOSE, AND WITHOUT WARRANTY BY THE UNIVERSITY OF
+ * MICHIGAN OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
+ * WITHOUT LIMITATION THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
+ * REGENTS OF THE UNIVERSITY OF MICHIGAN SHALL NOT BE LIABLE
+ * FOR ANY DAMAGES, INCLUDING SPECIAL, INDIRECT, INCIDENTAL, OR
+ * CONSEQUENTIAL DAMAGES, WITH RESPECT TO ANY CLAIM ARISING
+ * OUT OF OR IN CONNECTION WITH THE USE OF THE SOFTWARE, EVEN
+ * IF IT HAS BEEN OR IS HEREAFTER ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGES.
+ */
+
+#include "k5-int.h"
+#include "etypes.h"
+
+krb5_error_code KRB5_CALLCONV
+krb5_c_keylength(krb5_context context, krb5_enctype enctype,
+                 size_t *keylength)
+{
+    int i;
+
+    if (keylength == NULL)
+       return(EINVAL);
+
+    for (i=0; i<krb5_enctypes_length; i++) {
+       if (krb5_enctypes_list[i].etype == enctype)
+           break;
+    }
+
+    if (i == krb5_enctypes_length)
+       return(KRB5_BAD_ENCTYPE);
+
+    *keylength = krb5_enctypes_list[i].enc->keylength;
+
+    return(0);
+}
index b06f2e427bd49d876a75eab0f2bc00efeb955275..1f7dc32156009de72ae4c35a354fdd1e773db3d9 100644 (file)
@@ -23,6 +23,7 @@ krb5_c_init_state
 krb5_c_is_coll_proof_cksum
 krb5_c_is_keyed_cksum
 krb5_c_keyed_checksum_types
+krb5_c_keylength
 krb5_c_make_checksum
 krb5_c_make_random_key
 krb5_c_prf