org.bouncycastle.tls.TlsRSAUtils Maven / Gradle / Ivy
package org.bouncycastle.tls;
import java.io.IOException;
import java.io.OutputStream;
import org.bouncycastle.tls.crypto.TlsCertificate;
import org.bouncycastle.tls.crypto.TlsSecret;
/**
* RSA Utility methods.
*/
public abstract class TlsRSAUtils
{
private TlsRSAUtils()
{
}
/*
* Generate a pre_master_secret and send it encrypted to the server
*/
public static TlsSecret generateEncryptedPreMasterSecret(TlsContext context, TlsCertificate certificate,
OutputStream output) throws IOException
{
TlsSecret preMasterSecret = context.getCrypto().generateRSAPreMasterSecret(context.getClientVersion());
byte[] encryptedPreMasterSecret = preMasterSecret.encrypt(certificate);
if (TlsUtils.isSSL(context))
{
// TODO Do any SSLv3 servers actually expect the length?
output.write(encryptedPreMasterSecret);
}
else
{
TlsUtils.writeOpaque16(encryptedPreMasterSecret, output);
}
return preMasterSecret;
}
}