Skip to content

leofaraf/secure-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

89 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

secure-rs

GitHub Actions Workflow Status Static Badge

Proc-macro name Args Description Example Feature
include_secure_str_brotli pathname, varname** equivalent of include_str!(), but compress in c-t* via brotli here compression
secure_str_brotli varname**, str value equivalent of const NAME: &str, but compress in c-t* via brotli here compression
include_secure_bytes_brotli pathname, varname** equivalent of include_bytes!(), but compress in c-t* via brotli here compression
include_secure_bytes_aes pathname, aes_key, varname** equivalent of include_str!(), but compress in c-t* via aes here encryption
secure_str_aes aes_key, varname**, str value equivalent of const NAME: &str, but encrypt in c-t* via aes here encryption
include_secure_bytes_aes pathname, aes_key varname** equivalent of include_bytes!(), but compress in c-t* via aes here encryption

c-t* — compile-time

varname** — each macro accept varname and as result generate function with name: get_{varname}

Results of usage:

Non-secure string:

const API_KEY: &str = "-----BEGIN PUBLIC KEY-----
MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgGQlFVujnjLZ2Ln+JjvcSu3cOiMB
JrKb3G49Ivg3Mvefp+D+UHN5OV2AcN1c0znkIzk/QgqxJ6VKaZtqjKMhZWG/0mta
niD36GTJTnUZ5MWQ2dVlItO6gtM/61uIf4FNZaLJG4CReoHkH61ffl7Fz7B9aroj
8+MhcMLInbWDQ6sJAgMBAAE=
-----END PUBLIC KEY-----";

fn main() {
    println!("{}", API_KEY)
}

binary:

image

Secure string

use secure::secure_str_brotli;

secure_str_brotli!("api_key", "-----BEGIN PUBLIC KEY-----
MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgGQlFVujnjLZ2Ln+JjvcSu3cOiMB
JrKb3G49Ivg3Mvefp+D+UHN5OV2AcN1c0znkIzk/QgqxJ6VKaZtqjKMhZWG/0mta
niD36GTJTnUZ5MWQ2dVlItO6gtM/61uIf4FNZaLJG4CReoHkH61ffl7Fz7B9aroj
8+MhcMLInbWDQ6sJAgMBAAE=
-----END PUBLIC KEY-----");

fn main() {
    println!("{}", get_api_key())
    // output:
    // -----BEGIN PUBLIC KEY-----
    // MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgGQlFVujnjLZ2Ln+JjvcSu3cOiMB
    // JrKb3G49Ivg3Mvefp+D+UHN5OV2AcN1c0znkIzk/QgqxJ6VKaZtqjKMhZWG/0mta
    // niD36GTJTnUZ5MWQ2dVlItO6gtM/61uIf4FNZaLJG4CReoHkH61ffl7Fz7B9aroj
    // 8+MhcMLInbWDQ6sJAgMBAAE=
    // -----END PUBLIC KEY-----
}

binary:

image

Usage:

use secure::secure_str_brotli;

secure_str_brotli!("brotli_value", "decompressed");

#[test]
fn secure_str_brotli() {
    assert_eq!(get_brotli_value(), "decompressed".to_string());
}

Add to dependencies

base64 = "0.22.1"
brotli = "7.0.0" # [optional] for working with compression functions
byte-aes = "0.2.2" # [optional] for working with encryption functions
secure = { version = "0.3.0", features = ["compression", "encryption"] }

About

Solution that encrypt or compress rust consts in compile-time

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages