113 lines
5.5 KiB
Go
113 lines
5.5 KiB
Go
package common
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
type SDRError uint32
|
|
|
|
const (
|
|
SDR_OK SDRError = 0x0 // 操作成功
|
|
SDR_BASE SDRError = 0x01000000 // 错误码基础值
|
|
SDR_UNKNOWERR SDRError = SDR_BASE + 0x00000001 // 未知错误
|
|
SDR_NOTSUPPORT SDRError = SDR_BASE + 0x00000002 // 不支持的接口调用
|
|
SDR_COMMFAIL SDRError = SDR_BASE + 0x00000003 // 与设备通信失败
|
|
SDR_HARDFAIL SDRError = SDR_BASE + 0x00000004 // 运算模块无响应
|
|
SDR_OPENDEVICE SDRError = SDR_BASE + 0x00000005 // 打开设备失败
|
|
SDR_OPENSESSION SDRError = SDR_BASE + 0x00000006 // 创建会话失败
|
|
SDR_PARDENY SDRError = SDR_BASE + 0x00000007 // 无私钥使用权限
|
|
SDR_KEYNOTEXIST SDRError = SDR_BASE + 0x00000008 // 不存在的密钥调用
|
|
SDR_ALGNOTSUPPORT SDRError = SDR_BASE + 0x00000009 // 不支持的算法调用
|
|
SDR_ALGMODNOTSUPPORT SDRError = SDR_BASE + 0x0000000A // 不支持的算法模式调用
|
|
SDR_PKOPERR SDRError = SDR_BASE + 0x0000000B // 公钥运算失败
|
|
SDR_SKOPERR SDRError = SDR_BASE + 0x0000000C // 私钥运算失败
|
|
SDR_SIGNERR SDRError = SDR_BASE + 0x0000000D // 签名运算失败
|
|
SDR_VERIFYERR SDRError = SDR_BASE + 0x0000000E // 验证签名失败
|
|
SDR_SYMOPERR SDRError = SDR_BASE + 0x0000000F // 对称算法运算失败
|
|
SDR_STEPERR SDRError = SDR_BASE + 0x00000010 // 多步运算步骤错误
|
|
SDR_FILESIZEERR SDRError = SDR_BASE + 0x00000011 // 文件长度超出限制
|
|
SDR_FILENOEXIST SDRError = SDR_BASE + 0x00000012 // 指定的文件不存在
|
|
SDR_FILEOFSERR SDRError = SDR_BASE + 0x00000013 // 文件起始位置错误
|
|
SDR_KEYTYPEERR SDRError = SDR_BASE + 0x00000014 // 密钥类型错误
|
|
SDR_KEYERR SDRError = SDR_BASE + 0x00000015 // 密钥错误
|
|
SDR_ENCDATAERR SDRError = SDR_BASE + 0x00000016 // ECC加密数据错误
|
|
SDR_RANDERR SDRError = SDR_BASE + 0x00000017 // 随机数产生失败
|
|
SDR_PRKRERR SDRError = SDR_BASE + 0x00000018 // 私钥使用权限获取失败
|
|
SDR_MACERR SDRError = SDR_BASE + 0x00000019 // MAC运算失败
|
|
SDR_FILEEXISTS SDRError = SDR_BASE + 0x0000001A // 指定文件已存在
|
|
SDR_FILEWERR SDRError = SDR_BASE + 0x0000001B // 文件写入失败
|
|
SDR_NOBUFFER SDRError = SDR_BASE + 0x0000001C // 存储空间不足
|
|
SDR_INARGERR SDRError = SDR_BASE + 0x0000001D // 输入参数错误
|
|
SDR_OUTARGERR SDRError = SDR_BASE + 0x0000001E // 输出参数错误
|
|
)
|
|
|
|
func (s SDRError) Error() string {
|
|
return s.String()
|
|
}
|
|
func (s SDRError) String() string {
|
|
switch s {
|
|
case SDR_UNKNOWERR:
|
|
return fmt.Sprintf("0x%08x: 未知错误", uint32(SDR_UNKNOWERR))
|
|
case SDR_NOTSUPPORT:
|
|
return fmt.Sprintf("0x%08x: 不支持的接口调用", uint32(SDR_NOTSUPPORT))
|
|
case SDR_COMMFAIL:
|
|
return fmt.Sprintf("0x%08x: 与设备通信失败", uint32(SDR_COMMFAIL))
|
|
case SDR_HARDFAIL:
|
|
return fmt.Sprintf("0x%08x: 运算模块无响应", uint32(SDR_HARDFAIL))
|
|
case SDR_OPENDEVICE:
|
|
return fmt.Sprintf("0x%08x: 打开设备失败", uint32(SDR_OPENDEVICE))
|
|
case SDR_OPENSESSION:
|
|
return fmt.Sprintf("0x%08x: 创建会话失败", uint32(SDR_OPENSESSION))
|
|
case SDR_PARDENY:
|
|
return fmt.Sprintf("0x%08x: 无私钥使用权限", uint32(SDR_PARDENY))
|
|
case SDR_KEYNOTEXIST:
|
|
return fmt.Sprintf("0x%08x: 不存在的密钥调用", uint32(SDR_KEYNOTEXIST))
|
|
case SDR_ALGNOTSUPPORT:
|
|
return fmt.Sprintf("0x%08x: 不支持的算法调用", uint32(SDR_ALGNOTSUPPORT))
|
|
case SDR_ALGMODNOTSUPPORT:
|
|
return fmt.Sprintf("0x%08x: 不支持的算法模式调用", uint32(SDR_ALGMODNOTSUPPORT))
|
|
case SDR_PKOPERR:
|
|
return fmt.Sprintf("0x%08x: 公钥运算失败", uint32(SDR_PKOPERR))
|
|
case SDR_SKOPERR:
|
|
return fmt.Sprintf("0x%08x: 私钥运算失败", uint32(SDR_SKOPERR))
|
|
case SDR_SIGNERR:
|
|
return fmt.Sprintf("0x%08x: 签名运算失败", uint32(SDR_SIGNERR))
|
|
case SDR_VERIFYERR:
|
|
return fmt.Sprintf("0x%08x: 验证签名失败", uint32(SDR_VERIFYERR))
|
|
case SDR_SYMOPERR:
|
|
return fmt.Sprintf("0x%08x: 对称算法运算失败", uint32(SDR_SYMOPERR))
|
|
case SDR_STEPERR:
|
|
return fmt.Sprintf("0x%08x: 多步运算步骤错误", uint32(SDR_STEPERR))
|
|
case SDR_FILESIZEERR:
|
|
return fmt.Sprintf("0x%08x: 文件长度超出限制", uint32(SDR_FILESIZEERR))
|
|
case SDR_FILENOEXIST:
|
|
return fmt.Sprintf("0x%08x: 指定的文件不存在", uint32(SDR_FILENOEXIST))
|
|
case SDR_FILEOFSERR:
|
|
return fmt.Sprintf("0x%08x: 文件起始位置错误", uint32(SDR_FILEOFSERR))
|
|
case SDR_KEYTYPEERR:
|
|
return fmt.Sprintf("0x%08x: 密钥类型错误", uint32(SDR_KEYTYPEERR))
|
|
case SDR_KEYERR:
|
|
return fmt.Sprintf("0x%08x: 密钥错误", uint32(SDR_KEYERR))
|
|
case SDR_ENCDATAERR:
|
|
return fmt.Sprintf("0x%08x: ECC加密数据错误", uint32(SDR_ENCDATAERR))
|
|
case SDR_RANDERR:
|
|
return fmt.Sprintf("0x%08x: 随机数产生失败", uint32(SDR_RANDERR))
|
|
case SDR_PRKRERR:
|
|
return fmt.Sprintf("0x%08x: 私钥使用权限获取失败", uint32(SDR_PRKRERR))
|
|
case SDR_MACERR:
|
|
return fmt.Sprintf("0x%08x: MAC运算失败", uint32(SDR_MACERR))
|
|
case SDR_FILEEXISTS:
|
|
return fmt.Sprintf("0x%08x: 指定文件已存在", uint32(SDR_FILEEXISTS))
|
|
case SDR_FILEWERR:
|
|
return fmt.Sprintf("0x%08x: 文件写入失败", uint32(SDR_FILEWERR))
|
|
case SDR_NOBUFFER:
|
|
return fmt.Sprintf("0x%08x: 存储空间不足", uint32(SDR_NOBUFFER))
|
|
case SDR_INARGERR:
|
|
return fmt.Sprintf("0x%08x: 输入参数错误", uint32(SDR_INARGERR))
|
|
case SDR_OUTARGERR:
|
|
return fmt.Sprintf("0x%08x: 输出参数错误", uint32(SDR_OUTARGERR))
|
|
default:
|
|
return "未知错误"
|
|
}
|
|
}
|