// Copyright (c) Tailscale Inc & contributors
// SPDX-License-Identifier: BSD-3-Clause

//go:build js || ts_omit_acme

package ipnlocal

import (
	"context"
	"crypto/tls"
	"errors"
	"io"
	"net/http"
	"time"
)

func init() {
	RegisterC2N("GET /tls-cert-status", handleC2NTLSCertStatusDisabled)
}

var errNoCerts = errors.New("cert support not compiled in this build")

type TLSCertKeyPair struct {
	CertPEM, KeyPEM []byte
}

func (b *LocalBackend) GetCertPEM(ctx context.Context, domain string) (*TLSCertKeyPair, error) {
	return nil, errNoCerts
}

func serveTLSNextProtos() []string {
	return []string{"h2", "http/1.1"}
}

func (b *LocalBackend) getACMETLSALPNCert(hi *tls.ClientHelloInfo) (*tls.Certificate, bool) {
	return nil, false
}

func (b *LocalBackend) getACMETLSALPNProto(hi *tls.ClientHelloInfo) (string, bool) {
	return "", false
}

var errCertExpired = errors.New("cert expired")

type certStore interface{}

func getCertPEMCached(cs certStore, domain string, now time.Time) (p *TLSCertKeyPair, err error) {
	return nil, errNoCerts
}

func (b *LocalBackend) getCertStore() (certStore, error) {
	return nil, errNoCerts
}

func handleC2NTLSCertStatusDisabled(b *LocalBackend, w http.ResponseWriter, r *http.Request) {
	w.Header().Set("Content-Type", "application/json")
	io.WriteString(w, `{"Missing":true}`) // a minimal tailcfg.C2NTLSCertInfo
}
