< prev index next >

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

Print this page

        

*** 349,360 **** /** * Encrypt exactly one block of plaintext. */ void encryptBlock(byte[] in, int inOffset, byte[] out, int outOffset) { ! cryptBlockCheck(in, inOffset); ! cryptBlockCheck(out, outOffset); implEncryptBlock(in, inOffset, out, outOffset); } // Encryption operation. Possibly replaced with a compiler intrinsic. @HotSpotIntrinsicCandidate --- 349,360 ---- /** * Encrypt exactly one block of plaintext. */ void encryptBlock(byte[] in, int inOffset, byte[] out, int outOffset) { ! Objects.checkFromIndexSize(inOffset, AES_BLOCK_SIZE, in.length); ! Objects.checkFromIndexSize(outOffset, AES_BLOCK_SIZE, out.length); implEncryptBlock(in, inOffset, out, outOffset); } // Encryption operation. Possibly replaced with a compiler intrinsic. @HotSpotIntrinsicCandidate
*** 428,439 **** /** * Decrypt exactly one block of plaintext. */ void decryptBlock(byte[] in, int inOffset, byte[] out, int outOffset) { ! cryptBlockCheck(in, inOffset); ! cryptBlockCheck(out, outOffset); implDecryptBlock(in, inOffset, out, outOffset); } // Decrypt operation. Possibly replaced with a compiler intrinsic. @HotSpotIntrinsicCandidate --- 428,439 ---- /** * Decrypt exactly one block of plaintext. */ void decryptBlock(byte[] in, int inOffset, byte[] out, int outOffset) { ! Objects.checkFromIndexSize(inOffset, AES_BLOCK_SIZE, in.length); ! Objects.checkFromIndexSize(outOffset, AES_BLOCK_SIZE, out.length); implDecryptBlock(in, inOffset, out, outOffset); } // Decrypt operation. Possibly replaced with a compiler intrinsic. @HotSpotIntrinsicCandidate
*** 591,620 **** out[outOffset++] = (byte)(Si[(a2 >>> 16) & 0xFF] ^ (t1 >>> 16)); out[outOffset++] = (byte)(Si[(a1 >>> 8) & 0xFF] ^ (t1 >>> 8)); out[outOffset ] = (byte)(Si[(a0 ) & 0xFF] ^ (t1 )); } - // Used to perform all checks required by the Java semantics - // (i.e., null checks and bounds checks) on the input parameters - // to encryptBlock and to decryptBlock. - // Normally, the Java Runtime performs these checks, however, as - // encryptBlock and decryptBlock are possibly replaced with - // compiler intrinsics, the JDK performs the required checks instead. - // Does not check accesses to class-internal (private) arrays. - private static void cryptBlockCheck(byte[] array, int offset) { - Objects.requireNonNull(array); - - if (offset < 0 || offset >= array.length) { - throw new ArrayIndexOutOfBoundsException(offset); - } - - int largestIndex = offset + AES_BLOCK_SIZE - 1; - if (largestIndex < 0 || largestIndex >= array.length) { - throw new ArrayIndexOutOfBoundsException(largestIndex); - } - } - /** * Expand a user-supplied key material into a session key. * * @param k The 128/192/256-bit cipher key to use. * @exception InvalidKeyException If the key is invalid. --- 591,600 ----
< prev index next >