# `mix aker.sign`
[🔗](https://github.com/udin-io/aker/blob/v0.1.0/lib/mix/tasks/aker.sign.ex#L1)

Sign a licence from an install's activation request, standing in for the
licensing server on your own machine.

    mix aker.sign request.json --product my_app \
      --root-key ../keys/root.pem --customer "Acme Logistics" \
      --seats 10 --term monthly

Options:

  * `--product` (required): the product the request and licence name.
  * `--root-key` (required): the root key's PEM, which signs the working
    key's certificate. Keep it outside the checkout: the task refuses a
    key inside the folder it runs in.
  * `--working-key`: the working key's PEM, which signs the licence
    (default: the root key).
  * `--customer`, `--seats` (required).
  * `--term` (required): `monthly` (30 days), `yearly` (365 days) or a
    number of days.
  * `--features`: the features the licence sells, comma-separated, such
    as `--features reports,export`.
  * `--serial` (default 1): raise it for each licence after the first,
    since an app refuses a licence older than the one it holds.
  * `--key-id` (default `dev`), `--moves` (default 20).
  * `--out` (default `licence.json` beside the request).

The keys are PEM files `openssl genpkey -algorithm ed25519` writes, held
as `Aker.SigningKey`, so nothing prints key material. The last line
prints the root key's public half: the app accepts the licence only when
its root key list holds that value.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
