authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-07-17 11:44:37 -07:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-07-17 11:44:37 -07:00
logcd2f528fc410738c7951e6f0cb4b4a4a1cd7f1cb
tree54ab22db5edc67429f83df919c31d52458aca18a
parent6c48e1c3954aa4f361941eaf565570fabef93685
signaturebadge-check Signed by SSH key SHA256:4hHJbtBRU58AYXwjL7fkz2fnQHdiye8x1QpTCQ0sHNw

Signature: ssh: support rsa-sha2-512


1 files changed, 13 insertions(+), 1 deletions(-)

git.zig+13-1
......@@ -2575,6 +2575,19 @@ pub const Signature = union(enum) {
25752575 const sig = sigfixed.readSlice(sig_len) catch break :blk;
25762576 valid = if (pgp_rsa_verify(pk_n.len, sig, signed_data.items, pk, .sha2_256)) true else |err| if (err == error.unrecognized) null else false;
25772577 }
2578 if (std.mem.eql(u8, sigformat, "rsa-sha2-512")) blk: {
2579 const ns = std.crypto.Certificate.rsa;
2580 const pk_e_len = pkfixed.readInt(u32, .big) catch break :blk;
2581 var pk_e = pkfixed.readSlice(pk_e_len) catch break :blk;
2582 if (pk_e[0] == 0) pk_e = pk_e[1..];
2583 const pk_n_len = pkfixed.readInt(u32, .big) catch break :blk;
2584 var pk_n = pkfixed.readSlice(pk_n_len) catch break :blk;
2585 if (pk_n[0] == 0) pk_n = pk_n[1..];
2586 const pk = ns.PublicKey.fromBytes(pk_e, pk_n) catch break :blk;
2587 const sig_len = sigfixed.readInt(u32, .big) catch break :blk;
2588 const sig = sigfixed.readSlice(sig_len) catch break :blk;
2589 valid = if (pgp_rsa_verify(pk_n.len, sig, signed_data.items, pk, .sha2_512)) true else |err| if (err == error.unrecognized) null else false;
2590 }
25782591 if (std.mem.eql(u8, sigformat, "ssh-ed25519")) blk: {
25792592 const ed = std.crypto.sign.Ed25519;
25802593 const pk_len = pkfixed.readInt(u32, .big) catch break :blk;
......@@ -2636,7 +2649,6 @@ pub const Signature = union(enum) {
26362649 // ssh-dss (dsa)
26372650 // sk-ecdsa-sha2-nistp256@openssh.com
26382651 // sk-ssh-ed25519@openssh.com
2639 // rsa-sha2-512
26402652
26412653 return .{ .ssh = .{
26422654 .publickey = publickey,