From 9a6ca4531a1198a58c9fc39ccc3dfd955b1051c8 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Wed, 28 Jun 2023 10:50:21 -0400 Subject: [PATCH] add new deflate dictionary --- .../auditor/AttestationProtocol.java | 6 +++--- app/src/main/res/raw/deflate_dictionary_4.bin | Bin 0 -> 11342 bytes samples/4/0_cert-0.der.x509 | Bin 0 -> 668 bytes samples/4/0_cert-1.der.x509 | Bin 0 -> 697 bytes samples/4/0_cert-2.der.x509 | Bin 0 -> 516 bytes samples/4/0_cert-3.der.x509 | Bin 0 -> 925 bytes samples/4/1_cert-0.der.x509 | Bin 0 -> 668 bytes samples/4/1_cert-1.der.x509 | Bin 0 -> 696 bytes samples/4/1_cert-2.der.x509 | Bin 0 -> 480 bytes samples/4/1_cert-3.der.x509 | Bin 0 -> 476 bytes samples/4/1_cert-4.der.x509 | Bin 0 -> 900 bytes samples/4/2_google_root_0.der.x509 | Bin 0 -> 1380 bytes samples/4/2_google_root_1.der.x509 | Bin 0 -> 1312 bytes samples/4/2_google_root_2.der.x509 | Bin 0 -> 1312 bytes samples/4/2_google_root_3.der.x509 | Bin 0 -> 1312 bytes 15 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 app/src/main/res/raw/deflate_dictionary_4.bin create mode 100644 samples/4/0_cert-0.der.x509 create mode 100644 samples/4/0_cert-1.der.x509 create mode 100644 samples/4/0_cert-2.der.x509 create mode 100644 samples/4/0_cert-3.der.x509 create mode 100644 samples/4/1_cert-0.der.x509 create mode 100644 samples/4/1_cert-1.der.x509 create mode 100644 samples/4/1_cert-2.der.x509 create mode 100644 samples/4/1_cert-3.der.x509 create mode 100644 samples/4/1_cert-4.der.x509 create mode 100644 samples/4/2_google_root_0.der.x509 create mode 100644 samples/4/2_google_root_1.der.x509 create mode 100644 samples/4/2_google_root_2.der.x509 create mode 100644 samples/4/2_google_root_3.der.x509 diff --git a/app/src/main/java/app/attestation/auditor/AttestationProtocol.java b/app/src/main/java/app/attestation/auditor/AttestationProtocol.java index 7ebb048a..c4b12d4b 100644 --- a/app/src/main/java/app/attestation/auditor/AttestationProtocol.java +++ b/app/src/main/java/app/attestation/auditor/AttestationProtocol.java @@ -193,7 +193,7 @@ class AttestationProtocol { // the outer signature and the rest of the chain for pinning the expected chain. It enforces // downgrade protection for the OS version/patch (bootloader/TEE enforced) and app version (OS // enforced) by keeping them updated. - private static final byte PROTOCOL_VERSION = 4; + private static final byte PROTOCOL_VERSION = 5; private static final byte PROTOCOL_VERSION_MINIMUM = 4; // can become longer in the future, but this is the minimum length static final byte CHALLENGE_MESSAGE_LENGTH = 1 + CHALLENGE_LENGTH * 2; @@ -1287,7 +1287,7 @@ static VerificationResult verifySerialized(final Context context, final byte[] a deserializer.get(compressedChain); final Certificate[] certificates; - final int dictionary = R.raw.deflate_dictionary_3; + final int dictionary = version < 5 ? R.raw.deflate_dictionary_3 : R.raw.deflate_dictionary_4; certificates = decodeChain(readRawResource(context, dictionary), compressedChain); final byte[] fingerprint = new byte[FINGERPRINT_LENGTH]; @@ -1555,7 +1555,7 @@ static AttestationResult generateSerialized(final Context context, final byte[] serializer.put(version); final byte[] compressed; - final int dictionary = R.raw.deflate_dictionary_3; + final int dictionary = version < 5 ? R.raw.deflate_dictionary_3 : R.raw.deflate_dictionary_4; compressed = encodeChain(readRawResource(context, dictionary), attestationCertificates); if (compressed.length > Short.MAX_VALUE) { diff --git a/app/src/main/res/raw/deflate_dictionary_4.bin b/app/src/main/res/raw/deflate_dictionary_4.bin new file mode 100644 index 0000000000000000000000000000000000000000..804ab5789f29f63ee6dc3b35abd64d2b4a621c1e GIT binary patch literal 11342 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 MN8a={Z$g#+2kjU&<^TWy literal 0 HcmV?d00001 diff --git a/samples/4/0_cert-0.der.x509 b/samples/4/0_cert-0.der.x509 new file mode 100644 index 0000000000000000000000000000000000000000..fd0fa9afcbac182855c5b064a32a12a7083afda1 GIT binary patch literal 668 zcmXqLVwz#l#ALUCnTe5!iILHOi;Y98&EuRc3p0~}yrHatG#hg$3$w6@V_r&8erAe- zcWPyENq$i(h+!Zn&TDR9UGC*C?LO|?irq<#N` z!M+)~9?_ARCu98zT$jwMr&NL6#;) zN1&K36JrV&C3EDQ!I z`YnU5=%1k^Yju+ zQ!;_!$HeGqsKlZ$laJ*?o44dg|CR?&jJ_|P{Av1XfheVe4>xkVXn7?a(J^RTvXH}& z4IDSji-2*&yqE>(NQR}XhCmL>Dj>nQzqy==m0^FY9gqX09DEGCSQHrSrS8pj&r8&1 z_%y>V>-wFGaaj##baylKF2B}1@48h#Fg&;z8CVqV%{|Dh_2U} z+MD;dxXV9~Z~LoQm;J4dtW3;|zc1`>bpkS&#hmuH`mr&wFq&*UyT8>R%0f;x%pME| zu1pH4#cWnLZkVrpW1pn8!}Zpi4hyM0CpWRQFP%{vB=AwLl}VAI*WjQY%iL*w0ovcS ZO`bm#nbFg@WRl%fhU0B6Qg21Wa{*#c+1mgB literal 0 HcmV?d00001 diff --git a/samples/4/0_cert-1.der.x509 b/samples/4/0_cert-1.der.x509 new file mode 100644 index 0000000000000000000000000000000000000000..5e86bed7dac98e1ff78140aca88a6c8b4db37128 GIT binary patch literal 697 zcmXqLV%loZ#1yrFnTe5!iILHOi;Y98&EuRc3p0~}y`hkS02^~C3l9%xa7j^qUb<6$ zg`uW_I!KIFSi!)|!o(=e!XzmW+V#Z8Q<22G5K2E0J~W%(Hy|FbYNGco{${Mfj(*%(5&IKmi0ISroP}y!huvR@mGNoO-)1gxtDTIbXi!;0({$->;Y_ zbzg{TU|}#w+21U{!NkVc$&^}mZhxySgq42yVTL4jUkNl9vP zNn%N6ex6=pX-X#0_e_kQhDt07Gx=CPw0TQ@^ly3a#OV9t$)BdL7Klz^u`c^t9a))}8Gm2c-|7TpFpD|uZ}nqiVqrAdcy@oQKa_=> zqL@7y4BVI$8G7zYt(oAl%2{v6jWZFOX7)*y&0=wRTQ{-Y|I4{^XPVT2O16vqWLg)c fZP{DWRZ#y~ly;3xnCW4zL|sqbh5_#m1r4=5fxJg_+5~-cZOu zfQ>nng@=bTxTGjQFWo7>!cfyd9VEsotdM4$l4fXWo@8iZm~3fmVxDZCl9*;-Y;KyG zY>;MYVrd{J&TC{~U}8v5m?R}9C8i{$7+RW{ z7?>udrI;m}8Jk$9CK*H;2(z(+-OI!XbvQF4JF^o5i{*@2pDLexaY$h(6nE`DwpiOY zj5Xy$^a?9A7Y3F#;mN7Sg`f6B8GOBJH?2GA=h*g zP{=?4q?w0@Gq|KEKQG-Wzrs+{KpkSBLYi?(nxUn6lA(!VvZb+!d9ry*Vw!=mxoK*$ zL7JtBr9l}`J3G)h=WLl6*;ut3Ss0XNgGZ}oKtpLzHn_GWzHX?x%(kJdL{!{a}< zF8?;oHfoRSDYIQ73pN#<$;tWlF>Z14;$(wF16iOWW%*ddSVZ!k3EnSoySm#Xw^z51 z&0IdHaJ8?2JV;uZMZ!R=LBuTaAwx|ED`#N0OOE@0DW8+C{DlnoK?;N!8UM4e8ZZMX z13r)dKS+RunTd%7Eu@*7m>3x>G;XjZKfSr(zGH)3x&QwselfE)+?&l-Gpjdj&Yky} zdpo$ZcCTr*+5B1j_BJi^2%nvg&k1xUEsWh7ED`bcYkB*{TgR)@BUo0wNEU6|(92ue z`*sa)p0T{i!i;>OhlP7s*u(!{k-aP7pqdwFaKYz4YuSGFkI(p7@5LYGQvEe`#zl|Y zc3kmy{`}N(auk{u)n&!KYo~+B-qP}@@Q=TAIg}o@`(I$%*_y)>Y{_*KFci z5839^)=s*_|HFU6+4>!xODp^=V_d~gCv%tSrf^#3 zx38Z~z~*V;{0g6rO^Ui$7gpr-7s)?;9Y~c$g)`C-7njea}qK@Qww0OVj_N;E~F-}pgxL)Y@`^h7F=NDYp?=){W zsXG*#XMbY7R7uiNbK6(@A3fj^KBcjEZ|W{bb}nX?lU^0gPqyp~|8ekHX4S&lT{RH_ zTc7wd9lGxL;p^4qDeb%URz2;$JGE5eO8f8g**V#M*IAZ+Kh8ead;7(!myQ%T*sSlp ztM}&oF)8DK#-;n@0yKUxs#MACzj8F+O{i?K-r6qP_CH1ow+Lt$I{x?P5lHbXix)YP p^Z29h)}?ya-TnIPo^Ek}?d^5EkB#M&*O{-GeQuE=lP~8i1OQMCaZdmM literal 0 HcmV?d00001 diff --git a/samples/4/1_cert-0.der.x509 b/samples/4/1_cert-0.der.x509 new file mode 100644 index 0000000000000000000000000000000000000000..e23170e80e4fd5df3c2ea1596edaa2ff51160a11 GIT binary patch literal 668 zcmXqLVwz#l#ALUCnTe5!iILHOi;Y98&EuRc3p0~}yrHatG#hg$3$w6@V_r&8erAe- zcWPyENq$i(h+!Zn&TDR9UD?a> zUA|*A|K3Uqq5NgK8~dhg7uotL*v6K{PW$oN^7vb37ta4H@84NfV1N1h&Od=?y1f;` z7G2yByk5r2jLrM(;wHvSgC@pQ13sV!Wce8x|FZzS#NGfD3uNQcW@BVwyjID?D9F;p z=m-?EWnxU>0)+sGWKr1DqqyZ7^P-dW!WzoIV*K}?*|w^D%Z6PGAGNqVUH|!mHw%M7 z%Kl~n4kk9nPNuX~9{XEuA?$2B?ftE;9xQGKE{1XjGA!bW1qFJEB_*lFC5a`O`FVPY zr74-f@MB{1G*n_yn90ZTq0L+JqkqeTCq~~FPyRH0wLp~8!G{~UU9`NCj_4RPE?LN7 z$OeuZ=0(6bVqVMwbR@%4Rzo0%WfhQM+}~Wz#LBS0)egu3QVu=_UMva>_EPuey5}Wo zGklt1mv#Nl#kj17GrGGOdY4~oo_F1<9~d57j0`La_vRjC*7|Xcf5ukkC%wkUaTm9IWSQt$%7j(S{5d@_{qv2yHRxUT*}*0p+Eq=R@{^T literal 0 HcmV?d00001 diff --git a/samples/4/1_cert-1.der.x509 b/samples/4/1_cert-1.der.x509 new file mode 100644 index 0000000000000000000000000000000000000000..a76d07cc9ff1cbf66809dc3ee2fefe9b8125d89c GIT binary patch literal 696 zcmXqLV%lQR#1yrFnTe5!iILHOi;Y98&EuRc3p0~}y`hkS02^~C3zslwa7j^qUb<6$ zg`uW_I!KIJSivAEH7UhB)xgLs(I_R&FvZ*?)zS<|C8ioA8yXrJ8OVwAnj07x0wEYg ziSwFRAaM=k4P_0aA%=-K=A{(nXQn84r&bo1XA&cjIRklg+ncRA=^Y4rbk@&qutq-+)L=zTXS@p=}$BE2c$}wBEa3ALj z-?Xt&gNt##oFr?YaX_7*D9G9 z1zDOH?SNudOpGa9pa24qEDC#i6t`SsUUafvSVQ?&jQ{>K+g6ot*|2NjqZXH^>py?+ zW??W$+21U{!NkVc$&|Ko=KfY&2s_)hX@9G$2aB75i=mu>42yVTL4jUkNl9vPNn%N6 zex6=pX-X#0_e_kQhDt07Gx=CPw0TQ@^ly3a#OV9t$)BdL7Klz^u`c^t9a))}8Gm2c-|7TpFpD|uZ}nqiVqrAdcy@oQKa_=>qL@7x z3|yHM89EoAm16k!LhLu++V|Bb9(zAd>SFpX{jK@h;-d#6nAAm>6g(fDi;81juNw7g bgJ|#*arSd!67viE3r_G%_%3VuV|xJr`^@1K literal 0 HcmV?d00001 diff --git a/samples/4/1_cert-2.der.x509 b/samples/4/1_cert-2.der.x509 new file mode 100644 index 0000000000000000000000000000000000000000..2d7dfedd143d0a694f4e8c7326d1d88918855a88 GIT binary patch literal 480 zcmXqLV!UI}#MrcenTe5!Nr3zH^#^K;?#q_EOuW91M^MRti;Y98&EuRc3p0~}rlGKb zARBWi3zsmLdwza;PO5^BkF%kWfdEL5S(wwMC_ghr!P(K+Ku(<3$k@Ql$js2h*wEBC z3e2@IFoJRo>|wgNggJvtit_W)o$@OTH4W4uCMg&sr6#4Ary3ZUB^srq8K#(kxl$FVdXoKr?R&{|Ek_<-aBdj)ubbd zt*M_+e%mar6ZCtw@V#HGxwkxc&)s7#DmuJS+r>d);>PKvRZRtXJC&@=7MB^67{~(M zAdYIWQ literal 0 HcmV?d00001 diff --git a/samples/4/1_cert-3.der.x509 b/samples/4/1_cert-3.der.x509 new file mode 100644 index 0000000000000000000000000000000000000000..d46ff03ba3f4f3fd6bc103cee9b7d1b693b33667 GIT binary patch literal 476 zcmXqLV!UC{#2CAPnTe5!NrYi*-pupDmrkF*r<<7TWzNuhJ8QK87aNCGo5wj@7G`Dx zO+#S=K{n=47A|2f_x$|yoKyuLA7?`$0|AgAvoNPiQGRBMg0rKMft)z6k+Ff9k-4FT zk%_5k6qsvaXa?q*L=kV4u|cGPFdIAA4NQzs$1pRpGdnS`ctSzewA(C}V}Cb* zzuzGLO_g~1%x`D^_AK4Hq&~8NX^K#kc)dfx(~>W1tzL#*b@*~|%e!fN)m-%2J}+Fc zIN2c4fDh<)S$;;w|12!bOiU~W{2;zCh|g-k45SQXK>~a%Vk{!AiXLWm3waYSyD`mT zKluKoXOxUAoEdahUCQgSEK%~|B&!KJ;#FgiRaZx(@cR{ zo~gvXypzB1+WY@&SlrcSY%9OjH~;!>){EEwuC6=S?%?3lbM-Dyl)}M-rnWMfU*<0c E0AzQeRR910 literal 0 HcmV?d00001 diff --git a/samples/4/1_cert-4.der.x509 b/samples/4/1_cert-4.der.x509 new file mode 100644 index 0000000000000000000000000000000000000000..a6c61f69a994e65cb9003411c4b56caf7f8423ac GIT binary patch literal 900 zcmXqLVs0>KV$4{;%*4pV#Kqj9mY$H>IjxP?fR~L^tIebBJ1-+6H!FjIw4tPdI2&^) z3#+g|nx&C}fn}kB_sVkbwY5kXe}1r6@l$MZww8$e;`;#tyXjoGlY08>@CB3xg7K z5(CSwS%tZ?Pc}1$$G%(Tuwri9Qr&A^!XM5}_^mCb%oV%iY)e+iIyCt?KCZj*;7tGK{W&Y2 zEKV~>F^~niMwX97j74Pk53{wM>vA4Foj2vf)lJtgRXwS3G>`{LE3-%#h&70qB|c=R z>0spy>~_g<|1afp@|C}kfe=W6FeBrC77hb8AO#Fk13r)#KS+!P7{qL7!OGmk#K_QC z7^LW)_<8oKO+FW&Pgi~^DQZ`JKq|Fu{bV8Yy7wnfL~dHIk;*#lceT>f<7emHP`w?* zckZd!g*8XZvm-pai+lokRARQt9?6f46Me1eUFXa2yhQe;!lysmq-*^m*mu6(S!H_Z z@oMe7i3ck*c#bQ|WQb{>{dF@%VCI51E(Tw0H`uM?S|Xj-+{Gz8_u|)0hy3RVh1qRy zi#d{9;dJ4a5Yw%aiMJCM^IHXk7VE8X>6LA~a`=!@Oh;YgCN@qZ#*Eloti7+M#yKB} zT<|WT=I4YR+UlS3Q}%z4nG!6fyLi?imK~E7)W4}D-Bwc;U@{4f*uA^-aD!<2V(tj0 zI)$0*vL1+sH*TFBXx0-N8oBXRxTcr$k~K%_PFpGS8Xr$wHGN;Pi?zb32cJwGKJU7H z*qC3fVP@;ZjHi=UiW;XU@y?lhE<@?#u5TNroG!^z4d%XA($?K%d4k7rtNQt$M-N|h zn3&-D_u11zN%oFp>C$=s`!jz`33b$Rx&Fjh+Ur)*bl=SaA=d9q%TzSpE!gdS#!UUm znTqsGjf_LeMvDUsjBdZ+n>jr)^Vo8c`(N(r%*|Qq9`5$vv?a`NooME?7c&<3-ao{C z^Ht5#8~=V)PEstNwv^FEub8E*l(p}}=jHBS1hz~M&E5B0?CH<%T2Y*RyJk*#{OqI2 Wq_>lbUOc{#@SH!{tnTu=ovZ*jZf}VI literal 0 HcmV?d00001 diff --git a/samples/4/2_google_root_0.der.x509 b/samples/4/2_google_root_0.der.x509 new file mode 100644 index 0000000000000000000000000000000000000000..af8de752849d670709ba0f20c5d4e99d309144ad GIT binary patch literal 1380 zcmXqLVofk;V)j_T%*4pV#L4jDmt?ZYrC$;Tylk9WZ60mkc^MhGSs4tZ4J8f4*_cCF zScL`BER75dEK@B^jg!oh3`|T7S)c zk(STOIj*|yOXnLgesP?BO6F``nf|7)hJoAuZTkOLJO9bQ=wo~59rpgmp*(lhpVxg` zSG?7>Iy)!Ms(ix3ts+j9hLNo^1lP{nv@(0|^`$kFSIRj4IjerH{@S;~Rosn1iEAzV z7gxHpxv|{ceB;PZg@v=l!VZ1(x^}@P>Aj!WCN0gE{u@Py2jO zLwT;hv(T>_LKf{0vfq47kFfq>8rAsk)vlkjnor!f(=yWfldkYaySjJlo=utL%-RBRMqFc9(Zg=9r>32k)-Z$Z3Zd|GchwVFfMLfX3)6UKo*z+ zW%*ddSVYVcA2QT*uyO`=yX3h4m-0FJ%3sJp9we>IB4HrbfL#GUNP#dT<9`-b17;v) zzy}iG2MMqMGeDbx1BfrrVrgJ*V7kC~fnl3|MoCFQv6a4lVqQv7erAeZdVYR-PHJL7 zX0cv!ey)CENl9vPNn%N6ex81EQI0-xQU>N5U{YpeP&je8*Za=OaA~)mPW}HytB(C} zSt#qc;zM!H;aah4PPu(`Q`lL2URgftWR>$AH~YZpY38$i)mG>l{GFrU_cr(7KK+($olkCxsCJ8Z?|P=P z@Hktcu%14f*ou}-ORg=+|JAvTY5%SpJVMTe@?ozN!oHcGSRf*E)M1KRcaKf&&MBK? zc+ci+T7Br&zehn#wz{u)t{u+UxA>W(N87iJPrIY9A2-;PapdvA-zh3P61?_Cju9 z4QFqa-fW2m>8dSj3L|PwV$U>lUfre@;8eBjg6(P6nK{#T@x&IsR7^S`cB*Cm=Xlc}t-t;=4EerpN5g{UHVb^G96Hx5{%(tH-2aH? z$7WwYdEQ#Hq;rz_ezm$7=haNFT*OqEi>#lm%G62RyKdeU&MV1BPS&Itq?W(?w5K#- zd${PCIkm@X+BkH#2dvLxpl{d(6kh$Helu9v{>-_tW*4aQiG#;(eoXYrE0x z4-$%1IXvYmQXUmgOb-}To^}=LJX)T_#x_g8H}!|ZLzkfTeK*QiuTy#CVk*`fYV!mD DZ>UTd literal 0 HcmV?d00001 diff --git a/samples/4/2_google_root_1.der.x509 b/samples/4/2_google_root_1.der.x509 new file mode 100644 index 0000000000000000000000000000000000000000..6482f0f48fa9ebf64e19cc3b47efe1ad7c202a67 GIT binary patch literal 1312 zcmXqLVwEvyVrE&u%*4pV#K~}#|5NnhPuDgZ@Un4gwRyCC=VfH%W@RvtHk33FXJZa! zVHFlgvota=uuQcuHBK^1GB7bUkQ3)Mv@|p{GBPqSHaE4166ZBGF*G!^fO7F`ZemhG zwv3ULfw_r^pTVGsiHoU;iIHLbw&P9O8<#V_(cYrheI`UKdG-4l`bNj=OAVQMrU!XT z$G_nGeOzm$t9*&g-dXv=rX^lWKD=b0$4A_XeuS8eJfnW-58X( z*1~^rrAwO|%iYa4j{H}k&(N&^k1%t!`84}7cVRfikK7p zG}fFw>4T8o`-yGR(tJ5S4UgFkJG4tOSb@6{J}eWqjIr*``d+e!Dd z&j&S>=lVMf{kkD!(f%O&&DZn@>mR03jsITl`Z=rl#CO3D4tty zFgx#E`OgmH4HCB&^0~^hEiSpr-uO9^Lo;o6dG}Br8>fA5lEv?smAUA0Y~)Aqu% z&knIGra8ao_s!hq#1Qy*r-5g>o!L~@hRbKa{JzkAw555f8bdM@Gb01z;$(wF16g4D zljUO(V-Yb+e8^DK!O9uf?ULjEU&`m?D}Nyad62X+i-dt#19k=cAO*sVjQ?3!4VZzH z0UtEpnse=GMm}Cok}XuS zo^S7R>^i-(i}lFKYt!DX+QxZd7th1R(l1*k+_(4PTY2~73;o~xr|stLy>WV~dgrH& zj`C~5PP94YZP!e2Dvn*sC%C3CUP9vh{5yWCUgpWB(pf4Fq8y28R(Xcp50~;jJ^tcd z2mf8~ryXAALcJ2r+?(CAzi7%eT|JhSGG+2S4iE0%2l#8dO0L)y7uW5J?ejY-YM|@Z znW^4zr_|zY-Ne#;iI&fOo!44)8wC8ny7FF75(CGK1MY z@$;AOyC3gvYM!>Z>al2P(;oAbofTZl^ZxLcE`0RtrsKKQYt-+)W_+}_MUiRtE0e2I z?{X5pl}Amc07?41J^H^`(Z)Jkx``rQ=_4 z{ywg?(pA31X78+gVbcE_tf>-8qw<+-c=yzbk& z;;pvT**S4m+LGjBK4DxOU#AmDzi*FRhupQpWMmS@mo6*S;05;%*E|Tx;RK zxYDJ~jpgp<8%KUBESxPCcIczmwF@?3Z`e3yvdG9?T>3B9#9?dLu8S8I21U#Xej01e zp7cRT@BPF!X=%P3pN2^#GY`DncVLH|^}(MuMF%_+y!Yx0yFSyg?^C<|hV7(#+UJ8B z%5(jlg?`--vS@#h{pM?Wg!K>8sK$SHmXX$@IdR+N`kIRowmos*L3*t2tiQ7M~ zP3yYsx5fJ}xpGEc3ohZEzEIz+Tljt2)eB3#^7Lb8<-d2yFxr#e;;z~z&uM$%*=L8? z71NyG^ZRCQb7BbmyVJlk-Og+(Ys2NUUw&WcKHAbeRgEE;iJ6gsadEOiqJb0spy>~_g<|1afp@|C}kfjmfBnMJ}ttO2_MevkrTM#ldvtOm?L%770f zzz-5&VP;}tK~9FiG!IOMj10jh*W#X@p8u(1)i2YMt}DmRrY3q?oMZ7c6Xkw*J*a$f zWqP)k_1gP_B9&(^d+lh`o18T)%_KmT(`?pL_XDwxC(X`t*wucgzyJ&7zMe zziPNs^ZV78Ig_e)dA??6pBLwn?paXWLI4HJv$J?N>6*{o>1ywq=`2 zKQQ0zm|r=|HPh!&L3#JtAn)zh^Ce`ZWtomVeyF7p!I$>8Wx>BaFHE#@L$>aIpK@vL z#+(DDm!}+5@_W8)+pLelCUsR8we&trowT8(ewGQ(!rYRu@6zfPMs>}{TOZHeymv>J zRt1Ze)~P2O7ge<$jNcvk#n#P4@SEk{+Zt~S6w_VA!uKb{KYVSvp!AiLNy4iTsnhH8 pxA0wE(IFef<8eAF-gUN;$Vt!LGwk1sSQ?AJQG0u4+EOm3PyjrVHVOa$ literal 0 HcmV?d00001 diff --git a/samples/4/2_google_root_3.der.x509 b/samples/4/2_google_root_3.der.x509 new file mode 100644 index 0000000000000000000000000000000000000000..aa2711500db665299d3aa596641a40fad80df100 GIT binary patch literal 1312 zcmXqLVwEvyVrE&u%*4pV#L4jSV9~OfufEC}@Un4gwRyCC=VfH%W@RvtHk33FXJZa! zVHFlgvota=uuQcuHBK^1GB7bUkQ3)MGBPkWGBC6-FgLM?66ZAmat%$PT>P4wn3Rw$ zV`ODuZerqRFlb`pVrpVyWLUrLc$4`BjUhX@v!_NBPPn)6xo(bN2^@UxZ>Dc$F-G0M%(mn0- zK@H`({?0rcA&M}>{1qTLya=hhp{ z&U;t>v%`3U#I1#VuJUY)ORlmvevahOOxs=FJ(**Q+KlIZ+-Fsix)=|gVSXylZ5Qoz z@X7so>*s%4GHH2@NOOlqD`T{i&a>)<9X+!>9$F_(ExfiNTEe->5)W*}w2 z2NK{139v9TF|i;gLtvT*CPPMsnu1f4rv={m=)a0<^U~(R-`Dr4&Rno2um85X!`3$w z6%4lhnDpz_#UolA7U%TgDK7r4rKyY(J;)*1u=%1$ySO0w9{&(%<3LD*- z)1DuT-SchE(Hw_mm?f;iDA&*^bUII(np5qH* z>o0L@Tq#RXs+G_;P1IGe?<|=9kmXx@QRVrX=hGgwU90|M%3fHd+pN&x;FB%H@8%!5l@)i*T9duJ#Ab5Ip30>@eFv-N zNS}PI{g;>V zi=|FYj@T`~=0UIC0~`7Gn}1DZG0V!DSNLM@B8ztn`+RPtG&U}oAo7d-=l)<{#~lwG u{VhDE9F$yrYYA_5&&>mt6Z1mv1celSe114cHlf2TTEhB7xj^d6Rwn=_2ST|3 literal 0 HcmV?d00001