+ /* Work out size of content octets */
+ i=a2d_ASN1_OBJECT(NULL,0,s,-1);
+ if (i <= 0) {
+ /* Clear the error */
+ ERR_get_error();
+ return NULL;
+ }
+ /* Work out total size */
+ j = ASN1_object_size(0,i,V_ASN1_OBJECT);
+
+ if((buf=(unsigned char *)OPENSSL_malloc(j)) == NULL) return NULL;
+
+ p = buf;
+ /* Write out tag+length */
+ ASN1_put_object(&p,0,i,V_ASN1_OBJECT,V_ASN1_UNIVERSAL);
+ /* Write out contents */
+ a2d_ASN1_OBJECT(p,i,s,-1);
+
+ p=buf;
+ op=d2i_ASN1_OBJECT(NULL,&p,i);
+ OPENSSL_free(buf);
+ return op;
+ }
+
+int OBJ_obj2txt(char *buf, int buf_len, const ASN1_OBJECT *a, int no_name)
+{
+ int i,idx=0,n=0,len,nid;
+ unsigned long l;
+ unsigned char *p;
+ const char *s;
+ char tbuf[32];
+
+ if (buf_len <= 0) return(0);
+
+ if ((a == NULL) || (a->data == NULL)) {
+ buf[0]='\0';
+ return(0);
+ }