X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/427c49bcad63d042b29ada2ac27e3dfc4845c779..ce3c8656732c924baf7e88df75eab50891bdc471:/libsecurity_smime/lib/cmsattr.c diff --git a/libsecurity_smime/lib/cmsattr.c b/libsecurity_smime/lib/cmsattr.c index 6165481b..05d0033b 100644 --- a/libsecurity_smime/lib/cmsattr.c +++ b/libsecurity_smime/lib/cmsattr.c @@ -38,10 +38,13 @@ #include "cmslocal.h" #include "secoid.h" -#include "secitem.h" +#include "SecAsn1Item.h" #include #include +#include + +#include /* * ------------------------------------------------------------------- @@ -61,10 +64,10 @@ * 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); @@ -83,13 +86,14 @@ SecCmsAttributeCreate(PRArenaPool *poolp, SECOidTag oidtag, CSSM_DATA_PTR value, goto loser; if (value != NULL) { - if ((copiedvalue = SECITEM_AllocItem(poolp, NULL, (unsigned int)value->Length)) == NULL) + if ((copiedvalue = SECITEM_AllocItem(poolp, NULL, value->Length)) == NULL) goto loser; 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; @@ -108,9 +112,9 @@ loser: * 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); @@ -155,10 +159,10 @@ SecCmsAttributeGetType(SecCmsAttribute *attr) * - 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; @@ -178,9 +182,9 @@ SecCmsAttributeGetValue(SecCmsAttribute *attr) * 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; @@ -201,7 +205,7 @@ SecCmsAttributeCompareValue(SecCmsAttribute *attr, CSSM_DATA_PTR av) * 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; @@ -251,6 +255,7 @@ cms_attr_choose_attr_value_template(void *src_or_dest, Boolean encoding, const c 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; @@ -312,8 +317,8 @@ const SecAsn1Template nss_cms_set_of_attribute_template[] = { * 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); } @@ -416,7 +421,7 @@ loser: * 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;