CapyKit Documentation
  • Introduction
  • Getting Started
  • API Reference
    • CapyKit
      • CapyEventArgs
      • CapyEventHandler
      • CapyEventReporter
      • Color
      • EncryptedValue<T>
      • EventLevel
      • IPasswordAlgorithm
      • NamedColor
      • Password
      • Pbkdf2Algorithm
      • PoolItem<T>
      • Pool<T>
      • PropertyComparer<T, U>
    • CapyKit.Attributes
      • EnumerationAttribute<T>
      • EnumerationDescriptionAttribute
      • ValueFormatAttribute
    • CapyKit.Enumerations
      • MeasurementSystem
    • CapyKit.Extensions
      • EnumerationExtensions
      • LINQExtensions
      • ObjectExtensions
      • StringExtensions
    • CapyKit.Helpers
      • CalculationHelper
      • CompressionHelper
      • EncryptionHelper
      • IEncryptionAlgorithm
      • KeyHelper
      • LanguageHelper
      • SecurityHelper
      • SerializationHelper
      • SettingsHelper
      • ValidCharacterCollection
Search Results for

    Show / Hide Table of Contents
    • Introduction
    • Getting Started
    • API Reference
      • CapyKit
        • CapyEventArgs
        • CapyEventHandler
        • CapyEventReporter
        • Color
        • EncryptedValue<T>
        • EventLevel
        • IPasswordAlgorithm
        • NamedColor
        • Password
        • Pbkdf2Algorithm
        • PoolItem<T>
        • Pool<T>
        • PropertyComparer<T, U>
      • CapyKit.Attributes
        • EnumerationAttribute<T>
        • EnumerationDescriptionAttribute
        • ValueFormatAttribute
      • CapyKit.Enumerations
        • MeasurementSystem
      • CapyKit.Extensions
        • EnumerationExtensions
        • LINQExtensions
        • ObjectExtensions
        • StringExtensions
      • CapyKit.Helpers
        • CalculationHelper
        • CompressionHelper
        • EncryptionHelper
        • IEncryptionAlgorithm
        • KeyHelper
        • LanguageHelper
        • SecurityHelper
        • SerializationHelper
        • SettingsHelper
        • ValidCharacterCollection

    Getting Started

    This guide shows the common setup and first-use patterns for consuming CapyKit from a .NET 8 project.

    Install

    Add CapyKit to your project from NuGet:

    dotnet add package CapyKit
    

    If you are working from a local checkout instead, reference the project directly:

    dotnet add reference ../CapyKit/CapyKit.csproj
    

    Add Namespaces

    Most APIs live in one of three namespaces:

    using CapyKit;
    using CapyKit.Extensions;
    using CapyKit.Helpers;
    

    Use CapyKit for core types such as Password, Pool<T>, and CapyEventReporter. Use CapyKit.Extensions for extension methods. Use CapyKit.Helpers for serialization, compression, security, keys, language, and calculation helpers.

    Work With Strings

    using CapyKit.Extensions;
    
    string? suppliedName = "";
    string name = suppliedName.IfNullOrWhiteSpace("Guest");
    

    IfNullOrEmpty and IfNullOrWhiteSpace return the original value when it is usable and return your replacement value when it is not.

    Page And Filter Collections

    using CapyKit.Extensions;
    
    var activeUsers = users.Filter(user => user.Disabled);
    var secondPage = activeUsers.Page(pageNumber: 2, pageSize: 25);
    int pageCount = activeUsers.PageCount(pageSize: 25);
    

    Filter removes items that match the predicate. Page uses natural page numbering, so the first page is 1.

    Serialize And Compress Data

    using CapyKit.Helpers;
    
    var json = SerializationHelper.SerializeToString(order);
    var copy = SerializationHelper.Deserialize<Order>(json);
    
    var compressed = CompressionHelper.CompressToString(order);
    var restored = CompressionHelper.Decompress<Order>(compressed);
    

    Serialization uses System.Text.Json. Compression stores the serialized JSON payload using gzip; CompressToString returns a Base64 representation for easier storage or transport.

    Hash And Verify Passwords

    using CapyKit;
    using CapyKit.Helpers;
    
    Password storedPassword = SecurityHelper.Pbkdf2("correct horse battery staple");
    
    bool passwordMatches = SecurityHelper.CompareHashedPassword(
        storedPassword,
        "correct horse battery staple",
        storedPassword.Salt,
        Password.Pbkdf2Algorithm);
    

    SecurityHelper.Pbkdf2 creates a Password with a random salt. Store the hash, salt, and algorithm information required by your application, then compare future password attempts using the same salt and algorithm.

    Generate Random Values

    using CapyKit.Helpers;
    
    string token = SecurityHelper.GetRandomString(32);
    string password = SecurityHelper.GetRandomPassword(
        20,
        ValidCharacterCollection.Lowercase,
        ValidCharacterCollection.Uppercase,
        ValidCharacterCollection.Numbers,
        ValidCharacterCollection.Special);
    

    Random string and password generation use .NET cryptographic random number generation.

    Create And Validate Keys

    using System.Text;
    using CapyKit.Helpers;
    
    var keyHelper = new KeyHelper();
    keyHelper.SetMasterKeyAccessor(() => Encoding.UTF8.GetBytes("replace-with-your-master-key"));
    keyHelper.SetSaltSizeAccessor(() => 8);
    keyHelper.SetNumPartsAccessor(() => 4);
    
    string key = keyHelper.GenerateKey();
    bool valid = keyHelper.ValidateKey(key);
    

    KeyHelper uses an application-provided master key to sign generated key material. Keep the master key secret and stable for keys that must remain valid over time.

    Subscribe To CapyKit Events

    using CapyKit;
    
    CapyEventReporter.Subscribe(
        e => Console.WriteLine($"[{e.Level}] {e.MethodName}: {e.Message}"),
        EventLevel.Warning);
    

    CapyKit does not require a logging framework. Subscribe to events and forward them to whatever logging or telemetry system your application already uses.

    Browse The API

    For the full list of namespaces, types, overloads, and member signatures, open the generated API Reference.

    In this article
    Back to top Generated by DocFX