{
  public void setup(Map attributes)  {    log.entering(this.getClass().getName(), "setup", attributes);    // do we have a SecureRandom, or should we use our own?    rnd = (SecureRandom) attributes.get(SOURCE_OF_RANDOMNESS);    // are we given a set of RSA params or we shall use our own?    RSAKeyGenParameterSpec params = (RSAKeyGenParameterSpec) attributes.get(RSA_PARAMETERS);    // find out the modulus length    if (params != null)      {        L = params.getKeysize();        e = params.getPublicExponent();      }    else      {        Integer l = (Integer) attributes.get(MODULUS_LENGTH);        L = (l == null ? DEFAULT_MODULUS_LENGTH : l.intValue());      }    if (L < 1024)      {        throw new IllegalArgumentException(MODULUS_LENGTH);      }    // what is the preferred encoding format    Integer formatID = (Integer) attributes.get(PREFERRED_ENCODING_FORMAT);    preferredFormat = formatID == null ? DEFAULT_ENCODING_FORMAT                                       : formatID.intValue();    log.exiting(this.getClass().getName(), "setup");  }