This library consists of Scala and Scala-JS components implementing the IETF's HTTP-Bis HTTP Message Signatures.
See also the web service written in Python at httpsig.org
The first version of this spec appeared as draftcavage-http-signatures in 2013. After which followed 12 more versions. The IETF HTTP Bis WG then took that work over improving it a lot.
Http Signatures can be used by clients and by servers, to sign messages. This can be used in authentication protocols such as the in development Solid HttpSig.
Older versions of the spec have been used by Amazon Web Services and Mastodon, among others.
see the Amazon Web Services, Signing HTTP spec.
Version 06 of that spec is used by Mastodon. See
This repository contains the following projects:
The architecture of the third version of this library was worked out n the ietfSig README.md.
Note: currently we only have implemented request signing and verification. That is most of the work needed for response verification, so it should not take much time to get done.
Look at examples in the test suite.
Another place to look is for applications using the library. See for example:
(There may be a lag between the time this library is released and the time they use the latest version)
httpSig
compiles to Java and JavaScript.
Testing in JS environments is done using Selenium.
This requires having a selenium driver.
On MacOs this is installed (see Stack Overflow) using brew install selenium-server
. But one still requires Chrome and Firefox drivers to be installed after that.
Inside of sbt one can then run tests for Firefox only with
> set Global / useJSEnv := JSEnv.Firefox
> test
Inside of sbt one can then run tests for Chrome only with
> set Global / useJSEnv := JSEnv.Chrome
> test
NodeJS is the default, but that won't run any tests in this case as we have not implemented encryption for NodeJS in bobcats yet.
Artifacts are released in the Sonatype net.bblfish.crypto snapshot repository.
This work was made possible by the generous EU grant from nlnet for the Solid Control Project and for Solid Wallet That last will go through 2023.
If you wish to have the library run on a specific client or server environment, please contact henry.story@co-operating.systems or leave issues in the Issue database.