@the-hashgraph-group-ag/issuer
v0.4.5-alpha.0
Published
This package is a powerful TypeScript/JavaScript library designed to streamline the issuance of verifiable credentials. This package provides a flexible and extensible framework for creating, validating, and issuing verifiable credentials with support for
Keywords
Readme
Features
- Multiple Credential Formats: Support for Linked Data Proof (LDP) verifiable credentials with extensible architecture for additional formats
- Policy-Based Validation: Configurable business rules and validation policies to ensure credential integrity
- Cryptographic Flexibility: Integration with various cryptographic suites including Ed25519 signatures
- Schema Management: Flexible schema loading and validation for credential structures
- Decorator Pattern: Extensible decoration system for adding metadata and custom properties to credentials
- TypeScript Support: Full TypeScript definitions for enhanced developer experience and type safety
Installation
npm install @the-hashgraph-group-ag/issuerQuick Start
Basic Usage
import {
createCredentialIssuer,
LdpHandler,
RequiredClaimsPolicy,
} from '@the-hashgraph-group-ag/issuer';
import { InternalEd25519Signer } from '@the-hashgraph-group-ag/signer-internal-ed25519';
import { randomBytes } from 'crypto';
// Create a signer
const privateKey = randomBytes(64);
const signer = new InternalEd25519Signer(privateKey);
// Create a schema loader
const schemaLoader = {
load: async (schemaId: string) => ({
context: ['https://www.w3.org/2018/credentials/v1'],
type: ['VerifiableCredential', 'UniversityDegreeCredential'],
id: schemaId,
}),
};
// Create an LDP handler
const ldpHandler = new LdpHandler({
signer,
schemaLoader,
});
// Create validation policies
const namePolicy = new RequiredClaimsPolicy(['name', 'degree']);
// Create the credential issuer
const issuer = createCredentialIssuer({
handlers: [ldpHandler],
policies: [namePolicy],
});
// Issue a credential
const result = await issuer.issue({
claims: {
name: 'John Doe',
degree: 'Bachelor of Science in Computer Science',
},
format: 'ldp_vc',
options: {
schema: 'https://example.com/schemas/degree',
issuer: 'did:key:z6MkqYqJQdiwZXUmvLHn79eJ4iv2w7CqCpyQ8CvGtPuLZr1e',
subjectId: 'did:key:z6MkqYqJQdiwZXUmvLHn79eJ4iv2w7CqCpyQ8CvGtPuLZr1e',
proofPurpose: 'assertionMethod',
verificationMethod:
'did:key:z6MkqYqJQdiwZXUmvLHn79eJ4iv2w7CqCpyQ8CvGtPuLZr1e',
},
});
if (result.success) {
console.log('Credential issued successfully:', result.credential);
} else {
console.error('Issuance failed:', result.error);
}Contributing
Contributions are welcome! Please see the main project repository for contribution guidelines.
License
This SDK is licensed under the Apache License 2.0.
Support
For support and questions:
- Check the documentation
- Open an issue on GitHub
- Contact the development team
