> For the complete documentation index, see [llms.txt](https://bayun.gitbook.io/bayuncoresdk-cpp/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bayun.gitbook.io/bayuncoresdk-cpp/bayuncoresdk-operations/lock-unlock-file.md).

# 5.1 Lock/Unlock File

### 5.1.1 Lock File

The `lockFile` function of `BayunCore` class locks a file with default [BayunEncryptionPolicy](https://bayun.gitbook.io/bayuncoresdk-cpp/bayuncoresdk-operations#encryption-policy) and  [BayunKeyGenerationPolicy](https://bayun.gitbook.io/bayuncoresdk-cpp/bayuncoresdk-operations#key-generation-policy) dictated by server settings.

The function takes the following parameters :

* **sessionId** : Unique SessionId which is received in the registration/login function response.
* **filePath** : Path of the file to be locked.
  * dataType : `std::string`

The file at the given file path is overwritten with the locked file. If file locking fails original file is not changed.

{% tabs %}
{% tab title="C++" %}

```cpp
#include "BayunCore.h"

std::string lockedFilePath = bayunCore->lockFile("<sessionId>", <"filePath">);
```

{% endtab %}
{% endtabs %}

### 5.1.2 Lock File with Encryption Policy, Key Generation Policy

The `lockFile` function with encryption policy, key generation policy as parameters locks file with the encryption key dictated by the policy. The function takes the following parameters :

* **sessionId** : Unique SessionId which is received in the registration/login function response.
* **filePath** : Path of the file to be locked.
* **encryptionPolicy** : [BayunEncryptionPolicy](/bayuncoresdk-cpp/bayuncoresdk-operations.md#encryption-policy) determines the key to be used to generate the lockingKey.
* **keyGenerationPolicy** : [BayunKeyGenerationPolicy](/bayuncoresdk-cpp/bayuncoresdk-operations.md#key-generation-policy) determines the policy to generate the data encryption key.
* **groupId** : GroupId is required if encryptionPolicy is `BayunEncryptionPolicyGroup`.

{% hint style="info" %}
If encryptionPolicy is other than `BayunEncryptionPolicyGroup` then groupId should be nil.
{% endhint %}

{% tabs %}
{% tab title="C++" %}

```cpp
#include "BayunCore.h"

Bayun::BayunEncryptionPolicy encryptionPolicy = Bayun::BayunEncryptionPolicy::Company;
Bayun::BayunKeyGenerationPolicy keyGenerationPolicy = Bayun::BayunKeyGenerationPolicy::Envelop;
std::string filePath = "<file path>";
std::string lockedFilePath = bayunCore->lockFile("<sessionId>", filePath, encryptionPolicy, keyGenerationPolicy, "<groupId>");

```

{% endtab %}
{% endtabs %}

### 5.1.3 Unlock File

The `unlockFile` function of `BayunCore` class unlocks a locked file. The function takes the following parameters :

* **sessionId** : Unique SessionId which is received in the registration/login function response.
* **filePath** : Path of the file to be unlocked.
  * dataType : `std::string`

The file at the given file path is overwritten with the unlocked file.

{% tabs %}
{% tab title="C++" %}

```cpp
#include "BayunCore.h"

std::string unlockedFilePath = bayunCore->unlockFile("<sessionId>","<filePath>");
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bayun.gitbook.io/bayuncoresdk-cpp/bayuncoresdk-operations/lock-unlock-file.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
