From f596383883d19304a91caeb723323c0892feda24 Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Tue, 18 Oct 2016 11:12:25 -0700 Subject: [PATCH] uniqueSignature -> vrfSignature // FREEBIE --- android/jni/curve25519-jni.c | 6 +++--- android/libs/armeabi-v7a/libcurve25519.so | Bin 139732 -> 139732 bytes android/libs/armeabi/libcurve25519.so | Bin 135628 -> 135628 bytes android/libs/mips/libcurve25519.so | Bin 237028 -> 237028 bytes android/libs/x86/libcurve25519.so | Bin 176520 -> 176520 bytes .../curve25519/NativeCurve25519Test.java | 12 ++++++------ .../BaseJavaCurve25519Provider.java | 6 +++--- .../whispersystems/curve25519/Curve25519.java | 12 ++++++------ .../curve25519/Curve25519Provider.java | 6 +++--- ...eSignatureVerificationFailedException.java | 16 ---------------- ...fSignatureVerificationFailedException.java | 16 ++++++++++++++++ .../curve25519/NativeCurve25519Provider.java | 6 +++--- .../OpportunisticCurve25519Provider.java | 10 +++++----- 13 files changed, 45 insertions(+), 45 deletions(-) delete mode 100644 common/src/main/java/org/whispersystems/curve25519/UniqueSignatureVerificationFailedException.java create mode 100644 common/src/main/java/org/whispersystems/curve25519/VrfSignatureVerificationFailedException.java diff --git a/android/jni/curve25519-jni.c b/android/jni/curve25519-jni.c index 9953a62..d1d6eb3 100644 --- a/android/jni/curve25519-jni.c +++ b/android/jni/curve25519-jni.c @@ -100,7 +100,7 @@ JNIEXPORT jboolean JNICALL Java_org_whispersystems_curve25519_NativeCurve25519Pr return result; } -JNIEXPORT jbyteArray JNICALL Java_org_whispersystems_curve25519_NativeCurve25519Provider_calculateUniqueSignature +JNIEXPORT jbyteArray JNICALL Java_org_whispersystems_curve25519_NativeCurve25519Provider_calculateVrfSignature (JNIEnv *env, jobject obj, jbyteArray random, jbyteArray privateKey, jbyteArray message) { jbyteArray signature = (*env)->NewByteArray(env, 96); @@ -121,7 +121,7 @@ JNIEXPORT jbyteArray JNICALL Java_org_whispersystems_curve25519_NativeCurve25519 else (*env)->ThrowNew(env, (*env)->FindClass(env, "java/lang/AssertionError"), "Signature failed!"); } -JNIEXPORT jbyteArray JNICALL Java_org_whispersystems_curve25519_NativeCurve25519Provider_verifyUniqueSignature +JNIEXPORT jbyteArray JNICALL Java_org_whispersystems_curve25519_NativeCurve25519Provider_verifyVrfSignature (JNIEnv *env, jobject obj, jbyteArray publicKey, jbyteArray message, jbyteArray signature) { uint8_t* signatureBytes = (uint8_t*)(*env)->GetByteArrayElements(env, signature, 0); @@ -140,7 +140,7 @@ JNIEXPORT jbyteArray JNICALL Java_org_whispersystems_curve25519_NativeCurve25519 (*env)->ReleaseByteArrayElements(env, vrf, vrfBytes, 0); if (result == 0) return vrf; - else (*env)->ThrowNew(env, (*env)->FindClass(env, "org/whispersystems/curve25519/UniqueSignatureVerificationFailedException"), "Invalid signature"); + else (*env)->ThrowNew(env, (*env)->FindClass(env, "org/whispersystems/curve25519/VrfSignatureVerificationFailedException"), "Invalid signature"); } diff --git a/android/libs/armeabi-v7a/libcurve25519.so b/android/libs/armeabi-v7a/libcurve25519.so index ab6e175579567897d53b7f2bb0ae7e902c47253d..40f3d6ba2fa57b281e90074631c299a80ef68220 100755 GIT binary patch delta 3052 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 diff --git a/android/libs/armeabi/libcurve25519.so b/android/libs/armeabi/libcurve25519.so index 6b7d0cbb86f1b4b5a87e15515013cf02bcf064e0..64a61a4247b13cbf867404d48b442db206f72ecd 100755 GIT binary patch delta 3384 zcma)C@Cn+YaU zxHw}HNKnulT{SgYrroFBjB_2%>8SGM*q^)Kwx zc5iw9jo{09Mhh?12i!zIC8C++qF2#+w=zX2?m!zgpQuLh9ki)GCi>JlVNXm{5BqTVv5B*kv9Rc1nXBuuwZ?ucly%^(h(VPmO(3Y@DVl!Ay= zg70MzwL>Q(SU1JK0X#m3DG@uD`agjm4`ZrO_7`+?4CD}9QXOAUnc#alAdcx#v~q%Y zZ0!glQlRWT;Cqowht&eBz>9rEUnqS!m|>5u(D*8_-!@*~j*g32M6t@?Met(q3B|91 z7iJSpQwzKW9)jMh^j%OlkB)jwXq|Z__z*(&BQ-%Qcz?{~ zgx%l|u%KoCId~%$^eFo=a4I&Gu6Q2u#V6n%#Vf$;*M%I?LuXiyjxHGBh(r7mxDy_Z z!E@>0AHe&ePgMG|;95*jp?DB{5qwJV5IC)fX@}ww@Ln8Ysp24*afH3dKcNMp@i25^ zK!Gw?2p%awNYxoH0gsn5?Na)mfL{Sy5y}F;3-&2}9(X4bk5_Ra*q(^W!B5FNBJ+<- zBrl@FDl!WDz+czki9wMO=mKA|aUXch#@~V?YA5Zr8ANS1o)5N4DD#2OV7wl$7Dz`& z_@>F+p96M*k12gQxEpMx(t2<|*m}+Og1wbY^Ob!!xD*_&_%yfzY#rfc@NX(vr($LB z4LW3&u=pOh34BiJV_gtbnUB^pg_nWHw&OKZnR4|MeJQvAA>X3(HQ?bIeKKTC=(uJJ z>6>x_TL?b{ud(r$;A1wv1C}ARA{rJ&)C0W-)5s%Cn!-!KS9F_!Pj=XNEts$)Yl3Z4 zxEbuR>D#C9JK$WK{-Y^82-X{)pL|MhqoWsW-33}S?s~9w<_p2Mz<9kwJ6Zw0YvZ+G zPZC}klvo-G7Ea+!V4qD-B_)B!BG)*=Hf-Ny>~s~WHa_qlSKkcdy~KU&3OqUY25uK4 zEvbm3jonGvOo7jm9&_mD8gX)ct=AJjZn=JL_|%Xk_uAwho7`=aPuS#kn|#nFx7p+- zo7^}dr-T;XVN=vV4yU(K;rvkGanJO4-X6$I4@~D_ zV>IJ9w;M;i_-H9Hsxtd{sgag-oGXmWS$TXikeWTnTxDqf4DIzormu`u{(N3%bl~^C zanFB)4;uekd53$9ft*1;6X?vXWNml@?zuq1>ILs=2aXUGiYLOjoS!vu9bK65Xz4zD zIpOSX;sUyf%o>iH@))WQoVAzeDlUZk(2KSNP7!~L;XV97JQ>SN_-A5gEFb6DW@;Q~ zg!4beuM+r6jx;l8^ZTrwX(IZ{euepf*u9d2 zTp@Pnz^P~xmvE(v&x>c)vCfZ(%j?+WzYC=4a*hzA>-jaVFn4aiq>k`a=HYxUWd7J3 zE#Ns0J}IJ#_zm79kh6>Uw$O_CeeFOt(RuT1F=sotM>tF1M!I>Zge#e^3NB+^JB$zA zVewKKXKF zS4gJR9^_G(x~jpl-J#k9$dVg{vz2p_?&UmsD@T{~lR) ZO{i~4b?ASP7?*0fH(86#)L6$+{x4?!j==x` delta 3366 zcma)KG?6fi^~dLySg~$`6GI_#?Oxj5aDTQ+aj@ zsWy~_yfPQtSj$MNwstCAn@20okWMhR!KNmfm>*6xVv9|PIHfIg#O?Pk_jTX!SMSW* zdp`Gj?!D)p`|jP{fg|AqN5WehwK$zAuI+%=IabRQc#LE&j&0~{to+ZdYrE^8`Nfy@ z?W0eh<)Xz#Ge4?dN+f!ch-Q$BzK^<~hACWeC+e9=L^~AULcQcMqCYz){fUX1pueK@ z)!@ivqN|F30XVTbPMH*h#s*y#DH^cEcGJr8kM2B$XE@S zGl+f)O=fWK6#quB7Ka_d%B9{7&J1DNto%RL(QqlB=(1|~YRUlrkR4)}Qc=qR=3r@W zAR{Hp{~<6(F#SkPuo}EHhv=fxJzyvN(G=*v1H8)CU#~;Ml`JB+a@Yr63O=T|6}%{$ zC`?W826z~HhSGgtr-La?={Lbvkr}%U?k*tOs`OBe=&7%W`tAt?q*E#y(j$=)$7F=% z;I{l=iWz{d;A9 zWW>@3W&fE>riMK`{E;TkK!!w^J@bE>481;py4-gz!nGiRd6>V9K%Xv zfG5C*pvNiwU2r`H*sS;(_zJjJ@fYCqQl>h^{{|n#7FHNf) z92pch-S$^Z;c9S>O{em5-{R>j9btvrJv(=AF&bQ@%JhBa`Xs{WiECx@Jr#f5!7gJ_ z0?wy#AR(KheCHDuJM_2rVeig*Kacxk^XG4m^xm-SUYmW&W}mRxT{io5oBczZ-E6ZP zZT7b(?FRxA@3INi(nblT!>GMiKk@tjUS=FhoTr_KmFDYD+!o47z9lKsV);d1dYW$< z4;jPDk8+36p7E|@Y=f~e^DHkk=4Tz{GUGzlYVPtSXMf7P(U{0tt~IY`df&**E#{TR zL41xHw{x#^t8pps7N0cw^FQTYUnh>BHdKVW-50rH-fy**Lqr?I(h%OnMdrZ}{vd)& zL`^h*P5XKq(TCy((QNX+M6R13;XG0A=A#^CCdcsdQ2vvsoXH=t!%UyWr&;UWPxQVy zKAUGVcZisH_Hv!s8PCNFw1M?RY34)@e~-CEH080Mw~D5G%o%3h%;zc>pB2xpWu5O6 z7uI6F--!c-5J?Od@~d2C))!$=$DIQ6wPIe+{Cjh_gl9XrOK7G1W8NS-OSzQ)Dke(# zwAPZ1JvYykakhg`3NA+&51Vb}T*dsM7_VSmdkw#4hs54WUe0dwOeH6>bMOhG&+uFn zH#YKvJVQio;t!ms&{8KKadQ*@ihnH*ZszycBRpF$-E(ID7OrJ>n#-!VID{V)?Jx36 ze6P^9@!$BmIlPTmGxwOwYS`y=Cj8w0MR>-dn{&kY9!?agwVV@Km*1C1eTQ#Ek2GH$ zG(EL^GEBYPBB6oP%x^Yuyc?;kZ{ft4*86bV;?08)0j8|(<#G}PlAYvcHATGL^)iV z3@ueeM#HlJW`S5LO_`2X@jOhY6+xFsjzXu`qtU4Y|5-Z3FQvQ-|8nHhI4OTA<-orl RF(GBSHu+ST^WBak{9m$QlIj2e diff --git a/android/libs/mips/libcurve25519.so b/android/libs/mips/libcurve25519.so index 73338a95227a8d3cb70b14c9e8b253bf33f48934..babd834b7213cb3b2f78743e4c948e0f246ac003 100755 GIT binary patch delta 2000 zcmZ8ie@xV67=PaP%gJ#&;VT{@X?+im6N@rXDa>C-X(*d@_={DrV1h|2C4y}I*q!-D z#b`VBVwd3`tRGXCtg}NPrFnnkKdm-4b6H~<8*Mao9VJ^jl|Iki3*30w=bqjT@Tk}1k}4D2^xC2s zKj_n%e;8B(Re(e9tpeQ*)Bw)`%Yj;8C6KO0bBa{6aHvdUd3f{(=_+4b>9|9K;5%13fzX%NKn#o z?W7dS!@r9er<*XH$Vb@3GHGJ!8nY3io0uLuZGe63ZAtIwAU~tEzNn;=P~-DXPU&<+ORF!GrszdrvK`TO6415Aqbn-Rc& zN6;6#>K;zuq@?lb1Q4j$LxiR!^viJmM?@0ez-%&5fts{gRZh4MMbUEY<`C5AgrxOa zo`k)5MpA=zvkCe%B4}9mAs^?yiP@EejHJSOQ!ZB>h6gXf5lZz7qW5GD2v zx~I=aIr+1ay0nbx(%@G_Jz9S&ifz6ncmN4|6aFKnB-hJHxd7+!f5de2R#7{rjcWM| zri zI!Y&>pOSP%+n+`j@vhk{3Xw%e%B2dy-q$N=2%kFq1?X$^Dbfcc?eJX=Fhn$@)BKea z3e5KH0`x=Uf>wZXLX~sM^uW%43JGfatDrq!5}nowE@SyD>07zbK?VZYF}UeQpHXdg ztNs$|2;vfyX|ocTnfdshwA&jPN9a>Y|7rOM`e1$nS(o9SQ}^0AX`1R!yQN$iX1NOm z*P)|sZP^Doavc)^N)YNaqd4V zXWINE>ht4mn4Y^0(Fh+!NJqJ-E@xN^1e)yYM~R7DqASYgu*zGoYo_cTf=ns$-${dn z6+hi$IFIA1^WsOfE!yZPkj9>teJbvBsn4Ai%tzzSK0DrM!GFl!Oz0EsozD%Bv^V-) z&LyepL|QboxXU5Nk9a-rdp%;n>ygJ4dkBBuFAHrF2msBdj+X=FbG zcl+fp)%n-a1vH3mY07a}&H&|q2Rp)(nMQ@!AKs8< rhzsxZx&dJtQ|(X{-G*fwap8#wd%F#fjn#X?+nJ4ljSaMQ8wch8>O(Lb delta 1984 zcmZ8iYiv|i5T0{xx7#kIy?xSxcw3fjk%zVj0xhlENac}$yF#rP^9fp=f1Kk&*EL{tYn1Uv{l4P*lPnG+NA z6y!6&I^anl1=s+@pBgB+z+#mroy#AC<_1cEwZNl5{K6mTxw!R3MvIXF@ImYJmb?b3!g)U5j+qiy$9neL2fjkTY0c&9VZr z9ME)%frY?);1QxiGN5b(wgF{8C9ocN4p;%q0`k?(>_uvSLQ3U^M56F@K?6xd8RVeR z1R~FylJ3Jx+XmLdHc7Q2W_Mr`JKmSnhGX=;rLH7czEZ5_|1F|q^eWkjf~}H1<}79K z4qp=!S*zd@Jg%7%nKT+1)oPIF9;T(^o4{(|kfhi7l%Fv@cSzD{xas`>@`n$~=#_x& zqf|I5lr7QnW+1&kgv-up4#SH+m$aJge-Lke zDXE^Ls^Cw*3JP->Mc8+bPSQB2S`sba4Up|UDd}5|+KFOYFA{-ol>AkkGH@Q<ef2M)2M~?VLH?jADXS@FFU0=HT@i2IQu1rsC|19bx?5|e zjdLE#7&(Xcp3BHpRd&nQhcvBYNW;gLU?%R%82TTvEOSA#*p3-M>Z~h}r4?CT;!^^8 z|BR#`IsQCYjI>X(SOOMpQ!dpB#JkT4>c=aEd_L+zpMn<<#0i&yo>_pK%QTPZ1N({k z*}kp``X>8$1@Zn{f)+q(f}Uw*7b4Dc2822OH^@_;5`7UR>~xSzFLcqwEltJ&Nf>0j z@ja>~$@2b$x>|85R&t$V7>EBONq=(MW9WnVA#5(Aa9Z7uPotHi#*-{{FTqq<$!6tj z6uARk&FAQgu!DCn6-ZswR-8uv2^!}8Uof?>fAYcdr%Iaa*G{qi| z1w^Ctm-IIFM{wQslK~tGH8|$W#Omh8-7O8OEoB?4q1!1JlJW!zvV*-D^(WdnQ#U|T zW2i6tstoya+a2Q05ts9*%PD$XPI*#sc;M@9S(HKRoA=ed+*qH#r}4$+y1gy0HT3-3 zEq|yfxQh;;ITT^3&(L-nr2c<+HZY!QtQF0H@-$uShk@oqM?AR!*JTPduL#yRtKRD_Ox^uyX61-@Gm6* diff --git a/android/libs/x86/libcurve25519.so b/android/libs/x86/libcurve25519.so index b632d9f639d8837692ed2e81bc306d12ae7179aa..6eb7ed2b1613da62ffea3da9ed14a6ed7588f5af 100755 GIT binary patch delta 1467 zcmZ9Me`wTo7{}kwN4I%XMf%?)2Or{`qY5f~1<{VzSWzRj&fWv{B5)cG}#1 zz_$|cX)>CClNKMM^%euAbZh>c8C=*WLc5sUy&gDg^{f69k1}3M_C66D5A>3FosQg2 z!D$9n@E|#}85lKzFa9TRf}Gzc=r0NKeia zF+VvQ573dP<3kguCRe=(JZ$`k#v6d;Ch!zF!+5PV*hr3(*+X%FW^#9{V1?!Pkf%O+ z0$-B*UgM#Ln4jdt-_cR`tl))Zfxxfi{0D+-oJ3C~%t>Qcr%$Msoahl8UKhkSX}m-5 zJjFG?o$Pf9`izf|!&jzxki6}N;2axFYQYsc#<;;`c_2{Gf(b#|1fsm`9Qg;E=pk}^ zoL6A+TIGU3Sf_e%a-szox)$(TWUoz-C=0lgocm2M;E*g9r0Iy$!BZ*nFgZWdf!9{# zNfj6obQv$9P=*t=8$U;md4iqB?~?lt2tGFcoLqHK@RD8G06EP49_RkW4SvxA3Or#6 zcgSOWf$x~W(plW#Gr^z6>&X}QP7CfJd%S|F`c87LlX1&Wlecl8_lz%TeTl;e_b)bZ zi;mb$?I_?%J`Rrw&ls;E#|{bBGEa|qt1{zLcfN<5VEs|cKSU1yA=qpK9VOS@6^vT^ zYt0`MB!|s0Ku7+bpv4M?$T9L)7Qal!UxIafoZ7%Bxx38amc=K?nNo*lSs|M#U$Zbsv-mehjK7PbBDp<`vKg^|Yusg02h zGB?#5;WJKkMi0oG{>Z$v@O^$XSdks9kQ2AH!fy__HQC;ft63h|Ujgt7{gcvPt3R^J zJz8DQZ8;Lc^l@}llhv*^JD+Riwf>Veu6~g>54c+>w8bcOk5)sIv<=zb8u#g5srOf& wa!X27E$nYR5^~ZIoJ?_sgO1n1q57>C^i~s-t delta 1484 zcmZ9MZEVw36vm%(S-W*CWF13?G1x>FM1eI?fl!bIQ50Dyuq~5d9KrGKR$#n_tOcW1 zM_jcb|7F4`2Et3sRx@Bx_o0TEX!rtOFfk4a_=zR3`I2CGDbMZy%o&?D=l;&ibI-Z= zrtw?F@ms~|#Zun2H5A@6{o<=l_3sRoyx9HWiP`ttlMQk?`nCZAb--2HGK|MY+RW3y zH{$YlWHbP0G=7OTHU;p~ZS%{IiBf9XH*GR8yX*k^*{u3i)y>Buw- z&M{~O6Xf)2;I;~!{GY&Ca`u3r&*SD_AxCO~ueJULd3cwgOB?nUki)=!@&jxpC$f(BC=DAv{n>IABZQZ%O3A>VwMPaY& z?c46_E=*4F&y$kmoBp>1$;193nUFkC#=GzHP3)BqGUff5a_Rm{E1b1HGrvFOGczjv zhsptdVgI%4uhkixW#&w;VIQ0k74-2eP(`+OzS>D#TVCues4`0?$0q_0a=DhdlzK>O zLyu@{`;S(cjy9=rX7-q8JXWp3S-=n&tz5P`BX((f LJk&qA*R+_&4SDkT diff --git a/android/src/androidTest/java/org/whispersystems/curve25519/NativeCurve25519Test.java b/android/src/androidTest/java/org/whispersystems/curve25519/NativeCurve25519Test.java index 9f267ac..2fc7081 100644 --- a/android/src/androidTest/java/org/whispersystems/curve25519/NativeCurve25519Test.java +++ b/android/src/androidTest/java/org/whispersystems/curve25519/NativeCurve25519Test.java @@ -29,17 +29,17 @@ public class NativeCurve25519Test extends Curve25519Test { byte[] message = new byte[i]; random.nextBytes(message); - byte[] signature = getInstance().calculateUniqueSignature(keys.getPrivateKey(), message); - byte[] vrf = getInstance().verifyUniqueSignature(keys.getPublicKey(), message, signature); + byte[] signature = getInstance().calculateVrfSignature(keys.getPrivateKey(), message); + byte[] vrf = getInstance().verifyVrfSignature(keys.getPublicKey(), message, signature); assertFalse(getInstance().verifySignature(keys.getPublicKey(), message, signature)); message[Math.abs(random.nextInt()) % message.length] ^= 0x01; try { - getInstance().verifyUniqueSignature(keys.getPublicKey(), message, signature); + getInstance().verifyVrfSignature(keys.getPublicKey(), message, signature); throw new AssertionError("Should have failed"); - } catch (UniqueSignatureVerificationFailedException e) { + } catch (VrfSignatureVerificationFailedException e) { // good } } @@ -47,8 +47,8 @@ public class NativeCurve25519Test extends Curve25519Test { public void testUniqueSignatureVector() throws Exception { Curve25519KeyPair keys = new Curve25519KeyPair(PUBLIC_KEY, PRIVATE_KEY); - byte[] signature = getInstance().calculateUniqueSignature(keys.getPrivateKey(), MESSAGE); - byte[] vrf = getInstance().verifyUniqueSignature(keys.getPublicKey(), MESSAGE, signature); + byte[] signature = getInstance().calculateVrfSignature(keys.getPrivateKey(), MESSAGE); + byte[] vrf = getInstance().verifyVrfSignature(keys.getPublicKey(), MESSAGE, signature); assertTrue(Arrays.equals(vrf, VRF)); } diff --git a/common/src/main/java/org/whispersystems/curve25519/BaseJavaCurve25519Provider.java b/common/src/main/java/org/whispersystems/curve25519/BaseJavaCurve25519Provider.java index 1433006..18e7941 100644 --- a/common/src/main/java/org/whispersystems/curve25519/BaseJavaCurve25519Provider.java +++ b/common/src/main/java/org/whispersystems/curve25519/BaseJavaCurve25519Provider.java @@ -73,12 +73,12 @@ abstract class BaseJavaCurve25519Provider implements Curve25519Provider { return curve_sigs.curve25519_verify(sha512provider, signature, publicKey, message, message.length) == 0; } - public byte[] calculateUniqueSignature(byte[] random, byte[] privateKey, byte[] message) { + public byte[] calculateVrfSignature(byte[] random, byte[] privateKey, byte[] message) { throw new AssertionError("NYI"); } - public byte[] verifyUniqueSignature(byte[] publicKey, byte[] message, byte[] signature) - throws UniqueSignatureVerificationFailedException + public byte[] verifyVrfSignature(byte[] publicKey, byte[] message, byte[] signature) + throws VrfSignatureVerificationFailedException { throw new AssertionError("NYI"); } diff --git a/common/src/main/java/org/whispersystems/curve25519/Curve25519.java b/common/src/main/java/org/whispersystems/curve25519/Curve25519.java index 74c58ab..78f7b25 100644 --- a/common/src/main/java/org/whispersystems/curve25519/Curve25519.java +++ b/common/src/main/java/org/whispersystems/curve25519/Curve25519.java @@ -124,13 +124,13 @@ public class Curve25519 { * @param message The message to sign. * @return A 96-byte signature. */ - public byte[] calculateUniqueSignature(byte[] privateKey, byte[] message) { + public byte[] calculateVrfSignature(byte[] privateKey, byte[] message) { if (privateKey == null || privateKey.length != 32) { throw new IllegalArgumentException("Invalid private key!"); } byte[] random = provider.getRandom(64); - return provider.calculateUniqueSignature(random, privateKey, message); + return provider.calculateVrfSignature(random, privateKey, message); } /** @@ -142,18 +142,18 @@ public class Curve25519 { * * @return The vrf for this signature. */ - public byte[] verifyUniqueSignature(byte[] publicKey, byte[] message, byte[] signature) - throws UniqueSignatureVerificationFailedException + public byte[] verifyVrfSignature(byte[] publicKey, byte[] message, byte[] signature) + throws VrfSignatureVerificationFailedException { if (publicKey == null || publicKey.length != 32) { throw new IllegalArgumentException("Invalid public key!"); } if (message == null || signature == null || signature.length != 96) { - throw new UniqueSignatureVerificationFailedException("Invalid message or signature format"); + throw new VrfSignatureVerificationFailedException("Invalid message or signature format"); } - return provider.verifyUniqueSignature(publicKey, message, signature); + return provider.verifyVrfSignature(publicKey, message, signature); } private static Curve25519Provider constructNativeProvider(SecureRandomProvider random) throws NoSuchProviderException { diff --git a/common/src/main/java/org/whispersystems/curve25519/Curve25519Provider.java b/common/src/main/java/org/whispersystems/curve25519/Curve25519Provider.java index ebc3510..abad023 100644 --- a/common/src/main/java/org/whispersystems/curve25519/Curve25519Provider.java +++ b/common/src/main/java/org/whispersystems/curve25519/Curve25519Provider.java @@ -18,9 +18,9 @@ interface Curve25519Provider { byte[] calculateSignature(byte[] random, byte[] privateKey, byte[] message); boolean verifySignature(byte[] publicKey, byte[] message, byte[] signature); - byte[] calculateUniqueSignature(byte[] random, byte[] privateKey, byte[] message); - byte[] verifyUniqueSignature(byte[] publicKey, byte[] message, byte[] signature) - throws UniqueSignatureVerificationFailedException; + byte[] calculateVrfSignature(byte[] random, byte[] privateKey, byte[] message); + byte[] verifyVrfSignature(byte[] publicKey, byte[] message, byte[] signature) + throws VrfSignatureVerificationFailedException; byte[] getRandom(int length); diff --git a/common/src/main/java/org/whispersystems/curve25519/UniqueSignatureVerificationFailedException.java b/common/src/main/java/org/whispersystems/curve25519/UniqueSignatureVerificationFailedException.java deleted file mode 100644 index f3180ba..0000000 --- a/common/src/main/java/org/whispersystems/curve25519/UniqueSignatureVerificationFailedException.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.whispersystems.curve25519; - -public class UniqueSignatureVerificationFailedException extends Exception { - - public UniqueSignatureVerificationFailedException() { - super(); - } - - public UniqueSignatureVerificationFailedException(String message) { - super(message); - } - - public UniqueSignatureVerificationFailedException(Exception exception) { - super(exception); - } -} diff --git a/common/src/main/java/org/whispersystems/curve25519/VrfSignatureVerificationFailedException.java b/common/src/main/java/org/whispersystems/curve25519/VrfSignatureVerificationFailedException.java new file mode 100644 index 0000000..a417124 --- /dev/null +++ b/common/src/main/java/org/whispersystems/curve25519/VrfSignatureVerificationFailedException.java @@ -0,0 +1,16 @@ +package org.whispersystems.curve25519; + +public class VrfSignatureVerificationFailedException extends Exception { + + public VrfSignatureVerificationFailedException() { + super(); + } + + public VrfSignatureVerificationFailedException(String message) { + super(message); + } + + public VrfSignatureVerificationFailedException(Exception exception) { + super(exception); + } +} diff --git a/java/src/main/java/org/whispersystems/curve25519/NativeCurve25519Provider.java b/java/src/main/java/org/whispersystems/curve25519/NativeCurve25519Provider.java index b4eff8a..3a96337 100644 --- a/java/src/main/java/org/whispersystems/curve25519/NativeCurve25519Provider.java +++ b/java/src/main/java/org/whispersystems/curve25519/NativeCurve25519Provider.java @@ -73,11 +73,11 @@ class NativeCurve25519Provider implements Curve25519Provider { public native boolean verifySignature(byte[] publicKey, byte[] message, byte[] signature); @Override - public native byte[] calculateUniqueSignature(byte[] random, byte[] privateKey, byte[] message); + public native byte[] calculateVrfSignature(byte[] random, byte[] privateKey, byte[] message); @Override - public native byte[] verifyUniqueSignature(byte[] publicKey, byte[] message, byte[] signature) - throws UniqueSignatureVerificationFailedException; + public native byte[] verifyVrfSignature(byte[] publicKey, byte[] message, byte[] signature) + throws VrfSignatureVerificationFailedException; private native boolean smokeCheck(int dummy); diff --git a/java/src/main/java/org/whispersystems/curve25519/OpportunisticCurve25519Provider.java b/java/src/main/java/org/whispersystems/curve25519/OpportunisticCurve25519Provider.java index 054a146..e125870 100644 --- a/java/src/main/java/org/whispersystems/curve25519/OpportunisticCurve25519Provider.java +++ b/java/src/main/java/org/whispersystems/curve25519/OpportunisticCurve25519Provider.java @@ -64,15 +64,15 @@ public class OpportunisticCurve25519Provider implements Curve25519Provider { } @Override - public byte[] calculateUniqueSignature(byte[] random, byte[] privateKey, byte[] message) { - return delegate.calculateUniqueSignature(random, privateKey, message); + public byte[] calculateVrfSignature(byte[] random, byte[] privateKey, byte[] message) { + return delegate.calculateVrfSignature(random, privateKey, message); } @Override - public byte[] verifyUniqueSignature(byte[] publicKey, byte[] message, byte[] signature) - throws UniqueSignatureVerificationFailedException + public byte[] verifyVrfSignature(byte[] publicKey, byte[] message, byte[] signature) + throws VrfSignatureVerificationFailedException { - return delegate.verifyUniqueSignature(publicKey, message, signature); + return delegate.verifyVrfSignature(publicKey, message, signature); } }