From 4e77b3c378dd08470ebccd1ea2fe48f2819d3eac Mon Sep 17 00:00:00 2001 From: Andrey Turbanov Date: Wed, 18 Oct 2023 08:28:23 +0000 Subject: [PATCH] 8315974: Make fields final in 'com.sun.crypto.provider' package Reviewed-by: valeriep --- .../sun/crypto/provider/AESParameters.java | 4 ++-- .../provider/BlockCipherParamsCore.java | 6 ++--- .../sun/crypto/provider/BlowfishCipher.java | 6 ++--- .../crypto/provider/BlowfishParameters.java | 4 ++-- .../crypto/provider/CipherBlockChaining.java | 5 ++-- .../com/sun/crypto/provider/CipherCore.java | 6 ++--- .../sun/crypto/provider/CipherFeedback.java | 4 ++-- .../com/sun/crypto/provider/DESCipher.java | 5 ++-- .../sun/crypto/provider/DESParameters.java | 4 ++-- .../com/sun/crypto/provider/DESedeCipher.java | 5 ++-- .../com/sun/crypto/provider/DESedeCrypt.java | 5 ++-- .../sun/crypto/provider/DESedeParameters.java | 4 ++-- .../sun/crypto/provider/DESedeWrapCipher.java | 4 ++-- .../com/sun/crypto/provider/DHPrivateKey.java | 20 ++++++---------- .../com/sun/crypto/provider/DHPublicKey.java | 23 ++++++++----------- .../provider/EncryptedPrivateKeyInfo.java | 6 ++--- .../com/sun/crypto/provider/GHASH.java | 4 ++-- .../crypto/provider/GaloisCounterMode.java | 10 ++++---- .../sun/crypto/provider/ISO10126Padding.java | 4 ++-- .../com/sun/crypto/provider/JceKeyStore.java | 4 ++-- .../com/sun/crypto/provider/KeyProtector.java | 2 +- .../sun/crypto/provider/OAEPParameters.java | 6 ++--- .../sun/crypto/provider/OutputFeedback.java | 8 +++---- .../sun/crypto/provider/PBEKeyFactory.java | 2 +- .../com/sun/crypto/provider/PBES1Core.java | 9 ++++---- .../sun/crypto/provider/PBES2Parameters.java | 12 +++++----- .../provider/PBEWithMD5AndDESCipher.java | 4 ++-- .../PBEWithMD5AndTripleDESCipher.java | 4 ++-- .../sun/crypto/provider/PBKDF2KeyImpl.java | 7 +++--- .../com/sun/crypto/provider/PKCS5Padding.java | 4 ++-- .../sun/crypto/provider/PrivateKeyInfo.java | 6 ++--- 31 files changed, 91 insertions(+), 106 deletions(-) diff --git a/src/java.base/share/classes/com/sun/crypto/provider/AESParameters.java b/src/java.base/share/classes/com/sun/crypto/provider/AESParameters.java index 4c1c93ceb3c..becda6383b0 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/AESParameters.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/AESParameters.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2023, 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 @@ -44,7 +44,7 @@ import java.security.spec.InvalidParameterSpecException; */ public final class AESParameters extends AlgorithmParametersSpi { - private BlockCipherParamsCore core; + private final BlockCipherParamsCore core; public AESParameters() { core = new BlockCipherParamsCore(AESConstants.AES_BLOCK_SIZE, 4, 8); diff --git a/src/java.base/share/classes/com/sun/crypto/provider/BlockCipherParamsCore.java b/src/java.base/share/classes/com/sun/crypto/provider/BlockCipherParamsCore.java index 738b34d3aeb..ece9f8161d1 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/BlockCipherParamsCore.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/BlockCipherParamsCore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2023, 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 @@ -46,10 +46,10 @@ import javax.crypto.spec.IvParameterSpec; * */ final class BlockCipherParamsCore { - private int block_size = 0; + private final int block_size; private byte[] iv = null; - private int[] moreSizes = null; + private final int[] moreSizes; BlockCipherParamsCore(int blksize, int... moreSizes) { block_size = blksize; diff --git a/src/java.base/share/classes/com/sun/crypto/provider/BlowfishCipher.java b/src/java.base/share/classes/com/sun/crypto/provider/BlowfishCipher.java index a389340b45a..247ea63f2e6 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/BlowfishCipher.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/BlowfishCipher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2023, 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 @@ -29,9 +29,7 @@ import java.security.*; import java.security.spec.*; import java.util.Arrays; -import sun.security.util.*; import javax.crypto.*; -import javax.crypto.spec.*; import javax.crypto.BadPaddingException; /** @@ -57,7 +55,7 @@ public final class BlowfishCipher extends CipherSpi { /* * internal CipherCore object which does the real work. */ - private CipherCore core = null; + private final CipherCore core; /** * Creates an instance of Blowfish cipher with default ECB mode and diff --git a/src/java.base/share/classes/com/sun/crypto/provider/BlowfishParameters.java b/src/java.base/share/classes/com/sun/crypto/provider/BlowfishParameters.java index beb2804c3fd..85bf2e2ea27 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/BlowfishParameters.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/BlowfishParameters.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2023, 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 @@ -44,7 +44,7 @@ import java.security.spec.InvalidParameterSpecException; public final class BlowfishParameters extends AlgorithmParametersSpi { - private BlockCipherParamsCore core; + private final BlockCipherParamsCore core; public BlowfishParameters() { core = new BlockCipherParamsCore diff --git a/src/java.base/share/classes/com/sun/crypto/provider/CipherBlockChaining.java b/src/java.base/share/classes/com/sun/crypto/provider/CipherBlockChaining.java index 4fc5a34b46b..5d756e26847 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/CipherBlockChaining.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/CipherBlockChaining.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2020, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -27,7 +27,6 @@ package com.sun.crypto.provider; import java.security.InvalidKeyException; import java.security.ProviderException; -import java.util.Objects; import jdk.internal.vm.annotation.IntrinsicCandidate; import sun.security.util.ArrayUtil; @@ -55,7 +54,7 @@ class CipherBlockChaining extends FeedbackCipher { /* * output buffer */ - private byte[] k; + private final byte[] k; // variables for save/restore calls private byte[] rSave = null; diff --git a/src/java.base/share/classes/com/sun/crypto/provider/CipherCore.java b/src/java.base/share/classes/com/sun/crypto/provider/CipherCore.java index 64ce01c53ab..2555448e3c0 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/CipherCore.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/CipherCore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2023, 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 @@ -57,12 +57,12 @@ final class CipherCore { /* * internal buffer */ - private byte[] buffer = null; + private final byte[] buffer; /* * block size of cipher in bytes */ - private int blockSize = 0; + private final int blockSize; /* * unit size (number of input bytes that can be processed at a time) diff --git a/src/java.base/share/classes/com/sun/crypto/provider/CipherFeedback.java b/src/java.base/share/classes/com/sun/crypto/provider/CipherFeedback.java index 71e94cc7ffa..00b50b9e8ca 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/CipherFeedback.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/CipherFeedback.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -57,7 +57,7 @@ final class CipherFeedback extends FeedbackCipher { * number of bytes for each stream unit, defaults to the blocksize * of the embedded cipher */ - private int numBytes; + private final int numBytes; // variables for save/restore calls private byte[] registerSave = null; diff --git a/src/java.base/share/classes/com/sun/crypto/provider/DESCipher.java b/src/java.base/share/classes/com/sun/crypto/provider/DESCipher.java index 5fdfd32b2b5..ee283441eeb 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/DESCipher.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/DESCipher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -29,7 +29,6 @@ import java.security.*; import java.security.spec.*; import java.util.Arrays; import javax.crypto.*; -import javax.crypto.spec.*; import javax.crypto.BadPaddingException; /** @@ -52,7 +51,7 @@ public final class DESCipher extends CipherSpi { /* * internal CipherCore object which does the real work. */ - private CipherCore core = null; + private final CipherCore core; /** * Creates an instance of DES cipher with default ECB mode and diff --git a/src/java.base/share/classes/com/sun/crypto/provider/DESParameters.java b/src/java.base/share/classes/com/sun/crypto/provider/DESParameters.java index a5ae615870b..c825e700a74 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/DESParameters.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/DESParameters.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2023, 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 @@ -44,7 +44,7 @@ import java.security.spec.InvalidParameterSpecException; public final class DESParameters extends AlgorithmParametersSpi { - private BlockCipherParamsCore core; + private final BlockCipherParamsCore core; public DESParameters() { core = new BlockCipherParamsCore(DESConstants.DES_BLOCK_SIZE); diff --git a/src/java.base/share/classes/com/sun/crypto/provider/DESedeCipher.java b/src/java.base/share/classes/com/sun/crypto/provider/DESedeCipher.java index a3599b608cc..3c1f122ae3b 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/DESedeCipher.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/DESedeCipher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -29,7 +29,6 @@ import java.security.*; import java.security.spec.*; import java.util.Arrays; import javax.crypto.*; -import javax.crypto.spec.*; /** * This class implements the DESede algorithm (DES-EDE, tripleDES) in @@ -50,7 +49,7 @@ public sealed class DESedeCipher extends CipherSpi /* * internal CipherCore object which does the real work. */ - private CipherCore core = null; + private final CipherCore core; /** * Creates an instance of DESede cipher with default ECB mode and diff --git a/src/java.base/share/classes/com/sun/crypto/provider/DESedeCrypt.java b/src/java.base/share/classes/com/sun/crypto/provider/DESedeCrypt.java index b037c44d86d..496a59b002a 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/DESedeCrypt.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/DESedeCrypt.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2007, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -48,7 +48,8 @@ final class DESedeCrypt extends DESCrypt implements DESConstants { private byte[] key1 = null; private byte[] key2 = null; private byte[] key3 = null; - private byte[] buf1, buf2; + private final byte[] buf1; + private final byte[] buf2; /* * constructor diff --git a/src/java.base/share/classes/com/sun/crypto/provider/DESedeParameters.java b/src/java.base/share/classes/com/sun/crypto/provider/DESedeParameters.java index d2bba89b799..879a4d30cd2 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/DESedeParameters.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/DESedeParameters.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2023, 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 @@ -43,7 +43,7 @@ import java.security.spec.InvalidParameterSpecException; */ public final class DESedeParameters extends AlgorithmParametersSpi { - private BlockCipherParamsCore core; + private final BlockCipherParamsCore core; public DESedeParameters() { core = new BlockCipherParamsCore(DESConstants.DES_BLOCK_SIZE); diff --git a/src/java.base/share/classes/com/sun/crypto/provider/DESedeWrapCipher.java b/src/java.base/share/classes/com/sun/crypto/provider/DESedeWrapCipher.java index 8ba473e467e..92d25b57a7e 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/DESedeWrapCipher.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/DESedeWrapCipher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2023, 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 @@ -57,7 +57,7 @@ public final class DESedeWrapCipher extends CipherSpi { /* * internal cipher object which does the real work. */ - private FeedbackCipher cipher; + private final FeedbackCipher cipher; /* * iv for (re-)initializing the internal cipher object. diff --git a/src/java.base/share/classes/com/sun/crypto/provider/DHPrivateKey.java b/src/java.base/share/classes/com/sun/crypto/provider/DHPrivateKey.java index c08357b37bb..0d5363e866a 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/DHPrivateKey.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/DHPrivateKey.java @@ -53,7 +53,7 @@ final class DHPrivateKey implements PrivateKey, private static final BigInteger PKCS8_VERSION = BigInteger.ZERO; // the private key - private BigInteger x; + private final BigInteger x; // the key bytes, without the algorithm information private byte[] key; @@ -68,7 +68,7 @@ final class DHPrivateKey implements PrivateKey, private final BigInteger g; // the private-value length (optional) - private int l; + private final int l; /** * Make a DH private key out of a private value x, a prime @@ -161,6 +161,8 @@ final class DHPrivateKey implements PrivateKey, // Private-value length is OPTIONAL if (params.data.available() != 0) { this.l = params.data.getInteger(); + } else { + this.l = 0; } if (params.data.available() != 0) { throw new InvalidKeyException("Extra parameter data"); @@ -170,7 +172,9 @@ final class DHPrivateKey implements PrivateKey, // privateKey // this.key = val.data.getOctetString(); - parseKeyBits(); + + DerInputStream in = new DerInputStream(this.key); + this.x = in.getBigInteger(); this.encodedKey = encodedKey.clone(); } catch (IOException | NumberFormatException e) { @@ -271,16 +275,6 @@ final class DHPrivateKey implements PrivateKey, } } - private void parseKeyBits() throws InvalidKeyException { - try { - DerInputStream in = new DerInputStream(this.key); - this.x = in.getBigInteger(); - } catch (IOException e) { - throw new InvalidKeyException( - "Error parsing key encoding: " + e.getMessage(), e); - } - } - /** * Calculates a hash code value for the object. * Objects that are equal will also have the same hashcode. diff --git a/src/java.base/share/classes/com/sun/crypto/provider/DHPublicKey.java b/src/java.base/share/classes/com/sun/crypto/provider/DHPublicKey.java index 7a0607f1227..47727c432a6 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/DHPublicKey.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/DHPublicKey.java @@ -49,7 +49,7 @@ javax.crypto.interfaces.DHPublicKey, Serializable { private static final long serialVersionUID = 7647557958927458271L; // the public key - private BigInteger y; + private final BigInteger y; // the key bytes, without the algorithm information private byte[] key; @@ -64,10 +64,10 @@ javax.crypto.interfaces.DHPublicKey, Serializable { private final BigInteger g; // the private-value length (optional) - private int l; + private final int l; // Note: this OID is used by DHPrivateKey as well. - static ObjectIdentifier DH_OID = + static final ObjectIdentifier DH_OID = ObjectIdentifier.of(KnownOIDs.DiffieHellman); /** @@ -153,6 +153,8 @@ javax.crypto.interfaces.DHPublicKey, Serializable { // Private-value length is OPTIONAL if (params.data.available() != 0) { this.l = params.data.getInteger(); + } else { + this.l = 0; } if (params.data.available() != 0) { throw new InvalidKeyException("Extra parameter data"); @@ -162,7 +164,10 @@ javax.crypto.interfaces.DHPublicKey, Serializable { * Parse the key */ this.key = derKeyVal.data.getBitString(); - parseKeyBits(); + + DerInputStream in = new DerInputStream(this.key); + this.y = in.getBigInteger(); + if (derKeyVal.data.available() != 0) { throw new InvalidKeyException("Excess key data"); } @@ -263,16 +268,6 @@ javax.crypto.interfaces.DHPublicKey, Serializable { return sb.toString(); } - private void parseKeyBits() throws InvalidKeyException { - try { - DerInputStream in = new DerInputStream(this.key); - this.y = in.getBigInteger(); - } catch (IOException e) { - throw new InvalidKeyException( - "Error parsing key encoding: " + e.toString()); - } - } - /** * Calculates a hash code value for the object. * Objects that are equal will also have the same hashcode. diff --git a/src/java.base/share/classes/com/sun/crypto/provider/EncryptedPrivateKeyInfo.java b/src/java.base/share/classes/com/sun/crypto/provider/EncryptedPrivateKeyInfo.java index cfeb66c62c6..698a5711356 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/EncryptedPrivateKeyInfo.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/EncryptedPrivateKeyInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2023, 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 @@ -44,10 +44,10 @@ import sun.security.util.*; final class EncryptedPrivateKeyInfo { // the "encryptionAlgorithm" field - private AlgorithmId algid; + private final AlgorithmId algid; // the "encryptedData" field - private byte[] encryptedData; + private final byte[] encryptedData; // the ASN.1 encoded contents of this class private byte[] encoded; diff --git a/src/java.base/share/classes/com/sun/crypto/provider/GHASH.java b/src/java.base/share/classes/com/sun/crypto/provider/GHASH.java index 8a1a086e433..b7aaf6059d5 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/GHASH.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/GHASH.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2023, 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 @@ -124,7 +124,7 @@ final class GHASH implements Cloneable, GCM { // hashtable subkeyHtbl holds 2*9 powers of subkeyH computed using // carry-less multiplication - private long[] subkeyHtbl; + private final long[] subkeyHtbl; // buffer for storing hash private final long[] state; diff --git a/src/java.base/share/classes/com/sun/crypto/provider/GaloisCounterMode.java b/src/java.base/share/classes/com/sun/crypto/provider/GaloisCounterMode.java index 03b481af6c2..686fe384707 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/GaloisCounterMode.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/GaloisCounterMode.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2023, 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 @@ -74,8 +74,8 @@ import jdk.internal.vm.annotation.IntrinsicCandidate; * @since 1.8 */ abstract class GaloisCounterMode extends CipherSpi { - static int DEFAULT_IV_LEN = 12; // in bytes - static int DEFAULT_TAG_LEN = 16; // in bytes + private static final int DEFAULT_IV_LEN = 12; // in bytes + private static final int DEFAULT_TAG_LEN = 16; // in bytes // In NIST SP 800-38D, GCM input size is limited to be no longer // than (2^36 - 32) bytes. Otherwise, the counter will wrap // around and lead to a leak of plaintext. @@ -98,7 +98,7 @@ abstract class GaloisCounterMode extends CipherSpi { private boolean initialized = false; - SymmetricCipher blockCipher; + final SymmetricCipher blockCipher; // Engine instance for encryption or decryption private GCMEngine engine; private boolean encryption = true; @@ -106,7 +106,7 @@ abstract class GaloisCounterMode extends CipherSpi { // Default value is 128bits, this is in bytes. int tagLenBytes = DEFAULT_TAG_LEN; // Key size if the value is passed, in bytes. - int keySize; + private final int keySize; // Prevent reuse of iv or key boolean reInit = false; byte[] lastKey = EMPTY_BUF; diff --git a/src/java.base/share/classes/com/sun/crypto/provider/ISO10126Padding.java b/src/java.base/share/classes/com/sun/crypto/provider/ISO10126Padding.java index 19fb961681a..902d302cac4 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/ISO10126Padding.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/ISO10126Padding.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2023, 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 @@ -38,7 +38,7 @@ import javax.crypto.ShortBufferException; */ final class ISO10126Padding implements Padding { - private int blockSize; + private final int blockSize; ISO10126Padding(int blockSize) { this.blockSize = blockSize; diff --git a/src/java.base/share/classes/com/sun/crypto/provider/JceKeyStore.java b/src/java.base/share/classes/com/sun/crypto/provider/JceKeyStore.java index ca6c0a56ea8..fcc450387af 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/JceKeyStore.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/JceKeyStore.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2023, 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 @@ -99,7 +99,7 @@ public final class JceKeyStore extends KeyStoreSpi { * Private keys and certificates are stored in a hashtable. * Hash entries are keyed by alias names. */ - private Hashtable entries = new Hashtable(); + private final Hashtable entries = new Hashtable<>(); /** * Returns the key associated with the given alias, using the given diff --git a/src/java.base/share/classes/com/sun/crypto/provider/KeyProtector.java b/src/java.base/share/classes/com/sun/crypto/provider/KeyProtector.java index 44c7a1f6432..eadc032b36a 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/KeyProtector.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/KeyProtector.java @@ -78,7 +78,7 @@ final class KeyProtector { // the password used for protecting/recovering keys passed through this // key protector - private char[] password; + private final char[] password; /** * {@systemProperty jdk.jceks.iterationCount} property indicating the diff --git a/src/java.base/share/classes/com/sun/crypto/provider/OAEPParameters.java b/src/java.base/share/classes/com/sun/crypto/provider/OAEPParameters.java index fd609c9f74e..9d724728893 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/OAEPParameters.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/OAEPParameters.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2023, 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 @@ -56,9 +56,9 @@ public final class OAEPParameters extends AlgorithmParametersSpi { private String mdName; private MGF1ParameterSpec mgfSpec; private byte[] p; - private static ObjectIdentifier OID_MGF1 = + private static final ObjectIdentifier OID_MGF1 = ObjectIdentifier.of(KnownOIDs.MGF1); - private static ObjectIdentifier OID_PSpecified = + private static final ObjectIdentifier OID_PSpecified = ObjectIdentifier.of(KnownOIDs.PSpecified); public OAEPParameters() { diff --git a/src/java.base/share/classes/com/sun/crypto/provider/OutputFeedback.java b/src/java.base/share/classes/com/sun/crypto/provider/OutputFeedback.java index 7b518836cd1..aa56144f090 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/OutputFeedback.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/OutputFeedback.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -45,18 +45,18 @@ final class OutputFeedback extends FeedbackCipher { /* * output buffer */ - private byte[] k = null; + private final byte[] k; /* * register buffer */ - private byte[] register = null; + private final byte[] register; /* * number of bytes for each stream unit, defaults to the blocksize * of the embedded cipher */ - private int numBytes; + private final int numBytes; // variables for save/restore calls private byte[] registerSave = null; diff --git a/src/java.base/share/classes/com/sun/crypto/provider/PBEKeyFactory.java b/src/java.base/share/classes/com/sun/crypto/provider/PBEKeyFactory.java index d37f0e763ad..02451e536c6 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/PBEKeyFactory.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/PBEKeyFactory.java @@ -46,7 +46,7 @@ import java.util.Set; */ abstract class PBEKeyFactory extends SecretKeyFactorySpi { - private String type; + private final String type; private static final HashSet validTypes; /** diff --git a/src/java.base/share/classes/com/sun/crypto/provider/PBES1Core.java b/src/java.base/share/classes/com/sun/crypto/provider/PBES1Core.java index f8972b13343..68b1771d7d9 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/PBES1Core.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/PBES1Core.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2023, 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 @@ -43,10 +43,9 @@ import javax.crypto.spec.*; final class PBES1Core { // the encapsulated DES cipher - private CipherCore cipher; - private MessageDigest md; - private int blkSize; - private String algo = null; + private final CipherCore cipher; + private final MessageDigest md; + private final String algo; private byte[] salt = null; private int iCount = 10; diff --git a/src/java.base/share/classes/com/sun/crypto/provider/PBES2Parameters.java b/src/java.base/share/classes/com/sun/crypto/provider/PBES2Parameters.java index 1661acc434d..fb3dfa00148 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/PBES2Parameters.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/PBES2Parameters.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2022, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2023, 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 @@ -92,15 +92,15 @@ import sun.security.util.*; */ abstract class PBES2Parameters extends AlgorithmParametersSpi { - private static ObjectIdentifier pkcs5PBKDF2_OID = + private static final ObjectIdentifier pkcs5PBKDF2_OID = ObjectIdentifier.of(KnownOIDs.PBKDF2WithHmacSHA1); - private static ObjectIdentifier pkcs5PBES2_OID = + private static final ObjectIdentifier pkcs5PBES2_OID = ObjectIdentifier.of(KnownOIDs.PBES2); - private static ObjectIdentifier aes128CBC_OID = + private static final ObjectIdentifier aes128CBC_OID = ObjectIdentifier.of(KnownOIDs.AES_128$CBC$NoPadding); - private static ObjectIdentifier aes192CBC_OID = + private static final ObjectIdentifier aes192CBC_OID = ObjectIdentifier.of(KnownOIDs.AES_192$CBC$NoPadding); - private static ObjectIdentifier aes256CBC_OID = + private static final ObjectIdentifier aes256CBC_OID = ObjectIdentifier.of(KnownOIDs.AES_256$CBC$NoPadding); // the PBES2 algorithm name diff --git a/src/java.base/share/classes/com/sun/crypto/provider/PBEWithMD5AndDESCipher.java b/src/java.base/share/classes/com/sun/crypto/provider/PBEWithMD5AndDESCipher.java index 5034434024d..a60656b3cd2 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/PBEWithMD5AndDESCipher.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/PBEWithMD5AndDESCipher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -43,7 +43,7 @@ import javax.crypto.*; public final class PBEWithMD5AndDESCipher extends CipherSpi { // the encapsulated DES cipher - private PBES1Core core; + private final PBES1Core core; /** * Creates an instance of this cipher, and initializes its mode (CBC) and diff --git a/src/java.base/share/classes/com/sun/crypto/provider/PBEWithMD5AndTripleDESCipher.java b/src/java.base/share/classes/com/sun/crypto/provider/PBEWithMD5AndTripleDESCipher.java index 16784afc897..41a1b3ca7fa 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/PBEWithMD5AndTripleDESCipher.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/PBEWithMD5AndTripleDESCipher.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2023, 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 @@ -53,7 +53,7 @@ import javax.crypto.*; */ public final class PBEWithMD5AndTripleDESCipher extends CipherSpi { - private PBES1Core core; + private final PBES1Core core; /** * Creates an instance of this cipher, and initializes its mode (CBC) and diff --git a/src/java.base/share/classes/com/sun/crypto/provider/PBKDF2KeyImpl.java b/src/java.base/share/classes/com/sun/crypto/provider/PBKDF2KeyImpl.java index 8e85221f4bb..a02ce2d1551 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/PBKDF2KeyImpl.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/PBKDF2KeyImpl.java @@ -63,7 +63,7 @@ final class PBKDF2KeyImpl implements javax.crypto.interfaces.PBEKey { private final char[] passwd; private final byte[] salt; private final int iterCount; - private byte[] key; + private final byte[] key; // The following fields are not Serializable. See writeReplace method. private final transient Mac prf; @@ -93,6 +93,7 @@ final class PBKDF2KeyImpl implements javax.crypto.interfaces.PBEKey { // Convert the password from char[] to byte[] byte[] passwdBytes = getPasswordBytes(this.passwd); + byte[] key = null; try { this.salt = keySpec.getSalt(); if (salt == null) { @@ -111,7 +112,7 @@ final class PBKDF2KeyImpl implements javax.crypto.interfaces.PBEKey { throw new InvalidKeySpecException("Key length is negative"); } this.prf = Mac.getInstance(prfAlgo, SunJCE.getInstance()); - this.key = deriveKey(prf, passwdBytes, salt, iterCount, keyLength); + key = deriveKey(prf, passwdBytes, salt, iterCount, keyLength); } catch (NoSuchAlgorithmException nsae) { // not gonna happen; re-throw just in case throw new InvalidKeySpecException(nsae); @@ -122,7 +123,7 @@ final class PBKDF2KeyImpl implements javax.crypto.interfaces.PBEKey { } } // Use the cleaner to zero the key when no longer referenced - final byte[] k = this.key; + final byte[] k = this.key = key; final char[] p = this.passwd; cleaner = CleanerFactory.cleaner().register(this, () -> { diff --git a/src/java.base/share/classes/com/sun/crypto/provider/PKCS5Padding.java b/src/java.base/share/classes/com/sun/crypto/provider/PKCS5Padding.java index 191d7308eba..7b3850bd556 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/PKCS5Padding.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/PKCS5Padding.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2023, 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 @@ -38,7 +38,7 @@ import java.util.Arrays; */ final class PKCS5Padding implements Padding { - private int blockSize; + private final int blockSize; PKCS5Padding(int blockSize) { this.blockSize = blockSize; diff --git a/src/java.base/share/classes/com/sun/crypto/provider/PrivateKeyInfo.java b/src/java.base/share/classes/com/sun/crypto/provider/PrivateKeyInfo.java index 2ea5220ed2e..cf4d1a15dbd 100644 --- a/src/java.base/share/classes/com/sun/crypto/provider/PrivateKeyInfo.java +++ b/src/java.base/share/classes/com/sun/crypto/provider/PrivateKeyInfo.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2021, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2023, 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 @@ -53,10 +53,10 @@ final class PrivateKeyInfo { private static final BigInteger VERSION = BigInteger.ZERO; // the private-key algorithm - private AlgorithmId algid; + private final AlgorithmId algid; // the private-key value - private byte[] privkey; + private final byte[] privkey; /** * Constructs a PKCS#8 PrivateKeyInfo from its ASN.1 encoding.