From 34016496bce5858881f1f023e913549d5ec5dc34 Mon Sep 17 00:00:00 2001 From: Evgeny Margolis Date: Wed, 1 Dec 2021 08:12:43 -0800 Subject: [PATCH] Allocate ChipCertificateData on a Stack Rather than on Heap (#12333) --- src/credentials/CHIPCert.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/credentials/CHIPCert.cpp b/src/credentials/CHIPCert.cpp index c6acf9d1e9f49f..6a37e9b46c500d 100644 --- a/src/credentials/CHIPCert.cpp +++ b/src/credentials/CHIPCert.cpp @@ -928,23 +928,25 @@ CHIP_ERROR ExtractCATsFromOpCert(const ChipCertificateData & opcert, CATValues & CHIP_ERROR ExtractNodeIdFabricIdFromOpCert(const ByteSpan & opcert, NodeId * nodeId, FabricId * fabricId) { ChipCertificateSet certSet; + ChipCertificateData certData; - ReturnErrorOnFailure(certSet.Init(1)); + ReturnErrorOnFailure(certSet.Init(&certData, 1)); ReturnErrorOnFailure(certSet.LoadCert(opcert, BitFlags())); - return ExtractNodeIdFabricIdFromOpCert(certSet.GetCertSet()[0], nodeId, fabricId); + return ExtractNodeIdFabricIdFromOpCert(certData, nodeId, fabricId); } CHIP_ERROR ExtractPublicKeyFromChipCert(const ByteSpan & chipCert, P256PublicKeySpan & publicKey) { ChipCertificateSet certSet; + ChipCertificateData certData; - ReturnErrorOnFailure(certSet.Init(1)); + ReturnErrorOnFailure(certSet.Init(&certData, 1)); ReturnErrorOnFailure(certSet.LoadCert(chipCert, BitFlags())); - publicKey = certSet.GetLastCert()->mPublicKey; + publicKey = certData.mPublicKey; return CHIP_NO_ERROR; } @@ -952,12 +954,13 @@ CHIP_ERROR ExtractPublicKeyFromChipCert(const ByteSpan & chipCert, P256PublicKey CHIP_ERROR ExtractSKIDFromChipCert(const ByteSpan & chipCert, CertificateKeyId & skid) { ChipCertificateSet certSet; + ChipCertificateData certData; - ReturnErrorOnFailure(certSet.Init(1)); + ReturnErrorOnFailure(certSet.Init(&certData, 1)); ReturnErrorOnFailure(certSet.LoadCert(chipCert, BitFlags())); - skid = certSet.GetLastCert()->mSubjectKeyId; + skid = certData.mSubjectKeyId; return CHIP_NO_ERROR; }