From a45d09ef5c4997283bb411b2e4ca117cbdc25780 Mon Sep 17 00:00:00 2001
From: akwizgran <akwizgran@users.sourceforge.net>
Date: Tue, 4 Feb 2014 12:32:51 +0000
Subject: [PATCH] Show whether identities are anonymous, unknown, or verified.

Dev task #52. Known but unverified identities are also supported, but
currently unused. These will be used in future for contacts who've been
introduced but not verified face to face.
---
 .../res/drawable-hdpi/contact_connected.png   | Bin 1432 -> 1316 bytes
 .../drawable-hdpi/contact_disconnected.png    | Bin 1429 -> 1133 bytes
 .../res/drawable-hdpi/identity_anonymous.png  | Bin 0 -> 975 bytes
 .../res/drawable-hdpi/identity_unknown.png    | Bin 0 -> 1416 bytes
 .../res/drawable-hdpi/identity_unverified.png | Bin 0 -> 1429 bytes
 .../res/drawable-hdpi/identity_verified.png   | Bin 0 -> 1009 bytes
 .../res/drawable-mdpi/contact_connected.png   | Bin 689 -> 682 bytes
 .../drawable-mdpi/contact_disconnected.png    | Bin 605 -> 484 bytes
 .../res/drawable-mdpi/identity_anonymous.png  | Bin 0 -> 362 bytes
 .../res/drawable-mdpi/identity_unknown.png    | Bin 0 -> 708 bytes
 .../res/drawable-mdpi/identity_unverified.png | Bin 0 -> 713 bytes
 .../res/drawable-mdpi/identity_verified.png   | Bin 0 -> 531 bytes
 .../res/drawable-xhdpi/contact_connected.png  | Bin 1521 -> 1094 bytes
 .../drawable-xhdpi/contact_disconnected.png   | Bin 1417 -> 1168 bytes
 .../res/drawable-xhdpi/identity_anonymous.png | Bin 0 -> 853 bytes
 .../res/drawable-xhdpi/identity_unknown.png   | Bin 0 -> 1470 bytes
 .../drawable-xhdpi/identity_unverified.png    | Bin 0 -> 1565 bytes
 .../res/drawable-xhdpi/identity_verified.png  | Bin 0 -> 1139 bytes
 briar-android/res/values/color.xml            |   1 -
 .../android/contact/ConversationAdapter.java  |  14 +--
 .../contact/ReadPrivateMessageActivity.java   |  18 ++-
 .../android/groups/GroupActivity.java         |   1 +
 .../android/groups/GroupAdapter.java          |  32 +++--
 .../android/groups/ReadGroupPostActivity.java |  26 ++---
 .../briarproject/android/util/AuthorView.java |  51 ++++++++
 .../src/org/briarproject/api/Author.java      |   2 +
 .../briarproject/api/db/MessageHeader.java    |  10 +-
 .../src/org/briarproject/db/JdbcDatabase.java |  28 ++++-
 .../org/briarproject/db/H2DatabaseTest.java   | 109 ++++++++++++------
 29 files changed, 197 insertions(+), 95 deletions(-)
 create mode 100644 briar-android/res/drawable-hdpi/identity_anonymous.png
 create mode 100644 briar-android/res/drawable-hdpi/identity_unknown.png
 create mode 100644 briar-android/res/drawable-hdpi/identity_unverified.png
 create mode 100644 briar-android/res/drawable-hdpi/identity_verified.png
 create mode 100644 briar-android/res/drawable-mdpi/identity_anonymous.png
 create mode 100644 briar-android/res/drawable-mdpi/identity_unknown.png
 create mode 100644 briar-android/res/drawable-mdpi/identity_unverified.png
 create mode 100644 briar-android/res/drawable-mdpi/identity_verified.png
 create mode 100644 briar-android/res/drawable-xhdpi/identity_anonymous.png
 create mode 100644 briar-android/res/drawable-xhdpi/identity_unknown.png
 create mode 100644 briar-android/res/drawable-xhdpi/identity_unverified.png
 create mode 100644 briar-android/res/drawable-xhdpi/identity_verified.png
 create mode 100644 briar-android/src/org/briarproject/android/util/AuthorView.java

diff --git a/briar-android/res/drawable-hdpi/contact_connected.png b/briar-android/res/drawable-hdpi/contact_connected.png
index 6c9f76c4522f49d5239cb10ade1d8e5964427f0a..9fa452b33cdc41c6771b7df4bd6d24c60458d851 100644
GIT binary patch
delta 1284
zcmV+f1^fD#3#1B=Fn<KzNkl<ZXx{CaPiRzE6vn^rzM09)Bs0m3wVDL7QER%0;yk2_
zQd(;fq^m*}N}$l%g$to>11<}0UAS<eLJOfT1a}q0e{CsP<UP@Jp_tM(5C&?UNoJf(
zGBfXfUE~E6t@-yxEzGx^H}~H2yXV|@&p8k1sH2WL>SzOE)PEDYuIorjlI#J{9sXPc
z@I=yr@B6_U3s5K&vH(U%ZU@i@AR9iaNSY-%1z^(iyviE`P$(4QBzH>MPhywEge(Z4
z1;B=XGXP>V5UGZQdnB((df@wh^R)rEuDeUpL6SSIMSQ+&D)FSM?;Wn~&b)26gb)A_
zt3BpFKb_6o27l0(&e<%fCV&SdFMFPM@09|$u4^P6BKZj*)GH>)4+Z7XljY+QYw@J*
zra}DaF|uei>!wPho{QtTQ>AGqm&#fPAS7KSdBO8M+jf9Lp^yadIf?hJ<w7E*=Gf`d
zm+>y8f)+)-d`<~+Vq$ZV^@(Ho^Nl*=#waP_7XaV+zJI^aHh@B*K$2ep`f#r3ls@}r
z?xUeSjX~omzxKTlY{1g=oy5$g6TLTk`-42dA0?gjeP64c#aYXe0|NtNfcDK5o!KwW
zmqz=Co7+gFq?LF6c~4NrD4iP&whVu~ICN{G+e>EbI{?zfVsSEZfI^`#Lh`V+Y<xOi
z`JjKexqnR}0Aj7i0|>_~jZbB5X6tY({rj(7e;UJW0|Ntp6pO{bS2K@U<)KXgI0y)d
zl$t|(8iP`F_lE=w?P&}qQfdN%q=Vs_(EtG0PI9<jF~QjB(h=h*FHz9}P{vVy>~!f!
zy<!3Y!vMBN1|aExwMgWLg4uYNlIsndmBK0BrGI38D43O)0B|4@0M~W9NsP>wO=a|C
z`FPM`gu(Nyf)+J;vV45LY$||8T-WX15I}fg?FNttS}0k|CsFSFi#%a1p9C$G03;;s
zc3szO!~-b+J8VF+?`U;zB4sn}PLC5Qo7s1?y4MCY0Cq@9ts6j6Cd?|E-J7(T2C=s1
z_kRYl?oHYZph>b1z)LqR_Hvgp4WL&`S!L@L)+x)GY;S18x;^mPE3TDnSm_MROPX8G
z=U<`Sv2e{f0P`CGr~;S;5U)MvBiZ(ckt|xZ$9x1J9<E*82tXacL*vNaIFq^EsGDlL
z0UC8vy>TXU+c>h49)>oo55V_*3*at*hJO=7-Wc^rQ2XK?GDba440!+zl6ONJ)_)WG
zzFz}4na<hl#qr!JC#JStWKK-HIG#I|&e<%$Nze0YQ6+O%NHt2+PG5783riUz6y?qX
zLUWM|rD><n7&IhZi833V0&qW-wa&z`{5c!2L@L5$PP73_6UXxBmg;2O4_h$N0DpL%
z*C2TrAR2YXr|%?Y7-1lh!1SHOOry?tSma;!Jg*U@2jF?$q@?S{D0%5b@6GZ|tVjy$
z4X5R>A%*fxta#}}?@eQr1aRH={pd?d0O;@U{|&%f$&B8;HPP*D9d4zwTWs7IrPo^2
zFNe)vUf0z3U*~@4?GN%2eg^Puv3*!<Ut7g>-6Vj|0sa5lDo+*ohU6gtku<gdT$OZT
zrFVX(wfG+paY;K#?gzB0<}Sc{0ImUe;CbHbYwo@PCM#(q>?rh+e5Sn)V2b3M)n0$W
u`EW=kB|Z0n13=^-I6CU6qmDY-kp2bu44pSGze%?M0000<MNUMnLSTa4)NKd=

delta 1401
zcmV-<1%~>h3YZI!Fn<M7Nkl<ZXx{CaO>Z056^5U4=Ytw*EXo#9lvHdepd30$B?p{M
zkuHj&MF20mOHsf;5oDR2e}I-nU?9JtAB*g=3W5agsx7?Y)RB_FOiWY@*JCG=ZBZ0Q
z<P7iWqT`@#?AVsb*bBZ(a^}wa+>g2Ez5_GOG}BBo9YZqd27jX{a#VFrL_%P``1t_n
ztLkAK$K&S~pw((E0Ba($3M>K(#a}&Dy)Pm+fUS1B-Ft2TTCJ8RB27hqDJtuLk77`A
zz!sMo1Q)>qBNg2g<S(k)iQ_nXW&lwXt*hz<gr?-;IRhshRY&Q;`GeBn+#t-V*&@o=
z+x7b8PPsRKZGV2`@A$#EJPy>=45cF?AGO=<%^wsXiXx+`ZzB9kRMZTN>96<iZf|Ti
zN6Vv=cFv-%x)@wQv5X~`+@wbQTmIdZjg?Ng8J@CbYgJTGu87F{?RMKv9iY`}%^_R_
zekN9i!{woLFL%SVnf?SA71QRs?J6KBU;sbp1fMl7HGlf0f0a~?mVm#b{4tK>!>94%
zJf(R-_#N<bx91M;T)g9UFL%#oKhBncQDIWPr>ms6CeN$+kG}c!H=#3d_9|B^xh>gM
zgi5Ve`$v)_(*da0>%Rql;r85N_xD}@_FK1K!J~v?kw;p86o|#c@4eou9=>pRuliwi
zXiN4*pnses$=1XHTCLU^!f(V%cIV<9_x4-2Un$-$Pip=DK_1*A>C5SoIW#-rR+wRE
z)a&(sCQ0)3lQd(VaMAj}1yNzRJd~U7+-x8?M>75}5W%_m&dtVfc_^ZSs$M9bIT-+8
z72%v280lW_h8pMsicV|?R8#|9=w9xIW?%&29DlGnF#tv1kX-!!djDS9OkYLGC(`@>
zJqk*mHq%%8>-~F@i?8S#69I^#XkJv-oPm>WZ*0E=WYegjiZ-+DjqR75fs=~LS`<a|
z#{wuetn+}MRkL(dA1wiPYWBg7>Z7Hsnx%lRs^_C9GRGN#062?c`mgm}8(2lBV*kNh
z6@MF8?Z4J{Q4DZaRf8h~sOkw|5hWiq2NiYIouYjZP*>eSb5KFaMPv~;aby4yDT_!2
z7-vh_Jm%>(z9Y%tWJ}pRFa|0jQa;WIJo6LR<2*cW4GdIu4{*F)?*Pkq>W(dAZ`V60
zs)RjYa2$Yr;68#|?v(c=mz-%1ih|^lmw!9uJp>oHUwAk&Kni??V8d%+Zc-yfJvpsK
ztR^)QUJG*stEyiW9*zbO$FT)I1xDVE7x=gQUBFBQ;XiE}|CYb&?RWt&5|K{}4@cjL
z<2XK0(XDZL9IR}td<l5pK5p^|-pa<xm*es{P|>Y+yL~W`T1b#j)YVbA8J-L}!GGrn
z?xc%31UKjepNE^_Np*FE^2sEt(Hkh&ZP{w$Qll@a^d?=*Nh-a@rAFVDtqO9zh+rmj
zph=QsT(8%AD*98m=UQjr?DbynRllv~kK6lTPrrA%Q@L8PYSf_oIgaCGVgLoi*R@*h
z1cqkiY9&8>;qYGia=L_IiYXvRn140`*rgAauAh1LOm63FNsudX9ABBrnYdP~eTGoA
zCA(VvusSq{W@o>(AL0=J_K7eaq!WTGsq|03ce-=t-7|T<kO#nDQT{NsLw%AY)a&&x
zfJIxfFNRxTcIx9(clV?HUS7@XMe?TK8><KgC<UG1i{{(Sq;j=l?VK$Ee{w_lQyj<n
z)Pt>7t7SywO+_aXYzcBjRo{QyJAW1}J_5p1)h5DIhr2+h-EKd-aQ7iF3#z(SBnpcn
z@;~u9a6?3%uXz0->%$R|IaU462M%E3A2?>3X{MQGI+p$o4T!xPl9_X900000NkvXX
Hu0mjf=ya~$

diff --git a/briar-android/res/drawable-hdpi/contact_disconnected.png b/briar-android/res/drawable-hdpi/contact_disconnected.png
index 4a1053fc7d3f76039fbc93c9fb1dffd1fd5e2af1..9de4968499c5c464a53beb423088bbe7c618b5b4 100644
GIT binary patch
delta 1100
zcmV-S1he~<3+)JyFn<ImNkl<ZXx{Ca&udgy9K}CpMw6&92{oa-2TG)hf{ns^&_!L;
zq6ltWTLhut|5RvKZ4q3%5hRMxc2(|eO{yqL&F+Fh@JEa$I&-@43bv-0OlC$Gb5`?a
znEU;nd%yR7&pi(Y7+`<_2G|7D?E&k$ZrUD^Gz#p<Uq1tuY=6IqF}6Nh0##Lw0W*^J
z0TaMj{^^PBN0ROV^C5&M9}R)3s<uixVEZ_57#IQ?KwDDVHu<@cpI3o7Nmp&(i7~$X
zU<B&AK5Y9`CNK=Nfycl@NsGXnnH~owZBI%Xv)uqzfIE^dhY;raN}#UmhV3(wPWbf{
zk4U-?T(kYBq<`nOUjc9Gy(wu6FbaGQ9Jjq!(hESgXC++>A+&o=psK17;2dyN(kk%O
z_N5r(^$m`5OwwuFJ9F9n2K*Fbe6f*nni~u%N#6orNdmY5d>3Q9wb6-4DJ>L55hZ;J
zl#-?;jTc4nM@p$T1j@2J3w#YA>6+~yVvNr^t>2W=a(`Ktzvt6xTGAe1drE1(>jbK*
znvwL4?U(r!`98+j-s~xsQgT_AbHE-+pGf+wEX(^Tr3dTze`B4Sb_h6?AD1Lu=w!qF
zA3_LiNf&G{*~a#%9J4zFfPIn<+8&m4DTJ`t?G7G7Sd?@L7zPdk`?^NJ_Q{<5LI~kH
zJwgcKx__hvNyEU&t`Ml}dIvBAv~AD!L7&aqZrh&8u{$S_8`hD0PCo%|_BwmpH*>5Z
z+ehlUZfs@+wgLO|X|)I}^<f2;vJ7bg`)zOQm_Y856Ovkz9s;j=uJ5H+SxdDfO#nMP
zCLn3Mq;a5S`|(@ark7{|k8QVraY@@ZvjT6EA%DvU`mhhy{M^YNSk5!wv^{RS*@yg_
zS$;ROG+*8ffv3QuJlHN^OCJbq$+4O__S4M}cn;jP-I6qw^?a|(XH?RZq?YZwIfu>&
zWU+Q5>;5rGhx)Jrhis1ltCDWKPcXi>6KA<RZ@XdpL>~y8$a&3&5Z)`**DL0(04tKF
ztADCG)~n3xx;~aKHY>KTbW@Gq18(Pw`02W?r+Se5l<m_w#_epubca9)VO7%Q+z&>9
zvsG0!x|Mt$>ueqy+m}NKt6ja3rIa2NMX^)T0iXoNilUfHDS4AK-;i_;_%i1+8)ICz
z>fKOdDvIJSU{cavNz=gYqA31ODJ^$eHh;i*;Ar-WegS^$*`+?EL|K-%fC<~XCG7&f
zD2iewrL@q2t#aP>?wrT3z|S$p4GBhdTC<YQ0Bags!1JssTUpCAbB7(3^p3HWFEJN8
zF$wx&E!rNJG--P>TPPpaTKo@*t+o$HI&S;0q#>YTyUlBZ7uyX<jZAPAm;<f?cSS-7
zAI{uegUp!ind~S`Ncxw(4&0OUaoOu@?2o3T5!>&)-~hV*f@6RI1{h#~P2nH?su8Yg
SyVsil0000<MNUMnLSTaVhZ1W5

delta 1398
zcmV-+1&R9Y2$c(vFn<M4Nkl<ZXx{Ca&5Kl58peN5bu68>?e1vHa4#5?7z|0;z`f9m
z36cz&fW2@xkRU_{;(suI#_R{iEHoh?%+5u-NE-xaHW|*z*iIx88M8Z(Cc%%kHKkS0
zEOI)i>8`G>?v5_%g`(=-I`_QqbIyC7_v6Aq1~QO=3}hXmjenl7uInM&+a!$u+w<*v
zz=G`uF~;_D3!tj1QD9QieqbCJ&41moeM`~};A#lr&T|8xs;VuL4%j{n90Zy`1L#QV
z*d|{$@^uTClXTJc^%&#BX9l3I>w~tBW&m4(4saXzLDD?1w9;e1gzX7QqqZBsPr!9a
z7eWYgzbSyau74Z0-<Nd6KQHk%NjHHnZ2w2necO+KC4V21^a3yfya61xy-(5uK(=Qk
zoeLp!HXT4!Roj3Mfwv^JfV;NO#~3fIah`W19kab7yWPKlPhyM@)-un~8kI`YpMkd}
z0bBw87Gu1&)`dtZeODAkl=OR`l(bjUSWy&TrIa=YKz~`5$ALcrNczI|=@{d^e*HJ4
zv{;tqzcX9ymGlxYoKm{F;Q*?tnw0c`?T48~{vKoOte3@7N-oQC4tPn@PDwA9WqC8D
z^nEYSH+np@P2gz0T#)oxKL>6l2_bYOeP(;XHnxvuof`uH*e~f-+gl}_4<XENbOa9}
z%u6~CY<~q_1@`yy+zY)7vi%;gRnpB6!le~l>>q%E8A)eD2!5IXfD@9Y0fi9$v<!$#
zbzL6;_5tq!*VerQbzN@<CV`Ia*={%`{g^raR8>{Y$Bb`EIwk2a@M8wLlFZuf*q+R~
z`v;H%)|;89?*LzS89rlsJFqBe3OHHUwerfJw0}Kidohoh>9X5jXI)L(Z`O6)SdR<+
z4tOQA)jY7UVnmeA+HPj!+ma3eck_RTfJNIwz-8cU7o7`|=54<Sykh%G&SuxX135~L
zOKMB{0eIBq5E?jR`%7Th_C4G0N_saNFf8dyNoSruA5SgBqnt~%C5;0+`gS2n!;;2;
zwtwy0kL5PYN{q23>9p+`Nli%)frr@zXMocogw`s%-Ue>lZUbYIhWiGPQ{g2r<n&=R
z#zN8)&o2Fb{9dnmS9@kP7Fx_JKV*9>`*62t-2_en(?AQ@0&K}i-?XGB*r`i)FqXe>
z1B>eca2L3hC)?HS(C0+&BruhgZU;WM{eSrqI{{OYPG)B6Ml8Fs&Ra`F&@X`dz_+&B
zl6L2OekC~p9LncqiEYm1&*i*}ZQzik6J6YAMAB|aZQI{w8~Ou~leH_^1x6*k-sQkg
zFR=~q3){pP4V=mMhVz)|E^1%5JqolWU0E$*Ts0Esbor|7hV3J(6h}KHU6k|$+keCu
zTeeRF7lEC&ySdPjY}eHg!m6oyPZe2R*RR?Bi=?LQkJnm#t)WzX2lxnR+5T%Ug;KBC
z=ndeTT!<g5>w5Pl7{A;0v8>~p+=AJdbUK94l5`>a`Ur5ms;b6D8K37mp6AB)g&qRl
z+A6Y?()UGC?2vQ-D1p(UDCSa1UVrDxHza)s{2|*j8)KZ^l$y9GivI!=lJ-g33+yS1
z;(sZn#eUr;`}|wES9BRTyJ<yzN{O;8uL0w>_ek0WOch1(Q%dQ(KH4fD+1``w_$Tmb
zjPcQ?H@2#(YDjt?ShleR+|OBMJLfV(Il_)e`c-2q7cuAhX%hS<twq~ol5Zw#PvjQL
zvu!Ot1!9Zs1CkEgJ}9XPG;DWrgBRNkNsSD!1<d83c0Gjf?3%mFfEl$tnL7&OlAdU<
z12-f+U+wi}&c~3XZMJ{)f&<v_7aRi_$Up`%kafxb0fzv&xwr+qp#T5?07*qoM6N<$
Ef;WV$%m4rY

diff --git a/briar-android/res/drawable-hdpi/identity_anonymous.png b/briar-android/res/drawable-hdpi/identity_anonymous.png
new file mode 100644
index 0000000000000000000000000000000000000000..aa539d31b7aad168d93e4d2a45a28a6c3af18c7f
GIT binary patch
literal 975
zcmV;=12FuFP)<h;3K|Lk000e1NJLTq002k;000;W1^@s6S!27f00001b5ch_0Itp)
z=>Px&iAh93R9M69m(OclRTRfR-}zz2U?+_fWYQwI5R^$Bb6<m46v?6+cdm@!(xu%h
zxYbQI{R><QDcQJlQwm)a!J2myv0$>2tfti<bkt1JcINA%uVs>UCiCJ%63l^t_h!!f
z%=eyq?m6ediJjPgW+8-92%+?U;urEbOPZ53cUTL^*hh+A$Ps-3iR~o29;qcsA|QEm
znH(8@DM$2YZQqatZ~^#nlnbyu3*5+VN6rUkf!z8FLq@*<)PXhIYqqDe??$z|1xa;a
zE&EJ|5Jt+kUC*@V;twmL3bcWiq?V+%?dk}#r)s+mw1AfFwxsF^v!^PlEvc3LM>|{7
zXabZ)e?7+7P1Ce%dp+CnQCVHmdW^9fW9$O!S;mfP1M0wfnx;?q!|E^fq+u2OlC9@~
zQ^1Ro&j8~#ladyC>d|fB^CSsx0$a8=fj@vhCAUF$(==`EDe_f`zI@vYJ?;bfHg{u;
ztv$!6uYS-Zu#0bdD1NCY$~Dl(g`$74`N>^vmd1ShhwoQ@-5b?3O&<VX0lal_=9LHA
zdQJtGBpTh0UYGbLOXc1oU$YsCA7dQI2S3FhrT$*NcJFdhmHY|tU7E(Ve1$N)2E1?U
z>lk-u&vE7#d!3ri=1#3vy9HdHnwt8p*=+tkWS6LeKC)SeF>d$sYc`uZQ&Us7Y%bSo
zwW0YTgt~P2e9%IS=`OwoJT#xB*|jX?pB0$0?MsrXX_{WmIrh(IUGZ9$^3U=qOS%N)
z<|j!qpLN8(`XBRcS7VG<b9FIEOOnp+(+;bW&e~o&z}UY84CH66{y=<S$@aebGYv}z
zX!9=GY=E}<w@<cgHl*E0b;#yh1Z~(HDu0lE(7yaae{mWsmVJ7BveS8zk~2vqgrxHL
zetfdiDVBZO)>!`8<aqE04T_a+hle+>uigiEXKrR%MSmgrv$x-!c^Tm5_0{{`4iACK
z0gk}2;176N^*MLB^G5wb<%Khy54P?VYBpa=Xy<QzdhxxP=3kq|Z?W%y&jFkHY7j?;
zFVUAj=xzSIq=|B+`|5V9@N-;A7khrY5@wQ6u5>@NIVI^Hu$puHKU6+&9{AV%K}W1%
zd)a0&uB7p)X?G=!phaNWcH;nDtYLc@)R%9wC}|mJ<gY<)JkmB;zoh*7LkQ&%!bFal
xV<JhCat{A;k|Yy3^h|^h%11^2iJjQ+_7Ccuw4?9iY1#k)002ovPDHLkV1hHr=coVx

literal 0
HcmV?d00001

diff --git a/briar-android/res/drawable-hdpi/identity_unknown.png b/briar-android/res/drawable-hdpi/identity_unknown.png
new file mode 100644
index 0000000000000000000000000000000000000000..b098e93aaea14e2c907662ff93b1f09f314f8bb3
GIT binary patch
literal 1416
zcmV;31$X+1P)<h;3K|Lk000e1NJLTq002k;000;W1^@s6S!27f00001b5ch_0Itp)
z=>Px)LP<nHR9M69m``j}RT#z3x$n(%_&22jmMI0J2~aJxo%d)6RbwjA5Laj-V1fw?
z7aBDtl4#;qqY|SLqtQe*8c4BS=)xES5?G)F;k}kfQrIX2WI(H6!FD<`?;aNn(AJLh
z)fP$QOD1`f`{g(Hp8MT<zBj<FxD_`nJkN7I&vXAzd=n>GV7tKfsagQZb^tdOKbAnX
zv}<Z<*G$FaecvYl|MH{Hn}t7afvU5ujgPs-)sMNw)z#V7dnS7Ul3FG01F#RkiYeHG
zRsj1*#^R4lpa#!3x6>|PNG)DSExw($sloHjB<`*u*$CiR`LoRPyh-ItYLs+LQY`+s
zl5#RL*15%vDIk>sQtRB}#+=NINvxi<q(K1v0Qw~jl1xux^`uD-lI$=4#vp+7qzTmK
zlvXv+wi(J8$~4fnwK=6#lemCJlE=d^v|$)p0LK9|PT~eM0yrK7!Bu{_Vy_$Surf?L
z(EJQFSHSFoP*Wu5%!2A>LQCtY<dxhyDme#wX6=gXgBQUw3F)^aah|}1oY)tEXM-T<
zA7!y=615Vi0hk5gHd1o|OqWn2Y0I$mqX1s^eXj+;fW$rkzXP~PYEZ(tFbw-g9iud$
zG5G*%0F2;E8W-OkrgFw5o?7WdYwx11BanBAfqAg?4uBE>i2?wZn(<7cur>nlE6nMV
zFkL|EN0~EUmfSBQU|YGAhg)n$!ban$SHcll_PJF$dhomMpGNOm7=}dvuK~cyw(On7
zJd-qXNi^GtcLUl!nlC8>a9sQ#2*%AHVRx&1FD>Bd7u>>g^~Nr=y1KebwR`!T5;$$m
zsja2t`vg8Z5RBa2YgOc@Nj(MNs~`xE#k**|1^|yp+!ltx4dXk*lTPPyL(A*tAN-`0
zEUq+BQ?*h0vV;``;$`hlS@ZMeLh7wMY2Vu$bPra%>~p!Hy1KgWB|M+WWPZuza=(tV
z18yYwgoG_&80M#n4{%Eu2KiA-96Pd}zkZ`z*xX`li%TTN$|(uO9&38Gmy&OHhrwqt
z+x`sz`bq9Cm;6{c36c*1NC!c%Gp4m~C_Ccr@{z5`my`~}aAzzRI}difUaWdE4-8ex
z$pb^L7pvYp4|YwU?e7Gz;GgWaZ1oEybxy#%IwdW*j-98=bLfn1^Czs~rbMwN38c!`
zjQ{~q`58z8sZEJu%L!{H@M<6j;7JJsmF*b=5>ApMuYx#yfCK-qP1ogD6evSm<rpn8
z1O&)|SQPU`anPYCL56^1v?xPc6~8xOm6Ooy=`~SwwdAvY%JclxmG9GQqR2^Tw#5I8
zUr`_nRMiN}T*!4Lo;K#p)>3lk2c=|JAK33ebRoA!SZ0B$2^@ixjZoUZr>6h__qAu2
z(a|fUURrg3b`b#V-_ujD5lSdm@qfXu_}@sAiI&WRtu2Vrw~n*-!#|TdZliYOLF_M0
z+w<&<!jtz#QTsgD+9ne%*$o_wcL$+f7H69pSEOdnjUFBN!(=49N`gaw^0~GLvbjrr
z&gYQM0;&hlH&uKR75Nnf8UmYot#k5g@#Aj>6I~aM9O^xHZTQo7n_CYZO%xx$gL-%f
zY(h+dBrPXdok-cm`F`_5*d25X8-B;j`d%Vs*Grg1@(%z#F)L^}fPc-ec*HJ=OLs-?
ziwCUx#)Tt?dPk36IC7}>fOX&46}c~75|>WE#hN7@2G|jH2jSnk>Fywu&_VJrfaVFj
ze>DR*ETJMFU<b*=<=j|3O2YHJ>KHvoweS0h82Jg`_p4*fr`q$p#LY7QTX8GKAAbSE
W&DerCQbEE10000<MNUMnLSTY~@SijQ

literal 0
HcmV?d00001

diff --git a/briar-android/res/drawable-hdpi/identity_unverified.png b/briar-android/res/drawable-hdpi/identity_unverified.png
new file mode 100644
index 0000000000000000000000000000000000000000..f9e2486261cf419e1a629e08bf671dc5034334c5
GIT binary patch
literal 1429
zcmV;G1#0?<P)<h;3K|Lk000e1NJLTq002k;000;W1^@s6S!27f00001b5ch_0Itp)
z=>Px)Pf0{UR9M69mR)QVWfX?rGe5iAmTuc^OS{|BE~zb*R%mBXXa!9%B!rlV0i!`A
z276%>?^Fzum}m^v@Dnjyn26p;B3h${3r&O?O==Ngr-fi!3=OPoJ6mW=S)tqAotfiB
zDVCpNC)pt;_FT;*XP%t*o%5aZ0dp}I_bn7fkrYLd{!e_tPBJq!F;kOM0-WX(Q4@eB
z#|#SkjkQ6)vDPU8PV!Y%B>?K=qe`>=ZuadqZ$-`P&tG~10KWNo#bR9lwI{6#oaO@$
z1Ne!E0ALw_6KU(9ibczWV6pj7b$P0?x;#}G^qWg67A+IfRk_oARaFIMu3_drX6^$}
zt0;<)HiP;jQr7k@vCUZ-?8(Yt&-N{`&HWK6D_sJd<^%8&QJjck0Ac{*0K924XhT!H
zp`kX>C<-iy0t*ebiN+00@rHC&?=+v8YXF=Lg+i95X%>L9L{wvI2C1s*l|(MCC@~6{
zkvoy3yhMuf^SxFeH``oPS!TGVax2RWSD?Ubd11qn)gv)s&@J<b$HiBOFxEdH4I3s!
zL!nUYwiWA@C8UL)G7!}?Eq2>6@&a7MOc?;O0r-fx06-={c>vy@mVSnr-%wSh4!}4w
z4Febj@D~xsnK3lQm!`SwcgfuR)MN4WOCLxE1OXGWgz@qsqm(4TOaaWq03eH;_2Fw*
z*0TYGhonf#K&EBEbLyOHaQ|2HzBNobaHEx{uUNlJw$j2+8F%uT*$>cWLF8U$oMMZH
zB{!cr-r05j_O1wpLMZ_60>JXd`h}?pa*@Ci5tdpeJqYl@DgG_%Ze?S=*J674lkKCg
zRF|g~nAS~sGc_*&Koo$!uzc~Q_k8;W;*UByyJC0CcABp!s+WkH0elw<X?^wvxl#>a
z9Wx!!w12w)mKoI1*%d4HnR}Nv7wzu3AP>+iZVN;}&jop4d2`Y3VxPHprsD4he^MCj
zW5y;$QEFyu&SWla0%+fKbME!)P*<-$`%d%KSJyl;Q721~@0OD?kUH|4r~9n~IeWUh
zLSNYVV@~r`RecUXjG2#UnwFZu7@3IHFtb<Fv_rPG*wCoZwsA*6>$Nx~X3Du1r^Ln`
z1+7D)LYv*q;xr$?m&{!9FYDY3paj5|w%5EKc2jH1SY3vTJ(EKaJUJ8i#xs!NVoz(!
zSe+hrlili_<^wDO6b5Mg9tU`w8DS!bwhi*mPq{@2WuiD)yd*Luk~EP>Qd|_7n8Bh5
zh!V=Y^HXlyH#dj*%;Xkj&dtm-&6`K6UiB!7>X~}a%ri|<=3HiS+cwCw;11-QwX(#L
zBr)~<DGzSl={wZ2%hwjUEXE{>NtRd&<eRmo1=|9g<^%9pCX9~u?j!)LY^tv%k>4cZ
zZ4ImH%K)IGy*p`{FaUUFg3Q=jYgZL6ee%)xR$q>l^?7^dk56wa{NQ?A*x4JF4(~eX
zy|}<{WLGUP$`eWA$R(-$kN)U@o$8(D2LgdAW+V!IC6_A}7d;b?33Y7IE`WY9Q}p7(
zs^VbYywY=`glr;Y=(--YWl(9Uf1St8!Oy<W`t<FObM_?0jvpNv9<;7q9kh&zfm4T%
zRh^8Eio+90D){}p96cY7YIX!T%?|_uYXB@1Wv(<PgdVLc^mR0<Te_~Bx~?B9^p&_o
znO8F-NJKfhuAjDLP+oq?rjvcHy(fBIZR4ZIhweDz$;fbcB-nW_BAqr2dR*7_AM6Nl
zn(z1fw*WW_;E2|xMebM<QC$xN0=-1U%)HtbUr`iUQIs4Tca9uYRb?CbvZ|^%HtNYy
j6h;28)IS$<G5h!%wEA1&#&Qzi00000NkvXXu0mjfwM(EO

literal 0
HcmV?d00001

diff --git a/briar-android/res/drawable-hdpi/identity_verified.png b/briar-android/res/drawable-hdpi/identity_verified.png
new file mode 100644
index 0000000000000000000000000000000000000000..02e819fa1023e98c5124d9cdb17b9ee85629c766
GIT binary patch
literal 1009
zcmV<N0}lL&P)<h;3K|Lk000e1NJLTq002k;000;W1^@s6S!27f00001b5ch_0Itp)
z=>Px&t4TybR9M69mrZONRS?H#-rHw;*Y(<oi=B`tu2R(v)RvRokO&nKiV#v&RM86u
zdMM(+i3=AFoDmgL4@gKkAffce1x0{}Dg=cV1d<!<L>veTq9G=Y>n5p-BWJzdkKxcJ
zYJx1hl2h3tb9&Mn{pLUOX6Nk#IIshIWTt7Fq-mP;f8sMw5eQEK;i-K)fi~oOs%E6m
zJ`Df>bMW<k=x;}U(;bwEj-`gr8Y9DJjgdt6SgO_H+m+u`fleexnbPH^`qS2Uf7%*X
zy4}=?<S1*E_;%(u<y0y0;K>Ws^CCcg5g`A`3)S<L5)Za2fp+FMRiMOZeXJ*GWf&*M
zII*6jl}U`&$6D6@ZOq>p(z>pz02Ei_ZdCG9w^PS1$ATyq^jIinr{YOFy6qcJ+R^BM
z{pRy$GS4{{u5key+(%{G#JiOe+W^2)E|;t9xnfmBXbGPPO8I<#7r&MIALj2Ah=_U_
zgV&BeZN6|suRn<hH72MgtF9afQI}%@5Fr5oFiy(pw<|B#HgUqJFvGPlKm>t5bG~2a
zKbOBDg3AD~D*;68MWlV>@0WhQ9iUh&ZuCChJ6rl)$j2wlboYSW<5wueC6Ha`J{S=Z
z5s(PTbr859*&n2k9C78Xd+hf0j}A={!3ViqesyoFwvwNJgnYg$$ZF9X8j0QbZZc#g
zpEc8R*bN~*;3DEf-GGRI_fHOJeObCS^?LMDPtyAEr)%>@qwl#B`FwAXrNxqauX-!H
zK6mslB|?Xz38$a2fBOLdI5t`fSLN$h-VeXKxI8<xv{-WgYv^?vzu_(B*f2eFQJu65
zG#mL?2AVS$)k(*OX|Fd+r|=sVsJtRE?cCNN7bLb@5r6=I9;^YlAfcVx8Z56!o`32(
zh2L;P3A;Wu<_<9l7!d&DgmxWkj)ex}ghW700;a~?Atmhkye7~o{DzNJBJitmC&MKY
z$N|=GN`)UjKJ+ah(8L>?FGdHPK12{|+{qAu9{{#IJ*+!~&l?4JLXV}7J!8Ha>~h1u
z%qUl;--%3`RrcQI9sXtZli<1%A#wPKJ!n>$u~Cq&tt{VO^^!oR@EdjzA`BOQ6Kg+z
zs!T0@ANZ_L&Mv^6o$bqCT^i3W-SGX`m$F_$gkb=f^^!oR@EaDWw#kmqe<8nR{LSVI
z<!pWLexaOQ2+Te8$J$NlDi`pI*BQ~#d`;7YrfK13{dHXr>$)yH_zPXv!yfd6HBA%k
fqW{1Sta<wf?UTV$8BtKS00000NkvXXu0mjfkFeSN

literal 0
HcmV?d00001

diff --git a/briar-android/res/drawable-mdpi/contact_connected.png b/briar-android/res/drawable-mdpi/contact_connected.png
index c7fb72a6d4c947ae698fee1275bd4427477986c0..22c0771bc14f2c4c8d8b31eacbc5b0f16c3126ef 100644
GIT binary patch
literal 682
zcmV;b0#*HqP)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00001b5ch_0Itp)
z=>Px%WJyFpR7l6|l}%3*Q51&HxiixlC~Yki6KrU^Xkrb7#VwJr1OpouZgk<#z(3%Y
zl{<feD^2W177$b8O2xS*O)xc(K+DI(Kxk-dI#cG}<AVB;LTOPFH@xec_c`~TbKVPZ
ztuDe|4|2{8L<|rS06<d+adIVq>?9xY>TJUIFs&5C000<+L*1lJb3hgBPr~_Y0O#2S
zw~F^}&$^@IbMBoRw`2kUpt7%()>o|J*Sxi3h3SnD_UlUnIL|%|4a*1fk85`aNBxwN
z06?wdNWe6JqaA&F<!R_+?Ld1eg#F??AFWg6p<(&x{*&W{(6GFzd?W<KKkHHwsXwBk
z>FH)_Yb{_5MdA&|aW>k$*m-Z>sN(GWVr|L_tDurdh-Yt#2&g2I6;{Fd#oAP(inG~C
zKGGH7)!9U5#!U<+{A4HdcF17DPiAJ^gjZ)17XmovhVNl|Y|hOnd1}yg3=vRCfU!9@
z<9nFqoEsehh!{``V$rxv{%UA1B7|sMCY6F1A_h7FT1)g#YWHaGL6b2!tn6tez)Qf8
zpt7fx7=uGZY<2_)Ax?CYHrH3JBGUkffVx)<#592QRja6*v}xP+$%Rv74yZygZ<UYA
zdWmU-7eP+V36IKpshGFQ=71`6T{LIksV7n+#%{rgrKg)IqmKfl&W`I(bGORAFE54j
zN@7mfLiDuBj^k_$MdG-%7BJ%DelQqS(bL}jjtWf&tnBLB%S++6t*FTL92G6dm!U|!
z@%dGscl=G;>yHrWCiVGEY#was8}FY7-{qf$J}8N~PUinVuCL<5xmH*G00SZ`93OmX
Q@c;k-07*qoM6N<$g81b=jQ{`u

literal 689
zcmV;i0#5yjP)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F800001b5ch_0Itp)
z=>Px%Ye_^wR9M69mN8G;Kp2MK@33MgBuE8SA|Zk)gJosuiLFw{!cd8S5GlW)106ec
zEJJ?*D*u2D`WvF_f-F}GOOU}!p%g=6N6vj6>Va0mI7un3ly|i6{5|*i?tKrKX{JXO
zO)^PJSqIPru$DgR0XR}h`40*prQBrjOVadI#6pW$3>XYHxu{J|Ech#dJ}IRR{wRQy
za*e@nL?kMGr+<CcKC6Z6p)pz<tpH%-!U)Qpa#Gu^otE5ESz9_J(0ip+Z)yN3<ueAq
z<^tb%d){i)i0S}_zszL-1O`yBx|VOZ>=PQ&Jb^war9Mv#kgoh)T#sXS-?hOoLH9s2
z7=+l_ay-*FO#;2m>V&xGTiaaVo7}~JE{VV}-F?^Q0^cxrJ8QVe+HfKg3*Mf$n!EUK
z5Z<1*Dk8BUrQ94FfWaGmr+*zaqWW0HZ$U(jsNQ$_*9_hm3qVR)CrwL1J6K6K+@u-?
z?O=s8Ev4R(y8}%T3l7&q13Z~orER2eJv2ltI5n=^0BaP}AX!YRQ<Mh?NEVYS#Wc9(
zn)y$`-_TtEJvO;$To?g(imx+ZTo?hHTuk#KH^7lLHB~y5Bz3q+e*srIl|-AG03788
zP)hkM_`JGXJq1vhq6dZQZuOJ}pWl^~BI6hzmfTX=>RLW{f-W%F>RNuuEtLs$IJOZf
zr4F>Euk4n60zy0%M4AV7%RbSTzRHScagUkp(2(YxEyv3ZaVw0{MBK?5K9}_}2!ijm
zTCF#CHTQh^<FbGG;?hW#k|zL0cgFFt6*ONpyT&)8n8xv!|NBDnPh80!@=`j}OpmS~
X&#p>ZE%_4!00000NkvXXu0mjfQcN$2

diff --git a/briar-android/res/drawable-mdpi/contact_disconnected.png b/briar-android/res/drawable-mdpi/contact_disconnected.png
index 790357f4e5d8e306028516269cd39a708f7bb017..bef15c40b285d783f8586d6e0af2476ec8c609d7 100644
GIT binary patch
delta 446
zcmV;v0YU!V1mpvdFn<A_Nkl<ZSi|j>KTiTd5XFCr2~;K|XS0ydVnO3{HbP<4FG6dB
zg~Xah8e6`I8VmUXqXi9?C}a!I5IRgWv6&X`k4MmiSKiIMeLFilZ()NC){Lz*Ng`4P
zYCy$4jevowj#nx`M9zQ{U=PRvU-oMU_y*pAdsV&7RDg(7fPV|12#kS8-~|XRBmnk-
zBcKdSfooMA{aS#C902FQ9O$X4M#Kxy1PZ{7sy;1?&&AmJCGY{XRP`-Nu=n0O=N^DV
zpy8Z*_TJAH#cxOOwQT2YRsD>6t`^(2+}5(#?TCgeTG{7GyW4VlK+(7oSKt(wM4fqr
z2n8m_6<>he^M3&7XE1B}KwzA)D^Rlr9cCb4Xk4`<0xC9S!VCn2##Kpk3s#Or0!B7o
zgACRPjBAucz`$mEH3I=v;~K;kV6GMd^$Y~mfpC#iF6)6ipk%W>6)d-8T*(HJS?UyM
zibx^F;srCM=`wqcx&>WxwT_776D*zwI+oi_?S|g_nKyIp6=(p*&N=VB_c6+T1?-v~
o5C8Xr<WD@wR{1F1V1u>e2XLOCIuZpqjsO4v07*qoM6N<$f@SH)a{vGU

delta 568
zcmV-80>}O21Kk9WFn<CUNkl<ZSi|j>ziU%b6vsdPnRF2Yak&Jt)**{$bFm#nU0vO~
ziX<&qbP_r=4dU9})isEN{RfT?S>hN?xr33|$);6s`4&oe$$N>0D&z}yx#!&PJMW$!
z-wSiham84e=8&0{fC^C7RtIRgdv~S*nArp19&iI#0)EQ041fFrz5;LEz4=!IFtakS
z4HSSb@E-UC^yE?mZUT3J63_?g?%w(10L<(b@EAA+4&B{T{0-Ow^1v&1|1i#fDZ`&X
z1-=0_cmI+WaEvjA5Z(c|fz1%Y#~9<uDF4M2zMB4g*WCwM^D5t6ovn@YT}&ysg0B5^
z((2ZkL!cn8M1L%g;kXYR59i#>-l!0(?tZSl6`%o>-2LIDAl%H3#nsGw1M2f4aFk%~
z0y&^=W~*kl3e>fiGzX4=qBt|BprQh8C)ldM4`2;=p|z&HYJz`TT$M=zC~L^{5^{SE
z?5NkTYxRMhi<AtZC$91|T`+Tu3ZSC`Ehf~*3b3yZ`G2le0QO}YMp0ayNdjnTwy!7H
z8kchZT<fAH8VUaE;%a3MK&sXQHWJJwU;u2p`<c6+Nhb!f4Pyi7jZ(^mltJ_ec$qf;
zQ*_}8@OqR&E{>UGO;z`nndPVWcwVB^A1BXgU2q^(+cUG=1Ru`<dpdhCwHn44PeKTv
zflc6U2r(hX7-NQOe+FEW9Jl}P2gyJ2B%9@<bdEW$9KQi_tJY0y@LUoA0000<MNUMn
GLSTaQp${|w

diff --git a/briar-android/res/drawable-mdpi/identity_anonymous.png b/briar-android/res/drawable-mdpi/identity_anonymous.png
new file mode 100644
index 0000000000000000000000000000000000000000..c91a016de8d6f692e8850f77156e4b0d5af82852
GIT binary patch
literal 362
zcmV-w0hRuVP)<h;3K|Lk000e1NJLTq001xm000mO1^@s6P_F#300001b5ch_0Itp)
z=>Px$BuPX;R7l6|lub&+KoEsrWilJZr62(zN6>otfh@8Q3gW^$c%(UiHxMu2Qi%tc
z%`9BRy%@yFq}?Pij3F5XCoTA(p?Otb)7{n8z`raO8`;b|18exr_^E!KpY)vm5WpUQ
z((}BsD2no%w>K&el2=`G+jzH0I08&+jJyKacU-eHE6msO=0T(vbtO{(ZzARZko!E(
zUu@t30IE#GSO*&}jFqZPH~q2swp0Phq^GP2$)G1bD&HpgB(n}bBk6DPc6Z8me50l^
zH5Omo8VkTw!|gXRugddw9>sbYgqn55Y~kHaLj<CyJf2L=*~h!wI1VI?^m?_FI}ymx
z26oN69cv`w;Q8_4X}0FgNS**l0Nf7jVLYCsY|&(5EB`0;35=}H+p&?6Z~y=R07*qo
IM6N<$f+AU;m;e9(

literal 0
HcmV?d00001

diff --git a/briar-android/res/drawable-mdpi/identity_unknown.png b/briar-android/res/drawable-mdpi/identity_unknown.png
new file mode 100644
index 0000000000000000000000000000000000000000..6ad29f8a0fa134f02856cdaf1de831cce8158b28
GIT binary patch
literal 708
zcmV;#0z3VQP)<h;3K|Lk000e1NJLTq001xm000mO1^@s6P_F#300001b5ch_0Itp)
z=>Px%en~_@R7l6|mCs95Q546&=iYgfKgfk)Is@8Ri@|8Z_ukA%E_A?zEFl6H1-Wq%
z)hcM^KTzv7Wvv5uZu&{>2KqVP8Hy;C!cuUg!BvUly!Y;DGs5UFDmDWK9k_5g=X^N#
zd${Lb;J@u-i&(Z9v21g%yj`?f@?yK-fON+Oq&xN(JqQ(7&G?D}TFq#4m(asqLJzl^
z(dIpLuLVF3K(4s2313lwExnP5@In#cg>31K?4f%JrBqTWl?0He74IvmZ94=#d_w5Z
zI#AalxZ^0Cm{Ux;D4p?m&&ks{O$!Hr{3k8GuRuIjN-b~j0QWJ|F940g#}0d#E2%RV
zja%onO9p^dB0dOEvKl;XWSp_hvzH9#-Z9c09s?lSER`9OfNv}oCLQD2bCr2o8n!IE
zPa3?MdY4w)wKdjb*`7m<>9k5#gWq&YzZnbP^{>4Q3*D|ahakY1)nf5_p?<KCNzGQc
zw^0CorPS*R@m>H0rPOq_cv+g@EibLSIDBOCIO)NF;I`73^5ln`PJRD+CiSCIce2^+
zQZN{l!C>%IHk<vrrT7qld8O3nYVu`6oM&=_#GS=^Q(QohxHHe>?mT<!vc`OwS7RRF
zs`F(68o=Rz)J+C6-m*-kwftx>BOrBC130{6d8Y1kM$G^~yvMo_jafqgkj|(XX6mjs
z@7wAaH42FpO}`(o|Mr(PdFLk)_t&{MuIR$}s8LAV2VQM=03wiO+U?TdbA>!T6ao~B
zTUR}Yo)B#rtSazj0^WGO`YG3l<ucPV8@^}2t!Xnl6(GL6i}$;i1Qt{8(-S4W3EQ^2
q0rUcRR5RYTZQ8{TN&A)mC+!dX&{>hV{oh3Z0000<MNUMnLSTaD!A_q5

literal 0
HcmV?d00001

diff --git a/briar-android/res/drawable-mdpi/identity_unverified.png b/briar-android/res/drawable-mdpi/identity_unverified.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b8a13d4bfe10e6a710842ae079324dba4234c2b
GIT binary patch
literal 713
zcmV;)0yh1LP)<h;3K|Lk000e1NJLTq001xm000mO1^@s6P_F#300001b5ch_0Itp)
z=>Px%gGod|R7l6|l+jC*Q5eRbvu|4~=PriEHn%ZjHnB~&z3Q5gcU@?DQP@pHs276&
zLtO-he?mq<H{Av0MF!EGf|YhQtpqK|p~8&a6)v}Z+uKE}bj>aMq6~WAh4a1d`SG6T
zobMdqzYefk{1j^OQ|NE;R8*xox=O{t-t_QbZ+iGw7oe2~;3>xb4Vdd9)@UHp7Y$_k
z%ykj#emiUBiKrex3P7qj-k%2g+eUb)fqAKc2m0Ga{xnZS7s`!GC5jVl&U&@)bTH#d
zZwr&lmUoAmvK{_oIS&B5erHI;-x}xFH<h&`Cf=S|IF#5(=^sidH-8roa5uB~2%tu%
z=N#unLQ1(<thWh;Jq1-50Bi}twSbtGQf`W`PR^fg>%B7c;YP@pbr<pgv)JuaFmwtK
zUoozY-LZ_`pIUshv#ym7hpAgJ@YekEn5=X%9g#5QbD|~|lhfZ$;QNi}@;$wqd~)(c
z)|D^pE-5<3vnAtt^pgDy3bQNaZ<IEkh}r=drIfRK)Vly=rIauBwy2NVrY5`#YTU^?
zV`{>?0DaU}_2<>d6Oo6AddlQ`h{#j@6;c(o$(d{X^1;Obnw+^tsES(EfL0!?asjJ9
zWD8gYSgmfrnD=>Iszos}CT9-MKb|waR16HSOSQn5_f_q$k!KdcSX?dxKxZU;uDv7N
z0|2qOTxJ%*()mhh;_9g7@^P2iIdt86?bZYH=*@ezw_hdn=~Mn}#BAn`>ABQQr3Gl^
z9S(=jZgYHcy6qQp88HbK>rS_Q*ml(MUg%&?CX;U}?m(cG#!S{ob7|gWjWh>ZX{_1~
vYUPP&oQQ&D@<AdRuLg^sXdn(M|4-^OYf^1*3JT7000000NkvXXu0mjf?!{M;

literal 0
HcmV?d00001

diff --git a/briar-android/res/drawable-mdpi/identity_verified.png b/briar-android/res/drawable-mdpi/identity_verified.png
new file mode 100644
index 0000000000000000000000000000000000000000..79cbaedc29a153ed0df16987b656ce659a876b1b
GIT binary patch
literal 531
zcmV+u0_^>XP)<h;3K|Lk000e1NJLTq001xm000mO1^@s6P_F#300001b5ch_0Itp)
z=>Px$%}GQ-R7l6|lg}>$K@`W|bZuLjVB3{!8f+_)wj$aZ7H16?4&vbAfTO#UgGlP%
zAg(TTa1s(f5)IW#6Tyn8s6-=0LQuQi9S0<(+J?g}iI>b_=Dp9n_kHsQ;NO0+d7H7{
z+l>9cnJ+8m^aL`)008lQ*!xKVTJVNK4u?&!It6LaDM*73n_&HJa;^A+0yvM{&-*2w
z_e(tIk^8?}fL1&L0Kgb?hBDIA)SYq3Psl`95T-$p0<2T62LMPX==0MZ<BI%<Zs~IJ
ze6VU3)ht?$Mx!acdGxLXx3zZnP2SCMF1d~<0IG@zLazb|0b(!^geZWNNGF$ODo3Nc
zvDMs8=*6SlOIXz98k<Xpob8fFRnW&-qX;A-#>3fBb|6i{;#be92T$b&J;KFxa-%WC
zxv~Lkt-|H{PQs@6!UWTM`LumjXdd<8^FHyz4JB1^iv4v*-WEU=r`R8ED5=!v)0)o{
zV6v!g){$i>nt-@&jvQ~ABb1Q<>&P-Di|Q^_fYv<q`5-XD4AnF!or_b|)3H#+xVUDX
zPsWY+^**@+5G0ObS6jsj(3=Ne3l8!&Ax|l96WqQQ94ysAU3rW#DwUvEjNbg8v=@%m
Vpg!n)QV#$C002ovPDHLkV1nET^pOAn

literal 0
HcmV?d00001

diff --git a/briar-android/res/drawable-xhdpi/contact_connected.png b/briar-android/res/drawable-xhdpi/contact_connected.png
index 53c5273b9c9c95efbf6a66eb03b12c7918498f30..4341f01a1a16797592c31e81c119d260cff7f9c9 100644
GIT binary patch
delta 1061
zcmV+=1ls%Y3&seLFn<I9Nkl<Zc-rlnJ!oBJ7{`D2>*TwM2{l%&q1CvwOL!>gl)Cvr
z2f@KX3JIm)=A=`m;-HhWgak^54y6uNyS7sWdC8)Su_+;HX+zp1H))#t>5%_{%Oyi^
za?ZIYz3(3m<ZyD&^Lzj2dB0!q^78WX^78WX>P%&l3S?$k;C~n}01N}K=pJAbcnUlL
ziom9GuJ+OxU}inQY2Xxa66gbZfo}cFbKn`U4XgkUfF<YL&XG32%-#Xc0j95=*Hv%0
zLXPmN=-LDv@Vj&F?;~Y^nVkYY0nX@4mw>Da4^RebKvnlSJum3KqUV7!<4@oh=iGx-
z8(?Prz{kL(>VJAkkGg>M;kPPJKlrlv;oxhvbNl_ixSCz~`P;#pI~&<iU<laNqd;xL
zUEo*e+*axgFtay+FMzYE(>c9=WqN*X<{<B!n;N;IHlwa==?4A)t~uxaO^pF&_AYP<
zcvWA$3wSs^zxGWO@1L6*`3^Xtj0k|oz^rrbueKXtW`E<rSE}n(AUAor*!}kVrO%_R
zUia?>*YEx~@H~v6w&4fo++y1dFtgWH_~UB0n4Vv|6lc#eH#IV=Kl8w<O!)7h@5>&t
z!MmumuO?CWrWjSlz9^Pt4FEn;H&+63Nff@xgq&iZ5leCgnAsR`9@qhb$;-v=q{r}z
z8HnM$n1A9oz|3;M1)yK`@KMwa-it^vABmwKxFELJGhj?<S5`WH-L9EjL+rAc#*#4L
zJxyi+{z<`%He~1%TYLtXSpk>`2RjEH;YFMUGa7i6fC({1Z-DC8I54R3!+MI=HP*#6
z2#mMV7POK9{hHI~fqcHJ{xB`27fU$RJ}uVB4SzVMiAe#de|ly8v$Pl>mb%zZHmo#7
zYQV4>ni^0UI9{7biveN@*AV)|8jAtF4O7#!sVcVKxC|HodX9hrJz|Z0F7Q&Q6$6SI
zcV{#aNt?nIs2#CJZom^QLZsb*XJU=TfNlLIUtG;Dq^0Cy$%}0}E(12%+q5VHnV)8c
zZhxf30I_7mwj$OS8$`7bXA4+Te_OBYW=^EV0I^im6D)}}+6-{cRe?odL*30#it7K6
zm^Oe#u}0qwI_Jv3f>vU7wQk>5i6LArUl3!g>jA&1p#gX^1z$g8*cMyt3nI(x?bQ|Z
z1-@_N*AHVC#Izi{0jgiO)X-Fb(fjv;>wifXUNJ|-um#*|rS2bUDD0eD2JUFwUDA$C
zqEgI~819IPL=2E_EA0ZH+OT7jMC#9~%L~MCJBhhKa~5m?SJ~UB%r$@|QTTA^`xv--
znC)`EIT{6AM{kcen9#WgBpOWU+#@ngMs(&OseO#-%wux<7}1#rC7Vo0<xyELFCH&1
fFE1}IuTItfa7VLU2M&6600000NkvXXu0mjfP3{Yd

delta 1491
zcmV;^1uXi;2=NP$Fn<NBNkl<Zc-rln%Wo4`6vlt!S7LjdkXLCYa!I0?w1T#TOKCSy
zwzPs(ckK>Xv8lv@J)4RJOOPrmb<zF-Y$)ogWkJ<~Zc+pY1xKbRDnl`W#2!E5*L0C%
zh!9nk$JmC<C(U9s9?y5bd(Z2h3qE}K@ZrOU4<A0ZCX7~nNPj660D6D~&=2&<JwOh4
z20R7wKu&Ajcw+=mN=1QjU<^nCaUceC%TLNc5hwujz<nU2wJyEZ0w|>>fR6wrvmKJl
zU3E2iG_RUmIY0w9wAOR4l>kbqG2nAxm&|kp2*}_8sz3v%%Y9IuhvmK|&m*!j?f{py
z*7rMF0Hu@(e18UfDz;vcM_r9bBbVQsca{z=#q)df{k4JGa6MKZ1ggPeFc;2-ADK7J
zZ12_HQerw04^#p@z_Pp_5#MkX_(^N+besT6sS)5SV7J(G5HO09#ijXE^JZaJ;bXVU
zUH;!caxsjG5sBZ4|B*bGbYioyUNM!r_>9}Yk6P=$JAXz1rPNN~IPjLtdRIAFUdo)!
z43#EIlLT0wM{f{_&P8X(PmgE2=ev7lMMQwdz;{~fdmH5*+=RiWfUkjVGE1R{Cm!ZA
z-((KfhH8Bn&mG-*rpK)f)CRI&WXCW_C#Dlo`GyH7%d*n8Z9i?B07@wfI4Og#xdGQm
zUq}ZQj(;wwb<g^%5TN1gbCS-K^SJ*?ziYTg1Ly+YwJht7ZQJ>l3m^{f1h50By8+j@
z`@>zc@Im1{uR>O3q_TbS;G#2lX|QUzhAWPC#ImeEZQHJ_Puun5u!Ok^5KNy>2TPNs
z39l2E(qw5OeLfwO$*Ty5!!2C_N~s;dm(5uH@PEWZXW{6AYE@cY8L4c?C6ky=#KbYa
zBc`zA`3g`<1%V^th(hILId31c545_7v5(mY%E@wGk}DH9BHTPTfgQ5!ssNd@nL$F-
zT3*J5sAbM(23KX4yM&wP0(>IH48_S}u9Pb6Y*#5;N|kmNCyP0`jSDyL1W-zafvIM)
zGk<?--rP`}-*_75&Yzk$B_vjWDdD*J0*HO3fL_38L>jrm?!x|dZ)g;D7xp(Ijhtk)
zy+CR$zF;jYz?7Ok1caO^r|5>=YP$t+!*11?a*C@;?Q!9{=>qh~W=0rr7Y{9Vw{`ii
zGK0lKi``N%g@t2}7XtK)qiFy&=R;?xQ-AjLgiCV|Aue1!5g^tqO{+uIw>w1u;ZhfF
zF|Pzj0MVuZ^;o^9Qv?t$O#!09)$>~5jlfz2$O9z_H^E>rnCp~52$!I6D+$+47vL!?
z8<YkR3}?fSIz<5C(iEU5Ts;w>An%0Cn`X9C1Q0GE;a2cUfE+7Liz;Aj`*m9xw|{k=
zrT@-^gv-k8SA}EF3jrJ;Bk{Io&X_TyYJ}T8exquH%^5Ssi-t-@xNfchTI)KH29^Lf
zPzm(JZ^y5<TY&iO_;u+axWX+hTsJ=qYOSll3@cmH%gJ*|r>$n-VkFNc9bRmg&j?3P
z_XB<xM?-8j))P%f@3m|E(RB1)Y=1V^Ovnnt&GQYB2dwn!!T{r^$DdGp-t%i6YJ|p5
zk3VTfLgDma%{jzcU$AZ4wJhr&R=U1MC>M%hkaqSt$ySbk_~P)jzF+zh;`z(K_gd>`
zo(mu%ELoNnXQdCgoS05Tohj#WWu&sb6@yRQNZcAdGa8Y>M}eQU*1vh33V*+hE3)h&
zKs|LbRgca_=RCLj+2~yAWU4O3PeeFeS$7(}-WP4#u2`0p0p15p!!;U%mj<iO9w+P7
zN=V#D+?qT-xok8HS2DjW@U7N*q2&UI2zkr0{$k|>NSEOn?!e`N04^D4k2AJu{lOZc
z;fur9M$e2!q$L)Tod1H>`b@z_{(8%|$Nd8mn`xt4`iRU+LTt@LQm+tVYaWw(g%Dfw
tpyW#;bmUQ4A3l8e@ZrOU4<B0<{{jn%iC-PXt4#m^002ovPDHLkV1fm5#bE#d

diff --git a/briar-android/res/drawable-xhdpi/contact_disconnected.png b/briar-android/res/drawable-xhdpi/contact_disconnected.png
index 9a398fba118a854f2bc778424cf318d316c45a55..d0499ddf1ffb6335c4b4f48d42ffed128d863a62 100644
GIT binary patch
delta 1135
zcmV-#1d#iQ3y=wrFn<I}Nkl<Zc-rln&udgy6vscAWb#8}(hl0vH<h3?B4`(KC<GMh
z!V0E}P`6#S`~E527F>4Ig@s_77Tbjd1A%g|iwcsI*i<JEYa8pRiJ6(qbTQu{j}j;|
znK$q0ye~YM%Ny?b-tRs4zH`pKkRd~c3>h+H$dI8wG0-bRW`C9gCV&G#0eD?)fHLqH
zSO=a0Wp}T?G6I;{7;qFg0vrbR1N(qc{pAI)0Xzrp1NVRxci()e1u(OBfcF5?Y!B&a
zM4lFp)>G3{1|0a=-G6(j1TeEBz=yyI&2$CGY48A5pbl)SJ*fA2wQG7mEYG+DeCzJ_
zQZ0a)jRUj5`+r*N6}=h({sC5jhrl0N>yP!m089dbp2NUvz?R+*>;FFi^X~pEbpn`K
z5%?H5sWm;Q{_g_|z!LDgyEp!)pCJiw3^=Xd4SCBb@GJ18yO&ZUfSDZwJ^|j)td9U8
z@B^^m?k_s*cT^&L0K6rS7zX|XuDbhD;sTi2H1L_$`hT`&ei8WE-5+&H;6uPiz)Zx(
z2JpGNFDE8|nFSjBA#Gd$bMF34Oq=UP;If)Sz$1yU)@h%Ed))9o1*Rgq`B(1#eO#Zc
zFbtQ1AlTGC)6hm+41(a7Fbpf5^qJcOp9}iTRV3t`yZ;z>;36AyvRM&_3!V0t>u~m`
zfV04+Hh-l>V7`YT{Jd-qi^ExQieCUT8w4%^<64Igfor{r-Q@*!;F@d?iOVH%i`@gJ
z<aSlHZ@Bwkz0Trf^F}1HJRxqe3oxT(2H*j3E5U5`mN+0zGqDO_W_jRLB-mMS_pPKx
zFWU>^QUOkhWA_En`kGeEKA_nCZVGA|cg1Bu+<&Iq*$dk7fN|yYt(5iwP)dOSC2?u-
zIx4PR7hpn(NnSxn$=z#7k6s)~;*=N1i8ur(Xrrks>|G;0Sc}vU_KRyQ0_=;VrcY8N
zz!Pz5h+`}Q900~50<5P<fc1y~W8xZnF7QgA9RZ#y?jBGgQb^G_3Xuxbrnq)pfOQoi
zT7LperbvLvhyWYyEYEfYc+O6BH%O5HfjH&FF%|*JGz*+nDP2?nGf{{`QJkvcSdK%0
zXTS<O2N!S4aMCD>ON-ZvxOP_nci#q<_04V2tlJ+?fdI$Fr6F$1;@bVspu1Or+p5HD
z0jJGuBtiEdp;<O>mCJ97W32UnMQt?5^?%MJIQwVB0dZRFML}eh=2=}U?>=v42NRh6
zgTQ$;^WwA`y8v2W*R|2qfH#3FI{)w0;B&wg*{+Gp^>)_&o<d=FUj=R|?yjg5HQPf6
zn3c_nINTH`dLn@Eo!o9%iO6L$JJ*BRKS%R)Xj``Lh)YN4_+%&y!%7eYE5N&|z-ZKg
zlR*$P!Z2KlY48{2`ml2}_JzCu-D#iM;b@l#_V4j{glzv_kcg1)-zzfz5u!gYN$ny;
ze_oT@MTq{qD7j1cn!2m988T$ZkRd~c3>o?r{{lG*ylE)}9)JJ<002ovPDHLkV1gPG
B9KQen

delta 1386
zcmV-w1(o`c35g4kFn<L@Nkl<Zc-rln-)j_C6vsciiAmI0+fXgNQLIu$Fny3qA)uuq
zsi0Ma`cNDC*y3ydl)egmEdF?~Ahx#H8Z0OT%0UYiB$n9JAA_}xbv4FplHES!J9Jn!
zyE~JeHM(<PU@kLr@ArPsx#xcGy#twLmRV+*WtLfHnYE|oT7T7$_dXB20;~c0fY($8
zC;$(EN#HS1FtgH2LxA^wC9nn93~U5e1FL`@z48or3QPgFfm^`1nN7dY1bFY?2Hpj{
zyxpm*9JxXq;WekL02uI#nf?Ak5#YVw415Uekf)14UY!S+1xmoY${l*XLghI<?^0x3
z2fj12Tg#dN?|*$SZ~%B;W4)+H-N3)V1aKetQ)B(1p7#N30jFyt@G3B)=UsaLXW+b<
zJy~`Hc<=jxPk{lA=?>L@8@K|D0e_fTxlTQuB48V^OZR0(OAqiH@U@xUT{Z-G@3#S;
z0qf=UZXf`D1g@CbvxN2bh=dP-Hx&_Gz+b>uW;XWR34ie3Zw0>4Sf7{YM}cq5>_L+V
zUI%;x3`W{`3Vdm1H=i2;-g~FcuT$azIBRC#rj%R{0*6)X1RjWldr9l;SYpEa9M}}e
z=BLf<hqR`wAPB~sbJNN*WhL5v=iId*2#QJS%r61Yeob>l5qZ|keo9-osExB~vnUMv
zlh&6{=zsl9z#d>)Nof=~-$Dt0UTt;>!yaKup8)TD2XF}J)i}HloN1MIR}_?hGitk2
zSPltW>JhL>VK=Mt1vC4*)vGwQc_E@KcL-Z7>rBx0pcXSl;0|!PPQ)CKB->N<@`U$(
z2so<ZyqO)V@%m+{PA5!*z<6pA;Jse~?2L$=D}QD-)4)tKudIF4d%w3v{d?8<a%8@*
z6$LX=ncc#)Qy801fX3HWY4)77{f!vyggIhZUasc(VHHa;u-y=roUm<;lMCWRK(E&H
z;ga?a(1;#CC2)&I!Xlo}>DzjCS6D(^TZFZ_LdZF{UTgce<e^{9>{<ijW!yRU1b9cC
z3V*#j;GCOs&TR%hsd$zHPMF!n2I?=Vj?g&;U?K>DLbD^FPl=`^*?TWW#vZ8>2>>7K
zqSEvFrct{W*+W<@tfWD}sz{hVN}%9Q==;#yxr+O;JRet4K8g&lRcR5h23Q#(U^2nn
zJyJnJx#IprOwWfl86jY$u%^BicquFn0e_FByTftZ7q>BG`{9Vka~1c)wRA$A;Th(S
zX<=<T0h8K<2nkplv-3k0ozF*xK)!;6p_l}$jS%oO&hU&&z!d-Q?z)(sucq)$>x!iq
ztIg8Flo!TS2q<WSb5>0EYXh@U&sQqElV&!eq<6AW#aN~OPM}|yW`(hk1_4jB(0>RI
zE;gv)dRA58MYH`PI-wj{6xFhRVF_`K3u|);Ftd5!rsmu-3;Xul8~i-#`Kt4LL?={6
zLOt6qEM;N4DXh((2F+|1xT>9)8DN+9zPrw64J*7FigB^<?`C1!Jlrn7DvYV_2aE#m
zv2cvF0oV;(tkJ1s2^3?aN^rL@lz)``Mq9BXG{M4IUAXSv=e>Wu)dEIs?o)AvFioUR
zfX3H3C7L<l4d95*|6A4hJa9y9&k4)9IAecFQrOHUfJ@TdMQueLXkh>xP@6?zxFk%p
zgaFz13cD^PtHTKtToUgOv2Z#xuePrXOCn2rG86<s(K$D+jgDR=q5<bzIb#Tdv6MQ0
zP@x|t@CU$gGy5lLo!Q}NlK{5w@puGm`~Dyi0pGsA$W#!~o<B)dA)-BhldD2Rd;Ta{
sMZPY(Uu84PEVIlq%Ph0ZGHX}+4=!a>9yGS0rT_o{07*qoM6N<$g6UhE761SM

diff --git a/briar-android/res/drawable-xhdpi/identity_anonymous.png b/briar-android/res/drawable-xhdpi/identity_anonymous.png
new file mode 100644
index 0000000000000000000000000000000000000000..c8f254fdac6b62ee348a82b48d5e166eeb6cfb11
GIT binary patch
literal 853
zcmV-b1FHOqP)<h;3K|Lk000e1NJLTq003YB001Be1^@s6?ZACh00001b5ch_0Itp)
z=>Px&4@pEpRA}DqnO|s*Q5?rV=XtltP$ILlB2q?~ZNCf4GOUz@OHywAi72;Rs9oSf
zh)7(xpeD(UxFKYX-TdCwZbpexdWLDu_6p-YE<9?@=6$y3wb}DL-#WeTbDnd~=XcKU
z{LXXE^FXRpsZvc%iO4h&nU?a$FE64EYlAddn)3XThz4v5ejiNI08Dwl7a{zX0=+<Q
z@PDGiKNkEbOVAGBT9CF+!t9F$-y5g*X8|i!^^K~&0jh(%iJE<};g2^0HUrm(Twf3J
zCQ8ZXi^$C|c`5%NM1Y9Y12;yvbtAa<uR9+re#r=c8Nh5{R*>cZbDd+pF|Hg~1{@fn
ztybWINZkwP%sXRv4}1)E3jIO)q^h3_bTCnTGYq~PXaYKc*Fl7Q1_q|j&VO%v)bTis
zR~t6euK)7MD*<K#Gk`p>7^nsws_K<dI-fYc8NrB+&e5=7+2EynEuGy(d1CFXUeNub
zbe}P_sp|a#GcZy7%<#g#@4vFPqIaMtbHZBt#P|JN#5J>gpeJ+Q7<XAU`?OH`r13MO
z81c?p+XkGq);{xnzki(YO5lt!99GS~3|lWr{LEjB=(pD11x{IOJAB{o8zX!n&<yNR
z)!wlhpA^0c(NG3B4!l*>b0Oh}fJ)$qs{V)=!m;KTJO=~~903}~V0U9NI-dl7*n`*-
zpk)jOv;=jErP%UAI>1%sfAB3V{a0C6RlNSkmmkUjE^k)XY|FL(xz^QHiqzTR`8C^e
z?JjRt7p?m-=7(~C@mO@V`T2*Td280y9(8$h)H!pkzM*#4(0f;#pMNkOi;6V>apo6v
zfQVE8UB9oJwybItk=tJfyv}Tg?$2g*@8B1&Peg7tZCN$+LDd!1jr#H{*8DKr(6zuk
zpdH+Pmp3`%ab8t(!^)MpJO_>E%D`L%>VY0rZH+hpvF3;QC|?6C2R4H_o$b)BQMPM2
z;G~Ew4-O!M!OUrmI0<9T595Fpz&%yH6LR0&1?(1)trX`gQF8erQYs?lQC>ueNNLJX
fl`2)L|585z?&-`o`IpIW00000NkvXXu0mjfNEn-4

literal 0
HcmV?d00001

diff --git a/briar-android/res/drawable-xhdpi/identity_unknown.png b/briar-android/res/drawable-xhdpi/identity_unknown.png
new file mode 100644
index 0000000000000000000000000000000000000000..e3b91a85841af0985cc2635ea3ec9e516719520e
GIT binary patch
literal 1470
zcmV;v1ws0WP)<h;3K|Lk000e1NJLTq003YB001Be1^@s6?ZACh00001b5ch_0Itp)
z=>Px)cu7P-RA}DqnQe#_RT#&A&&-|mx~5_;t~=sto0Ti6t0!tnT~iYBB`btV=u028
zFibQkNGRCog@}qu2_+N~6v`qj`;eFvmIP-v3{x{J6dBEz)phT>&b>2FAG{mewz_xs
zF6+H<|8Tf>&YUy9bI$)fGv~}eNhOt3QgO-{GsqY-sKoEPoIKkwGn=lJik_dyvjO*K
ze|KJ^0VsODlSlZCuXUm+wN5m}7&HDFg#UP;8E7tMexD6!QyyI4W+pChGZWjCMb}{V
zJqmo3O^*~S-|3_KL(i*>sgT&Okk~)3Qe})8I)JlpC@{%dd(>Kc6qsDB{5}~V=z>*V
zI3um1X%$`Ng);<QFo3gfKCrpd@#bt^(ee9a!136rt9LU-1Q9{%-HbUNJ9Ps%0E?})
zUvwN~|1T~^zSD>Bt6S}b^DnAsN8UvhUG0VQjWKlt5dL+*)^1L1Ek=H#8$dZQ3>cbC
zBY+!FDo!C~K}^*IFG`3Y|J;%Unczf;AYHbkYTBLCZ$d+alfaqmO5s8_wODK0dgx%c
zd{st@Xa#UP@N_p-zXR49GwqP7oD|`&V&F>`_)=g_trLy7MdERQB%sYhQ?5tLT~RbI
z76?_evjG6AXql)u3O~B;S5cZ_X=F$S$^kv1&YwTUZZojUTD##2onH#f0rmlZWFxc<
zXiW}_Gkd;i+MUa+nm&8#z3nYd0=SOL{1~_ym|SRl>825LCrh+uaWXybx(roa2fDXX
zMOzab-PZ2?xli3!thHbFFazhRGJVwT=?`{n*>|E}o|sD}k2-P4drE{og~oTg77l{o
zcem1S`YiOWpPk554TAE%nxKldz^RoNlV7%oylidb_dV4Kg5Y=GuWW8T?Y`#w{<lF8
zr1HFHSG1mX-xJaGg~)fW(1?@Oqy5Iuqr}KrZl*d3gL`X&DtZpit`3viMmRKB+xT0q
zb%P){>HGd3;2q!he+Yu$LLWOn8hBfTRfWoTuhNJM)xN*$^C)q{OgE|-B088HJrI;L
zIOm=Xlbc2e&s%God)xRR2rl@(|0VFI@B2+b5S;I2=c|AQU|AvaC5H>S7nK){6OCEs
zg-^siRB=$&r^`0l*gZB_Xt35sd4{kHyb2t**1nr#oo9g2zzc=W?{Obst&Ii?4ZEU5
z%FO}p0=uF_sy_z5gAcp_)c2xVeSZx8K=5<jh*huj!g*n*&DWI_s_05DoCj3*<Nl`_
z*wTygTZ)CBqXAljaxRw#u?T{44z#BK`mYn>h%ndEm&@veV&LawKx-^_Oe)X#{~Bmj
z&ML>6m1A^?i%I1fzcrRS`mOu1++DjUwfDdG+G(SWndW!RuU(YdtFhc&4E&r7$Ox6g
zLn=F#mr0Zl%e;@*TuOfO?4{(^-Qw&`qNrZBVt7bpMlP4{4~fIrjSUA+b<VqI*3>l`
z%NkXAsc!nz$2*_f*l_TaIE*a@evbwiV=8Aj(bxz`sB*YW_CMTSzIK1g-TX_FU45j<
zKDRyeUVEs${QbjavOl3p1k7-vvBsFZO~_v3K*#Z%g;VN{F`r&)b@nwj+2xIm_Q`a+
zbKV&9$()5#IzK266azn(W$4Vu-1LT9ohZ32<Nf+`<nDAG)>>;*UCIrKVxFGlM)xgF
zq;ESMyX{*eZ>hERyF3SACU7IL7j(JCk`jmay5noi3UPD@$U2}7I9=%cTt3RzZpwH&
z!1I#Ax}Tctfh#Q6QotLoG20tMcR7$w3bom{g!!lzr~&4Kyw!Mh{_Dn=n(PKBot?P_
z&CkVviAiCHwRU@s>*fQ%3S-Oz^v_qSiO_5Q(*FhD7~>gZD)M;|WsLDk{E|v4sicC`
Y-%B_^7(+Az6#xJL07*qoM6N<$f)t6=NdN!<

literal 0
HcmV?d00001

diff --git a/briar-android/res/drawable-xhdpi/identity_unverified.png b/briar-android/res/drawable-xhdpi/identity_unverified.png
new file mode 100644
index 0000000000000000000000000000000000000000..85785c09cceadbf4357e8ac8e0f25366ab5c5f19
GIT binary patch
literal 1565
zcmV+&2IBdNP)<h;3K|Lk000e1NJLTq003YB001Be1^@s6?ZACh00001b5ch_0Itp)
z=>Px)*GWV{RA}Dqnrm!SMHI*Xb9cAhwroom=xwKE3zZ1vT_!E%As|YyqG)^(5@JFs
ziNRE{#78J<0)cNl0uePTFEJQvA_)p17$gw12@X}%w4elNZ7)k{yDr_b?BgCkP)uzK
zd-p+aiTh6`o1LB6-<&gN?wOfgAgQF1O6vZU5F%9wk(%VkE+x(}Jk(Rn(tXdj#yNn;
zdS1UX$pQC0-xA028}n$Xzp{vja{X}qsA*cq055;j`2ZdO;OCrcvGQYn1bKbzsg=)k
zjbHg}*LbgwEgtC5Gn)@!34qUf$_oRU1B4KcHjgsW#Y5c1L%hwSxP%an0gOJ=`2Z$K
zDVwB}O#mjx%8zLR6h@17ukDx}3NQ)<80}u$F<W7@XrLTmHXp#_0QU8IzptlmV3eg!
z-%5>~LiGg{sxKgF<dmgO-}-;y3n9KVQg=_1un?kr%WIu)j>!!>83O|VJ;-Q6QE=EF
z?$M_;P5bK}8*e%vz-3L-8hY1r&cmGZtZ4bxegNqJG66VxN;ZID45VImTT?Eyz*RmW
zV7+ZT05AqtJ|SSe&|+CSqM&S6p&AMhm>WPlfKC9{dx}>|*&V^aLCGgV4r8PO7z^N)
ze!89n@V*e!&Ji&;W4LOB&-%bu0GPj^)Sq4QU|<vhEX7LQsVVSTY~)=y^F{@9hR{t$
zy&V7mL?CM_F(`y1KcpQF2U+IL05Sq0md*gGKc8~x=xKW=fMZh1kMCgopx^^I3*cf;
zj_d}|WzW<@r@pU0ZX~K_JzO%+?^Ub-h5$$hpaU2UU~*qR>t_%P<_mw#>Sf+h!-kNn
zuc6V32-M!inl|mrymU<3H%KXuMu<Su`9zqNJ2v>?q5WsCBqU=mot%5+ob6@CaH=n#
z^*@MdQ`{Yvm8U;-KRtY?J|b2p5P`0Fl(y1J^?>RO?~wA$FUFp;=JSbI4P&U1Qo7^J
z87dLBGe#Tw<FmVT<n9jTow`rl&#T$GGg>DQf!v)+NBK)?t?Ja*ODS8U9JuLx0Gk1<
zmQuFF==^*Dn*dbbiGRm)fRwUTb?Vh+mFgbtn&MFuGQLk&2--EpQ&y?&QJs2qw8jq>
zK7i!_)(atAF*x4^U_F54cjGeyUu3!7&EBmj_mAAVs&jc*zk3&pLRhsmd)MJQd$S{*
z)=4SDaV}xg`2aQoXpvHGGuY=<0QmscMB*z3A|dQZr*(S|r~3?@8Z5xx!|A?67(ZC}
z0M-DQ6GgW<Mw}nbRYcLwnvRN4fJJ-`gaV9q)^t<=C`#b@$8<h`{ZX{vZ<KFv0;re>
z9wUj6F)$){04h$L{igHB>0tznw!YPt#wBb5JlB<pb4zdXJ{Mxp+Lh)j?MgH7-@u$(
zdXsyuD-#oCzS(@z+4QN4eRch8SM!CK#{1S!UF@qPolQ^J1O!4X&*{+fZg1}_X*yp2
zU})_lRXJbHSfPIL`O%Czi(LoNEl)TddR`#J@)G3$v-wOx;jVR!ZN2Me&Mm1Soz)Pr
z_sVCLEbIN*u62!VOhI8nF5`p{c@;BmEL&LSAFEh^y2g~>CoSQ%-9Gm9uV>{puc!5B
zOJ`x*8{4wm=au<03Uk9b(1GTw7I#o_9oICiE6!br>3jeMnx>rufcZ~Mnd5X6YzYV0
zkuzuH7ERN>QFHPOIp-UTMb4Fr=iQfkF6W9l=YK}xN1Oo8dC7|vzU7%2<XijE(9=6=
z9S4RF)i?em&-`|~O>3)mZsNGy69-SEr8Zo$Vak}G)n-N3iJ$GKG)-%Y#{q+Z51^ZK
z{x|1&Z~48JT*mOWl=5G`rfKIn=imCh%5ywFZz1Qr5r7?lJrdu@IiRZR1{=))TSgk~
zkWw~8XkYBR!B!Fw9Fj&CrIg#_j6l=*0Ez+F0BknG2T%<l2%sSn-^jlr#t%uOLsH6v
z2KUVk0IGx#Pa-kD5}D2i5G{X2Lij=mn-D^c=ORi7VN3FpN-C+O2BrQ1>$?H|i<QY3
P00000NkvXXu0mjfb0goW

literal 0
HcmV?d00001

diff --git a/briar-android/res/drawable-xhdpi/identity_verified.png b/briar-android/res/drawable-xhdpi/identity_verified.png
new file mode 100644
index 0000000000000000000000000000000000000000..d93ae1df22bc1530da908a3ad53d12b92e68da8d
GIT binary patch
literal 1139
zcmV-(1dRKMP)<h;3K|Lk000e1NJLTq003YB001Be1^@s6?ZACh00001b5ch_0Itp)
z=>Px(ElET{RA}DqnO|sIRUF5^=idBjZrYf(>C!aaYO<Enbe*ne>xOg#-4y4jWkSIr
zKJ3AV3B$LEFQW(|_#ld)4+?z|6gMAcQPi~+oTyuO!XC=jLAN@)?auyP|J>XrH#a|D
zBG|c^+oX2(CSN#&z&U(=zw`TZ?ztBzsicxh+L+>;yE*6X5<h=Q1=_GTJ06xcJl|2E
z0ncWC2OiP}Y<Rw-fbwgMbR-|k{%aIMjIDF|+k&5W3o;G75IeB!j~!U{n+6WAck0=N
zFXb8iiupToDBNo747VCP=kLgMob!rx%s$)j^Q!<xhq`;`_Zdk>Mv_r?@BBV6I<#)-
zXCr=I0a%=rJ6rba?Tmpj2G+7)Z(p30JJ-v9JMrZ_%5TrE9__{2=5z#L0Dz1MIGm)(
zTEkUURd4>s<!>uKyAMDC-~&*R9hCs8iLlAgS-CbVg^rz?>Qej^`TM%WT{iwvPffqK
zDx*3*w8R)D0n7lH1F)DK3qpuQ4hM^h&+dW00^lj7(o8(wrFRkmvI7a(MVhmWv_K?X
z@2kngj3gt*R<0!iIo-q-rliZ$<BprgGV_`#<~7q$7y~Z#dwxpH$qIlWA;iZIaK7mH
z_p5-Xz18N??%w&mZZC!J1+7*@prpobo#}n#oHir(2_eqr$iSlF|Kki$RrPwnUpMy4
zr{(^(gZdU{8I*jDAOa=svZ+sA4)inNJt5*h=UP*2eE9)J{PF14Q2fGY-c7B~EJs~R
zM!~9WAZWAlY~Rtqm*v%&H-(5>z9|+HU;Y;(78|yPhK9dTY64L+QN1M{A+lzKBonTk
zcMqL9;XmuGq!U7jxz%P*vGC;_Mx+~}p@Hk?-A&WKImQ~FNbW!mBbY?^{#{?+r8CN?
zOTimLh*ZA)vl#d}FJeLnQ<8D=@?cp~lC4A^$j&_}gfI(z?zTJM>P<Mh`-s+LrY*dr
zN&~x(XiWg3Yk2>$E#G1QsHJMN>4%jbNDNh*O+P>_Yv;dx`IZ8Z(xvU;Z7I)+UdISa
z)6&G!j5Gm8E9Qr{r93HJ+P+rq+nI0agN&iGpf8w-nJES$ki$)E;Qflzqd$~Q5P{kb
z>X9dpEgm+OC1MQB7tF*Aodwrw1MJMt834|CsG`R3kO|06!uYUj`1I?Q7c0Z*??y&1
zegy!YiuUI(eD1x~^UhpHWLK(#OrW;e@OZ0uNC=@8`0~rv{G8`{U0vOdJuhjmxfEz$
zzwH|w`BoY9_~<Pm;v;{}xqVx`8f~uq@!GF$-;KC)p}s9$ULG*(Z^Yf_R8{@GkPWaq
zpIOL&<0+j*061M9`cMdQCCB`hl+IoSV7NRqE`<1?zznoC-^v*fb9v|+Aw<8$=jJN_
zj&sht06ez_Ex363oO37VJXpZ`Am`j!;+IrXNhSR+^(S@;ev|OyLP-Ds002ovPDHLk
FV1kAcHADaa

literal 0
HcmV?d00001

diff --git a/briar-android/res/values/color.xml b/briar-android/res/values/color.xml
index d9fb00b4c6..c7cc015fe1 100644
--- a/briar-android/res/values/color.xml
+++ b/briar-android/res/values/color.xml
@@ -4,7 +4,6 @@
     <color name="content_background">#FFFFFF</color>
     <color name="unread_background">#FFFFFF</color>
 	<color name="horizontal_border">#CCCCCC</color>
-	<color name="anonymous_author">#AAAAAA</color>
 	<color name="no_posts">#AAAAAA</color>
 	<color name="no_messages">#AAAAAA</color>
 </resources>
\ No newline at end of file
diff --git a/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java b/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java
index d36a862bdc..7fe48d2980 100644
--- a/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java
+++ b/briar-android/src/org/briarproject/android/contact/ConversationAdapter.java
@@ -3,10 +3,12 @@ package org.briarproject.android.contact;
 import static android.widget.LinearLayout.HORIZONTAL;
 import static java.text.DateFormat.SHORT;
 import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP_1;
+import static org.briarproject.api.Author.Status.VERIFIED;
 
 import java.util.ArrayList;
 
 import org.briarproject.R;
+import org.briarproject.android.util.AuthorView;
 import org.briarproject.android.util.LayoutUtils;
 import org.briarproject.api.db.MessageHeader;
 
@@ -41,14 +43,10 @@ class ConversationAdapter extends ArrayAdapter<ConversationItem> {
 			layout.setBackgroundColor(res.getColor(R.color.unread_background));
 		}
 
-		TextView name = new TextView(ctx);
-		// Give me all the unused width
-		name.setLayoutParams(WRAP_WRAP_1);
-		name.setTextSize(18);
-		name.setMaxLines(1);
-		name.setPadding(pad, pad, pad, pad);
-		name.setText(header.getAuthor().getName());
-		layout.addView(name);
+		AuthorView authorView = new AuthorView(ctx);
+		authorView.setLayoutParams(WRAP_WRAP_1);
+		authorView.init(header.getAuthor().getName(), VERIFIED);
+		layout.addView(authorView);
 
 		TextView date = new TextView(ctx);
 		date.setTextSize(14);
diff --git a/briar-android/src/org/briarproject/android/contact/ReadPrivateMessageActivity.java b/briar-android/src/org/briarproject/android/contact/ReadPrivateMessageActivity.java
index 932e6b49cf..06c72712ac 100644
--- a/briar-android/src/org/briarproject/android/contact/ReadPrivateMessageActivity.java
+++ b/briar-android/src/org/briarproject/android/contact/ReadPrivateMessageActivity.java
@@ -10,6 +10,7 @@ import static java.util.logging.Level.WARNING;
 import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP;
 import static org.briarproject.android.util.CommonLayoutParams.MATCH_WRAP_1;
 import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP_1;
+import static org.briarproject.api.Author.Status.VERIFIED;
 
 import java.io.UnsupportedEncodingException;
 import java.util.concurrent.Executor;
@@ -18,8 +19,9 @@ import java.util.logging.Logger;
 import javax.inject.Inject;
 
 import org.briarproject.R;
-import org.briarproject.android.util.HorizontalBorder;
+import org.briarproject.android.util.AuthorView;
 import org.briarproject.android.util.ElasticHorizontalSpace;
+import org.briarproject.android.util.HorizontalBorder;
 import org.briarproject.android.util.LayoutUtils;
 import org.briarproject.api.AuthorId;
 import org.briarproject.api.android.DatabaseUiExecutor;
@@ -116,16 +118,12 @@ implements OnClickListener {
 		header.setOrientation(HORIZONTAL);
 		header.setGravity(CENTER_VERTICAL);
 
-		int pad = LayoutUtils.getPadding(this);
+		AuthorView author = new AuthorView(this);
+		author.setLayoutParams(WRAP_WRAP_1);
+		author.init(authorName, VERIFIED);
+		header.addView(author);
 
-		TextView name = new TextView(this);
-		// Give me all the unused width
-		name.setLayoutParams(WRAP_WRAP_1);
-		name.setTextSize(18);
-		name.setMaxLines(1);
-		name.setPadding(pad, pad, pad, pad);
-		name.setText(authorName);
-		header.addView(name);
+		int pad = LayoutUtils.getPadding(this);
 
 		TextView date = new TextView(this);
 		date.setTextSize(14);
diff --git a/briar-android/src/org/briarproject/android/groups/GroupActivity.java b/briar-android/src/org/briarproject/android/groups/GroupActivity.java
index 11ff72b1e3..629a73b439 100644
--- a/briar-android/src/org/briarproject/android/groups/GroupActivity.java
+++ b/briar-android/src/org/briarproject/android/groups/GroupActivity.java
@@ -230,6 +230,7 @@ OnClickListener, OnItemClickListener {
 			i.putExtra("briar.AUTHOR_ID", author.getId().getBytes());
 			i.putExtra("briar.AUTHOR_NAME", author.getName());
 		}
+		i.putExtra("briar.AUTHOR_STATUS", item.getAuthorStatus().name());
 		i.putExtra("briar.CONTENT_TYPE", item.getContentType());
 		i.putExtra("briar.TIMESTAMP", item.getTimestamp());
 		startActivityForResult(i, position);
diff --git a/briar-android/src/org/briarproject/android/groups/GroupAdapter.java b/briar-android/src/org/briarproject/android/groups/GroupAdapter.java
index 4900e2f3e1..25195e5d3a 100644
--- a/briar-android/src/org/briarproject/android/groups/GroupAdapter.java
+++ b/briar-android/src/org/briarproject/android/groups/GroupAdapter.java
@@ -7,6 +7,7 @@ import static org.briarproject.android.util.CommonLayoutParams.WRAP_WRAP_1;
 import java.util.ArrayList;
 
 import org.briarproject.R;
+import org.briarproject.android.util.AuthorView;
 import org.briarproject.android.util.LayoutUtils;
 import org.briarproject.api.Author;
 import org.briarproject.api.db.MessageHeader;
@@ -32,34 +33,27 @@ class GroupAdapter extends ArrayAdapter<MessageHeader> {
 
 	@Override
 	public View getView(int position, View convertView, ViewGroup parent) {
-		MessageHeader item = getItem(position);
+		MessageHeader header = getItem(position);
 		Context ctx = getContext();
-		Resources res = ctx.getResources();
 
 		LinearLayout layout = new LinearLayout(ctx);
 		layout.setOrientation(HORIZONTAL);
-		if(!item.isRead())
+		if(!header.isRead()) {
+			Resources res = ctx.getResources();
 			layout.setBackgroundColor(res.getColor(R.color.unread_background));
-
-		TextView name = new TextView(ctx);
-		// Give me all the unused width
-		name.setLayoutParams(WRAP_WRAP_1);
-		name.setTextSize(18);
-		name.setMaxLines(1);
-		name.setPadding(pad, pad, pad, pad);
-		Author author = item.getAuthor();
-		if(author == null) {
-			name.setTextColor(res.getColor(R.color.anonymous_author));
-			name.setText(R.string.anonymous);
-		} else {
-			name.setText(author.getName());
 		}
-		layout.addView(name);
+
+		AuthorView authorView = new AuthorView(ctx);
+		authorView.setLayoutParams(WRAP_WRAP_1);
+		Author author = header.getAuthor();
+		if(author == null) authorView.init(null, header.getAuthorStatus());
+		else authorView.init(author.getName(), header.getAuthorStatus());
+		layout.addView(authorView);
 
 		TextView date = new TextView(ctx);
 		date.setTextSize(14);
-		date.setPadding(pad, pad, pad, pad);
-		long then = item.getTimestamp(), now = System.currentTimeMillis();
+		date.setPadding(0, pad, pad, pad);
+		long then = header.getTimestamp(), now = System.currentTimeMillis();
 		date.setText(DateUtils.formatSameDayTime(then, now, SHORT, SHORT));
 		layout.addView(date);
 
diff --git a/briar-android/src/org/briarproject/android/groups/ReadGroupPostActivity.java b/briar-android/src/org/briarproject/android/groups/ReadGroupPostActivity.java
index 83e97520df..d4591a8e37 100644
--- a/briar-android/src/org/briarproject/android/groups/ReadGroupPostActivity.java
+++ b/briar-android/src/org/briarproject/android/groups/ReadGroupPostActivity.java
@@ -18,9 +18,11 @@ import java.util.logging.Logger;
 import javax.inject.Inject;
 
 import org.briarproject.R;
-import org.briarproject.android.util.HorizontalBorder;
+import org.briarproject.android.util.AuthorView;
 import org.briarproject.android.util.ElasticHorizontalSpace;
+import org.briarproject.android.util.HorizontalBorder;
 import org.briarproject.android.util.LayoutUtils;
+import org.briarproject.api.Author;
 import org.briarproject.api.android.DatabaseUiExecutor;
 import org.briarproject.api.db.DatabaseComponent;
 import org.briarproject.api.db.DbException;
@@ -83,6 +85,9 @@ implements OnClickListener {
 		timestamp = i.getLongExtra("briar.TIMESTAMP", -1);
 		if(timestamp == -1) throw new IllegalStateException();
 		String authorName = i.getStringExtra("briar.AUTHOR_NAME");
+		String s = i.getStringExtra("briar.AUTHOR_STATUS");
+		if(s == null) throw new IllegalStateException();
+		Author.Status authorStatus = Author.Status.valueOf(s);
 
 		if(state == null) {
 			read = false;
@@ -109,21 +114,12 @@ implements OnClickListener {
 		header.setOrientation(HORIZONTAL);
 		header.setGravity(CENTER_VERTICAL);
 
-		int pad = LayoutUtils.getPadding(this);
+		AuthorView author = new AuthorView(this);
+		author.setLayoutParams(WRAP_WRAP_1);
+		author.init(authorName, authorStatus);
+		header.addView(author);
 
-		TextView name = new TextView(this);
-		// Give me all the unused width
-		name.setLayoutParams(WRAP_WRAP_1);
-		name.setTextSize(18);
-		name.setMaxLines(1);
-		name.setPadding(pad, pad, pad, pad);
-		if(authorName == null) {
-			name.setTextColor(res.getColor(R.color.anonymous_author));
-			name.setText(R.string.anonymous);
-		} else {
-			name.setText(authorName);
-		}
-		header.addView(name);
+		int pad = LayoutUtils.getPadding(this);
 
 		TextView date = new TextView(this);
 		date.setTextSize(14);
diff --git a/briar-android/src/org/briarproject/android/util/AuthorView.java b/briar-android/src/org/briarproject/android/util/AuthorView.java
new file mode 100644
index 0000000000..fbb2d8e775
--- /dev/null
+++ b/briar-android/src/org/briarproject/android/util/AuthorView.java
@@ -0,0 +1,51 @@
+package org.briarproject.android.util;
+
+import org.briarproject.R;
+import org.briarproject.api.Author;
+
+import android.content.Context;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+public class AuthorView extends LinearLayout {
+
+	public AuthorView(Context ctx) {
+		super(ctx);
+	}
+
+	public void init(String name, Author.Status status) {
+		Context ctx = getContext();
+		int pad = LayoutUtils.getPadding(ctx);
+		setOrientation(VERTICAL);
+		TextView nameView = new TextView(ctx);
+		// Give me all the unused width
+		nameView.setTextSize(18);
+		nameView.setMaxLines(1);
+		nameView.setPadding(pad, pad, pad, pad);
+		if(name == null) nameView.setText(R.string.anonymous);
+		else nameView.setText(name);
+		addView(nameView);
+		LinearLayout statusLayout = new LinearLayout(ctx);
+		statusLayout.setOrientation(HORIZONTAL);
+		ImageView statusView = new ImageView(ctx);
+		statusView.setPadding(pad, 0, pad, pad);
+		switch(status) {
+		case ANONYMOUS:
+			statusView.setImageResource(R.drawable.identity_anonymous);
+			break;
+		case UNKNOWN:
+			statusView.setImageResource(R.drawable.identity_unknown);
+			break;
+		case UNVERIFIED:
+			statusView.setImageResource(R.drawable.identity_unverified);
+			break;
+		case VERIFIED:
+			statusView.setImageResource(R.drawable.identity_verified);
+			break;
+		}
+		statusLayout.addView(statusView);
+		statusLayout.addView(new ElasticHorizontalSpace(ctx));
+		addView(statusLayout);
+	}
+}
diff --git a/briar-api/src/org/briarproject/api/Author.java b/briar-api/src/org/briarproject/api/Author.java
index 16693137b1..0ff392f9f9 100644
--- a/briar-api/src/org/briarproject/api/Author.java
+++ b/briar-api/src/org/briarproject/api/Author.java
@@ -7,6 +7,8 @@ import java.io.UnsupportedEncodingException;
 /** A pseudonym for a user. */
 public class Author {
 
+	public enum Status { ANONYMOUS, UNKNOWN, UNVERIFIED, VERIFIED };
+
 	private final AuthorId id;
 	private final String name;
 	private final byte[] publicKey;
diff --git a/briar-api/src/org/briarproject/api/db/MessageHeader.java b/briar-api/src/org/briarproject/api/db/MessageHeader.java
index 64831d9fe7..4a1b2054b3 100644
--- a/briar-api/src/org/briarproject/api/db/MessageHeader.java
+++ b/briar-api/src/org/briarproject/api/db/MessageHeader.java
@@ -9,16 +9,19 @@ public class MessageHeader {
 	private final MessageId id, parent;
 	private final GroupId groupId;
 	private final Author author;
+	private final Author.Status authorStatus;
 	private final String contentType;
 	private final long timestamp;
 	private final boolean read;
 
 	public MessageHeader(MessageId id, MessageId parent, GroupId groupId,
-			Author author, String contentType, long timestamp, boolean read) {
+			Author author, Author.Status authorStatus, String contentType,
+			long timestamp, boolean read) {
 		this.id = id;
 		this.parent = parent;
 		this.groupId = groupId;
 		this.author = author;
+		this.authorStatus = authorStatus;
 		this.contentType = contentType;
 		this.timestamp = timestamp;
 		this.read = read;
@@ -51,6 +54,11 @@ public class MessageHeader {
 		return author;
 	}
 
+	/**  Returns the status of the message's author. */
+	public Author.Status getAuthorStatus() {
+		return authorStatus;
+	}
+
 	/** Returns the message's content type. */
 	public String getContentType() {
 		return contentType;
diff --git a/briar-core/src/org/briarproject/db/JdbcDatabase.java b/briar-core/src/org/briarproject/db/JdbcDatabase.java
index ce5f74aab9..004c0787b1 100644
--- a/briar-core/src/org/briarproject/db/JdbcDatabase.java
+++ b/briar-core/src/org/briarproject/db/JdbcDatabase.java
@@ -4,6 +4,9 @@ import static java.sql.Types.BINARY;
 import static java.sql.Types.VARCHAR;
 import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
+import static org.briarproject.api.Author.Status.ANONYMOUS;
+import static org.briarproject.api.Author.Status.UNKNOWN;
+import static org.briarproject.api.Author.Status.VERIFIED;
 import static org.briarproject.api.messaging.MessagingConstants.MAX_SUBSCRIPTIONS;
 import static org.briarproject.api.messaging.MessagingConstants.RETENTION_GRANULARITY;
 import static org.briarproject.db.ExponentialBackoff.calculateExpiry;
@@ -1525,10 +1528,12 @@ abstract class JdbcDatabase implements Database<Connection> {
 				boolean read = rs.getBoolean(7);
 				if(incoming) {
 					headers.add(new MessageHeader(id, parent, groupId,
-							remoteAuthor, contentType, timestamp, read));
+							remoteAuthor, VERIFIED, contentType, timestamp,
+							read));
 				} else {
 					headers.add(new MessageHeader(id, parent, groupId,
-							localAuthor, contentType, timestamp, read));
+							localAuthor, VERIFIED, contentType, timestamp,
+							read));
 				}
 			}
 			rs.close();
@@ -1701,9 +1706,14 @@ abstract class JdbcDatabase implements Database<Connection> {
 		PreparedStatement ps = null;
 		ResultSet rs = null;
 		try {
-			String sql = "SELECT messageId, parentId, authorId, authorName,"
-					+ " authorKey, contentType, timestamp, read"
-					+ " FROM messages"
+			String sql = "SELECT messageId, parentId, m.authorId, authorName,"
+					+ " authorKey, contentType, timestamp, read,"
+					+ " la.authorId IS NOT NULL, c.authorId IS NOT NULL"
+					+ " FROM messages AS m"
+					+ " LEFT OUTER JOIN localAuthors AS la"
+					+ " ON m.authorId = la.authorId"
+					+ " LEFT OUTER JOIN contacts AS c"
+					+ " ON m.authorId = c.authorId"
 					+ " WHERE groupId = ?";
 			ps = txn.prepareStatement(sql);
 			ps.setBytes(1, g.getBytes());
@@ -1726,8 +1736,14 @@ abstract class JdbcDatabase implements Database<Connection> {
 				String contentType = rs.getString(6);
 				long timestamp = rs.getLong(7);
 				boolean read = rs.getBoolean(8);
+				boolean isSelf = rs.getBoolean(9);
+				boolean isContact = rs.getBoolean(10);
+				Author.Status authorStatus;
+				if(author == null) authorStatus = ANONYMOUS;
+				else if(isSelf || isContact) authorStatus = VERIFIED;
+				else authorStatus = UNKNOWN;
 				headers.add(new MessageHeader(id, parent, g, author,
-						contentType, timestamp, read));
+						authorStatus, contentType, timestamp, read));
 			}
 			rs.close();
 			ps.close();
diff --git a/briar-tests/src/org/briarproject/db/H2DatabaseTest.java b/briar-tests/src/org/briarproject/db/H2DatabaseTest.java
index 1799cfb642..37a4c944f2 100644
--- a/briar-tests/src/org/briarproject/db/H2DatabaseTest.java
+++ b/briar-tests/src/org/briarproject/db/H2DatabaseTest.java
@@ -41,7 +41,6 @@ import org.briarproject.api.messaging.MessageId;
 import org.briarproject.api.transport.Endpoint;
 import org.briarproject.api.transport.TemporarySecret;
 import org.briarproject.system.SystemClock;
-
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -898,42 +897,26 @@ public class H2DatabaseTest extends BriarTestCase {
 		// Mark one of the messages read
 		db.setReadFlag(txn, messageId, true);
 
-		// Retrieve the message headers
+		// Retrieve the message headers (order is undefined)
 		Collection<MessageHeader> headers = db.getMessageHeaders(txn, groupId);
-		Iterator<MessageHeader> it = headers.iterator();
-		boolean messageFound = false, message1Found = false;
-		// First header (order is undefined)
-		assertTrue(it.hasNext());
-		MessageHeader header = it.next();
-		if(messageId.equals(header.getId())) {
-			assertHeadersMatch(message, header);
-			assertTrue(header.isRead());
-			messageFound = true;
-		} else if(messageId1.equals(header.getId())) {
-			assertHeadersMatch(message1, header);
-			assertFalse(header.isRead());
-			message1Found = true;
-		} else {
-			fail();
-		}
-		// Second header
-		assertTrue(it.hasNext());
-		header = it.next();
-		if(messageId.equals(header.getId())) {
-			assertHeadersMatch(message, header);
-			assertTrue(header.isRead());
-			messageFound = true;
-		} else if(messageId1.equals(header.getId())) {
-			assertHeadersMatch(message1, header);
-			assertFalse(header.isRead());
-			message1Found = true;
-		} else {
-			fail();
+		assertEquals(2, headers.size());
+		boolean firstFound = false, secondFound = false;
+		for(MessageHeader header : headers) {
+			if(messageId.equals(header.getId())) {
+				assertHeadersMatch(message, header);
+				assertTrue(header.isRead());
+				firstFound = true;
+			} else if(messageId1.equals(header.getId())) {
+				assertHeadersMatch(message1, header);
+				assertFalse(header.isRead());
+				secondFound = true;
+			} else {
+				fail();
+			}
 		}
-		// No more headers
-		assertFalse(it.hasNext());
-		assertTrue(messageFound);
-		assertTrue(message1Found);
+		// Both the headers should have been retrieved
+		assertTrue(firstFound);
+		assertTrue(secondFound);
 
 		db.commitTransaction(txn);
 		db.close();
@@ -950,6 +933,62 @@ public class H2DatabaseTest extends BriarTestCase {
 		assertEquals(m.getTimestamp(), h.getTimestamp());
 	}
 
+	@Test
+	public void testAuthorStatus() throws Exception {
+		Database<Connection> db = open(false);
+		Connection txn = db.startTransaction();
+
+		// Add a contact and subscribe to a group
+		db.addLocalAuthor(txn, localAuthor);
+		assertEquals(contactId, db.addContact(txn, author, localAuthorId));
+		db.addGroup(txn, group);
+
+		// Store a message from the contact - status VERIFIED
+		db.addMessage(txn, message, false);
+		AuthorId authorId1 = new AuthorId(TestUtils.getRandomId());
+		// Store a message from an unknown author - status UNKNOWN
+		Author author1 = new Author(authorId1, "Bob",
+				new byte[MAX_PUBLIC_KEY_LENGTH]);
+		MessageId messageId1 = new MessageId(TestUtils.getRandomId());
+		Message message1 = new TestMessage(messageId1, null, group, author1,
+				contentType, subject, timestamp, raw);
+		db.addMessage(txn, message1, false);
+		// Store an anonymous message - status ANONYMOUS
+		MessageId messageId2 = new MessageId(TestUtils.getRandomId());
+		Message message2 = new TestMessage(messageId2, null, group, null,
+				contentType, subject, timestamp, raw);
+		db.addMessage(txn, message2, false);
+
+		// Retrieve the message headers (order is undefined)
+		Collection<MessageHeader> headers = db.getMessageHeaders(txn, groupId);
+		assertEquals(3, headers.size());
+		boolean firstFound = false, secondFound = false, thirdFound = false;
+		for(MessageHeader header : headers) {
+			if(messageId.equals(header.getId())) {
+				assertHeadersMatch(message, header);
+				assertEquals(Author.Status.VERIFIED, header.getAuthorStatus());
+				firstFound = true;
+			} else if(messageId1.equals(header.getId())) {
+				assertHeadersMatch(message1, header);
+				assertEquals(Author.Status.UNKNOWN, header.getAuthorStatus());
+				secondFound = true;
+			} else if(messageId2.equals(header.getId())) {
+				assertHeadersMatch(message2, header);
+				assertEquals(Author.Status.ANONYMOUS, header.getAuthorStatus());
+				thirdFound = true;
+			} else {
+				fail();
+			}
+		}
+		// All of the headers should have been retrieved
+		assertTrue(firstFound);
+		assertTrue(secondFound);
+		assertTrue(thirdFound);
+
+		db.commitTransaction(txn);
+		db.close();
+	}
+
 	@Test
 	public void testReadFlag() throws Exception {
 		Database<Connection> db = open(false);
-- 
GitLab