SM2_SIGN_2
📄字数 1.5K
👁️阅读量 加载中...
功能描述
- 使用 SM2 私钥进行签名。
- 使用 SM2 私钥、公钥、用户身份标识、明文数据进行签名。
版本支持
在OpenSSL 1.1.1版本及以上、Tongsuo任意版本支持。
语法格式
sql
SM2_SIGN(expr1, expr2)
SM2_SIGN(expr1, expr2, expr3, expr4)输入参数
- 格式1
expr1:SM2 私钥数据,必须为32字节,BINARY类型或者能隐式转换为BINARY类型的其他类型的值。expr2:SM2 预处理 2 结果数据H值,必须为32字节,BINARY类型或者能隐式转换为BINARY类型的其他类型的值。
- 格式2
expr1:SM2 私钥数据,必须为32字节,BINARY类型或者能隐式转换为BINARY类型的其他类型的值。expr2:SM2 公钥数据,必须为64字节,BINARY类型或者能隐式转换为BINARY类型的其他类型的值。expr3:用户身份标识,BINARY类型或者能隐式转换为BINARY类型的其他类型的值,可以为NULL。expr4:明文数据,BINARY类型或者能隐式转换为BINARY类型的其他类型的值。
输出结果
签名数据,BINARY 类型。
执行类型
| TYPE | VALUE | 说明 |
|---|---|---|
| NATIVE | 1 | 函数只能在本地计算 |
| VOLATI | 1 | 函数的每次计算值不同 |
| STABLE | 0 | 函数的每次计算值相同 |
| 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;
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, sm2_h) into sign_data;
dbms_output.put_line('sign_data: ' || rawtohex(sign_data));
END;
/
sign_data: C7FAB89B469F99360CAA522A025DE0ADB936E9FF140BE7BDADFFFB0CC50B16C9956A6CABC07F7CB17CF47C6440C06E47719B598212332CDEBB7A97AFC57DCCBC
Execute successful.
Use time:5 ms.
SQL> DECLARE
key raw;
pubkey raw;
prikey raw;
src VARCHAR := '48656C6C6F';
sm2_z raw;
sm2_h raw;
sign_data raw;
BEGIN
select sm2_key_gen() into key;
select substring(key, 1, 64) into prikey;
select substring(key, 65) into pubkey;
select sm2_sign(prikey, pubkey, null, src) into sign_data;
dbms_output.put_line('sign_data: ' || rawtohex(sign_data));
END;
/
sign_data: 06402214A4691C919822A383945189EE86BCDA13F8B21CA47F6D396347E025DDB9DA2CF38EFEDE1E6C1AB4AD8A98E3D2027D14316C349D8DD49C58EFB1A5121C
Execute successful.
Use time:5 ms.