clear

? "首先验证工具的流程,使用两种方法来进行探测"

split

? "下面是由工具生成的私钥,输入数据,签名值"
pri         = A6490F68AE7E53241B27E932583B7CEBF8A240F6EE54AA4102A3E7532833EB84
pub         = new_sm2_get_pubkey( $pri )

input       = 1122334411223344112233441122334411223344112233441122334411223344
rs          = A9A7E303A32EC48B434174B81B1FD34E596DA99E42ABB24EE8892D8EAFCEB98B81ADED20D7618F285CF2C594DC9C81469ADF24F42E5648171B8EC5DB4CCD2692


? "1. 将input当成hash值,进行验签"
hash        = $input
result      = new_sm2_verify( $pub, $hash, $rs )
if $result != 00
    
?
    
? "input不是hash值"
    
pause
else
    
? "验签成功"
    
? "input是hash值"
endif


? "2. 将input当成明文,进行验签"
// sm2参数
P           = FF FF FF FE FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00 FF FF FF FF FF FF FF FF
A           = FF FF FF FE FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00 FF FF FF FF FF FF FF FC
B           = 28 E9 FA 9E 9D 9F 5E 34 4D 5A 9E 4B CF 65 09 A7 F3 97 89 F5 15 AB 8F 92 DD BC BD 41 4D 94 0E 93
GX          = 32 C4 AE 2C 1F 19 81 19 5F 99 04 46 6A 39 C9 94 8F E3 0B BF F2 66 0B E1 71 5A 45 89 33 4C 74 C7
GY          = BC 37 36 A2 F4 F6 77 9C 59 BD CE E3 6B 69 21 53 D0 A9 87 7C C6 2A 47 40 02 DF 32 E5 21 39 F0 A0
N           = FF FF FF FE FF FF FF FF FF FF FF FF FF FF FF FF 72 03 DF 6B 21 C6 05 2B 53 BB F4 09 39 D5 41 23
H           = 01

// 对明文进行验证的流程
tmp         = 00 80
tmp         = $tmp 3132333435363738 3132333435363738
tmp         = $tmp $a
tmp         = $tmp $b
tmp         = $tmp $gx
tmp         = $tmp $gy
tmp         = $tmp $pub
tmp         = sm3_hash( $tmp )

tmp         = $tmp $input
tmp         = sm3_hash( $tmp )
result      = new_sm2_verify( $pub, $tmp, $rs )
if $result != 00
    
?
    
? "input不是明文"
    
pause
else
    
? "验签成功"
    
? "input是明文"
endif


? "前面已经探测出工具的输入值是明文,下面检测卡片的log如何操作"

card_pri    = 0375C593A8FB6006590E8FC81F3B8535DB892EE5F9353C6EF5A5A4ABD9973B48
card_pub    = 10895B3EB07DF8412643793E7D643FDAF7606B828DA2DDB244A81AEF1EE3C23FBEB6D8747BED6A416FCAB3505574FA5E741432C9AED6501BCE44C9E8BEC061BF
tmp         = new_sm2_get_pubkey( $card_pri )
if $card_pub != $tmp
    
?
    
pause
endif

input       = 64 cb 31 e4 95 f1 c3 89 51 94 1a 18 b0 9f 45 c6 b7 e9 31 6a 49 8c 1d 7f 98 e6 fb 4d 38 30 e9 d5
rs          = b6 66 75 70 e9 a6 3d a9 08 b3 b6 17 07 bd 66 6b 69 ea ec a4 c2 d8 04 65 8f bc 60 3d 43 eb 77 dd f6 e8 83 7c b5 c4 5b 92 6f 74 6c ae 5c 2d 4b 76 ee 91 ff cd 57 b4 2f 4c 17 e5 f6 0c f6 6d fd 8b
? "3. 将input当成hash值,进行验签"
hash        = $input
result      = new_sm2_verify( $card_pub, $hash, $rs )
if $result != 00
    
?
    
? "input不是hash值"
    
pause
else
    
? "验签成功"
    
? "input是hash值"
endif