Compare commits
1 Commits
2023.11.21
...
2023.10.19
Author | SHA1 | Date | |
---|---|---|---|
958652ddba |
@ -1,2 +1,3 @@
|
|||||||
GPG_SIGNING_KEY=
|
GPG_SIGNING_KEY=
|
||||||
ARCH_TARGETS='amd64 arm arm64 386'
|
GPG_SIGNING_PASSPHRASE=
|
||||||
|
ARCH_TARGETS='amd64 arm arm64'
|
@ -9,7 +9,6 @@ import (
|
|||||||
|
|
||||||
jwt "github.com/dgrijalva/jwt-go"
|
jwt "github.com/dgrijalva/jwt-go"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"golang.org/x/crypto/ssh"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func EncodePublicKeyToPEM(key crypto.PublicKey) ([]byte, error) {
|
func EncodePublicKeyToPEM(key crypto.PublicKey) ([]byte, error) {
|
||||||
@ -29,23 +28,25 @@ func DecodePEMToPublicKey(pem []byte) (crypto.PublicKey, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func DecodePEMEncryptedPrivateKey(key []byte, passphrase []byte) (*rsa.PrivateKey, error) {
|
func DecodePEMEncryptedPrivateKey(key []byte, passphrase []byte) (*rsa.PrivateKey, error) {
|
||||||
var (
|
// Parse PEM block
|
||||||
rawKey interface{}
|
var block *pem.Block
|
||||||
err error
|
if block, _ = pem.Decode(key); block == nil {
|
||||||
)
|
return nil, errors.New("invalid PEM block")
|
||||||
|
|
||||||
if len(passphrase) == 0 {
|
|
||||||
rawKey, err = ssh.ParseRawPrivateKey(key)
|
|
||||||
} else {
|
|
||||||
rawKey, err = ssh.ParseRawPrivateKeyWithPassphrase(key, passphrase)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
decryptedBlock, err := x509.DecryptPEMBlock(block, passphrase)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errors.WithStack(err)
|
return nil, errors.WithStack(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var parsedKey interface{}
|
||||||
|
if parsedKey, err = x509.ParsePKCS1PrivateKey(decryptedBlock); err != nil {
|
||||||
|
return nil, errors.WithStack(err)
|
||||||
|
}
|
||||||
|
|
||||||
var privateKey *rsa.PrivateKey
|
var privateKey *rsa.PrivateKey
|
||||||
var ok bool
|
var ok bool
|
||||||
if privateKey, ok = rawKey.(*rsa.PrivateKey); !ok {
|
if privateKey, ok = parsedKey.(*rsa.PrivateKey); !ok {
|
||||||
return nil, errors.New("invalid RSA private key")
|
return nil, errors.New("invalid RSA private key")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ function build {
|
|||||||
|
|
||||||
if [ ! -z "${GPG_SIGNING_KEY}" ]; then
|
if [ ! -z "${GPG_SIGNING_KEY}" ]; then
|
||||||
echo "signing '$destdir/$name' with gpg key '$GPG_SIGNING_KEY'..."
|
echo "signing '$destdir/$name' with gpg key '$GPG_SIGNING_KEY'..."
|
||||||
gpg --sign --default-key "${GPG_SIGNING_KEY}" --detach-sign --output "$destdir/$name.sig" "$destdir/$name"
|
echo $GPG_SIGNING_PASSPHRASE | gpg --pinentry-mode loopback --passphrase-fd 0 --sign --default-key "${GPG_SIGNING_KEY}" --output "$destdir/$name.sig" "$destdir/$name"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user