Can now encrypt / decrypt all files in a specific path
This commit is contained in:
54
src/main.zig
54
src/main.zig
@@ -5,30 +5,59 @@ pub fn main() !void {
|
|||||||
const allocator = std.heap.page_allocator;
|
const allocator = std.heap.page_allocator;
|
||||||
const pwd = "Test123!";
|
const pwd = "Test123!";
|
||||||
|
|
||||||
|
const dir = try std.fs.cwd().openDir("./test", .{ .iterate = true });
|
||||||
|
if (dir.openDir("private", .{ .iterate = true })) |priv| {
|
||||||
|
var walker = try priv.walk(allocator);
|
||||||
|
defer walker.deinit();
|
||||||
|
|
||||||
|
while (try walker.next()) |f| {
|
||||||
|
if (f.kind == std.fs.Dir.Entry.Kind.file) {
|
||||||
|
decrypt(allocator, priv, f.path, pwd) catch |err| std.debug.print("{?}\n", .{err});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try dir.deleteDir("private");
|
||||||
|
} else |err| switch (err) {
|
||||||
|
std.fs.Dir.OpenError.FileNotFound => {
|
||||||
var key: [32]u8 = std.mem.zeroes([32]u8);
|
var key: [32]u8 = std.mem.zeroes([32]u8);
|
||||||
var nonce: [24]u8 = undefined;
|
var nonce: [24]u8 = undefined;
|
||||||
|
|
||||||
crypto.random.bytes(&nonce);
|
crypto.random.bytes(&nonce);
|
||||||
|
|
||||||
try crypto.pwhash.argon2.kdf(allocator, &key, pwd, &nonce, crypto.pwhash.argon2.Params.interactive_2id, crypto.pwhash.argon2.Mode.argon2id);
|
try crypto.pwhash.argon2.kdf(allocator, &key, pwd, &nonce, crypto.pwhash.argon2.Params.interactive_2id, crypto.pwhash.argon2.Mode.argon2id);
|
||||||
try encrypt("test.txt", key, nonce);
|
|
||||||
try decrypt(allocator, "test.txt.cha", pwd[0..]);
|
try dir.makeDir("private");
|
||||||
|
|
||||||
|
var walker = try dir.walk(allocator);
|
||||||
|
defer walker.deinit();
|
||||||
|
|
||||||
|
while (try walker.next()) |f| {
|
||||||
|
if (f.kind == std.fs.Dir.Entry.Kind.file) {
|
||||||
|
std.debug.print("Encrypting {s}\n", .{f.path});
|
||||||
|
encrypt(dir, f.path, key, nonce) catch |e| std.debug.print("{?}\n", .{e});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
else => {
|
||||||
|
std.debug.print("Err: {?}\n", .{err});
|
||||||
|
return;
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn decrypt(allocator: std.mem.Allocator, path: []const u8, pwd: []const u8) !void {
|
pub fn decrypt(allocator: std.mem.Allocator, priv: std.fs.Dir, path: []const u8, pwd: []const u8) !void {
|
||||||
{
|
{
|
||||||
var out_buf: [512]u8 = undefined;
|
var out_buf: [512]u8 = undefined;
|
||||||
var in_buf: [512]u8 = undefined;
|
var in_buf: [512]u8 = undefined;
|
||||||
var nonce: [24]u8 = undefined;
|
var nonce: [24]u8 = undefined;
|
||||||
var key: [32]u8 = undefined;
|
var key: [32]u8 = undefined;
|
||||||
|
|
||||||
var file = try std.fs.cwd().openFile(path, .{});
|
var file = try priv.openFile(path, .{});
|
||||||
defer file.close();
|
defer file.close();
|
||||||
|
|
||||||
_ = try file.read(&nonce);
|
_ = try file.read(&nonce);
|
||||||
|
var dir = try priv.openDir("..", .{});
|
||||||
|
|
||||||
try crypto.pwhash.argon2.kdf(allocator, &key, pwd, &nonce, crypto.pwhash.argon2.Params.interactive_2id, crypto.pwhash.argon2.Mode.argon2id);
|
try crypto.pwhash.argon2.kdf(allocator, &key, pwd, &nonce, crypto.pwhash.argon2.Params.interactive_2id, crypto.pwhash.argon2.Mode.argon2id);
|
||||||
var out_file = try std.fs.cwd().createFile(path[0 .. path.len - 4], .{
|
var out_file = try dir.createFile(path[0 .. path.len - 4], .{
|
||||||
.read = true,
|
.read = true,
|
||||||
.truncate = true,
|
.truncate = true,
|
||||||
});
|
});
|
||||||
@@ -47,19 +76,20 @@ pub fn decrypt(allocator: std.mem.Allocator, path: []const u8, pwd: []const u8)
|
|||||||
_ = try out_file.write(out_buf[0..read]);
|
_ = try out_file.write(out_buf[0..read]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
try std.fs.cwd().deleteFile(path);
|
try priv.deleteFile(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn encrypt(path: []const u8, key: [32]u8, nonce: [24]u8) !void {
|
pub fn encrypt(dir: std.fs.Dir, path: []const u8, key: [32]u8, nonce: [24]u8) !void {
|
||||||
{
|
{
|
||||||
var file = try std.fs.cwd().openFile(path, .{});
|
var file = try dir.openFile(path, .{});
|
||||||
defer file.close();
|
defer file.close();
|
||||||
var out_buf: [512]u8 = undefined;
|
var out_buf: [512]u8 = undefined;
|
||||||
var in_buf: [512]u8 = undefined;
|
var in_buf: [512]u8 = undefined;
|
||||||
|
var priv = try dir.openDir("private", .{});
|
||||||
|
|
||||||
// missuse out_buf as buffer for format string
|
// missuse out_buf as buffer for format string
|
||||||
_ = try std.fmt.bufPrint(out_buf[0 .. path.len + 4], "{s}.cha", .{path});
|
_ = try std.fmt.bufPrint(out_buf[0 .. path.len + 4], "{s}.cha", .{path});
|
||||||
var out_file = try std.fs.cwd().createFile(out_buf[0 .. path.len + 4], .{
|
var out_file = try priv.createFile(out_buf[0 .. path.len + 4], .{
|
||||||
.read = true,
|
.read = true,
|
||||||
});
|
});
|
||||||
defer out_file.close();
|
defer out_file.close();
|
||||||
@@ -79,5 +109,5 @@ pub fn encrypt(path: []const u8, key: [32]u8, nonce: [24]u8) !void {
|
|||||||
_ = try out_file.write(out_buf[0..read]);
|
_ = try out_file.write(out_buf[0..read]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
try std.fs.cwd().deleteFile(path);
|
try dir.deleteFile(path);
|
||||||
}
|
}
|
||||||
|
|||||||
10
test.txt
10
test.txt
@@ -1,10 +0,0 @@
|
|||||||
Poggers askdasdjkjasd
|
|
||||||
dasjdhasdkjhasdjkhasldjkhasldjhasdas
|
|
||||||
das
|
|
||||||
da
|
|
||||||
sdas
|
|
||||||
dasdasdasdwadsdsadasdawdasdasdasd
|
|
||||||
sadasdasdawsdasfsdfadsadawdsadasdawdasd
|
|
||||||
asdasdasdawdasdsadasdasdwdasdawd
|
|
||||||
sasdasdsawdsadsdsddasdasdasdbahsdgasgdiwuhadilasjbdlhsad
|
|
||||||
fkjdafhsajfbladfgiduasfiuadgfpahusdfhasdfuh
|
|
||||||
3
test/troete.md
Normal file
3
test/troete.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# Aloah
|
||||||
|
|
||||||
|
Pog Pog poggie poggers
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
0
|
0
|
||||||
1273 15769496 1714521220301303367 9fba4eb7249461115e73b1dd1ed85836 0 src/main.zig
|
3595 15769496 1714598939065370824 3df2544dd956828a05add5e966619db1 0 src/main.zig
|
||||||
7737 15870144 1714505175859852808 7b4fdc315806ebffede643f9f98b8a50 1 std/std.zig
|
7737 15870144 1714505175859852808 7b4fdc315806ebffede643f9f98b8a50 1 std/std.zig
|
||||||
22535 15870244 1714505175882554825 e6ad8dc95efc97b95f3e7a7a376609ed 1 std/start.zig
|
22535 15870244 1714505175882554825 e6ad8dc95efc97b95f3e7a7a376609ed 1 std/start.zig
|
||||||
114688 15870010 1714505175826822033 74fed2adb072da5aa83db559d086ae03 1 std/debug.zig
|
114688 15870010 1714505175826822033 74fed2adb072da5aa83db559d086ae03 1 std/debug.zig
|
||||||
@@ -15,30 +15,30 @@
|
|||||||
176517 15870146 1714505175860411702 fd9bed600bb45bc220c548e689e7ebf9 1 std/mem.zig
|
176517 15870146 1714505175860411702 fd9bed600bb45bc220c548e689e7ebf9 1 std/mem.zig
|
||||||
13626 15870467 1714505175933797837 98c52b2fa05c32ad77f1743a5f3383ee 1 std/mem/Allocator.zig
|
13626 15870467 1714505175933797837 98c52b2fa05c32ad77f1743a5f3383ee 1 std/mem/Allocator.zig
|
||||||
3726 15870265 1714505175887198850 d141686f91270c1ac884745688b966f5 1 std/heap/PageAllocator.zig
|
3726 15870265 1714505175887198850 d141686f91270c1ac884745688b966f5 1 std/heap/PageAllocator.zig
|
||||||
12352 15870222 1714505175877828054 85ba4034d104ed83a45a1bb6ea2f588a 1 std/crypto.zig
|
|
||||||
6209 15869946 1714505175812941583 89d4ae344badeeee363daef10bc5ad3f 1 std/crypto/tlcsprng.zig
|
|
||||||
17590 15870464 1714505175933173404 5ddd4d07802b9f332a306c207663eea0 1 std/Random.zig
|
|
||||||
28591 15869910 1714505175804694993 59b5bb504f414dd36ddf2daee0c6cece 1 std/crypto/argon2.zig
|
|
||||||
1582 15869906 1714505175803841526 86ddca3a893af0c503c7ad0bbdd2df47 1 std/crypto/errors.zig
|
|
||||||
54025 15870283 1714505175891503429 8c07809522884083ee986e616b3dbe11 1 std/Thread.zig
|
|
||||||
35896 15869879 1714505175797861055 fe6ca890c29b51018c25e7269898a5f5 1 std/fs.zig
|
35896 15869879 1714505175797861055 fe6ca890c29b51018c25e7269898a5f5 1 std/fs.zig
|
||||||
111536 15870421 1714505175923906771 04f568f3193c7bb5986efc4ec52bfd91 1 std/fs/Dir.zig
|
111536 15870421 1714505175923906771 04f568f3193c7bb5986efc4ec52bfd91 1 std/fs/Dir.zig
|
||||||
292924 15870401 1714505175917824137 1db97817ddf9d5b1d7ab471e15a95db8 1 std/posix.zig
|
292924 15870401 1714505175917824137 1db97817ddf9d5b1d7ab471e15a95db8 1 std/posix.zig
|
||||||
63987 15870286 1714505175892186569 92bca8ee6f4f51d8a0205a3b0896031a 1 std/c.zig
|
63987 15870286 1714505175892186569 92bca8ee6f4f51d8a0205a3b0896031a 1 std/c.zig
|
||||||
97387 15870446 1714505175929131564 f8f53a7e0fba6a225e63285feb76b585 1 std/c/darwin.zig
|
97387 15870446 1714505175929131564 f8f53a7e0fba6a225e63285feb76b585 1 std/c/darwin.zig
|
||||||
|
87217 15870289 1714505175892870125 d82200bd8e9f05406e233eef46e48149 1 std/array_list.zig
|
||||||
63631 15870420 1714505175923667405 8ad62418ac37873a457da68a3e6d1cbd 1 std/fs/File.zig
|
63631 15870420 1714505175923667405 8ad62418ac37873a457da68a3e6d1cbd 1 std/fs/File.zig
|
||||||
105663 15870242 1714505175882103052 8d4becc343bcd3adac05a9906326c6df 1 std/fmt.zig
|
77139 15870419 1714505175923441831 6ed68741d6922f90c45c6c388b6cdd8c 1 std/fs/path.zig
|
||||||
|
12352 15870222 1714505175877828054 85ba4034d104ed83a45a1bb6ea2f588a 1 std/crypto.zig
|
||||||
|
28591 15869910 1714505175804694993 59b5bb504f414dd36ddf2daee0c6cece 1 std/crypto/argon2.zig
|
||||||
|
1582 15869906 1714505175803841526 86ddca3a893af0c503c7ad0bbdd2df47 1 std/crypto/errors.zig
|
||||||
|
54025 15870283 1714505175891503429 8c07809522884083ee986e616b3dbe11 1 std/Thread.zig
|
||||||
52267 15869881 1714505175798348452 250bf69f713193c74da886706bb53369 1 std/crypto/chacha20.zig
|
52267 15869881 1714505175798348452 250bf69f713193c74da886706bb53369 1 std/crypto/chacha20.zig
|
||||||
|
6209 15869946 1714505175812941583 89d4ae344badeeee363daef10bc5ad3f 1 std/crypto/tlcsprng.zig
|
||||||
|
17590 15870464 1714505175933173404 5ddd4d07802b9f332a306c207663eea0 1 std/Random.zig
|
||||||
8365 15870282 1714505175891281480 1e96c9d448e9ae1d3162881bf730b07e 1 std/log.zig
|
8365 15870282 1714505175891281480 1e96c9d448e9ae1d3162881bf730b07e 1 std/log.zig
|
||||||
13319 15870361 1714505175908844076 0ecb167cdc15eca0651fa6c248c99804 1 std/os/wasi.zig
|
13319 15870361 1714505175908844076 0ecb167cdc15eca0651fa6c248c99804 1 std/os/wasi.zig
|
||||||
29312 15869902 1714505175802977436 68a2396dfb48c7853d16411929f23ad8 1 std/crypto/blake2.zig
|
105663 15870242 1714505175882103052 8d4becc343bcd3adac05a9906326c6df 1 std/fmt.zig
|
||||||
87217 15870289 1714505175892870125 d82200bd8e9f05406e233eef46e48149 1 std/array_list.zig
|
|
||||||
70858 15870151 1714505175861630863 d15f9cf0c0650e6e2f0fd196c75c07ce 1 std/macho.zig
|
70858 15870151 1714505175861630863 d15f9cf0c0650e6e2f0fd196c75c07ce 1 std/macho.zig
|
||||||
|
29312 15869902 1714505175802977436 68a2396dfb48c7853d16411929f23ad8 1 std/crypto/blake2.zig
|
||||||
|
10030 15870432 1714505175926284552 6ec4900de2fa66c512d3a1a8b197182b 1 std/Thread/Mutex.zig
|
||||||
|
19056 15869872 1714505175796319158 fbe5a337296572a6d62cbde681c465ea 1 std/atomic.zig
|
||||||
25504 15870053 1714505175837739559 0d380feec771d277d38493250815b334 1 std/io.zig
|
25504 15870053 1714505175837739559 0d380feec771d277d38493250815b334 1 std/io.zig
|
||||||
6449 15870126 1714505175855209283 3bcfe7862cea857ee79939a098991ad5 1 std/io/fixed_buffer_stream.zig
|
|
||||||
2259 15870132 1714505175856878717 d0332ba9399d02f163b9033b979acb28 1 std/io/Writer.zig
|
2259 15870132 1714505175856878717 d0332ba9399d02f163b9033b979acb28 1 std/io/Writer.zig
|
||||||
80096 15870118 1714505175853485143 dcae88764146b76769ce525b262e7a9a 1 std/unicode.zig
|
|
||||||
23315 15870241 1714505175881869519 ffbdbe729df38f396c8bfb00dd14e4d7 1 std/simd.zig
|
|
||||||
90072 15870461 1714505175932444349 bffdf0affa202d9bafbc94cdc1368f10 1 std/hash_map.zig
|
90072 15870461 1714505175932444349 bffdf0affa202d9bafbc94cdc1368f10 1 std/hash_map.zig
|
||||||
5237 15870142 1714505175859329037 1ffe030ee2cb56e3f4f0730c76a43a35 1 std/io/tty.zig
|
5237 15870142 1714505175859329037 1ffe030ee2cb56e3f4f0730c76a43a35 1 std/io/tty.zig
|
||||||
112733 15870149 1714505175861142507 6a3c4b87759cf30d9e7a65625e6143a3 1 std/dwarf.zig
|
112733 15870149 1714505175861142507 6a3c4b87759cf30d9e7a65625e6143a3 1 std/dwarf.zig
|
||||||
@@ -48,9 +48,6 @@
|
|||||||
1399 15870234 1714505175880352413 40a7d4ac60d12c6e9ca294acaed35474 1 std/dwarf/FORM.zig
|
1399 15870234 1714505175880352413 40a7d4ac60d12c6e9ca294acaed35474 1 std/dwarf/FORM.zig
|
||||||
3900 15870230 1714505175879488030 b5711d1b73e43c5aaea25647f88f9369 1 std/dwarf/TAG.zig
|
3900 15870230 1714505175879488030 b5711d1b73e43c5aaea25647f88f9369 1 std/dwarf/TAG.zig
|
||||||
7395 15870231 1714505175879720938 0736a520f4793791a2cfc257bfcfd3b6 1 std/dwarf/AT.zig
|
7395 15870231 1714505175879720938 0736a520f4793791a2cfc257bfcfd3b6 1 std/dwarf/AT.zig
|
||||||
77139 15870419 1714505175923441831 6ed68741d6922f90c45c6c388b6cdd8c 1 std/fs/path.zig
|
|
||||||
19056 15869872 1714505175796319158 fbe5a337296572a6d62cbde681c465ea 1 std/atomic.zig
|
|
||||||
10030 15870432 1714505175926284552 6ec4900de2fa66c512d3a1a8b197182b 1 std/Thread/Mutex.zig
|
|
||||||
12747 15870266 1714505175887461215 0c84990d94912da71f88ccdd844ff032 1 std/heap/arena_allocator.zig
|
12747 15870266 1714505175887461215 0c84990d94912da71f88ccdd844ff032 1 std/heap/arena_allocator.zig
|
||||||
14239 15870051 1714505175837218288 a69e9fd3810cdd1601c26dd47210af71 1 std/linked_list.zig
|
14239 15870051 1714505175837218288 a69e9fd3810cdd1601c26dd47210af71 1 std/linked_list.zig
|
||||||
65714 15870259 1714505175885737991 ce544a97419b31ef988f4ec4c99eb39a 1 std/process.zig
|
65714 15870259 1714505175885737991 ce544a97419b31ef988f4ec4c99eb39a 1 std/process.zig
|
||||||
@@ -58,11 +55,14 @@
|
|||||||
29773 15870377 1714505175912439642 6e96f5117f2db4b1f67515385b4cbc04 1 std/sort.zig
|
29773 15870377 1714505175912439642 6e96f5117f2db4b1f67515385b4cbc04 1 std/sort.zig
|
||||||
51714 15870058 1714505175838953719 eb8790d984ce4a6ddd6376d877c85ff1 1 std/sort/block.zig
|
51714 15870058 1714505175838953719 eb8790d984ce4a6ddd6376d877c85ff1 1 std/sort/block.zig
|
||||||
17851 15870272 1714505175889148856 62510503fe6b45659189d32c19c9dc45 1 std/leb128.zig
|
17851 15870272 1714505175889148856 62510503fe6b45659189d32c19c9dc45 1 std/leb128.zig
|
||||||
|
23315 15870241 1714505175881869519 ffbdbe729df38f396c8bfb00dd14e4d7 1 std/simd.zig
|
||||||
1429 15870454 1714505175930932534 c9f4dbaddebc77443c737541df8d3a09 1 std/c/darwin/aarch64.zig
|
1429 15870454 1714505175930932534 c9f4dbaddebc77443c737541df8d3a09 1 std/c/darwin/aarch64.zig
|
||||||
19546 15870237 1714505175881009970 eeb537ce254d8635c5876f3cb23ba2ab 1 std/dwarf/abi.zig
|
19546 15870237 1714505175881009970 eeb537ce254d8635c5876f3cb23ba2ab 1 std/dwarf/abi.zig
|
||||||
26403 15870233 1714505175880144712 17cfec6893f0195cf3f2128e131aebbd 1 std/dwarf/call_frame.zig
|
26403 15870233 1714505175880144712 17cfec6893f0195cf3f2128e131aebbd 1 std/dwarf/call_frame.zig
|
||||||
71838 15870238 1714505175881232795 472566d679006f02ce08a8e6d3ca5840 1 std/dwarf/expressions.zig
|
71838 15870238 1714505175881232795 472566d679006f02ce08a8e6d3ca5840 1 std/dwarf/expressions.zig
|
||||||
43084 15870435 1714505175926937317 a67e9f409c649ae15d47dcc9582247f0 1 std/Thread/Futex.zig
|
43084 15870435 1714505175926937317 a67e9f409c649ae15d47dcc9582247f0 1 std/Thread/Futex.zig
|
||||||
|
6449 15870126 1714505175855209283 3bcfe7862cea857ee79939a098991ad5 1 std/io/fixed_buffer_stream.zig
|
||||||
|
80096 15870118 1714505175853485143 dcae88764146b76769ce525b262e7a9a 1 std/unicode.zig
|
||||||
1299 15870134 1714505175857398697 9ea5eaf4f2d36e2273f3ecec7f813b61 1 std/io/buffered_writer.zig
|
1299 15870134 1714505175857398697 9ea5eaf4f2d36e2273f3ecec7f813b61 1 std/io/buffered_writer.zig
|
||||||
2803 15870205 1714505175874054329 66938abfeaf01425e2a886a3b2036936 1 std/math/sqrt.zig
|
2803 15870205 1714505175874054329 66938abfeaf01425e2a886a3b2036936 1 std/math/sqrt.zig
|
||||||
13678 15870090 1714505175846756618 acfd077e4b0672dfb9bc1907ad8440ef 1 std/time.zig
|
13678 15870090 1714505175846756618 acfd077e4b0672dfb9bc1907ad8440ef 1 std/time.zig
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user