org.bouncycastle.tls.crypto.impl.TlsImplUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of impersonator Show documentation
Show all versions of impersonator Show documentation
Spoof TLS/JA3/JA4 and HTTP/2 fingerprints in Java
The newest version!
package org.bouncycastle.tls.crypto.impl;
import org.bouncycastle.tls.ExporterLabel;
import org.bouncycastle.tls.ProtocolVersion;
import org.bouncycastle.tls.SecurityParameters;
import org.bouncycastle.tls.crypto.TlsCryptoParameters;
import org.bouncycastle.tls.crypto.TlsSecret;
import org.bouncycastle.util.Arrays;
/**
* Useful utility methods.
*/
public class TlsImplUtils
{
public static boolean isSSL(TlsCryptoParameters cryptoParams)
{
return cryptoParams.getServerVersion().isSSL();
}
public static boolean isTLSv10(ProtocolVersion version)
{
return ProtocolVersion.TLSv10.isEqualOrEarlierVersionOf(version.getEquivalentTLSVersion());
}
public static boolean isTLSv10(TlsCryptoParameters cryptoParams)
{
return isTLSv10(cryptoParams.getServerVersion());
}
public static boolean isTLSv11(ProtocolVersion version)
{
return ProtocolVersion.TLSv11.isEqualOrEarlierVersionOf(version.getEquivalentTLSVersion());
}
public static boolean isTLSv11(TlsCryptoParameters cryptoParams)
{
return isTLSv11(cryptoParams.getServerVersion());
}
public static boolean isTLSv12(ProtocolVersion version)
{
return ProtocolVersion.TLSv12.isEqualOrEarlierVersionOf(version.getEquivalentTLSVersion());
}
public static boolean isTLSv12(TlsCryptoParameters cryptoParams)
{
return isTLSv12(cryptoParams.getServerVersion());
}
public static boolean isTLSv13(ProtocolVersion version)
{
return ProtocolVersion.TLSv13.isEqualOrEarlierVersionOf(version.getEquivalentTLSVersion());
}
public static boolean isTLSv13(TlsCryptoParameters cryptoParams)
{
return isTLSv13(cryptoParams.getServerVersion());
}
public static byte[] calculateKeyBlock(TlsCryptoParameters cryptoParams, int length)
{
SecurityParameters securityParameters = cryptoParams.getSecurityParametersHandshake();
TlsSecret master_secret = securityParameters.getMasterSecret();
int prfAlgorithm = securityParameters.getPRFAlgorithm();
byte[] seed = Arrays.concatenate(securityParameters.getServerRandom(), securityParameters.getClientRandom());
return master_secret.deriveUsingPRF(prfAlgorithm, ExporterLabel.key_expansion, seed, length).extract();
}
}