
org.spongycastle.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 bctls-jdk15on Show documentation
Show all versions of bctls-jdk15on Show documentation
Spongy Castle is a package-rename (org.bouncycastle.* to org.spongycastle.*) of Bouncy Castle
intended for the Android platform. Android unfortunately ships with a stripped-down version of
Bouncy Castle, which prevents easy upgrades - Spongy Castle overcomes this and provides a full,
up-to-date version of the Bouncy Castle cryptographic libs.
The newest version!
package org.spongycastle.tls.crypto.impl;
import org.spongycastle.tls.ExporterLabel;
import org.spongycastle.tls.ProtocolVersion;
import org.spongycastle.tls.SecurityParameters;
import org.spongycastle.tls.crypto.TlsCryptoParameters;
import org.spongycastle.tls.crypto.TlsSecret;
import org.spongycastle.util.Arrays;
/**
* Useful utility methods.
*/
public class TlsImplUtils
{
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 byte[] calculateKeyBlock(TlsCryptoParameters cryptoParams, int length)
{
SecurityParameters securityParameters = cryptoParams.getSecurityParameters();
TlsSecret master_secret = securityParameters.getMasterSecret();
byte[] seed = Arrays.concatenate(securityParameters.getServerRandom(), securityParameters.getClientRandom());
return PRF(cryptoParams, master_secret, ExporterLabel.key_expansion, seed, length).extract();
}
public static TlsSecret PRF(TlsCryptoParameters cryptoParams, TlsSecret secret, String asciiLabel, byte[] seed, int length)
{
int prfAlgorithm = cryptoParams.getSecurityParameters().getPrfAlgorithm();
return secret.deriveUsingPRF(prfAlgorithm, asciiLabel, seed, length);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy