style: Removed unused code.

This commit is contained in:
2026-06-12 17:43:30 -04:00
parent 4599b25b1b
commit 23d5ff5e01
9 changed files with 79 additions and 56 deletions

View File

@@ -3,7 +3,6 @@ package main
import "core:fmt" import "core:fmt"
import "core:os" import "core:os"
import "core:path/filepath" import "core:path/filepath"
import "core:strings"
cmd_check :: proc(cmd: ^Command) { cmd_check :: proc(cmd: ^Command) {
feats := check_features() feats := check_features()

View File

@@ -1,7 +1,5 @@
package main package main
import "core:fmt"
cmd_deps :: proc(cmd: ^Command) { cmd_deps :: proc(cmd: ^Command) {
feats := check_features() feats := check_features()
@@ -22,3 +20,4 @@ cmd_deps :: proc(cmd: ^Command) {
render_table(headers, rows[:]) render_table(headers, rows[:])
} }

View File

@@ -3,47 +3,47 @@ package main
import "core:fmt" import "core:fmt"
import "core:os" import "core:os"
import "core:path/filepath" import "core:path/filepath"
import "core:strings"
cmd_edit_config :: proc(cmd: ^Command) { cmd_edit_config :: proc(cmd: ^Command) {
editor := os.get_env("EDITOR", context.allocator) editor := os.get_env("EDITOR", context.allocator)
if len(editor) == 0 { if len(editor) == 0 {
fmt.println("Error: $EDITOR environment variable is not set") fmt.println("Error: $EDITOR environment variable is not set")
return return
} }
config_path, join_err := filepath.join([]string{envr_dir(), "config.json"}) config_path, join_err := filepath.join([]string{envr_dir(), "config.json"})
if join_err != nil { if join_err != nil {
fmt.printf("Error building config path: %v\n", join_err) fmt.printf("Error building config path: %v\n", join_err)
return return
} }
_, stat_err := os.stat(config_path, context.allocator) _, stat_err := os.stat(config_path, context.allocator)
if stat_err != nil { if stat_err != nil {
fmt.printf("Config file does not exist at %s. Run 'envr init' first.\n", config_path) fmt.printf("Config file does not exist at %s. Run 'envr init' first.\n", config_path)
return return
} }
args := []string{editor, config_path} args := []string{editor, config_path}
desc := os.Process_Desc{ desc := os.Process_Desc {
command = args, command = args,
stdin = os.stdin, stdin = os.stdin,
stdout = os.stdout, stdout = os.stdout,
stderr = os.stderr, stderr = os.stderr,
} }
p, start_err := os.process_start(desc) p, start_err := os.process_start(desc)
if start_err != nil { if start_err != nil {
fmt.printf("Error running editor: %v\n", start_err) fmt.printf("Error running editor: %v\n", start_err)
return return
} }
state, wait_err := os.process_wait(p) state, wait_err := os.process_wait(p)
if wait_err != nil { if wait_err != nil {
fmt.printf("Error waiting for editor: %v\n", wait_err) fmt.printf("Error waiting for editor: %v\n", wait_err)
return return
} }
if state.exit_code != 0 { if state.exit_code != 0 {
os.exit(int(state.exit_code)) os.exit(int(state.exit_code))
} }
} }

View File

@@ -6,7 +6,11 @@ import "core:mem"
MAGIC :: "ENVR" MAGIC :: "ENVR"
MAGIC_BYTES := [4]u8{u8('E'), u8('N'), u8('V'), u8('R')} MAGIC_BYTES := [4]u8{u8('E'), u8('N'), u8('V'), u8('R')}
RECIPIENT_ENTRY_SIZE :: CRYPTO_BOX_PUBLICKEY_BYTES + CRYPTO_BOX_NONCE_BYTES + CRYPTO_SECRETBOX_KEY_BYTES + CRYPTO_BOX_MAC_BYTES RECIPIENT_ENTRY_SIZE ::
CRYPTO_BOX_PUBLICKEY_BYTES +
CRYPTO_BOX_NONCE_BYTES +
CRYPTO_SECRETBOX_KEY_BYTES +
CRYPTO_BOX_MAC_BYTES
HEADER_SIZE :: 4 + CRYPTO_BOX_PUBLICKEY_BYTES + CRYPTO_SECRETBOX_NONCE_BYTES + 4 HEADER_SIZE :: 4 + CRYPTO_BOX_PUBLICKEY_BYTES + CRYPTO_SECRETBOX_NONCE_BYTES + 4
@@ -108,7 +112,13 @@ encrypt :: proc(plaintext: []u8, keys: []SshKeyPair) -> (ciphertext: []u8, ok: b
if len(plaintext) > 0 { if len(plaintext) > 0 {
pt_ptr = &plaintext[0] pt_ptr = &plaintext[0]
} }
rc := crypto_secretbox_easy(&secret_ct[0], pt_ptr, u64(len(plaintext)), &main_nonce[0], &sym_key[0]) rc := crypto_secretbox_easy(
&secret_ct[0],
pt_ptr,
u64(len(plaintext)),
&main_nonce[0],
&sym_key[0],
)
if rc != 0 { if rc != 0 {
fmt.println("Error: symmetric encryption failed") fmt.println("Error: symmetric encryption failed")
delete(secret_ct) delete(secret_ct)
@@ -166,7 +176,11 @@ encrypt :: proc(plaintext: []u8, keys: []SshKeyPair) -> (ciphertext: []u8, ok: b
pos += CRYPTO_BOX_PUBLICKEY_BYTES pos += CRYPTO_BOX_PUBLICKEY_BYTES
mem.copy(&ciphertext[pos], &entries[i].Nonce[0], CRYPTO_BOX_NONCE_BYTES) mem.copy(&ciphertext[pos], &entries[i].Nonce[0], CRYPTO_BOX_NONCE_BYTES)
pos += CRYPTO_BOX_NONCE_BYTES pos += CRYPTO_BOX_NONCE_BYTES
mem.copy(&ciphertext[pos], &entries[i].EncryptedKey[0], CRYPTO_SECRETBOX_KEY_BYTES + CRYPTO_BOX_MAC_BYTES) mem.copy(
&ciphertext[pos],
&entries[i].EncryptedKey[0],
CRYPTO_SECRETBOX_KEY_BYTES + CRYPTO_BOX_MAC_BYTES,
)
pos += CRYPTO_SECRETBOX_KEY_BYTES + CRYPTO_BOX_MAC_BYTES pos += CRYPTO_SECRETBOX_KEY_BYTES + CRYPTO_BOX_MAC_BYTES
} }
@@ -209,8 +223,11 @@ decrypt :: proc(ciphertext: []u8, keys: []SshKeyPair) -> (plaintext: []u8, ok: b
} }
offset += CRYPTO_SECRETBOX_NONCE_BYTES offset += CRYPTO_SECRETBOX_NONCE_BYTES
num_recipients := u32(ciphertext[offset]) << 24 | u32(ciphertext[offset + 1]) << 16 | num_recipients :=
u32(ciphertext[offset + 2]) << 8 | u32(ciphertext[offset + 3]) u32(ciphertext[offset]) << 24 |
u32(ciphertext[offset + 1]) << 16 |
u32(ciphertext[offset + 2]) << 8 |
u32(ciphertext[offset + 3])
offset += 4 offset += 4
recipients_end := offset + int(num_recipients) * RECIPIENT_ENTRY_SIZE recipients_end := offset + int(num_recipients) * RECIPIENT_ENTRY_SIZE
@@ -233,7 +250,7 @@ decrypt :: proc(ciphertext: []u8, keys: []SshKeyPair) -> (plaintext: []u8, ok: b
matched_pi := 0 matched_pi := 0
for pi in 0 ..< len(x25519_pairs) { for pi in 0 ..< len(x25519_pairs) {
scan_offset := offset scan_offset := offset
for ri in 0 ..< int(num_recipients) { for _ in 0 ..< int(num_recipients) {
for i in 0 ..< CRYPTO_BOX_PUBLICKEY_BYTES { for i in 0 ..< CRYPTO_BOX_PUBLICKEY_BYTES {
enc_pub[i] = ciphertext[scan_offset + i] enc_pub[i] = ciphertext[scan_offset + i]
} }
@@ -247,7 +264,8 @@ decrypt :: proc(ciphertext: []u8, keys: []SshKeyPair) -> (plaintext: []u8, ok: b
} }
} }
if !match { if !match {
scan_offset += CRYPTO_BOX_NONCE_BYTES + CRYPTO_SECRETBOX_KEY_BYTES + CRYPTO_BOX_MAC_BYTES scan_offset +=
CRYPTO_BOX_NONCE_BYTES + CRYPTO_SECRETBOX_KEY_BYTES + CRYPTO_BOX_MAC_BYTES
continue continue
} }
@@ -301,7 +319,13 @@ decrypt :: proc(ciphertext: []u8, keys: []SshKeyPair) -> (plaintext: []u8, ok: b
if len(plaintext) > 0 { if len(plaintext) > 0 {
pt_ptr = &plaintext[0] pt_ptr = &plaintext[0]
} }
rc = crypto_secretbox_open_easy(pt_ptr, &ct_data[0], u64(len(ct_data)), &main_nonce[0], &sym_key[0]) rc = crypto_secretbox_open_easy(
pt_ptr,
&ct_data[0],
u64(len(ct_data)),
&main_nonce[0],
&sym_key[0],
)
if rc != 0 { if rc != 0 {
fmt.println("Error: symmetric decryption failed") fmt.println("Error: symmetric decryption failed")
delete(plaintext) delete(plaintext)
@@ -311,3 +335,4 @@ decrypt :: proc(ciphertext: []u8, keys: []SshKeyPair) -> (plaintext: []u8, ok: b
ok = true ok = true
return return
} }

View File

@@ -1,6 +1,5 @@
package main package main
import "core:c"
import "core:crypto/hash" import "core:crypto/hash"
import "core:encoding/hex" import "core:encoding/hex"
import "core:encoding/json" import "core:encoding/json"
@@ -513,7 +512,6 @@ env_file_backup :: proc(f: ^EnvFile) -> bool {
env_file_sync :: proc(f: ^EnvFile, dir: SyncDirection, d: ^Db) -> (SyncFlag, string) { env_file_sync :: proc(f: ^EnvFile, dir: SyncDirection, d: ^Db) -> (SyncFlag, string) {
result: SyncFlag = {} result: SyncFlag = {}
err_msg: string
_, stat_err := os.stat(f.Dir, context.allocator) _, stat_err := os.stat(f.Dir, context.allocator)
if stat_err != nil { if stat_err != nil {

View File

@@ -35,7 +35,6 @@ test_encrypt_decrypt_sqlite_roundtrip :: proc(t: ^testing.T) {
defer { defer {
delete(cfg.Keys) delete(cfg.Keys)
} }
key := cfg.Keys[0]
db_path := fixture_db_path() db_path := fixture_db_path()
sqlite_data, read_err := os.read_entire_file_from_path(db_path, context.allocator) sqlite_data, read_err := os.read_entire_file_from_path(db_path, context.allocator)
@@ -319,7 +318,7 @@ test_config_load_with_fixture_key :: proc(t: ^testing.T) {
testing.expectf(t, len(key.Private) > 0, "private key path should not be empty") testing.expectf(t, len(key.Private) > 0, "private key path should not be empty")
testing.expectf(t, len(key.Public) > 0, "public key path should not be empty") testing.expectf(t, len(key.Public) > 0, "public key path should not be empty")
priv_kp, priv_ok := parse_ssh_private_key(key.Private) _, priv_ok := parse_ssh_private_key(key.Private)
testing.expect(t, priv_ok, "should parse private key using config paths") testing.expect(t, priv_ok, "should parse private key using config paths")
if !priv_ok { if !priv_ok {
fmt.printf(" private key path was: '%s'\n", key.Private) fmt.printf(" private key path was: '%s'\n", key.Private)

View File

@@ -19,7 +19,7 @@ CRYPTO_SIGN_SECRETKEY_BYTES :: 64
@(default_calling_convention = "c") @(default_calling_convention = "c")
foreign libsodium { foreign libsodium {
sodium_init :: proc() -> c.int --- sodium_init :: proc() -> c.int ---
crypto_box_keypair :: proc(pk: [^]u8, sk: [^]u8) -> c.int --- // crypto_box_keypair :: proc(pk: [^]u8, sk: [^]u8) -> c.int ---
crypto_box_easy :: proc(ciphertext: [^]u8, plaintext: [^]u8, mlen: c.ulong, nonce: [^]u8, pk: [^]u8, sk: [^]u8) -> c.int --- crypto_box_easy :: proc(ciphertext: [^]u8, plaintext: [^]u8, mlen: c.ulong, nonce: [^]u8, pk: [^]u8, sk: [^]u8) -> c.int ---
crypto_box_open_easy :: proc(plaintext: [^]u8, ciphertext: [^]u8, clen: c.ulong, nonce: [^]u8, pk: [^]u8, sk: [^]u8) -> c.int --- crypto_box_open_easy :: proc(plaintext: [^]u8, ciphertext: [^]u8, clen: c.ulong, nonce: [^]u8, pk: [^]u8, sk: [^]u8) -> c.int ---
crypto_secretbox_easy :: proc(ciphertext: [^]u8, plaintext: [^]u8, mlen: c.ulong, nonce: [^]u8, key: [^]u8) -> c.int --- crypto_secretbox_easy :: proc(ciphertext: [^]u8, plaintext: [^]u8, mlen: c.ulong, nonce: [^]u8, key: [^]u8) -> c.int ---
@@ -28,3 +28,4 @@ foreign libsodium {
crypto_sign_ed25519_sk_to_curve25519 :: proc(curve25519_sk: [^]u8, ed25519_sk: [^]u8) -> c.int --- crypto_sign_ed25519_sk_to_curve25519 :: proc(curve25519_sk: [^]u8, ed25519_sk: [^]u8) -> c.int ---
randombytes_buf :: proc(buf: [^]u8, size: c.ulong) --- randombytes_buf :: proc(buf: [^]u8, size: c.ulong) ---
} }

View File

@@ -1,8 +1,6 @@
package main package main
import "core:fmt" import "core:fmt"
import "core:os"
import "core:strings"
import "core:testing" import "core:testing"
TEST_KEY_DIR :: "/tmp/envr-test-keys" TEST_KEY_DIR :: "/tmp/envr-test-keys"
@@ -49,7 +47,11 @@ test_private_key_pub_matches_public_key :: proc(t: ^testing.T) {
testing.expect( testing.expect(
t, t,
pub_from_pub == kp.Public, pub_from_pub == kp.Public,
fmt.tprintf("public key mismatch:\n from .pub: %v\n from priv: %v", pub_from_pub, kp.Public), fmt.tprintf(
"public key mismatch:\n from .pub: %v\n from priv: %v",
pub_from_pub,
kp.Public,
),
) )
} }
@@ -67,3 +69,4 @@ test_read_wire_string :: proc(t: ^testing.T) {
testing.expect(t, ok2, "expected second read to succeed") testing.expect(t, ok2, "expected second read to succeed")
testing.expect(t, s2 == "", "expected empty string") testing.expect(t, s2 == "", "expected empty string")
} }

View File

@@ -2,7 +2,6 @@ package main
import "core:encoding/json" import "core:encoding/json"
import "core:fmt" import "core:fmt"
import "core:io"
import "core:strings" import "core:strings"
import "core:testing" import "core:testing"