# RapidField.SolidInstruments.Cryptography

Exposes advanced security mechanics.

### Installation

This library is available via **NuGet**. Use one of the commands below to download and install the library and all of its dependencies.

###### .NET CLI

```
dotnet add package RapidField.SolidInstruments.Cryptography
```

###### NuGet Package Manager

```
Install-Package RapidField.SolidInstruments.Cryptography
```

### Usage

The examples below are provided to help you get started using the features of this library.

#### In-memory security

SecureMemory represents a fixed-length bit field that is pinned in memory and encrypted at rest.

###### C#

```
// Allocates 1,024 bytes that are encrypted and pinned in memory.
using (var secureMemory = new SecureMemory(1024))
{
secureMemory.Access(memory =>
{
// In this context, memory is an unencrypted bit field.
});
}
```

### Namespaces

#### RapidField.SolidInstruments.Cryptography.Asymmetric

#### RapidField.SolidInstruments.Cryptography.Extensions

#### RapidField.SolidInstruments.Cryptography.Hashing

#### RapidField.SolidInstruments.Cryptography.Secrets

#### RapidField.SolidInstruments.Cryptography.Symmetric

### Classes

#### CryptographicKey

Represents a cryptographic algorithm and key bits.

#### CryptographicKey<TAlgorithm>

Represents a cryptographic algorithm and source bits for a derived key, encapsulates key derivation operations and secures key bits in memory.

#### CryptographicProcessor

Provides facilities for performing cryptographic operations upon typed objects.

#### CryptographicProcessor<T>

Provides facilities for performing cryptographic operations upon typed objects.

#### SecureMemory

Represents a fixed-length bit field that is pinned in bit field and encrypted at rest.

#### SoftwareSecurityModule

Represents a centralized facility for safeguarding digital secrets and performing cryptographic operations.

#### SoftwareSecurityModule<TPersistenceVehicle>

Represents a centralized facility for safeguarding digital secrets and performing cryptographic operations.

### Interfaces

#### ICryptographicComponent

Represents a cryptographic key or instrument.

#### ICryptographicKey

Represents a cryptographic algorithm and key bits.

#### ICryptographicKey<TAlgorithm>

Represents a cryptographic algorithm and source bits for a derived key, encapsulates key derivation operations and secures key bits in memory.

#### ICryptographicProcessor

Provides facilities for performing cryptographic operations upon typed objects.

#### ICryptographicProcessor<T>

Provides facilities for performing cryptographic operations upon typed objects.

#### IManagedKeyCipher

Represents a symmetric key encryption facility that uses managed keys to perform cryptographic operations.

#### ISecureMemory

Represents a fixed-length bit field that is pinned in bit field and encrypted at rest.

#### ISecurityAppliance

Represents a centralized utility for performing cryptographic operations.

#### ISoftwareSecurityModule

Represents a centralized facility for safeguarding digital secrets and performing cryptographic operations.

#### ISoftwareSecurityModule<TPersistenceVehicle>

#### ISoftwareSecurityModule<TInMemorySecretStore, TPersistenceVehicle>

### Enums

#### CryptographicComponentUsage

Defines the valid purposes and uses of a cryptographic key or instrument.

#### CryptographicKeyDerivationMode

Defines options for deriving key bits from an ICryptographicKey<TAlgorithm>.