Create a new Issuer
Register a new issuer with customizable identity and display settings.
Create a new Issuer.
An endpoint used to create a new Issuer in the Issuer Service.
If statusBits is provided within the request, the Issuer will keep a
Status List, where each status will use the statusBits amount of bits.
Each issued credential could then have one of 2 ^ statusBits possible
statuses. Usually, status 0 is reserved as VALID, status 1 as
INVALID, and status 2 as SUSPENDED.
Signing key
The signing key used by the Issuer to sign verifiable credentials may
either be generated and managed by Issuer Service, or provided through
a 3rd-party KMS through the issuerKeyConfig optional parameter.
3rd-party KMS integration
The caller may provide a Key Management System credentials config for the key pair which will represent the cryptographic identity of a newly-created issuer, and subsequently sign the issued credentials.
Currently we support integration with HashiCorp Vault Transit secrets engine and Google Cloud KMS.
Currently we only support signatures created with ECDSA using P-256 curve with SHA-256 hash function - ES256.
Issuing certain kinds of VCs requires including a X.509 certificate
chain for the Issuer's signing key. When using a KMS backend for signing,
the caller MUST provide the certificate chain for the chosen signing key
through the certChain parameter.
HashiCorp Vault Transit secrets engine
HashiCorp Vault Transit Engine access credentials format:
vaultAddr- HTTPS URL of the HashiCorp Vault Transit Engine servicetlsTrustAnchorCert- TLS certificate for HashiCorp Vault Transit Engine. This certificate should be root CA certificate (issuer == subject). Intermediary CA certificates are not supported.keyName- Name of the key which will be used to sign issued credentials. Key name can contain only alphanumeric and '-', '_', '.' characters.keyVersion- version of the key which will be used to sign issued credentialsvaultToken- access token for a policy with following paths and capabilities:transit/sign/{key-name}withupdatecapabilitytransit/export/public-key/{key-name}/*withreadcapability
In case vault token is expired, one should use update credentials endpoint to set a new token.
Google Cloud KMS
Google Cloud KMS access credentials format:
projectId- Google Cloud project ID where key is storedlocation- Google Cloud key ring locationkeyRingName- key ring name where key is storedkeyName- key name
The role roles/cloudkms.signerVerifier should be given to our
Issuer Service Service Account.
Issuer ID
The caller may provide a custom issuerId which must be unique across
all issuers registered to the Issuer Service. This value will be used
as a unique identifier to the newly registered issuer, and will also be
embedded in the credential issuer identifier
URL within the Credential Issuer Metadata, and other appropriate
.well-known endpoints (e.g. OAuth Authorization Server, etc.). If
omitted, the issuerId
will be generated by the Issuer Service in the form of an UUID
according to the RFC 4122.
Issuer Metadata
The caller may also provide certain Credential Issuer Metadata properties that will be served on a well-known endpoint once the issuer is created.
More precisely, the following properties may be specified:
issuerMetadataobject containing:display— Array of objects, where each object contains display properties of a Credential Issuer for a certain language according to the specification
Specifying these metadata properties is optional. If they are omitted, only protocol-required parts of Credential Issuer Metadata will be served.
Header Parameters
API key for authenticating requests to the Issuer Service.
Request Body
application/json
A unique, string consisting of alphanumeric and -, _
and . characters representing a unique identifier of a
newly-created issuer.
Configuration which contains information and credentials required for the issuer to sign with a key pair stored in the KMS.
The number of bits used by the Issuer's status list. If not provided, the Issuer will not keep a status list.
1 | 2 | 4 | 8Response Body
application/json
application/json
curl -X POST "https://eis.fortid.com/control/issuer" \ -H "X-API-KEY: HCLN4ZKnWYJAfyNkDnQ57gEAHuejD6MN" \ -H "Content-Type: application/json" \ -d '{}'{
"issuerId": "university-issuer",
"issuerPublicKey": "-----BEGIN PUBLIC KEY-----\nMFYwEAYHKoZIzj0CAQYFK4EEAAoDQgAE1MtHIxlGP5TARqBccrddNm1FnYH1Fp+o\nnETz5KbXPSeG5FGwKMUXGfAmSZJq2gENULFewwymt+9bTXkjBZhh8A==\n-----END PUBLIC KEY-----",
"issuerMetadataEndpoint": "https://eis.fortid.com/protocol/oid4vci/issuer/university-issuer/.well-known/openid-credential-issuer"
}{
"message": "locale not compliant with tags for identifying languages as defined in RFC 5646"
}