函数名:rnp_ffi_set_pass_provider()
适用版本:RNP 1.0.0 及以上
用法:rnp_ffi_set_pass_provider() 函数用于设置 RNP(Rebasing Neural Processor) 的密码提供者。
语法:rnp_ffi_set_pass_provider(resource $ffi, callable $callback)
参数:
- $ffi:RNP 对象的资源句柄。
- $callback:一个回调函数,用于提供密码。回调函数的定义如下:
function callback(string $key, int $key_type, string &$password): int
回调函数接受 3 个参数:
- $key:密码对应的键。
- $key_type:密码键类型,可以是以下常量之一:
- RNP_KEYSTORE_PASS_PROVIDER : 密码提供者。
- RNP_KEYSTORE_PASS_CALLBACK : 密码回调。
- $password:一个字符串引用,用于存储回调函数返回的密码。请注意,回调函数在返回之前应该将密码存储在这个引用中。
返回值:
- 成功时返回 0,否则返回一个非零值。
示例:
$ffi = rnp_ffi_create();
rnp_ffi_set_pass_provider($ffi, function (string $key, int $key_type, string &$password): int {
if ($key === "my_key" && $key_type === RNP_KEYSTORE_PASS_PROVIDER) {
$password = "my_password";
return 0;
}
return -1; // 返回一个非零值表示密码提供失败
});
上述示例中,我们创建了一个 RNP 对象的资源句柄 $ffi,并使用 rnp_ffi_set_pass_provider() 函数设置了密码提供者的回调函数。回调函数会在需要密码时被调用,根据传入的键和键类型判断是否为我们所需的密码,并将密码存储在 $password 引用中。
请注意,示例中的回调函数仅作示范用途,实际使用时应根据具体需求编写合适的逻辑来提供密码。