panic using ed25519 signing key

Abierto
#1,189 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 2 días

Nadie ha tomado este issue todavía.

  • #1868 de @pujitha24 — cerrado sin fusionar

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
45/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
go
Área
backend, security

Línea de trabajo

Comienza en pkg/chains/signing/x509/x509.go, en la llamada a x509Signer alrededor de la línea 190, y luego sigue cómo se invoca desde pkg/chains/signing.go. Reproduce el problema con los pasos proporcionados para generar la clave ed25519 y los pasos del secreto; se considera terminado cuando TaskRun firma sin un panic y la clave ed25519 se gestiona correctamente.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

kind/bug

Expected Behavior

Signing taksruns with ed25519 private key shoudl work according to the doc

Actual Behavior

panic

{"level":"info","ts":"2024-08-27T14:14:54.450Z","logger":"watcher","caller":"x509/x509.go:180","msg":"Found x509 key...","knative.dev/controller":"github.com.tektoncd.chains.pkg.reconciler.taskrun.Reconciler","knative.dev/kind":"tekton.dev.TaskRun","knative.dev/traceid":"589829b2-f182-466b-bc24-561ad0d06f9b","knative.dev/key":"default/pipelinerun-test-6-hello2"}
panic: interface conversion: interface {} is ed25519.PrivateKey, not *ecdsa.PrivateKey

goroutine 152 [running]:
github.com/tektoncd/chains/pkg/chains/signing/x509.x509Signer({0x3d32f48?, 0xc000fc3d40?}, {0xc000d76e00, 0x77, 0x200})
	github.com/tektoncd/chains/pkg/chains/signing/x509/x509.go:190 +0x1b8
github.com/tektoncd/chains/pkg/chains/signing/x509.NewSigner({_, _}, {_, _}, {{{{0x33f6b89, 0xd}, 0xc000fc3ce0, {0x33e6186, 0x4}, 0x0}, ...}, ...})
	github.com/tektoncd/chains/pkg/chains/signing/x509/x509.go:62 +0x205
github.com/tektoncd/chains/pkg/chains.allSigners({_, _}, {_, _}, {{{{0x33f6b89, 0xd}, 0xc000fc3ce0, {0x33e6186, 0x4}, 0x0}, ...}, ...})
	github.com/tektoncd/chains/pkg/chains/signing.go:73 +0x3b8
github.com/tektoncd/chains/pkg/chains.(*ObjectSigner).Sign(0xc000b94900, {0x3d32f48, 0xc000fc3d40}, {0x3d6bc88, 0xc00062a4a8})
	github.com/tektoncd/chains/pkg/chains/signing.go:128 +0x16d
github.com/tektoncd/chains/pkg/reconciler/taskrun.(*Reconciler).FinalizeKind(0xc00082aca0, {0x3d32f48, 0xc000fc3d40}, 0xc000a9c008)
	github.com/tektoncd/chains/pkg/reconciler/taskrun/taskrun.go:67 +0xe9
github.com/tektoncd/chains/pkg/reconciler/taskrun.(*Reconciler).ReconcileKind(0xc000fd18e8?, {0x3d32f48?, 0xc000fc3d40?}, 0x0?)
	github.com/tektoncd/chains/pkg/reconciler/taskrun/taskrun.go:45 +0x1d
github.com/tektoncd/chains/vendor/github.com/tektoncd/pipeline/pkg/client/injection/reconciler/pipeline/v1/taskrun.(*reconcilerImpl).Reconcile(0xc0003b1e00, {0x3d32f48, 0xc000fc3c80}, {0xc00093c210, 0x21})
	github.com/tektoncd/chains/vendor/github.com/tektoncd/pipeline/pkg/client/injection/reconciler/pipeline/v1/taskrun/reconciler.go:236 +0x4f2
github.com/tektoncd/chains/vendor/knative.dev/pkg/controller.(*Impl).processNextWorkItem(0xc00066bb00)
	github.com/tektoncd/chains/vendor/knative.dev/pkg/controller/controller.go:542 +0x508
github.com/tektoncd/chains/vendor/knative.dev/pkg/controller.(*Impl).RunContext.func3()
	github.com/tektoncd/chains/vendor/knative.dev/pkg/controller/controller.go:491 +0x59
created by github.com/tektoncd/chains/vendor/knative.dev/pkg/controller.(*Impl).RunContext in goroutine 146
	github.com/tektoncd/chains/vendor/knative.dev/pkg/controller/controller.go:489 +0x325

Steps to Reproduce the Problem

  1. Install chains controller
  2. create an ed25519 key pair and secret
    openssl genpkey -algorithm ed25519 -out x509.pem
    openssl pkey -in private.pem -pubout -out x509-pub.pem
    k -n tekton-chains create secret generic signing-secrets --from-file=x509.pem --from-file=x509-pub.pem
  3. create a taskrun and check controller log

Additional Info

  • Kubernetes version:

    Output of kubectl version:

 Client Version: version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.1", GitCommit:"4c9411232e10168d7b050c49a1b59f6df9d7ea4b", GitTreeState:"clean", BuildDate:"2023-04-14T13:14:41Z", GoVersion:"go1.20.3", Compiler:"gc", Platform:"darwin/amd64"}
Kustomize Version: v5.0.1
Server Version: version.Info{Major:"1", Minor:"28", GitVersion:"v1.28.0", GitCommit:"855e7c48de7388eb330da0f8d9d2394ee818fb8d", GitTreeState:"clean", BuildDate:"2023-08-15T21:24:51Z", GoVersion:"go1.20.7", Compiler:"gc", Platform:"linux/amd64"}
  • Tekton Pipeline version:

    Output of tkn version or kubectl get pods -n tekton-pipelines -l app=tekton-pipelines-controller -o=jsonpath='{.items[0].metadata.labels.version}'

tkn version
Client version: 0.37.0
Chains version: v0.22.0
Pipeline version: v0.62.0
Lenguaje dominante
Go
Estrellas
279
Forks
171
Merge medio
2 d 4 h
PR fusionados (30 d)
70

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de tektoncd/chains

Todos los issues de tektoncd/chains

Issues similares

Más issues de Go

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.