151 lines
4.9 KiB
Java
151 lines
4.9 KiB
Java
|
package org.bouncycastle.crypto.tls;
|
||
|
|
||
|
import java.io.ByteArrayInputStream;
|
||
|
import java.io.ByteArrayOutputStream;
|
||
|
import java.io.IOException;
|
||
|
import java.util.Hashtable;
|
||
|
import org.bouncycastle.util.Arrays;
|
||
|
|
||
|
/* loaded from: classes6.dex */
|
||
|
public final class SessionParameters {
|
||
|
private int cipherSuite;
|
||
|
private short compressionAlgorithm;
|
||
|
private byte[] encodedServerExtensions;
|
||
|
private byte[] masterSecret;
|
||
|
private Certificate peerCertificate;
|
||
|
private byte[] pskIdentity;
|
||
|
private byte[] srpIdentity;
|
||
|
|
||
|
/* loaded from: classes6.dex */
|
||
|
public static final class Builder {
|
||
|
private int cipherSuite = -1;
|
||
|
private short compressionAlgorithm = -1;
|
||
|
private byte[] masterSecret = null;
|
||
|
private Certificate peerCertificate = null;
|
||
|
private byte[] pskIdentity = null;
|
||
|
private byte[] srpIdentity = null;
|
||
|
private byte[] encodedServerExtensions = null;
|
||
|
|
||
|
public final Builder setServerExtensions(Hashtable hashtable) throws IOException {
|
||
|
if (hashtable == null) {
|
||
|
this.encodedServerExtensions = null;
|
||
|
} else {
|
||
|
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
||
|
TlsProtocol.writeExtensions(byteArrayOutputStream, hashtable);
|
||
|
this.encodedServerExtensions = byteArrayOutputStream.toByteArray();
|
||
|
}
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
public final Builder setSRPIdentity(byte[] bArr) {
|
||
|
this.srpIdentity = bArr;
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
public final Builder setPskIdentity(byte[] bArr) {
|
||
|
this.pskIdentity = bArr;
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
public final Builder setPeerCertificate(Certificate certificate) {
|
||
|
this.peerCertificate = certificate;
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
public final Builder setPSKIdentity(byte[] bArr) {
|
||
|
this.pskIdentity = bArr;
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
public final Builder setMasterSecret(byte[] bArr) {
|
||
|
this.masterSecret = bArr;
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
public final Builder setCompressionAlgorithm(short s) {
|
||
|
this.compressionAlgorithm = s;
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
public final Builder setCipherSuite(int i) {
|
||
|
this.cipherSuite = i;
|
||
|
return this;
|
||
|
}
|
||
|
|
||
|
public final SessionParameters build() {
|
||
|
validate(this.cipherSuite >= 0, "cipherSuite");
|
||
|
validate(this.compressionAlgorithm >= 0, "compressionAlgorithm");
|
||
|
validate(this.masterSecret != null, "masterSecret");
|
||
|
return new SessionParameters(this.cipherSuite, this.compressionAlgorithm, this.masterSecret, this.peerCertificate, this.pskIdentity, this.srpIdentity, this.encodedServerExtensions);
|
||
|
}
|
||
|
|
||
|
private void validate(boolean z, String str) {
|
||
|
if (z) {
|
||
|
return;
|
||
|
}
|
||
|
StringBuilder sb = new StringBuilder("Required session parameter '");
|
||
|
sb.append(str);
|
||
|
sb.append("' not configured");
|
||
|
throw new IllegalStateException(sb.toString());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public final Hashtable readServerExtensions() throws IOException {
|
||
|
if (this.encodedServerExtensions == null) {
|
||
|
return null;
|
||
|
}
|
||
|
return TlsProtocol.readExtensions(new ByteArrayInputStream(this.encodedServerExtensions));
|
||
|
}
|
||
|
|
||
|
public final byte[] getSRPIdentity() {
|
||
|
return this.srpIdentity;
|
||
|
}
|
||
|
|
||
|
public final byte[] getPskIdentity() {
|
||
|
return this.pskIdentity;
|
||
|
}
|
||
|
|
||
|
public final Certificate getPeerCertificate() {
|
||
|
return this.peerCertificate;
|
||
|
}
|
||
|
|
||
|
public final byte[] getPSKIdentity() {
|
||
|
return this.pskIdentity;
|
||
|
}
|
||
|
|
||
|
public final byte[] getMasterSecret() {
|
||
|
return this.masterSecret;
|
||
|
}
|
||
|
|
||
|
public final short getCompressionAlgorithm() {
|
||
|
return this.compressionAlgorithm;
|
||
|
}
|
||
|
|
||
|
public final int getCipherSuite() {
|
||
|
return this.cipherSuite;
|
||
|
}
|
||
|
|
||
|
public final SessionParameters copy() {
|
||
|
return new SessionParameters(this.cipherSuite, this.compressionAlgorithm, this.masterSecret, this.peerCertificate, this.pskIdentity, this.srpIdentity, this.encodedServerExtensions);
|
||
|
}
|
||
|
|
||
|
public final void clear() {
|
||
|
byte[] bArr = this.masterSecret;
|
||
|
if (bArr != null) {
|
||
|
Arrays.fill(bArr, (byte) 0);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private SessionParameters(int i, short s, byte[] bArr, Certificate certificate, byte[] bArr2, byte[] bArr3, byte[] bArr4) {
|
||
|
this.pskIdentity = null;
|
||
|
this.srpIdentity = null;
|
||
|
this.cipherSuite = i;
|
||
|
this.compressionAlgorithm = s;
|
||
|
this.masterSecret = Arrays.clone(bArr);
|
||
|
this.peerCertificate = certificate;
|
||
|
this.pskIdentity = Arrays.clone(bArr2);
|
||
|
this.srpIdentity = Arrays.clone(bArr3);
|
||
|
this.encodedServerExtensions = bArr4;
|
||
|
}
|
||
|
}
|