mirror of
https://github.com/ultravioletrs/cocos.git
synced 2026-06-23 04:10:25 +00:00
0ffc2d17cf
CI / checkproto (push) Has been cancelled
CI / lint (push) Has been cancelled
CI / test (agent) (push) Has been cancelled
CI / test (cli) (push) Has been cancelled
CI / test (cmd) (push) Has been cancelled
CI / test (internal) (push) Has been cancelled
CI / test (manager, true) (push) Has been cancelled
CI / test (pkg) (push) Has been cancelled
CI / upload-coverage (push) Has been cancelled
* pass domain id to agent environment Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * update generated files Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * use certs sdk directly Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * remove redundant variables Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * use agent certs token for csr Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * update certs and add token to create req Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * fix atls Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * add agent token to certificate provider Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * pass certs token to agent Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * use sdk for csr Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * update atls Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * fix tests Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * address comments Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * remove unused structs Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * update tests Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * lint Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * fix tests Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * lint Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * remove unused domain id Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * refactor tests and remove unused struct fields Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * refactor(atls): remove CAClient and inline CA certificate issuance Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * lint' Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * increase coverage Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * fix bug in certs sdk and certificate provider Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * update certs Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> * fix pkg stress Signed-off-by: WashingtonKK <washingtonkigan@gmail.com> --------- Signed-off-by: WashingtonKK <washingtonkigan@gmail.com>
70 lines
1.8 KiB
Go
70 lines
1.8 KiB
Go
// Copyright (c) Ultraviolet
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
package atls
|
|
|
|
import (
|
|
"encoding/asn1"
|
|
"encoding/hex"
|
|
"fmt"
|
|
)
|
|
|
|
const (
|
|
defaultNotAfterYears = 1
|
|
nonceLength = 64
|
|
nonceSuffix = ".nonce"
|
|
)
|
|
|
|
// Platform-specific OIDs for certificate extensions.
|
|
var (
|
|
SNPvTPMOID = asn1.ObjectIdentifier{2, 99999, 1, 0}
|
|
AzureOID = asn1.ObjectIdentifier{2, 99999, 1, 1}
|
|
TDXOID = asn1.ObjectIdentifier{2, 99999, 1, 2}
|
|
)
|
|
|
|
// CertificateSubject contains certificate subject information.
|
|
type CertificateSubject struct {
|
|
Organization string
|
|
CommonName string
|
|
Country string
|
|
Province string
|
|
Locality string
|
|
StreetAddress string
|
|
PostalCode string
|
|
}
|
|
|
|
// DefaultCertificateSubject returns the default certificate subject for Ultraviolet.
|
|
func DefaultCertificateSubject() CertificateSubject {
|
|
return CertificateSubject{
|
|
Organization: "Ultraviolet",
|
|
CommonName: "Ultraviolet",
|
|
Country: "Serbia",
|
|
Province: "",
|
|
Locality: "Belgrade",
|
|
StreetAddress: "Bulevar Arsenija Carnojevica 103",
|
|
PostalCode: "11000",
|
|
}
|
|
}
|
|
|
|
func extractNonceFromSNI(serverName string) ([]byte, error) {
|
|
if len(serverName) < len(nonceSuffix) || !hasNonceSuffix(serverName) {
|
|
return nil, fmt.Errorf("invalid server name: %s", serverName)
|
|
}
|
|
|
|
nonceStr := serverName[:len(serverName)-len(nonceSuffix)]
|
|
nonce, err := hex.DecodeString(nonceStr)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("failed to decode nonce: %w", err)
|
|
}
|
|
|
|
if len(nonce) != nonceLength {
|
|
return nil, fmt.Errorf("invalid nonce length: expected %d bytes, got %d bytes", nonceLength, len(nonce))
|
|
}
|
|
|
|
return nonce, nil
|
|
}
|
|
|
|
func hasNonceSuffix(serverName string) bool {
|
|
return len(serverName) >= len(nonceSuffix) &&
|
|
serverName[len(serverName)-len(nonceSuffix):] == nonceSuffix
|
|
}
|