# PGP Generate Keys

> PGP Generate Keys activity for generating an OpenPGP public/private RSA key pair and saving them to file.

`UiPath.Cryptography.Activities.PgpGenerateKeys`

## Description

Generates an OpenPGP public/private RSA key pair and saves them to the specified file paths in ASCII-armored format.

## Project compatibility

**Windows** | **Cross-platform**

## Windows, Cross-platform configuration

* **User ID** - The OpenPGP User ID for the generated key. Conventionally an RFC 2822 mailbox, for example `Alice Doe <alice@example.com>`. Any UTF-8 string is accepted, but the mailbox form is what most PGP tools and key servers expect. This field supports only strings and `String` variables.
* **Public Key Output Path** - The file path where the generated PGP public key is saved. This field supports only strings and `String` variables.
* **Private Key Output Path** - The file path where the generated PGP private key is saved. This field supports only strings and `String` variables.
* **Passphrase** - The passphrase that protects the generated private key. To provide it as a secure string instead of plain text, select the field's input menu and switch to the **Passphrase (Secure)** input (a `SecureString`).

### Advanced options

#### Options
* **Key Size** - The RSA key size, in bits. The following options are available: **2048-bit**, **3072-bit**, and **4096-bit**. The default value is **4096-bit**, which meets National Institute of Standards and Technology (NIST) guidance through 2030 and aligns with the strictest enterprise security recommendations. Reduce the key size only when the consuming system cannot handle 4096-bit keys.
* **Overwrite** - If files already exist at the output paths, this overwrites them. This field only supports Boolean values (`True`, `False`). The default value is `False`.
* **Continue On Error** - Specifies if the automation should continue even when the activity throws an error. This field only supports Boolean values (`True`, `False`). The default value is `False`. As a result, if the field is blank and an error is thrown, the execution of the project stops. If the value is set to `True`, the execution of the project continues regardless of any error.
  :::note
  If this activity is included in **Try Catch** and the value of the **Continue On Error** property is `True`, no error is caught when the project is executed.
  :::

#### Output
* **Public Key File** - A resource handle to the generated public key file, stored in an `ILocalResource` variable for use in other activities. The key is also written to the **Public Key Output Path**.
* **Private Key File** - A resource handle to the generated private key file, stored in an `ILocalResource` variable for use in other activities. The key is also written to the **Private Key Output Path**.
