{"id":"0884a491546733e8","repo":"docker/cli","slug":"manifest-verification-failed-for-digest-s","errorCode":null,"errorMessage":"manifest verification failed for digest %s","messagePattern":"manifest verification failed for digest (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/registryclient/fetcher.go","lineNumber":147,"sourceCode":"\treturn configJSON, nil\n}\n\n// validateManifestDigest computes the manifest digest, and, if pulling by\n// digest, ensures that it matches the requested digest.\nfunc validateManifestDigest(ref reference.Named, mfst distribution.Manifest) (ocispec.Descriptor, error) {\n\tmediaType, canonical, err := mfst.Payload()\n\tif err != nil {\n\t\treturn ocispec.Descriptor{}, err\n\t}\n\tdesc := ocispec.Descriptor{\n\t\tDigest:    digest.FromBytes(canonical),\n\t\tSize:      int64(len(canonical)),\n\t\tMediaType: mediaType,\n\t}\n\n\t// If pull by digest, then verify the manifest digest.\n\tif digested, isDigested := ref.(reference.Canonical); isDigested && digested.Digest() != desc.Digest {\n\t\treturn ocispec.Descriptor{}, fmt.Errorf(\"manifest verification failed for digest %s\", digested.Digest())\n\t}\n\n\treturn desc, nil\n}\n\n// pullManifestList handles \"manifest lists\" which point to various\n// platform-specific manifests.\nfunc pullManifestList(ctx context.Context, ref reference.Named, repo distribution.Repository, mfstList manifestlist.DeserializedManifestList) ([]types.ImageManifest, error) {\n\tif _, err := validateManifestDigest(ref, mfstList); err != nil {\n\t\treturn nil, err\n\t}\n\n\tinfos := make([]types.ImageManifest, 0, len(mfstList.Manifests))\n\tfor _, manifestDescriptor := range mfstList.Manifests {\n\t\tmanSvc, err := repo.Manifests(ctx)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}","sourceCodeStart":129,"sourceCodeEnd":165,"githubUrl":"https://github.com/docker/cli/blob/e9452d6e785f6e365712b9d71bd7517591773c86/internal/registryclient/fetcher.go#L129-L165","documentation":"Error \"manifest verification failed for digest %s\" thrown in docker/cli.","triggerScenarios":"Thrown at internal/registryclient/fetcher.go:147 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"analyzedSha":"e9452d6e785f6e365712b9d71bd7517591773c86","analyzedAt":"2026-08-01T07:09:22.474Z","schemaVersion":2}