@@ -108,7 +108,6 @@ public void testSignResetsForReuse() throws Exception {
108108
109109 @ Test
110110 public void testVerifyResetsForReuse () throws Exception {
111- //Signature sgr = Signature.getInstance("EdDSA", "I2P");
112111 Signature sgr = new EdDSAEngine (MessageDigest .getInstance ("SHA-512" ));
113112
114113 EdDSAPublicKeySpec pubKey = new EdDSAPublicKeySpec (TEST_PK ,
@@ -124,4 +123,92 @@ public void testVerifyResetsForReuse() throws Exception {
124123 sgr .update (TEST_MSG );
125124 assertThat ("Second verify failed" , sgr .verify (TEST_MSG_SIG ), is (true ));
126125 }
126+
127+ @ Test
128+ public void testSignOneShotMode () throws Exception {
129+ Signature sgr = new EdDSAEngine (MessageDigest .getInstance ("SHA-512" ));
130+ EdDSAParameterSpec spec = EdDSANamedCurveTable .getByName ("ed25519-sha-512" );
131+
132+ EdDSAPrivateKeySpec privKey = new EdDSAPrivateKeySpec (TEST_SEED , spec );
133+ PrivateKey sKey = new EdDSAPrivateKey (privKey );
134+ sgr .initSign (sKey );
135+ sgr .setParameter (EdDSAEngine .ONE_SHOT_MODE );
136+
137+ sgr .update (TEST_MSG );
138+
139+ assertThat ("One-shot mode sign failed" , sgr .sign (), is (equalTo (TEST_MSG_SIG )));
140+ }
141+
142+ @ Test
143+ public void testVerifyOneShotMode () throws Exception {
144+ Signature sgr = new EdDSAEngine (MessageDigest .getInstance ("SHA-512" ));
145+
146+ EdDSAPublicKeySpec pubKey = new EdDSAPublicKeySpec (TEST_PK ,
147+ EdDSANamedCurveTable .getByName ("ed25519-sha-512" ));
148+ PublicKey vKey = new EdDSAPublicKey (pubKey );
149+ sgr .initVerify (vKey );
150+ sgr .setParameter (EdDSAEngine .ONE_SHOT_MODE );
151+
152+ sgr .update (TEST_MSG );
153+
154+ assertThat ("One-shot mode verify failed" , sgr .verify (TEST_MSG_SIG ), is (true ));
155+ }
156+
157+ @ Test
158+ public void testSignOneShotModeMultipleUpdates () throws Exception {
159+ Signature sgr = new EdDSAEngine (MessageDigest .getInstance ("SHA-512" ));
160+ EdDSAParameterSpec spec = EdDSANamedCurveTable .getByName ("ed25519-sha-512" );
161+
162+ EdDSAPrivateKeySpec privKey = new EdDSAPrivateKeySpec (TEST_SEED , spec );
163+ PrivateKey sKey = new EdDSAPrivateKey (privKey );
164+ sgr .initSign (sKey );
165+ sgr .setParameter (EdDSAEngine .ONE_SHOT_MODE );
166+
167+ sgr .update (TEST_MSG );
168+
169+ exception .expect (SignatureException .class );
170+ exception .expectMessage ("update() already called" );
171+ sgr .update (TEST_MSG );
172+ }
173+
174+ @ Test
175+ public void testVerifyOneShotModeMultipleUpdates () throws Exception {
176+ Signature sgr = new EdDSAEngine (MessageDigest .getInstance ("SHA-512" ));
177+
178+ EdDSAPublicKeySpec pubKey = new EdDSAPublicKeySpec (TEST_PK ,
179+ EdDSANamedCurveTable .getByName ("ed25519-sha-512" ));
180+ PublicKey vKey = new EdDSAPublicKey (pubKey );
181+ sgr .initVerify (vKey );
182+ sgr .setParameter (EdDSAEngine .ONE_SHOT_MODE );
183+
184+ sgr .update (TEST_MSG );
185+
186+ exception .expect (SignatureException .class );
187+ exception .expectMessage ("update() already called" );
188+ sgr .update (TEST_MSG );
189+ }
190+
191+ @ Test
192+ public void testSignOneShot () throws Exception {
193+ EdDSAEngine sgr = new EdDSAEngine (MessageDigest .getInstance ("SHA-512" ));
194+ EdDSAParameterSpec spec = EdDSANamedCurveTable .getByName ("ed25519-sha-512" );
195+
196+ EdDSAPrivateKeySpec privKey = new EdDSAPrivateKeySpec (TEST_SEED , spec );
197+ PrivateKey sKey = new EdDSAPrivateKey (privKey );
198+ sgr .initSign (sKey );
199+
200+ assertThat ("signOneShot() failed" , sgr .signOneShot (TEST_MSG ), is (equalTo (TEST_MSG_SIG )));
201+ }
202+
203+ @ Test
204+ public void testVerifyOneShot () throws Exception {
205+ EdDSAEngine sgr = new EdDSAEngine (MessageDigest .getInstance ("SHA-512" ));
206+
207+ EdDSAPublicKeySpec pubKey = new EdDSAPublicKeySpec (TEST_PK ,
208+ EdDSANamedCurveTable .getByName ("ed25519-sha-512" ));
209+ PublicKey vKey = new EdDSAPublicKey (pubKey );
210+ sgr .initVerify (vKey );
211+
212+ assertThat ("verifyOneShot() failed" , sgr .verifyOneShot (TEST_MSG , TEST_MSG_SIG ), is (true ));
213+ }
127214}
0 commit comments