diff options
Diffstat (limited to 'modules/repofiles')
-rw-r--r-- | modules/repofiles/file_test.go | 2 | ||||
-rw-r--r-- | modules/repofiles/temp_repo.go | 13 | ||||
-rw-r--r-- | modules/repofiles/verification.go | 14 |
3 files changed, 21 insertions, 8 deletions
diff --git a/modules/repofiles/file_test.go b/modules/repofiles/file_test.go index 7c45139dd9..95ec175ed4 100644 --- a/modules/repofiles/file_test.go +++ b/modules/repofiles/file_test.go @@ -73,7 +73,7 @@ func getExpectedFileResponse() *api.FileResponse { }, Verification: &api.PayloadCommitVerification{ Verified: false, - Reason: "", + Reason: "gpg.error.not_signed_commit", Signature: "", Payload: "", }, diff --git a/modules/repofiles/temp_repo.go b/modules/repofiles/temp_repo.go index 4a50e64192..b07d2a8973 100644 --- a/modules/repofiles/temp_repo.go +++ b/modules/repofiles/temp_repo.go @@ -261,7 +261,6 @@ func (t *TemporaryUploadRepository) CommitTree(author, committer *models.User, t return "", fmt.Errorf("Unable to get git version: %v", err) } - // FIXME: Should we add SSH_ORIGINAL_COMMAND to this // Because this may call hooks we should pass in the environment env := append(os.Environ(), "GIT_AUTHOR_NAME="+authorSig.Name, @@ -271,13 +270,21 @@ func (t *TemporaryUploadRepository) CommitTree(author, committer *models.User, t "GIT_COMMITTER_EMAIL="+committerSig.Email, "GIT_COMMITTER_DATE="+commitTimeStr, ) + messageBytes := new(bytes.Buffer) _, _ = messageBytes.WriteString(message) _, _ = messageBytes.WriteString("\n") args := []string{"commit-tree", treeHash, "-p", "HEAD"} - if version.Compare(binVersion, "2.0.0", ">=") { - args = append(args, "--no-gpg-sign") + + // Determine if we should sign + if version.Compare(binVersion, "1.7.9", ">=") { + sign, keyID := t.repo.SignCRUDAction(author, t.basePath, "HEAD") + if sign { + args = append(args, "-S"+keyID) + } else if version.Compare(binVersion, "2.0.0", ">=") { + args = append(args, "--no-gpg-sign") + } } commitHash, stderr, err := process.GetManager().ExecDirEnvStdIn(5*time.Minute, diff --git a/modules/repofiles/verification.go b/modules/repofiles/verification.go index 9fc084daaf..3889b7993c 100644 --- a/modules/repofiles/verification.go +++ b/modules/repofiles/verification.go @@ -18,10 +18,16 @@ func GetPayloadCommitVerification(commit *git.Commit) *structs.PayloadCommitVeri verification.Signature = commit.Signature.Signature verification.Payload = commit.Signature.Payload } - if verification.Reason != "" { - verification.Reason = commitVerification.Reason - } else if verification.Verified { - verification.Reason = "unsigned" + if commitVerification.SigningUser != nil { + verification.Signer = &structs.PayloadUser{ + Name: commitVerification.SigningUser.Name, + Email: commitVerification.SigningUser.Email, + } + } + verification.Verified = commitVerification.Verified + verification.Reason = commitVerification.Reason + if verification.Reason == "" && !verification.Verified { + verification.Reason = "gpg.error.not_signed_commit" } return verification } |