# ENCRYPTED\_STRING macro/function

Use the `ENCRYPTED_STRING` macro/function for each list item in the [`ENCRYPTED_STRING_PROPERTY_LIST_EDIT`](https://docs.electricbolt.co.nz/configuration-subclasses/supported-property-types/encrypted-string#nsstring-editable-list-implementation) (Objective-C) macro or [`@EncryptedStringPropertyListEdit`](https://docs.electricbolt.co.nz/configuration-subclasses/supported-property-types/encrypted-string#string-editable-list-implementation) (Swift) property wrapper.

### Step 1. Copy the public key

<img src="https://1008176080-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fw1fcw3dvtSrfUh3YtO9Z%2Fuploads%2FRejJGy3drRwx5qT9a1TQ%2FXCODEANDROID.png?alt=media&#x26;token=e2804746-ee6d-4d8c-b948-2e3e4e1d6e83" alt="" data-size="line"> You can copy the multi line string including the `return` keyword and line breaks as follows (do not include any comments or `#if` macros):

{% tabs %}
{% tab title="Swift" %}

<pre class="language-swift"><code class="lang-swift">return "-----BEGIN PUBLIC KEY-----\n" +
    "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4TZnKfGeXttN7Rr3eiAZ\n" +
    "PMEPsZvbo7lgIpMh6OjgBsoqkJJP0yXXLtpqsBCv8vm7RYqCn5+yfkiCQiXvkJBz\n" +
<strong>    "FSKmLF9EPR9l1H+32Id82dDuseD70D66puPUHjciEgmU18DpW2NVvTAykMwTEsiR\n" +
</strong>    "0h/ExBEhUe75qtwlVno8cMFbEfVtiGbKECvWIr122ED71T0Jt2Bcxqx1a7c1hPIV\n" +
    "RwLxIfWfE0+2rB9nJVPBgsTVPywibDvjio82FousyMDmvkAbMq5iyuyvJ0+5bATz\n" +
    "o12GEt5lSiQlCMzfmkWYBROMDCh27qGFVVo1XAUCVsMfsW9n4iQcoLAdUp/LI3B3\n" +
    "ywIDAQAB\n" +
    "-----END PUBLIC KEY-----\n"
</code></pre>

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
return @"-----BEGIN PUBLIC KEY-----\n" \
    "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4TZnKfGeXttN7Rr3eiAZ\n" \
    "PMEPsZvbo7lgIpMh6OjgBsoqkJJP0yXXLtpqsBCv8vm7RYqCn5+yfkiCQiXvkJBz\n" \
    "FSKmLF9EPR9l1H+32Id82dDuseD70D66puPUHjciEgmU18DpW2NVvTAykMwTEsiR\n" \
    "0h/ExBEhUe75qtwlVno8cMFbEfVtiGbKECvWIr122ED71T0Jt2Bcxqx1a7c1hPIV\n" \
    "RwLxIfWfE0+2rB9nJVPBgsTVPywibDvjio82FousyMDmvkAbMq5iyuyvJ0+5bATz\n" \
    "o12GEt5lSiQlCMzfmkWYBROMDCh27qGFVVo1XAUCVsMfsW9n4iQcoLAdUp/LI3B3\n" \
    "ywIDAQAB\n" \
    "-----END PUBLIC KEY-----\n";
```

{% endtab %}
{% endtabs %}

### Step 2. Paste into the `Public Key` text field

<img src="https://1008176080-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fw1fcw3dvtSrfUh3YtO9Z%2Fuploads%2FFrjGnCH8QQzABmEdBL6o%2FAPPFIGURATESE.png?alt=media&#x26;token=f01a96e3-6944-435c-a931-e2fa0e89f3c7" alt="" data-size="line"> The public key will be reformatted automatically.

### Step 3. Copy the plaintext value

<img src="https://1008176080-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fw1fcw3dvtSrfUh3YtO9Z%2Fuploads%2F5sWBxmyCcWgd9b3MIw5n%2FXCODEANDROID.png?alt=media&#x26;token=f41c4d98-d778-4fbc-af62-d7299c786398" alt="" data-size="line"> Copy the plaintext value from the first parameter of the `ENCRYPTED_STRING` macro/function

{% tabs %}
{% tab title="Swift" %}

```swift
@EncryptedStringPropertyListEdit(
    regex: #"https://[\w\.-]\.appfigurate.io/.*"#, 
    description: "server url", 
    encrypted: ENCRYPTED(), 
    restart: false, 
    values: ["Dev":ENCRYPTED_STRING("https://dev.appfigurate.io/list", // param 1 - plaintext
        "")])                                                          // param 2 - ciphertext
var url: String 
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
ENCRYPTED_STRING_PROPERTY_LIST_EDIT(
    url, 
    @"https://[\\w\\.-]+\\.appfigurate.io/.*", 
    @"server url", 
    @{@"Dev":ENCRYPTED_STRING(@"https://dev.appfigurate.io/list", // param 1 - plaintext
      @""                                                         // param 2 - ciphertext
    )}); 
```

{% endtab %}
{% endtabs %}

Copy just the plaintext value without surrounding quotes as follows:

```
https://dev.appfigurate.io/list
```

### Step 4. Paste into the `Plaintext` text field

<img src="https://1008176080-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fw1fcw3dvtSrfUh3YtO9Z%2Fuploads%2FhY1tFm7ikLR9sm5FNPqw%2FAPPFIGURATESE.png?alt=media&#x26;token=bc3b41ae-9be0-4b57-ba12-b3aa9f48658e" alt="" data-size="line"> The ciphertext will be computed automatically. e.g.:

```
Bj+pIgNMhv+IRdmUJw6nzhKZmD14uAwe2jz50gYHSvkbgzUkmmpm+fjFsPrprljaPhu3w7xr1KuMkcbjdDpbFBoxSsOcZ3WuxjA5mHv1h/inZpi2/cAH/UjhshPO2VQ8FkWg9shduqCEDbjMuO8ammVA5x+zg7oVTPJXbJUH1P3I49f3Sc/Lg2LpxyEXIDFtgpYq5FX1qNa3mu842OMSkJ6NVEI+CDi4hRNz7P+ie2d8Dqlm+w0cvoV91Dc94bUveQsqiAcshTkqmlxxI5uZc+oKR8pQK+RX0pEZz+U2XR4herhDV3Qd/J8YAhL4qkIpxDMaYmiW7EK0RVszlwSDf/t+jPZE0cYVq3jF/ZYHh1S2k3mFRRnyO/gYgf5+SPB6AQ==
```

{% hint style="success" %}
**Note:** due to the nature of RSA public key encryption, the ciphertext randomly changes for every modification you make.
{% endhint %}

### Step 5. Copy the ciphertext value

<img src="https://1008176080-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fw1fcw3dvtSrfUh3YtO9Z%2Fuploads%2FICEycPsJNVcgwvEvCENJ%2FAPPFIGURATESE.png?alt=media&#x26;token=80d11b8b-b824-4189-aebf-a48e8a4efbf4" alt="" data-size="line"> Copy the ciphertext value.

### Step 6. Paste into your subclass

<img src="https://1008176080-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fw1fcw3dvtSrfUh3YtO9Z%2Fuploads%2FXhNehnihYxu2J8I3IzoH%2FXCODEANDROID.png?alt=media&#x26;token=36e81a28-027a-46b3-9727-eaf0e562d42b" alt="" data-size="line"> Paste the ciphertext into the second parameter of the `ENCRYPTED_STRING` macro/function

{% tabs %}
{% tab title="Swift" %}

```swift
@EncryptedStringPropertyListEdit(
    regex: #"https://[\w\.-]\.appfigurate.io/.*"#, 
    description: "server url", 
    encrypted: ENCRYPTED(), 
    restart: false, 
    values: ["Dev":ENCRYPTED_STRING("https://dev.appfigurate.io/list", // param 1 - plaintext
        "Bj+pIgNMhv+IRdmUJw6nzhKZmD14uAwe2jz50gYHSvkbgzUkmmpm+fjFsPrprljaPhu3w7xr1KuMkcbjdDpbFBoxSsOcZ3WuxjA5mHv1h/inZpi2/cAH/UjhshPO2VQ8FkWg9shduqCEDbjMuO8ammVA5x+zg7oVTPJXbJUH1P3I49f3Sc/Lg2LpxyEXIDFtgpYq5FX1qNa3mu842OMSkJ6NVEI+CDi4hRNz7P+ie2d8Dqlm+w0cvoV91Dc94bUveQsqiAcshTkqmlxxI5uZc+oKR8pQK+RX0pEZz+U2XR4herhDV3Qd/J8YAhL4qkIpxDMaYmiW7EK0RVszlwSDf/t+jPZE0cYVq3jF/ZYHh1S2k3mFRRnyO/gYgf5+SPB6AQ==")]) // param 2 - ciphertext
var url: String
```

{% endtab %}

{% tab title="Objective-C" %}

```objectivec
ENCRYPTED_STRING_PROPERTY_LIST_EDIT(
    url, 
    @"https://[\\w\\.-]+\\.appfigurate.io/.*", 
    @"server url", 
    @{@"Dev":ENCRYPTED_STRING(@"https://dev.appfigurate.io/list", // param 1 - plaintext
      @"Bj+pIgNMhv+IRdmUJw6nzhKZmD14uAwe2jz50gYHSvkbgzUkmmpm+fjFsPrprljaPhu3w7xr1KuMkcbjdDpbFBoxSsOcZ3WuxjA5mHv1h/inZpi2/cAH/UjhshPO2VQ8FkWg9shduqCEDbjMuO8ammVA5x+zg7oVTPJXbJUH1P3I49f3Sc/Lg2LpxyEXIDFtgpYq5FX1qNa3mu842OMSkJ6NVEI+CDi4hRNz7P+ie2d8Dqlm+w0cvoV91Dc94bUveQsqiAcshTkqmlxxI5uZc+oKR8pQK+RX0pEZz+U2XR4herhDV3Qd/J8YAhL4qkIpxDMaYmiW7EK0RVszlwSDf/t+jPZE0cYVq3jF/ZYHh1S2k3mFRRnyO/gYgf5+SPB6AQ==" // param 2 - ciphertext
    )});
```

{% endtab %}
{% endtabs %}
