Class EncryptionTactic
EncryptionTactics define the various formats that the Smartcrypt Protocol uses to encode information about ciphertexts, salts, keys, and other cryptographic parameters.
Implements
Inherited Members
Namespace: PKWARE.Smartcrypt.Protocol
Assembly: SmartcryptProtocol.dll
Syntax
public sealed class EncryptionTactic : IEquatable<EncryptionTactic>
Remarks
The presence of a prefix matching an encryption tactic does not guarantee that the content is
encrypted. The prefixes, commonly something like V2
may be used for other purposes as well. Be aware of
this when writing algorithms.
Fields
V2
RSA encryption.
Declaration
public static readonly EncryptionTactic V2
Field Value
Type | Description |
---|---|
EncryptionTactic |
Remarks
Given a plaintext plain
, the final format will be V2-base64(RSA_encrypt(plain))
.
V3
AES encryption of an AES key. Used for providing contingency access to asset keys.
Declaration
public static readonly EncryptionTactic V3
Field Value
Type | Description |
---|---|
EncryptionTactic |
Remarks
Given a plaintext plain
, the final format will be
V3-key_sequence-base64(iv)-base64(AES_encrypt(plain))
. plain
must be 32 bytes. The IV must be
16 bytes. AES encryption must be performed without padding.
V4
AES encryption with a one-time key.
Declaration
public static readonly EncryptionTactic V4
Field Value
Type | Description |
---|---|
EncryptionTactic |
Remarks
Given a plaintext plain
, the final format will be V4-base64(AES_encrypt(plain))
.
A new, one-time use, 32 byte AES key is generated for this encryption. The IV is the first 16 bytes of the
AES key.
Commonly, the V4
tactic is used in conjunction with V2 as a form of hybrid
encryption.
V5
AES encryption without padding.
Declaration
public static readonly EncryptionTactic V5
Field Value
Type | Description |
---|---|
EncryptionTactic |
Remarks
Intended for general use encryption. The AES key is derived from the user's password using PBKDF2.
Given a plaintext plain
, the final format will be V5-base64(iv)-base64(AES_encrypt(plain))
.
The AES encryption must not use padding. The IV is a randomly generated 16 bytes.
See Also
V6
AES encryption with padding.
Declaration
public static readonly EncryptionTactic V6
Field Value
Type | Description |
---|---|
EncryptionTactic |
Remarks
Intended for general use encryption. The AES key is derived from the user's password using PBKDF2.
Given a plaintext plain
, the final format will be V6-base64(iv)-base64(AES_encrypt(plain))
.
The AES encryption must use padding. The IV is a randomly generated 16 bytes.
See Also
V7
AES encryption of a user-supplied password.
Declaration
public static readonly EncryptionTactic V7
Field Value
Type | Description |
---|---|
EncryptionTactic |
Remarks
Given a plaintext plain
, the final format will be V7-hex(iv)hex(AES_encrypt(plain))
.
The user-supplied password must be at least 32 byes long. If it is not, it must be padded with NUL
characters to be 32 bytes long. The IV is a randomly generated 16 bytes. The AES encryption must use
padding.
Methods
ApplyPrefix(String)
Prepends this tactic's prefix to the content.
Declaration
[Pure]
[NotNull]
public string ApplyPrefix([CanBeNull] string value)
Parameters
Type | Name | Description |
---|---|---|
String | value | The content to prepend the prefix to. |
Returns
Type | Description |
---|---|
String | The content with the prefix applied. |
Equals(EncryptionTactic)
Declaration
public bool Equals(EncryptionTactic other)
Parameters
Type | Name | Description |
---|---|---|
EncryptionTactic | other |
Returns
Type | Description |
---|---|
Boolean |
Equals(Object)
Declaration
public override bool Equals(object obj)
Parameters
Type | Name | Description |
---|---|---|
Object | obj |
Returns
Type | Description |
---|---|
Boolean |
Overrides
GetHashCode()
Declaration
public override int GetHashCode()
Returns
Type | Description |
---|---|
Int32 |
Overrides
IsCompatible(String)
Checks whether or not content is compatible with this tactic.
Declaration
[Pure]
public bool IsCompatible([NotNull] string value)
Parameters
Type | Name | Description |
---|---|---|
String | value | The content to check for compatibility. |
Returns
Type | Description |
---|---|
Boolean |
|
StripPrefix(String)
Removes this tactic's prefix from the content if it exists.
Declaration
[Pure]
[NotNull]
public string StripPrefix([NotNull] string value)
Parameters
Type | Name | Description |
---|---|---|
String | value | The content from which to remove the prefix. Does not have to have the prefix. |
Returns
Type | Description |
---|---|
String | The |
ToString()
Declaration
public override string ToString()
Returns
Type | Description |
---|---|
String |