KeyLock-RSA-JS / README.md
broadfield-dev's picture
Update README.md
07a0aaa verified
---
title: KeyLock RSA JS
emoji: πŸƒ
colorFrom: indigo
colorTo: yellow
sdk: docker
pinned: false
---
# Secure KeyLock Decoder API
This is a server-side API plugin running in a Docker container on Hugging Face Spaces. It provides a secure, public endpoint to decrypt messages from images created with the KeyLock steganography application.
The core purpose of this service is to act as a trusted third party that holds a secret key. Users can encrypt data using the corresponding public key, and this service will decrypt it for them, without the user ever needing to handle the private key themselves.
## Live API Status
You can check if the API is running by visiting the root of its direct URL:
- **Health Check:** **[https://broadfield-dev-keylock-rsa-js.hf.space/](https://broadfield-dev-keylock-rsa-js.hf.space/)**
If the server is running correctly, you will see a JSON response like #`{"status":"ok",...}`.
---
## How to Use This API
The process involves two main steps: encrypting the data into an image, and then sending that image to this API for decryption.
### Step 1: Encrypt Your Data
1. **Get the Public Key:** You must use this service's specific public key to encrypt your data. Any other key pair will result in a decryption error.
**Service Public Key:**
```pem
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3U12blsrWcopidojVmzZ
cdbk+OwRAbU1dJyrlccSQyejXSCeBZjexVO129UyBP+u+/TsQSp7t2s3DoRaSq6s
X8mxMVcwYKB/6UPmEiwBIRGudDgMzHHEVzYm8fznJSwZr+kj4ox+rk2xopB64wIb
EqGaY/GC1JXm+8dRUh8h/5ZOxftRXmIF2xwPjTEV7jMOGIhCgPQ0Jf+yuAfGmj1/
1L9su5JW+UzgCbiYkDWccUqna4yBpdjybgXs7ZhbRQMjqyakS/qnXlLSh/FvD/Oi
xb9UiBpRJS3jmTMnqbYU19PigVkm7kpY0zubpiyp2p8UL7OODqxnWCetjQ6b3tyL
UwIDAQAB
-----END PUBLIC KEY-----
```
2. **Use an Encryption Tool:** Go to the [KeyLock RSA-BU](https://huggingface.co/spaces/broadfield-dev/KeyLock-RSA-BU) application (or use any compatible tool).
- On the "Embed Data" tab, enter your secret data (e.g., #`USERNAME: myuser`).
- Paste the **Service Public Key** from above into the "Recipient's Public Key" field.
- Generate and download the encrypted PNG image.
### Step 2: Send the Image to the API
Make a #`POST` request to the API endpoint with the encrypted image.
- **Endpoint URL**: #`https://broadfield-dev-keylock-rsa-js.hf.space/api/decode`
- **Method**: #`POST`
- **Body Type**: #`multipart/form-data`
- **Field Name**: The image file must be sent in a field named #`authImage`.
---
## API Response Format
#### On Success (Status 200 OK)
The API will return a JSON object containing the decrypted data.
```json
{
"success": true,
"data": {
"YOUR_KEY_1": "your_decrypted_value_1",
"YOUR_KEY_2": "your_decrypted_value_2"
}
}
```
#### On Failure (Status 400 or 500)
The API will return a JSON object with a descriptive error message.
```json
{
"success": false,
"error": "Decryption failed: The image may be corrupt or was not encrypted with the correct public key."
}
```
---
## Example: Using `fetch` in JavaScript
Here is a simple example of how to call this API from a web application.
```javascript
async function decodeImageWithApi(imageFile) {
const apiUrl = 'https://broadfield-dev-keylock-rsa-js.hf.space/api/decode';
// Create a FormData object to send the file
const formData = new FormData();
formData.append('authImage', imageFile);
try {
const response = await fetch(apiUrl, {
method: 'POST',
body: formData,
});
const result = await response.json();
if (!response.ok) {
throw new Error(result.error || `Server responded with status ${response.status}`);
}
console.log('Successfully Decoded Data:', result.data);
return result.data;
} catch (error) {
console.error('API call failed:', error.message);
// Handle the error in your UI
}
}
// How to use it:
// const myImageFile = document.getElementById('my-file-input').files[0];
// if (myImageFile) {
// decodeImageWithApi(myImageFile);
// }
```
You can test this API live using the **[Official Test Client](https://broadfield-dev-keylock-js-test.static.hf.space/)**.