Documentation
¶
Overview ¶
Package siga provides a client for creating and validating signature containers with the Signature Gateway (SiGa) service provided by the Information System Authority of the Republic of Estonia.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client interface {
// CreateContainer creates a new unsigned container for the specified
// session identifier with the listed DataFiles. It will close any
// existing container related to this session identifier.
CreateContainer(ctx context.Context, session string, datafiles ...*DataFile) error
// UploadContainer uploads an existing container for the specified
// session identifier. It will close any existing container related to
// this session identifier.
UploadContainer(ctx context.Context, session string, r io.Reader) error
// StartRemoteSigning initiates signing of the container using external
// methods. The certificate must be a DER-encoded X.509 certificate.
// The method returns the hashed data to be signed and the digest
// algorithm that was used to hash the data.
//
// This will interrupt any outstanding signing operations for this
// session.
StartRemoteSigning(ctx context.Context, session string, cert []byte) ([]byte, string, error)
// FinalizeRemoteSigning completes the signing operation started with
// StartRemoteSigning by providing the signature value generated using
// external methods.
FinalizeRemoteSigning(ctx context.Context, session string, signature []byte) error
// StartMobileIDSigning initiates signing of the container using
// Mobile-ID. The phone number must start with a +372 prefix. The
// message, if not empty, is displayed to the signer on their phone.
// The method returns the challenge identifier that must be displayed
// to the signer for confirmation.
//
// This will interrupt any outstanding signing operations for this
// session.
StartMobileIDSigning(ctx context.Context, session, person, phone, message string) (string, error)
// RequestMobileIDSigningStatus polls the status of the signing
// operation started with StartMobileIDSigning. If the method returns
// true, then the signing operation is complete, otherwise it is
// necessary to poll again.
RequestMobileIDSigningStatus(ctx context.Context, session string) (bool, error)
// WriteContainer retrieves the container, converts it from hashcode
// form to complete form, and writes it to w. If no signing operations
// were completed, then the output will be an unsigned container.
WriteContainer(ctx context.Context, session string, w io.Writer) error
// CloseContainer frees any resources connected with the container
// related to the specified session identifier.
CloseContainer(ctx context.Context, session string) error
// Close frees any resources connected with the client.
Close() error
}
Client is the low-level interface provided by SiGa clients.
The interface is purposefully more limited than the possibilities provided by SiGa to keep it simple. It uses a pre-configured signature profile, excludes signer role and signature production place options, etc.
type Conf ¶
type Conf struct {
// ClientConf embeds the configuration for the HTTP client used to
// connect to the SiGa service provider.
https.ClientConf
// ServiceIdentifier is the identifier used to authorize requests.
ServiceIdentifier string
// ServiceKey is the Base64-encoded signing secret key used to
// authorize requests.
ServiceKey string
// HMACAlgorithm is the HMAC algorithm used to authorize requests.
// Possible values are "HMAC-SHA256", "HMAC-SHA384", and "HMAC-SHA512".
// If HMACAlgorithm is empty, then "HMAC-SHA256" is used.
HMACAlgorithm string
// SignatureProfile is the signature profile used for qualifying
// signatures. Possible values are dictated by the SiGa service
// provider. If SignatureProfile is empty, then "LT" is used.
SignatureProfile string
// MIDLanguage is the language used for user dialogs in the user's
// phone during Mobile-ID signing. Possible values are dictated by the
// SiGa service provider. If MIDLanguage is empty, then "EST" is used.
MIDLanguage string
}
Conf contains configuration values for the SiGa client.
type DataFile ¶
type DataFile struct {
// contains filtered or unexported fields
}
DataFile is a data file contained in a signature container.
func NewDataFile ¶
NewDataFile creates a DataFile from a name and data read from reader.
func ReadDataFile ¶
ReadDataFile creates a DataFile from a filesystem path. It uses the basename of the path as the name of the DataFile.