infra_did_dart 1.0.2 copy "infra_did_dart: ^1.0.2" to clipboard
infra_did_dart: ^1.0.2 copied to clipboard

Infra DID Dart Library

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:infra_did_dart/infra_did_dart.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});
  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String data = "";
  late final InfraDidSet didSet;

  void _generateSS58DID() {
    setState(() {
      didSet = InfraSS58DID.generateSS58DID("01");
      data = didSet.did;
      print(data);
    });
  }

  void _didToHexPublicKey() {
    setState(() {
      data = InfraSS58DID.didToHexPublicKey(didSet.did);
    });
  }

  void _ss58AddressToDID() {
    setState(() {
      data = InfraSS58DID.ss58AddressToDID(didSet.address, "01");
    });
  }

  void _resolve() {
    setState(() {
      InfraDidDocument didDocument = InfraSS58DID.resolve(didSet.did);
      data = didDocument.toString();
    });
  }

  void _issueCredential() {
    String did =
        "did:infra:01:5GpEYnXBoLgvzyWe4Defitp5UV25xZUiUCJM2xNgkDXkM4NW";
    String privateKey =
        "8006aaa5985f1d72e916167bdcbc663232cef5823209b1246728f73137888170";
    String credential = """{
            "@context": [
                "https://www.w3.org/2018/credentials/v1"
            ],
            "id": "did:infra:01:5FDseiC76zPek2YYkuyenu4ZgxZ7PUWXt9d19HNB5CaQXt5U",
            "type": [
                "VerifiableCredential"
            ],
            "credentialSubject": [
                {
                    "id": "did:example:d23dd687a7dc6787646f2eb98d0"
                }
            ],
            "issuanceDate": "2023-04-24T06:08:03.039Z",
            "issuer": "did:infra:01:5GpEYnXBoLgvzyWe4Defitp5UV25xZUiUCJM2xNgkDXkM4NW"
        }""";
    setState(() {
      data = InfraSS58DID.issueCredential(did, credential, privateKey);
      print(data);
    });
  }

  void _verifyCredential() {
    String credential = """{
      "@context": [
        "https://www.w3.org/2018/credentials/v1"
      ],
      "id": "did:infra:01:5FDseiC76zPek2YYkuyenu4ZgxZ7PUWXt9d19HNB5CaQXt5U",
      "type": [
        "VerifiableCredential"
      ],
      "credentialSubject": [
        {
          "id": "did:example:d23dd687a7dc6787646f2eb98d0"
        }
      ],
      "issuer": "did:infra:01:5GpEYnXBoLgvzyWe4Defitp5UV25xZUiUCJM2xNgkDXkM4NW",
      "issuanceDate": "2023-04-24T06:08:03.039Z",
      "proof": {
        "type": "Ed25519Signature2018",
        "proofPurpose": "assertionMethod",
        "verificationMethod": "did:infra:01:5GpEYnXBoLgvzyWe4Defitp5UV25xZUiUCJM2xNgkDXkM4NW#keys-1",
        "created": "2024-04-03T01:13:18.220667Z",
        "jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..VZU_0mj3fD-Nrcq1Zu4r_tqOhQERfI8RMpPeDHX3dQkmTyvOG5AUFtgebrr-wS1RqHIRgvxqIBaSE51dHwUtBA"
      }
    }""";
    setState(() {
      data = InfraSS58DID.verifyCredential(credential) ? 'True' : 'False';
    });
  }

  void _issuePresentation() {
    String did =
        "did:infra:01:5GpEYnXBoLgvzyWe4Defitp5UV25xZUiUCJM2xNgkDXkM4NW";
    String privateKey =
        "8006aaa5985f1d72e916167bdcbc663232cef5823209b1246728f73137888170";
    String credential = """{
            "@context": [
              "https://www.w3.org/2018/credentials/v1"
            ],
            "id": "did:infra:01:5FDseiC76zPek2YYkuyenu4ZgxZ7PUWXt9d19HNB5CaQXt5U",
            "type": [
              "VerifiableCredential"
            ],
            "credentialSubject": [
              {
                "id": "did:example:d23dd687a7dc6787646f2eb98d0"
              }
            ],
            "issuer": "did:infra:01:5GpEYnXBoLgvzyWe4Defitp5UV25xZUiUCJM2xNgkDXkM4NW",
            "issuanceDate": "2023-04-24T06:08:03.039Z",
            "proof": {
              "type": "Ed25519Signature2018",
              "proofPurpose": "assertionMethod",
              "verificationMethod": "did:infra:01:5GpEYnXBoLgvzyWe4Defitp5UV25xZUiUCJM2xNgkDXkM4NW#keys-1",
              "created": "2024-04-03T01:13:18.220667Z",
              "jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..VZU_0mj3fD-Nrcq1Zu4r_tqOhQERfI8RMpPeDHX3dQkmTyvOG5AUFtgebrr-wS1RqHIRgvxqIBaSE51dHwUtBA"
            }
          }""";
    setState(() {
      data = InfraSS58DID.issuePresentation(did, credential, privateKey);
    });
  }

  void _verifyPresentation() {
    String credential = """{
        "@context": [
          "https://www.w3.org/2018/credentials/v1"
        ],
        "id": "did:infra:01:5F9myCAKW52XUU38Z4uhttmYYLoLFWe9AnEVpv1aGpx9Q3Bp",
        "type": "VerifiablePresentation",
        "verifiableCredential": {
          "@context": [
            "https://www.w3.org/2018/credentials/v1"
          ],
          "id": "did:infra:01:5FDseiC76zPek2YYkuyenu4ZgxZ7PUWXt9d19HNB5CaQXt5U",
          "type": [
            "VerifiableCredential"
          ],
          "credentialSubject": [
            {
              "id": "did:example:d23dd687a7dc6787646f2eb98d0"
            }
          ],
          "issuer": "did:infra:01:5GpEYnXBoLgvzyWe4Defitp5UV25xZUiUCJM2xNgkDXkM4NW",
          "issuanceDate": "2023-04-24T06:08:03.039Z",
          "proof": {
            "type": "Ed25519Signature2018",
            "proofPurpose": "assertionMethod",
            "verificationMethod": "did:infra:01:5GpEYnXBoLgvzyWe4Defitp5UV25xZUiUCJM2xNgkDXkM4NW#keys-1",
            "created": "2024-04-03T01:13:18.220667Z",
            "jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..VZU_0mj3fD-Nrcq1Zu4r_tqOhQERfI8RMpPeDHX3dQkmTyvOG5AUFtgebrr-wS1RqHIRgvxqIBaSE51dHwUtBA"
          }
        },
        "proof": {
          "type": "Ed25519Signature2018",
          "proofPurpose": "assertionMethod",
          "verificationMethod": "did:infra:01:5GpEYnXBoLgvzyWe4Defitp5UV25xZUiUCJM2xNgkDXkM4NW#keys-1",
          "created": "2024-04-03T01:16:09.837873Z",
          "jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..XMUnK1nLJI3jahunuS-ooEVWAKgN3VwiUc0cm2xiFNMdgnBqYi6-n-uPdpDJls6-7BXlLhR4W4nGlPrptQFTBA"
        },
        "holder": "did:infra:01:5GpEYnXBoLgvzyWe4Defitp5UV25xZUiUCJM2xNgkDXkM4NW"
      }""";
    setState(() {
      data = InfraSS58DID.verifyPresentation(credential) ? 'True' : 'False';
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
                onPressed: _generateSS58DID,
                child: const Text("generateSS58DID")),
            ElevatedButton(
                onPressed: _didToHexPublicKey,
                child: const Text("didToHexPublicKey")),
            ElevatedButton(
                onPressed: _ss58AddressToDID,
                child: const Text("ss58AddressToDID")),
            ElevatedButton(
                onPressed: _issueCredential,
                child: const Text("issueCredential")),
            ElevatedButton(
                onPressed: _verifyCredential,
                child: const Text("verifyCredential")),
            ElevatedButton(
                onPressed: _issuePresentation,
                child: const Text("issuePresentation")),
            ElevatedButton(
                onPressed: _verifyPresentation,
                child: const Text("verifyPresentation")),
            ElevatedButton(onPressed: _resolve, child: const Text("resolve")),
            Text(data)
          ],
        ),
      ),
    );
  }
}