Skip to content

Instantly share code, notes, and snippets.

View cptpiepmatz's full-sized avatar

Piepmatz cptpiepmatz

View GitHub Profile
@cptpiepmatz
cptpiepmatz / global-npm.Dockerfile
Created July 25, 2024 11:30
Dockerfile for globally installing NPM packages. Specify the desired packages via the `PACKAGES` argument to easily set up your environment with Docker Compose.
ARG NODE_VERSION=latest
FROM node:${NODE_VERSION}
ARG PACKAGES
RUN npm install -g ${PACKAGES}
@cptpiepmatz
cptpiepmatz / BrokenCustomValuePlugin.rs
Created August 31, 2024 20:36
Minimal nushell plugin that creates broken custom values by using enums.
use nu_plugin::{
serve_plugin, EngineInterface, EvaluatedCall, MsgPackSerializer, Plugin, PluginCommand,
SimplePluginCommand,
};
use nu_protocol::{CustomValue, IntoValue, LabeledError, ShellError, Signature, Span, Type, Value};
use serde::{Deserialize, Serialize};
fn main() {
serve_plugin(&BrokenValuePlugin, MsgPackSerializer)
}
@cptpiepmatz
cptpiepmatz / $encrypt-static-toml-experiment.md
Last active January 17, 2025 17:30
encryt static toml data experiment

Secure Secrets Example

This example demonstrates how to securely handle sensitive (see Security Note) data, such as API keys and passwords, in a Rust application. The setup ensures that sensitive strings are not included in the binary in plaintext and uses encryption to protect secrets during the build process.

How It Works

  1. Encryption during Build: The build.rs script encrypts the secrets.toml file using a predefined key (key) and saves the result as secrets.toml.encrypted.
  2. Decryption at Runtime: The main program decrypts the secrets.toml.encrypted file at runtime, parses the TOML content, and verifies the data structure.
  3. Static Parsing: The static_toml crate provides compile-time validation of the TOML structure. In this experiment, since the same TOML file (though encrypted) is used to build the data structure, deserialization after decryption should not fail unless there is an unexpected issue.