v0.1.0
Release notes
Initial release of Bitcoin Cash OAuth - A decentralized authentication system using Bitcoin Cash ECDSA signatures for identity verification. This release includes server-side Python packages for Django and FastAPI frameworks, plus a universal JavaScript client library.
Features
Core Authentication Protocol
- ECDSA-based Authentication: Uses Bitcoin Cash public/private key pairs instead of passwords
- Message Signing Protocol: Clients sign messages in format
bitcoincash-oauth|domain|userId|timestamp - Domain Binding: Signatures include domain to prevent phishing attacks across different sites
- Replay Protection: Timestamps prevent replay attacks (5-minute window)
- CashAddr Format: Modern Bitcoin Cash address format with built-in error detection
Python Server Packages
bitcoincash-oauth-django
- Django authentication backend for Bitcoin Cash OAuth
- Django REST Framework integration with custom authentication classes
- Middleware for automatic signature verification
- Database models for storing user-address mappings
- Management commands for user administration
- Support for Django 4.0+ and Django REST Framework 3.14+
bitcoincash-oauth-fastapi
- FastAPI dependency injection system for OAuth authentication
- Automatic JWT token generation and validation
- Async/await support for high-performance applications
- Built-in rate limiting and security headers
- Redis integration for token storage (optional)
JavaScript Client Library
bitcoincash-oauth-client
- Universal library supporting both browser and Node.js environments
- Keypair generation using libauth (pure JavaScript, no native dependencies)
- Automatic message signing and signature formatting
- Token refresh handling with automatic retry
- Secure storage abstraction (works with localStorage, sessionStorage, or custom storage)
- TypeScript definitions included
- Works with all major JavaScript frameworks (React, Vue, Angular, etc.)
API Endpoints (Server)
POST /auth/register- Register new user with Bitcoin Cash addressPOST /auth/token- Obtain OAuth2 access token via signature authenticationPOST /auth/refresh- Refresh expired access tokensPOST /auth/revoke- Revoke access tokensGET /auth/me- Get current user information
Security Features
- Signature verification using secp256k1 curve (same as Bitcoin Cash)
- Public key to address conversion for verification
- Protocol prefix to prevent cross-protocol signature reuse
- Configurable token expiration (1 hour default for access tokens)
- Token revocation list support
- HTTPS enforcement recommendations