Skip to content

Commit

Permalink
fixed validation
Browse files Browse the repository at this point in the history
Signed-off-by: bryans-go <[email protected]>
  • Loading branch information
bryans-go committed Sep 26, 2024
1 parent 377c0b4 commit a33cb71
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 34 deletions.
79 changes: 46 additions & 33 deletions pkg/git/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -177,50 +177,63 @@ func (s *Service) SetGitConfig(userData *gitprovider.GitUser, providerConfig *gi
}
}

if providerConfig != nil {
if !cfg.HasSection("user") {
_, err := cfg.NewSection("user")
if err != nil {
return err
}
}
if err := setSigningConfig(cfg, providerConfig); err != nil {
return err
}

_, err := cfg.Section("user").NewKey("signingkey", providerConfig.SigningKey)
if err != nil {
return err
}
var buf bytes.Buffer
_, err = cfg.WriteTo(&buf)
if err != nil {
return err
}

if !cfg.HasSection("commit") {
_, err := cfg.NewSection("commit")
if err != nil {
return err
}
}
return os.WriteFile(gitConfigFileName, buf.Bytes(), 0644)
}

if providerConfig.SigningMethod == "ssh" {
if !cfg.HasSection("gpg") {
_, err := cfg.NewSection("gpg")
if err != nil {
return err
}
}
func setSigningConfig(cfg *ini.File, providerConfig *gitprovider.GitProviderConfig) error {
if providerConfig == nil {
return nil
}

_, err := cfg.Section("gpg").NewKey("format", "ssh")
if err != nil {
return err
}
if !cfg.HasSection("user") {
_, err := cfg.NewSection("user")
if err != nil {
return err
}
}

var buf bytes.Buffer
_, err = cfg.WriteTo(&buf)
_, err := cfg.Section("user").NewKey("signingkey", providerConfig.SigningKey)
if err != nil {
return err
}

err = os.WriteFile(gitConfigFileName, buf.Bytes(), 0644)
if err != nil {
return err
if !cfg.HasSection("commit") {
_, err := cfg.NewSection("commit")
if err != nil {
return err
}
}

switch providerConfig.SigningMethod {
case "gpg":
_, err = cfg.Section("commit").NewKey("gpgSign", "true")
if err != nil {
return err
}
case "ssh":
if !cfg.HasSection("gpg") {
_, err := cfg.NewSection("gpg")
if err != nil {
return err
}
}
_, err = cfg.Section("gpg").NewKey("format", "ssh")
if err != nil {
return err
}
case "none":
cfg.Section("commit").DeleteKey("gpgSign")
cfg.Section("gpg").DeleteKey("format")
}

return nil
Expand Down
2 changes: 1 addition & 1 deletion pkg/views/gitprovider/select.go
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ func isValidGPGKey(key string) error {
}

func isValidSSHKey(key string) error {
sshKeyPattern := regexp.MustCompile(`^(ssh-(rsa|ed25519|dss)|ecdsa-sha2-nistp(256|384|521))\s+[A-Za-z0-9+/=]+$`)
sshKeyPattern := regexp.MustCompile(`^(ssh-(rsa|ed25519|dss|ecdsa-sha2-nistp(256|384|521)))\s+[A-Za-z0-9+/=]+(\s+.+)?$`)
if !sshKeyPattern.MatchString(key) {
return errors.New("invalid SSH key: must start with valid SSH key type (e.g., ssh-rsa, ssh-ed25519)")
}
Expand Down

0 comments on commit a33cb71

Please sign in to comment.