From f4ccbc3c92a5585d3c202a8ce00cfb62dd1c97d6 Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Fri, 14 Mar 1997 03:14:33 +0000 Subject: [PATCH] new file git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@1409 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/asn1/der_length.c | 63 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 lib/asn1/der_length.c diff --git a/lib/asn1/der_length.c b/lib/asn1/der_length.c new file mode 100644 index 000000000..b02e0d818 --- /dev/null +++ b/lib/asn1/der_length.c @@ -0,0 +1,63 @@ +#ifdef HAVE_CONFIG_H +#include +#endif +RCSID("$Id$"); +#include +#include +#include +#include "der.h" + +static size_t +length_int (unsigned val) +{ + size_t ret = 0; + + do { + ++ret; + val /= 256; + } while (val); + return ret; +} + +size_t +length_len (int len) +{ + if (len < 128) + return 1; + else + return length_int (len) + 1; +} + +size_t +length_integer (unsigned *data) +{ + size_t len = length_int (*data); + + return 1 + length_len(len) + len; +} + +size_t +length_general_string (char **data) +{ + char *str = *data; + size_t len = strlen(str); + return 1 + length_len(len) + len; +} + +size_t +length_octet_string (krb5_data *k) +{ + return 1 + length_len(k->len) + k->len; +} + +size_t +length_generalized_time (time_t *t) +{ + krb5_data k; + size_t ret; + + time2generalizedtime (*t, &k); + ret = 1 + length_len(k.len) + k.len; + free (k.data); + return ret; +}