DIDComm是一個基於 W3C DID (去中心化 ID )的通信協議。如果一個服務器想和另一個實現了 DIDComm 的服務器通信,它會需要在/.well-known/did.json 提供一個 DID 文檔,文檔裏包含了公鑰以及 DIDComm 的 service endpoint 。我的 demo 服務器的 DID 文檔長這樣: https://dc.mbkr.ca/.well-known/did.json 。
擁有了這個文檔之後,did:web:dc.mbkr.ca 這個 DID 就會對應我的服務器,你只需要這個 id 就可以給我發信息,發信方會根據這個 id 解析到 DID 文檔,獲取公鑰構建信息,並推到 service endpoint 上。
我也做了一個公開的 demo 服務器,https://dc-public.mbkr.ca/ ,你可以用public做密碼登錄。
Demo 的 repo: https://github.com/onyxblade/didcomm-rails-demo
實現上,我本來是讓 AI 生成了一個 Ruby 版本的 DIDComm 實現,不過密碼學的內容很多,我最後還是決定直接用didcomm-rust這個標準的參考實現。這個 Rust 的實現可以輸出 wasm ,但 wasmtime-rb 好像還沒成熟到能直接用,所以最終我做了一個 HTTP 服務器didcomm-http,來把 wasm 接口包裝成 HTTP API 。
Happy Hacking!