Add VisibleString parsing
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@19539 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -32,6 +32,7 @@ typedef struct heim_universal_string {
|
|||||||
uint32_t *data;
|
uint32_t *data;
|
||||||
} heim_universal_string;
|
} heim_universal_string;
|
||||||
|
|
||||||
|
typedef char *heim_visible_string;
|
||||||
|
|
||||||
typedef struct heim_oid {
|
typedef struct heim_oid {
|
||||||
size_t length;
|
size_t length;
|
||||||
|
@@ -180,7 +180,9 @@ loop (unsigned char *buf, size_t len, int indent)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case UT_GeneralizedTime :
|
case UT_GeneralizedTime :
|
||||||
case UT_GeneralString : {
|
case UT_GeneralString :
|
||||||
|
case UT_PrintableString :
|
||||||
|
case UT_VisibleString : {
|
||||||
heim_general_string str;
|
heim_general_string str;
|
||||||
|
|
||||||
ret = der_get_general_string (buf, length, &str, NULL);
|
ret = der_get_general_string (buf, length, &str, NULL);
|
||||||
|
@@ -88,6 +88,13 @@ der_copy_universal_string (const heim_universal_string *from,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
der_copy_visible_string (const heim_visible_string *from,
|
||||||
|
heim_visible_string *to)
|
||||||
|
{
|
||||||
|
return der_copy_general_string(from, to);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
der_copy_octet_string (const heim_octet_string *from, heim_octet_string *to)
|
der_copy_octet_string (const heim_octet_string *from, heim_octet_string *to)
|
||||||
{
|
{
|
||||||
|
@@ -79,6 +79,13 @@ der_free_universal_string (heim_universal_string *k)
|
|||||||
k->length = 0;
|
k->length = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
der_free_visible_string (heim_visible_string *str)
|
||||||
|
{
|
||||||
|
free(*str);
|
||||||
|
*str = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
der_free_octet_string (heim_octet_string *k)
|
der_free_octet_string (heim_octet_string *k)
|
||||||
{
|
{
|
||||||
|
@@ -214,6 +214,13 @@ der_get_universal_string (const unsigned char *p, size_t len,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
der_get_visible_string (const unsigned char *p, size_t len,
|
||||||
|
heim_visible_string *str, size_t *size)
|
||||||
|
{
|
||||||
|
return der_get_general_string(p, len, str, size);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
der_get_octet_string (const unsigned char *p, size_t len,
|
der_get_octet_string (const unsigned char *p, size_t len,
|
||||||
heim_octet_string *data, size_t *size)
|
heim_octet_string *data, size_t *size)
|
||||||
|
@@ -166,6 +166,12 @@ der_length_universal_string (const heim_universal_string *data)
|
|||||||
return data->length * 4;
|
return data->length * 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
size_t
|
||||||
|
der_length_visible_string (const heim_visible_string *data)
|
||||||
|
{
|
||||||
|
return strlen(*data);
|
||||||
|
}
|
||||||
|
|
||||||
size_t
|
size_t
|
||||||
der_length_octet_string (const heim_octet_string *k)
|
der_length_octet_string (const heim_octet_string *k)
|
||||||
{
|
{
|
||||||
|
@@ -230,6 +230,13 @@ der_put_universal_string (unsigned char *p, size_t len,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
der_put_visible_string (unsigned char *p, size_t len,
|
||||||
|
const heim_visible_string *str, size_t *size)
|
||||||
|
{
|
||||||
|
return der_put_general_string(p, len, str, size);
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
der_put_octet_string (unsigned char *p, size_t len,
|
der_put_octet_string (unsigned char *p, size_t len,
|
||||||
const heim_octet_string *data, size_t *size)
|
const heim_octet_string *data, size_t *size)
|
||||||
|
@@ -135,6 +135,9 @@ init_generate (const char *filename, const char *base)
|
|||||||
" size_t length;\n"
|
" size_t length;\n"
|
||||||
" uint32_t *data;\n"
|
" uint32_t *data;\n"
|
||||||
"} heim_universal_string;\n\n");
|
"} heim_universal_string;\n\n");
|
||||||
|
fprintf (headerfile,
|
||||||
|
"typedef char *heim_visible_string;\n\n"
|
||||||
|
);
|
||||||
fprintf (headerfile,
|
fprintf (headerfile,
|
||||||
"typedef struct heim_oid {\n"
|
"typedef struct heim_oid {\n"
|
||||||
" size_t length;\n"
|
" size_t length;\n"
|
||||||
@@ -504,6 +507,10 @@ define_asn1 (int level, Type *t)
|
|||||||
space(level);
|
space(level);
|
||||||
fprintf (headerfile, "UniversalString");
|
fprintf (headerfile, "UniversalString");
|
||||||
break;
|
break;
|
||||||
|
case TVisibleString:
|
||||||
|
space(level);
|
||||||
|
fprintf (headerfile, "VisibleString");
|
||||||
|
break;
|
||||||
case TOID :
|
case TOID :
|
||||||
space(level);
|
space(level);
|
||||||
fprintf(headerfile, "OBJECT IDENTIFIER");
|
fprintf(headerfile, "OBJECT IDENTIFIER");
|
||||||
@@ -736,6 +743,10 @@ define_type (int level, const char *name, Type *t, int typedefp, int preservep)
|
|||||||
space(level);
|
space(level);
|
||||||
fprintf (headerfile, "heim_universal_string %s;\n", name);
|
fprintf (headerfile, "heim_universal_string %s;\n", name);
|
||||||
break;
|
break;
|
||||||
|
case TVisibleString:
|
||||||
|
space(level);
|
||||||
|
fprintf (headerfile, "heim_visible_string %s;\n", name);
|
||||||
|
break;
|
||||||
case TOID :
|
case TOID :
|
||||||
space(level);
|
space(level);
|
||||||
fprintf (headerfile, "heim_oid %s;\n", name);
|
fprintf (headerfile, "heim_oid %s;\n", name);
|
||||||
|
@@ -202,6 +202,9 @@ copy_type (const char *from, const char *to, const Type *t, int preserve)
|
|||||||
case TUniversalString:
|
case TUniversalString:
|
||||||
copy_primitive ("universal_string", from, to);
|
copy_primitive ("universal_string", from, to);
|
||||||
break;
|
break;
|
||||||
|
case TVisibleString:
|
||||||
|
copy_primitive ("visible_string", from, to);
|
||||||
|
break;
|
||||||
case TTag:
|
case TTag:
|
||||||
copy_type (from, to, t->subtype, preserve);
|
copy_type (from, to, t->subtype, preserve);
|
||||||
break;
|
break;
|
||||||
|
@@ -74,6 +74,7 @@ is_primitive_type(int type)
|
|||||||
case TIA5String:
|
case TIA5String:
|
||||||
case TBMPString:
|
case TBMPString:
|
||||||
case TUniversalString:
|
case TUniversalString:
|
||||||
|
case TVisibleString:
|
||||||
case TNull:
|
case TNull:
|
||||||
return 1;
|
return 1;
|
||||||
default:
|
default:
|
||||||
@@ -191,6 +192,11 @@ find_tag (const Type *t,
|
|||||||
*ty = PRIM;
|
*ty = PRIM;
|
||||||
*tag = UT_UniversalString;
|
*tag = UT_UniversalString;
|
||||||
break;
|
break;
|
||||||
|
case TVisibleString:
|
||||||
|
*cl = ASN1_C_UNIV;
|
||||||
|
*ty = PRIM;
|
||||||
|
*tag = UT_VisibleString;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
@@ -580,6 +586,9 @@ decode_type (const char *name, const Type *t, int optional,
|
|||||||
case TUniversalString:
|
case TUniversalString:
|
||||||
decode_primitive ("universal_string", name, forwstr);
|
decode_primitive ("universal_string", name, forwstr);
|
||||||
break;
|
break;
|
||||||
|
case TVisibleString:
|
||||||
|
decode_primitive ("visible_string", name, forwstr);
|
||||||
|
break;
|
||||||
case TNull:
|
case TNull:
|
||||||
fprintf (codefile, "/* NULL */\n");
|
fprintf (codefile, "/* NULL */\n");
|
||||||
break;
|
break;
|
||||||
@@ -620,6 +629,7 @@ generate_type_decode (const Symbol *s)
|
|||||||
case TIA5String:
|
case TIA5String:
|
||||||
case TBMPString:
|
case TBMPString:
|
||||||
case TUniversalString:
|
case TUniversalString:
|
||||||
|
case TVisibleString:
|
||||||
case TUTCTime:
|
case TUTCTime:
|
||||||
case TNull:
|
case TNull:
|
||||||
case TEnumerated:
|
case TEnumerated:
|
||||||
|
@@ -467,6 +467,10 @@ encode_type (const char *name, const Type *t, const char *tmpstr)
|
|||||||
encode_primitive ("universal_string", name);
|
encode_primitive ("universal_string", name);
|
||||||
constructed = 0;
|
constructed = 0;
|
||||||
break;
|
break;
|
||||||
|
case TVisibleString:
|
||||||
|
encode_primitive ("visible_string", name);
|
||||||
|
constructed = 0;
|
||||||
|
break;
|
||||||
case TNull:
|
case TNull:
|
||||||
fprintf (codefile, "/* NULL */\n");
|
fprintf (codefile, "/* NULL */\n");
|
||||||
constructed = 0;
|
constructed = 0;
|
||||||
@@ -503,6 +507,7 @@ generate_type_encode (const Symbol *s)
|
|||||||
case TIA5String:
|
case TIA5String:
|
||||||
case TBMPString:
|
case TBMPString:
|
||||||
case TUniversalString:
|
case TUniversalString:
|
||||||
|
case TVisibleString:
|
||||||
case TNull:
|
case TNull:
|
||||||
case TBitString:
|
case TBitString:
|
||||||
case TEnumerated:
|
case TEnumerated:
|
||||||
|
@@ -160,6 +160,9 @@ free_type (const char *name, const Type *t, int preserve)
|
|||||||
case TUniversalString:
|
case TUniversalString:
|
||||||
free_primitive ("universal_string", name);
|
free_primitive ("universal_string", name);
|
||||||
break;
|
break;
|
||||||
|
case TVisibleString:
|
||||||
|
free_primitive ("visible_string", name);
|
||||||
|
break;
|
||||||
case TTag:
|
case TTag:
|
||||||
free_type (name, t->subtype, preserve);
|
free_type (name, t->subtype, preserve);
|
||||||
break;
|
break;
|
||||||
|
@@ -238,6 +238,9 @@ length_type (const char *name, const Type *t,
|
|||||||
case TUniversalString:
|
case TUniversalString:
|
||||||
length_primitive ("universal_string", name, variable);
|
length_primitive ("universal_string", name, variable);
|
||||||
break;
|
break;
|
||||||
|
case TVisibleString:
|
||||||
|
length_primitive ("visible_string", name, variable);
|
||||||
|
break;
|
||||||
case TNull:
|
case TNull:
|
||||||
fprintf (codefile, "/* NULL */\n");
|
fprintf (codefile, "/* NULL */\n");
|
||||||
break;
|
break;
|
||||||
|
@@ -659,6 +659,11 @@ RestrictedCharactedStringType: kw_GeneralString
|
|||||||
$$ = new_tag(ASN1_C_UNIV, UT_PrintableString,
|
$$ = new_tag(ASN1_C_UNIV, UT_PrintableString,
|
||||||
TE_EXPLICIT, new_type(TPrintableString));
|
TE_EXPLICIT, new_type(TPrintableString));
|
||||||
}
|
}
|
||||||
|
| kw_VisibleString
|
||||||
|
{
|
||||||
|
$$ = new_tag(ASN1_C_UNIV, UT_VisibleString,
|
||||||
|
TE_EXPLICIT, new_type(TVisibleString));
|
||||||
|
}
|
||||||
| kw_IA5String
|
| kw_IA5String
|
||||||
{
|
{
|
||||||
$$ = new_tag(ASN1_C_UNIV, UT_IA5String,
|
$$ = new_tag(ASN1_C_UNIV, UT_IA5String,
|
||||||
|
@@ -60,7 +60,8 @@ enum typetype {
|
|||||||
TUTCTime,
|
TUTCTime,
|
||||||
TUTF8String,
|
TUTF8String,
|
||||||
TBMPString,
|
TBMPString,
|
||||||
TUniversalString
|
TUniversalString,
|
||||||
|
TVisibleString
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum typetype Typetype;
|
typedef enum typetype Typetype;
|
||||||
|
Reference in New Issue
Block a user