summaryrefslogtreecommitdiffstats
path: root/comm/third_party/README.rnp
blob: f7b75e6bd1843c4d607a910e449cf84c1f13253e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
Directory ./rnp contains a copy of rnp which has been obtained from:
https://github.com/rnpgp/rnp

[tag v0.17.0]

If MZLA applied patches on top, the version number in file
third_party/rnp/src/lib/version.h will contain a suffix that lists
the upstream pull request IDs.

For licensing information, please refer to the included documentation.

Updates to this copy are managed by "mach vendor". The configuration file
is at rnp/moz.yaml.

    > cd comm/third_party/rnp

    # validate the YAML config file
    > mach vendor -v ./moz.yaml
    ./moz.yaml: OK

    # check for new upstream versions
    > mach vendor --check-for-update ./moz.yaml
    v0.17.0 2023-02-27T16:49:53+02:00

    # update to a new version
    > mach vendor -r v0.16.3 ./moz.yaml

    # If there are patches to apply in moz.yaml, the process is a little different
    > mach vendor ./moz.yaml --patch-mode none
    # followed by
    > mach vendor ./moz.yaml --patch-mode only


Build notes:

There are several configure options that can be added to mozconfig to control
how librnp is built.

--with-system-librnp
  Use system RNP (librnp) for OpenPGP support.
  This option will not build librnp at all. In order to provide OpenPGP support,
  librnp must be installed as a system package (RPM, DEB) and located where the
  dynamic loader will find it or copied separately into Thunderbird's application
  directory.

--with-system-jsonc
  Use system JSON-C for librnp (located with pkgconfig)
  Build librnp from the in-tree sources, but link with a system-installed
  libjson-c. Build flags are determined with Pkg-config/pkgconf.

--with-system-bz2[=prefix]
  Use system Bzip2 for librnp (pkgconfig/given prefix)
  Build librnp from in-tree sources, link with a system libbz2.
  This option does accept a prefix path (such as --with-system-bz2=/usr/local).
  (Bzip2 itself does not provide a pkgconfig file. Some Linux distributions
  include their own so the build system will look for one.)

--with-system-zlib
  Link librnp to a system zlib. Pkgconfig only.

--with-librnp-backend=(botan|openssl) **
  ** "openssl" is only supported when targeting Linux.

  This option allows building librnp with the OpenSSL backend. When not provided,
  it defaults to "botan".
  When set to "openssl", OpenSSL will be located via Pkgconfig.

--with-system-botan
  Link librnp to a system libbotan. Pkgconfig only. Note that it is not necessary
  to also set "--with-librnp-backend=botan".

--with-openssl=prefix (Linux only)
  Used with "--with-librnp-backend=openssl" to use OpenSSL installed at "prefix"
  instead of one provided by Pkgconfig. Ex: --with-openssl=/usr/openssl-3


OpenSSL notes:

Only Linux targets are supported.

OpenSSL 1.1.1 and OpenSSL 3.0.x are supported. The version is checked during
configure as RNP has slightly different code paths for 3.x.

The OpenSSL backend has some limitations compared to Botan. The following
features are disabled:
TWOFISH, BRAINPOOL