CryptographicKey CryptographicKey CryptographicKey CryptographicKey CryptographicKey Class


Represents a symmetric key or an asymmetric key pair.

public : sealed class CryptographicKey
struct winrt::Windows::Security::Cryptography::Core::CryptographicKey
public sealed class CryptographicKey
Public NotInheritable Class CryptographicKey
// This class does not provide a public constructor.

Windows 10 requirements

Device family
Windows 10 (introduced v10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduced v1)


using Windows.Security.Cryptography;
using Windows.Security.Cryptography.Core;
using Windows.Storage.Streams;

namespace SampleCryptographicKey
    sealed partial class CryptographicKeyApp : Application
        static IBuffer buffKeyPair;

        public CryptographicKeyApp()
            // Initialize the application.

            // Create an asymmetric key pair.
            String strAsymmetricAlgName = AsymmetricAlgorithmNames.RsaPkcs1;
            UInt32 asymmetricKeyLength = 512;
            IBuffer buffPublicKey = this.SampleCreateAsymmetricKeyPair(

        public IBuffer SampleCreateAsymmetricKeyPair(
            String strAsymmetricAlgName,
            UInt32 keyLength)
            // Open the algorithm provider for the specified asymmetric algorithm.
            AsymmetricKeyAlgorithmProvider objAlgProv = AsymmetricKeyAlgorithmProvider.OpenAlgorithm(strAsymmetricAlgName);

            // Create an asymmetric key pair.
            CryptographicKey keyPair = objAlgProv.CreateKeyPair(keyLength);

            // Export the public key to a buffer for use by others.
            IBuffer buffPublicKey = keyPair.ExportPublicKey();

            // You should keep your private key (embedded in the key pair) secure. For  
            // the purposes of this example, however, we're just copying it into a
            // static class variable for later use during decryption.
            CryptographicKeyApp.buffKeyPair = keyPair.Export();

            // Retrieve the size of the key pair.
            UInt32 lengthKeyPair = keyPair.KeySize;

            // Return the public key.
            return buffPublicKey;


A CryptographicKey object is created when you use methods that create or import keys in the following classes:


KeySize KeySize KeySize KeySize KeySize

Gets the size, in bits, of the key.


Export() Export() Export() Export() Export()

Exports the key pair to a buffer.

Export(CryptographicPrivateKeyBlobType) Export(CryptographicPrivateKeyBlobType) Export(CryptographicPrivateKeyBlobType) Export(CryptographicPrivateKeyBlobType) Export(CryptographicPrivateKeyBlobType)

Exports the key pair to a buffer given a specified format.

ExportPublicKey() ExportPublicKey() ExportPublicKey() ExportPublicKey() ExportPublicKey()

Exports a public key to a buffer.

ExportPublicKey(CryptographicPublicKeyBlobType) ExportPublicKey(CryptographicPublicKeyBlobType) ExportPublicKey(CryptographicPublicKeyBlobType) ExportPublicKey(CryptographicPublicKeyBlobType) ExportPublicKey(CryptographicPublicKeyBlobType)

Exports a public key to a buffer given a specified format.

See also