Exemplo n.º 1
0
int OBJ_create(const char *oid, const char *sn, const char *ln)
  {
  int ok=0;
  ASN1_OBJECT *op=NULL;
  unsigned char *buf;
  int i;

  i=a2d_ASN1_OBJECT(NULL,0,oid,-1);
  if (i <= 0) return(0);

  if ((buf=(unsigned char *)OPENSSL_malloc(i)) == NULL)
    {
    OBJerr(OBJ_F_OBJ_CREATE,ERR_R_MALLOC_FAILURE);
    return(0);
    }
  i=a2d_ASN1_OBJECT(buf,i,oid,-1);
  if (i == 0)
    goto err;
  op=(ASN1_OBJECT *)ASN1_OBJECT_create(OBJ_new_nid(1),buf,i,sn,ln);
  if (op == NULL) 
    goto err;
  ok=OBJ_add_object(op);
err:
  ASN1_OBJECT_free(op);
  OPENSSL_free(buf);
  return(ok);
  }
Exemplo n.º 2
0
int btls_change_obj_data(ASN1_OBJECT **a, const char* pp)
{
	int res = 1;
	unsigned char *buf;
	unsigned char *p;
	const unsigned char *cp;
	int i, j;

	i=a2d_ASN1_OBJECT(NULL,0, pp,-1);
	if (i <= 0) {
		/* Don't clear the error */
		/*ERR_clear_error();*/
		return 0;
	}
	/* Work out total size */
	j = ASN1_object_size(0,i,V_ASN1_OBJECT);

	if((buf=(unsigned char *)OPENSSL_malloc(j)) == NULL) return 0;

	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,pp,-1);

	cp=buf;
	(*a)=btls_d2i_ASN1_OBJECT(a,&cp,j);
	OPENSSL_free(buf);

	return 1;
}
Exemplo n.º 3
0
ASN1_OBJECT *OBJ_txt2obj(const char *s, int no_name)
  {
  int nid = NID_undef;
  ASN1_OBJECT *op=NULL;
  unsigned char *buf;
  unsigned char *p;
  const unsigned char *cp;
  int i, j;

  if(!no_name) {
    if( ((nid = OBJ_sn2nid(s)) != NID_undef) ||
      ((nid = OBJ_ln2nid(s)) != NID_undef) ) 
          return OBJ_nid2obj(nid);
  }

  /* Work out size of content octets */
  i=a2d_ASN1_OBJECT(NULL,0,s,-1);
  if (i <= 0) {
    /* Clear the error */
    ERR_clear_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);

  cp=buf;
  op=d2i_ASN1_OBJECT(NULL,&cp,j);
  OPENSSL_free(buf);
  return op;
  }