#include <openssl/asn1.h>
#include <openssl/cms.h>
#include <openssl/x509.h>
#include "cms_local.h"
#include "x509_local.h"
int
CMS_signed_get_attr_count(const CMS_SignerInfo *si)
{
return sk_X509_ATTRIBUTE_num(si->signedAttrs);
}
LCRYPTO_ALIAS(CMS_signed_get_attr_count);
int
CMS_signed_get_attr_by_NID(const CMS_SignerInfo *si, int nid, int lastpos)
{
return X509at_get_attr_by_NID(si->signedAttrs, nid, lastpos);
}
LCRYPTO_ALIAS(CMS_signed_get_attr_by_NID);
int
CMS_signed_get_attr_by_OBJ(const CMS_SignerInfo *si, const ASN1_OBJECT *obj,
int lastpos)
{
return X509at_get_attr_by_OBJ(si->signedAttrs, obj, lastpos);
}
LCRYPTO_ALIAS(CMS_signed_get_attr_by_OBJ);
X509_ATTRIBUTE *
CMS_signed_get_attr(const CMS_SignerInfo *si, int loc)
{
return sk_X509_ATTRIBUTE_value(si->signedAttrs, loc);
}
LCRYPTO_ALIAS(CMS_signed_get_attr);
X509_ATTRIBUTE *
CMS_signed_delete_attr(CMS_SignerInfo *si, int loc)
{
return sk_X509_ATTRIBUTE_delete(si->signedAttrs, loc);
}
LCRYPTO_ALIAS(CMS_signed_delete_attr);
int
CMS_signed_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr)
{
if (X509at_add1_attr(&si->signedAttrs, attr))
return 1;
return 0;
}
LCRYPTO_ALIAS(CMS_signed_add1_attr);
int
CMS_signed_add1_attr_by_OBJ(CMS_SignerInfo *si, const ASN1_OBJECT *obj, int type,
const void *bytes, int len)
{
if (X509at_add1_attr_by_OBJ(&si->signedAttrs, obj, type, bytes, len))
return 1;
return 0;
}
LCRYPTO_ALIAS(CMS_signed_add1_attr_by_OBJ);
int
CMS_signed_add1_attr_by_NID(CMS_SignerInfo *si, int nid, int type,
const void *bytes, int len)
{
if (X509at_add1_attr_by_NID(&si->signedAttrs, nid, type, bytes, len))
return 1;
return 0;
}
LCRYPTO_ALIAS(CMS_signed_add1_attr_by_NID);
int
CMS_signed_add1_attr_by_txt(CMS_SignerInfo *si, const char *attrname, int type,
const void *bytes, int len)
{
if (X509at_add1_attr_by_txt(&si->signedAttrs, attrname, type, bytes, len))
return 1;
return 0;
}
LCRYPTO_ALIAS(CMS_signed_add1_attr_by_txt);
void *
CMS_signed_get0_data_by_OBJ(CMS_SignerInfo *si, const ASN1_OBJECT *oid,
int lastpos, int type)
{
return X509at_get0_data_by_OBJ(si->signedAttrs, oid, lastpos, type);
}
LCRYPTO_ALIAS(CMS_signed_get0_data_by_OBJ);
int
CMS_unsigned_get_attr_count(const CMS_SignerInfo *si)
{
return sk_X509_ATTRIBUTE_num(si->unsignedAttrs);
}
LCRYPTO_ALIAS(CMS_unsigned_get_attr_count);
int
CMS_unsigned_get_attr_by_NID(const CMS_SignerInfo *si, int nid, int lastpos)
{
return X509at_get_attr_by_NID(si->unsignedAttrs, nid, lastpos);
}
LCRYPTO_ALIAS(CMS_unsigned_get_attr_by_NID);
int
CMS_unsigned_get_attr_by_OBJ(const CMS_SignerInfo *si, const ASN1_OBJECT *obj,
int lastpos)
{
return X509at_get_attr_by_OBJ(si->unsignedAttrs, obj, lastpos);
}
LCRYPTO_ALIAS(CMS_unsigned_get_attr_by_OBJ);
X509_ATTRIBUTE *
CMS_unsigned_get_attr(const CMS_SignerInfo *si, int loc)
{
return sk_X509_ATTRIBUTE_value(si->unsignedAttrs, loc);
}
LCRYPTO_ALIAS(CMS_unsigned_get_attr);
X509_ATTRIBUTE *
CMS_unsigned_delete_attr(CMS_SignerInfo *si, int loc)
{
return sk_X509_ATTRIBUTE_delete(si->unsignedAttrs, loc);
}
LCRYPTO_ALIAS(CMS_unsigned_delete_attr);
int
CMS_unsigned_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr)
{
if (X509at_add1_attr(&si->unsignedAttrs, attr))
return 1;
return 0;
}
LCRYPTO_ALIAS(CMS_unsigned_add1_attr);
int
CMS_unsigned_add1_attr_by_OBJ(CMS_SignerInfo *si, const ASN1_OBJECT *obj,
int type, const void *bytes, int len)
{
if (X509at_add1_attr_by_OBJ(&si->unsignedAttrs, obj, type, bytes, len))
return 1;
return 0;
}
LCRYPTO_ALIAS(CMS_unsigned_add1_attr_by_OBJ);
int
CMS_unsigned_add1_attr_by_NID(CMS_SignerInfo *si, int nid, int type,
const void *bytes, int len)
{
if (X509at_add1_attr_by_NID(&si->unsignedAttrs, nid, type, bytes, len))
return 1;
return 0;
}
LCRYPTO_ALIAS(CMS_unsigned_add1_attr_by_NID);
int
CMS_unsigned_add1_attr_by_txt(CMS_SignerInfo *si, const char *attrname,
int type, const void *bytes, int len)
{
if (X509at_add1_attr_by_txt(&si->unsignedAttrs, attrname, type,
bytes, len))
return 1;
return 0;
}
LCRYPTO_ALIAS(CMS_unsigned_add1_attr_by_txt);
void *
CMS_unsigned_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid, int lastpos,
int type)
{
return X509at_get0_data_by_OBJ(si->unsignedAttrs, oid, lastpos, type);
}
LCRYPTO_ALIAS(CMS_unsigned_get0_data_by_OBJ);