Skip to content

适用虚谷数据库版本

v12.10.8



适用虚谷数据库版本

v12.10.8


SM2_SIGN_2

📄字数 1.5K
👁️阅读量 加载中...

功能描述

  1. 使用 SM2 私钥进行签名。
  2. 使用 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 类型。

执行类型

TYPEVALUE说明
NATIVE1函数只能在本地计算
VOLATI1函数的每次计算值不同
STABLE0函数的每次计算值相同
COMPUTE0函数支持预计算取值
NOT_CONST0函数不支持转常数
HAVE_DEF0函数参数有默认值

示例

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.