did-manager/README.md
Kaspars Dambis 36b597c5f4 Switch to phpcs and phpstan for PHP 8.0 compat
Signed-off-by: Kaspars Dambis <hi@kaspars.net>
2026-05-16 20:25:00 +03:00

101 lines
2.3 KiB
Markdown

# FAIR DID Manager
`fairpm/did-manager` is the core FAIR DID library. It contains generic DID lifecycle management, PLC operations, key generation/export, and local key storage.
## Features
- Create, resolve, update, rotate, and deactivate `did:plc` identifiers
- Generate secp256k1 rotation keys and Ed25519 verification keys
- Encode/sign PLC operations with CBOR and multibase helpers
- Store DIDs, keys, and generic metadata locally
- Export keys in JSON, text, and environment-variable formats
## Requirements
- PHP 8.0 or higher
- Composer
- Extensions: `curl`, `json`
## Installation
```bash
git clone https://github.com/fairpm/did-manager.git
cd did-manager
composer install
```
For WordPress package metadata parsing, install `fairpm/did-manager-wordpress` alongside this package.
## Quick Start
```php
<?php
require_once 'vendor/autoload.php';
use FAIR\DID\DIDManager;
use FAIR\DID\PLC\PlcClient;
use FAIR\DID\Storage\KeyStore;
$store = new KeyStore(__DIR__ . '/keys.json');
$client = new PlcClient();
$manager = new DIDManager($store, $client);
$result = $manager->create_did(
handle: 'example-package',
service_endpoint: 'https://example.com/did-endpoint',
type: 'package',
metadata: ['owner' => 'Example Org'],
);
echo $result['did'] . PHP_EOL;
```
## Namespaces
- `FAIR\DID\Crypto` for encoding, canonicalization, and DID helpers
- `FAIR\DID\Keys` for key generation, decoding, and export
- `FAIR\DID\PLC` for PLC client and operation objects
- `FAIR\DID\Storage` for local key/DID persistence
- `FAIR\DID` for high-level DID lifecycle orchestration
## Examples
Core examples remain in [examples](examples):
- `01-generate-keys.php`
- `02-plc-operations.php`
- `03-key-storage.php`
- `04-export-keys.php`
- `05-generate-and-submit-did.php`
WordPress examples were moved to the `did-manager-wordpress` package.
## Testing
```bash
composer lint
composer analyze
composer test
```
Formatting can be applied with:
```bash
composer lint
composer format
```
The project uses a custom PSR-12-derived PHPCS ruleset for coding standards, PHPStan for static analysis, and PHPUnit for tests.
## Related Packages
- `fairpm/did-manager-wordpress` for WordPress header parsing, readme parsing, and FAIR metadata generation
## Security
Never commit private keys or generated keystore files to version control.
## License
GPL-3.0-or-later. See `LICENSE.md` for details.