C# YAML文件中的数字签名。类似于XMLDSIG

C# YAML文件中的数字签名。类似于XMLDSIG,c#,encryption,cryptography,digital-signature,C#,Encryption,Cryptography,Digital Signature,XMLDSIG是XML文档的数字签名规范。C#在System.Security.Cryptography.Xml命名空间中有支持XMLDSIG的类 我想知道YAML文档是否有数字签名规范。或者一般来说,如何验证YAML文档的真实性(因为它没有被篡改) 其想法是在YAML文档中放置一个数字签名,然后在另一端使用公钥对其进行验证。不确定是否有任何库在C#、python或go中实现了这一点 我确实在第3.2.1.3节中找到了一些东西。Equality在这里提到了使用规范形式支持数字签名。不确定我是否理

XMLDSIG是XML文档的数字签名规范。C#在System.Security.Cryptography.Xml命名空间中有支持XMLDSIG的类

我想知道YAML文档是否有数字签名规范。或者一般来说,如何验证YAML文档的真实性(因为它没有被篡改)

其想法是在YAML文档中放置一个数字签名,然后在另一端使用公钥对其进行验证。不确定是否有任何库在C#、python或go中实现了这一点


我确实在第3.2.1.3节中找到了一些东西。Equality在这里提到了使用规范形式支持数字签名。不确定我是否理解。

不,Yaml没有特定的数字签名格式。最常见的格式是xml的
XMLDsig
、PDF的
PAdES
、二进制数据的
CMS
/
PKCS#7
/
CAdES
、JSON的
JWS

添加带有签名的yaml标记意味着处理可能导致头痛的文本规范化

我建议将内容包装到签名容器中,作为CMS/PKCS#7或JWT。比如说

{
 "yaml": "SGVsbG8=". //yaml as base64
}
或者使用分离的签名


规范化 你提到的链接是关于如何表示一个数字。请注意,数据中的任何更改或计算签名的处理方式都将产生不同的签名。因此,当使用文本格式时,需要一个众所周知的“规范化”过程,以确保所有各方以相同的方式处理数据