diff --git a/src/main.zig b/src/main.zig index 495779a..d6e559e 100644 --- a/src/main.zig +++ b/src/main.zig @@ -5,30 +5,59 @@ pub fn main() !void { const allocator = std.heap.page_allocator; const pwd = "Test123!"; - var key: [32]u8 = std.mem.zeroes([32]u8); - var nonce: [24]u8 = undefined; + 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(); - crypto.random.bytes(&nonce); + 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 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.deleteDir("private"); + } else |err| switch (err) { + std.fs.Dir.OpenError.FileNotFound => { + var key: [32]u8 = std.mem.zeroes([32]u8); + var nonce: [24]u8 = undefined; + 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 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 in_buf: [512]u8 = undefined; var nonce: [24]u8 = undefined; var key: [32]u8 = undefined; - var file = try std.fs.cwd().openFile(path, .{}); + var file = try priv.openFile(path, .{}); defer file.close(); _ = 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); - 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, .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 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(); var out_buf: [512]u8 = undefined; var in_buf: [512]u8 = undefined; + var priv = try dir.openDir("private", .{}); // missuse out_buf as buffer for format string _ = 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, }); 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 std.fs.cwd().deleteFile(path); + try dir.deleteFile(path); } diff --git a/test.cha b/test.cha deleted file mode 100644 index 7acd2b4..0000000 Binary files a/test.cha and /dev/null differ diff --git a/test.txt b/test.txt deleted file mode 100644 index e04151b..0000000 --- a/test.txt +++ /dev/null @@ -1,10 +0,0 @@ -Poggers askdasdjkjasd -dasjdhasdkjhasdjkhasldjkhasldjhasdas -das -da -sdas -dasdasdasdwadsdsadasdawdasdasdasd -sadasdasdawsdasfsdfadsadawdsadasdawdasd -asdasdasdawdasdsadasdasdwdasdawd -sasdasdsawdsadsdsddasdasdasdbahsdgasgdiwuhadilasjbdlhsad -fkjdafhsajfbladfgiduasfiuadgfpahusdfhasdfuh diff --git a/test/troete.md b/test/troete.md new file mode 100644 index 0000000..23d13b8 --- /dev/null +++ b/test/troete.md @@ -0,0 +1,3 @@ +# Aloah + +Pog Pog poggie poggers diff --git a/zig-cache/h/3c1e86294c2ebeed3af02beb55ad9c70.txt b/zig-cache/h/3c1e86294c2ebeed3af02beb55ad9c70.txt index 972794a..1862068 100644 --- a/zig-cache/h/3c1e86294c2ebeed3af02beb55ad9c70.txt +++ b/zig-cache/h/3c1e86294c2ebeed3af02beb55ad9c70.txt @@ -1,5 +1,5 @@ 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 22535 15870244 1714505175882554825 e6ad8dc95efc97b95f3e7a7a376609ed 1 std/start.zig 114688 15870010 1714505175826822033 74fed2adb072da5aa83db559d086ae03 1 std/debug.zig @@ -15,30 +15,30 @@ 176517 15870146 1714505175860411702 fd9bed600bb45bc220c548e689e7ebf9 1 std/mem.zig 13626 15870467 1714505175933797837 98c52b2fa05c32ad77f1743a5f3383ee 1 std/mem/Allocator.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 111536 15870421 1714505175923906771 04f568f3193c7bb5986efc4ec52bfd91 1 std/fs/Dir.zig 292924 15870401 1714505175917824137 1db97817ddf9d5b1d7ab471e15a95db8 1 std/posix.zig 63987 15870286 1714505175892186569 92bca8ee6f4f51d8a0205a3b0896031a 1 std/c.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 -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 +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 13319 15870361 1714505175908844076 0ecb167cdc15eca0651fa6c248c99804 1 std/os/wasi.zig -29312 15869902 1714505175802977436 68a2396dfb48c7853d16411929f23ad8 1 std/crypto/blake2.zig -87217 15870289 1714505175892870125 d82200bd8e9f05406e233eef46e48149 1 std/array_list.zig +105663 15870242 1714505175882103052 8d4becc343bcd3adac05a9906326c6df 1 std/fmt.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 -6449 15870126 1714505175855209283 3bcfe7862cea857ee79939a098991ad5 1 std/io/fixed_buffer_stream.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 5237 15870142 1714505175859329037 1ffe030ee2cb56e3f4f0730c76a43a35 1 std/io/tty.zig 112733 15870149 1714505175861142507 6a3c4b87759cf30d9e7a65625e6143a3 1 std/dwarf.zig @@ -48,9 +48,6 @@ 1399 15870234 1714505175880352413 40a7d4ac60d12c6e9ca294acaed35474 1 std/dwarf/FORM.zig 3900 15870230 1714505175879488030 b5711d1b73e43c5aaea25647f88f9369 1 std/dwarf/TAG.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 14239 15870051 1714505175837218288 a69e9fd3810cdd1601c26dd47210af71 1 std/linked_list.zig 65714 15870259 1714505175885737991 ce544a97419b31ef988f4ec4c99eb39a 1 std/process.zig @@ -58,11 +55,14 @@ 29773 15870377 1714505175912439642 6e96f5117f2db4b1f67515385b4cbc04 1 std/sort.zig 51714 15870058 1714505175838953719 eb8790d984ce4a6ddd6376d877c85ff1 1 std/sort/block.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 19546 15870237 1714505175881009970 eeb537ce254d8635c5876f3cb23ba2ab 1 std/dwarf/abi.zig 26403 15870233 1714505175880144712 17cfec6893f0195cf3f2128e131aebbd 1 std/dwarf/call_frame.zig 71838 15870238 1714505175881232795 472566d679006f02ce08a8e6d3ca5840 1 std/dwarf/expressions.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 2803 15870205 1714505175874054329 66938abfeaf01425e2a886a3b2036936 1 std/math/sqrt.zig 13678 15870090 1714505175846756618 acfd077e4b0672dfb9bc1907ad8440ef 1 std/time.zig diff --git a/zig-cache/z/8a7f1237b33cd845498403d3ca9acc6c b/zig-cache/z/8a7f1237b33cd845498403d3ca9acc6c index a3839d5..f2a7df1 100644 Binary files a/zig-cache/z/8a7f1237b33cd845498403d3ca9acc6c and b/zig-cache/z/8a7f1237b33cd845498403d3ca9acc6c differ diff --git a/zig-out/bin/zigcryptor b/zig-out/bin/zigcryptor index dc6a960..a93e68c 100755 Binary files a/zig-out/bin/zigcryptor and b/zig-out/bin/zigcryptor differ