- netlen = LBER_LEN_HTON( len );
- if ( ber_write( ber, (char *) &netlen + (sizeof(ber_len_t) - i), i, nosos )
- != i )
- return( -1 );
+ rc = ber_write( ber, (char *) netlen, i, nosos );
+
+ return rc == i ? i+1 : -1;
+}
+
+/* out->bv_len should be the buffer size on input */
+int
+ber_encode_oid( BerValue *in, BerValue *out )
+{
+ unsigned char *der = out->bv_val;
+ unsigned long val, val1;
+ int i, len;
+ char *ptr, *end, *inend;
+
+ assert( in != NULL );
+ assert( out != NULL );
+
+ if ( !out->bv_val || out->bv_len < in->bv_len )
+ return -1;
+
+ /* OIDs must have at least two components */
+ if ( sscanf( in->bv_val, "%ld.%ld", &val, &val1 ) != 2 )
+ return -1;