Zig
Zig
SFTP Host Key Fingerprint
See more SFTP Examples
Demonstrates how to get the SSH server's host key fingerprint after connecting.Chilkat Zig Downloads
const std = @import("std");
const chilkat = @import("chilkat");
pub fn main(init: std.process.Init) !void {
const alloc = init.arena.allocator();
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
const sftp = try chilkat.SFtp.init();
defer sftp.deinit();
const hostname = "sftp.example.com";
const port = 22;
sftp.connect(hostname, port) catch {
std.debug.print("{s}\n", .{try sftp.getLastErrorText(alloc)});
return;
};
// Get the classic MD5 fingeprint
const md5_fingerprint = try sftp.getHostKeyFingerprint(alloc);
std.debug.print("{s}\n", .{md5_fingerprint});
// Sample output:
// ssh-rsa 3072 21:b0:d8:41:4e:ef:78:10:20:af:01:b7:71:5d:eb:94
// Starting in Chilkat v9.5.0.92, we can also get the SHA256 fingerprint.
// (it is also possible to get fingerprints using other hash algorithms such as SHA384, SHA512, etc.)
var include_key_type: bool = true;
var include_hash_name: bool = true;
var sha256_fingerprint: [:0]const u8 = try sftp.getHostKeyFP(alloc, "SHA256", include_key_type, include_hash_name);
std.debug.print("{s}\n", .{sha256_fingerprint});
// Sample output:
// ssh-rsa SHA256:Ufgj480OsdsCZRjj9sSNM6fpgIcSJ61RsIG8usndUIY=
// The key type and hash name can be optionally included or not.
include_key_type = false;
include_hash_name = true;
sha256_fingerprint = try sftp.getHostKeyFP(alloc, "SHA256", include_key_type, include_hash_name);
std.debug.print("{s}\n", .{sha256_fingerprint});
// SHA256:Ufgj480OsdsCZRjj9sSNM6fpgIcSJ61RsIG8usndUIY=
include_key_type = true;
include_hash_name = false;
sha256_fingerprint = try sftp.getHostKeyFP(alloc, "SHA256", include_key_type, include_hash_name);
std.debug.print("{s}\n", .{sha256_fingerprint});
// ssh-rsa Ufgj480OsdsCZRjj9sSNM6fpgIcSJ61RsIG8usndUIY=
include_key_type = false;
include_hash_name = false;
sha256_fingerprint = try sftp.getHostKeyFP(alloc, "SHA256", include_key_type, include_hash_name);
std.debug.print("{s}\n", .{sha256_fingerprint});
// Ufgj480OsdsCZRjj9sSNM6fpgIcSJ61RsIG8usndUIY=
}