{"record":{"id":"cb1a33b1f6fb547d","repo":"dotnet/wpf","slug":"signature-packagesignature-signaturepart","errorCode":null,"errorMessage":"signature.PackageSignature.SignaturePart","messagePattern":"signature\\.PackageSignature\\.SignaturePart","errorType":"exception","errorClass":"NullReferenceException","httpStatus":null,"severity":"error","filePath":"src/Microsoft.DotNet.Wpf/src/ReachFramework/Packaging/XpsDocument.cs","lineNumber":477,"sourceCode":"        /// The signature to be removed\n        /// </param>\n        /// <exception cref=\"ArgumentNullException\">signature is null.</exception>\n        public\n        void\n        RemoveSignature(\n            XpsDigitalSignature signature\n            )\n        {\n            CheckDisposed();\n\n            ArgumentNullException.ThrowIfNull(signature);\n            if (null == signature.PackageSignature)\n            {\n                throw new NullReferenceException(\"signature.PackageSignature\");\n            }\n            if (null == signature.PackageSignature.SignaturePart)\n            {\n                throw new NullReferenceException(\"signature.PackageSignature.SignaturePart\");\n            }\n            if( CurrentXpsManager == null )\n            {\n                throw new InvalidOperationException(SR.ReachPackaging_DocumentWasClosed);\n            }\n            PackageDigitalSignatureManager packageSignatures = new PackageDigitalSignatureManager(CurrentXpsManager.MetroPackage);\n            packageSignatures.RemoveSignature(signature.PackageSignature.SignaturePart.Uri );\n            _reachSignatures = null;\n            _reachSignatureList = null;\n            EnsureSignatures();\n}\n\n        /// <summary>\n        /// This method adds a thumbnail to the current Xps package.\n        ///\n        /// There can only be one thumbnail attached to the pakcage.\n        ///  Calling this method when there\n        /// is already a starting part causes InvalidOperationException to be","sourceCodeStart":459,"sourceCodeEnd":495,"githubUrl":"https://github.com/dotnet/wpf/blob/81131a70a4c573cd62748a5c36908fc4d662daa9/src/Microsoft.DotNet.Wpf/src/ReachFramework/Packaging/XpsDocument.cs#L459-L495","documentation":"RemoveSignature throws this NullReferenceException when signature.PackageSignature.SignaturePart is null — the signature exists but has no associated signature part in the package, so the part to remove cannot be located. This is a defensive guard against a corrupt or incomplete signature object.","triggerScenarios":"Thrown at src/Microsoft.DotNet.Wpf/src/ReachFramework/Packaging/XpsDocument.cs:477 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the signature has an associated SignaturePart (it was actually committed to the package) before removal","Re-sign or re-open the package so the signature's SignaturePart exists","Check signature.PackageSignature.SignaturePart for null before calling RemoveSignature"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"81131a70a4c573cd62748a5c36908fc4d662daa9","analyzedAt":"2026-09-14T10:12:48.479Z","contentChangedAt":"2026-09-14T10:12:48.479Z","schemaVersion":2},"datasetVersion":"2026-09-21T21:30:21.729Z"}