...
1
16
17 package signer
18
19 import (
20 "crypto"
21 "fmt"
22
23 "github.com/sigstore/sigstore/pkg/signature"
24 "go.step.sm/crypto/pemutil"
25 )
26
27
28 type File struct {
29 signature.SignerVerifier
30 }
31
32 func NewFile(keyPath, keyPass string) (*File, error) {
33 opaqueKey, err := pemutil.Read(keyPath, pemutil.WithPassword([]byte(keyPass)))
34 if err != nil {
35 return nil, fmt.Errorf("file: provide a valid signer, %s is not valid: %w", keyPath, err)
36 }
37
38 signer, err := signature.LoadSignerVerifier(opaqueKey, crypto.SHA256)
39 if err != nil {
40 return nil, fmt.Errorf(`file: loaded private key from %s can't be used to sign: %w`, keyPath, err)
41 }
42 return &File{signer}, nil
43 }
44
View as plain text