pod.epiccastle.bbssh.key-pair
Everything related to SSH public/private key pairs. Functions for generating, loading, saving, encrypting and decrypting keys. Also a function for signing arbitrary data with the private key.
decrypt
(decrypt key-pair passphrase)
decrypt the private key with the passed in byte-array so that the private key is no longer stored encrypted. Can be followed up with setting a new passphrase to re-encrypt. Returns true if the decryption succeeded.
dispose
(dispose key-pair)
zero out the memory holding the private key passphrase so subsequent attacks on stale memory are thwarted
generate
(generate agent key-type)
(generate agent key-type key-size)
Generate a public/private SSH key pair. key-type
should be :dsa
, :rsa
, :ecdsa
, :ed25519
or :ed448
. key-size
is the number of bits and defaults to 2048.
get-finger-print
(get-finger-print key-pair)
return the key finger print as a string.
get-key-size
(get-key-size key-pair)
returns the bit length of the key
get-public-key-blob
(get-public-key-blob key-pair)
returns a byte-array of the raw public key data.
get-signature
(get-signature key-pair data)
(get-signature key-pair data algorithm)
Sign the passed in data with the private key, using algorithm if it is passed aswell
is-encrypted
(is-encrypted key-pair)
returns true if the private key is encrypted with a passphrase
load
(load agent private-key-file)
(load agent private-key-file public-key-file)
Load the key pair from a file. Pass both private and public filenames in to load from those files. If public key filename is omitted, the private key filename with “.pub” appended is used
load-bytes
(load-bytes agent private-key-bytes public-key-bytes)
Load the key pair from a byte array. Pass both private and public keys either as byte arrays or as strings. Half a keypair can be loaded to perform some operations. You may pass in nil
for one of the key portions to only load the public or private portion.
set-passphrase
(set-passphrase key-pair passphrase)
Set the passphrase on the private key to the string passphrase
write-private-key
(write-private-key key-pair filename)
(write-private-key key-pair filename passphrase)
write the private key to a file filename
. Optionally pass in a byte array passphrase
to be used as a passphrase.
write-public-key
(write-public-key key-pair filename comment)
write the public key to file filename
with the attached comment
string.