diff --git a/lib/asn1/der.h b/lib/asn1/der.h index c8bc95374..fde7f4d74 100644 --- a/lib/asn1/der.h +++ b/lib/asn1/der.h @@ -4,6 +4,8 @@ #define DER_H +#include + typedef enum {UNIV = 0, APPL = 1, CONTEXT = 2 , PRIVATE = 3} Der_class; typedef enum {PRIM = 0, CONS = 1} Der_type; @@ -38,4 +40,34 @@ krb5_data string_make (char *); krb5_data string_make_n (int len, char *); void string_free (krb5_data); +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_tag (unsigned char *p, int len, + Der_class *class, Der_type *type, int *tag); +int der_match_tag (unsigned char *p, int len, + Der_class class, Der_type type, int tag); +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_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_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_generalized_time (unsigned char *p, int len, time_t *t); + #endif /* DER_H */