Macro include_crypt::include_crypt[][src]

macro_rules! include_crypt {
    (XOR, $path:expr) => { ... };
    (XOR, $path:expr, $key:expr) => { ... };
    (AES, $path:expr) => { ... };
    (AES, $path:expr, $key:expr) => { ... };
    ($path:expr) => { ... };
    ($path:expr, $key:expr) => { ... };
}
Expand description

Macro that can be used to safely embed files into the binary.

Parameters

The macro can be used with different encryption algorithms.

include_crypt!($encryption_type, $file_path, $optional_key)
  • $encryption_type: The type of the encryption. Either XOR or AES. If you don’t specify an encryption type, XOR will be used.
  • $file_path: The path to the file that should be embedded. If the path is relative, the CARGO_MANIFEST_DIR will be used as a starting point.
  • $optional_key: The optional encryption key. If specified, it has to be decodable by hex crate.

Returns

The macro expands to a encrypt_xor or encrypt_aes proc macro call. The return value will then be used to create a new EncryptedFile instance.

Examples

More examples can be found in the tests and examples directory.

// Encrypt using XOR with random key
let file: EncryptedFile = include_crypt!("src/lib.rs");

// Encrypt using XOR with custom key
let file: EncryptedFile = include_crypt!("src/lib.rs", 0xdeadbeef);

// Encrypt using XOR with random key
let file: EncryptedFile = include_crypt!(XOR, "src/lib.rs");

// Encrypt using XOR with custom key
let file: EncryptedFile = include_crypt!(XOR, "src/lib.rs", 0xdeadbeef);

// Encrypt using AES with random key
let file: EncryptedFile = include_crypt!(AES, "src/lib.rs");

// Encrypt using AES with custom key
let file: EncryptedFile = include_crypt!(AES, "src/lib.rs", 0xdeadbeef);

You can also use absolute paths:

let file: EncryptedFile = include_crypt!("D:/file.txt");