# Signer Tool

Signer registry is a centralized place where you can store your development keys.

Each signer in registry has an unique user defined name. All everdev commands that require signing or encryption refer to the signer by name.

You can mark one of the signers as a default. It can be used in signing commands without providing signer option.

Signer repository management in everdev is accessible through the `signer` tool.

**Note:** If you need to generate an unsigned message, you may use the option `--signer none` in any relevant commands in other controllers. Omitting the signer option altogether always means using the default signer.

**Note:** Keys in the repository are stored unencrypted.

## Add a signer with randomly generated keys

This command adds a signer with randomly generated keys.

```bash
everdev signer generate signer_name
```

See other available generation options with help command:

```bash
everdev signer generate -h
EverDev Version: 0.5.0
Use: everdev signer generate name [options]
Args:
    name  Signer name
Options:
    --help, -h        Show command usage
    --mnemonic, -m    Use mnemonic phrase
    --dictionary, -d  Mnemonic dictionary
                      0  TON
                      1  English
                      2  Chinese Simplified
                      3  Chinese Traditional
                      4  French
                      5  Italian
                      6  Japanese
                      7  Korean
                      8  Spanish
    --words, -w       Number of mnemonic words
    --force, -f       Overwrite signer if already exists
```

## Add a signer with specific keys

This command adds a signer with previously generated (e.g. with tonos-cli) keys.

```bash
everdev signer add signer_name signer_secret_key_or_seed_phrase_in_quotes
```

See other available signer addition options with help command:

```bash
everdev signer add -h
EverDev Version: 0.5.0
Use: everdev signer add name secret [options]
Args:
    name    Signer name
    secret  Secret key or seed phrase
Options:
    --help, -h        Show command usage
    --dictionary, -d  Mnemonic dictionary
                      0  TON
                      1  English
                      2  Chinese Simplified
                      3  Chinese Traditional
                      4  French
                      5  Italian
                      6  Japanese
                      7  Korean
                      8  Spanish
    --force, -f       Overwrite signer if already exists
```

**Note:** By default the dictionary is set to english, which allows using seed phrases generated by other TONOS tools, such as tonos-cli.

## List registered signers

This command lists all registered signers with their public keys.

```bash
everdev signer list
```

Result:

```bash
$ everdev signer list

Signer           Public Key
---------------  ----------------------------------------------------------------
sign1 (Default)  cffd3a2f1d241807b2205220a7d6df980e67a3cc7c47eba2766cdc1bbddfc0e3
sign2            0fc4e781720d80f76257db333c6b6934090562418652cf30352878c87707aa94
```

## Get signer details

This command lists all information (including secret data) for a specified signer.

```bash
everdev signer info signer_name
```

Result:

```bash
$ everdev signer info sign2
{
    "name": "sign2",
    "description": "",
    "keys": {
        "public": "760d69964d038997d891fca0a0407c2ffefb701e7cb2f9ff0a87fbbf1e8098f2",
        "secret": "72571b5a9392e6bb215b460ca3c0545c34d790e185f66f5b2e7564329ffea86c"
    }
}
```

## Set default signer

This command sets a previously added signer as default (initially the first added signer is used by default).

```bash
everdev signer default signer_name
```

## Delete a signer

This command deletes a previously added signer from signer registry.

```bash
everdev signer delete signer_name
```
