Privacy & Access Control
Learn about encrypting data to be stored on Filecoin and gating access to data already stored on Filecoin.
Encrypting data for storing on Filecoin
import {ethers} from "ethers"
import lighthouse from '@lighthouse-web3/sdk'
import kavach from "@lighthouse-web3/kavach"
const signAuthMessage = async(privateKey) =>{
const signer = new ethers.Wallet(privateKey)
const authMessage = await kavach.getAuthMessage(signer.address)
const signedMessage = await signer.signMessage(authMessage.message)
const { JWT, error } = await kavach.getJWT(signer.address, signedMessage)
return(JWT)
}
const uploadEncrypted = async() =>{
/**
* This function lets you upload a file to Lighthouse with encryption enabled.
*
* @param {string} path - Location of your file.
* @param {string} apiKey - Your unique Lighthouse API key.
* @param {string} publicKey - User's public key for encryption.
* @param {string} signedMessage - A signed message or JWT used for authentication at encryption nodes.
*
* @return {object} - Returns details of the encrypted uploaded file.
*/
const pathToFile = '/home/cosmos/Desktop/wow.jpg'
const apiKey = 'YOUR_API_KEY_HERE'
const publicKey = 'YOUR_PUBLIC_KEY_HERE'
const signedMessage = await signAuthMessage(privateKey)
const response = await lighthouse.uploadEncrypted(pathToFile, apiKey, publicKey, signedMessage)
console.log(response)
/* Sample Response
{
data: [
{
Name: 'decrypt.js',
Hash: 'QmeLFQxitPyEeF9XQEEpMot3gfUgsizmXbLha8F5DLH1ta',
Size: '1198'
}
]
}
*/
}
uploadEncrypted()Gated access to your dataset
Variable
Description
Last updated