Commit a469a677 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Remove old ASN.1 functions.



Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
parent 1880790e
Loading
Loading
Loading
Loading
+0 −61
Original line number Diff line number Diff line
@@ -60,7 +60,6 @@
#include <limits.h>
#include "cryptlib.h"
#include <openssl/asn1.h>
#include <openssl/asn1_mac.h>

static int asn1_get_length(const unsigned char **pp, int *inf, long *rl,
                           int max);
@@ -279,57 +278,6 @@ int ASN1_object_size(int constructed, int length, int tag)
    return (ret);
}

static int _asn1_Finish(ASN1_const_CTX *c)
{
    if ((c->inf == (1 | V_ASN1_CONSTRUCTED)) && (!c->eos)) {
        if (!ASN1_const_check_infinite_end(&c->p, c->slen)) {
            c->error = ERR_R_MISSING_ASN1_EOS;
            return (0);
        }
    }
    if (((c->slen != 0) && !(c->inf & 1)) || ((c->slen < 0) && (c->inf & 1))) {
        c->error = ERR_R_ASN1_LENGTH_MISMATCH;
        return (0);
    }
    return (1);
}

int asn1_Finish(ASN1_CTX *c)
{
    return _asn1_Finish((ASN1_const_CTX *)c);
}

int asn1_const_Finish(ASN1_const_CTX *c)
{
    return _asn1_Finish(c);
}

int asn1_GetSequence(ASN1_const_CTX *c, long *length)
{
    const unsigned char *q;

    q = c->p;
    c->inf = ASN1_get_object(&(c->p), &(c->slen), &(c->tag), &(c->xclass),
                             *length);
    if (c->inf & 0x80) {
        c->error = ERR_R_BAD_GET_ASN1_OBJECT_CALL;
        return (0);
    }
    if (c->tag != V_ASN1_SEQUENCE) {
        c->error = ERR_R_EXPECTING_AN_ASN1_SEQUENCE;
        return (0);
    }
    (*length) -= (c->p - q);
    if (c->max && (*length < 0)) {
        c->error = ERR_R_ASN1_LENGTH_MISMATCH;
        return (0);
    }
    if (c->inf == (1 | V_ASN1_CONSTRUCTED))
        c->slen = *length + *(c->pp) - c->p;
    c->eos = 0;
    return (1);
}

int ASN1_STRING_copy(ASN1_STRING *dst, const ASN1_STRING *str)
{
    if (str == NULL)
@@ -451,15 +399,6 @@ int ASN1_STRING_cmp(const ASN1_STRING *a, const ASN1_STRING *b)
        return (i);
}

void asn1_add_error(const unsigned char *address, int offset)
{
    char buf1[DECIMAL_SIZE(address) + 1], buf2[DECIMAL_SIZE(offset) + 1];

    BIO_snprintf(buf1, sizeof buf1, "%lu", (unsigned long)address);
    BIO_snprintf(buf2, sizeof buf2, "%d", offset);
    ERR_add_error_data(4, "address=", buf1, " offset=", buf2);
}

int ASN1_STRING_length(const ASN1_STRING *x)
{
    return x->length;
+0 −38
Original line number Diff line number Diff line
@@ -159,41 +159,6 @@ extern "C" {
    struct X509_algor_st;
DECLARE_STACK_OF(X509_ALGOR)

/*
 * We MUST make sure that, except for constness, asn1_ctx_st and
 * asn1_const_ctx are exactly the same.  Fortunately, as soon as the old ASN1
 * parsing macros are gone, we can throw this away as well...
 */
typedef struct asn1_ctx_st {
    unsigned char *p;           /* work char pointer */
    int eos;                    /* end of sequence read for indefinite
                                 * encoding */
    int error;                  /* error code to use when returning an error */
    int inf;                    /* constructed if 0x20, indefinite is 0x21 */
    int tag;                    /* tag from last 'get object' */
    int xclass;                 /* class from last 'get object' */
    long slen;                  /* length of last 'get object' */
    unsigned char *max;         /* largest value of p allowed */
    unsigned char *q;           /* temporary variable */
    unsigned char **pp;         /* variable */
    int line;                   /* used in error processing */
} ASN1_CTX;

typedef struct asn1_const_ctx_st {
    const unsigned char *p;     /* work char pointer */
    int eos;                    /* end of sequence read for indefinite
                                 * encoding */
    int error;                  /* error code to use when returning an error */
    int inf;                    /* constructed if 0x20, indefinite is 0x21 */
    int tag;                    /* tag from last 'get object' */
    int xclass;                 /* class from last 'get object' */
    long slen;                  /* length of last 'get object' */
    const unsigned char *max;   /* largest value of p allowed */
    const unsigned char *q;     /* temporary variable */
    const unsigned char **pp;   /* variable */
    int line;                   /* used in error processing */
} ASN1_const_CTX;

# define ASN1_STRING_FLAG_BITS_LEFT 0x08/* Set if 0x07 has bits left value */
/*
 * This indicates that the ASN1_STRING is not a real value but just a place
@@ -727,9 +692,6 @@ BIGNUM *ASN1_ENUMERATED_to_BN(ASN1_ENUMERATED *ai, BIGNUM *bn);
int ASN1_PRINTABLE_type(const unsigned char *s, int max);

unsigned long ASN1_tag2bit(int tag);
/* PARSING */
int asn1_Finish(ASN1_CTX *c);
int asn1_const_Finish(ASN1_const_CTX *c);

/* SPECIALS */
int ASN1_get_object(const unsigned char **pp, long *plength, int *ptag,