GenerateEphemeralClientKeyExchange() public static method

public static GenerateEphemeralClientKeyExchange ( SecureRandom random, byte ecPointFormats, ECDomainParameters ecParams, Stream output ) : ECPrivateKeyParameters
random Org.BouncyCastle.Security.SecureRandom
ecPointFormats byte
ecParams Org.BouncyCastle.Crypto.Parameters.ECDomainParameters
output Stream
return Org.BouncyCastle.Crypto.Parameters.ECPrivateKeyParameters
 public override void GenerateClientKeyExchange(Stream output)
 {
     if (mPskIdentityHint == null)
     {
         mPskIdentity.SkipIdentityHint();
     }
     else
     {
         mPskIdentity.NotifyIdentityHint(mPskIdentityHint);
     }
     byte[] pskIdentity = mPskIdentity.GetPskIdentity();
     if (pskIdentity == null)
     {
         throw new TlsFatalAlert(80);
     }
     mPsk = mPskIdentity.GetPsk();
     if (mPsk == null)
     {
         throw new TlsFatalAlert(80);
     }
     TlsUtilities.WriteOpaque16(pskIdentity, output);
     mContext.SecurityParameters.pskIdentity = pskIdentity;
     if (mKeyExchange == 14)
     {
         mDHAgreePrivateKey = TlsDHUtilities.GenerateEphemeralClientKeyExchange(mContext.SecureRandom, mDHParameters, output);
     }
     else if (mKeyExchange == 24)
     {
         mECAgreePrivateKey = TlsEccUtilities.GenerateEphemeralClientKeyExchange(mContext.SecureRandom, mServerECPointFormats, mECAgreePublicKey.Parameters, output);
     }
     else if (mKeyExchange == 15)
     {
         mPremasterSecret = TlsRsaUtilities.GenerateEncryptedPreMasterSecret(mContext, mRsaServerPublicKey, output);
     }
 }
Beispiel #2
0
 public override void GenerateClientKeyExchange(Stream output)
 {
     if (mAgreementCredentials == null)
     {
         mECAgreePrivateKey = TlsEccUtilities.GenerateEphemeralClientKeyExchange(mContext.SecureRandom, mServerECPointFormats, mECAgreePublicKey.Parameters, output);
     }
 }
        internal static ECPrivateKeyParameters GenerateEphemeralServerKeyExchange(SecureRandom random, int[] namedCurves, byte[] ecPointFormats, Stream output)
        {
            int num = -1;

            if (namedCurves == null)
            {
                num = 23;
            }
            else
            {
                for (int i = 0; i < namedCurves.Length; i++)
                {
                    int num2 = namedCurves[i];
                    if (NamedCurve.IsValid(num2) && TlsEccUtilities.IsSupportedNamedCurve(num2))
                    {
                        num = num2;
                        break;
                    }
                }
            }
            ECDomainParameters eCDomainParameters = null;

            if (num >= 0)
            {
                eCDomainParameters = TlsEccUtilities.GetParametersForNamedCurve(num);
            }
            else if (Arrays.Contains(namedCurves, 65281))
            {
                eCDomainParameters = TlsEccUtilities.GetParametersForNamedCurve(23);
            }
            else if (Arrays.Contains(namedCurves, 65282))
            {
                eCDomainParameters = TlsEccUtilities.GetParametersForNamedCurve(10);
            }
            if (eCDomainParameters == null)
            {
                throw new TlsFatalAlert(80);
            }
            if (num < 0)
            {
                TlsEccUtilities.WriteExplicitECParameters(ecPointFormats, eCDomainParameters, output);
            }
            else
            {
                TlsEccUtilities.WriteNamedECParameters(num, output);
            }
            return(TlsEccUtilities.GenerateEphemeralClientKeyExchange(random, ecPointFormats, eCDomainParameters, output));
        }
Beispiel #4
0
        public override void GenerateClientKeyExchange(Stream output)
        {
            if (mPskIdentityHint == null)
            {
                mPskIdentity.SkipIdentityHint();
            }
            else
            {
                mPskIdentity.NotifyIdentityHint(mPskIdentityHint);
            }

            byte[] psk_identity = mPskIdentity.GetPskIdentity();
            if (psk_identity == null)
            {
                throw new TlsFatalAlert(AlertDescription.internal_error);
            }

            this.mPsk = mPskIdentity.GetPsk();
            if (mPsk == null)
            {
                throw new TlsFatalAlert(AlertDescription.internal_error);
            }

            TlsUtilities.WriteOpaque16(psk_identity, output);

            mContext.SecurityParameters.pskIdentity = psk_identity;

            if (this.mKeyExchange == KeyExchangeAlgorithm.DHE_PSK)
            {
                this.mDHAgreePrivateKey = TlsDHUtilities.GenerateEphemeralClientKeyExchange(mContext.SecureRandom,
                                                                                            mDHParameters, output);
            }
            else if (this.mKeyExchange == KeyExchangeAlgorithm.ECDHE_PSK)
            {
                this.mECAgreePrivateKey = TlsEccUtilities.GenerateEphemeralClientKeyExchange(mContext.SecureRandom,
                                                                                             mServerECPointFormats, mECAgreePublicKey.Parameters, output);
            }
            else if (this.mKeyExchange == KeyExchangeAlgorithm.RSA_PSK)
            {
                this.mPremasterSecret = TlsRsaUtilities.GenerateEncryptedPreMasterSecret(mContext,
                                                                                         this.mRsaServerPublicKey, output);
            }
        }