rearrange order of default CMS SignedData signed attributes for better interop compatibility

This commit is contained in:
Chris Conlon
2019-02-11 14:48:37 -07:00
parent 56736a3563
commit fb6aaf2ae2

View File

@@ -1458,6 +1458,7 @@ static int wc_PKCS7_BuildSignedAttributes(PKCS7* pkcs7, ESD* esd,
int timeSz; int timeSz;
PKCS7Attrib cannedAttribs[3]; PKCS7Attrib cannedAttribs[3];
#endif #endif
word32 idx = 0;
word32 cannedAttribsCount; word32 cannedAttribsCount;
if (pkcs7 == NULL || esd == NULL || contentType == NULL || if (pkcs7 == NULL || esd == NULL || contentType == NULL ||
@@ -1483,20 +1484,22 @@ static int wc_PKCS7_BuildSignedAttributes(PKCS7* pkcs7, ESD* esd,
cannedAttribsCount = sizeof(cannedAttribs)/sizeof(PKCS7Attrib); cannedAttribsCount = sizeof(cannedAttribs)/sizeof(PKCS7Attrib);
cannedAttribs[0].oid = contentTypeOid; cannedAttribs[idx].oid = contentTypeOid;
cannedAttribs[0].oidSz = contentTypeOidSz; cannedAttribs[idx].oidSz = contentTypeOidSz;
cannedAttribs[0].value = contentType; cannedAttribs[idx].value = contentType;
cannedAttribs[0].valueSz = contentTypeSz; cannedAttribs[idx].valueSz = contentTypeSz;
cannedAttribs[1].oid = messageDigestOid; idx++;
cannedAttribs[1].oidSz = messageDigestOidSz;
cannedAttribs[1].value = esd->contentDigest;
cannedAttribs[1].valueSz = hashSz + 2; /* ASN.1 heading */
#ifndef NO_ASN_TIME #ifndef NO_ASN_TIME
cannedAttribs[2].oid = signingTimeOid; cannedAttribs[idx].oid = signingTimeOid;
cannedAttribs[2].oidSz = signingTimeOidSz; cannedAttribs[idx].oidSz = signingTimeOidSz;
cannedAttribs[2].value = signingTime; cannedAttribs[idx].value = signingTime;
cannedAttribs[2].valueSz = timeSz; cannedAttribs[idx].valueSz = timeSz;
idx++;
#endif #endif
cannedAttribs[idx].oid = messageDigestOid;
cannedAttribs[idx].oidSz = messageDigestOidSz;
cannedAttribs[idx].value = esd->contentDigest;
cannedAttribs[idx].valueSz = hashSz + 2; /* ASN.1 heading */
esd->signedAttribsCount += cannedAttribsCount; esd->signedAttribsCount += cannedAttribsCount;
esd->signedAttribsSz += EncodeAttributes(&esd->signedAttribs[0], 3, esd->signedAttribsSz += EncodeAttributes(&esd->signedAttribs[0], 3,