code: func New(ctx context.Context, opts ...KeygenOption) (*Keygen, error) {
  	ctx, cancel := context.WithCancel(ctx)
  	k := &Keygen{
  		ctx:             ctx,
  		cancel:          cancel,
  		precomputeCount: PrecomputedNum,
  		clock:           clockwork.NewRealClock(),
  	}
  	for _, opt := range opts {
  		if err := opt(k); err != nil {
  			return nil, trace.Wrap(err)
  		}
  	}
  
  	if k.precomputeCount > 0 {
  		log.Debugf("SSH cert authority is going to pre-compute %v keys.", k.precomputeCount)
  		k.keysCh = make(chan keyPair, k.precomputeCount)
  		go k.precomputeKeys()
  	} else {
  		log.Debugf("SSH cert authority started with no keys pre-compute.")
  	}
  
  	return k, nil
  }
docs: // New returns a new key generator.