Quick Start¶
This guide gets you signing and verifying credentials in minutes.
1. Generate a Keypair¶
Python:
from harbour.keys import generate_p256_keypair, p256_public_key_to_did_key
private_key, public_key = generate_p256_keypair()
did = p256_public_key_to_did_key(public_key)
print(f"DID: {did}")
TypeScript:
import { generateP256Keypair, p256PublicKeyToDid } from '@reachhaven/harbour-credentials';
const { privateKey, publicKey } = await generateP256Keypair();
const did = await p256PublicKeyToDid(publicKey);
console.log(`DID: ${did}`);
CLI:
2. Sign a Credential¶
Python:
from harbour.signer import sign_vc_jose
credential = {
"@context": ["https://www.w3.org/ns/credentials/v2"],
"type": ["VerifiableCredential"],
"issuer": did,
"credentialSubject": {
"id": "did:example:subject",
"name": "Alice"
}
}
jwt = sign_vc_jose(credential, private_key, kid=f"{did}#{did.split(':')[-1]}")
print(jwt)
TypeScript:
import { signJwt } from '@reachhaven/harbour-credentials';
const credential = {
'@context': ['https://www.w3.org/ns/credentials/v2'],
type: ['VerifiableCredential'],
issuer: did,
credentialSubject: {
id: 'did:example:subject',
name: 'Alice'
}
};
const jwt = await signJwt(credential, privateKey);
console.log(jwt);
3. Verify a Credential¶
Python:
from harbour.verifier import verify_vc_jose
result = verify_vc_jose(jwt, public_key)
print(f"Verified: {result['credentialSubject']['name']}")
TypeScript:
import { verifyJwt } from '@reachhaven/harbour-credentials';
const result = await verifyJwt(jwt, publicKey);
console.log(`Verified: ${result.credentialSubject.name}`);
4. Selective Disclosure (SD-JWT)¶
Python:
from harbour.sd_jwt import issue_sd_jwt_vc, verify_sd_jwt_vc
# Issue with selective disclosure
sd_jwt = issue_sd_jwt_vc(
credential,
private_key,
vct="https://example.com/credential/v1",
disclosable=["name", "email"],
)
# Verify
result = verify_sd_jwt_vc(sd_jwt, public_key)
TypeScript:
import { issueSdJwtVc, verifySdJwtVc } from '@reachhaven/harbour-credentials';
const sdJwt = await issueSdJwtVc(credential, privateKey, {
vct: 'https://example.com/credential/v1',
disclosable: ['name', 'email'],
});
const result = await verifySdJwtVc(sdJwt, publicKey);
Next Steps¶
- CLI Reference — Command-line tools
- Python API — Python API reference
- TypeScript API — TypeScript API reference