## @file\r
# generate capsule\r
#\r
-# Copyright (c) 2007 - 2016, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.<BR>\r
#\r
# This program and the accompanying materials\r
# are licensed and made available under the terms and conditions of the BSD License\r
Content.write(File.read())\r
File.close()\r
for fmp in self.FmpPayloadList:\r
- Buffer = fmp.GenCapsuleSubItem()\r
+ if fmp.Existed:\r
+ FwMgrHdr.write(pack('=Q', PreSize))\r
+ PreSize += len(fmp.Buffer)\r
+ Content.write(fmp.Buffer)\r
+ continue\r
+ if fmp.ImageFile:\r
+ for Obj in fmp.ImageFile:\r
+ fmp.ImageFile = Obj.GenCapsuleSubItem()\r
+ if fmp.VendorCodeFile:\r
+ for Obj in fmp.VendorCodeFile:\r
+ fmp.VendorCodeFile = Obj.GenCapsuleSubItem()\r
if fmp.Certificate_Guid:\r
ExternalTool, ExternalOption = FindExtendTool([], GenFdsGlobalVariable.ArchList, fmp.Certificate_Guid)\r
CmdOption = ''\r
if not os.path.isabs(fmp.ImageFile):\r
CapInputFile = os.path.join(GenFdsGlobalVariable.WorkSpaceDir, fmp.ImageFile)\r
CapOutputTmp = os.path.join(GenFdsGlobalVariable.FvDir, self.UiCapsuleName) + '.tmp'\r
- if ExternalTool == None:\r
+ if ExternalTool is None:\r
EdkLogger.error("GenFds", GENFDS_ERROR, "No tool found with GUID %s" % fmp.Certificate_Guid)\r
else:\r
CmdOption += ExternalTool\r
dwLength = 4 + 2 + 2 + 16 + os.path.getsize(CapOutputTmp) - os.path.getsize(CapInputFile)\r
else:\r
dwLength = 4 + 2 + 2 + 16 + 16 + 256 + 256\r
- Buffer += pack('Q', fmp.MonotonicCount)\r
- Buffer += pack('I', dwLength)\r
- Buffer += pack('H', WIN_CERT_REVISION)\r
- Buffer += pack('H', WIN_CERT_TYPE_EFI_GUID)\r
- Buffer += uuid.UUID(fmp.Certificate_Guid).get_bytes_le()\r
- if os.path.exists(CapOutputTmp):\r
- TmpFile = open(CapOutputTmp, 'rb')\r
- Buffer += TmpFile.read()\r
- TmpFile.close()\r
- if fmp.VendorCodeFile:\r
- VendorFile = open(fmp.VendorCodeFile, 'rb')\r
- Buffer += VendorFile.read()\r
- VendorFile.close()\r
- FwMgrHdr.write(pack('=Q', PreSize))\r
- PreSize += len(Buffer)\r
- Content.write(Buffer)\r
+ fmp.ImageFile = CapOutputTmp\r
+ AuthData = [fmp.MonotonicCount, dwLength, WIN_CERT_REVISION, WIN_CERT_TYPE_EFI_GUID, fmp.Certificate_Guid]\r
+ fmp.Buffer = fmp.GenCapsuleSubItem(AuthData)\r
else:\r
- ImageFile = open(fmp.ImageFile, 'rb')\r
- Buffer += ImageFile.read()\r
- ImageFile.close()\r
- if fmp.VendorCodeFile:\r
- VendorFile = open(fmp.VendorCodeFile, 'rb')\r
- Buffer += VendorFile.read()\r
- VendorFile.close()\r
- FwMgrHdr.write(pack('=Q', PreSize))\r
- PreSize += len(Buffer)\r
- Content.write(Buffer)\r
+ fmp.Buffer = fmp.GenCapsuleSubItem()\r
+ FwMgrHdr.write(pack('=Q', PreSize))\r
+ PreSize += len(fmp.Buffer)\r
+ Content.write(fmp.Buffer)\r
BodySize = len(FwMgrHdr.getvalue()) + len(Content.getvalue())\r
Header.write(pack('=I', HdrSize + BodySize))\r
#\r