< prev index next >

src/java.base/share/classes/com/sun/crypto/provider/AESCrypt.java

Print this page
rev 17033 : ECB fix part 2

*** 36,46 **** package com.sun.crypto.provider; import java.security.InvalidKeyException; import java.security.MessageDigest; ! import java.util.Arrays; import java.util.Objects; import jdk.internal.HotSpotIntrinsicCandidate; /** --- 36,46 ---- package com.sun.crypto.provider; import java.security.InvalidKeyException; import java.security.MessageDigest; ! import java.security.ProviderException; import java.util.Objects; import jdk.internal.HotSpotIntrinsicCandidate; /**
*** 354,363 **** --- 354,375 ---- Objects.checkFromIndexSize(inOffset, AES_BLOCK_SIZE, in.length); Objects.checkFromIndexSize(outOffset, AES_BLOCK_SIZE, out.length); implEncryptBlock(in, inOffset, out, outOffset); } + @Override + void encryptBlocks(byte[] in, int inOffset, byte[] out, int outOffset, int len) { + if ((len % AES_BLOCK_SIZE) != 0) { + throw new ProviderException("Internal error in input buffering"); + } + Objects.checkFromIndexSize(inOffset , len, in.length); + Objects.checkFromIndexSize(outOffset, len, out.length); + for (int i = 0; i < len; i += AES_BLOCK_SIZE) { + implEncryptBlock(in, inOffset + i, out, outOffset + i); + } + } + // Encryption operation. Possibly replaced with a compiler intrinsic. @HotSpotIntrinsicCandidate private void implEncryptBlock(byte[] in, int inOffset, byte[] out, int outOffset) {
*** 433,442 **** --- 445,467 ---- Objects.checkFromIndexSize(inOffset, AES_BLOCK_SIZE, in.length); Objects.checkFromIndexSize(outOffset, AES_BLOCK_SIZE, out.length); implDecryptBlock(in, inOffset, out, outOffset); } + @Override + void decryptBlocks(byte[] in, int inOffset, byte[] out, int outOffset, int len) { + if ((len % AES_BLOCK_SIZE) != 0) { + throw new ProviderException("Internal error in input buffering"); + } + Objects.checkFromIndexSize(inOffset, len, in.length); + Objects.checkFromIndexSize(outOffset, len, out.length); + for (int i = 0; i < len; i += AES_BLOCK_SIZE) { + implDecryptBlock(in, inOffset + i, out, outOffset + i); + } + } + + // Decrypt operation. Possibly replaced with a compiler intrinsic. @HotSpotIntrinsicCandidate private void implDecryptBlock(byte[] in, int inOffset, byte[] out, int outOffset) {
< prev index next >