GithubHelp home page GithubHelp logo

did's Introduction

DID

Build Status

This is a Rust crate for working with DID documents as defined in the Decentralized Identifier Spec.

This crate currently supports two functions: parsing and verifying DID URIs and DID Documents. It does not handle DID method specs which are more specific to a network or context.

The namespace is did_uri with top level re-exports of Uri, Document, DidError, DidErrorKind.

Example of parsing a DID Uri:

use did_doc::Uri;


fn main() {
    //Valid DID URI
    let did = Uri::from_str("did:git:akjsdhgaksdjhgasdkgh").unwrap();
    
    //Invalid DID URI
    let res = Uri::from_str("did:git:");
    assert!(res.is_err());

    //Convert back to string
    let did_str = did.to_string();
}

Example of parsing a DID Document:

use did_doc::{
    fields::{PublicKeyEncoding, PublicKeyType},
    Document
};

fn main() {
    let jstr = r#"
    {
        "@context": "https://w3id.org/did/v1",
        "id": "did:example:123456789abcdefghi"
    }
    "#;

    //Valid did document;
    let doc = Document::from_str(&jstr).unwrap();    

    assert_eq!(doc.context().len(), 1);
    assert_eq!(doc.subject(), "did:example:123456789abcdefghi");
    assert_eq!(doc.public_key().len(), 0);
    assert_eq!(doc.authentication().len(), 0);
    assert_eq!(doc.service().len(), 0);
}

did's People

Contributors

mikelodder7 avatar dhuseby avatar

Stargazers

fifteen42 avatar

Watchers

James Cloos avatar

Forkers

mikelodder7

did's Issues

[RFC] DidUri improvements

@mikelodder7 I like what you've done with DidUri so far. The validation is solid. However, I think we should create a trait called Did that has functions for accessing the parts of a DID string. Maybe even have traits for DidQuery and DidFragment and DidParams?

Here's why I want to make a Did trait. We can then have specific implementations for the different Did methods. I could impl Did for DidGit for instance and then I could also add functions that return libgit2 types along with the functions in the Did trait. The DidGit implementations for the DidQuery, DidFragment and DidParams also mean specialized things in the DidGit method context. The impl DidParams for DidGitParams will support the interface but also be able to return libgit2 references to specific commits in a repo and other things.

The current DidUri is a good first step, but I think making it a trait with specialized implementations for each DID method is in order.

Thoughts?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.