mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-01 03:34:39 +02:00
Merge pull request #746 from cconlon/pkcs7ukm
PKCS7: fix optional UserKeyingMaterial encoding
This commit is contained in:
@@ -1326,6 +1326,7 @@ static int wc_PKCS7_KariGenerateSharedInfo(WC_PKCS7_KARI* kari, int keyWrapOID)
|
|||||||
int keyInfoSz = 0;
|
int keyInfoSz = 0;
|
||||||
int suppPubInfoSeqSz = 0;
|
int suppPubInfoSeqSz = 0;
|
||||||
int entityUInfoOctetSz = 0;
|
int entityUInfoOctetSz = 0;
|
||||||
|
int entityUInfoExplicitSz = 0;
|
||||||
int kekOctetSz = 0;
|
int kekOctetSz = 0;
|
||||||
int sharedInfoSz = 0;
|
int sharedInfoSz = 0;
|
||||||
|
|
||||||
@@ -1335,6 +1336,7 @@ static int wc_PKCS7_KariGenerateSharedInfo(WC_PKCS7_KARI* kari, int keyWrapOID)
|
|||||||
byte keyInfo[MAX_ALGO_SZ];
|
byte keyInfo[MAX_ALGO_SZ];
|
||||||
byte suppPubInfoSeq[MAX_SEQ_SZ];
|
byte suppPubInfoSeq[MAX_SEQ_SZ];
|
||||||
byte entityUInfoOctet[MAX_OCTET_STR_SZ];
|
byte entityUInfoOctet[MAX_OCTET_STR_SZ];
|
||||||
|
byte entityUInfoExplicitSeq[MAX_SEQ_SZ];
|
||||||
byte kekOctet[MAX_OCTET_STR_SZ];
|
byte kekOctet[MAX_OCTET_STR_SZ];
|
||||||
|
|
||||||
if (kari == NULL)
|
if (kari == NULL)
|
||||||
@@ -1357,6 +1359,11 @@ static int wc_PKCS7_KariGenerateSharedInfo(WC_PKCS7_KARI* kari, int keyWrapOID)
|
|||||||
if (kari->ukmSz > 0) {
|
if (kari->ukmSz > 0) {
|
||||||
entityUInfoOctetSz = SetOctetString(kari->ukmSz, entityUInfoOctet);
|
entityUInfoOctetSz = SetOctetString(kari->ukmSz, entityUInfoOctet);
|
||||||
sharedInfoSz += (entityUInfoOctetSz + kari->ukmSz);
|
sharedInfoSz += (entityUInfoOctetSz + kari->ukmSz);
|
||||||
|
|
||||||
|
entityUInfoExplicitSz = SetExplicit(0, entityUInfoOctetSz +
|
||||||
|
kari->ukmSz,
|
||||||
|
entityUInfoExplicitSeq);
|
||||||
|
sharedInfoSz += entityUInfoExplicitSz;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* keyInfo */
|
/* keyInfo */
|
||||||
@@ -1379,6 +1386,9 @@ static int wc_PKCS7_KariGenerateSharedInfo(WC_PKCS7_KARI* kari, int keyWrapOID)
|
|||||||
XMEMCPY(kari->sharedInfo + idx, keyInfo, keyInfoSz);
|
XMEMCPY(kari->sharedInfo + idx, keyInfo, keyInfoSz);
|
||||||
idx += keyInfoSz;
|
idx += keyInfoSz;
|
||||||
if (kari->ukmSz > 0) {
|
if (kari->ukmSz > 0) {
|
||||||
|
XMEMCPY(kari->sharedInfo + idx, entityUInfoExplicitSeq,
|
||||||
|
entityUInfoExplicitSz);
|
||||||
|
idx += entityUInfoExplicitSz;
|
||||||
XMEMCPY(kari->sharedInfo + idx, entityUInfoOctet, entityUInfoOctetSz);
|
XMEMCPY(kari->sharedInfo + idx, entityUInfoOctet, entityUInfoOctetSz);
|
||||||
idx += entityUInfoOctetSz;
|
idx += entityUInfoOctetSz;
|
||||||
XMEMCPY(kari->sharedInfo + idx, kari->ukm, kari->ukmSz);
|
XMEMCPY(kari->sharedInfo + idx, kari->ukm, kari->ukmSz);
|
||||||
|
Reference in New Issue
Block a user