Skip to content

Commit

Permalink
constant time auth
Browse files Browse the repository at this point in the history
  • Loading branch information
Sebastian Stenzel committed Nov 20, 2015
1 parent 15c697a commit d264fc4
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 4 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public void encryptWithAdditionalData() {
<dependency>
<groupId>org.cryptomator</groupId>
<artifactId>siv-mode</artifactId>
<version>1.0.1</version>
<version>1.0.2</version>
</dependency>
</dependencies>
```
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.cryptomator</groupId>
<artifactId>siv-mode</artifactId>
<version>1.0.0</version>
<version>1.0.2</version>
<name>SIV Mode</name>
<description>RFC 5297 SIV mode: deterministic authenticated encryption</description>

Expand Down
10 changes: 8 additions & 2 deletions src/main/java/org/cryptomator/siv/SivMode.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
******************************************************************************/

import java.nio.ByteBuffer;
import java.security.MessageDigest;
import java.util.Arrays;

import javax.crypto.AEADBadTagException;
Expand Down Expand Up @@ -200,7 +199,14 @@ public byte[] decrypt(byte[] ctrKey, byte[] macKey, byte[] ciphertext, byte[]...

final byte[] control = s2v(macKey, plaintext, additionalData);

if (MessageDigest.isEqual(control, iv)) {
// time-constant comparison (taken from MessageDigest.isEqual in JDK8)
assert iv.length == control.length;
int diff = 0;
for (int i = 0; i < iv.length; i++) {
diff |= iv[i] ^ control[i];
}

if (diff == 0) {
return plaintext;
} else {
throw new AEADBadTagException("authentication in SIV decryption failed");
Expand Down

0 comments on commit d264fc4

Please sign in to comment.