Graph::SetPublicKeyForSignatureEncryption
该接口用于设置公钥,该公钥用于对Device侧Matrix要加载的*.so文件进行数字签名验证。需要在创建Graph之前调用该接口。该接口在graph.h中定义。
数字签名采用的算法为SHA256withRSA,本组件只提供数字签名的验证功能,加签的功能需要由用户自己基于该算法进行对需要的SO进行签名,签名文件在host的存放路径需要与SO在统一目录,并且签名文件的名称为SO名称+“.signature”,比如SO的名称为“libhosttodevice.so”,签名文件的名称应为“libhosttodevice.so.signature”。
如果不调用Graph::SetPublicKeyForSignatureEncryption接口或者调用Graph::SetPublicKeyForSignatureEncryption接口的返回值不是HIAI_OK,则Matrix无法设置公钥,Device侧不会启用签名校验机制,因此无法通过数字签名识别出可能被篡改的*.so文件。
函数格式
static HIAI_StatusT Graph::SetPublicKeyForSignatureEncryption(const std::string& publicKey)
参数说明
参数 |
说明 |
取值范围 |
---|---|---|
publicKey |
数字签名验证需要的公钥 |
- |
返回值
返回的部分错误码请参见“错误码示例”中的“错误码”列。
错误码示例
序号 |
错误码 |
错误码描述 |
---|---|---|
1 |
HIAI_OK |
running ok |
std::string publicKey = "-----BEGIN RSA PUBLIC KEY-----\n" "MIIBCAKCAQEAt+kdmu8CdViw2xHlh/JWXOl/0AitDgYGd+9RadULGZmj0tt/UQLv\n" "EYPZaXC8E0a9e97kqfg/ZHinu04XG5RhXv2J0kwkhuBAeCCllefvrQy5OBRqdLYq\n" "EZe8wUO0adSMDsLbPL52b+NdO9/zX+MUzvsBzitWJbiH96s4xCiEERX87/uQfr6F\n" "lHLtrNtooeF2VmxOm3n0yzh4kcSouLgb/O0+v0I+fnR+CTNG95IvzDNOYLWD6ZkL\n" "c7JyIYFZA0CNx9SlPhqbrfjOV5XSG3g3CW0TopUDfHyhAgZt5vACMpeDDx+89tg2\n" "RfT4M9DH/qKzkLlOURvsMShRMD6/PwzsPwIBAw==\n" "-----END RSA PUBLIC KEY-----"; auto ret = Graph::SetPublicKeyForSignatureEncryption(publicKey);