Sample code for 30+ languages & platforms
Zig

Change Password for Java KeyStore File

See more Java KeyStore (JKS) Examples

Demonstrates how to load a Java keystore, change the password, and save using the new password. If the Java keystore contains only trusted root certificates, then it's simply a matter of loading the JKS with the existing password, and then saving with a new password. If the JKS contains private key entries, then each private key entry must be re-keyed using the new password by calling the ChangePassword method.

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 requires the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    const jks = try chilkat.JavaKeyStore.init();
    defer jks.deinit();

    const old_jks_password = "existingPassword";
    const new_jks_password = "newPassword";
    const jks_path = "/someDir/keyStore.jks";

    // Load the Java keystore from a file.
    jks.loadFile(old_jks_password, jks_path) catch {
        std.debug.print("{s}\n", .{try jks.getLastErrorText(alloc)});
        return;
    };

    // If the JKS contains private key entries, then each
    // must be re-keyed with the new password by calling ChangePassword.
    const num_private_keys = jks.getNumPrivateKeys();

    var i: i32 = 0;
    while (i < num_private_keys) {
        jks.changePassword(i, old_jks_password, new_jks_password) catch {
            std.debug.print("{s}\n", .{try jks.getLastErrorText(alloc)});
            return;
        };

        i = i + 1;
    }

    // Write the JKS using the new password for the JKS file's keyed digest.
    jks.toFile(new_jks_password, jks_path) catch {
        std.debug.print("{s}\n", .{try jks.getLastErrorText(alloc)});
        return;
    };

    std.debug.print("Updated the password for the Java keystore file.\n", .{});
}