Documentation
¶
Overview ¶
Package virgil is the pure Go implementation of Virgil Security compatible SDK Right now it supports only ed25519 keys and signatures and curve25519 key exchange As for symmetric crypto, it's AES256-GCM Hashes used are SHA-384 for signature and SHA-256 for fingerprints
Index ¶
- Variables
- func ClientCardsValidator(validator CardsValidator) func(*Client)
- func ClientTransport(transportClient transport.Client) func(*Client)
- func Crypto() virgilcrypto.Crypto
- type Card
- type CardModel
- type CardParams
- type CardResponse
- func (mj *CardResponse) MarshalJSON() ([]byte, error)
- func (mj *CardResponse) MarshalJSONBuf(buf fflib.EncodingBuffer) error
- func (r *CardResponse) ToCard() (*Card, error)
- func (uj *CardResponse) UnmarshalJSON(input []byte) error
- func (uj *CardResponse) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error
- type CardsValidator
- type Client
- func (c *Client) AddRelation(request *SignableRequest) (*Card, error)
- func (c *Client) ConfirmIdentity(request *ConfirmRequest) (*ConfirmResponse, error)
- func (c *Client) CreateCard(request *SignableRequest) (*Card, error)
- func (c *Client) DeleteRelation(request *SignableRequest) (*Card, error)
- func (c *Client) GetCard(id string) (*Card, error)
- func (c *Client) RevokeCard(request *SignableRequest) error
- func (c *Client) SearchCards(criteria *Criteria) ([]*Card, error)
- func (c *Client) ValidateIdentity(request *ValidateRequest) error
- func (c *Client) VerifyIdentity(request *VerifyRequest) (*VerifyResponse, error)
- type ConfirmRequest
- type ConfirmResponse
- type Criteria
- type DeviceInfo
- type Enum
- type FileStorage
- type KeyStorage
- type RequestMeta
- type RequestSigner
- type ResponseMeta
- type RevokeCardRequest
- type SignableRequest
- func ImportAddRelationRequest(data []byte) (*SignableRequest, error)
- func ImportCreateCardRequest(data []byte) (*SignableRequest, error)
- func ImportDeleteRelationRequest(data []byte) (*SignableRequest, error)
- func ImportRevokeCardRequest(data []byte) (*SignableRequest, error)
- func NewAddRelationRequest(relationCard *Card) (*SignableRequest, error)
- func NewCreateCardRequest(identity, identityType string, publicKey virgilcrypto.PublicKey, ...) (*SignableRequest, error)
- func NewDeleteRelationRequest(relationCardId string) (*SignableRequest, error)
- func NewRevokeCardRequest(id string, revocationReason Enum) (*SignableRequest, error)
- func (r *SignableRequest) AppendSignature(cardId string, signature []byte)
- func (r *SignableRequest) Export() ([]byte, error)
- func (mj *SignableRequest) MarshalJSON() ([]byte, error)
- func (mj *SignableRequest) MarshalJSONBuf(buf fflib.EncodingBuffer) error
- func (uj *SignableRequest) UnmarshalJSON(input []byte) error
- func (uj *SignableRequest) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error
- type StorageItem
- type ValidateRequest
- type ValidationInfo
- type ValidationTokenParams
- type VerifyRequest
- type VerifyResponse
- type VirgilCardValidator
Constants ¶
This section is empty.
Variables ¶
var ( CardScope struct { Application, Global Enum } RevocationReason struct { Unspecified, Compromised Enum } )
var ( ErrorKeyAlreadyExists = errors.New("Key already exists") ErrorKeyNotFound = errors.New("Key not found") )
var (
ErrNotFound = transport.ErrNotFound
)
Functions ¶
func ClientCardsValidator ¶
func ClientCardsValidator(validator CardsValidator) func(*Client)
ClientCardsValidator sets custom card validaor for a Virgil client
func ClientTransport ¶
ClientTransport sets card service protocol for a Virgil client
func Crypto ¶
func Crypto() virgilcrypto.Crypto
Crypto returns a new instance of virgilcrypto with a default cipher
Types ¶
type Card ¶
type Card struct { ID string Snapshot []byte Identity string IdentityType string PublicKey virgilcrypto.PublicKey Scope Enum Data map[string]string DeviceInfo DeviceInfo CreatedAt string CardVersion string Signatures map[string][]byte Relations map[string][]byte }
Card is basically a public key + meta information like identity, its type and so on The ID of a card is the hash of its Snapshot (json encoded basic fields)
func (*Card) SignThenEncrypt ¶
func (c *Card) SignThenEncrypt(data []byte, signerKey virgilcrypto.PrivateKey) ([]byte, error)
SignThenEncrypt encrypts data for a given card using ECIES and signs the plaintext
func (*Card) ToRequest ¶
func (c *Card) ToRequest() (*SignableRequest, error)
type CardModel ¶
type CardModel struct { Identity string `json:"identity"` IdentityType string `json:"identity_type"` PublicKey []byte `json:"public_key"` //DER encoded public key Scope Enum `json:"scope"` Data map[string]string `json:"data,omitempty"` DeviceInfo DeviceInfo `json:"info"` }
func (*CardModel) MarshalJSON ¶
func (*CardModel) MarshalJSONBuf ¶
func (mj *CardModel) MarshalJSONBuf(buf fflib.EncodingBuffer) error
func (*CardModel) UnmarshalJSON ¶
func (*CardModel) UnmarshalJSONFFLexer ¶
type CardParams ¶
type CardParams struct { Scope Enum Data map[string]string DeviceInfo DeviceInfo }
ffjson: skip
type CardResponse ¶
type CardResponse struct { ID string `json:"id"` Snapshot []byte `json:"content_snapshot"` Meta ResponseMeta `json:"meta"` }
func (*CardResponse) MarshalJSON ¶
func (mj *CardResponse) MarshalJSON() ([]byte, error)
func (*CardResponse) MarshalJSONBuf ¶
func (mj *CardResponse) MarshalJSONBuf(buf fflib.EncodingBuffer) error
func (*CardResponse) ToCard ¶
func (r *CardResponse) ToCard() (*Card, error)
func (*CardResponse) UnmarshalJSON ¶
func (uj *CardResponse) UnmarshalJSON(input []byte) error
func (*CardResponse) UnmarshalJSONFFLexer ¶
func (uj *CardResponse) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error
type CardsValidator ¶
type CardsValidator interface { //if the result is false then error must not be nil Validate(card *Card) (bool, error) }
A CardsValidator validate response from server Validator check that a card was signed by all services
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
A Client manages communication with Virgil Security API.
func (*Client) AddRelation ¶
func (c *Client) AddRelation(request *SignableRequest) (*Card, error)
AddRelation adds signature of the card signer trusts
func (*Client) ConfirmIdentity ¶
func (c *Client) ConfirmIdentity(request *ConfirmRequest) (*ConfirmResponse, error)
func (*Client) CreateCard ¶
func (c *Client) CreateCard(request *SignableRequest) (*Card, error)
CreateCard posts card create request to server where it checks signatures and adds it
func (*Client) DeleteRelation ¶
func (c *Client) DeleteRelation(request *SignableRequest) (*Card, error)
AddRelation adds signature of the card signer trusts
func (*Client) RevokeCard ¶
func (c *Client) RevokeCard(request *SignableRequest) error
RevokeCard deletes card from server
func (*Client) ValidateIdentity ¶
func (c *Client) ValidateIdentity(request *ValidateRequest) error
func (*Client) VerifyIdentity ¶
func (c *Client) VerifyIdentity(request *VerifyRequest) (*VerifyResponse, error)
type ConfirmRequest ¶
type ConfirmRequest struct { ConfirmationCode string `json:"confirmation_code"` ActionId string `json:"action_id"` Params ValidationTokenParams `json:"token"` }
type ConfirmResponse ¶
type Criteria ¶
type Criteria struct { Scope Enum `json:"scope,omitempty"` IdentityType string `json:"indentity_type,omitempty"` Identities []string `json:"identities"` }
func SearchCriteriaByAppBundle ¶
SearchCriteriaByAppBundle create search criteria by bundle name in global scope
func SearchCriteriaByIdentities ¶
SearchCriteriaByIdentities create search criteria by identities in application scope
type DeviceInfo ¶
DeviceInfo is for device type & its concrete name, for example model
type FileStorage ¶
type FileStorage struct {
RootDir string
}
func (*FileStorage) Delete ¶
func (s *FileStorage) Delete(name string) error
func (*FileStorage) Exists ¶
func (s *FileStorage) Exists(name string) bool
func (*FileStorage) Load ¶
func (s *FileStorage) Load(name string) (*StorageItem, error)
func (*FileStorage) Store ¶
func (s *FileStorage) Store(key *StorageItem) error
type KeyStorage ¶
type KeyStorage interface { Store(key *StorageItem) error Load(name string) (*StorageItem, error) Exists(name string) bool Delete(name string) error }
type RequestMeta ¶
type RequestMeta struct { Signatures map[string][]byte `json:"signs"` Validation *ValidationInfo `json:"validation,omitempty"` }
func (*RequestMeta) MarshalJSON ¶
func (mj *RequestMeta) MarshalJSON() ([]byte, error)
func (*RequestMeta) MarshalJSONBuf ¶
func (mj *RequestMeta) MarshalJSONBuf(buf fflib.EncodingBuffer) error
func (*RequestMeta) UnmarshalJSON ¶
func (uj *RequestMeta) UnmarshalJSON(input []byte) error
func (*RequestMeta) UnmarshalJSONFFLexer ¶
func (uj *RequestMeta) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error
type RequestSigner ¶
type RequestSigner struct { }
func (*RequestSigner) AuthoritySign ¶
func (rs *RequestSigner) AuthoritySign(req *SignableRequest, cardId string, privateKey virgilcrypto.PrivateKey) error
func (*RequestSigner) SelfSign ¶
func (rs *RequestSigner) SelfSign(req *SignableRequest, privateKey virgilcrypto.PrivateKey) error
type ResponseMeta ¶
type ResponseMeta struct { CreatedAt string `json:"created_at"` CardVersion string `json:"card_version"` Signatures map[string][]byte `json:"signs"` Relations map[string][]byte `json:"relations"` }
func (*ResponseMeta) MarshalJSON ¶
func (mj *ResponseMeta) MarshalJSON() ([]byte, error)
func (*ResponseMeta) MarshalJSONBuf ¶
func (mj *ResponseMeta) MarshalJSONBuf(buf fflib.EncodingBuffer) error
func (*ResponseMeta) UnmarshalJSON ¶
func (uj *ResponseMeta) UnmarshalJSON(input []byte) error
func (*ResponseMeta) UnmarshalJSONFFLexer ¶
func (uj *ResponseMeta) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error
type RevokeCardRequest ¶
type RevokeCardRequest struct { ID string `json:"card_id"` RevocationReason Enum `json:"revocation_reason"` }
func (*RevokeCardRequest) MarshalJSON ¶
func (mj *RevokeCardRequest) MarshalJSON() ([]byte, error)
func (*RevokeCardRequest) MarshalJSONBuf ¶
func (mj *RevokeCardRequest) MarshalJSONBuf(buf fflib.EncodingBuffer) error
func (*RevokeCardRequest) UnmarshalJSON ¶
func (uj *RevokeCardRequest) UnmarshalJSON(input []byte) error
func (*RevokeCardRequest) UnmarshalJSONFFLexer ¶
func (uj *RevokeCardRequest) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error
type SignableRequest ¶
type SignableRequest struct { Snapshot []byte `json:"content_snapshot"` Meta RequestMeta `json:"meta"` }
func ImportAddRelationRequest ¶
func ImportAddRelationRequest(data []byte) (*SignableRequest, error)
func ImportCreateCardRequest ¶
func ImportCreateCardRequest(data []byte) (*SignableRequest, error)
func ImportDeleteRelationRequest ¶
func ImportDeleteRelationRequest(data []byte) (*SignableRequest, error)
func ImportRevokeCardRequest ¶
func ImportRevokeCardRequest(data []byte) (*SignableRequest, error)
func NewAddRelationRequest ¶
func NewAddRelationRequest(relationCard *Card) (*SignableRequest, error)
func NewCreateCardRequest ¶
func NewCreateCardRequest(identity, identityType string, publicKey virgilcrypto.PublicKey, params CardParams) (*SignableRequest, error)
func NewDeleteRelationRequest ¶
func NewDeleteRelationRequest(relationCardId string) (*SignableRequest, error)
func NewRevokeCardRequest ¶
func NewRevokeCardRequest(id string, revocationReason Enum) (*SignableRequest, error)
func (*SignableRequest) AppendSignature ¶
func (r *SignableRequest) AppendSignature(cardId string, signature []byte)
func (*SignableRequest) Export ¶
func (r *SignableRequest) Export() ([]byte, error)
func (*SignableRequest) MarshalJSON ¶
func (mj *SignableRequest) MarshalJSON() ([]byte, error)
func (*SignableRequest) MarshalJSONBuf ¶
func (mj *SignableRequest) MarshalJSONBuf(buf fflib.EncodingBuffer) error
func (*SignableRequest) UnmarshalJSON ¶
func (uj *SignableRequest) UnmarshalJSON(input []byte) error
func (*SignableRequest) UnmarshalJSONFFLexer ¶
func (uj *SignableRequest) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error
type ValidateRequest ¶
type ValidationInfo ¶
type ValidationInfo struct {
Token string `json:"token,omitempty"`
}
func (*ValidationInfo) MarshalJSON ¶
func (mj *ValidationInfo) MarshalJSON() ([]byte, error)
func (*ValidationInfo) MarshalJSONBuf ¶
func (mj *ValidationInfo) MarshalJSONBuf(buf fflib.EncodingBuffer) error
func (*ValidationInfo) UnmarshalJSON ¶
func (uj *ValidationInfo) UnmarshalJSON(input []byte) error
func (*ValidationInfo) UnmarshalJSONFFLexer ¶
func (uj *ValidationInfo) UnmarshalJSONFFLexer(fs *fflib.FFLexer, state fflib.FFParseState) error
type ValidationTokenParams ¶
type VerifyRequest ¶
type VerifyResponse ¶
type VerifyResponse struct {
ActionId string `json:"action_id"`
}
type VirgilCardValidator ¶
type VirgilCardValidator struct {
// contains filtered or unexported fields
}
func NewCardsValidator ¶
func NewCardsValidator() *VirgilCardValidator
NewCardsValidator create a cards validator
func (*VirgilCardValidator) AddDefaultVerifiers ¶
func (v *VirgilCardValidator) AddDefaultVerifiers() error
AddVerifier adds default card service card
func (*VirgilCardValidator) AddVerifier ¶
func (v *VirgilCardValidator) AddVerifier(cardId string, key virgilcrypto.PublicKey)
AddVerifier add new service for validation