Documentation ¶
Index ¶
- Variables
- type CertCodeType
- type CertProp
- type CertType
- type Client
- func (cli *Client) Close() (err error)
- func (cli *Client) Finalize()
- func (cli *Client) GetCertFromCMS(cms string, signID int, flag Flag) (cert string, err error)
- func (cli *Client) GetCertFromXML(xml string, signID int, flag Flag) (cert string, err error)
- func (cli *Client) GetCertificatesList() (certs string, err error)
- func (cli *Client) GetLastError() ErrorCode
- func (cli *Client) GetLastErrorString() (code ErrorCode, message string)
- func (cli *Client) GetTokens(store StoreType) (tokens string, err error)
- func (cli *Client) HashData(algo HashAlgo, dataB64 string, flag Flag) (result string, err error)
- func (cli *Client) Init() (err error)
- func (cli *Client) LoadKeyStore(password, containerPath string, storeType StoreType, alias string) (err error)
- func (cli *Client) SetProxy(flag Flag, proxyURL *url.URL) (err error)
- func (cli *Client) SignData(inSign, inData, alias string, flag Flag) (result string, err error)
- func (cli *Client) SignWSSE(xml, alias string, flags Flag, signNodeID string) (signedXML string, err error)
- func (cli *Client) SignXML(xml, alias string, flags Flag, ...) (signedXML string, err error)
- func (cli *Client) TSASetURL(url string)
- func (cli *Client) VerifyData(inSign, inData, alias string, flag Flag) (result *VerifiedData, err error)
- func (cli *Client) VerifyXML(xml, alias string, flags Flag) (result string, err error)
- func (cli *Client) X509CertificateGetInfo(inCert string, prop CertProp) (result string, err error)
- func (cli *Client) X509ExportCertificateFromStore(alias string) (result string, err error)
- func (cli *Client) X509LoadCertificateFromBuffer(inCert []byte, flag CertCodeType) (err error)
- func (cli *Client) X509LoadCertificateFromFile(certPath string, certType CertType) (err error)
- func (cli *Client) X509ValidateCertificate(inCert string, validateType ValidateType, validatePath string) (result string, err error)
- func (cli *Client) XMLFinalize()
- type ErrorCode
- type Flag
- type HashAlgo
- type KalkanError
- type StoreType
- type ValidateType
- type VerifiedData
Constants ¶
This section is empty.
Variables ¶
var AllProps = []CertProp{ CertPropIssuerCountryName, CertPropIssuerSOPN, CertPropIssuerLocalityName, CertPropIssuerOrgName, CertPropIssuerOrgUnitName, CertPropIssuerCommonName, CertPropSubjectCountryName, CertPropSubjectSOPN, CertPropSubjectLocalityName, CertPropSubjectCommonName, CertPropSubjectGivenName, CertPropSubjectSurname, CertPropSubjectSerialNumber, CertPropSubjectEmail, CertPropSubjectOrgName, CertPropSubjectOrgUnitName, CertPropSubjectBc, CertPropSubjectDc, CertPropNotBefore, CertPropNotAfter, CertPropKeyUsage, CertPropExtKeyUsage, CertPropAuthKeyID, CertPropSubjKeyID, CertPropCertCN, CertPropIssuerDN, CertPropSubjectDN, CertPropSignatureAlg, CertPropPubKey, CertPropPoliciesID, CertPropOCSP, CertPropGetCRL, }
var ErrHandler = errors.New("lib handler error")
var ErrPanic = errors.New("panic recovered")
Functions ¶
This section is empty.
Types ¶
type CertCodeType ¶
type CertCodeType int
CertCodeType определяет тип кодировки
const ( CertCodeTypeDER CertCodeType = 257 // Кодировка DER CertCodeTypePEM CertCodeType = 258 // Кодировка PEM CertCodeTypeBase64 CertCodeType = 260 // Кодировка Base64 )
Константы, определяющие тип кодировки
type CertProp ¶
type CertProp int
CertProp определяет значение поля/расширения в запросе/сертификате
const ( CertPropIssuerCountryName CertProp = 2049 // Страна издателя CertPropIssuerSOPN CertProp = 2050 // Название штата или провинции издателя CertPropIssuerLocalityName CertProp = 2051 // Населённый пункт издателя CertPropIssuerOrgName CertProp = 2052 // Наименование организации издателя CertPropIssuerOrgUnitName CertProp = 2053 // Название организационного подразделения издателя CertPropIssuerCommonName CertProp = 2054 // Имя Фамилия издателя CertPropSubjectCountryName CertProp = 2055 // Страна субъекта CertPropSubjectSOPN CertProp = 2056 // Название штата или провинции субъекта CertPropSubjectLocalityName CertProp = 2057 // Населенный пункт субъекта CertPropSubjectCommonName CertProp = 2058 // Общее имя субъекта CertPropSubjectGivenName CertProp = 2059 // Имя субъекта CertPropSubjectSurname CertProp = 2060 // Фамилия субъекта CertPropSubjectSerialNumber CertProp = 2061 // Серийный номер субъекта CertPropSubjectEmail CertProp = 2062 // e-mail субъекта CertPropSubjectOrgName CertProp = 2063 // Наименование организации субъекта CertPropSubjectOrgUnitName CertProp = 2064 // Название организационного подразделения субъекта CertPropSubjectBc CertProp = 2065 // Бизнес категория субъекта CertPropSubjectDc CertProp = 2066 // Доменный компонент субъекта CertPropNotBefore CertProp = 2067 // Дата действителен с CertPropNotAfter CertProp = 2068 // Дата действителен по CertPropKeyUsage CertProp = 2069 // Использование ключа CertPropExtKeyUsage CertProp = 2070 // Расширенное использование ключа CertPropAuthKeyID CertProp = 2071 // Идентификатор ключа центра сертификации CertPropSubjKeyID CertProp = 2072 // Идентификатор ключа субъекта CertPropCertCN CertProp = 2073 // Серийный номер сертификата CertPropIssuerDN CertProp = 2074 // Отличительное имя издателя CertPropSubjectDN CertProp = 2075 // Отличительное имя субъекта CertPropSignatureAlg CertProp = 2076 // Алгоритм подписи CertPropPubKey CertProp = 2077 // Получение открытого ключа CertPropPoliciesID CertProp = 2078 // Получение идентификатора политики сертификата CertPropOCSP CertProp = 2079 // Получение URL-адреса OCSP CertPropGetCRL CertProp = 2080 // Получение URL-адреса CRL CertPropGetDeltaCRL CertProp = 2081 // Получение URL-адреса delta CRL )
Константы, определяющие значение поля/расширения в запросе/сертификате.
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client структура для взаимодействия с библиотекой KC
func (*Client) Finalize ¶
func (cli *Client) Finalize()
Finalize освобождает ресурсы криптопровайдера KalkanCryptCOM и завершает работу библиотеки
func (*Client) GetCertFromCMS ¶
GetCertFromCMS обеспечивает получение сертификата из CMS.
func (*Client) GetCertFromXML ¶
GetCertFromXML обеспечивает получение сертификата из xml.
func (*Client) GetCertificatesList ¶
GetCertificatesList обеспечивает получение списка сертификатов в виде строки и их количество.
func (*Client) GetLastError ¶
GetLastError возвращает код последней ошибки.
func (*Client) GetLastErrorString ¶
GetLastErrorString возвращает текст последней ошибки.
func (*Client) GetTokens ¶
GetTokens обеспечивает получение указателя на строку подключенных устройств типа storage и их количество.
func (*Client) LoadKeyStore ¶
func (cli *Client) LoadKeyStore(password, containerPath string, storeType StoreType, alias string) (err error)
LoadKeyStore загружает ключи/сертификат из хранилища
func (*Client) SignWSSE ¶
func (cli *Client) SignWSSE(xml, alias string, flags Flag, signNodeID string) (signedXML string, err error)
SignWSSE подписывает документ XML в формате WSSec, который требутся для SmartBridge.
Параметры:
- xml - строка XML
- alias - label (alias) сертификата
- flags - флаги
- signNodeID - идентификатор тэга, который необходимо подписать. Передать "", если необходимо подписать все содержимое документа.
func (*Client) SignXML ¶
func (cli *Client) SignXML(xml, alias string, flags Flag, signNodeID, parentSignNode, parentNameSpace string) (signedXML string, err error)
SignXML подписывает данные в формате XML.
Параметры:
- xml - входящий xml
- alias - label (alias) сертификата
- flags - флаги
- signNodeID - идентификатор тэга, который необходимо подписать. Передать "", если необходимо подписать все содержимое документа.
- parentSignNode - идентификатор тэга, в который необходимо поместить значение подписи.
- parentNameSpace - пространство имен тэга, в который необходимо поместить значение подписи. Если пространство имен есть, но не будет указано - то тег не найдется.
func (*Client) VerifyData ¶
func (cli *Client) VerifyData(inSign, inData, alias string, flag Flag) (result *VerifiedData, err error)
VerifyData обеспечивает проверку подписи.
func (*Client) X509CertificateGetInfo ¶
func (*Client) X509ExportCertificateFromStore ¶
X509ExportCertificateFromStore экспортирует сертификата из хранилища.
func (*Client) X509LoadCertificateFromBuffer ¶
func (cli *Client) X509LoadCertificateFromBuffer(inCert []byte, flag CertCodeType) (err error)
func (*Client) X509LoadCertificateFromFile ¶
func (*Client) X509ValidateCertificate ¶
func (cli *Client) X509ValidateCertificate(inCert string, validateType ValidateType, validatePath string) (result string, err error)
X509ValidateCertificate - осуществляет проверку сертификата:
- проверка срока действия,
- построение цепочки сертификатов,
- проверка отозванности по OCSP или CRL.
Если validateType:
- ValidateTypeCRL - в параметр path необходимо указывать путь к файлу crl. Например: X509ValidateCertificate(gostCert, ValidateTypeCRL, "/tmp/nca_gost.crl")
- ValidateTypeOCSP - в параметр path необходимо указывать url OCSP. По умолчанию передается url http://ocsp.pki.gov.kz. Например: X509ValidateCertificate(gostCert, ValidateTypeOCSP, "http://ocsp.pki.gov.kz")
- ValidateTypeNothing - не производятся проверки по CRL или OCSP. Параметр path игнорируется. Например: X509ValidateCertificate(gostCert, ValidateTypeNothing, "")
func (*Client) XMLFinalize ¶
func (cli *Client) XMLFinalize()
XMLFinalize освобождает память и завершает работу библиотеки с модулями, отвечающие за парсинг, подпись и проверку данных в формате XML. Не надо вызывать каждый раз при подписи. Можно только один раз после цикла подписания xml файлов
type ErrorCode ¶
type ErrorCode int64 // Код ошибки времени выполнения
const ( ErrorCodeOK ErrorCode = 0 // Нет ошибки ErrorCodeErrorReadPKCS12 ErrorCode = 149946370 // Невозможно прочитать файл формата pkcs#12 ErrorCodeErrorOpenPKCS12 ErrorCode = 149946371 // Невозможно открыть файл формата pkcs12 ErrorCodeInvalidPropID ErrorCode = 149946372 // Недопустимый идентификатор расширения сертификата ErrorCodeBufferTooSmall ErrorCode = 149946373 // Размер буфера слишком мал ErrorCodeCertParseError ErrorCode = 149946374 // Невозможно разобрать (распарсить) сертификат ErrorCodeInvalidFlag ErrorCode = 149946375 // Недопустимый флаг ErrorCodeOpenFileErr ErrorCode = 149946376 // Невозможно открыть файл ErrorCodeInvalidPassword ErrorCode = 149946377 // Неправильный пароль ErrorCodeMemoryError ErrorCode = 149946381 // Невозможно выделить память ErrorCodeCheckChainError ErrorCode = 149946382 // Не найден сертификат УЦ или сертификат пользователя при проверки цепочки ErrorCodeValidTypeError ErrorCode = 149946384 // Недопустимый тип валидации сертификата ErrorCodeBadCRLFormat ErrorCode = 149946385 // Некорректный формат CRL ErrorCodeLoadCRLError ErrorCode = 149946386 // Невозможно загрузить CRL ErrorCodeLoadCRLsError ErrorCode = 149946387 // Невозможно загрузить CRL-ы ErrorCodeUnknownAlg ErrorCode = 149946389 // Неизвестный алгоритм подписи ErrorCodeKeyNotFound ErrorCode = 149946390 // Не найден приватный ключ пользователя ErrorCodeSignInitError ErrorCode = 149946391 // Невозможно инициализировать менеджера подписи ErrorCodeSignError ErrorCode = 149946392 // Не удалось сгенерировать цифровую подпись ErrorCodeEncodeError ErrorCode = 149946393 // Ошибка шифрования ErrorCodeInvalidFlags ErrorCode = 149946394 // Недопустимые флаги ErrorCodeCertNotFound ErrorCode = 149946395 // Не найден сертификат пользователя ErrorCodeVerifySignError ErrorCode = 149946396 // Ошибка верификации подписи xml ErrorCodeBase64DecodeError ErrorCode = 149946397 // Ошибка дешифровки из Base 64 ErrorCodeUnknownCMSFormat ErrorCode = 149946398 // Неизвестный формат CMS ErrorCodeCACertNotFound ErrorCode = 149946400 // Не найден сертификат УЦ ErrorCodeXMLSecInitError ErrorCode = 149946401 // Ошибка инициализации xmlsec ErrorCodeLoadTrustedCertsErr ErrorCode = 149946402 // Ошибка загрузки доверенных сертификатов ErrorCodeSignInvalid ErrorCode = 149946403 // Недопустимая подпись xml ErrorCodeNoSignFound ErrorCode = 149946404 // Не найдена подпись во входных данных ErrorCodeDecodeError ErrorCode = 149946405 // Ошибка дешифрования ErrorCodeXMLParseError ErrorCode = 149946406 // Невозможно разобрать (распарсить) xml ErrorCodeXMLAddIDError ErrorCode = 149946407 // Не удалось добавить атрибут ID ErrorCodeXMLInternalError ErrorCode = 149946408 // Ошибка при работе с xml ErrorCodeXMLSetSignError ErrorCode = 149946409 // Не удалось подписать xml ErrorCodeOpenSSLError ErrorCode = 149946410 // Ошибка openssl ErrorCodeNoTokenFound ErrorCode = 149946412 // Не найден токен ErrorCodeOCSPAddCertErr ErrorCode = 149946413 // Не удалось добавить сертификат в ocsp ErrorCodeOCSPParseURLErr ErrorCode = 149946414 // Не удалось разобрать url ErrorCodeOCSPAddHostErr ErrorCode = 149946415 // Не удалось добавить хост ErrorCodeOCSPReqErr ErrorCode = 149946416 // Не удалось добавить текущее время в запрос ErrorCodeOCSPConnectionErr ErrorCode = 149946417 // Ошибка подключения к OCSP респондеру ErrorCodeVerifyNoData ErrorCode = 149946418 // Нет входных данных для верификации ErrorCodeIDAttrNotFound ErrorCode = 149946419 // Не найден атрибут ID ErrorCodeIDRange ErrorCode = 149946420 // Некорректный идентификатор ErrorCodeReaderNotFound ErrorCode = 149946423 // Не найден ридер ErrorCodeGetCertPropErr ErrorCode = 149946424 // Не удалось получить значение атрибута ErrorCodeSignFormat ErrorCode = 149946425 // Неизвестный формат подписи ErrorCodeInDataFormat ErrorCode = 149946426 // Неизвестный формат входных данных ErrorCodeOutDataFormat ErrorCode = 149946427 // Неизвестный формат выходных данных ErrorCodeVerifyInitError ErrorCode = 149946428 // Невозможно инициализировать менеджера верификации подписи ErrorCodeVerifyError ErrorCode = 149946429 // Не удалось верифицировать цифровую подпись ErrorCodeHashError ErrorCode = 149946430 // Не удалось хэшировать данные ErrorCodeSignHashError ErrorCode = 149946431 // Не удалось подписать хэшированные данные ErrorCodeCACertsNotFound ErrorCode = 149946432 // Не найден сертификат УЦ в хранилище сертификатов ErrorCodeCertTimeInvalid ErrorCode = 149946434 // Срок действия сертификата истек либо еще не наступил ErrorCodeConvertError ErrorCode = 149946435 // Ошибка записи сертификата в структуру X509 ErrorCodeTSACreateQuery ErrorCode = 149946436 // Ошибка генерации запроса timestamp ErrorCodeCreateObj ErrorCode = 149946437 // Ошибка записи OID в ASN1 структуру ErrorCodeCreateNoNce ErrorCode = 149946438 // Ошибка генерации уникального числа ErrorCodeHTTPError ErrorCode = 149946439 // Ошибка протокола http ErrorCodeCADESBESFailed ErrorCode = 149946440 // Ошибка проверки расширения CADESBES в CMS ErrorCodeCADESTFailed ErrorCode = 149946441 // Ошибка проверки подписи токена TSA ErrorCodeNoTSAToken ErrorCode = 149946442 // В подписи не присутствует метка TSA ErrorCodeInvalidDigestLen ErrorCode = 149946443 // Неправильная длина хэша ErrorCodeGenRandError ErrorCode = 149946444 // Ошибка генерации случайного числа ErrorCodeSoapNSError ErrorCode = 149946445 // Не найдены заголовки SOAP-сообщений ErrorCodeGetPubKey ErrorCode = 149946446 // Ошибка экспорта публичного ключа ErrorCodeGetCertInfo ErrorCode = 149946447 // Ошибка получения информации о сертификате ErrorCodeFileReadError ErrorCode = 149946448 // Ошибка чтения файла ErrorCodeCheckError ErrorCode = 149946449 // Хэш не совпадает ErrorCodeZipExtractErr ErrorCode = 149946450 // Невозможно открыть архив ErrorCodeNoManifestFile ErrorCode = 149946451 // Не найден MANIFEST ErrorCodeVerifyTSHash ErrorCode = 149946452 // не удалось проверить Хэш подписи TS ErrorCodeXADESTFailed ErrorCode = 149946453 // XAdES-T: Ошибка проверки подписи ErrorCodeOCSPRespStatMalformedRequest ErrorCode = 149946454 // Неправильный запрос ErrorCodeOCSPRespStatInternalError ErrorCode = 149946455 // Внутренняя ошибка ErrorCodeOCSPRespStatTryLater ErrorCode = 149946456 // Попробуйте позже ErrorCodeOCSPRespStatSigRequired ErrorCode = 149946457 // Должны подписать запрос ErrorCodeVerifyIssuerSerialV2 ErrorCode = 149946459 // не удалось проверить IssuerSerialV2 в XAdES ErrorCodeOCSPCheckCertFromResp ErrorCode = 149946460 // Ошибка проверки сертификата OCSP-респондера ErrorCodeCRLExpired ErrorCode = 149946461 // CRL-файл просрочен ErrorCodeLibraryNotInitialized ErrorCode = 149946625 // Библиотека не инициализирована ErrorCodeEngineLoadErr ErrorCode = 149946880 // Ошибка подключения (загрузки) модуля (engine) ErrorCodeParamError ErrorCode = 149947136 // Некорректные входные данные ErrorCodeCertStatusOK ErrorCode = 149947392 // Статус сертификата – валидный. Используется при проверке сертификата по OCSP. (не является ошибкой, делается запись в лог) ErrorCodeCertStatusRevoked ErrorCode = 149947393 // Статус сертификата – отозван. Используется при проверке сертификата по OCSP. ErrorCodeCertStatusUnknown ErrorCode = 149947394 // Статус сертификата – неизвестен. Используется при проверке сертификата по OCSP. Например, не удалось установить издателя сертификата. )
func GetErrorCode ¶
GetErrorCode извлекает из ошибки ErrorCode из ошибка типа KalkanError.
type Flag ¶
type Flag int
Flag представляет собой флаги для KalcanCrypt
const ( FlagSignDraft Flag = 1 // Сырая подпись (draft sign) FlagSignCMS Flag = 2 // Подпись в формате CMS FlagInPEM Flag = 4 // Входные данные в формате PEM FlagInDER Flag = 8 // Входные данные в кодировке DER FlagInBase64 Flag = 16 // Входные данные в кодировке BASE64 FlagIn2Base64 Flag = 32 // Дополнительные входные данные в кодировке BASE64 FlagDetachedData Flag = 64 // Отсоединенная подпись FlagWithCert Flag = 128 // Вложить сертификат в подпись FlagWithTimestamp Flag = 256 // Добавить в подпись метку времени FlagOutPEM Flag = 512 // Выходные данные в формате PEM FlagOutDER Flag = 1024 // Выходные данные в кодировке DER FlagOutBase64 Flag = 2048 // Выходные данные в кодировке BASE64 FlagProxyOff Flag = 4096 // Отключить использование прокси-сервера и стереть настройки. FlagProxyOn Flag = 8192 // Включить и установить настройки прокси-сервера (адрес и порт) FlagProxyAuth Flag = 16384 // Прокси-сервер требует авторизацию (логин/пароль) FlagInFile Flag = 32768 // Использовать, если параметр inData/outData содержит абсолютный путь к файлу FlagNoCheckCertTime Flag = 65536 // Не проверять срок действия сертификата при построении цепочки до корневого (для проверки старых подписей с просроченным сертификатом) FlagHashSHA256 Flag = 131072 // Алгоритм хеширования sha256 FlagHashGOST95 Flag = 262144 // Алгоритм хеширования Gost34311_95 )
type KalkanError ¶
type KalkanError struct {
// contains filtered or unexported fields
}
func (KalkanError) Error ¶
func (e KalkanError) Error() string
type StoreType ¶
type StoreType int
StoreType представляет собой вид хранилища/носителя.
const ( StoreTypePKCS12 StoreType = 1 // Файловая система StoreTypeKZIDCard StoreType = 2 // Удостоверение личности гражданина РК StoreTypeKazToken StoreType = 4 // Казтокен StoreTypeEToken StoreType = 8 // eToken 72k StoreTypeJaCarta StoreType = 16 // JaCarta StoreTypeX509Cert StoreType = 32 // Сертификат X509 StoreTypeAKey StoreType = 64 // aKey StoreTypeEToken5110 StoreType = 128 // eToken 5110 )
type ValidateType ¶
type ValidateType int
ValidateType - это тип валидации сертификата
const ( ValidateTypeNothing ValidateType = 1025 // Не делать проверок ValidateTypeCRL ValidateType = 1026 // Проверка сертификата по списку отозванных сертификатов ValidateTypeOCSP ValidateType = 1028 // Проверка сертификата посредством сервиса OCSP ValidateGetOCSPResponse ValidateType = 524288 // Получить ответ от OCSP-сервиса )
Константы, определяющие тип валидации
type VerifiedData ¶
VerifiedData структура возвращаемая от метода KCVerifyData
Source Files ¶
- close.go
- dlopen.go
- finalize.go
- get_cert_from_cms.go
- get_cert_from_xml.go
- get_cert_list.go
- get_last_error.go
- get_last_error_string.go
- get_tokens.go
- hash_data.go
- init.go
- kalkan.go
- kalkan_errors.go
- load_keystore.go
- set_proxy.go
- set_tsa_url.go
- sign_data.go
- sign_wsse.go
- sign_xml.go
- type_cert.go
- type_cert_code.go
- type_cert_prop.go
- type_error_code.go
- type_flag.go
- type_store.go
- type_validate.go
- verify_data.go
- verify_xml.go
- x509_export_from_store.go
- x509_get_info.go
- x509_load_cert_from_buffer.go
- x509_load_cert_from_file.go
- x509_validate_cert.go
- xml_finalize.go