/// <summary> /// Imports a blob that represents RSA key information /// </summary> /// <param name="keyBlob"></param> public void ImportCspBlob(byte[] keyBlob) { // Free the current key handle if (_safeKeyHandle != null && !_safeKeyHandle.IsClosed) { _safeKeyHandle.Dispose(); _safeKeyHandle = null; } _safeKeyHandle = SafeKeyHandle.InvalidHandle; if (IsPublic(keyBlob)) { SafeProvHandle safeProvHandleTemp = SafeProvHandle.InvalidHandle; AcquireSafeProviderHandle(ref safeProvHandleTemp); CapiHelper.ImportKeyBlob(safeProvHandleTemp, (CspProviderFlags)0, keyBlob, ref _safeKeyHandle); _safeProvHandle = safeProvHandleTemp; } else { if (_safeProvHandle == null) { _safeProvHandle = CapiHelper.CreateProvHandle(_parameters, _randomKeyContainer); } CapiHelper.ImportKeyBlob(_safeProvHandle, _parameters.Flags, keyBlob, ref _safeKeyHandle); } }