Search code examples
c#securitymodel-view-controllerencryptioncryptoapi

How to suppress "An application is requesting access to a protected item" popup


I'm getting a pop-up when trying to use a certificate to decrypt data. I'm creating a self-signed certificate, and I'm using it to encrypt some data, but I'm getting the following confirmation pop-up when trying to decrypt the data:

CryptoAPI popup

How can I programatically grant access to use the certificate?


Solution

  • I believe the issue is that the certificate's private key has "strong protection" enabled.

    enter image description here

    Enable strong private key protection. You will be prompted every time the private key is used by an application if you enable this option.

    Any attempt to use the private key causes Windows to display the warning.

    You have to re-import the certificate without the Strong private key protection option enabled.

    Group policy that does the same

    It's also possible a system wide group policy is in effect:

    • secpol.msc
      • Security Settings
        • Local Policies
          • Security Options
            • System Cryptography: Force strong key protection for user keys stored on the computer

    System Cryptography: Force strong key protection for user keys stored on the computer

    This security setting determines if users' private keys require a password to be used.

    The options are:

    User input is not required when new keys are stored and used User is prompted when the key is first used User must enter a password each time they use a key For more information, see Public key infrastructure.

    Default: This policy is not defined.

    If that group policy security option is set, you have to disable it.

    Bonus Reading

    tl;dr: You cannot programatically bypass a security boundary