// 生成主公私钥
x   new_sm9_gen_sign_master_key()
pri mid$x032 )
pub mid$x32 )

// 生成签名私钥
dek new_sm9_gen_sign_pri_keyansi_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_s032 )
s   mid$r_s32 )

res new_sm9_verify$m$ida$hid$pub$r_s )
if $res != 00
    
?
    
pause
endif

? "success"