code: func New(httpClient *http.Client, userAgent string, caDirURL, kid string, privateKey crypto.PrivateKey) (*Core, error) {
  	doer := sender.NewDoer(httpClient, userAgent)
  
  	dir, err := getDirectory(doer, caDirURL)
  	if err != nil {
  		return nil, err
  	}
  
  	nonceManager := nonces.NewManager(doer, dir.NewNonceURL)
  
  	jws := secure.NewJWS(privateKey, kid, nonceManager)
  
  	c := &Core{doer: doer, nonceManager: nonceManager, jws: jws, directory: dir, HTTPClient: httpClient}
  
  	c.common.core = c
  	c.Accounts = (*AccountService)(&c.common)
  	c.Authorizations = (*AuthorizationService)(&c.common)
  	c.Certificates = (*CertificateService)(&c.common)
  	c.Challenges = (*ChallengeService)(&c.common)
  	c.Orders = (*OrderService)(&c.common)
  
  	return c, nil
  }
docs: // New Creates a new Core.