aboutsummaryrefslogtreecommitdiff
path: root/src/share/classes/sun/security
diff options
context:
space:
mode:
authorandrew <unknown>2020-01-03 18:09:11 +0000
committerbell-sw <liberica@bell-sw.com>2020-01-19 09:13:25 +0300
commit1e7b93fa2b8e39e94a309474d1e0729340a88e87 (patch)
tree6cf27af39c1479a909a856107fc01e1fcd20d350 /src/share/classes/sun/security
parentb8399b9b0cc2ae1fe94d7d7b203c24a6504bdce8 (diff)
downloadjdk8u_jdk-1e7b93fa2b8e39e94a309474d1e0729340a88e87.tar.gz
8231139: Improved keystore support
Reviewed-by: mbalao
Diffstat (limited to 'src/share/classes/sun/security')
-rw-r--r--src/share/classes/sun/security/krb5/internal/NetClient.java4
-rw-r--r--src/share/classes/sun/security/krb5/internal/ccache/CCacheInputStream.java8
-rw-r--r--src/share/classes/sun/security/provider/JavaKeyStore.java19
-rw-r--r--src/share/classes/sun/security/util/DerValue.java2
4 files changed, 15 insertions, 18 deletions
diff --git a/src/share/classes/sun/security/krb5/internal/NetClient.java b/src/share/classes/sun/security/krb5/internal/NetClient.java
index 62243560ca..ab4fe40c3f 100644
--- a/src/share/classes/sun/security/krb5/internal/NetClient.java
+++ b/src/share/classes/sun/security/krb5/internal/NetClient.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2000, 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
@@ -103,7 +103,7 @@ class TCPClient extends NetClient {
}
try {
- return IOUtils.readFully(in, len, true);
+ return IOUtils.readExactlyNBytes(in, len);
} catch (IOException ioe) {
if (Krb5.DEBUG) {
System.out.println(
diff --git a/src/share/classes/sun/security/krb5/internal/ccache/CCacheInputStream.java b/src/share/classes/sun/security/krb5/internal/ccache/CCacheInputStream.java
index c7d9d2adef..a73af4614f 100644
--- a/src/share/classes/sun/security/krb5/internal/ccache/CCacheInputStream.java
+++ b/src/share/classes/sun/security/krb5/internal/ccache/CCacheInputStream.java
@@ -128,7 +128,7 @@ public class CCacheInputStream extends KrbDataInputStream implements FileCCacheC
length--;
for (int i = 0; i <= length; i++) {
namelength = readLength4();
- byte[] bytes = IOUtils.readFully(this, namelength, true);
+ byte[] bytes = IOUtils.readExactlyNBytes(this, namelength);
result.add(new String(bytes));
}
if (result.isEmpty()) {
@@ -186,7 +186,7 @@ public class CCacheInputStream extends KrbDataInputStream implements FileCCacheC
if (version == KRB5_FCC_FVNO_3)
read(2); /* keytype recorded twice in fvno 3 */
keyLen = readLength4();
- byte[] bytes = IOUtils.readFully(this, keyLen, true);
+ byte[] bytes = IOUtils.readExactlyNBytes(this, keyLen);
return new EncryptionKey(bytes, keyType, new Integer(version));
}
@@ -239,7 +239,7 @@ public class CCacheInputStream extends KrbDataInputStream implements FileCCacheC
for (int i = 0; i < num; i++) {
adtype = read(2);
adlength = readLength4();
- data = IOUtils.readFully(this, adlength, true);
+ data = IOUtils.readExactlyNBytes(this, adlength);
auData.add(new AuthorizationDataEntry(adtype, data));
}
return auData.toArray(new AuthorizationDataEntry[auData.size()]);
@@ -253,7 +253,7 @@ public class CCacheInputStream extends KrbDataInputStream implements FileCCacheC
if (length == 0) {
return null;
} else {
- return IOUtils.readFully(this, length, true);
+ return IOUtils.readExactlyNBytes(this, length);
}
}
diff --git a/src/share/classes/sun/security/provider/JavaKeyStore.java b/src/share/classes/sun/security/provider/JavaKeyStore.java
index 409af47cdf..6befb54d68 100644
--- a/src/share/classes/sun/security/provider/JavaKeyStore.java
+++ b/src/share/classes/sun/security/provider/JavaKeyStore.java
@@ -691,7 +691,7 @@ abstract class JavaKeyStore extends KeyStoreSpi {
// Read the private key
entry.protectedPrivKey =
- IOUtils.readFully(dis, dis.readInt(), true);
+ IOUtils.readExactlyNBytes(dis, dis.readInt());
// Read the certificate chain
int numOfCerts = dis.readInt();
@@ -716,7 +716,7 @@ abstract class JavaKeyStore extends KeyStoreSpi {
}
}
// instantiate the certificate
- encoded = IOUtils.readFully(dis, dis.readInt(), true);
+ encoded = IOUtils.readExactlyNBytes(dis, dis.readInt());
bais = new ByteArrayInputStream(encoded);
certs.add(cf.generateCertificate(bais));
bais.close();
@@ -755,7 +755,7 @@ abstract class JavaKeyStore extends KeyStoreSpi {
cfs.put(certType, cf);
}
}
- encoded = IOUtils.readFully(dis, dis.readInt(), true);
+ encoded = IOUtils.readExactlyNBytes(dis, dis.readInt());
bais = new ByteArrayInputStream(encoded);
entry.cert = cf.generateCertificate(bais);
bais.close();
@@ -776,16 +776,13 @@ abstract class JavaKeyStore extends KeyStoreSpi {
if (password != null) {
byte computed[], actual[];
computed = md.digest();
- actual = new byte[computed.length];
- dis.readFully(actual);
- for (int i = 0; i < computed.length; i++) {
- if (computed[i] != actual[i]) {
- Throwable t = new UnrecoverableKeyException
+ actual = IOUtils.readExactlyNBytes(dis, computed.length);
+ if (!MessageDigest.isEqual(computed, actual)) {
+ Throwable t = new UnrecoverableKeyException
("Password verification failed");
- throw (IOException)new IOException
+ throw (IOException) new IOException
("Keystore was tampered with, or "
- + "password was incorrect").initCause(t);
- }
+ + "password was incorrect").initCause(t);
}
}
}
diff --git a/src/share/classes/sun/security/util/DerValue.java b/src/share/classes/sun/security/util/DerValue.java
index 46dcbd34f3..595c011693 100644
--- a/src/share/classes/sun/security/util/DerValue.java
+++ b/src/share/classes/sun/security/util/DerValue.java
@@ -409,7 +409,7 @@ public class DerValue {
if (fullyBuffered && in.available() != length)
throw new IOException("extra data given to DerValue constructor");
- byte[] bytes = IOUtils.readFully(in, length, true);
+ byte[] bytes = IOUtils.readExactlyNBytes(in, length);
buffer = new DerInputBuffer(bytes, allowBER);
return new DerInputStream(buffer);