예제 #1
0
 internal override string GetName(NCryptKeyOrCryptProviderSafeHandle handle)
 {
     const int PP_NAME = 0x6;
     uint size = 0;
     if (!AdvApi32.CryptGetProvParam(handle, PP_NAME, IntPtr.Zero, ref size, 0u))
     {
         throw new InvalidOperationException("Failed to get property.");
     }
     var buffer = Marshal.AllocHGlobal((int)size);
     try
     {
         if (!AdvApi32.CryptGetProvParam(handle, PP_NAME, buffer, ref size, 0u))
         {
             throw new InvalidOperationException("Failed to get property.");
         }
         return Marshal.PtrToStringAnsi(buffer);
     }
     finally
     {
         Marshal.FreeHGlobal(buffer);
     }
 }
예제 #2
0
        internal override string GetName(NCryptKeyOrCryptProviderSafeHandle handle)
        {
            const int PP_NAME = 0x6;
            uint      size    = 0;

            if (!AdvApi32.CryptGetProvParam(handle, PP_NAME, IntPtr.Zero, ref size, 0u))
            {
                throw new InvalidOperationException("Failed to get property.");
            }
            var buffer = Marshal.AllocHGlobal((int)size);

            try
            {
                if (!AdvApi32.CryptGetProvParam(handle, PP_NAME, buffer, ref size, 0u))
                {
                    throw new InvalidOperationException("Failed to get property.");
                }
                return(Marshal.PtrToStringAnsi(buffer));
            }
            finally
            {
                Marshal.FreeHGlobal(buffer);
            }
        }
예제 #3
0
 internal PrivateKey(NCryptKeyOrCryptProviderSafeHandle handle, KeyProviderBase keyProvider)
 {
     _handle = handle;
     _keyProvider = keyProvider;
 }
예제 #4
0
 internal abstract string GetAlgorithmGroup(NCryptKeyOrCryptProviderSafeHandle handle);
예제 #5
0
 internal abstract string GetName(NCryptKeyOrCryptProviderSafeHandle handle);
예제 #6
0
 internal override string GetAlgorithmGroup(NCryptKeyOrCryptProviderSafeHandle handle)
 {
     return(NCryptPropertyReader.ReadStringUni(handle, CngProperties.NCRYPT_ALGORITHM_GROUP_PROPERTY));
 }
예제 #7
0
 internal override string GetName(NCryptKeyOrCryptProviderSafeHandle handle)
 {
     return(NCryptPropertyReader.ReadStringUni(handle, CngProperties.NCRYPT_NAME_PROPERTY));
 }
예제 #8
0
 internal override string GetAlgorithmGroup(NCryptKeyOrCryptProviderSafeHandle handle)
 {
     //Hack, but we only support RSA right now.
     return AlgorithmGroup.RSA.Name;
 }
예제 #9
0
 internal override string GetAlgorithmGroup(NCryptKeyOrCryptProviderSafeHandle handle)
 {
     //Hack, but we only support RSA right now.
     return(AlgorithmGroup.RSA.Name);
 }
예제 #10
0
 internal PrivateKey(NCryptKeyOrCryptProviderSafeHandle handle, KeyProviderBase keyProvider, KeySpec keySpec)
 {
     _handle      = handle;
     _keyProvider = keyProvider;
     _keySpec     = keySpec;
 }
예제 #11
0
 internal override string GetAlgorithmGroup(NCryptKeyOrCryptProviderSafeHandle handle)
 {
     return NCryptPropertyReader.ReadStringUni(handle, CngProperties.NCRYPT_ALGORITHM_GROUP_PROPERTY);
 }
예제 #12
0
 internal override string GetName(NCryptKeyOrCryptProviderSafeHandle handle)
 {
     return NCryptPropertyReader.ReadStringUni(handle, CngProperties.NCRYPT_NAME_PROPERTY);
 }
예제 #13
0
 internal abstract string GetAlgorithmGroup(NCryptKeyOrCryptProviderSafeHandle handle);
예제 #14
0
 internal abstract string GetName(NCryptKeyOrCryptProviderSafeHandle handle);