API Reference



Creates an OntLoginSdk instance.


conf *SDKConfig

SDK configuration

type SDKConfig struct {
	Chain      []string                       // Supported chain, e.g."ONT","ETH","BSC"
	Alg        []string                       // Signature scheme such as "ES256","Ed25519"
	ServerInfo *modules.ServerInfo            // Server configuration info, see details below
	VCFilters  map[int][]*modules.VCFilter    // VCFilter info for authentication/authorization, see details below
type ServerInfo struct {
	Name               string `json:"name"`                             // Server name
	Icon               string `json:"icon,omitempty"`                   // Icon, optional
	Url                string `json:"url"`                              // Server URL 
	Did                string `json:"did,omitempty"`                    // Server DID, optional
	VerificationMethod string `json:"verificationMethod,omitempty"`     // Verification method, optional
type VCFilter struct {
	Type       string   `json:"type"`                  // Type of VC, e.g. "DegreeCredential"
	Express    []string `json:"express,omitempty"`     // List of expressions for zero-knowledge proof
	TrustRoots []string `json:"trust_roots"`           // List of trusted VC issuer DIDs
	Required   bool     `json:"required"`              // If it's required  

processors map[string]did.DidProcessor

DID processor map

nonceFunc func(int) string

Function to generate nonce

getActionByNonce func(string) (int,error)

Gets action by nonce



Generates the challenge.


type ClientHello struct {
	Ver             string           `json:"ver"`                       // Version number 
	Type            string           `json:"type"`                      // "ClientHello" for this message
	Action          int              `json:"action"`                    // 0: Authentication, 1: Authorization
	ClientChallenge *ClientChallenge `json:"ClientChallenge,omitempty"` // Challenge sent from the client for mutual authentication, optional



type ServerHello struct {
	Ver         string       `json:"ver"`                     // Version number 
	Type        string       `json:"type"`						 // "ServerHello" for this message
	Nonce       string       `json:"nonce"`                   // String of nonce
	Server      *ServerInfo  `json:"server"`                  // Server info 
	Chain       []string     `json:"chain"`                   // List of supported chains
	Alg         []string     `json:"alg"`                     // List of supported signature schemes
	VCFilters   []*VCFilter  `json:"VCFilters,omitempty"`     // List of VCFilters, optional 
	ServerProof *ServerProof `json:"ServerProof,omitempty"`   // Challenge response sent from the server for mutual authentication, optional
	Extension   *Extension   `json:"extension,omitempty"`     // Extension, optional


Validates the response from the client.


type ClientResponse struct {
	Ver   string   `json:"ver"`					// Version number 
	Type  string   `json:"type"`				// "ClientResponse" for this message
	Did   string   `json:"did"`					// User DID
	Nonce string   `json:"nonce"`             // String of nonce generated by the server
	Proof *Proof   `json:"proof"`             // Signature info sent from the client, see details below
	VPs   []string `json:"VPs,omitempty"`     // List of verifiable presentations, optional
type Proof struct {
	Type               string `json:"type"`               // Signature scheme
	VerificationMethod string `json:"verificationMethod"` // DID & key index,e.g."did:ont:alice#key-1"
	Created            uint64 `json:"created"`            // Unix timestamp
	Value              string `json:"value"`              // HEX string of signature


Validation Process:

  1. Verify the validity of parameters

  2. Verify if the nonce is the same as the one generated by the server

  3. verify the signature

  4. Verify the validity of VP and VC

  5. Check if the provided VC meets the requirement


Gets JSON string of VC from VP.



Last updated