代码签名和产品签名之间有什么区别?

use*_*088 4 macos code-signing package pkg-file

Apple codesignproductsign.之间有什么区别?我一直在玩他们两个,虽然我不能用productsign它签名代码似乎我可以签署一个包codesign.

所以有两个主要问题:

  • 代码签名和产品签名之间有什么区别?
  • 我可以使用codesign签名包吗?

l'L*_*L'l 7

协同设计

- 用于协同签署应用程序包,框架,验证和操作签名等.

productsign

- 专门用于代码签名.pkgs和.mpkgs(安装程序包/存档).

但为什么我可以使用协同设计签署包裹?

代码签名工具用于验证您签署的单个实体 - 意味着相同的程序.安装程序包不是一个实体,实际上是几个(内容,安装程序和安装程序脚本/插件).由于代码签名工具没有区分您的.pkg实际上与其中包含的内容完全分开,因此使用它来签署安装程序包可能会导致签名无效或安装程序崩溃.

Apple的代码签名指南读取

"对于安装程序包(.pkg和.mpkg软件包),所有内容都是隐式签名的:包含有效负载的CPIO存档,包含安装脚本的CPIO存档以及物料清单(BOM),每个存档都记录了一个哈希值. XAR标题,并且该标题依次被签名.因此,如果在签名包之后修改安装脚本(例如),则签名将无效.