---
name: "Config::Identity"
section: "3pm"
platform: "linux"
package: "libconfig-identity-perl"
version: "0.0019-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Config::Identity"
---

# Config::Identity(3pm)

Load (and optionally decrypt via GnuPG) user/pass identity information

## NAME

Config::Identity - Load (and optionally decrypt via GnuPG) user/pass identity information

## VERSION

version 0.0019

## SYNOPSIS

PAUSE:

```
    use Config::Identity::PAUSE;
    # 1. Find either $HOME/.pause-identity or $HOME/.pause
    # 2. Decrypt the found file (if necessary), read, and parse it
    # 3. Throw an exception unless  %identity has 'user' and 'password' defined
    my %identity = Config::Identity::PAUSE->load_check;
    print "user: $identity{user} password: $identity{password}\n";
```

GitHub API:

```
    use Config::Identity::GitHub;
    # 1. Find either $HOME/.github-identity or $HOME/.github
    # 2. Decrypt the found file (if necessary) read, and parse it
    # 3. Throw an exception unless %identity has 'login' and 'token' defined
    my %identity = Config::Identity::PAUSE->load_check;
    print "login: $identity{login} token: $identity{token}\n";
```

## DESCRIPTION

Config::Identity is a tool for loading (and optionally decrypting via GnuPG) user/pass identity information

For GitHub API access, an identity is a `"login"`/`"token"` pair

For PAUSE access, an identity is a `"user"`/`"password"` pair

## USAGE

### %identity = Config::Identity-\>load\_best( \<stub\> )

First attempt to load an identity from `$HOME`/.\<stub\>-identity

If that file does not exist, then attempt to load an identity from `$HOME`/.\<stub\>

The file may be optionally GnuPG encrypted

`%identity` will be populated like so:

```
    <key> <value>
```

For example:

```
    username alice
    password hunter2
```

If an identity file can't be found or read, the method croaks.

### %identity = Config::Identity-\>load\_check( \<stub\>, \<checker\> )

Works like `"load_best"` but also checks for required keys.  The `"checker"` argument must be an array reference of **required** keys or a code reference that takes a hashref of key/value pairs from the identity file and returns a list of **missing** keys.  For convenience, the hashref will also be placed in `$_`.

If any keys are found missing, the method croaks.

## Using a custom "gpg" or passing custom arguments

You can specify a custom `"gpg"` executable by setting the CI\_GPG environment variable

```
    export CI_GPG="$HOME/bin/gpg"
```

You can pass custom arguments by setting the CI\_GPG\_ARGUMENTS environment variable

```
    export CI_GPG_ARGUMENTS="--no-secmem-warning"
```

## Encrypting your identity information with GnuPG

If you've never used GnuPG before, first initialize it:

```
    # Follow the prompts to create a new key for yourself
    gpg --gen-key
```

To encrypt your GitHub identity with GnuPG using the above key:

```
    # Follow the prompts, using the above key as the "recipient"
    # Use ^D once you've finished typing out your authentication information
    gpg -ea > $HOME/.github
```

## Caching your GnuPG secret key via gpg-agent

Put the following in your .\*rc

```
    if which gpg-agent 1>/dev/null
    then
        if test -f $HOME/.gpg-agent-info && \
            kill -0 `cut -d: -f 2 $HOME/.gpg-agent-info` 2>/dev/null
        then
            . "${HOME}/.gpg-agent-info"
            export GPG_AGENT_INFO
        else
            eval `gpg-agent --daemon --write-env-file "${HOME}/.gpg-agent-info"`
        fi
    else
    fi
```

## PAUSE identity format

```
    user <user>
    password <password>
```

`"username"` can also be used as alias for `"user"`

## GitHub identity format

```
    login <login>
    token <token>
```

## SUPPORT

### Bugs / Feature Requests

Please report any bugs or feature requests through the issue tracker at \<http://rt.cpan.org/Public/Dist/Display.html?Name=Config-Identity\>. You will be notified automatically of any progress on your issue.

### Source Code

This is open source software.  The code repository is available for public review and contribution under the terms of the license.

\<https://github.com/dagolden/Config-Identity\>

```
  git clone https://github.com/dagolden/Config-Identity.git
```

## AUTHOR

Robert Krimen \<robertkrimen@gmail.com\>

## CONTRIBUTOR

David Golden \<dagolden@cpan.org\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2010 by Robert Krimen.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
