A decentralized infrastructure for cryptographic identity and document timestamping on Ethereum, enabling secure digital interactions through OpenPGP cryptography.
Cryptogram provides two complementary products for decentralized cryptographic operations:
Decentralized Public Key Infrastructure (PKI)
Web3PGP enables a decentralized public key infrastructure using OpenPGP and Ethereum. It allows:
- Decentralized Key Registry: Store and retrieve OpenPGP public keys on the blockchain
- Identity Certification: Establish trust chains by certifying keys on-chain
- Key Revocation: Revoke compromised or expired keys transparently
- Transparent Auditing: Immutable record of all key operations via blockchain events
- Cost Efficiency: Uses event logs for gas-optimized storage instead of contract state
π Web3PGP Documentation | βοΈ Web3PGP CLI
Document Timestamping & EDI System
Web3Sign provides decentralized Electronic Data Interchange (EDI) with cryptographic timestamping:
- Document Timestamping: Create immutable timestamps for any digital document
- Proof-of-Existence: Cryptographically prove document existence at specific times
- Certified Copies: Track document provenance with signature workflows
- Blockchain Verification: Verify document integrity and timestamp authenticity
- OpenPGP Integration: Leverages Web3PGP keys for cryptographic operations
π Web3Sign Documentation | βοΈ Web3Sign CLI
This monorepo contains all components of the Cryptogram ecosystem:
cryptogram/
βββ contracts/ # Solidity smart contracts (Foundry)
β βββ src/ # Contract source code
β βββ test/ # Contract tests
β βββ scripts/ # Deployment & management scripts
βββ clis/ # Command-line interfaces
β βββ web3pgp/ # Web3PGP CLI
β βββ web3sign/ # Web3Sign CLI
βββ sdks/ # Software development kits
β βββ typescript/ # TypeScript SDK
βββ frontends/ # Web applications
β βββ web3pgp/ # Web3PGP frontend
β βββ timestamp-verification/ # Timestamp verification tool
βββ documentation/ # Project documentation
β βββ NETWORKS.md # Network information
β βββ SETUP.md # Setup guides
βββ examples/ # Usage examples and tutorials
βββ scripts/ # Utility scripts
- Smart Contracts - Foundry-based Solidity contracts
- Web3PGP CLI - Command-line tool for key management
- Web3Sign CLI - Command-line tool for document timestamping
- TypeScript SDK - SDK for integrating with applications
- Setup Guide - Getting started with the project
- Network Information - Deployed contract addresses
- Node.js 18.x or higher
- Foundry (for smart contract development)
- GPG (for cryptographic operations)
# Clone the repository
git clone https://github.com/cryptogram/cryptogram.git
cd cryptogram
# Install dependencies
npm install
# For contract development
cd contracts && forge install# Generate a key and register it
web3pgp blockchain generate-key > key.json
export DEXES_WALLET_PRIVATE_KEY=$(jq -r '.privateKey' key.json)
web3pgp blockchain register --key my-key.asc
# Timestamp a document
web3sign timestamp -e <fingerprint> -H <hash> -s signature.asc- Web3PGP: Core PKI contract for key registration and management
- Web3Sign: Timestamping contract for document verification
- FlatFee: Fee management with access control
- AccessManager: Role-based access control system
- TypeScript SDK: Comprehensive SDK for both Web3PGP and Web3Sign
- CLIs: Command-line tools for direct interaction
- Web Frontends: Browser-based interfaces
- Decentralized: No central authority or single point of failure
- Gas Efficient: Event-based storage for cost optimization
- Composability: Modular design for integration with other systems
- OpenPGP Native: Leverages existing cryptographic standards
- Upgradeable: UUPS proxy pattern for future enhancements
# Build all components
npm run build
# Build contracts
cd contracts && forge build
# Build CLIs
cd clis/web3pgp && npm run build
cd clis/web3sign && npm run build# Test contracts
cd contracts && forge test
# Test CLIs
cd clis/web3pgp && npm test
cd clis/web3sign && npm test
# Test SDK
cd sdks/typescript && npm test# Deploy contracts to testnet
cd contracts
forge script script/DeployTestEnvironment.s.sol --rpc-url $SEPOLIA_RPC_URL --broadcast
# Publish CLIs
cd clis/web3pgp && npm publish
cd clis/web3sign && npm publishWe welcome contributions to Cryptogram! Here's how to get involved:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- π Bug Reports: GitHub Issues
- π‘ Feature Requests: GitHub Issues
- β Questions: GitHub Discussions
- Follow the existing code style and conventions
- Write tests for new functionality
- Update documentation for API changes
- Ensure all tests pass before submitting PRs
See the Setup Guide for detailed development environment setup.
Cryptogram takes security seriously:
- Audit Ready: Contracts designed with security best practices
- OpenPGP Validation: All cryptographic validation performed off-chain
- Access Control: Role-based permissions for sensitive operations
- Upgradeable: Secure upgrade mechanisms for bug fixes
For security-related issues, please email security@cryptogram.dev instead of creating public issues.
Business Source License 1.1 - see LICENSE file for details.
- GitHub: cryptogram/cryptogram
- Documentation: docs.cryptogram.dev
- Twitter: @cryptogram
Cryptogram - Decentralized Cryptography for the Digital Age /home/gbdevw/Projects/cryptogram/README.md