╭─────────────╮ │scroll to top│ ╰─────────────╯ ╭ ssh.zig ──────────────────────────────────────────────────────╮ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ╰───────────────────────────────────────────────────────────────╯
╭ find file ─ ─ ─ ─ ─ ─ ─ ─ ─ ─╮ ╭────╮ ╭ clone ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─╮ │ │ │http│ ssh │ │ ╰ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─╯ ╰────╯ ╰ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─╯
985 self.host_key, 986 &idle, 987 self, 988 ) catch |e| { 989 self.result = e; 990 }; 991 } 992 }; 993 994 // deterministic keys so failures don't depend on RNG state. 995 996 fn newHostKey() !proto.HostKey { 997 const seed: [Ed25519.KeyPair.seed_length]u8 = @splat(0xAA); 998 return .{ .keypair = try Ed25519.KeyPair.generateDeterministic(seed) }; 999 } 1000 1001 fn newUserKeypair() !Ed25519.KeyPair { 1002 const seed: [Ed25519.KeyPair.seed_length]u8 = @splat(0xBB); 1003 return try Ed25519.KeyPair.generateDeterministic(seed); 1004 } 1005 1006 fn newClientEphemeral() X25519.KeyPair { 1007 const seed: [X25519.seed_length]u8 = @splat(0xCC); 1008 return X25519.KeyPair.generateDeterministic(seed); 1009 } 1010