Skip to content

Referência da API

generateDidKey(seed?)

Cria uma identidade did:key Ed25519.

function generateDidKey(seed?: Uint8Array): DidKey;

interface DidKey {
  did: string;            // did:key:z6Mk...
  signer: Signer;         // signer did-jwt ligado a esta chave
  privateKey: Uint8Array; // seed de 32 bytes (manter secreta)
  publicKey: Uint8Array;  // chave pública de 32 bytes
}
  • Passa uma seed de 32 bytes para um DID determinístico (útil em testes ou para persistir uma identidade). Omite-a para uma identidade aleatória nova.
  • Lança exceção se a seed não tiver exatamente 32 bytes.

Guardar uma identidade: persiste a privateKey de 32 bytes de forma segura (ex.: um KMS ou um segredo cifrado). Recria a identidade mais tarde com generateDidKey(seed).

issueCredential(options)

Assina uma Verifiable Credential W3C como JWT EdDSA e devolve a string JWT compacta.

function issueCredential(options: IssueOptions): Promise<string>;

interface IssueOptions {
  issuer: DidKey;                    // de generateDidKey()
  subject: string;                   // o DID do titular/sujeito
  claims: Record<string, unknown>;   // vai para credentialSubject
  type?: string[];                   // tipos extra além de VerifiableCredential
  expiresIn?: number;                // segundos a partir de agora (opcional)
}

O id do sujeito é definido automaticamente a partir de subject. O nbf (not-before) é definido como agora; o exp é definido quando forneces expiresIn.

verifyCredentialJwt(jwt)

Verifica a assinatura e o emissor, devolvendo a credencial descodificada. Lança exceção numa credencial inválida ou adulterada.

function verifyCredentialJwt(jwt: string): Promise<VerifiedCredential>;

Campos principais no resultado:

  • verified: boolean
  • issuer: string — o DID que assinou a credencial
  • verifiableCredential — a VC descodificada (credentialSubject, type, issuanceDate, expirationDate, …)

Tratamento de erros

try {
  const resultado = await verifyCredentialJwt(jwt);
  // confiar em resultado.verifiableCredential.credentialSubject
} catch (err) {
  // assinatura inválida, expirada, ou JWT malformado
}