src/odr_oct.c
int odr_octetstring(ODR o, Odr_oct **p, int opt, const char *name)
{
    int res, cons = 0;

    if (o->error)
        return 0;
    if (o->op->t_class < 0)
    {
        o->op->t_class = ODR_UNIVERSAL;
        o->op->t_tag = ODR_OCTETSTRING;
    }
    res = ber_tag(o, p, o->op->t_class, o->op->t_tag, &cons, opt, name);
    if (res < 0)
        return 0;
    if (!res)
        return odr_missing(o, opt, name);
    if (o->direction == ODR_PRINT)
    {
        odr_prname(o, name);
        odr_printf(o, "OCTETSTRING(len=%d) ", (*p)->len);

        o->op->stream_write(o, o->op->print, ODR_OCTETSTRING,
                            (char*) (*p)->buf, (*p)->len);
        odr_printf(o, "\n");
        return 1;
    }
    if (o->direction == ODR_DECODE)
    {
        *p = (Odr_oct *)odr_malloc(o, sizeof(Odr_oct));
        (*p)->len = 0;
        (*p)->buf = 0;
    }
    if (ber_octetstring(o, *p, cons))
        return 1;
    odr_seterror(o, OOTHER, 43);
    return 0;
}
/*
 * Top level octet string en/decoder.
 * Returns 1 on success, 0 on error.
 */
Top level octet string en/decoder.
Returns 1 on success, 0 on error.
Top level octet string en / decoder . Returns 1 on success 0 on error .
int odr_octetstring(ODR o, Odr_oct **p, int opt, const char *name)
{
    int res, cons = 0;
    if (o->error)
        return 0;
    if (o->op->t_class < 0)
    {
        o->op->t_class = ODR_UNIVERSAL;
        o->op->t_tag = ODR_OCTETSTRING;
    }
    res = ber_tag(o, p, o->op->t_class, o->op->t_tag, &cons, opt, name);
    if (res < 0)
        return 0;
    if (!res)
        return odr_missing(o, opt, name);
    if (o->direction == ODR_PRINT)
    {
        odr_prname(o, name);
        odr_printf(o, "OCTETSTRING(len=%d) ", (*p)->len);
        o->op->stream_write(o, o->op->print, ODR_OCTETSTRING,
                            (char*) (*p)->buf, (*p)->len);
        odr_printf(o, "\n");
        return 1;
    }
    if (o->direction == ODR_DECODE)
    {
        *p = (Odr_oct *)odr_malloc(o, sizeof(Odr_oct));
        (*p)->len = 0;
        (*p)->buf = 0;
    }
    if (ber_octetstring(o, *p, cons))
        return 1;
    odr_seterror(o, OOTHER, 43);
    return 0;
}
int odr_octetstring ( ODR o , Odr_oct * * p , int opt , const char * name ) { int res , cons = 0 ; if ( o -> error ) return 0 ; if ( o -> op -> t_class < 0 ) { o -> op -> t_class = ODR_UNIVERSAL ; o -> op -> t_tag = ODR_OCTETSTRING ; } res = ber_tag ( o , p , o -> op -> t_class , o -> op -> t_tag , & cons , opt , name ) ; if ( res < 0 ) return 0 ; if ( ! res ) return odr_missing ( o , opt , name ) ; if ( o -> direction == ODR_PRINT ) { odr_prname ( o , name ) ; odr_printf ( o , " " , ( * p ) -> len ) ; o -> op -> stream_write ( o , o -> op -> print , ODR_OCTETSTRING , ( char * ) ( * p ) -> buf , ( * p ) -> len ) ; odr_printf ( o , " \n " ) ; return 1 ; } if ( o -> direction == ODR_DECODE ) { * p = ( Odr_oct * ) odr_malloc ( o , sizeof ( Odr_oct ) ) ; ( * p ) -> len = 0 ; ( * p ) -> buf = 0 ; } if ( ber_octetstring ( o , * p , cons ) ) return 1 ; odr_seterror ( o , OOTHER , 43 ) ; return 0 ; }
Top level octet string en/decoder.
Top level octet string en / decoder .