--- /dev/null
+#!/usr/bin/env perl
+
+use strict;
+use MIME::Base64;
+
+my @lines = (-t STDIN) ? () : <>;
+
+if (@lines == 0) {
+ die "Usage: $0 < key.sec > key.pub\n";
+}
+
+my $seckey = decode_base64(pop @lines);
+my $comment = shift(@lines) || "untrusted comment: secret key";
+
+chomp($comment);
+
+$comment =~ s/\bsecret key$/public key/;
+
+if (length($seckey) != 104) {
+ die "Unexpected secret key length\n";
+}
+
+my $pubkey = encode_base64(substr($seckey, 0, 2) . substr($seckey, 32, 8) . substr($seckey, 72), "");
+
+printf "%s\n%s\n", $comment, $pubkey;