signature

package
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 19, 2023 License: MIT Imports: 4 Imported by: 0

Documentation

Overview

Провайдеры электронной подписи запросов к ЕСИА.

Реализации

  1. LocalCryptoPro — электронная подпись с использованием алгоритма ГОСТ Р 34.10-2012 (256 бит) и инсталляции КриптоПро CSP 5 для рабочих станций. Может быть использована для отладки взаимодействия с ЕСИА. Не подходит в качестве серверного решения.
  2. Nop — тестовый провайдер электронной подписи: возвращает фиксированное значение подписи. Используется для юнит-тестов.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrTempFileCreate = errors.New("ошибка при создании временного файла")
	ErrTempFileWrite  = errors.New("ошибка записи во временный файл")
	ErrTempFileRead   = errors.New("ошибка чтения временного файла")
	ErrCPTestExec     = errors.New("ошибка запуска cptest")
)

Ошибки провайдера LocalCryptoPro

Functions

This section is empty.

Types

type LocalCryptoPro

type LocalCryptoPro struct {
	// contains filtered or unexported fields
}

LocalCryptoPro реализация signature.Provider с использованием утилиты csptest из локально установленного пакета КриптоПро CSP для рабочих станций версии 5 и выше. Для подписания используется алгоритм ГОСТ Р 34.10-2012 (256 бит).

ВАЖНО: используйте эту реализацию только для отладки взаимодействия с ЕСИА, тк КриптоПро CSP 5 для рабочих станций не может использоваться в качестве серверного решения.

func NewLocalCryptoPro

func NewLocalCryptoPro(cspTestPath, cspContainer, certHash string) *LocalCryptoPro

NewLocalCryptoPro - конструктор LocalCryptoPro.

cspTestPath

Полный путь к утилите csptest из пакета КриптоПро CSP:

  • Mac: "/opt/cprocsp/bin/csptest"
  • Win: "C:\Program Files\Crypto Pro\CSP\сsptest.exe"

cspContainer

Имя контейнера сертификата. Сертификат ИС (6 файлов .key), используемый для подписи запросов к ЕСИА, должен быть записан на съемный носитель (флешку). Для получения имени контейнера, подключите съемный носитель с сертификатом и запустите утилиту csptest (csptest.exe для Windows) из пакета КриптоПро CSP:

csptest -keyset

Команда выведет имя контейнера:

...
Container name: "X9X1XYZA9EZZWZ42"
...

certHash

Хеш сертификата. Подключите съемный носитель с сертификатом и запустите утилиту cpverify (cpverify.exe для Windows) из пакета КриптоПро CSP:

cpverify -mk <path/to/cert.cer> -alg GR3411_2012_256

Команда выведет хеш сертификата:

1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF0

func (*LocalCryptoPro) CertHash

func (p *LocalCryptoPro) CertHash() string

CertHash возвращает хэш сертификата

func (*LocalCryptoPro) Sign

func (p *LocalCryptoPro) Sign(data []byte) ([]byte, error)

Sign - возвращает подпись для данных c использованием алгоритма ГОСТ Р 34.10-2012 (256 бит).

type Nop

type Nop struct {
	// contains filtered or unexported fields
}

Nop - тестовый провайдер подписи запросов. Возвращает фиксированные значения подписи и хэша сертификата.

func NewNop

func NewNop(signature, certHash string) *Nop

NewNop - конструктор Nop. Если в signature передана пустая строка, то при вызове Nop.Sign будет возвращена ошибка.

func (*Nop) CertHash

func (p *Nop) CertHash() string

CertHash - возвращает фиксированный хэш сертификата.

func (*Nop) Sign

func (p *Nop) Sign(_ []byte) ([]byte, error)

Sign - возвращает фиксированную подпись. Если в конструкторе NewNop в качестве signature была передана пустая строка, то возвращается ошибка.

type Provider

type Provider interface {
	Sign(data []byte) ([]byte, error)
	CertHash() string
}

Provider - интерфейс провайдера электронной подписи запросов к ЕСИА. Провайдер должен реализовать

  • подписание данных
  • возвращать хэш сертификата

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL