internal KeyContainerPermission BuildKeyContainerPermission(KeyContainerPermissionFlags flags) { KeyContainerPermission permission = null; if (this.IsEphemeral) { return(permission); } string keyContainerName = null; string str2 = null; try { keyContainerName = this.KeyName; str2 = NCryptNative.GetPropertyAsString(this.m_kspHandle, "Name", CngPropertyOptions.None); } catch (CryptographicException) { } if (keyContainerName != null) { KeyContainerPermissionAccessEntry accessEntry = new KeyContainerPermissionAccessEntry(keyContainerName, flags) { ProviderName = str2 }; permission = new KeyContainerPermission(KeyContainerPermissionFlags.NoFlags); permission.AccessEntries.Add(accessEntry); return(permission); } return(new KeyContainerPermission(flags)); }
internal string GetCurveName() { if (IsECNamedCurve()) { return(NCryptNative.GetPropertyAsString( m_keyHandle, KeyPropertyName.ECCCurveName, CngPropertyOptions.None)); } // Use hard-coded values (for use with pre-Win10 APIs) return(GetECSpecificCurveName()); }
internal KeyContainerPermission BuildKeyContainerPermission(KeyContainerPermissionFlags flags) { Contract.Ensures(Contract.Result <KeyContainerPermission>() != null || IsEphemeral); Contract.Assert(m_keyHandle != null); Contract.Assert(m_kspHandle != null); KeyContainerPermission permission = null; if (!IsEphemeral) { // Try to get the name of the key and ksp to demand for this specific instance string keyName = null; string kspName = null; try { keyName = KeyName; kspName = NCryptNative.GetPropertyAsString(m_kspHandle, NCryptNative.ProviderPropertyName.Name, CngPropertyOptions.None); } catch (CryptographicException) { /* This may have been an imported ephemeral key */ } if (keyName != null) { KeyContainerPermissionAccessEntry access = new KeyContainerPermissionAccessEntry(keyName, flags); access.ProviderName = kspName; permission = new KeyContainerPermission(KeyContainerPermissionFlags.NoFlags); permission.AccessEntries.Add(access); } else { permission = new KeyContainerPermission(flags); } } return(permission); }