2 * Copyright (C) 1994, Index Data I/S
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.1 1995-02-03 17:04:36 quinn
14 int ber_oid(ODR o, Odr_oid *p)
19 unsigned char octs[8];
24 if ((res = ber_declen(o->bp, &len)) < 1)
38 p[1] = *o->bp - p[0] * 40;
51 p[pos] |= *o->bp & 0X7F;
55 while (*(o->bp++) & 0X80);
61 /* we'll allow ourselves the quiet luxury of only doing encodings
66 if (p[0] < 0 && p[1] <= 0)
68 p[1] = p[0] * 40 + p[1];
69 for (pos = 1; p[pos] >= 0; pos++)
75 octs[n++] = id &= 0X7F;
83 *(o->bp++) = octs[n] | ((n > 0) << 7);
85 if (ber_enclen(lenp, (o->bp - lenp) - 1, 1, 1) != 1)