Can I discard a specific X509 signature from file? I'm writing a program to sign files using X.509 certificates and .NET framework classes. My users can sign the same file more than once without any problem (like a revision process). So, a file may contain one or more signatures.

I'm using the CMSSigner class and I don't encrypt the file. I just sign it.

But now a user asked me the following: "By mistake I signed a file and I would like to take off my signature from that file. Can I do this?"

I see no problem when the file has only that one user's signature (only one X509 certificate within). But I'm not sure if I can unsign the file if it has many signatures there. The routine that I use to strip a signature from a file picks the original data and, in that case, I lose all of its signatures.

So, using .NET classes (X509Certificate2), can I just delete the user's signature from that file, without loss the other certificates there?

Thanks for any help.
Cryptographically speaking, a digital signature provides the property of non-repudiation -- the signer cannot deny signing once signed. So, you either have to keep the unsigned version if you can't strip the signature from the document, or sign another document invalidating the previous signature if the previous document has been released.