OAT.xml 与 SHA512SUM 解读:开源合规与源码校验

欢迎大家加入鸿蒙PC开发者社区

前言

在 SHA 库的适配目录中,有两个容易被忽略的文件:OAT.xmlSHA512SUM。它们不像 HPKBUILD 那样直接参与构建,但各自承担着重要的职责——OAT.xml 管开源合规扫描,SHA512SUM 管源码完整性校验。

这篇文章分别解读这两个文件。


第一部分:OAT.xml

文件内容

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <oatconfig>
        <filefilterlist>
            <filefilter name="copyrightPolicyFilter" desc="Filters for compatibility,license header policies">
                <filteritem type="filename" name="SHA512SUM" desc="SHA512SUM文件,不添加版权头"/>
            </filefilter>
            <filefilter name="defaultPolicyFilter" desc="Filters for compatibility,license header policies">
                <filteritem type="filename" name="SHA512SUM" desc="SHA512SUM文件,不添加版权头"/>
            </filefilter>
            <filefilter name="binaryFileTypePolicyFilter" desc="Filters for resources files policies">
                <filteritem type="filename" name="*.png" desc="指导文档需要的png图片"/>
            </filefilter>
        </filefilterlist>
    </oatconfig>
</configuration>

OAT 是什么?

OAT(OpenHarmony Automated Test)是 OpenHarmony 的自动化合规扫描工具。它会扫描项目中的所有文件,检查:

  • 版权头:每个源文件是否有正确的版权声明
  • 许可证:许可证信息是否完整和正确
  • 二进制文件:是否有不应存在的二进制文件

OAT.xml 的作用

OAT.xml 是 OAT 工具的配置文件,告诉扫描工具哪些文件可以"豁免"——不需要检查版权头,或者允许存在二进制文件。

通俗地说,OAT 扫描就像一个严格的门卫,检查每个进门的文件是否"合规"。OAT.xml 就是给门卫一份"白名单",名单上的文件可以放行。

三个过滤器解读

1. copyrightPolicyFilter — 版权头策略过滤
<filefilter name="copyrightPolicyFilter" desc="Filters for compatibility,license header policies">
    <filteritem type="filename" name="SHA512SUM" desc="SHA512SUM文件,不添加版权头"/>
</filefilter>

含义SHA512SUM 文件不需要检查版权头。

为什么SHA512SUM 只包含一行校验和数据,不是源代码文件,加版权头没有意义。

2. defaultPolicyFilter — 默认策略过滤
<filefilter name="defaultPolicyFilter" desc="Filters for compatibility,license header policies">
    <filteritem type="filename" name="SHA512SUM" desc="SHA512SUM文件,不添加版权头"/>
</filefilter>

含义:同上,在默认策略中也排除 SHA512SUM。两个过滤器都排除同一个文件,确保无论用哪种策略扫描,SHA512SUM 都不会被报错。

3. binaryFileTypePolicyFilter — 二进制文件策略过滤
<filefilter name="binaryFileTypePolicyFilter" desc="Filters for resources files policies">
    <filteritem type="filename" name="*.png" desc="指导文档需要的png图片"/>
</filefilter>

含义:所有 .png 图片文件允许存在,不会被当作"不应存在的二进制文件"报错。

为什么:文档中可能需要配图(如架构图、流程图),这些 PNG 文件是合理的,不应被合规扫描标记为问题。

过滤器类型速查

属性 含义
type="filename" 按文件名匹配 精确匹配或通配符匹配文件名
name="SHA512SUM" 精确匹配 只排除名为 SHA512SUM 的文件
name="*.png" 通配符匹配 排除所有 PNG 文件

常见问题

Q:如果 OAT 扫描报错了怎么办?

把报错的文件加入 OAT.xml 的对应过滤器中。比如扫描发现 testvals/ 目录下的测试数据文件没有版权头,可以添加:

<filteritem type="filepath" name="testvals/.*" desc="测试数据文件,不添加版权头"/>

第二部分:SHA512SUM

文件内容

0bfa23ab96b6b2cf37b171526ea7d7391b71aaefaf95f80d40dfb9a93a0e0150016dea5532839795e9ecda2049da2a49f264574610beede4b779b791abb63c7d  sha.tar.gz

SHA512SUM 是什么?

SHA512SUM 文件记录了某个文件的 SHA-512 校验和。它的格式是:

<校验和>  <文件名>
  • 校验和:128 个十六进制字符(512 位 = 64 字节 = 128 个十六进制字符)
  • 文件名sha.tar.gz

作用

通俗理解:就像快递的"防拆封标签"——你收到包裹后,对比标签是否完好,确认运输途中没被拆过。SHA512SUM 就是源码的"防拆封标签",确认下载的源码没有被篡改。

如何验证

# 在 sha 目录下执行
sha512sum -c SHA512SUM
  • 输出 sha.tar.gz: OK 表示校验通过
  • 输出 sha.tar.gz: FAILED 表示文件被篡改或损坏

如何生成

如果需要重新生成校验和(比如更新了源码包):

sha512sum sha.tar.gz > SHA512SUM

当前校验对象的说明

当前 SHA512SUM 校验的是 sha.tar.gz 文件。注意,这个文件名是 sha.tar.gz,而不是 sha_3ee0d88fc4f629b2e084f1b4cbf22cd3597542fb.tar.gz(构建系统实际生成的文件名)。如果构建系统生成的 tar.gz 文件名与 SHA512SUM 中记录的不一致,校验会失败。

常见问题

Q:SHA512SUM 校验失败怎么办?

  1. 确认文件名是否匹配
  2. 确认文件是否完整下载
  3. 重新生成校验和:sha512sum <文件名> > SHA512SUM

Q:为什么用 SHA-512 而不是 SHA-256?

SHA-512 提供更强的安全性(256 位碰撞抵抗 vs 128 位),对于开源合规场景,更强的校验和更可靠。


两个文件的关系

文件 职责 工具 触发时机
OAT.xml 开源合规扫描配置 OAT 工具 CI/CD 流水线或手动扫描
SHA512SUM 源码完整性校验 sha512sum 命令 构建前或发布前

两者共同保障项目的合规性完整性

  • OAT.xml 确保"法律合规"——版权、许可证都正确
  • SHA512SUM 确保"技术合规"——源码没被篡改

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐