krb5_data -> octet_string, char * -> general_string
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@1873 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -1,8 +1,7 @@
|
||||
/* $Id$ */
|
||||
|
||||
#ifndef DER_H
|
||||
|
||||
#define DER_H
|
||||
#ifndef __DER_H__
|
||||
#define __DER_H__
|
||||
|
||||
#include <time.h>
|
||||
|
||||
@@ -27,27 +26,14 @@ enum {
|
||||
UT_GeneralString = 27
|
||||
};
|
||||
|
||||
/**/
|
||||
|
||||
struct krb5_data {
|
||||
size_t len;
|
||||
unsigned char *data;
|
||||
};
|
||||
|
||||
typedef struct krb5_data krb5_data;
|
||||
|
||||
time_t timegm (struct tm *);
|
||||
|
||||
void time2generalizedtime (time_t t, krb5_data *s);
|
||||
|
||||
krb5_data string_make (char *);
|
||||
krb5_data string_make_n (int len, char *);
|
||||
void string_free (krb5_data);
|
||||
void time2generalizedtime (time_t t, octet_string *s);
|
||||
|
||||
int der_get_int (unsigned char *p, int len, unsigned *ret);
|
||||
int der_get_length (unsigned char *p, int len, int *ret);
|
||||
int der_get_general_string (unsigned char *p, int len, char **str);
|
||||
int der_get_octet_string (unsigned char *p, int len, krb5_data *data);
|
||||
int der_get_general_string (unsigned char *p, int len, general_string *str);
|
||||
int der_get_octet_string (unsigned char *p, int len, octet_string *data);
|
||||
int der_get_tag (unsigned char *p, int len,
|
||||
Der_class *class, Der_type *type, int *tag);
|
||||
int der_match_tag (unsigned char *p, int len,
|
||||
@@ -56,33 +42,38 @@ int der_match_tag_and_length (unsigned char *p, int len,
|
||||
Der_class class, Der_type type, int tag,
|
||||
int *length_ret);
|
||||
int decode_integer (unsigned char *p, int len, unsigned *num);
|
||||
int decode_general_string (unsigned char *p, int len, char **str);
|
||||
int decode_octet_string (unsigned char *p, int len, krb5_data *k);
|
||||
int decode_general_string (unsigned char *p, int len, general_string *str);
|
||||
int decode_octet_string (unsigned char *p, int len, octet_string *k);
|
||||
int decode_generalized_time (unsigned char *p, int len, time_t *t);
|
||||
|
||||
|
||||
int der_put_int (unsigned char *p, int len, unsigned val);
|
||||
int der_put_length (unsigned char *p, int len, int val);
|
||||
int der_put_general_string (unsigned char *p, int len, char *str);
|
||||
int der_put_octet_string (unsigned char *p, int len, krb5_data *data);
|
||||
int der_put_general_string (unsigned char *p, int len, general_string *str);
|
||||
int der_put_octet_string (unsigned char *p, int len, octet_string *data);
|
||||
int der_put_tag (unsigned char *p, int len, Der_class class, Der_type type,
|
||||
int tag);
|
||||
int der_put_length_and_tag (unsigned char *p, int len, int len_val,
|
||||
Der_class class, Der_type type, int tag);
|
||||
int encode_integer (unsigned char *p, int len, unsigned *data);
|
||||
int encode_general_string (unsigned char *p, int len, char **data);
|
||||
int encode_octet_string (unsigned char *p, int len, krb5_data *k);
|
||||
int encode_general_string (unsigned char *p, int len, general_string *data);
|
||||
int encode_octet_string (unsigned char *p, int len, octet_string *k);
|
||||
int encode_generalized_time (unsigned char *p, int len, time_t *t);
|
||||
|
||||
void free_integer (unsigned *num);
|
||||
void free_general_string (char **str);
|
||||
void free_octet_string (krb5_data *k);
|
||||
void free_general_string (general_string *str);
|
||||
void free_octet_string (octet_string *k);
|
||||
void free_generalized_time (time_t *t);
|
||||
|
||||
size_t length_len (int len);
|
||||
size_t length_integer (unsigned *data);
|
||||
size_t length_general_string (char **data);
|
||||
size_t length_octet_string (krb5_data *k);
|
||||
size_t length_general_string (general_string *data);
|
||||
size_t length_octet_string (octet_string *k);
|
||||
size_t length_generalized_time (time_t *t);
|
||||
|
||||
#endif /* DER_H */
|
||||
void copy_general_string (general_string *from, general_string *to);
|
||||
void copy_octet_string (octet_string *from, octet_string *to);
|
||||
|
||||
int fix_dce(int reallen, int *len);
|
||||
|
||||
#endif /* __DER_H__ */
|
||||
|
@@ -1,18 +1,18 @@
|
||||
#include "asn1_locl.h"
|
||||
#include "libasn1.h"
|
||||
|
||||
RCSID("$Id$");
|
||||
|
||||
void
|
||||
copy_general_string (char **from, char **to)
|
||||
copy_general_string (general_string *from, general_string *to)
|
||||
{
|
||||
*to = malloc(strlen(*from) + 1);
|
||||
strcpy(*to, *from);
|
||||
}
|
||||
|
||||
void
|
||||
copy_octet_string (krb5_data *from, krb5_data *to)
|
||||
copy_octet_string (octet_string *from, octet_string *to)
|
||||
{
|
||||
to->len = from->len;
|
||||
to->data = malloc(to->len);
|
||||
memcpy(to->data, from->data, to->len);
|
||||
to->length = from->length;
|
||||
to->data = malloc(to->length);
|
||||
memcpy(to->data, from->data, to->length);
|
||||
}
|
||||
|
@@ -1,15 +1,15 @@
|
||||
#include "asn1_locl.h"
|
||||
#include "libasn1.h"
|
||||
|
||||
RCSID("$Id$");
|
||||
|
||||
void
|
||||
free_general_string (char **str)
|
||||
free_general_string (general_string *str)
|
||||
{
|
||||
free(*str);
|
||||
}
|
||||
|
||||
void
|
||||
free_octet_string (krb5_data *k)
|
||||
free_octet_string (octet_string *k)
|
||||
{
|
||||
free(k->data);
|
||||
}
|
||||
|
@@ -1,4 +1,4 @@
|
||||
#include "asn1_locl.h"
|
||||
#include "libasn1.h"
|
||||
|
||||
RCSID("$Id$");
|
||||
|
||||
@@ -49,7 +49,7 @@ der_get_length (unsigned char *p, int len, int *ret)
|
||||
}
|
||||
|
||||
int
|
||||
der_get_general_string (unsigned char *p, int len, char **str)
|
||||
der_get_general_string (unsigned char *p, int len, general_string *str)
|
||||
{
|
||||
int l, slen;
|
||||
char *s;
|
||||
@@ -71,7 +71,7 @@ der_get_general_string (unsigned char *p, int len, char **str)
|
||||
}
|
||||
|
||||
int
|
||||
der_get_octet_string (unsigned char *p, int len, krb5_data *data)
|
||||
der_get_octet_string (unsigned char *p, int len, octet_string *data)
|
||||
{
|
||||
int l, slen;
|
||||
|
||||
@@ -82,9 +82,9 @@ der_get_octet_string (unsigned char *p, int len, krb5_data *data)
|
||||
len -= l;
|
||||
if (len < slen)
|
||||
return -1;
|
||||
data->len = slen;
|
||||
data->length = slen;
|
||||
data->data = malloc(slen);
|
||||
if (data->data == NULL && data->len != 0)
|
||||
if (data->data == NULL && data->length != 0)
|
||||
return -1;
|
||||
memcpy (data->data, p, slen);
|
||||
return slen + l;
|
||||
@@ -171,7 +171,7 @@ decode_integer (unsigned char *p, int len, unsigned *num)
|
||||
}
|
||||
|
||||
int
|
||||
decode_general_string (unsigned char *p, int len, char **str)
|
||||
decode_general_string (unsigned char *p, int len, general_string *str)
|
||||
{
|
||||
int ret = 0;
|
||||
int l;
|
||||
@@ -192,7 +192,7 @@ decode_general_string (unsigned char *p, int len, char **str)
|
||||
}
|
||||
|
||||
int
|
||||
decode_octet_string (unsigned char *p, int len, krb5_data *k)
|
||||
decode_octet_string (unsigned char *p, int len, octet_string *k)
|
||||
{
|
||||
int ret = 0;
|
||||
int l;
|
||||
@@ -228,7 +228,7 @@ generalizedtime2time (char *s, time_t *t)
|
||||
int
|
||||
decode_generalized_time (unsigned char *p, int len, time_t *t)
|
||||
{
|
||||
krb5_data k;
|
||||
octet_string k;
|
||||
char times[32]; /* XXX */
|
||||
int ret = 0;
|
||||
int l;
|
||||
@@ -245,8 +245,8 @@ decode_generalized_time (unsigned char *p, int len, time_t *t)
|
||||
p += l;
|
||||
len -= l;
|
||||
ret += l;
|
||||
strncpy(times, (char*)k.data, k.len);
|
||||
times[k.len] = 0;
|
||||
strncpy(times, (char*)k.data, k.length);
|
||||
times[k.length] = 0;
|
||||
generalizedtime2time (times, t);
|
||||
free (k.data);
|
||||
return ret;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
#include "asn1_locl.h"
|
||||
#include "libasn1.h"
|
||||
|
||||
RCSID("$Id$");
|
||||
|
||||
@@ -32,7 +32,7 @@ length_integer (unsigned *data)
|
||||
}
|
||||
|
||||
size_t
|
||||
length_general_string (char **data)
|
||||
length_general_string (general_string *data)
|
||||
{
|
||||
char *str = *data;
|
||||
size_t len = strlen(str);
|
||||
@@ -40,19 +40,19 @@ length_general_string (char **data)
|
||||
}
|
||||
|
||||
size_t
|
||||
length_octet_string (krb5_data *k)
|
||||
length_octet_string (octet_string *k)
|
||||
{
|
||||
return 1 + length_len(k->len) + k->len;
|
||||
return 1 + length_len(k->length) + k->length;
|
||||
}
|
||||
|
||||
size_t
|
||||
length_generalized_time (time_t *t)
|
||||
{
|
||||
krb5_data k;
|
||||
octet_string k;
|
||||
size_t ret;
|
||||
|
||||
time2generalizedtime (*t, &k);
|
||||
ret = 1 + length_len(k.len) + k.len;
|
||||
ret = 1 + length_len(k.length) + k.length;
|
||||
free (k.data);
|
||||
return ret;
|
||||
}
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/* $Id$ */
|
||||
|
||||
#include "asn1_locl.h"
|
||||
#include "libasn1.h"
|
||||
|
||||
RCSID("$Id$");
|
||||
|
||||
@@ -57,16 +57,16 @@ der_put_length (unsigned char *p, int len, int val)
|
||||
}
|
||||
|
||||
int
|
||||
der_put_general_string (unsigned char *p, int len, char *str)
|
||||
der_put_general_string (unsigned char *p, int len, general_string *str)
|
||||
{
|
||||
int slen = strlen(str);
|
||||
int slen = strlen(*str);
|
||||
int l;
|
||||
|
||||
if (len < slen)
|
||||
return -1;
|
||||
p -= slen;
|
||||
len -= slen;
|
||||
memcpy (p+1, str, slen);
|
||||
memcpy (p+1, *str, slen);
|
||||
l = der_put_length (p, len, slen);
|
||||
if(l < 0)
|
||||
return l;
|
||||
@@ -74,19 +74,19 @@ der_put_general_string (unsigned char *p, int len, char *str)
|
||||
}
|
||||
|
||||
int
|
||||
der_put_octet_string (unsigned char *p, int len, krb5_data *data)
|
||||
der_put_octet_string (unsigned char *p, int len, octet_string *data)
|
||||
{
|
||||
int l;
|
||||
|
||||
if (len < data->len)
|
||||
if (len < data->length)
|
||||
return -1;
|
||||
p -= data->len;
|
||||
len -= data->len;
|
||||
memcpy (p+1, data->data, data->len);
|
||||
l = der_put_length (p, len, data->len);
|
||||
p -= data->length;
|
||||
len -= data->length;
|
||||
memcpy (p+1, data->data, data->length);
|
||||
l = der_put_length (p, len, data->length);
|
||||
if (l < 0)
|
||||
return l;
|
||||
return l + data->len;
|
||||
return l + data->length;
|
||||
}
|
||||
|
||||
int
|
||||
@@ -150,13 +150,12 @@ encode_integer (unsigned char *p, int len, unsigned *data)
|
||||
}
|
||||
|
||||
int
|
||||
encode_general_string (unsigned char *p, int len, char **data)
|
||||
encode_general_string (unsigned char *p, int len, general_string *data)
|
||||
{
|
||||
char *str = *data;
|
||||
int ret = 0;
|
||||
int l;
|
||||
|
||||
l = der_put_general_string (p, len, str);
|
||||
l = der_put_general_string (p, len, data);
|
||||
if (l < 0)
|
||||
return l;
|
||||
p -= l;
|
||||
@@ -172,7 +171,7 @@ encode_general_string (unsigned char *p, int len, char **data)
|
||||
}
|
||||
|
||||
int
|
||||
encode_octet_string (unsigned char *p, int len, krb5_data *k)
|
||||
encode_octet_string (unsigned char *p, int len, octet_string *k)
|
||||
{
|
||||
int ret = 0;
|
||||
int l;
|
||||
@@ -193,12 +192,12 @@ encode_octet_string (unsigned char *p, int len, krb5_data *k)
|
||||
}
|
||||
|
||||
void
|
||||
time2generalizedtime (time_t t, krb5_data *s)
|
||||
time2generalizedtime (time_t t, octet_string *s)
|
||||
{
|
||||
struct tm *tm;
|
||||
|
||||
s->data = malloc(16);
|
||||
s->len = 15;
|
||||
s->length = 15;
|
||||
tm = gmtime (&t);
|
||||
sprintf (s->data, "%04d%02d%02d%02d%02d%02dZ", tm->tm_year + 1900,
|
||||
tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min,
|
||||
@@ -208,7 +207,7 @@ time2generalizedtime (time_t t, krb5_data *s)
|
||||
int
|
||||
encode_generalized_time (unsigned char *p, int len, time_t *t)
|
||||
{
|
||||
krb5_data k;
|
||||
octet_string k;
|
||||
int l;
|
||||
int ret = 0;
|
||||
|
||||
|
@@ -24,6 +24,23 @@ init_generate (char *filename)
|
||||
fprintf (headerfile,
|
||||
"#ifndef __" STEM "_h__\n"
|
||||
"#define __" STEM "_h__\n\n");
|
||||
fprintf (headerfile,
|
||||
"#include <stddef.h>\n\n");
|
||||
fprintf (headerfile,
|
||||
"typedef struct {\n"
|
||||
" size_t length;\n"
|
||||
" void *data;\n"
|
||||
"} octet_string;\n\n");
|
||||
fprintf (headerfile,
|
||||
#if 0
|
||||
"typedef struct {\n"
|
||||
" size_t length;\n"
|
||||
" char *data;\n"
|
||||
"} general_string;\n\n"
|
||||
#else
|
||||
"typedef char *general_string;\n\n"
|
||||
#endif
|
||||
);
|
||||
logfile = fopen(STEM "_files", "w");
|
||||
if (logfile == NULL) {
|
||||
fprintf (stderr, "Could not open " STEM "_files" "\n");
|
||||
@@ -152,7 +169,7 @@ define_type (int level, char *name, Type *t)
|
||||
break;
|
||||
case TOctetString:
|
||||
space(level);
|
||||
fprintf (headerfile, "krb5_data %s;\n", name);
|
||||
fprintf (headerfile, "octet_string %s;\n", name);
|
||||
break;
|
||||
case TBitString: {
|
||||
Member *m;
|
||||
@@ -218,7 +235,7 @@ define_type (int level, char *name, Type *t)
|
||||
break;
|
||||
case TGeneralString:
|
||||
space(level);
|
||||
fprintf (headerfile, "char *%s;\n", name);
|
||||
fprintf (headerfile, "general_string %s;\n", name);
|
||||
break;
|
||||
case TApplication:
|
||||
define_type (level, name, t->subtype);
|
||||
@@ -261,8 +278,8 @@ generate_type (Symbol *s)
|
||||
"#include <stdio.h>\n"
|
||||
"#include <stdlib.h>\n"
|
||||
"#include <time.h>\n"
|
||||
"#include <der.h>\n"
|
||||
"#include <" STEM ".h>\n\n",
|
||||
"#include <" STEM ".h>\n\n"
|
||||
"#include <der.h>\n",
|
||||
orig_filename);
|
||||
generate_type_header (s);
|
||||
generate_type_encode (s);
|
||||
|
Reference in New Issue
Block a user