package logic import ( "crypto/sha256" "encoding/hex" "encoding/json" "github.com/go-oauth2/oauth2/v4/server" "net/http" "os" ) type Config struct { ContractCheckSum string `json:"ContractCheckSum"` AuthServerPort int `json:"AuthServerPort"` WalletFile string `json:"WalletFile"` EndpointUrl string `json:"EndpointUrl"` AccountSecret string `json:"AccountSecret"` } func LoadConfig(pathToJsonConfig string) (Config, error) { var config Config file, err := os.Open(pathToJsonConfig) if err != nil { return config, err } defer file.Close() decoder := json.NewDecoder(file) err = decoder.Decode(&config) if err != nil { return config, err } return config, nil } func ValidateToken(f http.HandlerFunc, srv *server.Server) http.HandlerFunc { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { _, err := srv.ValidationBearerToken(r) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } f.ServeHTTP(w, r) }) } func HashSecret(secret string) string { encoder := sha256.New() encoder.Write([]byte(secret)) hashBytes := encoder.Sum(nil) return hex.EncodeToString(hashBytes) } func AddDefaultClientCredentialsIfNotExists(id string) error { if _, ok := clients[id]; ok { return nil } return AddInMemoryClient(id, "", "", false) }