Пример #1
0
int TS_RESP_CTX_set_def_policy(TS_RESP_CTX *ctx, ASN1_OBJECT *def_policy)
{
    if (ctx->default_policy)
        ASN1_OBJECT_free(ctx->default_policy);
    if (!(ctx->default_policy = OBJ_dup(def_policy)))
        goto err;
    return 1;
 err:
    TSerr(TS_F_TS_RESP_CTX_SET_DEF_POLICY, ERR_R_MALLOC_FAILURE);
    return 0;
}
Пример #2
0
int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, ASN1_OBJECT *obj)
  {
  if ((ne == NULL) || (obj == NULL))
    {
    X509err(X509_F_X509_NAME_ENTRY_SET_OBJECT,ERR_R_PASSED_NULL_PARAMETER);
    return(0);
    }
  ASN1_OBJECT_free(ne->object);
  ne->object=OBJ_dup(obj);
  return((ne->object == NULL)?0:1);
  }
Пример #3
0
X509_POLICY_DATA *policy_data_new(POLICYINFO *policy,
					const ASN1_OBJECT *cid, int crit)
	{
	X509_POLICY_DATA *ret;
	ASN1_OBJECT *id;
	if (!policy && !cid)
		return NULL;
	if (cid)
		{
		id = OBJ_dup(cid);
		if (!id)
			return NULL;
		}
	else
		id = NULL;
	ret = (X509_POLICY_DATA *)OPENSSL_malloc(sizeof(X509_POLICY_DATA));
	if (!ret)
	{
		if (id)
			ASN1_OBJECT_free(id);
		return NULL;
	}
	ret->expected_policy_set = sk_ASN1_OBJECT_new_null();
	if (!ret->expected_policy_set)
		{
		OPENSSL_free(ret);
		if (id)
			ASN1_OBJECT_free(id);
		return NULL;
		}

	if (crit)
		ret->flags = POLICY_DATA_FLAG_CRITICAL;
	else
		ret->flags = 0;

	if (id)
		ret->valid_policy = id;
	else
		{
		ret->valid_policy = policy->policyid;
		policy->policyid = NULL;
		}

	if (policy)
		{
		ret->qualifier_set = policy->qualifiers;
		policy->qualifiers = NULL;
		}
	else
		ret->qualifier_set = NULL;

	return ret;
	}
Пример #4
0
/**
 * @ingroup proxypolicy
 *
 * Sets the policy language of the PROXYPOLICY
 *
 * @param policy the PROXYPOLICY to set the policy language of
 * @param policy_language the policy language to set it to
 *
 * @return 1 on success, 0 on error
 */
int PROXYPOLICY_set_policy_language(
    PROXYPOLICY *                       policy,
    ASN1_OBJECT *                       policy_language)
{
    if(policy_language != NULL) 
    {
        ASN1_OBJECT_free(policy->policy_language);
        policy->policy_language = OBJ_dup(policy_language);
        return 1;
    }
    return 0;
}
Пример #5
0
TS_VERIFY_CTX *
TS_REQ_to_TS_VERIFY_CTX(TS_REQ *req, TS_VERIFY_CTX *ctx)
{
	TS_VERIFY_CTX *ret = ctx;
	ASN1_OBJECT *policy;
	TS_MSG_IMPRINT *imprint;
	X509_ALGOR *md_alg;
	ASN1_OCTET_STRING *msg;
	const ASN1_INTEGER *nonce;

	OPENSSL_assert(req != NULL);
	if (ret)
		TS_VERIFY_CTX_cleanup(ret);
	else if (!(ret = TS_VERIFY_CTX_new()))
		return NULL;

	/* Setting flags. */
	ret->flags = TS_VFY_ALL_IMPRINT & ~(TS_VFY_TSA_NAME | TS_VFY_SIGNATURE);

	/* Setting policy. */
	if ((policy = TS_REQ_get_policy_id(req)) != NULL) {
		if (!(ret->policy = OBJ_dup(policy)))
			goto err;
	} else
		ret->flags &= ~TS_VFY_POLICY;

	/* Setting md_alg, imprint and imprint_len. */
	imprint = TS_REQ_get_msg_imprint(req);
	md_alg = TS_MSG_IMPRINT_get_algo(imprint);
	if (!(ret->md_alg = X509_ALGOR_dup(md_alg)))
		goto err;
	msg = TS_MSG_IMPRINT_get_msg(imprint);
	ret->imprint_len = ASN1_STRING_length(msg);
	if (!(ret->imprint = malloc(ret->imprint_len)))
		goto err;
	memcpy(ret->imprint, ASN1_STRING_data(msg), ret->imprint_len);

	/* Setting nonce. */
	if ((nonce = TS_REQ_get_nonce(req)) != NULL) {
		if (!(ret->nonce = ASN1_INTEGER_dup(nonce)))
			goto err;
	} else
		ret->flags &= ~TS_VFY_NONCE;

	return ret;

err:
	if (ctx)
		TS_VERIFY_CTX_cleanup(ctx);
	else
		TS_VERIFY_CTX_free(ret);
	return NULL;
}
Пример #6
0
static int openssl_xalgor_set(lua_State* L)
{
  int ret = 0;
  X509_ALGOR* alg = CHECK_OBJECT(1, X509_ALGOR, "openssl.x509_algor");
  ASN1_OBJECT* obj = CHECK_OBJECT(2, ASN1_OBJECT, "openssl.asn1_object");
  ASN1_STRING* val = lua_isnoneornil(L, 3) ?
                     NULL : auxiliar_checkgroup(L, "openssl.asn1_group", 3);
  obj = OBJ_dup(obj);
  val = ASN1_STRING_dup(val);
  ret = X509_ALGOR_set0(alg, obj , val->type, val);
  return openssl_pushresult(L, ret);
}
Пример #7
0
int X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj)
{
    X509_CERT_AUX *aux;
    ASN1_OBJECT *objtmp;
    if (!(objtmp = OBJ_dup(obj)))
        return 0;
    if (!(aux = aux_get(x)))
        return 0;
    if (!aux->trust && !(aux->trust = sk_ASN1_OBJECT_new_null()))
        return 0;
    return sk_ASN1_OBJECT_push(aux->trust, objtmp);
}
Пример #8
0
X509_EXTENSION* Extension::getX509Extension()
{
	X509_EXTENSION *ret;
	ByteArray data;
	ret = X509_EXTENSION_new();
	ret->object = OBJ_dup(this->objectIdentifier.getObjectIdentifier());
	ret->critical = this->critical?1:0;
	ret->value = ASN1_OCTET_STRING_new();
	data = this->value;
	ASN1_OCTET_STRING_set(ret->value, data.getDataPointer(), this->value.size());
	return ret;
}
Пример #9
0
ASN1_OBJECT *ASN1_OBJECT_create(int nid, unsigned char *data, int len,
	     const char *sn, const char *ln)
	{
	ASN1_OBJECT o;

	o.sn=sn;
	o.ln=ln;
	o.data=data;
	o.nid=nid;
	o.length=len;
	o.flags=ASN1_OBJECT_FLAG_DYNAMIC|ASN1_OBJECT_FLAG_DYNAMIC_STRINGS|
		ASN1_OBJECT_FLAG_DYNAMIC_DATA;
	return(OBJ_dup(&o));
	}
Пример #10
0
int CMS_set1_eContentType(CMS_ContentInfo *cms, const ASN1_OBJECT *oid)
{
    ASN1_OBJECT **petype, *etype;
    petype = cms_get0_econtent_type(cms);
    if (!petype)
        return 0;
    if (!oid)
        return 1;
    etype = OBJ_dup(oid);
    if (!etype)
        return 0;
    ASN1_OBJECT_free(*petype);
    *petype = etype;
    return 1;
}
Пример #11
0
int X509_add1_reject_object(X509 *x, ASN1_OBJECT *obj)
{
    X509_CERT_AUX *aux;
    ASN1_OBJECT *objtmp;
    if (!(objtmp = OBJ_dup(obj)))
        return 0;
    if (!(aux = aux_get(x)))
        goto err;
    if (!aux->reject && !(aux->reject = sk_ASN1_OBJECT_new_null()))
        goto err;
    return sk_ASN1_OBJECT_push(aux->reject, objtmp);
 err:
    ASN1_OBJECT_free(objtmp);
    return 0;
}
Пример #12
0
int TS_REQ_set_policy_id(TS_REQ *a, ASN1_OBJECT *policy)
{
    ASN1_OBJECT *new_policy;

    if (a->policy_id == policy)
        return 1;
    new_policy = OBJ_dup(policy);
    if (new_policy == NULL) {
        TSerr(TS_F_TS_REQ_SET_POLICY_ID, ERR_R_MALLOC_FAILURE);
        return 0;
    }
    ASN1_OBJECT_free(a->policy_id);
    a->policy_id = new_policy;
    return 1;
}
Пример #13
0
int
TS_REQ_set_policy_id(TS_REQ *a, const ASN1_OBJECT *policy)
{
	ASN1_OBJECT *new_policy;

	if (a->policy_id == policy)
		return 1;
	new_policy = OBJ_dup(policy);
	if (new_policy == NULL) {
		TSerror(ERR_R_MALLOC_FAILURE);
		return 0;
	}
	ASN1_OBJECT_free(a->policy_id);
	a->policy_id = new_policy;
	return 1;
}
Пример #14
0
static int openssl_xalgor_get(lua_State* L) {
  int type;
  void* val;
  ASN1_OBJECT *obj;

  X509_ALGOR* alg = CHECK_OBJECT(1, X509_ALGOR, "openssl.x509_algor");

  X509_ALGOR_get0(&obj, &type, &val, alg);
  if (obj != NULL)
    PUSH_OBJECT(OBJ_dup(obj), "openssl.asn1_object");
  else
    lua_pushnil(L);
  if (type == V_ASN1_UNDEF)
    lua_pushnil(L);
  else
    PUSH_OBJECT(ASN1_STRING_dup(val), "openssl.asn1_string");
  return 2;
}
Пример #15
0
static int openssl_xname_delete_entry(lua_State*L)
{
  X509_NAME* xn = CHECK_OBJECT(1, X509_NAME, "openssl.x509_name");
  int loc = luaL_checkint(L, 2);

  X509_NAME_ENTRY *xe = X509_NAME_delete_entry(xn,loc);
  if(xe)
  {
    ASN1_OBJECT *obj = OBJ_dup(xe->object);
    ASN1_STRING *as = ASN1_STRING_dup(xe->value);
    PUSH_OBJECT(obj,"openssl.asn1_object");
    PUSH_OBJECT(as,"openssl.asn1_string");
    X509_NAME_ENTRY_free(xe);
    return 2;
  }else
    lua_pushnil(L);

  return 1;
};
Пример #16
0
int X509_add1_reject_object(X509 *x, ASN1_OBJECT *obj)
{
    ASN1_OBJECT *objtmp = OBJ_dup(obj);
    if (objtmp == NULL)
        goto err;
    X509_CERT_AUX *aux = aux_get(x);
    if (aux->reject == NULL) {
        aux->reject = sk_ASN1_OBJECT_new_null();
        if (aux->reject == NULL)
            goto err;
    }
    if (!sk_ASN1_OBJECT_push(aux->reject, objtmp))
        goto err;
    return 1;

 err:
    ASN1_OBJECT_free(objtmp);
    return 0;
}
Пример #17
0
int ASN1_TYPE_set1(ASN1_TYPE *a, int type, const void *value)
{
    if (!value || (type == V_ASN1_BOOLEAN)) {
        void *p = (void *)value;
        ASN1_TYPE_set(a, type, p);
    } else if (type == V_ASN1_OBJECT) {
        ASN1_OBJECT *odup;
        odup = OBJ_dup(value);
        if (!odup)
            return 0;
        ASN1_TYPE_set(a, type, odup);
    } else {
        ASN1_STRING *sdup;
        sdup = ASN1_STRING_dup(value);
        if (!sdup)
            return 0;
        ASN1_TYPE_set(a, type, sdup);
    }
    return 1;
}
Пример #18
0
int X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj)
{
    X509_CERT_AUX *aux;
    ASN1_OBJECT *objtmp = NULL;
    if (obj) {
        objtmp = OBJ_dup(obj);
        if (!objtmp)
            return 0;
    }
    if ((aux = aux_get(x)) == NULL)
        goto err;
    if (aux->trust == NULL
        && (aux->trust = sk_ASN1_OBJECT_new_null()) == NULL)
        goto err;
    if (!objtmp || sk_ASN1_OBJECT_push(aux->trust, objtmp))
        return 1;
 err:
    ASN1_OBJECT_free(objtmp);
    return 0;
}
Пример #19
0
static int openssl_xext_object(lua_State* L)
{
  X509_EXTENSION *x = CHECK_OBJECT(1, X509_EXTENSION, "openssl.x509_extension");
  ASN1_OBJECT* obj;
  if (lua_isnone(L, 2))
  {
    obj = X509_EXTENSION_get_object(x);
    obj = OBJ_dup(obj);
    PUSH_OBJECT(obj, "openssl.asn1_object");
    return 1;
  }
  else
  {
    int nid = openssl_get_nid(L, 2);
    int ret;
    obj = OBJ_nid2obj(nid);
    ret = X509_EXTENSION_set_object(x, obj);
    return openssl_pushresult(L, ret);
  }
};
Пример #20
0
int OBJ_add_object(const ASN1_OBJECT *obj)
  {
  ASN1_OBJECT *o;
  ADDED_OBJ *ao[4]={NULL,NULL,NULL,NULL},*aop;
  int i;

  if (added == NULL)
    if (!init_added()) return(0);
  if ((o=OBJ_dup(obj)) == NULL) goto err;
  if (!(ao[ADDED_NID]=(ADDED_OBJ *)OPENSSL_malloc(sizeof(ADDED_OBJ)))) goto err2;
  if ((o->length != 0) && (obj->data != NULL))
    if (!(ao[ADDED_DATA]=(ADDED_OBJ *)OPENSSL_malloc(sizeof(ADDED_OBJ)))) goto err2;
  if (o->sn != NULL)
    if (!(ao[ADDED_SNAME]=(ADDED_OBJ *)OPENSSL_malloc(sizeof(ADDED_OBJ)))) goto err2;
  if (o->ln != NULL)
    if (!(ao[ADDED_LNAME]=(ADDED_OBJ *)OPENSSL_malloc(sizeof(ADDED_OBJ)))) goto err2;

  for (i=ADDED_DATA; i<=ADDED_NID; i++)
    {
    if (ao[i] != NULL)
      {
      ao[i]->type=i;
      ao[i]->obj=o;
      aop=(ADDED_OBJ *)lh_insert(added,ao[i]);
      /* memory leak, buit should not normally matter */
      if (aop != NULL)
        OPENSSL_free(aop);
      }
    }
  o->flags&= ~(ASN1_OBJECT_FLAG_DYNAMIC|ASN1_OBJECT_FLAG_DYNAMIC_STRINGS|
      ASN1_OBJECT_FLAG_DYNAMIC_DATA);

  return(o->nid);
err2:
  OBJerr(OBJ_F_OBJ_ADD_OBJECT,ERR_R_MALLOC_FAILURE);
err:
  for (i=ADDED_DATA; i<=ADDED_NID; i++)
    if (ao[i] != NULL) OPENSSL_free(ao[i]);
  if (o != NULL) OPENSSL_free(o);
  return(NID_undef);
  }
Пример #21
0
static int openssl_xattr_object(lua_State*L)
{
  X509_ATTRIBUTE* attr = CHECK_OBJECT(1, X509_ATTRIBUTE, "openssl.x509_attribute");
  if (lua_isnone(L, 2))
  {
    ASN1_OBJECT* obj = X509_ATTRIBUTE_get0_object(attr);
    obj = OBJ_dup(obj);
    PUSH_OBJECT(obj, "openssl.asn1_object");
    return 1;
  }
  else
  {
    int nid = openssl_get_nid(L, 2);
    ASN1_OBJECT* obj;
    int ret;
    luaL_argcheck(L, nid != NID_undef, 2, "invalid asn1_object identity");
    obj = OBJ_nid2obj(nid);
    ret = X509_ATTRIBUTE_set1_object(attr, obj);
    return openssl_pushresult(L, ret);
  }
}
Пример #22
0
int
X509_add1_trust_object(X509 *x, ASN1_OBJECT *obj)
{
	X509_CERT_AUX *aux;
	ASN1_OBJECT *objtmp;
	int rc;

	if (!(objtmp = OBJ_dup(obj)))
		return 0;
	if (!(aux = aux_get(x)))
		goto err;
	if (!aux->trust && !(aux->trust = sk_ASN1_OBJECT_new_null()))
		goto err;
	rc = sk_ASN1_OBJECT_push(aux->trust, objtmp);
	if (rc != 0)
		return rc;

err:
	ASN1_OBJECT_free(objtmp);
	return 0;
}