Now all decode_* and encode_* functions now take a final size_t*

argument, that they return the size in. Return values are zero for
success, and anything else (such as some ASN1_* constant) for error.


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@1951 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
1997-07-01 23:52:30 +00:00
parent ae8c2b0909
commit 372881f5ef
14 changed files with 624 additions and 477 deletions

View File

@@ -6,47 +6,48 @@ void
generate_type_maybe (Symbol *s)
{
fprintf (headerfile,
"int maybe_%s(unsigned char *, int);\n",
"int maybe_%s(unsigned char *, size_t);\n",
s->gen_name);
fprintf (codefile, "int\n"
"maybe_%s(unsigned char *p, int len)\n"
"{\n ",
"maybe_%s(unsigned char *p, size_t len)\n"
"{\n "
"size_t size;\n ",
s->gen_name);
switch (s->type->type) {
case TInteger:
fprintf (codefile, "return der_match_tag (p, len, UNIV, "
"PRIM, UT_Integer) >= 0;\n");
"PRIM, UT_Integer, &size) == 0;\n");
break;
case TOctetString:
fprintf (codefile, "return der_match_tag (p, len, UNIV, "
"PRIM, UT_OctetString) >= 0;\n");
"PRIM, UT_OctetString, &size) == 0;\n");
break;
case TGeneralizedTime:
fprintf (codefile, "return der_match_tag (p, len, UNIV, "
"PRIM, UT_GeneralizedTime) >= 0;\n");
"PRIM, UT_GeneralizedTime, &size) == 0;\n");
break;
case TGeneralString:
fprintf (codefile, "return der_match_tag (p, len, UNIV, "
"PRIM, UT_GeneralString) >= 0;\n");
"PRIM, UT_GeneralString, &size) == 0;\n");
break;
case TBitString:
fprintf (codefile, "return der_match_tag (p, len, UNIV, "
"PRIM, UT_BitString) >= 0;\n");
"PRIM, UT_BitString, &size) == 0;\n");
break;
case TSequence:
case TSequenceOf:
fprintf (codefile, "return der_match_tag (p, len, UNIV, "
"CONS, UT_Sequence) >= 0;\n");
"CONS, UT_Sequence, &size) == 0;\n");
break;
case TApplication:
fprintf (codefile, "return der_match_tag (p, len, APPL, "
"CONS, %d) >= 0;\n", s->type->application);
"CONS, %d, &size) == 0;\n", s->type->application);
break;
case TType:
fprintf (codefile, "return maybe_%s(p, len) >= 0;\n",
fprintf (codefile, "return maybe_%s(p, len) == 0;\n",
s->type->symbol->gen_name);
break;
default: