KeyLock-RSA-JS / README.md
broadfield-dev's picture
Update README.md
07a0aaa verified
metadata
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:

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:

    -----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 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.

{
  "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.

{
  "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.

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.