anchor.diff:  %%     end.
   
   premaster_secret(OtherPublicDhKey, MyPrivateKey, #'DHParameter'{} = Params) ->
  -    public_key:compute_key(OtherPublicDhKey, MyPrivateKey, Params);
  -
  +    try 
  +	public_key:compute_key(OtherPublicDhKey, MyPrivateKey, Params)  
  +    catch 
  +	error:computation_failed -> 
  +	    throw(?ALERT_REC(?FATAL, ?ILLEGAL_PARAMETER))
  +    end;	   
   premaster_secret(PublicDhKey, PrivateDhKey, #server_dh_params{dh_p = Prime, dh_g = Base}) ->
  -    crypto:compute_key(dh, PublicDhKey, PrivateDhKey, [Prime, Base]);
  +    try 
  +	crypto:compute_key(dh, PublicDhKey, PrivateDhKey, [Prime, Base])
  +    catch 
  +	error:computation_failed -> 
  +	    throw(?ALERT_REC(?FATAL, ?ILLEGAL_PARAMETER))
  +    end;
   premaster_secret(#client_srp_public{srp_a = ClientPublicKey}, ServerKey, #srp_user{prime = Prime,
   										   verifier = Verifier}) ->
       case crypto:compute_key(srp, ClientPublicKey, ServerKey, {host, [Verifier, Prime, '6a']}) of
   	error ->
  -	    ?ALERT_REC(?FATAL, ?ILLEGAL_PARAMETER);
  +	    throw(?ALERT_REC(?FATAL, ?ILLEGAL_PARAMETER));
   	PremasterSecret ->
   	    PremasterSecret
       end;
  -
   premaster_secret(#server_srp_params{srp_n = Prime, srp_g = Generator, srp_s = Salt, srp_b = Public},
   		 ClientKeys, {Username, Password}) ->
       case ssl_srp_primes:check_srp_params(Generator, Prime) of
  
positive.code: 	#alert{} = Alert ->
  	    Alert;
  	_ ->
  	    ?ALERT_REC(?FATAL, ?ILLEGAL_PARAMETER)
      end.
  
  handle_psk_identity(_PSKIdentity, LookupFun)
  
negative.code: 	#alert{} = Alert ->
  	    Alert;
  	_ ->
  	    throw(?ALERT_REC(?FATAL, ?ILLEGAL_PARAMETER))
      end.
  
  psk_secret(PSKIdentity, PSKLookup, PremasterSecret) ->
  