Cross.PepperVault
1.0.0-dev.9
See the version list below for details.
dotnet add package Cross.PepperVault --version 1.0.0-dev.9
NuGet\Install-Package Cross.PepperVault -Version 1.0.0-dev.9
<PackageReference Include="Cross.PepperVault" Version="1.0.0-dev.9" />
<PackageVersion Include="Cross.PepperVault" Version="1.0.0-dev.9" />
<PackageReference Include="Cross.PepperVault" />
paket add Cross.PepperVault --version 1.0.0-dev.9
#r "nuget: Cross.PepperVault, 1.0.0-dev.9"
#:package Cross.PepperVault@1.0.0-dev.9
#addin nuget:?package=Cross.PepperVault&version=1.0.0-dev.9&prerelease
#tool nuget:?package=Cross.PepperVault&version=1.0.0-dev.9&prerelease
Cross.PepperVault
A set of .NET libraries for configurable loading of pepper values (secret strings used to harden password hashes and similar use cases), with support for multiple versions, a TTL cache, reload, and FluentValidation of options at startup. The core defines the IPepperVaultProvider contract and shared infrastructure; data sources live in separate NuGet packages.
Features
- Pepper versions — version dictionary, active current version, rotation without application downtime.
- Cache and TTL — providers built on
PepperProviderBasecache loads and refresh on timeout and when options change viaIOptionsMonitor. - Configuration —
Peppersection, binding viaAddPepperOptions,ValidateOnStart(), and composite FluentValidation validators. - Providers — environment, file, Azure Key Vault, AWS Secrets Manager, GCP Secret Manager, HashiCorp Vault, and more; reference only what you need.
- Extensibility — plug in your own source: inherit
PepperProviderBaseand registerIPepperVaultProviderin DI.
Target frameworks
All projects target netstandard2.1 and net6.0 through net10.0 (see .csproj).
Packages
Per-package NuGet download and latest-version badges. Issues: the core package row shows the repo-wide open-issue count; each provider row shows the count for a GitHub search scoped to this repository and the full NuGet package id (there are no per-package labels in this repo).
Target frameworks: libraries target netstandard2.1 and .NET 6 through .NET 10. Keep Cross.PepperVault and your provider packages on compatible NuGet versions (same release line); pin versions in production.
# Package Manager Console (Visual Studio) — install core + any providers you need
Install-Package Cross.PepperVault
Install-Package Cross.PepperVault.Env
Install-Package Cross.PepperVault.EnvJson
Install-Package Cross.PepperVault.FileJson
Install-Package Cross.PepperVault.AzureKvJson
Install-Package Cross.PepperVault.AzureKvVersioned
Install-Package Cross.PepperVault.AwsSecretsJson
Install-Package Cross.PepperVault.GcpSecretManagerJson
Install-Package Cross.PepperVault.HcvKv2Json
Then register AddPepperOptions (with your provider options and validator types) and IPepperVaultProvider in DI — see Quick start below.
Quick start
- Add NuGet packages (example: core + Env):
dotnet add package Cross.PepperVault
dotnet add package Cross.PepperVault.Env
- Register options and the provider:
services.AddPepperOptions<EnvProviderOptions, EnvProviderOptionsValidator>(configuration);
services.AddSingleton<IPepperVaultProvider, EnvPepperProvider>();
- Sample configuration for Env:
{
"Pepper": {
"Provider": "Env",
"Ttl": "00:10:00",
"ProviderOptions": {
"Current": 1,
"Peppers": {
"1": "your-secret-pepper-v1",
"2": "your-secret-pepper-v2"
}
}
}
}
Provider names and ProviderOptions shape depend on the package you choose.
Build
dotnet build Cross.PepperVault.slnx -c Release
Packaging: config.nuspec in each project directory (after a Release build).
Unit tests
Tests follow the Given_When_Then naming convention:
- Given — context / preconditions.
- When — the action under test.
- Then — the expected outcome.
Example: Given_ExistingUser_When_RequestCode_Then_SendsCodeAndReturnsLastCode.
Tests live in the Cross.PepperVault.Tests project (Options, Providers, Extensions, and related folders).
See also
- LICENSE — license.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- FluentValidation (>= 11.8.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 8.0.0)
-
net10.0
- FluentValidation (>= 11.8.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.5)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.5)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.5)
-
net6.0
- FluentValidation (>= 11.8.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 8.0.0)
-
net7.0
- FluentValidation (>= 11.8.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 8.0.0)
-
net8.0
- FluentValidation (>= 11.8.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 8.0.0)
-
net9.0
- FluentValidation (>= 11.8.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 9.0.14)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.14)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 9.0.14)
NuGet packages (8)
Showing the top 5 NuGet packages that depend on Cross.PepperVault:
| Package | Downloads |
|---|---|
|
Cross.PepperVault.Env
Провайдер pepper из переменных окружения (Cross.PepperVault.Env). |
|
|
Cross.PepperVault.EnvJson
Провайдер pepper из JSON в переменной окружения (Cross.PepperVault.EnvJson). |
|
|
Cross.PepperVault.GcpSecretManagerJson
Провайдер pepper из Google Cloud Secret Manager (JSON) — Cross.PepperVault.GcpSecretManagerJson. |
|
|
Cross.PepperVault.HcvKv2Json
Провайдер pepper из HashiCorp Vault KV v2 (JSON) через VaultSharp — Cross.PepperVault.HcvKv2Json. |
|
|
Cross.PepperVault.AwsSecretsJson
Провайдер pepper из AWS Secrets Manager (JSON) — Cross.PepperVault.AwsSecretsJson. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0 | 531 | 4/9/2026 |
| 1.0.0-dev.11 | 57 | 4/9/2026 |
| 1.0.0-dev.10 | 55 | 4/9/2026 |
| 1.0.0-dev.9 | 58 | 4/9/2026 |
| 1.0.0-dev.8 | 61 | 4/9/2026 |
Cross.PepperVault: ядро библиотеки pepper-провайдеров.