SM2_VERIFY
📄字数 1.6K
👁️阅读量 加载中...
功能描述
使用 SM2 公钥进行验签。
版本支持
在OpenSSL 1.1.1版本及以上、Tongsuo任意版本支持。
语法格式
sql
SM2_VERIFY(expr1, expr2, expr3)
SM2_VERIFY(expr1, expr2, expr3, expr4)输入参数
- 格式1
expr1:SM2 公钥数据,必须为64字节,BINARY类型或者能隐式转换为BINARY类型的其他类型的值。expr2:SM2 预处理 2 结果数据H值,必须为32字节,BINARY类型或者能隐式转换为BINARY类型的其他类型的值。expr3:签名数据,必须为64字节,BINARY类型或者能隐式转换为BINARY类型的其他类型的值。
- 格式2
expr1:SM2 公钥数据,必须为64字节,BINARY类型或者能隐式转换为BINARY类型的其他类型的值。expr2:用户身份标识,BINARY类型或者能隐式转换为BINARY类型的其他类型的值,可以为NULL,代表使用默认值。expr3:明文数据,BINARY类型或者能隐式转换为BINARY类型的其他类型的值。expr4:签名数据,BINARY类型或者能隐式转换为BINARY类型的其他类型的值。
输出结果
验签是否通过,BOOL 类型,true 代表验签通过,false 代表验签不通过。
执行类型
| TYPE | VALUE | 说明 |
|---|---|---|
| NATIVE | 1 | 函数只能在本地计算 |
| VOLATI | 0 | 函数的每次计算值不同 |
| STABLE | 1 | 函数的每次计算值相同 |
| COMPUTE | 0 | 函数支持预计算取值 |
| NOT_CONST | 0 | 函数不支持转常数 |
| HAVE_DEF | 0 | 函数参数有默认值 |
示例
sql
SQL> DECLARE
key raw;
pubkey raw;
prikey raw;
src VARCHAR := '48656C6C6F';
sm2_z raw;
sm2_h raw;
sign_data raw;
verify_result boolean := false;
BEGIN
select sm2_key_gen() into key;
select substring(key, 1, 64) into prikey;
select substring(key, 65) into pubkey;
select sm2_z_digest(pubkey, null) into sm2_z;
select sm2_h_digest(sm2_z, src) into sm2_h;
select sm2_sign(prikey, pubkey, null, src) into sign_data;
select sm2_verify(pubkey, sm2_h, sign_data) into verify_result;
dbms_output.put_line('verify_result: ' || CASE WHEN verify_result THEN 'TRUE' ELSE 'FALSE' END);
END;
/
verify_result: TRUE
Execute successful.
Use time:8 ms.
SQL> DECLARE
key raw;
pubkey raw;
prikey raw;
src VARCHAR := '48656C6C6F';
sm2_z raw;
sm2_h raw;
sign_data raw;
verify_result boolean := false;
BEGIN
select sm2_key_gen() into key;
select substring(key, 1, 64) into prikey;
select substring(key, 65) into pubkey;
select sm2_z_digest(pubkey, null) into sm2_z;
select sm2_h_digest(sm2_z, src) into sm2_h;
select sm2_sign(prikey, pubkey, null, src) into sign_data;
select sm2_verify(pubkey, null, src, sign_data) into verify_result;
dbms_output.put_line('verify_result: ' || CASE WHEN verify_result THEN 'TRUE' ELSE 'FALSE' END);
END;
/
verify_result: TRUE
Execute successful.
Use time:8 ms.