#include "cmslocal.h"
#include "secoid.h"
-#include "secitem.h"
+#include "SecAsn1Item.h"
#include <security_asn1/secasn1.h>
#include <security_asn1/secerr.h>
+#include <security_asn1/secport.h>
+
+#include <Security/SecAsn1Templates.h>
/*
* -------------------------------------------------------------------
* with SecCmsAttributeAddValue.
*/
SecCmsAttribute *
-SecCmsAttributeCreate(PRArenaPool *poolp, SECOidTag oidtag, CSSM_DATA_PTR value, Boolean encoded)
+SecCmsAttributeCreate(PRArenaPool *poolp, SECOidTag oidtag, SecAsn1Item * value, Boolean encoded)
{
SecCmsAttribute *attr;
- CSSM_DATA_PTR copiedvalue;
+ SecAsn1Item * copiedvalue;
void *mark;
PORT_Assert (poolp != NULL);
if (SECITEM_CopyItem(poolp, copiedvalue, value) != SECSuccess)
goto loser;
- SecCmsArrayAdd(poolp, (void ***)&(attr->values), (void *)copiedvalue);
+ if (SecCmsArrayAdd(poolp, (void ***)&(attr->values), (void *)copiedvalue) != SECSuccess)
+ goto loser;
}
attr->encoded = encoded;
* SecCmsAttributeAddValue - add another value to an attribute
*/
OSStatus
-SecCmsAttributeAddValue(PLArenaPool *poolp, SecCmsAttribute *attr, CSSM_DATA_PTR value)
+SecCmsAttributeAddValue(PLArenaPool *poolp, SecCmsAttribute *attr, SecAsn1Item * value)
{
- CSSM_DATA copiedvalue;
+ SecAsn1Item copiedvalue;
void *mark;
PORT_Assert (poolp != NULL);
* - Multiple values are *not* expected.
* - Empty values are *not* expected.
*/
-CSSM_DATA_PTR
+SecAsn1Item *
SecCmsAttributeGetValue(SecCmsAttribute *attr)
{
- CSSM_DATA_PTR value;
+ SecAsn1Item * value;
if (attr == NULL)
return NULL;
* SecCmsAttributeCompareValue - compare the attribute's first value against data
*/
Boolean
-SecCmsAttributeCompareValue(SecCmsAttribute *attr, CSSM_DATA_PTR av)
+SecCmsAttributeCompareValue(SecCmsAttribute *attr, SecAsn1Item * av)
{
- CSSM_DATA_PTR value;
+ SecAsn1Item * value;
if (attr == NULL)
return PR_FALSE;
* helper function for dynamic template determination of the attribute value
*/
static const SecAsn1Template *
-cms_attr_choose_attr_value_template(void *src_or_dest, Boolean encoding, const char *buf, void *dest)
+cms_attr_choose_attr_value_template(void *src_or_dest, Boolean encoding, const char *buf, size_t len, void *dest)
{
const SecAsn1Template *theTemplate;
SecCmsAttribute *attribute;
theTemplate = SEC_ASN1_GET(kSecAsn1ObjectIDTemplate);
break;
case SEC_OID_PKCS9_MESSAGE_DIGEST:
+ case SEC_OID_APPLE_HASH_AGILITY:
encoded = PR_FALSE;
theTemplate = SEC_ASN1_GET(kSecAsn1OctetStringTemplate);
break;
* and think long and hard about the implications of making it always
* do the reordering.)
*/
-CSSM_DATA_PTR
-SecCmsAttributeArrayEncode(PRArenaPool *poolp, SecCmsAttribute ***attrs, CSSM_DATA_PTR dest)
+SecAsn1Item *
+SecCmsAttributeArrayEncode(PRArenaPool *poolp, SecCmsAttribute ***attrs, SecAsn1Item * dest)
{
return SEC_ASN1EncodeItem (poolp, dest, (void *)attrs, nss_cms_set_of_attribute_template);
}
* SecCmsAttributeArraySetAttr - set an attribute's value in a set of attributes
*/
OSStatus
-SecCmsAttributeArraySetAttr(PLArenaPool *poolp, SecCmsAttribute ***attrs, SECOidTag type, CSSM_DATA_PTR value, Boolean encoded)
+SecCmsAttributeArraySetAttr(PLArenaPool *poolp, SecCmsAttribute ***attrs, SECOidTag type, SecAsn1Item * value, Boolean encoded)
{
SecCmsAttribute *attr;
void *mark;