Socket
Book a DemoInstallSign in
Socket

key-did-provider-secp256k1-with-lit

Package Overview
Dependencies
Maintainers
2
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

key-did-provider-secp256k1-with-lit

secp256k1 key did provider

latest
Source
npmnpm
Version
0.1.2
Version published
Maintainers
2
Created
Source

secp256k1 key did provider with Lit Actions x PKP powered by Lit Protocol

This is a DID provider which integrated Lit Actions x PKP powered by Lit Protocol for did:key using secp256k1. It does not support encryption / JWE. It's a fork from symfoni/key-did-provider-secp256k1 and was designed to be used with Ceramic Network.

What it does?

  • Instead of manually providing a PUBLIC_KEY to get the DID (decentralised identifier), this SDK gets the PUBLIC_KEY from the PKP NFT

  • The DID that we got is then passed into a resolver, which would allow us to run methods such as did.authenticate().

  • To authenticate, instead of providing a PRIVATE_KEY to sign a message to verify the signature from the signed message matches the corresponding PUBLIC_KEY, we will ask the Lit nodes, who hold the PRIVATE_KEY collectively of the PKP NFT, to execute some static Javascript code that is hosted on IPFS and use the output signature to verify.

  • So now that PKP NFT owns the decentralised identifier DID, we can use this DID in Ceramic to read & write stream that only this PKP NFT owner can do.

Installation

yarn add key-did-provider-secp256k1-with-lit

Usage

import {
  encodeDIDWithLit,
  Secp256k1ProviderWithLit,
} from "key-did-provider-secp256k1-with-lit";

import { CeramicClient } from "@ceramicnetwork/http-client";
import { TileDocument } from "@ceramicnetwork/stream-tile";
import { getResolver } from "key-did-resolver";
import { DID } from "dids";

const ceramic = new CeramicClient("https://ceramic-clay.3boxlabs.com");

const PKP_PUBLIC_KEY = "30eceb963993d467ca197f3fd9fe3073b8b224ac2c9068d9a9caafcd5e20cf983";

// -- get your encode did with your PKP public key
const encodedDID = await encodeDIDWithLit(PKP_PUBLIC_KEY);

// -- static lit action code hosted on https://ipfs.io/ipfs/QmYrfiMf6TDuU3NiTbZANiELNBCyn2f66Zok3gEuzRTYmL
const provider = new Secp256k1ProviderWithLit({
  did: encodedDID,
  ipfsId: "QmYrfiMf6TDuU3NiTbZANiELNBCyn2f66Zok3gEuzRTYmL",
});

const did = new DID({ provider, resolver: getResolver() });

// -- authenticate
await did.authenticate();
ceramic.did = did;
console.log("DID:", did);

// -- write to ceramic stream
const doc = await TileDocument.create(ceramic, "Hola hola ¿Cómo estás?");
console.log("Doc/StreamID:", doc.id.toString());

// -- read a ceramic stream
var loadDoc = await TileDocument.load(ceramic, doc.id.toString());
console.log("Specific doc:", loadDoc.content);

License

Apache-2.0 OR MIT

FAQs

Package last updated on 04 Nov 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts