Identity
Identity generation in Go for the Tanker SDK.
Installation
go get github.com/TankerHQ/identity-go/identity
Usage
The server-side code below demonstrates a typical flow to safely deliver identities to your users:
import (
"github.com/TankerHQ/identity-go/identity"
)
config := identity.Config {
TrustchainID: "<trustchain-id>",
TrustchainPrivateKey: "<trustchain-private-key>",
}
// Example server-side function in which you would implement checkAuth(),
// retrieveIdentity() and storeIdentity() to use your own authentication
// and data storage mechanisms:
func getIdentity(string userID) (string, error) {
isAuthenticated := checkAuth(userID)
// Always ensure userID is authenticated before returning a identity
if ! isAuthenticated {
return "", error.New("Unauthorized")
}
// Retrieve a previously stored identity for this user
identity := retrieveIdentity(userID)
// If not found, create a new identity
if identity == "" {
identity, err = identity.Create(config, userID)
if err != nil {
return "", err
}
// Store the newly generated identity
storeIdentity(userID, identity)
}
// From now, the same identity will always be returned to a given user
return identity, nil
}
func getPublicIdentity(string userID) (string, error) {
// Retrieve a previously stored identity for this user
tkIdentity := retrieveIdentity(userID)
if tkIdentity == "" {
return "", error.New("Not found")
}
publicIdentity, err := identity.GetPublicIdentity(tkIdentity)
if err != nil {
return "", err
}
return publicIdentity, nil
}
Read more about identities in the Tanker guide.
Development
Run tests:
go test ./... -test.v
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/TankerHQ/identity-go.