func getPrivateKey() *rsa.PrivateKey { privateKeyFile, err := os.Open(settings.Get().PrivateKeyPath) if err != nil { panic(err) } pemfileinfo, _ := privateKeyFile.Stat() var size int64 = pemfileinfo.Size() pembytes := make([]byte, size) buffer := bufio.NewReader(privateKeyFile) _, err = buffer.Read(pembytes) data, _ := pem.Decode([]byte(pembytes)) privateKeyFile.Close() privateKeyImported, err := x509.ParsePKCS1PrivateKey(data.Bytes) if err != nil { panic(err) } return privateKeyImported }
func getPublicKey() *rsa.PublicKey { publicKeyFile, err := os.Open(settings.Get().PublicKeyPath) if err != nil { panic(err) } pemfileinfo, _ := publicKeyFile.Stat() var size int64 = pemfileinfo.Size() pembytes := make([]byte, size) buffer := bufio.NewReader(publicKeyFile) _, err = buffer.Read(pembytes) data, _ := pem.Decode([]byte(pembytes)) publicKeyFile.Close() publicKeyImported, err := x509.ParsePKIXPublicKey(data.Bytes) if err != nil { panic(err) } rsaPub, ok := publicKeyImported.(*rsa.PublicKey) if !ok { panic(err) } return rsaPub }
func (backend *JWTAuthenticationBackend) GenerateToken(userUUID string) (string, error) { token := jwt.New(jwt.SigningMethodRS512) token.Claims["exp"] = time.Now().Add(time.Hour * time.Duration(settings.Get().JWTExpirationDelta)).Unix() token.Claims["iat"] = time.Now().Unix() token.Claims["sub"] = userUUID tokenString, err := token.SignedString(backend.privateKey) if err != nil { panic(err) return "", err } return tokenString, nil }
// OfferingList parse the yaml files from the repository configuration file defined in the seettings package // And then returns it json representation func OfferingList(r *http.Request) (int, []byte, error) { settings := settings.Get() rootRepository := settings.OfferingRepositoryPath var response []byte sendOffering := func(path string, info os.FileInfo, err error) error { stat, err := os.Stat(path) if err != nil { return err } if stat.IsDir() && path != rootRepository { return filepath.SkipDir } matched, err := filepath.Match("*.yaml", info.Name()) if err != nil { return err // this is fatal. } if matched { r, err := os.Open(path) if err != nil { return err } data, err := ioutil.ReadAll(r) defer r.Close() if err != nil { return err } var nodeTypes map[string]toscalib.NodeType err = yaml.Unmarshal(data, &nodeTypes) if err != nil { return err } response, err = json.MarshalIndent(nodeTypes, "", " ") if err != nil { return err } } return nil } err := filepath.Walk(rootRepository, sendOffering) if err != nil { log.Println(err) return http.StatusInternalServerError, nil, err } return http.StatusOK, response, nil }