mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 15:24:43 +02:00
8258915: Temporary buffer cleanup
Reviewed-by: valeriep
This commit is contained in:
parent
31d8a19e47
commit
f834557ae0
79 changed files with 1517 additions and 1039 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 1996, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1996, 2021, 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
|
||||
|
@ -100,32 +100,6 @@ class AlgIdDSA extends AlgorithmId implements DSAParams
|
|||
@Deprecated
|
||||
public AlgIdDSA () {}
|
||||
|
||||
AlgIdDSA (DerValue val) throws IOException
|
||||
{ super(val.getOID()); }
|
||||
|
||||
/**
|
||||
* Construct an AlgIdDSA from an X.509 encoded byte array.
|
||||
*/
|
||||
public AlgIdDSA (byte[] encodedAlg) throws IOException
|
||||
{ super (new DerValue(encodedAlg).getOID()); }
|
||||
|
||||
/**
|
||||
* Constructs a DSS/DSA Algorithm ID from unsigned integers that
|
||||
* define the algorithm parameters. Those integers are encoded
|
||||
* as big-endian byte arrays.
|
||||
*
|
||||
* @param p the DSS/DSA parameter "P"
|
||||
* @param q the DSS/DSA parameter "Q"
|
||||
* @param g the DSS/DSA parameter "G"
|
||||
*/
|
||||
public AlgIdDSA (byte[] p, byte[] q, byte[] g)
|
||||
throws IOException
|
||||
{
|
||||
this (new BigInteger (1, p),
|
||||
new BigInteger (1, q),
|
||||
new BigInteger (1, g));
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a DSS/DSA Algorithm ID from numeric parameters.
|
||||
* If all three are null, then the parameters portion of the algorithm id
|
||||
|
@ -135,8 +109,7 @@ class AlgIdDSA extends AlgorithmId implements DSAParams
|
|||
* @param q the DSS/DSA parameter "Q"
|
||||
* @param g the DSS/DSA parameter "G"
|
||||
*/
|
||||
public AlgIdDSA (BigInteger p, BigInteger q, BigInteger g)
|
||||
{
|
||||
public AlgIdDSA (BigInteger p, BigInteger q, BigInteger g) {
|
||||
super (DSA_oid);
|
||||
|
||||
if (p != null || q != null || g != null) {
|
||||
|
@ -168,28 +141,29 @@ class AlgIdDSA extends AlgorithmId implements DSAParams
|
|||
* For algorithm IDs which haven't been created from a DER encoded
|
||||
* value, "params" must be created.
|
||||
*/
|
||||
private void initializeParams ()
|
||||
throws IOException
|
||||
{
|
||||
DerOutputStream out = new DerOutputStream ();
|
||||
|
||||
private void initializeParams () throws IOException {
|
||||
DerOutputStream out = new DerOutputStream();
|
||||
out.putInteger(p);
|
||||
out.putInteger(q);
|
||||
out.putInteger(g);
|
||||
params = new DerValue (DerValue.tag_Sequence,out.toByteArray ());
|
||||
DerOutputStream result = new DerOutputStream();
|
||||
result.write(DerValue.tag_Sequence, out);
|
||||
encodedParams = result.toByteArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses algorithm parameters P, Q, and G. They're found
|
||||
* in the "params" member, which never needs to be changed.
|
||||
*/
|
||||
protected void decodeParams ()
|
||||
throws IOException
|
||||
{
|
||||
if (params == null)
|
||||
protected void decodeParams () throws IOException {
|
||||
if (encodedParams == null) {
|
||||
throw new IOException("DSA alg params are null");
|
||||
if (params.tag != DerValue.tag_Sequence)
|
||||
throw new IOException("DSA alg parsing error");
|
||||
}
|
||||
|
||||
DerValue params = new DerValue(encodedParams);
|
||||
if (params.tag != DerValue.tag_Sequence) {
|
||||
throw new IOException("DSA alg parsing error");
|
||||
}
|
||||
|
||||
params.data.reset ();
|
||||
|
||||
|
@ -206,21 +180,21 @@ class AlgIdDSA extends AlgorithmId implements DSAParams
|
|||
/*
|
||||
* Returns a formatted string describing the parameters.
|
||||
*/
|
||||
public String toString ()
|
||||
{ return paramsToString (); }
|
||||
public String toString () {
|
||||
return paramsToString();
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns a string describing the parameters.
|
||||
*/
|
||||
protected String paramsToString ()
|
||||
{
|
||||
if (params == null)
|
||||
protected String paramsToString () {
|
||||
if (encodedParams == null) {
|
||||
return " null\n";
|
||||
else
|
||||
return
|
||||
"\n p:\n" + Debug.toHexString(p) +
|
||||
"\n q:\n" + Debug.toHexString(q) +
|
||||
"\n g:\n" + Debug.toHexString(g) +
|
||||
"\n";
|
||||
} else {
|
||||
return "\n p:\n" + Debug.toHexString(p) +
|
||||
"\n q:\n" + Debug.toHexString(q) +
|
||||
"\n g:\n" + Debug.toHexString(g) +
|
||||
"\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -70,17 +70,13 @@ public class AlgorithmId implements Serializable, DerEncoder {
|
|||
// The (parsed) parameters
|
||||
@SuppressWarnings("serial") // Not statically typed as Serializable
|
||||
private AlgorithmParameters algParams;
|
||||
private boolean constructedFromDer = true;
|
||||
|
||||
/**
|
||||
* Parameters for this algorithm. These are stored in unparsed
|
||||
* DER-encoded form; subclasses can be made to automaticaly parse
|
||||
* them so there is fast access to these parameters.
|
||||
*/
|
||||
@SuppressWarnings("serial") // Not statically typed as Serializable
|
||||
protected DerValue params;
|
||||
|
||||
private transient byte[] encodedParams;
|
||||
protected transient byte[] encodedParams;
|
||||
|
||||
/**
|
||||
* Constructs an algorithm ID which will be initialized
|
||||
|
@ -107,17 +103,14 @@ public class AlgorithmId implements Serializable, DerEncoder {
|
|||
*/
|
||||
public AlgorithmId(ObjectIdentifier oid, AlgorithmParameters algparams) {
|
||||
algid = oid;
|
||||
algParams = algparams;
|
||||
constructedFromDer = false;
|
||||
this.algParams = algparams;
|
||||
if (algParams != null) {
|
||||
try {
|
||||
encodedParams = algParams.getEncoded();
|
||||
} catch (IOException ioe) {
|
||||
// It should be safe to ignore this.
|
||||
// This exception can occur if AlgorithmParameters was not
|
||||
// initialized (which should not occur), or if it was
|
||||
// initialized with bogus parameters, which should have
|
||||
// been detected when init was called.
|
||||
// Ignore this at the moment. This exception can occur
|
||||
// if AlgorithmParameters was not initialized yet. Will
|
||||
// try to re-getEncoded() again later.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -131,8 +124,7 @@ public class AlgorithmId implements Serializable, DerEncoder {
|
|||
public AlgorithmId(ObjectIdentifier oid, DerValue params)
|
||||
throws IOException {
|
||||
this.algid = oid;
|
||||
this.params = params;
|
||||
if (this.params != null) {
|
||||
if (params != null) {
|
||||
encodedParams = params.toByteArray();
|
||||
decodeParams();
|
||||
}
|
||||
|
@ -177,20 +169,14 @@ public class AlgorithmId implements Serializable, DerEncoder {
|
|||
DerOutputStream tmp = new DerOutputStream();
|
||||
|
||||
bytes.putOID(algid);
|
||||
// Setup params from algParams since no DER encoding is given
|
||||
if (constructedFromDer == false) {
|
||||
if (algParams != null) {
|
||||
if (encodedParams == null) {
|
||||
// call getEncoded again in case algParams were initialized
|
||||
// after being passed in to ctor.
|
||||
encodedParams = algParams.getEncoded();
|
||||
}
|
||||
params = new DerValue(encodedParams);
|
||||
} else {
|
||||
params = null;
|
||||
}
|
||||
|
||||
// Re-getEncoded() from algParams if it was not initialized
|
||||
if (algParams != null && encodedParams == null) {
|
||||
encodedParams = algParams.getEncoded();
|
||||
// If still not initialized. Let the IOE be thrown.
|
||||
}
|
||||
if (params == null) {
|
||||
|
||||
if (encodedParams == null) {
|
||||
// Changes backed out for compatibility with Solaris
|
||||
|
||||
// Several AlgorithmId should omit the whole parameter part when
|
||||
|
@ -242,7 +228,7 @@ public class AlgorithmId implements Serializable, DerEncoder {
|
|||
bytes.putNull();
|
||||
}
|
||||
} else {
|
||||
bytes.putDerValue(params);
|
||||
bytes.write(encodedParams);
|
||||
}
|
||||
tmp.write(DerValue.tag_Sequence, bytes);
|
||||
out.write(tmp.toByteArray());
|
||||
|
@ -285,7 +271,7 @@ public class AlgorithmId implements Serializable, DerEncoder {
|
|||
// first check the list of support oids
|
||||
KnownOIDs o = KnownOIDs.findMatch(oidStr);
|
||||
if (o == KnownOIDs.SpecifiedSHA2withECDSA) {
|
||||
if (params != null) {
|
||||
if (encodedParams != null) {
|
||||
try {
|
||||
AlgorithmId digestParams =
|
||||
AlgorithmId.parse(new DerValue(encodedParams));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue