product-os-security 0.0.44

Product OS : Security provides a suite of helper tools to easily perform cryptograhpic operations including generating hashes, encrypting and decryting content.
Documentation
[package]
name = "product-os-security"
version = "0.0.44" # version - The version of the package.
authors = ["Jeremy de Oliveira-Kumar <eremyj@gmail.com>"] # authors - The authors of the package.
edition = "2021" # edition - The Rust edition. 2021
rust-version = "1.69" # rust-version - The minimal supported Rust version. min 1.69
description = "Product OS : Security provides a suite of helper tools to easily perform cryptograhpic operations including generating hashes, encrypting and decryting content." # description - A description of the package.
# documentation = "" # documentation - URL of the package documentation.
readme = "readme.md" # readme - Path to the package’s README file.  Use https://www.makeareadme.com/
# homepage = "" # homepage - URL of the package homepage.
# repository = "" # repository - URL of the package source repository.
license = "AGPL-3.0-only" # license - The package license.
# license-file = "license.txt" # license-file - Path to the text of the license.  Use https://choosealicense.com/
keywords = ["product-os"] # keywords - Keywords for the package.
categories = [] # categories - Categories of the package. https://crates.io/category_slugs
# workspace = "" # workspace - Path to the workspace for the package.
build = false # build - Path to the package build script.  default "build.rs" or specify
# links = "" # links - Name of the native library the package links with.
exclude = [] # exclude - Files to exclude when publishing.
include = [] # include - Files to include when publishing.
# publish = [] # publish - Can be used to prevent publishing the package. false to prevent publish, list of registries otherwise
# default-run = "" # default-run - The default binary to run by cargo run.
autobins = true # autobins - Disables binary auto discovery.
autoexamples = true # autoexamples - Disables example auto discovery.
autotests = true # autotests - Disables test auto discovery.
autobenches = true # autobenches - Disables bench auto discovery.
resolver = "2" # resolver - Sets the dependency resolver to use.  Use 2 with 2021, 1 prior

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
no-std-compat = { version = "0.4.1", features = ["alloc"], optional = false }

blake2 = { version = "0.10.6", features = [], default-features = false, optional = true }
argon2 = { version = "0.5.3", features = [], default-features = false, optional = true }

orion = { version = "0.17.6", features = [], default-features = false, optional = true }
ring = { version = "0.17.8", features = [], default-features = false, optional = true }

x25519-dalek = { version = "2.0.1", default-features = false, optional = true }

hkdf = { version = "0.12.4", features = [], default-features = false, optional = true }

jwt-compact = { version = "0.8.0", features = [], default-features = false, optional = true }

sha2 = { version = "0.10.8", features = [], default-features = false, optional = true }

urlencoding = { version = "2.1.3", features = [], default-features = false, optional = true }

serde = { version = "1.0.215", features = [], default-features = false, optional = true }
serde_json = { version = "1.0.133", features = [], default-features = false, optional = true }  # JSON data representation

hex = { version = "0.4.3", features = [], default-features = false, optional = true }
base64 = { version = "0.21.7", features = [], default-features = false, optional = true }

uuid = { version = "1.11.0", features = [], default-features = false, optional = true }

# Date and Time Handling
chrono = { version = "0.4.38", features = [], default-features = false, optional = true }

# Time based OTP
totp-lite = { version = "2.0.1", features = [], default-features = false, optional = true }

# TLS support
const-oid = { version = "0.9.6", features = ["db"], default-features = false, optional = true }
der = { version = "0.7.9", features = ["alloc", "derive", "flagset", "oid"], default-features = false, optional = true }
spki = { version = "0.7.3", features = ["alloc"], default-features = false, optional = true }
arbitrary = { version = "1.4.1", features = ["derive"], default-features = false, optional = true }
signature = { version = "2.2.0", features = ["rand_core"], default-features = false, optional = true }

rsa = { version = "0.9.6", features = ["sha2"], default-features = false, optional = true }

rustls = { version = "0.23.21", features = [], default-features = false, optional = true } # TLS library for Rust
rcgen = { version = "0.12.1", features = [], default-features = false, optional = true } # Generate self-signed certificate
rustls-pemfile = { version = "2.2.0", features = [], default-features = false, optional = true } # Generate self-signed certificate
rustls-pki-types = { version = "1.10.1", features = [], default-features = false, optional = true }
openssl = { version = "0.10.42", features = [], default-features = false, optional = true }

tracing = { version = "0.1.40", features = [], default-features = false, optional = false }

product-os-random = { version = ">= 0.0.1", features = [], default-features = false, optional = true }
product-os-async-executor = { version = ">= 0.0.1", features = [], default-features = false, optional = true }
product-os-urlencoding = { version = ">= 0.0.1", features = [], default-features = false, optional = true }


[patch.crates-io]
product-os-random = { path = "../product-os-random", features = [], default-features = false, optional = true }
product-os-async-executor = { path = "../product-os-async-executor", features = [], default-features = false, optional = true }
product-os-urlencoding = { path = "../product-os-urlencoding", features = [], default-features = false, optional = true }


[features]
default = ["no-std-compat/std", "product-os-random/default", "product-os-async-executor/default", "chrono/clock"]
all = ["default", "generator", "hash", "password_hash", "mac", "auth_verify", "jwt_auth_verify", "jwt_encrypt_decrypt",
       "diffie_hellman_key_store", "diffie_hellman_client_server_key_store", "symmetric_encrypt_decrypt",
       "public_private_encrypt_decrypt", "public_private_sign_verify", "time_otp", "string_safe", "certificates",
       "vendored-openssl", "byte_vector", "file"]

generator = ["product-os-random/constrained"]
mac = ["blake2"]
password_hash = ["argon2/alloc", "argon2/password-hash", "product-os-random/constrained"]
hash = ["blake2", "generator"]
hasher = ["blake2"]
jwt_encrypt_decrypt = ["orion", "base64/alloc"]
jwt_auth_verify = ["jwt-compact", "chrono/alloc", "serde", "generator", "product-os-async-executor/moment", "serde_json/alloc"]
byte_vector = ["serde_json/alloc"]
auth_verify = ["hash", "mac", "generator", "serde_json/alloc", "product-os-urlencoding", "hex/alloc"]
diffie_hellman_key_store = ["x25519-dalek", "product-os-random/constrained", "uuid", "uuid/v4", "hkdf", "sha2"]
symmetric_encrypt_decrypt = ["orion", "product-os-random/constrained"]
time_otp = ["mac", "chrono/alloc", "product-os-async-executor/moment"]
string_safe = ["product-os-urlencoding"]
certificates_custom = ["chrono/alloc", "const-oid", "der", "spki", "signature", "rsa", "sha2", "rustls", "rustls-pemfile", "product-os-random/constrained"]
random = ["product-os-random/core"]
thread_send = ["product-os-random/send_only"]
custom = ["product-os-random/custom"]

# std
jwt_encrypt_decrypt_std = ["orion/safe_api"]
diffie_hellman_client_server_key_store = ["orion/safe_api", "no-std-compat/std", "uuid/serde", "uuid/v4"]
public_private_encrypt_decrypt = ["no-std-compat/std", "product-os-random/default"]
public_private_sign_verify = ["ring/std"]
vendored-openssl = ["openssl/vendored"]
certificates = ["rustls", "rcgen", "rcgen/ring", "rustls-pemfile", "rustls-pemfile/std", "rustls-pki-types"]
open_ssl = ["openssl"]

file = []

[workspace]