summary refs log tree commit diff
path: root/crypto/src/tls/TlsRsaUtilities.cs
blob: d520d3ea22b89dbbc6a0ff03c9718c86ddea412c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using System;
using System.IO;

using Org.BouncyCastle.Tls.Crypto;

namespace Org.BouncyCastle.Tls
{
    /// <summary>RSA Utility methods.</summary>
    public abstract class TlsRsaUtilities
    {
        /// <summary>Generate a pre_master_secret and send it encrypted to the server.</summary>
        /// <exception cref="IOException"/>
        public static TlsSecret GenerateEncryptedPreMasterSecret(TlsContext context, TlsCertificate certificate,
            Stream output)
        {
            TlsSecret preMasterSecret = context.Crypto.GenerateRsaPreMasterSecret(context.RsaPreMasterSecretVersion);

            byte[] encryptedPreMasterSecret = preMasterSecret.Encrypt(certificate);
            TlsUtilities.WriteEncryptedPms(context, encryptedPreMasterSecret, output);

            return preMasterSecret;
        }
    }
}