Hi,
I just tried installing Sequoia on an Ubuntu 18.04 by following the instructions on https://gitlab.com/sequoia-pgp/sequoia
% git clone https://gitlab.com/sequoia-pgp/sequoia.git % git checkout v0.5.0
Did all the apt installs and double checked that I have the necessary versions of the critical components:
% rustc --version rustc 1.31.0
% dpkg -l nettle-dev
Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Vollständig Löschen/Halten | Status=Nicht/Installiert/Config/U=Entpackt/halb konFiguriert/ Halb installiert/Trigger erWartet/Trigger anhängig |/ Fehler?=(kein)/R=Neuinstallation notwendig (Status, Fehler: GROSS=schlecht) ||/ Name Version Architektur Beschreibung +++-==============================================-============================-============================-================================================================================================== ii nettle-dev:amd64 3.4.1-1 amd64 low level cryptographic library (development files)
But then:
% make
CARGO_TARGET_DIR=/home/jan/Projekte/sequoia/target cargo build --all Compiling docopt v1.1.0
Compiling sequoia-ffi-macros v0.5.0 (/home/jan/Projekte/sequoia/ffi-macros)
error[E0658]: imports can only refer to extern crate names passed with `--extern` on stable channel (see issue #53130)
--> /home/jan/.cargo/registry/src/github.com-1ecc6299db9ec823/docopt-1.1.0/src/parse.rs:48:5
|
48 | use regex;
| ^^^^^
|
::: /home/jan/.cargo/registry/src/github.com-1ecc6299db9ec823/docopt-1.1.0/src/lib.rs:196:1
|
196 | / macro_rules! regex(
197 | | ($s:expr) => (regex::Regex::new($s).unwrap());
198 | | );
| |__- not an extern crate passed with `--extern`
|
And many more very similar errors all complaining about the same problem in different locations.
What's going wrong here? Any idea how to fix this?
Cheers, Jan
Hi Jan,
Thanks for the bug report. We tried building with rustc 1.31, and ran into the same problem. It appears that that version is no longer adequate. Currently, we're using 1.32 and 1.33. Please try one of those, if possible. Sorry for the inconvenience. We'll update the README shortly.
:) Neal
On Thu, 11 Apr 2019 00:03:13 +0200, Jan Girlich wrote:
Hi,
I just tried installing Sequoia on an Ubuntu 18.04 by following the instructions on https://gitlab.com/sequoia-pgp/sequoia
% git clone https://gitlab.com/sequoia-pgp/sequoia.git % git checkout v0.5.0
Did all the apt installs and double checked that I have the necessary versions of the critical components:
% rustc --version rustc 1.31.0
% dpkg -l nettle-dev
Gewünscht=Unbekannt/Installieren/R=Entfernen/P=Vollständig Löschen/Halten | Status=Nicht/Installiert/Config/U=Entpackt/halb konFiguriert/ Halb installiert/Trigger erWartet/Trigger anhängig |/ Fehler?=(kein)/R=Neuinstallation notwendig (Status, Fehler: GROSS=schlecht) ||/ Name Version Architektur Beschreibung +++-==============================================-============================-============================-================================================================================================== ii nettle-dev:amd64 3.4.1-1 amd64 low level cryptographic library (development files)
But then:
% make
CARGO_TARGET_DIR=/home/jan/Projekte/sequoia/target cargo build --all Compiling docopt v1.1.0
Compiling sequoia-ffi-macros v0.5.0 (/home/jan/Projekte/sequoia/ffi-macros)
error[E0658]: imports can only refer to extern crate names passed with `--extern` on stable channel (see issue #53130)
--> /home/jan/.cargo/registry/src/github.com-1ecc6299db9ec823/docopt-1.1.0/src/parse.rs:48:5
|
48 | use regex;
| ^^^^^ |
::: /home/jan/.cargo/registry/src/github.com-1ecc6299db9ec823/docopt-1.1.0/src/lib.rs:196:1
|
196 | / macro_rules! regex(
197 | | ($s:expr) => (regex::Regex::new($s).unwrap());
198 | | );
| |__- not an extern crate passed with `--extern` |
And many more very similar errors all complaining about the same problem in different locations.
What's going wrong here? Any idea how to fix this?
Cheers, Jan
Hi Neal,
Am 11.04.19 um 11:47 schrieb Neal H. Walfield:
Thanks for the bug report. We tried building with rustc 1.31, and ran into the same problem. It appears that that version is no longer adequate. Currently, we're using 1.32 and 1.33. Please try one of those, if possible. Sorry for the inconvenience. We'll update the README shortly.
oh, well, then it's probably no compiling sequoia for me :(
Getting rustc 1.32.0 installed on current Ubuntu LTS would mean to upgrade libc and that'll just end in mayhem. My goal is to get some pgp for e-mails done (signing, encrypting) on somewhat stable Debian or Ubuntu.
Are there any pre-compiled .debs you're aware of?
Cheers, Jan
Hi Jan,
At Thu, 11 Apr 2019 18:53:02 +0200, Jan Girlich wrote:
Am 11.04.19 um 11:47 schrieb Neal H. Walfield:
Thanks for the bug report. We tried building with rustc 1.31, and ran into the same problem. It appears that that version is no longer adequate. Currently, we're using 1.32 and 1.33. Please try one of those, if possible. Sorry for the inconvenience. We'll update the README shortly.
oh, well, then it's probably no compiling sequoia for me :(
Getting rustc 1.32.0 installed on current Ubuntu LTS would mean to upgrade libc and that'll just end in mayhem. My goal is to get some pgp for e-mails done (signing, encrypting) on somewhat stable Debian or Ubuntu.
At least on Debian Stable, you only need to pull in a few leaf packages from testing (rustc, cargo, nettle, ...). I don't have any experience with Sequoia on Ubuntu, sorry.
As for directly using Sequoia as an end user: it's still a bit too early for that. But, Sequoia is far enough that integration into existing programs makes sense.
Are there any pre-compiled .debs you're aware of?
None that I'm aware of, sorry.
:) Neal
Hi again,
Am 11.04.19 um 19:01 schrieb Neal H. Walfield:
At Thu, 11 Apr 2019 18:53:02 +0200, Jan Girlich wrote:
Am 11.04.19 um 11:47 schrieb Neal H. Walfield:
Thanks for the bug report. We tried building with rustc 1.31, and ran into the same problem. It appears that that version is no longer adequate. Currently, we're using 1.32 and 1.33. Please try one of those, if possible. Sorry for the inconvenience. We'll update the README shortly.
oh, well, then it's probably no compiling sequoia for me :(
Getting rustc 1.32.0 installed on current Ubuntu LTS would mean to upgrade libc and that'll just end in mayhem. My goal is to get some pgp for e-mails done (signing, encrypting) on somewhat stable Debian or Ubuntu.
At least on Debian Stable, you only need to pull in a few leaf packages from testing (rustc, cargo, nettle, ...). I don't have any experience with Sequoia on Ubuntu, sorry.
I researched a little and learned how to install Rust via their own installer. That works without upgrading libc.
Now I got past the previous compiling error, but am running into another one:
make -Copenpgp-ffi examples make[1]: Entering directory '/home/jan/Projekte/sequoia/openpgp-ffi' make -Cexamples make[2]: Entering directory '/home/jan/Projekte/sequoia/openpgp-ffi/examples' mkdir -p /home/jan/Projekte/sequoia/target/debug/c-examples/openpgp-ffi cc -I../include -O0 -g -Wall -Werror -L/home/jan/Projekte/sequoia/target/debug -lsequoia_openpgp_ffi -o "/home/jan/Projekte/sequoia/target/debug/c-examples/openpgp-ffi/example" "example.c" /tmp/cck9xmO7.o: In function `main': /home/jan/Projekte/sequoia/openpgp-ffi/examples/example.c:37: undefined reference to `pgp_tpk_from_bytes' /home/jan/Projekte/sequoia/openpgp-ffi/examples/example.c:39: undefined reference to `pgp_error_to_string' /home/jan/Projekte/sequoia/openpgp-ffi/examples/example.c:41: undefined reference to `pgp_tpk_debug' /home/jan/Projekte/sequoia/openpgp-ffi/examples/example.c:45: undefined reference to `pgp_tpk_free' collect2: error: ld returned 1 exit status Makefile:29: recipe for target '/home/jan/Projekte/sequoia/target/debug/c-examples/openpgp-ffi/example' failed make[2]: *** [/home/jan/Projekte/sequoia/target/debug/c-examples/openpgp-ffi/example] Error 1 make[2]: Leaving directory '/home/jan/Projekte/sequoia/openpgp-ffi/examples' Makefile:58: recipe for target 'examples' failed make[1]: *** [examples] Error 2 make[1]: Leaving directory '/home/jan/Projekte/sequoia/openpgp-ffi' Makefile:59: recipe for target 'examples' failed make: *** [examples] Error 2
I have the packets for the FFI installed:
sudo apt install python3-dev python3-setuptools python3-cffi python3-pytest
Any certain minimum versions I need to have for these?
As for directly using Sequoia as an end user: it's still a bit too early for that. But, Sequoia is far enough that integration into existing programs makes sense.
My intention is to use the python bindings and integrate it in a software, which sends e-mails.
Cheers, Jan
On Thu, 11 Apr 2019 22:14:17 +0200, Jan Girlich wrote:
Am 11.04.19 um 19:01 schrieb Neal H. Walfield:
At Thu, 11 Apr 2019 18:53:02 +0200, Jan Girlich wrote:
Am 11.04.19 um 11:47 schrieb Neal H. Walfield:
Thanks for the bug report. We tried building with rustc 1.31, and ran into the same problem. It appears that that version is no longer adequate. Currently, we're using 1.32 and 1.33. Please try one of those, if possible. Sorry for the inconvenience. We'll update the README shortly.
oh, well, then it's probably no compiling sequoia for me :(
Getting rustc 1.32.0 installed on current Ubuntu LTS would mean to upgrade libc and that'll just end in mayhem. My goal is to get some pgp for e-mails done (signing, encrypting) on somewhat stable Debian or Ubuntu.
At least on Debian Stable, you only need to pull in a few leaf packages from testing (rustc, cargo, nettle, ...). I don't have any experience with Sequoia on Ubuntu, sorry.
I researched a little and learned how to install Rust via their own installer. That works without upgrading libc.
Great.
Now I got past the previous compiling error, but am running into another one:
make -Copenpgp-ffi examples
Can you try just running make from the top-level directory? Perhaps there are some dependencies that are not being built or some variables that are not being set.
As for directly using Sequoia as an end user: it's still a bit too early for that. But, Sequoia is far enough that integration into existing programs makes sense.
My intention is to use the python bindings and integrate it in a software, which sends e-mails.
Neat! We'll be happy to help with any difficulties you might encounter or answer any questions you might have.
Unfortunately, the Python bindings are still in a very early stage of development. The Rust API is very complete and pretty stable at this point, and the C API, although it doesn't yet expose many of the more esoteric OpenPGP features that we support, is quite usable (in fact, it's already being used by the pep engine).
:) Neal
Am 11.04.19 um 22:24 schrieb Neal H. Walfield:
On Thu, 11 Apr 2019 22:14:17 +0200, Jan Girlich wrote:
Am 11.04.19 um 19:01 schrieb Neal H. Walfield:
At Thu, 11 Apr 2019 18:53:02 +0200, Jan Girlich wrote:
Am 11.04.19 um 11:47 schrieb Neal H. Walfield:
Thanks for the bug report. We tried building with rustc 1.31, and ran into the same problem. It appears that that version is no longer adequate. Currently, we're using 1.32 and 1.33. Please try one of those, if possible. Sorry for the inconvenience. We'll update the README shortly.
oh, well, then it's probably no compiling sequoia for me :(
Getting rustc 1.32.0 installed on current Ubuntu LTS would mean to upgrade libc and that'll just end in mayhem. My goal is to get some pgp for e-mails done (signing, encrypting) on somewhat stable Debian or Ubuntu.
At least on Debian Stable, you only need to pull in a few leaf packages from testing (rustc, cargo, nettle, ...). I don't have any experience with Sequoia on Ubuntu, sorry.
I researched a little and learned how to install Rust via their own installer. That works without upgrading libc.
Great.
Now I got past the previous compiling error, but am running into another one:
make -Copenpgp-ffi examples
Can you try just running make from the top-level directory? Perhaps there are some dependencies that are not being built or some variables that are not being set.
that was run from the top-level directory. This is just the call from where I started copying the output.
Unfortunately, the Python bindings are still in a very early stage of development. The Rust API is very complete and pretty stable at this point, and the C API, although it doesn't yet expose many of the more esoteric OpenPGP features that we support, is quite usable (in fact, it's already being used by the pep engine).
Well, it's not like the gpg python bindings are working well for me either...
Cheers, Jan
At Thu, 11 Apr 2019 22:39:53 +0200, Jan Girlich wrote:
make -Copenpgp-ffi examples
Can you try just running make from the top-level directory? Perhaps there are some dependencies that are not being built or some variables that are not being set.
that was run from the top-level directory. This is just the call from where I started copying the output.
Thanks for clarifying.
make -Copenpgp-ffi examples make[1]: Entering directory '/home/jan/Projekte/sequoia/openpgp-ffi' make -Cexamples make[2]: Entering directory '/home/jan/Projekte/sequoia/openpgp-ffi/examples' mkdir -p /home/jan/Projekte/sequoia/target/debug/c-examples/openpgp-ffi cc -I../include -O0 -g -Wall -Werror -L/home/jan/Projekte/sequoia/target/debug -lsequoia_openpgp_ffi -o "/home/jan/Projekte/sequoia/target/debug/c-examples/openpgp-ffi/example" "example.c" /tmp/cck9xmO7.o: In function `main': /home/jan/Projekte/sequoia/openpgp-ffi/examples/example.c:37: undefined reference to `pgp_tpk_from_bytes' /home/jan/Projekte/sequoia/openpgp-ffi/examples/example.c:39: undefined reference to `pgp_error_to_string' /home/jan/Projekte/sequoia/openpgp-ffi/examples/example.c:41: undefined reference to `pgp_tpk_debug' /home/jan/Projekte/sequoia/openpgp-ffi/examples/example.c:45: undefined reference to `pgp_tpk_free' collect2: error: ld returned 1 exit status Makefile:29: recipe for target '/home/jan/Projekte/sequoia/target/debug/c-examples/openpgp-ffi/example' failed
Can you please confirm that /home/jan/Projekte/sequoia/target/debug contains libsequoia_openpgp_ffi.so.
Unfortunately, the Python bindings are still in a very early stage of development. The Rust API is very complete and pretty stable at this point, and the C API, although it doesn't yet expose many of the more esoteric OpenPGP features that we support, is quite usable (in fact, it's already being used by the pep engine).
Well, it's not like the gpg python bindings are working well for me either...
:/
Am 11.04.19 um 22:47 schrieb Neal H. Walfield:
At Thu, 11 Apr 2019 22:39:53 +0200, Jan Girlich wrote:
make -Copenpgp-ffi examples make[1]: Entering directory '/home/jan/Projekte/sequoia/openpgp-ffi' make -Cexamples make[2]: Entering directory '/home/jan/Projekte/sequoia/openpgp-ffi/examples' mkdir -p /home/jan/Projekte/sequoia/target/debug/c-examples/openpgp-ffi cc -I../include -O0 -g -Wall -Werror -L/home/jan/Projekte/sequoia/target/debug -lsequoia_openpgp_ffi -o "/home/jan/Projekte/sequoia/target/debug/c-examples/openpgp-ffi/example" "example.c" /tmp/cck9xmO7.o: In function `main': /home/jan/Projekte/sequoia/openpgp-ffi/examples/example.c:37: undefined reference to `pgp_tpk_from_bytes' /home/jan/Projekte/sequoia/openpgp-ffi/examples/example.c:39: undefined reference to `pgp_error_to_string' /home/jan/Projekte/sequoia/openpgp-ffi/examples/example.c:41: undefined reference to `pgp_tpk_debug' /home/jan/Projekte/sequoia/openpgp-ffi/examples/example.c:45: undefined reference to `pgp_tpk_free' collect2: error: ld returned 1 exit status Makefile:29: recipe for target '/home/jan/Projekte/sequoia/target/debug/c-examples/openpgp-ffi/example' failed
Can you please confirm that /home/jan/Projekte/sequoia/target/debug contains libsequoia_openpgp_ffi.so.
Yes, it does:
% ls /home/jan/Projekte/sequoia/target/debug/libsequoia_openpgp_ffi.so /home/jan/Projekte/sequoia/target/debug/libsequoia_openpgp_ffi.so*
Jan
Am 11.04.19 um 22:49 schrieb Jan Girlich:
Am 11.04.19 um 22:47 schrieb Neal H. Walfield:
At Thu, 11 Apr 2019 22:39:53 +0200, Jan Girlich wrote:
make -Copenpgp-ffi examples make[1]: Entering directory '/home/jan/Projekte/sequoia/openpgp-ffi' make -Cexamples make[2]: Entering directory '/home/jan/Projekte/sequoia/openpgp-ffi/examples' mkdir -p /home/jan/Projekte/sequoia/target/debug/c-examples/openpgp-ffi cc -I../include -O0 -g -Wall -Werror -L/home/jan/Projekte/sequoia/target/debug -lsequoia_openpgp_ffi -o "/home/jan/Projekte/sequoia/target/debug/c-examples/openpgp-ffi/example" "example.c" /tmp/cck9xmO7.o: In function `main': /home/jan/Projekte/sequoia/openpgp-ffi/examples/example.c:37: undefined reference to `pgp_tpk_from_bytes' /home/jan/Projekte/sequoia/openpgp-ffi/examples/example.c:39: undefined reference to `pgp_error_to_string' /home/jan/Projekte/sequoia/openpgp-ffi/examples/example.c:41: undefined reference to `pgp_tpk_debug' /home/jan/Projekte/sequoia/openpgp-ffi/examples/example.c:45: undefined reference to `pgp_tpk_free' collect2: error: ld returned 1 exit status Makefile:29: recipe for target '/home/jan/Projekte/sequoia/target/debug/c-examples/openpgp-ffi/example' failed
Can you please confirm that /home/jan/Projekte/sequoia/target/debug contains libsequoia_openpgp_ffi.so.
Yes, it does:
% ls /home/jan/Projekte/sequoia/target/debug/libsequoia_openpgp_ffi.so /home/jan/Projekte/sequoia/target/debug/libsequoia_openpgp_ffi.so*
hm, this is really ineresting. I confirmed it's the following compiler call, that's failing:
cc -I../include -O0 -g -Wall -Werror -L/home/jan/Projekte/sequoia/target/debug -lsequoia_openpgp_ffi -o "/home/jan/Projekte/sequoia/target/debug/c-examples/openpgp-ffi/example" "example.c"
I can confirm that it finds the included openpgp.h file in ../includes. The -L path is correct and the libsequoia_openpgp_ffi.so is found as well.
The lib is also compiled with C and exports the requested symbol:
% nm -D --defined-only ../../target/debug/libsequoia_openpgp_ffi.so | grep "pgp_tpk_from_bytes" 0000000000106430 T pgp_tpk_from_bytes
(No mangled function names here)
I don't understand why it's saying the reference would be undefined.
Any other idea what to check?
Cheers, Jan
On Fri, 12 Apr 2019 14:38:02 +0200, Jan Girlich wrote:
Can you please confirm that /home/jan/Projekte/sequoia/target/debug contains libsequoia_openpgp_ffi.so.
Yes, it does:
% ls /home/jan/Projekte/sequoia/target/debug/libsequoia_openpgp_ffi.so /home/jan/Projekte/sequoia/target/debug/libsequoia_openpgp_ffi.so*
hm, this is really ineresting. I confirmed it's the following compiler call, that's failing:
cc -I../include -O0 -g -Wall -Werror -L/home/jan/Projekte/sequoia/target/debug -lsequoia_openpgp_ffi -o "/home/jan/Projekte/sequoia/target/debug/c-examples/openpgp-ffi/example" "example.c"
I can confirm that it finds the included openpgp.h file in ../includes. The -L path is correct and the libsequoia_openpgp_ffi.so is found as well.
The lib is also compiled with C and exports the requested symbol:
% nm -D --defined-only ../../target/debug/libsequoia_openpgp_ffi.so | grep "pgp_tpk_from_bytes" 0000000000106430 T pgp_tpk_from_bytes
(No mangled function names here)
I don't understand why it's saying the reference would be undefined.
Any other idea what to check?
That's very strange and not something I've encountered :/. The only think I can think of is some toolchain issue.
You mentioned that you want to try Sequoia on Ubuntu or Debian. We at least know that Sequoia works on Debian. Perhaps try it there?
Please keep us up to date.
Thanks,
Neal
Hi Neal,
Am 12.04.19 um 15:41 schrieb Neal H. Walfield:
You mentioned that you want to try Sequoia on Ubuntu or Debian. We at least know that Sequoia works on Debian. Perhaps try it there?
I set up a Debian Testing in a VM and there it compiled just fine.
I guess the conclusion of this is:
1. Sequoia has some unknown dependencies or requirements, which only allow it to run it on pretty bleeding edge systems.
2. I probably won't use it until it is easily installable on most systems. But I'll play around with it's python bindings for a bit.
A few questions about using Sequoia and specifially the python bindings:
Let's say I want to encrypt an e-mail body. I see the ArmoredWriter I understand I want to use to write the encrypted body with, but I don't see any Encrypt method or similar as counter part to the Decrypt method, analogous to the python example. How do I get some text encrypted for several public keys?
Same spiel for a signature: Is the functionality for creating signatures exposed in Python yet?
I want to export a public key to a file or buffer (Actually for implementing Autocrypt, but I see this crate is not yet exposed via python bindings). Is TPK.serialize() the way to go?
A Store is similar to the keyring in gnupg, but it's more flexible as in I just name a new one and create it with Store.open(ctx, name)? And then I use it for example to get keys from the network? How does for example PacketParser.decrypt(ctx, key) know which key to use, when the class Key is just an ID or fingerprint? How does it do the connection to the Store I actually have that key inside?
Thanks, Jan