From 41ec380b55c98222f7afbfd2d74f43cbc8a49373 Mon Sep 17 00:00:00 2001 From: bjoern Date: Sun, 17 Oct 2021 14:28:34 +0200 Subject: [PATCH] add let's encrypt certificate missing on some older android devices (#2752) * add let's encrypt certificate missing on some older android devices * create Certificate with Lazy::new() * document certificate source * use smaller *.der format instead of *.pem --- .../letsencrypt/isrgrootx1.der | Bin 0 -> 1391 bytes src/login_param.rs | 23 +++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 assets/root-certificates/letsencrypt/isrgrootx1.der diff --git a/assets/root-certificates/letsencrypt/isrgrootx1.der b/assets/root-certificates/letsencrypt/isrgrootx1.der new file mode 100644 index 0000000000000000000000000000000000000000..9d2132e7f1e352fabac7eafb231488b5da91ffb2 GIT binary patch literal 1391 zcmXqLV$C*aVh&!w%*4pVB*@StaDKxjhsTjF$q#lXH+3@@@Un4gwRyCC=VfH%W@Rw& zH{>?pWMd9xVH0Kw4K~y?PzQ0igcUsVN>YpRQcDzqQMi96N{2F6x@sQ zOA8D|4TM2TnT2^ggM-`^g7WiA6e0`_)UeSUJ_S;M+V-u>HW)=goaf7yL{%}fvF;1?F_{JHX*^)7mb z_cWAjyQP1@qPLp4KvBB%lYz~z{&jb6C9i%h=6|S9(7WzD_ly5q%k{o&s`h%|Bc#ex z(95j3;9;=J8{wPpB=-w!_Uf_kT$~tqZ%sS8l;RAn=gy-c5l%vESRjulRoaDHHpQelw1#&mWmj<25Ut_nWV1qwMTG%s)L@ zZ#3Rz-J*5P@#PxEvZ-ABH|}5EDDklY(M=kbokat@+bL(=ez`Qo=d9_8$g;*;h-`WLMh;lRc_g>Iv-DFqo zCF5PpD)i^rs|NwXHO`YuHlHea-Y3t;=GdnK4#`;nE(6$dNYTB&bR(NQ2+$oz?wqHJLsjX!HYm3h*_fBZ@a%uek ze*2NA(-ox)>ah}I#svAgPldH?sMd^L9VXJTe#U|j5E;9$T9Os}&1 zjEw(TSb({M&43@o7Y6ZJ4VZzHfhFz=l^iUlGsD^9O_ z?o;@C)1`#9mMgeli7SS+ehlD?e0}ag-X~KPhVT7{&D4o6YKug*3J5*#Pa(8&H7gpwUsuC^Ywq~GKr43@rUtb$j%*V zXSzC!JAHIpY?|)Bn-;WsJ~s2)HigcR z-KW{sqcnToqipMNtEK|qJDkTmPjj*R=DdjQJNf?H>f^h&YWulf^SYpR=4sI>j;y6q zAB!&hzU1vmo%p4{|F6+t(%W~vdiUeP>Iq_(+2h=TYs}f5dM+QCHs|Whty&MJN;P<_ z^RZ+cWl3o${YKsGG(t*4WP8`@Gk9!gJ;MzXRq} z=D1zmBD#56Ufpb-X;wRebnUN2Km5&csO6u^ip8C`)?_`D(Av1dIWhXO{2lAwvQN4% zdQ0z%8|T;t|E@mm82|syq6>)@52x)|6WeWmz4WT_ftiBq<~klMDs9=v String { res } +// this certificate is missing on older android devices (eg. lg with android6 from 2017) +// certificate downloaded from https://letsencrypt.org/certificates/ +static LETSENCRYPT_ROOT: Lazy = Lazy::new(|| { + Certificate::from_der(include_bytes!( + "../assets/root-certificates/letsencrypt/isrgrootx1.der" + )) + .unwrap() +}); + pub fn dc_build_tls(strict_tls: bool) -> async_native_tls::TlsConnector { - let tls_builder = async_native_tls::TlsConnector::new(); + let tls_builder = + async_native_tls::TlsConnector::new().add_root_certificate(LETSENCRYPT_ROOT.clone()); if strict_tls { tls_builder @@ -430,4 +442,13 @@ mod tests { assert_eq!(param, loaded); Ok(()) } + + #[async_std::test] + async fn test_build_tls() -> Result<()> { + // we are using some additional root certificates. + // make sure, they do not break construction of TlsConnector + let _ = dc_build_tls(true); + let _ = dc_build_tls(false); + Ok(()) + } }