OpenJDK / amber / amber
changeset 57334:18130ed28231
8221345: Better Poly1305 support
Reviewed-by: apetcher, mschoene, rhalade
author | jnimeh |
---|---|
date | Wed, 03 Apr 2019 13:35:11 -0700 |
parents | ce3598fceb87 |
children | 0c143aaa2c99 |
files | src/java.base/share/classes/com/sun/crypto/provider/ChaCha20Cipher.java |
diffstat | 1 files changed, 6 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/java.base/share/classes/com/sun/crypto/provider/ChaCha20Cipher.java Thu Mar 28 14:18:57 2019 -0700 +++ b/src/java.base/share/classes/com/sun/crypto/provider/ChaCha20Cipher.java Wed Apr 03 13:35:11 2019 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2018, 2019, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1363,8 +1363,11 @@ // Calculate and compare the tag. Only do the decryption // if and only if the tag matches. authFinalizeData(ctPlusTag, 0, ctLen, tag, 0); - if (Arrays.compare(ctPlusTag, ctLen, ctPlusTagLen, - tag, 0, tag.length) != 0) { + long tagCompare = ((long)asLongView.get(ctPlusTag, ctLen) ^ + (long)asLongView.get(tag, 0)) | + ((long)asLongView.get(ctPlusTag, ctLen + Long.BYTES) ^ + (long)asLongView.get(tag, Long.BYTES)); + if (tagCompare != 0) { throw new AEADBadTagException("Tag mismatch"); } chaCha20Transform(ctPlusTag, 0, ctLen, out, outOff);