aboutsummaryrefslogtreecommitdiff
path: root/object/signed/signature_header.go
blob: c34c050cf3ef387953682896629397e594889340 (about) (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package signed

import "lindenii.org/go/furgit/object/id"

// signatureHeaderNames maps each object format
// to the commit and tag signature header name
// that carries its signature,
// such as "gpgsig" for SHA-1
// and "gpgsig-sha256" for SHA-256.
//
//nolint:gochecknoglobals
var signatureHeaderNames = map[id.ObjectFormat]string{
	id.ObjectFormatSHA1:   "gpgsig",
	id.ObjectFormatSHA256: "gpgsig-sha256",
}

//nolint:gochecknoglobals
var objectFormatBySignatureHeaderName = map[string]id.ObjectFormat{}

func init() { //nolint:gochecknoinits
	for objectFormat, name := range signatureHeaderNames {
		objectFormatBySignatureHeaderName[name] = objectFormat
	}
}

// SignatureHeaderName returns the signature header name for objectFormat,
// such as "gpgsig" for SHA-1
// or "gpgsig-sha256" for SHA-256.
func SignatureHeaderName(objectFormat id.ObjectFormat) (string, bool) {
	name, ok := signatureHeaderNames[objectFormat]

	return name, ok
}

// ParseSignatureHeaderName parses one canonical signature header name
// such as "gpgsig" or "gpgsig-sha256"
// into its object format.
func ParseSignatureHeaderName(name string) (id.ObjectFormat, bool) {
	objectFormat, ok := objectFormatBySignatureHeaderName[name]

	return objectFormat, ok
}