Module @pcd/eddsa-pcd

@pcd/eddsa-pcd

License NPM version Downloads Docs

This package defines a PCD designed to verify the authenticity of a message signed using an EdDSA key.

🛠 Install

Install the @pcd/eddsa-pcd package with npm:

npm i @pcd/eddsa-pcd

or yarn:

yarn add @pcd/eddsa-pcd

📜 Usage

Prove

import { getEdDSAPublicKey, newEdDSAPrivateKey, prove } from "@pcd/eddsa-pcd"
import { ArgumentTypeName } from "@pcd/pcd-types"

// Generate a new EdDSA private key.
const privateKey = newEdDSAPrivateKey()

// Prepare the message to sign.
// It must be a list of hexadicimal strings.
const message = ["0xc", "0x7a", "0x8f"]

// Create a PCD with the required attributes and their types.
const pcd = await prove({
// The id is optional and if you don't pass it a random value will be automatically created.
id: {
argumentType: ArgumentTypeName.String
},
message: {
argumentType: ArgumentTypeName.StringArray,
value: message
},
privateKey: {
argumentType: ArgumentTypeName.String,
value: privateKey
}
})

console.log(pcd)
/*
EdDSAPCD {
type: 'eddsa-pcd',
id: '4c80affc-12c3-4d93-8983-cc38295ad31b',
claim: {
message: [ 12n, 122n, 143n ],
publicKey: [
'1d5ac1f31407018b7d413a4f52c8f74463b30e6ac2238220ad8b254de4eaa3a2',
'1e1de8a908826c3f9ac2e0ceee929ecd0caf3b99b3ef24523aaab796a6f733c4'
]
},
proof: {
signature: '39166dd6187378e2ef24d183bffe5bd1b2114344fcd5a56db562a12859c03b9a53b2f98de0b7d4f23dc49979d0e8f919f428a37e736163f7426259c13ecb7000'
}
}
*/

Verify

import { verify } from "@pcd/eddsa-pcd"

const isValid = await verify(pcd)

console.log(isValid) // true

Serialize

import { serialize } from "@pcd/eddsa-pcd"

const serialized = await serialize(pcd)

console.log(serialized)
/*
{
type: 'eddsa-pcd',
pcd: '{"type":"eddsa-pcd","id":"15bcc6ec-3482-4772-8a67-27630f8641c5","claim":{"message":["c","7a","8f"],"publicKey":["1d5ac1f31407018b7d413a4f52c8f74463b30e6ac2238220ad8b254de4eaa3a2","1e1de8a908826c3f9ac2e0ceee929ecd0caf3b99b3ef24523aaab796a6f733c4"]},"proof":{"signature":"71907bb4a1b5e27b2b9df54ac5cbebb45958f673b97030a79a3799e54ed3779eb499e710bb02231d9f9b6bb621375de7a68ad53bc3e5cef35c6531f9440d8d05"}}'
}
*/

Deserialize

import { deserialize } from "@pcd/eddsa-pcd"

const deserialized = await deserialize(serialized.pcd)

console.log(deserialized)
/*
EdDSAPCD {
type: 'eddsa-pcd',
id: '4c80affc-12c3-4d93-8983-cc38295ad31b',
claim: {
message: [ 12n, 122n, 143n ],
publicKey: [
'1d5ac1f31407018b7d413a4f52c8f74463b30e6ac2238220ad8b254de4eaa3a2',
'1e1de8a908826c3f9ac2e0ceee929ecd0caf3b99b3ef24523aaab796a6f733c4'
]
},
proof: {
signature: '39166dd6187378e2ef24d183bffe5bd1b2114344fcd5a56db562a12859c03b9a53b2f98de0b7d4f23dc49979d0e8f919f428a37e736163f7426259c13ecb7000'
}
}
*/

Index

Classes

Interfaces

Type Aliases

Variables

Functions

Generated using TypeDoc