NAME
App::GroupSecret::File - Reading and writing groupsecret keyfiles
VERSION
version 0.304
SYNOPSIS
use App::GroupSecret::File;
my $file = App::GroupSecret::File->new('path/to/keyfile.yml');
print "File version: " . $file->version, "\n";
$file->add_key('path/to/key_rsa.pub');
$file->save;
DESCRIPTION
This module provides a programmatic way to manage keyfiles.
See groupsecret for the command-line interface.
ATTRIBUTES
filepath
Get the filepath of the keyfile.
METHODS
new
$file = App::GroupSecret::File->new($filepath);
Construct a new keyfile object.
info
$info = $file->info;
Get a raw hashref with the contents of the keyfile.
init
$info = $file->init;
Get a hashref representing an empty keyfile, used for initializing a new keyfile.
load
$info = $file->load;
$info = $file->load($filepath);
Load (or reload) the contents of a keyfile.
save
$file->save;
$file->save($filepath);
Save the keyfile to disk.
check
$file->check;
$file->check($info);
Check the file format of a keyfile to make sure this module can understand it.
keys
$keys = $file->keys;
Get a hashref of the keys from a keyfile.
secret
$secret = $file->secret;
Get the secret from a keyfile as an encrypted string.
version
$version = $file->version
Get the file format version.
add_key
$file->add_key($filepath);
Add a key to the keyfile.
delete_key
$file->delete_key($fingerprint);
Delete a key from the keyfile.
decrypt_secret
$secret = $file->decrypt_secret(passphrase => $passphrase);
$secret = $file->decrypt_secret(private_key => $private_key);
Get the decrypted secret.
decrypt_secret_passphrase
$passphrase = $file->decrypt_secret_passphrase($private_key);
Get the decrypted secret passphrase.
encrypt_secret
$file->encrypt_secret($secret, $passphrase);
Set the secret by encrypting it with a 256-bit passphrase.
Passphrase must be 32 bytes.
encrypt_secret_passphrase
$file->encrypt_secret_passphrase($passphrase);
Set the passphrase by encrypting it with each key in the keyfile.
find_public_key
$filepath = $file->find_public_key($key);
Get a path to the public key file for a key.
format_key
$str = $file->format_key($key);
Get a one-line summary of a key. Format is "<fingerprint> <comment>".
FILE FORMAT
Keyfiles are YAML documents that contains this structure:
---
keys:
FINGERPRINT:
comment: COMMENT
content: ssh-rsa ...
filename: FILENAME
secret_passphrase: PASSPHRASE...
type: rsa
secret: SECRET...
version: 1
BUGS
Please report any bugs or feature requests on the bugtracker website https://github.com/chazmcgarvey/groupsecret/issues
When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.
AUTHOR
Charles McGarvey <chazmcgarvey@brokenzipper.com>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2017 by Charles McGarvey.
This is free software, licensed under:
The MIT (X11) License