From fc5af285f5073be9f4fa4ce877acccee2be4ffbb Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Mon, 9 Feb 2015 12:32:52 -0800 Subject: [PATCH] Fix for some devices that behave strangely with native code. Sometimes, for whatever reason, native code fails to get installed on some small percentage of Android devices. In contrast to every other device, on LG devices, the call to System.loadLibrary *succeeds*, and then the individual native calls throw exceptions. This change allows the degredation path to work correctly on LG. --- android/jni/curve25519-jni.c | 6 ++++++ android/libs/armeabi-v7a/libcurve25519.so | Bin 135228 -> 135228 bytes android/libs/armeabi/libcurve25519.so | Bin 131128 -> 131128 bytes android/libs/mips/libcurve25519.so | Bin 235636 -> 235668 bytes android/libs/x86/libcurve25519.so | Bin 163904 -> 163904 bytes .../curve25519/NativeCurve25519Provider.java | 8 ++++++++ 6 files changed, 14 insertions(+) diff --git a/android/jni/curve25519-jni.c b/android/jni/curve25519-jni.c index a40c53c..647d0fc 100644 --- a/android/jni/curve25519-jni.c +++ b/android/jni/curve25519-jni.c @@ -107,3 +107,9 @@ JNIEXPORT jboolean JNICALL Java_org_whispersystems_curve25519_NativeCurve25519Pr return result; } + +JNIEXPORT jboolean JNICALL Java_org_whispersystems_curve25519_NativeCurve25519Provider_smokeCheck + (JNIEnv *env, jobject obj, jint dummy) +{ + return 1; +} diff --git a/android/libs/armeabi-v7a/libcurve25519.so b/android/libs/armeabi-v7a/libcurve25519.so index 1b5a7b8acf48d10cc59a053f58f8775c96039eaa..09073d92d63c6c2799aec0f86e05e74cde863978 100755 GIT binary patch delta 6471 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 Vw}^cenuOAb?!42mcaY&j{tqOKa4rA< diff --git a/android/libs/armeabi/libcurve25519.so b/android/libs/armeabi/libcurve25519.so index 8c55bee49c6b51fdc9ccd9c514c773580e353575..b9364f25c8485323755af175d5600c0c43ecc400 100755 GIT binary patch delta 8086 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 delta 5014 zcmZ8l4{(&l72n`t4@TSAqF!cDL8BxZ{u<3O zhDzmPF8MCm2#5i(RY&FUWG>TzHknEbEoxAv1sm;Av7;7ia2O1o+--mF^2J>4n|b$p z`}Xa7`@Ma;-`fiuOuraR_uEt1bjHdVV`Uxrx2Eitg6)FNC&R8jMiOF9Byb6>7Dg;e2 zI&39|lUt-)Y8JyMoS8O=XM)C`Ta1%pF2B`?ikuaBrf@dUVe(f4i%h=E#4CY60y#l; zPzfj>R1BI6S^%04s)GB{8mtCA8cSibEsS}8$Ji!JemdGWr!dygELafz)P5bo=-nt- zA(n^Q&){W)zr{*oX{c>6&S;L78d|7*W9~`X1S|f{SZ348ml&lV!$`9|e=1`U9}Qy6 z#xAHU(eA$zQ!(3xQ{eS!!Aeape}Fv~W^p(A$^H|N+dgEB{G#2$GT`9c34|U<3PtG9 zUtw%JY*PD97<9v6jcH&X^dfJ-3D$-B_rQT|hhPonYc@h(hd#xZ`VXS*+#=W-vwaSF zy?DDoT)!oSU4Wy(O@gg972ZeO`Wpm8DB}js!U20~!a*hE&V87)slNkw80#`(wrzL; z*B-`v=7es5J^zM@b%~(g^ATh9^|0T98Qup47eekf4ZMvBdDc#ZY+h2xAHam1>o`j@ zCm6*WVy5xO276zFdlx&xWlkWA>^~`3t=YD~zN?Y5^OqQFp%D3DV9+aA#T8?3{2&y1 z5wh_$n@MY&u;z#H27`+^^B`ww{Oi+UMM-V{(_5Ts_;rFn_(4+Q(i5FTH zPonLZS^X{?H0BH!!9YJEP-z+Y84o!2X?#y*bwZ zFq@MUCxN*3HcbTn5)JT?7jihZ?Slzz9kSkp_M?cGKcT%BZLjZ@52lDv_7xAMgqm#; zZZu4{@P1?cbO-M>x~A_EmdnQVSQSjcqw$UT!S1w}*!8dAg|iIP|}YP7C)K zZHs1Qd+cY5PF%{gMEL#^8#~-y=6$w3Ep%kjx16Vi-dggl$gY`tZ_%Cq%e2_pxW=!b zaqt$0;5Ej{>MZDeQC%Ql>2hJy#Y9Uz(3^eRFUiE_LSrP+#B=CsyTd_UmrGJ6b&>Uf zpA?8(k3F~O$ak5ReBC2xYJ_E8G8$d}G0p$v${aZVYUTG@?&?FkOY$QxYPQiMC8xD_ z4wQL2+cD-qjdA&BOQ5vi=L-dQ8|&{qz&)X&Uwpn$RBi}e(S5(*O~%@uC480fdJhHT za-lVnX{qI}n!(rxZ)bW61g|!tJ8u)L(O9df|d)uPQ z3A8*HRkc9<*HP69YmFw zz?7H@0teG#Y6#doEv7~^*2046F=fZu;Xy&YNQ@0E_^Gz>AAxDgxB2VhRTjYp9N?QhW

D27^F!Rqn?u|cpya&{+dQ?3okrJaykkUHmOW2eZm>R_8?Tc?<1b%FKE zw;)Yf1$IW7{7a{}+Uf=GmEUv<$5s2m`Z8h)U%~jJ^Bc8xqlYy;SS`Kcis)&N+aVyVHAltzYX9FLSDG zPNT0>E)9se#Z!@bX$z1-a0oT8#pAbjY6cWLEELjG^xGH8?tqwMb%S@wBd~7W1a`ap zA|Og~_k%tBNi4qGFd!bnKFIoHQ5Pa~4s5er(Ip&9ry^~)pHhly1A6d1WqFXDf{Z@X z@b7ZJ%;O7F4*4kL^x39I2hp~`JHwQfc1Ei_L#!WcL`J(rK}sK3`#)u@OI)3rhXJ%t z+;Vw0mV~xSzkIA40}8>`$c}CV)CCp`Mbgz^cgvF`^@1Ii-w?YSY@tk*V%8$sL;F9+ z-hg4uwA74eyzoAaz7h1r-^`t^yZs0t)Cxhg*D7V56a~xkkY%mdUdd}hnOK27JGLCH z4?Pr|8pz5at093I9D1+Skk`wTn3c5^Y_q%o>()2H2Ew^L;?En5UfWA$W?4t`_&d4? z&zX4M#EU?>-BihG8QM+PyoV-c%bJiMsOQ*9>{7a8(EK1`gFCeN70WIkgL>vth~T7w zt|_P)8(iT-8Cpqm3l&Z@fXXr|m+7H0ohn}{lISKuWjNJ!bU&bqm&$g!OHh4J^4D4mmEktGDwCI?^!3w4&9QZgqyO$>-r=668bg-=&J zE_DPRxfPI4iH~PeTwD-L1akmtRg~($$_5W02|352eg&hlu2r(32IJRMQU^+ zB|o+trf)o6{BO*D_5W=mCh0(kF1hfmh^RNX((NTA526adLD2(oJ&D)Lr+c)V F{{xvZvY7w? diff --git a/android/libs/x86/libcurve25519.so b/android/libs/x86/libcurve25519.so index 60e42467fb99bf57e1dced44a92034ef6d9ef3d1..ff5b63edc5e39057a4731129a45c49542cdab8d9 100755 GIT binary patch delta 3793 zcmZ8k4^&iD8vnkL`2(p80)`4Q%A}a6Bw8q=BFvg~ro^D64P8py)u5G*xJMHlSgkZ< zqw{KSd9Y(Em6n~Q9c?^Cg;E_|KoPZcWjB&Pf&$5Erp3OyzdJl@+k4J8zu)is?)~of z?tAyXH+7{Ub)_MddFH(XOnYBivm|Wmw@kOpX(DpIbnHcMhMnk9A{s?jDgo9&e{JXn zVDnU>FT#f6tM2cq-9dm|V@*&E%!Z zNTT7!gfkGh)i4h&gx)=mNKLE;WI{XgiCT<=rO<`<5}h&PZ$PK!{j85bCq78D6R5^_ z0h=?3&fPYot;4)XxQeLX=#Vgs$i5m^Y$VKru1h0&+n8_-bjD($HuF$|N@xcPxZmji zSLj;}3qv0${S?s?Kvh8J|Hb>fa1^?U-ZcuKAXI#i$mSdx;DjzLB=Vt;O0XC@_dLf-OmjFx8we7c55GHzG-MaFEtIBEdUSg^Z?l z^4MDfINIPi87LYy28Np*XjrR2i!)HcBp9{{O@^t8H#+zy-pLy@BcN6Ku7 zVAy!r1lU|{*T^Uyp?xqiHVl*6?IyCKbA-Y~t!v~nYN05zdozB^>ZfaKLMQNVwerxI zq<+a%k>|Y8y+le0VtcHK;@jq){*$X&RbBDbc@*0XMx0Gi&qqH{rcXJOq%5nSt35F9sP&_his$>H=XZ0|wi8lTRvb`EP7g18 zB(wV?I0Dhs)65QSV4;VXX!FxmJEB4#9riUn&@;w1cCS)@e_Q+H zcb{4_-&SInwsrM->sN0n{`}w89Aw+LHx+NF_I>>1VdjyVw_vm_WsmY*{)=x{!JpXl z-EM8#@7p+B8@blc`Pvt2&t4yO#SOvR(D)=)1=wI*)J~uky#&a}!(7->r)KI^)Gh!c4y_@;H;0u_O1<|k|+ z0rBB{alDzASbg(VXr*wTixYII-tnrb152IFMPhk7PvyO0dpl3& zT=BkwY;mrgGx>m+*1@qcYL0Dqq-zs@9`1mz3cf?)VRSLqfqo`7D%t_sEOvG93`-PF zyVg0PrGqD#-Qc^$f0TOz=%7o??Bwa@{owIpRVOD|IzX?u#p|7Xr#S)#O`&M&qD96=hvKR>WQ831ceZbN@z{ z>cya%16B=RsaSpy^&SOviL#5F6s%6|j#awcIW+pKiyUK4h0iT+B5c_J+PhB7?BoCumHdKAqLc*A-)#r!HL9_Joj5Yh^I z_K&)JVwjk(3O>-o4zmNNZ;&|G!%60B&>bS|5@;o8p1AK4avcI~6i;8`$>t8wM6pYC zh{pRXS)93q5;8!8MDS%?UJ+=in5O8fptWMDqP3ul#rn$_b`8`a-n)#2OvWkg5d)yX z#h_7NOBpX7@8xje>E+?(YWN&tc`wHWH-g50BjpzHz6w{V@HO}<#d`=_qVa08T@df| z@mRb(RaxJ`ZO#L=i zr)Ro2*^k-U`Y>BEd{trqqsHWdy1V30H`s|=Q3M|@yC1byfgVM;T;0`hQP9s$b1QsN z;+1|}e*|_!hG^>N$=zEK&pfCj; zfgT(er-9KA>N4tkDF=b63Nv)M73j*;8RW?&T_s~fPYp#T}bXu@<_3vMz}GHzTyTok^KXtVbyLr~j({U7JmN_`i*U0W<&r delta 3726 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 Mqv?BXyJ