didcomm 0.4.1

DIDComm for Rust
Documentation
use lazy_static::lazy_static;
use serde_json::json;

use crate::didcomm::did::{
    DIDCommMessagingService, DIDDoc, Service, ServiceKind, VerificationMaterial,
    VerificationMethod, VerificationMethodType,
};

lazy_static! {
    pub static ref CHARLIE_VERIFICATION_METHOD_KEY_AGREEM_X25519: VerificationMethod =
        VerificationMethod {
            id: "did:example:charlie#key-x25519-1".into(),
            controller: "did:example:charlie#key-x25519-1".into(),
            type_: VerificationMethodType::JsonWebKey2020,
            verification_material: VerificationMaterial::JWK {
                public_key_jwk: json!(
                {
                    "kty": "OKP",
                    "crv": "X25519",
                    "x": "nTiVFj7DChMsETDdxd5dIzLAJbSQ4j4UG6ZU1ogLNlw",
                })
            },
        };
    pub static ref CHARLIE_AUTH_METHOD_25519: VerificationMethod = VerificationMethod {
        id: "did:example:charlie#key-1".into(),
        controller: "did:example:charlie#key-1".into(),
        type_: VerificationMethodType::JsonWebKey2020,
        verification_material: VerificationMaterial::JWK {
            public_key_jwk: json!(
            {
                "kty": "OKP",
                "crv": "Ed25519",
                "x": "VDXDwuGKVq91zxU6q7__jLDUq8_C5cuxECgd-1feFTE",
            })
        },
    };
    pub static ref CHARLIE_DID_COMM_MESSAGING_SERVICE: DIDCommMessagingService =
        DIDCommMessagingService {
            uri: "did:example:mediator3".into(),
            accept: Some(vec!["didcomm/v2".into(), "didcomm/aip2;env=rfc587".into()]),
            routing_keys: vec![
                "did:example:mediator2#key-x25519-1".into(),
                "did:example:mediator1#key-x25519-1".into(),
            ],
        };
    pub static ref CHARLIE_SERVICE: Service = Service {
        id: "did:example:charlie#didcomm-1".into(),
        service_endpoint: ServiceKind::DIDCommMessaging {
            value: CHARLIE_DID_COMM_MESSAGING_SERVICE.clone()
        },
    };
    pub static ref CHARLIE_DID_DOC: DIDDoc = DIDDoc {
        id: "did:example:charlie".into(),
        authentication: vec!["did:example:charlie#key-1".into()],
        key_agreement: vec!["did:example:charlie#key-x25519-1".into()],
        service: vec![CHARLIE_SERVICE.clone()],
        verification_method: vec![
            CHARLIE_VERIFICATION_METHOD_KEY_AGREEM_X25519.clone(),
            CHARLIE_AUTH_METHOD_25519.clone(),
        ],
    };
}