OpenPGP/GnuPG web-of-trust (WOT)
===
This repository is dedicated to the OpenPGP/GnuPG web-of-trust. It currently contains one single
project/library: `org.bouncycastle.openpgp.wot`
Its feature set is in short **full compatibility with GnuPG's trust database**. In detail, this means:
1) Read GnuPG's `trustdb.gpg` (usually located in `~/.gnupg/`).
a) Read the (previously calculated) validity of a key.
b) Read key properties like "disabled" or "owner-trust".
2) Write GnuPG's `trustdb.gpg`.
a) Set a key's "owner-trust".
b) Set a key's "disabled" flag.
c) Recalculate the validity of all public-keys.
d) Create a new, fresh `trustdb.gpg`.
3) It contains a key registry and related data structure used to *efficiently* look up keys and their relations. This is needed by the
validity-calculation, but may be useful for other people, too.
a) Look up a key by its ID.
b) Look up a key by its fingerprint.
c) Look up all keys that have been signed (a.k.a. certified) by a certain key (identified by ID or fingerprint).
d) Get sub-keys of a master-key.
e) Get master-key of a sub-key.
f) Get certifications of a certain user-ID.
4) File abstraction: Both the trust-db and the key-registry can read/write data from/to any location. There's
already an implementation for `java.io.File` (for reading/writing GnuPG's data in `~/.gnupg/`), but people who
want to store key-rings and trust in a database might easily implement other persistence.
The following features are still missing:
1) Support trust models other than 'PGP'.
2) Remove entries from the `trustdb.gpg` - e.g. when a key was removed from the key ring(s).
3) Read configuration settings like "how many marginals are needed" from GnuPG (or any other?) configuration file.
I currently do *not* plan to implement these missing features, because they are IMHO not important at all. But
contributions from other developers are highly appreciated.
See also: [issue bc-java#119](https://github.com/bcgit/bc-java/pull/119/)
Gradle
===
Add this to your `build.gradle` to use this library:
dependencies {
compile group: 'org.bouncycastle', name: 'org.bouncycastle.openpgp.wot' , version: '1.56.1'
}
repositories {
maven {
url 'https://codewizards.co/maven/release'
}
maven {
url 'https://codewizards.co/maven/snapshot'
}
}
Of course, you only need the "release"-repository and can omit the "snapshot"-repo, if you do *not* want
to include a "-SNAPSHOT"-version.
Maven
===
Add this to your `pom.xml` to use this library:
org.bouncycastle
org.bouncycastle.openpgp.wot
1.56.1
subshare
https://codewizards.co/maven/release
true
false
subshare
https://codewizards.co/maven/snapshot
false
true
Like already mentioned for Gradle above: You can omit the "snapshot" repository, if you do *not* want to
include a "-SNAPSHOT"-version in your project.
Jenkins + manual download
===
The project is built [by our Jenkins here](https://codewizards.co/jenkins/job/org.bouncycastle.openpgp.wot/)
and the library can be manually downloaded from it, too. It is however urgently recommended to use a modern build
tool like Gradle or Maven.