import{MemberPaperKeyService}from'@digitaldefiance/brightchain-lib';// Generate a 24-word BIP39 paper keyconstpaperKey=MemberPaperKeyService.generatePaperKey();// Validate a paper keyconstisValid=MemberPaperKeyService.validatePaperKey(paperKey);// Recover a member from a paper keyconstmember=MemberPaperKeyService.recoverFromPaperKey(paperKey,memberName);// Generate a printable templateconsttemplate=MemberPaperKeyService.generateTemplate(paperKey,metadata);
SplitPaperKeyService
import{SplitPaperKeyService}from'@digitaldefiance/brightchain-lib';// Split a paper key into shares (3-of-5 threshold)constshares=SplitPaperKeyService.split(paperKey,5,3);// Reconstruct from any 3 sharesconstrecovered=SplitPaperKeyService.reconstruct(shares.slice(0,3));
DeviceProvisioningService
import{DeviceProvisioningService}from'@digitaldefiance/brightchain-lib';// Provision a new deviceconstdevice=DeviceProvisioningService.provisionDevice(member,{name:'MacBook Pro',type:DeviceType.Desktop,});// List devices for a memberconstdevices=DeviceProvisioningService.listDevices(member);// Revoke a deviceDeviceProvisioningService.revokeDevice(member,deviceId);
MemberIdentityProofService
import{MemberIdentityProofService}from'@digitaldefiance/brightchain-lib';// Create a signed identity proofconstproof=MemberIdentityProofService.create(member,'github','username');// Verify a proofconstisValid=awaitMemberIdentityProofService.verify(proof);// Get platform-specific posting instructionsconstinstructions=MemberIdentityProofService.getInstructions('github');
PublicKeyDirectoryService
import{PublicKeyDirectoryService}from'@digitaldefiance/brightchain-lib';// Search the directoryconstresults=PublicKeyDirectoryService.search('alice',profiles);// Toggle privacy modePublicKeyDirectoryService.togglePrivacyMode(profile);
import{EthereumWalletService}from'@digitaldefiance/brightchain-lib';// Derive Ethereum address from member identityconstaddress=EthereumWalletService.deriveAddress(mnemonic);// Sign a message (EIP-191)constsignature=EthereumWalletService.signMessage(mnemonic,'Hello');// Verify a signatureconstsigner=EthereumWalletService.verifySignature('Hello',signature);
GitSigningService
import{GitSigningService}from'@digitaldefiance/brightchain-lib';// Sign a git commitconstsignature=GitSigningService.signCommit(mnemonic,commitContent);// Sign a git tagconsttagSig=GitSigningService.signTag(mnemonic,tagContent);// Export public key in GPG-compatible formatconstgpgKey=GitSigningService.exportPublicKey(mnemonic);// Verify a signatureconstvalid=GitSigningService.verify(content,signature,publicKey);
Communication Services (brightchain-lib/src/lib/services/communication/)
ExplodingMessageService
import{ExplodingMessageService}from'@digitaldefiance/brightchain-lib';// Set time-based expirationconstmsg=ExplodingMessageService.setExpiration(message,3600);// 1 hour// Set read-count expirationconstmsg2=ExplodingMessageService.setExpiration(message,undefined,3);// Mark a message as read by a userconstupdated=ExplodingMessageService.markRead(message,userId);// Check if a message should be explodedconstshouldExplode=ExplodingMessageService.checkExpiration(message);// Explode a message (replace content)constexploded=ExplodingMessageService.explode(message);
API Endpoints
Device Provisioning
Method
Path
Description
POST
/api/devices/provision
Provision a new device
GET
/api/devices/list
List all devices for a member
POST
/api/devices/:id/revoke
Revoke a device
PUT
/api/devices/:id/rename
Rename a device
Identity Proofs
Method
Path
Description
POST
/api/identity/proofs
Create a new identity proof
GET
/api/identity/proofs/:memberId
Get proofs for a member
POST
/api/identity/proofs/:id/verify
Verify a proof
DELETE
/api/identity/proofs/:id
Revoke a proof
GET
/api/identity/proofs/instructions/:platform
Get posting instructions
Public Directory
Method
Path
Description
GET
/api/directory/search?q=
Search the public directory
GET
/api/directory/profile/:memberId
Get a member’s public profile
PUT
/api/directory/profile
Update profile
POST
/api/directory/privacy
Toggle privacy mode
Cryptocurrency
Method
Path
Description
GET
/api/wallet/address/:memberId
Get Ethereum address
POST
/api/wallet/sign-transaction
Sign an Ethereum transaction
POST
/api/wallet/sign-message
Sign a message (EIP-191)
POST
/api/wallet/verify
Verify a signature
POST
/api/git/sign-commit
Sign a git commit
POST
/api/git/sign-tag
Sign a git tag
GET
/api/git/public-key/:memberId
Export GPG-compatible public key
POST
/api/git/verify
Verify a git signature
Exploding Messages
Method
Path
Description
PUT
/api/messages/:id/set-expiration
Set message expiration
POST
/api/messages/:id/mark-read
Mark message as read
GET
/api/messages/expired
List expired messages
DELETE
/api/messages/:id/explode
Force-explode a message
GET
/api/messages/:id/remaining
Get remaining time/reads
Key Derivation Paths
Purpose
BIP32/44 Path
Notes
Master identity
BIP39 mnemonic
24-word phrase, 256-bit entropy
Ethereum wallet
m/44'/60'/0'/0/0
Standard BIP44 Ethereum
Device keys
m/44'/60'/0'/1/<index>
One per provisioned device
Git signing
m/44'/60'/0'/2/0
GPG-compatible ECDSA
Testing
Run all Keybase feature tests:
# Identity servicesNX_TUI=false npx nx run brightchain-lib:test --outputStyle=stream --testFile=src/lib/services/identity/memberPaperKeyService.spec.ts
NX_TUI=false npx nx run brightchain-lib:test --outputStyle=stream --testFile=src/lib/services/identity/deviceProvisioningService.spec.ts
NX_TUI=false npx nx run brightchain-lib:test --outputStyle=stream --testFile=src/lib/services/identity/memberIdentityProofService.spec.ts
NX_TUI=false npx nx run brightchain-lib:test --outputStyle=stream --testFile=src/lib/services/identity/publicKeyDirectoryService.spec.ts
# Crypto servicesNX_TUI=false npx nx run brightchain-lib:test --outputStyle=stream --testFile=src/lib/services/crypto/ethereumWalletService.spec.ts
NX_TUI=false npx nx run brightchain-lib:test --outputStyle=stream --testFile=src/lib/services/crypto/gitSigningService.spec.ts
# Communication servicesNX_TUI=false npx nx run brightchain-lib:test --outputStyle=stream --testFile=src/lib/services/communication/explodingMessageService.spec.ts
# Property-based testsNX_TUI=false npx nx run brightchain-lib:test --outputStyle=stream --testFile=src/lib/services/identity/deviceProvisioningService.property.spec.ts
NX_TUI=false npx nx run brightchain-lib:test --outputStyle=stream --testFile=src/lib/services/identity/publicKeyDirectoryService.property.spec.ts
NX_TUI=false npx nx run brightchain-lib:test --outputStyle=stream --testFile=src/lib/services/communication/explodingMessageService.property.spec.ts