diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b28cd84..eebb07b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -44,14 +44,15 @@ before_script: stage: check script: - cargo check --verbose - - cargo check --no-default-features --features send2 --verbose - - cargo check --no-default-features --features send3 --verbose - - cargo check --no-default-features --features send2,send3 --verbose - - cargo check --no-default-features --features send2,send3,archive --verbose - - cargo check --no-default-features --features send2,send3,history --verbose - - cargo check --no-default-features --features send2,send3,qrcode --verbose - - cargo check --no-default-features --features send2,send3,urlshorten --verbose - - cargo check --no-default-features --features send2,send3,infer-command --verbose + - cargo check --no-default-features --features send3,crypto-ring --verbose + - cargo check --no-default-features --features send2,crypto-openssl --verbose + - cargo check --no-default-features --features send3,crypto-openssl --verbose + - cargo check --no-default-features --features send2,send3,crypto-openssl --verbose + - cargo check --no-default-features --features send3,crypto-ring,archive --verbose + - cargo check --no-default-features --features send3,crypto-ring,history --verbose + - cargo check --no-default-features --features send3,crypto-ring,qrcode --verbose + - cargo check --no-default-features --features send3,crypto-ring,urlshorten --verbose + - cargo check --no-default-features --features send3,crypto-ring,infer-command --verbose - cargo check --features no-color --verbose check-stable: <<: *check-base diff --git a/.travis.yml b/.travis.yml index 0343d4a..ecfb02e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,13 +10,6 @@ stages: - name: release if: tag =~ ^v(\d+\.)*\d+$ -# Explicitly install and update OpenSSL dependencies -addons: - homebrew: - packages: - - openssl@1.1 - update: true - jobs: include: - stage: release diff --git a/Cargo.lock b/Cargo.lock index ae69038..350dfb3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -351,6 +351,14 @@ dependencies = [ "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "ct-logs" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "sct 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "darling" version = "0.10.2" @@ -504,7 +512,7 @@ dependencies = [ "derive_builder 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "directories 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "failure 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", - "ffsend-api 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "ffsend-api 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "fs2 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "open 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -528,7 +536,7 @@ dependencies = [ [[package]] name = "ffsend-api" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "arrayref 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", @@ -546,6 +554,7 @@ dependencies = [ "openssl 0.10.29 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "reqwest 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.16.13 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", "serde_derive 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.53 (registry+https://github.com/rust-lang/crates.io-index)", @@ -636,6 +645,17 @@ name = "futures-io" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "futures-macro" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro-hack 0.5.15 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.22 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "futures-sink" version = "0.3.5" @@ -656,10 +676,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures-io 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-macro 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "futures-task 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "pin-project 0.4.16 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-hack 0.5.15 (registry+https://github.com/rust-lang/crates.io-index)", + "proc-macro-nested 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -795,6 +818,23 @@ dependencies = [ "want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "hyper-rustls" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bytes 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", + "ct-logs 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "rustls 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rustls-native-certs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-rustls 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "hyper-tls" version = "0.4.1" @@ -1248,6 +1288,11 @@ name = "proc-macro-hack" version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "proc-macro-nested" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "proc-macro2" version = "1.0.13" @@ -1490,6 +1535,7 @@ dependencies = [ "http 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "http-body 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "hyper 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper-rustls 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)", "hyper-tls 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", "js-sys 0.3.39 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1499,19 +1545,36 @@ dependencies = [ "native-tls 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "pin-project-lite 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rustls 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.110 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.53 (registry+https://github.com/rust-lang/crates.io-index)", "serde_urlencoded 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.43 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-rustls 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-tls 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "wasm-bindgen 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", "wasm-bindgen-futures 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", "web-sys 0.3.39 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki-roots 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)", "winreg 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "ring" +version = "0.16.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cc 1.0.53 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.70 (registry+https://github.com/rust-lang/crates.io-index)", + "once_cell 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "web-sys 0.3.39 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rpassword" version = "4.0.5" @@ -1545,6 +1608,29 @@ dependencies = [ "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rustls" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "base64 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ring 0.16.13 (registry+https://github.com/rust-lang/crates.io-index)", + "sct 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "rustls-native-certs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rustls 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", + "schannel 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "security-framework 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "ryu" version = "1.0.4" @@ -1569,6 +1655,15 @@ name = "scopeguard" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "sct" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ring 0.16.13 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "security-framework" version = "0.4.4" @@ -1695,6 +1790,11 @@ name = "smallvec" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "standback" version = "0.2.8" @@ -1950,6 +2050,17 @@ dependencies = [ "tokio-sync 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tokio-rustls" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rustls 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio 0.2.21 (registry+https://github.com/rust-lang/crates.io-index)", + "webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "tokio-sync" version = "0.1.8" @@ -2079,6 +2190,11 @@ name = "unicode-xid" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "url" version = "1.7.2" @@ -2219,6 +2335,23 @@ dependencies = [ "wasm-bindgen 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "webpki" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ring 0.16.13 (registry+https://github.com/rust-lang/crates.io-index)", + "untrusted 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "webpki-roots" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "websocket" version = "0.24.0" @@ -2384,6 +2517,7 @@ dependencies = [ "checksum crypto-mac 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" "checksum csv 1.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "00affe7f6ab566df61b4be3ce8cf16bc2576bca0963ceb0955e45d514bf9a279" "checksum csv-core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +"checksum ct-logs 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4d3686f5fa27dbc1d76c751300376e167c5a43387f44bb451fd1c24776e49113" "checksum darling 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" "checksum darling_core 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" "checksum darling_macro 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" @@ -2400,7 +2534,7 @@ dependencies = [ "checksum failure 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" "checksum failure_derive 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" "checksum fake-simd 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" -"checksum ffsend-api 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8022668eb4c4a14a01f5d4af0c4d39bab17c50b200c129c9183a4a6b0c8b72ae" +"checksum ffsend-api 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7c81d7bf24dc23e394a8692ef208c26c20411c01f398e354ac4d268c34196fc5" "checksum filetime 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "affc17579b132fc2461adf7c575cc6e8b134ebca52c51f5411388965227dc695" "checksum fnv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" @@ -2413,6 +2547,7 @@ dependencies = [ "checksum futures-channel 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5" "checksum futures-core 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399" "checksum futures-io 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "de27142b013a8e869c14957e6d2edeef89e97c289e69d042ee3a49acd8b51789" +"checksum futures-macro 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d0b5a30a4328ab5473878237c447333c093297bded83a4983d10f4deea240d39" "checksum futures-sink 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3f2032893cb734c7a05d85ce0cc8b8c4075278e93b24b66f9de99d6eb0fa8acc" "checksum futures-task 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "bdb66b5f09e22019b1ab0830f7785bcea8e7a42148683f99214f73f8ec21a626" "checksum futures-util 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "8764574ff08b701a084482c3c7031349104b07ac897393010494beaa18ce32c6" @@ -2428,6 +2563,7 @@ dependencies = [ "checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" "checksum hyper 0.10.16 (registry+https://github.com/rust-lang/crates.io-index)" = "0a0652d9a2609a968c14be1a9ea00bf4b1d64e2e1f53a1b51b6fff3a6e829273" "checksum hyper 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96816e1d921eca64d208a85aab4f7798455a8e34229ee5a88c935bdee1b78b14" +"checksum hyper-rustls 0.20.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac965ea399ec3a25ac7d13b8affd4b8f39325cca00858ddf5eb29b79e6b14b08" "checksum hyper-tls 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3adcd308402b9553630734e9c36b77a7e48b3821251ca2493e8cd596763aafaa" "checksum ident_case 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" @@ -2484,6 +2620,7 @@ dependencies = [ "checksum ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" "checksum prettytable-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0fd04b170004fa2daccf418a7f8253aaf033c27760b5f225889024cf66d7ac2e" "checksum proc-macro-hack 0.5.15 (registry+https://github.com/rust-lang/crates.io-index)" = "0d659fe7c6d27f25e9d80a1a094c223f5246f6a6596453e09d7229bf42750b63" +"checksum proc-macro-nested 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8e946095f9d3ed29ec38de908c22f95d9ac008e424c7bcae54c75a79c527c694" "checksum proc-macro2 1.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "53f5ffe53a6b28e37c9c1ce74893477864d64f74778a93a4beb43c8fa167f639" "checksum qr2term 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "840dd4cfb8e5c79316c869eb2b5151ef9b266235e4c8fd014f2c4ae6e1ed7fa8" "checksum qrcode 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "16d2f1455f3630c6e5107b4f2b94e74d76dea80736de0981fd27644216cff57f" @@ -2511,14 +2648,18 @@ dependencies = [ "checksum regex-syntax 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)" = "7fe5bd57d1d7414c6b5ed48563a2c855d995ff777729dcd91c369ec7fea395ae" "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" "checksum reqwest 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)" = "02b81e49ddec5109a9dcfc5f2a317ff53377c915e9ae9d4f2fb50914b85614e2" +"checksum ring 0.16.13 (registry+https://github.com/rust-lang/crates.io-index)" = "703516ae74571f24b465b4a1431e81e2ad51336cb0ded733a55a1aa3eccac196" "checksum rpassword 4.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "99371657d3c8e4d816fb6221db98fa408242b0b53bac08f8676a41f8554fe99f" "checksum rust-argon2 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2bc8af4bda8e1ff4932523b94d3dd20ee30a87232323eda55903ffd71d2fb017" "checksum rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +"checksum rustls 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c0d4a31f5d68413404705d6982529b0e11a9aacd4839d1d6222ee3b8cb4015e1" +"checksum rustls-native-certs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a75ffeb84a6bd9d014713119542ce415db3a3e4748f0bfce1e1416cd224a23a5" "checksum ryu 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ed3d612bc64430efeb3f7ee6ef26d590dce0c43249217bddc62112540c7941e1" "checksum safemem 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" "checksum schannel 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)" = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" "checksum scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +"checksum sct 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" "checksum security-framework 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "64808902d7d99f78eaddd2b4e2509713babc3dc3c85ad6f4c447680f3c01e535" "checksum security-framework-sys 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "17bf11d99252f512695eb468de5516e5cf75455521e69dfe343f3b74e4748405" "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" @@ -2534,6 +2675,7 @@ dependencies = [ "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" "checksum smallvec 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c7cb5678e1615754284ec264d9bb5b4c27d2018577fd90ac0ceb578591ed5ee4" +"checksum spin 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" "checksum standback 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "47e4b8c631c998468961a9ea159f064c5c8499b95b5e4a34b77849d45949d540" "checksum stdweb 0.4.20 (registry+https://github.com/rust-lang/crates.io-index)" = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" "checksum stdweb-derive 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" @@ -2559,6 +2701,7 @@ dependencies = [ "checksum tokio-executor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" "checksum tokio-io 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" "checksum tokio-reactor 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" +"checksum tokio-rustls 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4adb8b3e5f86b707f1b54e7c15b6de52617a823608ccda98a15d3a24222f265a" "checksum tokio-sync 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" "checksum tokio-tcp 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" "checksum tokio-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "354b8cd83825b3c20217a9dc174d6a0c67441a2fae5c41bcb1ea6679f6ae0f7c" @@ -2576,6 +2719,7 @@ dependencies = [ "checksum unicode-normalization 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5479532badd04e128284890390c1e876ef7a993d0570b3597ae43dfa1d59afa4" "checksum unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479" "checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c" +"checksum untrusted 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" "checksum url 2.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" "checksum urlshortener 3.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ed098de5fb4d3eadb600327902b1d32f51e1b9f64e6a7baf588dda55ea989881" @@ -2593,6 +2737,8 @@ dependencies = [ "checksum wasm-bindgen-macro-support 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "8eb197bd3a47553334907ffd2f16507b4f4f01bbec3ac921a7719e0decdfe72a" "checksum wasm-bindgen-shared 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "a91c2916119c17a8e316507afaaa2dd94b47646048014bbdf6bef098c1bb58ad" "checksum web-sys 0.3.39 (registry+https://github.com/rust-lang/crates.io-index)" = "8bc359e5dd3b46cb9687a051d50a2fdd228e4ba7cf6fcf861a5365c3d671a642" +"checksum webpki 0.21.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f1f50e1972865d6b1adb54167d1c8ed48606004c2c9d0ea5f1eeb34d95e863ef" +"checksum webpki-roots 0.18.0 (registry+https://github.com/rust-lang/crates.io-index)" = "91cd5736df7f12a964a5067a12c62fa38e1bd8080aff1f80bc29be7c80d19ab4" "checksum websocket 0.24.0 (registry+https://github.com/rust-lang/crates.io-index)" = "413b37840b9e27b340ce91b319ede10731de8c72f5bc4cb0206ec1ca4ce581d0" "checksum websocket-base 0.24.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5e3810f0d00c4dccb54c30a4eee815e703232819dec7b007db115791c42aa374" "checksum which 3.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d011071ae14a2f6671d0b74080ae0cd8ebf3a6f8c9589a2cd45f23126fe29724" diff --git a/Cargo.toml b/Cargo.toml index 0bc99b0..2661094 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -60,12 +60,12 @@ path = "src/main.rs" default = [ "archive", "clipboard", + "crypto-ring", "history", "infer-command", "qrcode", - "send2", "send3", - "urlshorten" + "urlshorten", ] # Compile with file archiving support @@ -83,6 +83,12 @@ send2 = ["ffsend-api/send2"] # Support for Firefox Send v3 send3 = ["ffsend-api/send3"] +# Use OpenSSL as cryptography backend +crypto-openssl = ["ffsend-api/crypto-openssl"] + +# Use ring as cryptography backend +crypto-ring = ["ffsend-api/crypto-ring"] + # Support for generating QR codes for share URLs qrcode = ["qr2term"] @@ -109,7 +115,7 @@ colored = "1.9" derive_builder = "0.9" directories = "2.0" failure = "0.1" -ffsend-api = { version = "0.5.1", default-features = false } +ffsend-api = { version = "0.6", default-features = false } fs2 = "0.4" lazy_static = "1.4" open = "1" diff --git a/README.md b/README.md index bfbd472..492a3e6 100644 --- a/README.md +++ b/README.md @@ -134,20 +134,22 @@ all available subcommands. - A terminal :sunglasses: - Internet connection - Linux: - - OpenSSL & CA certificates: - - Ubuntu, Debian and derivatives: `apt install openssl ca-certificates` + - CA certificates: + - Ubuntu, Debian and derivatives: `apt install ca-certificates` - Optional: `xclip` or `xsel` for clipboard support - Ubuntu, Debian and derivatives: `apt install xclip` - CentOS/Red Hat/openSUSE/Fedora: `yum install xclip` - Arch: `pacman -S xclip` + - Optional: OpenSSL with `crypto-openssl` feature + - Ubuntu, Debian and derivatives: `apt install openssl` - Windows specific: - - OpenSSL v1.1.0j (or above): [» Installer][openssl-windows-installer] + - Optional OpenSSL with `crypto-openssl` feature: [» Installer][openssl-windows-installer] (`v1.1.0j` or above) - macOS specific: - - OpenSSL: `brew install openssl@1.1` + - Optional OpenSSL with `crypto-openssl` feature: `brew install openssl@1.1` - FreeBSD specific: - - OpenSSL: `pkg install openssl` - CA certificates: `pkg install ca_root_nss` - Optional `xclip` & `xsel` for clipboard support: `pkg install xclip xsel-conrad` + - Optional OpenSSL with `crypto-openssl` feature: `pkg install openssl` - Android specific: - Termux: [» Termux][termux] @@ -298,17 +300,11 @@ Check out the [latest release][github-latest-release] assets for a macOS binary. If it isn't available yet, you may use an artifact from a [previous version][github-releases] instead, until it is available. -You must install `openssl` through [`homebrew`][homebrew] which `ffsend` depends -on. - Then, mark the downloaded binary as an executable. You then may want to move it into `/usr/local/bin/` to make the `ffsend` command globally available: ```bash -# Install openssl dependency -brew install openssl@1.1 - # Rename file to ffsend mv ./ffsend-* ./ffsend @@ -348,9 +344,6 @@ Use the `ffsend-v*-windows-x64-static` binary, to minimize the chance for issues If it isn't available yet, you may use an artifact from a [previous version][github-releases] instead, until it is available. -You must install OpenSSL 1.1.0j which `ffsend` depends on. The installer for -this can be found here: [» Installer][openssl-windows-installer] - You can use `ffsend` from the command line in the same directory: ```cmd .\ffsend.exe --help @@ -439,7 +432,7 @@ before proceeding: - Runtime [requirements](#requirements) - [`git`][git] - [`rust`][rust] `v1.39` or higher (install using [`rustup`][rustup]) -- [OpenSSL][openssl] or [LibreSSL][libressl] libraries and headers must be available +- Optional for `crypto-openssl` feature: [OpenSSL][openssl] or [LibreSSL][libressl] libraries and headers must be available - Linux: - Ubuntu, Debian and derivatives: `apt install build-essential cmake pkg-config libssl-dev` - CentOS/Red Hat/openSUSE: `yum install gcc gcc-c++ make cmake openssl-devel` @@ -505,17 +498,19 @@ Different use flags are available for `ffsend` to toggle whether to include various features. The following features are available, some of which are enabled by default: -| Feature | Enabled | Description | -| :------------: | :-----: | :--------------------------------------------------------- | -| `send2` | Default | Support for Firefox Send v2 servers | -| `send3` | Default | Support for Firefox Send v3 servers | -| `clipboard` | Default | Support for copying links to the clipboard | -| `history` | Default | Support for tracking files in history | -| `archive` | Default | Support for archiving and extracting uploads and downloads | -| `qrcode` | Default | Support for rendering a QR code for a share URL | -| `urlshorten` | Default | Support for shortening share URLs | -| `infer-command`| Default | Support for inferring subcommand based on binary name | -| `no-color` | | Compile without color support in error and help messages | +| Feature | Enabled | Description | +| :-------------: | :-----: | :--------------------------------------------------------- | +| `send2` | Default | Support for Firefox Send v2 servers | +| `send3` | Default | Support for Firefox Send v3 servers | +| `crypto-ring` | Default | Use ring as cryptography backend | +| `crypto-openssl`| | Use OpenSSL as cryptography backend | +| `clipboard` | Default | Support for copying links to the clipboard | +| `history` | Default | Support for tracking files in history | +| `archive` | Default | Support for archiving and extracting uploads and downloads | +| `qrcode` | Default | Support for rendering a QR code for a share URL | +| `urlshorten` | Default | Support for shortening share URLs | +| `infer-command` | Default | Support for inferring subcommand based on binary name | +| `no-color` | | Compile without color support in error and help messages | To enable features during building or installation, specify them with `--features ` when using `cargo`. diff --git a/appveyor.yml b/appveyor.yml index 6271eeb..e49b58d 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -12,7 +12,6 @@ branches: # Build for the x86_64 Windows target platform: x64 environment: - SSL_CERT_FILE: "C:\\OpenSSL\\cacert.pem" RUSTUP_USE_HYPER: 1 CARGO_HTTP_CHECK_REVOKE: false GITHUB_TOKEN: @@ -23,23 +22,14 @@ environment: matrix: - TARGET: x86_64-pc-windows-msvc BITS: 64 - OPENSSL_VERSION: 1_1_0L - OPENSSL_DIR: C:\OpenSSL # Extract release binary artifacts artifacts: - path: .\ffsend*.exe - path: .\ffsend.*.nupkg -# Install dependencies: Rust and OpenSSL +# Install dependencies: Rust install: - # Install OpenSSL - - mkdir C:\OpenSSL - - ps: if (Test-Path env:OPENSSL_VERSION) { Start-FileDownload "http://slproweb.com/download/Win${env:BITS}OpenSSL-${env:OPENSSL_VERSION}.exe" } - - if defined OPENSSL_VERSION Win%BITS%OpenSSL-%OPENSSL_VERSION%.exe /SILENT /VERYSILENT /SP- /DIR="C:\OpenSSL" - - appveyor DownloadFile https://curl.haxx.se/ca/cacert.pem -FileName C:\OpenSSL\cacert.pem - - choco install openssl.light --version 1.1.0.80000000 -y -f - # Install Rust - appveyor-retry appveyor DownloadFile https://win.rustup.rs/ -FileName rustup-init.exe - rustup-init.exe -y --default-host x86_64-pc-windows-msvc --default-toolchain stable diff --git a/pkg/alpine/APKBUILD b/pkg/alpine/APKBUILD index 843016c..dd50881 100644 --- a/pkg/alpine/APKBUILD +++ b/pkg/alpine/APKBUILD @@ -1,13 +1,13 @@ # Contributor: Rasmus Thomsen # Maintainer: Rasmus Thomsen pkgname=ffsend -pkgver=0.2.51 +pkgver=0.2.62 pkgrel=0 pkgdesc=" A fully featured Firefox Send client" url="https://gitlab.com/timvisee/ffsend" arch="x86_64 x86 armhf armv7 aarch64 ppc64le" # limited by cargo license="GPL-3.0-only" -makedepends="cargo openssl-dev" +makedepends="cargo" subpackages=" $pkgname-zsh-completion:zshcomp:noarch $pkgname-fish-completion:fishcomp:noarch diff --git a/pkg/aur/ffsend-git/PKGBUILD b/pkg/aur/ffsend-git/PKGBUILD index 4e7d1f1..32a8211 100644 --- a/pkg/aur/ffsend-git/PKGBUILD +++ b/pkg/aur/ffsend-git/PKGBUILD @@ -16,7 +16,7 @@ arch=('x86_64' 'i686') provides=('ffsend') conflicts=('ffsend') depends=('ca-certificates') -makedepends=('openssl>=1.0' 'rust>=1.32' 'cargo' 'cmake') +makedepends=('rust>=1.39' 'cargo' 'cmake') optdepends=('xclip: clipboard support' 'bash-completion: support auto completion for bash') diff --git a/pkg/aur/ffsend/PKGBUILD b/pkg/aur/ffsend/PKGBUILD index 82482ca..b81faac 100644 --- a/pkg/aur/ffsend/PKGBUILD +++ b/pkg/aur/ffsend/PKGBUILD @@ -15,7 +15,7 @@ sha256sums=('SKIP') # automatically set in CI, see: /.gitlab-ci.yml arch=('x86_64' 'i686') provides=('ffsend') depends=('ca-certificates') -makedepends=('openssl>=1.0' 'rust>=1.32' 'cargo' 'cmake') +makedepends=('rust>=1.39' 'cargo' 'cmake') optdepends=('xclip: clipboard support' 'bash-completion: support auto completion for bash') diff --git a/pkg/choco/ffsend/ffsend.nuspec b/pkg/choco/ffsend/ffsend.nuspec index e014470..e6f1c50 100644 --- a/pkg/choco/ffsend/ffsend.nuspec +++ b/pkg/choco/ffsend/ffsend.nuspec @@ -50,9 +50,7 @@ This is a nuspec. It mostly adheres to https://docs.nuget.org/create/Nuspec-Refe - - - + diff --git a/pkg/scoop/ffsend.json b/pkg/scoop/ffsend.json index 9f3382b..8737665 100644 --- a/pkg/scoop/ffsend.json +++ b/pkg/scoop/ffsend.json @@ -9,7 +9,6 @@ "hash": "297f1405bacdc34948cd94ba785336c48e1ac862984268d66a8928abd3e322e1" } }, - "depends": "openssl", "bin": "ffsend.exe", "checkver": "github", "autoupdate": { diff --git a/pkg/snap/snapcraft.yaml b/pkg/snap/snapcraft.yaml index 23452ad..58133f6 100644 --- a/pkg/snap/snapcraft.yaml +++ b/pkg/snap/snapcraft.yaml @@ -32,4 +32,4 @@ parts: plugin: rust build-attributes: [no-system-libraries] build-packages: [make, cmake, pkg-config, libssl-dev] - stage-packages: [libssl1.0.0, xclip] + stage-packages: [xclip] diff --git a/src/action/debug.rs b/src/action/debug.rs index 7953079..4c91ecc 100644 --- a/src/action/debug.rs +++ b/src/action/debug.rs @@ -98,6 +98,15 @@ impl<'a> Debug<'a> { Cell::new(&api_version_list().join(", ")), ])); + // Show used crypto backend + table.add_row(Row::new(vec![ + Cell::new("Crypto backend:"), + #[cfg(feature = "crypto-ring")] + Cell::new("ring"), + #[cfg(feature = "crypto-openssl")] + Cell::new("OpenSSL"), + ])); + // Clipboard information #[cfg(feature = "clipboard-bin")] table.add_row(Row::new(vec![ diff --git a/src/util.rs b/src/util.rs index 41fef9e..bcdd96f 100644 --- a/src/util.rs +++ b/src/util.rs @@ -1070,6 +1070,10 @@ pub fn features_list() -> Vec<&'static str> { features.push("send2"); #[cfg(feature = "send3")] features.push("send3"); + #[cfg(feature = "crypto-ring")] + features.push("crypto-ring"); + #[cfg(feature = "crypto-openssl")] + features.push("crypto-openssl"); features }