zkPass
zkPass Developer's Guide
zkPass Developer's Guide
  • â›Šī¸Introduction
  • ZKPASS OVERVIEW
    • đŸ›ī¸Architecture
    • 🧱zkPass Components
    • 🤝Trust Models
    • 🚚Deployment
      • Public-Cloud Hosting
      • Private-Cloud Hosting
      • On-Premise Hosting
    • đŸŽ¯SDK Objectives
    • 🔑API Key
  • zkPass Modules
    • â˜ī¸DVR
      • đŸ—ģHigh Level View
      • đŸ—ī¸Key Concepts
        • User Data
        • DVR Info
        • zkPass Proof
      • đŸ‘ĨDVR Client Roles
        • Data Issuer
          • Providing User Data Retrieval API
        • Data Holder
          • 1. Retrieving the DVR
          • 2. Retrieving the User Data
          • 3. Generating the Proof
          • 4. Verifying the Proof
        • Proof Verifier
          • 1. Providing DVR Retrieval API
          • 2. Providing Proof Verification API
      • 🔎DVR Query
        • Building Query Engine
        • Processing Query
        • Query Grammar
      • đŸ—ī¸Integration Guidelines
      • 🌊DVR Workflows
  • SDK Tutorial
    • Typescript
      • Running Code
      • Code Snippet
      • Directory Structure
    • Rust
      • Running Code
      • Code Snippet
      • Directory Structure
  • API Reference
    • Typescript
      • Classes
        • Class: DvrModuleClient
      • Functions
        • Functions: ffiHelper
        • Functions: jwtHelper
        • Functions: publicKeyOptionUtils
      • Type Aliases
        • Types
        • Types: ffiType
      • Interfaces
        • Interfaces
      • Constants
        • Constants
        • Enums
      • Errors
    • Rust
      • Building Rust doc
    • RESTful API
      • Overview
      • Endpoints
        • Generate Proof
      • Utilities
        • Generate Key Pair
        • Sign User Data and DVR
        • Encrypt User Data and DVR
      • Errors
  • Glossary
    • DVR
    • User Data
    • ZKP
Powered by GitBook
On this page
Export as PDF
  1. SDK Tutorial
  2. Rust

Code Snippet

This section describes how we use the zkPass SDK in our demo code

Generate Proof

use crate::lib_loader::generate_zkpass_proof;

let zkpass_proof_token = unsafe {
    generate_zkpass_proof(credentials, user_data_tokens, dvr_token)
};

This code snippet generates a zkPass proof. It requires 3 parameters:

  1. credentials : Get yours API key and secret at https://portal.ssi.id

  2. user_data_tokens : stringified signed users data.

  3. dvr_token : signed Dvr query.

Verify Proof

use crate::lib_loader::verify_zkpass_proof;
use dvr_types::ExpectedDvrMetadataFfi;

//
// Step 1: Create the expected metadata object.
//
let expected_metadata = ExpectedDvrMetadataFfi {
    ttl: some_ttl,
    dvr: expected_dvr_cstring.as_ptr(),
    user_data_verifying_keys: user_data_requests_slice.as_ptr(),
    user_data_verifying_keys_len: user_data_requests_slice.len() as u64,
};

//
// Step 2: Call verify proof.
//
let result = unsafe {
    verify_zkpass_proof(&service_url, zkvm, zkpass_proof_token, expected_metadata)
};

This code snippet verifies a zkPass proof token. Components :

  1. expected_metadata : this is the expected metadata of the dvr.

  2. zkvm: zkvm used to generate proof, currently we only support r0.

  3. service_url : you can use https://playground-zkpass.ssi.id , or use your own endpoint if you deploy zkPass on your own server.

Generate User Data Token

use crate::lib_loader::generate_user_data_token;

let user_data_token = unsafe {
    generate_user_data_token(signing_key, &data.to_string())
};

This code snippet generate user data token. Components :

  1. signing_key : a private key used to sign user data.

  2. data : user data in JSON format.

Generate DVR Token

use crate::lib_loader::generate_query_token;

let dvr_token = unsafe { generate_query_token(signing_key, dvr_data) };

This code snippet generate DVR token. Components :

  1. signing_key : a private key used to sign dvr.

  2. dvr_data : Dvr data to sign.

PreviousRunning CodeNextDirectory Structure

Last updated 5 months ago

zkpass_proof_token : check section for more details.

Generate Proof