cryptography

Sorcha.Cryptography provides multi-algorithm support (ED25519, P-256, RSA-4096), symmetric encryption (AES, ChaCha20), and BIP39/44 HD wallet derivation. All operations return CryptoResult<T> for explicit error handling—no exceptions for crypto failures.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "cryptography" with this command: npx skills add stuartf303/sorcha/stuartf303-sorcha-cryptography

Cryptography Skill

Sorcha.Cryptography provides multi-algorithm support (ED25519, P-256, RSA-4096), symmetric encryption (AES, ChaCha20), and BIP39/44 HD wallet derivation. All operations return CryptoResult<T> for explicit error handling—no exceptions for crypto failures.

Quick Start

Key Generation

// Inject ICryptoModule var keySetResult = await _cryptoModule.GenerateKeySetAsync(WalletNetworks.ED25519); if (!keySetResult.IsSuccess) throw new InvalidOperationException($"Key generation failed: {keySetResult.Status}");

var keySet = keySetResult.Value!; // keySet.PrivateKey.Key = 64 bytes (ED25519) // keySet.PublicKey.Key = 32 bytes (ED25519)

Signing & Verification

// Hash then sign byte[] hash = SHA256.HashData(transactionData); var signResult = await _cryptoModule.SignAsync( hash, (byte)WalletNetworks.ED25519, keySet.PrivateKey.Key!);

// Verify var status = await _cryptoModule.VerifyAsync( signResult.Value!, hash, (byte)WalletNetworks.ED25519, keySet.PublicKey.Key!); bool isValid = status == CryptoStatus.Success;

HD Wallet Creation

var keyRing = await _keyManager.CreateMasterKeyRingAsync(WalletNetworks.ED25519, password: null); // keyRing.Mnemonic = "word1 word2 ... word12" — user must backup // keyRing.MasterKeySet contains derived keys

Key Concepts

Concept Usage Example

WalletNetworks

Algorithm selection ED25519 , NISTP256 , RSA4096

CryptoResult<T>

Error handling .IsSuccess , .Status , .Value

KeySet

Public/private pair .PrivateKey.Key , .PublicKey.Key

KeyRing

Full wallet with mnemonic .Mnemonic , .MasterKeySet

.Zeroize()

Secure memory clearing Call when done with keys

Common Patterns

Platform-Specific Key Storage

// Encryption provider abstraction handles platform differences var encrypted = await _encryptionProvider.EncryptAsync(privateKey, "wallet-key-id"); // Windows: DPAPI, Linux: Secret Service, Dev: AES-GCM

Address Generation

var address = _walletUtilities.PublicKeyToWallet(publicKey, (byte)WalletNetworks.ED25519); // Returns: "ws1q8tuvvdykly8n0fy5jkuu8cjw0fu0p6jl5rp9g..."

See Also

  • patterns - Algorithm selection, signing workflows, key management

  • workflows - Wallet creation, transaction signing, encryption

Related Skills

  • See the nbitcoin skill for HD wallet derivation paths (BIP32/39/44)

  • See the postgresql skill for encrypted key storage patterns

  • See the xunit and fluent-assertions skills for testing crypto code

Documentation Resources

Fetch latest cryptography documentation with Context7.

How to use Context7:

  • Use mcp__context7__resolve-library-id to search for "libsodium" or "System.Security.Cryptography"

  • Query with mcp__context7__query-docs using the resolved library ID

Recommended Queries:

  • "ED25519 signing verification"

  • "AES-GCM authenticated encryption"

  • "BIP39 mnemonic seed derivation"

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

entity-framework

No summary provided by upstream source.

Repository SourceNeeds Review
General

signalr

No summary provided by upstream source.

Repository SourceNeeds Review
General

scalar

No summary provided by upstream source.

Repository SourceNeeds Review