aboutsummaryrefslogtreecommitdiffstats
path: root/src/nkeys.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/nkeys.zig')
-rw-r--r--src/nkeys.zig16
1 files changed, 5 insertions, 11 deletions
diff --git a/src/nkeys.zig b/src/nkeys.zig
index 818fd98..8806a81 100644
--- a/src/nkeys.zig
+++ b/src/nkeys.zig
@@ -289,7 +289,7 @@ fn decode(
289) !DecodedNKey(prefix_len, data_len) { 289) !DecodedNKey(prefix_len, data_len) {
290 var raw: [prefix_len + data_len + 2]u8 = undefined; 290 var raw: [prefix_len + data_len + 2]u8 = undefined;
291 defer wipeBytes(&raw); 291 defer wipeBytes(&raw);
292 std.debug.assert((try base32.decode(text[0..], &raw)) == raw.len); 292 _ = try base32.Decoder.decode(&raw, text[0..]);
293 293
294 var checksum = mem.readIntLittle(u16, raw[raw.len - 2 .. raw.len]); 294 var checksum = mem.readIntLittle(u16, raw[raw.len - 2 .. raw.len]);
295 try crc16.validate(raw[0 .. raw.len - 2], checksum); 295 try crc16.validate(raw[0 .. raw.len - 2], checksum);
@@ -347,25 +347,19 @@ pub fn fromSeed(text: *const text_seed) !SeedKeyPair {
347pub fn isValidEncoding(text: []const u8) bool { 347pub fn isValidEncoding(text: []const u8) bool {
348 if (text.len < 4) return false; 348 if (text.len < 4) return false;
349 var made_crc: u16 = 0; 349 var made_crc: u16 = 0;
350 var dec = base32.Decoder{}; 350 var dec = base32.Decoder.init(text);
351 var crc_buf: [2]u8 = undefined; 351 var crc_buf: [2]u8 = undefined;
352 var crc_buf_len: u8 = 0; 352 var crc_buf_len: u8 = 0;
353 var expect_len: usize = base32.decodedLen(text.len); 353 var expect_len: usize = base32.Decoder.calcSize(text.len);
354 var wrote_n_total: usize = 0; 354 var wrote_n_total: usize = 0;
355 for (text) |c, i| { 355 while (dec.next() catch return false) |b| {
356 var b = (dec.read(c) catch return false) orelse continue;
357 wrote_n_total += 1; 356 wrote_n_total += 1;
358 if (crc_buf_len == 2) made_crc = crc16.update(made_crc, &.{crc_buf[0]}); 357 if (crc_buf_len == 2) made_crc = crc16.update(made_crc, &.{crc_buf[0]});
359 crc_buf[0] = crc_buf[1]; 358 crc_buf[0] = crc_buf[1];
360 crc_buf[1] = b; 359 crc_buf[1] = b;
361 if (crc_buf_len != 2) crc_buf_len += 1; 360 if (crc_buf_len != 2) crc_buf_len += 1;
362 } 361 }
363 if (dec.out_off != 0 and wrote_n_total < expect_len) { 362 std.debug.assert(wrote_n_total == expect_len);
364 if (crc_buf_len == 2) made_crc = crc16.update(made_crc, &.{crc_buf[0]});
365 crc_buf[0] = crc_buf[1];
366 crc_buf[1] = dec.buf;
367 if (crc_buf_len != 2) crc_buf_len += 1;
368 }
369 if (crc_buf_len != 2) unreachable; 363 if (crc_buf_len != 2) unreachable;
370 var got_crc = mem.readIntLittle(u16, &crc_buf); 364 var got_crc = mem.readIntLittle(u16, &crc_buf);
371 return made_crc == got_crc; 365 return made_crc == got_crc;