Sample code for 30+ languages & platforms
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

Zig
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=
}