Ceramic
The Ceramic Plugin adds support for storing and retrieving credentials on Ceramic. It exposes the ability to publish and read from Ceramic, as well as providing access to a Ceramic client object with a did attached to it.
This plugin implements the Read and Store Planes.
Install
Uploading to Ceramic
To upload a credential to Ceramic, you may use the Store Plane:
Uploading to Ceramic with Encryption
To upload a credential to Ceramic using encryption, you may use the Store Plane:
Ceramic's uploadEncrypted method encrypts VCs as JWEs with the controller's DID and other specified recipients (see below for advanced encryption options). JOSE encryption is implemented with ECDH-ES+XC20PKW
on the x25519
curve with a key length of 256
. This is handled by the did-jwt library from the Decentralized Identity Foundation.
Note: Additional metadata is not, by default, encrypted.
Reading from Ceramic
To read a credential from Ceramic, you may use the Read Plane:
Ceramic's get
method will decrypt any JWE encrypted credentials (see uploadEncrypted
) when reading, using the learnCard's DID (learnCard.id.did()
). If the learnCard's DID is not a recipient of the JWE, reading the credential will fail.
Getting the Ceramic Client
To get access to the Ceramic Client, use the getCeramicClient
method:
Advanced Encryption Settings
As indicated above, when using learnCard.store.Ceramic.uploadEncrypted(vc),
uploaded VCs are encrypted using default settings.
Upload & Get Encrypted Credential:
Upload & Get Shared Encrypted Credential:
In addition to encrypting VCs for the controller, you can pass additional params of the following shape, to learnCard.store.Ceramic.uploadEncrypted(vc, params):
You can play with the following examples in the LearnCard CLI:
Upload & Get One-Way Encrypted Credential:
To manually set encryption settings, you should directly use learnCard.invoke.publishContentToCeramic(vc, encryption)
and pass in your encryption
params:
Ceramic's specific encryption param is of the following shape:
You can also use publishContentToCeramic
to upload VPs! Try:
learnCard.invoke.publishContentToCeramic(vp, encryption)
Last updated