git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@1409 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
1997-03-14 03:14:33 +00:00
parent 9e0532dc57
commit f4ccbc3c92

63
lib/asn1/der_length.c Normal file
View File

@@ -0,0 +1,63 @@
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
RCSID("$Id$");
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#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;
}