You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.2 KiB
82 lines
2.2 KiB
package zxsdk
|
|
|
|
import (
|
|
"wallet_sdk"
|
|
"zxsdk/constant"
|
|
"zxsdk/log"
|
|
model2 "zxsdk/model"
|
|
"zxsdk/tools"
|
|
)
|
|
|
|
func (zx ZxChainClient) EvSave(data []byte, extendInfo string) (*model2.EvSaveResp, error) {
|
|
if data == nil || len(data) == 0 {
|
|
log.Logger.Errorf("local sdk error: evidence data cannot be empty")
|
|
return nil, constant.EVIDENCE_DATA_EMPTY_ERROR
|
|
}
|
|
|
|
hash, err := wallet_sdk.SM3Hash(data)
|
|
if err != nil {
|
|
log.Logger.Errorf("local sdk error: calculate hash error: %s", err.Error())
|
|
return nil, constant.SM3HASH_ERROR
|
|
}
|
|
|
|
sign, err := wallet_sdk.SignByPriKey(zx.privateKey, tools.GetSignData(zx.publicKey, hash, extendInfo))
|
|
if err != nil {
|
|
log.Logger.Errorf("local sdk error: signature evsave param error: %s", err.Error())
|
|
return nil, constant.SIGNATURE_ERROR
|
|
}
|
|
|
|
trigger := tools.HttpTrigger{
|
|
HeaderDic: zx.makeHeader(),
|
|
Client: zx.httpClient,
|
|
}
|
|
|
|
req := &model2.EvSaveReq{
|
|
Hash: hash,
|
|
PublicKey: zx.publicKey,
|
|
Sign: sign,
|
|
ExtendInfo: extendInfo,
|
|
}
|
|
resp := &model2.EvSaveResp{}
|
|
err = trigger.HttpPost(constant.ZxChainBaseUrl+"/api/v1/ev/save", req, resp)
|
|
if err != nil {
|
|
log.Logger.TraceErrorf(trigger.HeaderDic[constant.TraceKey], "evsave error: %v", err.Error())
|
|
return nil, err
|
|
}
|
|
|
|
return resp, nil
|
|
}
|
|
|
|
func (zx ZxChainClient) EvQuery(evId string, hash string, txId string) (*model2.QueryEvStatusResp, error) {
|
|
if evId == "" && hash == "" && txId == "" {
|
|
log.Logger.Errorf("local sdk error: evid, hash, txId cannot be empty at the same time")
|
|
return nil, constant.RESP_PARAM_ERROR
|
|
}
|
|
|
|
trigger := tools.HttpTrigger{
|
|
Client: tools.DefaultHttpClient,
|
|
HeaderDic: zx.makeHeader(),
|
|
QueryDic: map[string]string{
|
|
"evId": evId,
|
|
"hash": hash,
|
|
"txId": txId,
|
|
},
|
|
}
|
|
|
|
resp := &model2.QueryEvStatusResp{}
|
|
err := trigger.HttpGet(constant.ZxChainBaseUrl+"/api/v1/ev/query", resp)
|
|
if err != nil {
|
|
log.Logger.TraceErrorf(trigger.HeaderDic[constant.TraceKey], "evquery error: %v", err.Error())
|
|
return nil, err
|
|
}
|
|
|
|
return resp, nil
|
|
}
|
|
|
|
func (zx ZxChainClient) GetEvCert(evId string) (string, error) {
|
|
if evId == "" {
|
|
log.Logger.Errorf("local sdk error: evid cannot be empty")
|
|
return "", constant.EVID_CANNOT_BE_EMPTY_ERROR
|
|
}
|
|
return constant.EvCertBaseUrl + evId, nil
|
|
}
|
|
|