// 生成主公私钥
x = new_sm9_gen_sign_master_key()
pri = mid( $x, 0, 32 )
pub = mid( $x, 32 )
// 生成签名私钥
dek = new_sm9_gen_sign_pri_key( ansi_string( "Alice" ), 01, $pri )
// 采用规范中的标准数据
// 签名主密钥和用户签名密钥产生过程中的相关值:
// 签名主私钥ks:0130E7 8459D785 45CB54C5 87E02CF4 80CE0B66 340F319F 348A1D5B 1F2DC5F4
// 签名主公钥Ppub-s = [ks]P2 = (xPpub-s , yPpub-s):
// 坐标xPpub-s:(9F64080B 3084F733 E48AFF4B 41B56501 1CE0711C 5E392CFB 0AB1B679 1B94C408,
// 29DBA116 152D1F78 6CE843ED 24A3B573 414D2177 386A92DD 8F14D656 96EA5E32)
// 坐标yPpub-s:(69850938 ABEA0112 B57329F4 47E3A0CB AD3E2FDB 1A77F335 E89E1408 D0EF1C25,
// 41E00A53 DDA532DA 1A7CE027 B7A46F74 1006E85F 5CDFF073 0E75C05F B4E3216D)
ks = 000130E7 8459D785 45CB54C5 87E02CF4 80CE0B66 340F319F 348A1D5B 1F2DC5F4
pub = new_sm9_get_sign_master_key( $ks )
if $pub != 9F64080B3084F733E48AFF4B41B565011CE0711C5E392CFB0AB1B6791B94C40829DBA116152D1F786CE843ED24A3B573414D2177386A92DD8F14D65696EA5E3269850938ABEA0112B57329F447E3A0CBAD3E2FDB1A77F335E89E1408D0EF1C2541E00A53DDA532DA1A7CE027B7A46F741006E85F5CDFF0730E75C05FB4E3216D
?
pause
endif
ida = ansi_string( "Alice" )
hid = 01
// 签名私钥dsA = [t2]P1 = (xdsA, ydsA):
// 坐标xdsA:A5702F05 CF131530 5E2D6EB6 4B0DEB92 3DB1A0BC F0CAFF90 523AC875 4AA69820
// 坐标ydsA:78559A84 4411F982 5C109F5E E3F52D72 0DD01785 392A727B B1556952 B2B013D3
dsa = new_sm9_gen_sign_pri_key( $ida, $hid, $ks )
if $dsa != A5702F05CF1315305E2D6EB64B0DEB923DB1A0BCF0CAFF90523AC8754AA6982078559A844411F9825C109F5EE3F52D720DD01785392A727BB1556952B2B013D3
?
pause
endif
// 签名步骤中的相关值:
// 待签名消息M:Chinese IBS standard
// M 的16 进制表示:4368696E 65736520 49425320 7374616E 64617264
m = ansi_string( "Chinese IBS standard" )
r_s = new_sm9_sign( $m, $pub, $dsa )
r = mid( $r_s, 0, 32 )
s = mid( $r_s, 32 )
res = new_sm9_verify( $m, $ida, $hid, $pub, $r_s )
if $res != 00
?
pause
endif
? "success"