鸿蒙PC三方库适配OAT.xml 与 SHA512SUM 解读:开源合规与源码校验
OAT.xml和SHA512SUM。它们不像HPKBUILD那样直接参与构建,但各自承担着重要的职责——OAT.xml管开源合规扫描,SHA512SUM管源码完整性校验。这篇文章分别解读这两个文件。
OAT.xml 与 SHA512SUM 解读:开源合规与源码校验
欢迎大家加入鸿蒙PC开发者社区
前言
在 SHA 库的适配目录中,有两个容易被忽略的文件:OAT.xml 和 SHA512SUM。它们不像 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 校验失败怎么办?
- 确认文件名是否匹配
- 确认文件是否完整下载
- 重新生成校验和:
sha512sum <文件名> > SHA512SUM
Q:为什么用 SHA-512 而不是 SHA-256?
SHA-512 提供更强的安全性(256 位碰撞抵抗 vs 128 位),对于开源合规场景,更强的校验和更可靠。
两个文件的关系
| 文件 | 职责 | 工具 | 触发时机 |
|---|---|---|---|
OAT.xml |
开源合规扫描配置 | OAT 工具 | CI/CD 流水线或手动扫描 |
SHA512SUM |
源码完整性校验 | sha512sum 命令 | 构建前或发布前 |
两者共同保障项目的合规性和完整性:
OAT.xml确保"法律合规"——版权、许可证都正确SHA512SUM确保"技术合规"——源码没被篡改
更多推荐





所有评论(0)