Infisical .NET SDK
If you’re working with C#, the official Infisical C# SDK package is the easiest way to fetch and work with secrets for your application.
Basic Usage
using Infisical.Sdk;
namespace Example
{
class Program
{
static void Main(string[] args)
{
var settings = new ClientSettings
{
ClientId = "CLIENT_ID",
ClientSecret = "CLIENT_SECRET",
// SiteUrl = "http://localhost:8080", <-- This line can be omitted if you're using Infisical Cloud.
};
var infisical = new InfisicalClient(settings);
var options = new GetSecretOptions
{
SecretName = "TEST",
ProjectId = "PROJECT_ID",
Environment = "dev",
};
var secret = infisical.GetSecret(options);
Console.WriteLine($"The value of secret '{secret.SecretKey}', is: {secret.SecretValue}");
}
}
}
This example demonstrates how to use the Infisical C# SDK in a C# application. The application retrieves a secret named TEST
from the dev
environment of the PROJECT_ID
project.
We do not recommend hardcoding your Machine Identity Tokens. Setting it as an environment variable would be best.
Installation
Run npm
to add @infisical/sdk
to your project.
$ dotnet add package Infisical.Sdk
Configuration
Import the SDK and create a client instance with your Machine Identity.
using Infisical.Sdk;
namespace Example
{
class Program
{
static void Main(string[] args)
{
var settings = new ClientSettings
{
ClientId = "CLIENT_ID",
ClientSecret = "CLIENT_SECRET",
};
var infisical = new InfisicalClient(settings); // <-- Your SDK instance!
}
}
}
ClientSettings methods
Caching
To reduce the number of API requests, the SDK temporarily stores secrets it retrieves. By default, a secret remains cached for 5 minutes after it’s first fetched. Each time it’s fetched again, this 5-minute timer resets. You can adjust this caching duration by setting the “cacheTTL” option when creating the client.
Working with Secrets
client.ListSecrets(options)
var options = new ListSecretsOptions
{
ProjectId = "PROJECT_ID",
Environment = "dev",
Path = "/foo/bar",
AttachToProcessEnv = false,
};
var secrets = infisical.ListSecrets(options);
Retrieve all secrets within the Infisical project and environment that client is connected to
Parameters
client.GetSecret(options)
var options = new GetSecretOptions
{
SecretName = "AAAA",
ProjectId = "659c781eb2d4fe3e307b77bd",
Environment = "dev",
};
var secret = infisical.GetSecret(options);
Retrieve a secret from Infisical.
By default, GetSecret()
fetches and returns a shared secret.
Parameters
client.CreateSecret(options)
var options = new CreateSecretOptions {
Environment = "dev",
ProjectId = "PROJECT_ID",
SecretName = "NEW_SECRET",
SecretValue = "NEW_SECRET_VALUE",
SecretComment = "This is a new secret",
};
var newSecret = infisical.CreateSecret(options);
Create a new secret in Infisical.
Parameters
client.UpdateSecret(options)
var options = new UpdateSecretOptions {
Environment = "dev",
ProjectId = "PROJECT_ID",
SecretName = "SECRET_TO_UPDATE",
SecretValue = "NEW VALUE"
};
var updatedSecret = infisical.UpdateSecret(options);
Update an existing secret in Infisical.
Parameters
client.DeleteSecret(options)
var options = new DeleteSecretOptions
{
Environment = "dev",
ProjectId = "PROJECT_ID",
SecretName = "NEW_SECRET",
};
var deletedSecret = infisical.DeleteSecret(options);
Delete a secret in Infisical.
Parameters
Cryptography
Create a symmetric key
Create a base64-encoded, 256-bit symmetric key to be used for encryption/decryption.
var key = infisical.CreateSymmetricKey();
Returns (string)
key
(string): A base64-encoded, 256-bit symmetric key, that can be used for encryption/decryption purposes.
Encrypt symmetric
var options = new EncryptSymmetricOptions
{
Plaintext = "Infisical is awesome!",
Key = key,
};
var encryptedData = infisical.EncryptSymmetric(options);
Parameters
Returns (object)
Tag
(string): A base64-encoded, 128-bit authentication tag.
Iv
(string): A base64-encoded, 96-bit initialization vector.
CipherText
(string): A base64-encoded, encrypted ciphertext.
Decrypt symmetric
var decryptOptions = new DecryptSymmetricOptions
{
Key = key,
Ciphertext = encryptedData.Ciphertext,
Iv = encryptedData.Iv,
Tag = encryptedData.Tag,
};
var decryptedPlaintext = infisical.DecryptSymmetric(decryptOptions);
Parameters
Returns (string)
Plaintext
(string): The decrypted plaintext.
Was this page helpful?