package datasign_request

import (
	"git.sxidc.com/student-physical-examination/contract_lock_sdk/http"
	"os"
)

type DatasignOutsideVerifierRequest struct {
	// 【公钥证书】公钥证书 【作用】 若数据签名不是当前系统签署的，可通过上传公钥证书来验证数据签名是否有效 【说明】 传参格式为Base64。dataSignType为PKCS1（P1签名）时必传；dataSignType为PKCS7（P7签名）时此参数不生效
	PublicCert string `json:"publicCert,omitempty"`
	// 【数据签签名类型】数据签签名类型 【作用】 用来表示需要验证的数据签名的签名类型 【传参】 取值范围：PKCS7（P7签名），PKCS1（P1签名）；不传值默认为：PKCS7（P7签名）
	DataSignType string `json:"dataSignType,omitempty"`
	// 【签署后业务数据】签署后业务数据 【作用】 1、签署数据签名时可上传字符串数据或文件（系统会计算文件hash值），系统会使用数字证书对数据字符串或hash进行签署，得到签署后数据（一串字符串数据） 2、可通过上传签署后的字符串数据判断数据签名是否被篡改 【传参】 1、以16进制字符串形式传入。 2、签署原文件（sourceData）、签署原文数据（sourceDataString）、签署后业务数据（signData）必传其一，传入多个时只按最高优先级查询，优先级为签署原文件>签署原文数据>签署后业务数据。
	SignData string `json:"signData"`
	// 【签署原文件】签署原文件 【作用】 若通过上传文件的方式签署数据签名，可再次传入签署时上传的文件判断数据签名是否被篡改 【传参】 1、支持的文件格式：pdf， xlsx，pptx， docx， doc， wps， xls， ppt， png， webp， tiff，xml，xht，xhtml，htm，html，txt，jpg，jpeg，gif，avi，zip，rtf。 2、签署原文件（sourceData）、签署原文数据（sourceDataString）必传其一，传入多个时只按最高优先级查询，优先级为签署原文件>签署原文数据。
	SourceData *os.File `json:"sourceData,omitempty"`
	// 【签署原文数据】签署原文数据 【作用】 若通过上传字符串的方式签署数据签名，可再次传入签署时上传的字符串数据判断数据签名是否被篡改 【传参】 签署原文件（sourceData）、签署原文数据（sourceDataString）必传其一，传入多个时只按最高优先级查询，优先级为签署原文件>签署原文数据。
	SourceDataString string `json:"sourceDataString,omitempty"`
}

func (obj DatasignOutsideVerifierRequest) GetUrl() string {
	return "/datasign/outside/verifier"
}

func (obj DatasignOutsideVerifierRequest) GetHttpParameter() *http.HttpParameter {
	parameter := http.NewPostHttpParameter()
	parameter.AddParam("publicCert", obj.PublicCert)
	parameter.AddParam("dataSignType", obj.DataSignType)
	parameter.AddParam("signData", obj.SignData)
	parameter.AddParam("sourceDataString", obj.SourceDataString)
	parameter.AddFiles("sourceData", obj.SourceData)
	return parameter
}
