Это - действительно метод в UITableViewDelegate:
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
Теперь я получаю строку зеленых знаков "плюс"!
Кажется, что документация MSDN верна в том смысле, что она должна поддерживаться в XP SP3 по дизайну, а если нет, то только из-за ошибка в .NET 3.5.
И AesCryptoServiceProvider, и SHA256CryptoServiceProvider используют одну и ту же службу криптографии под названием «Microsoft Enhanced RSA и AES Cryptographic Provider». В XP название службы немного отличается: «Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)» . Конструктор AesCryptoServiceProvider выполняет простую проверку:
string providerName = "Microsoft Enhanced RSA and AES Cryptographic Provider";
if(Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor == 1)
{
providerName = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)";
}
Конструкторы классов SHAxxxCryptoServiceProvider не проверяют имя (Prototype), и поэтому они терпят неудачу в XP. Если бы они это сделали, они бы преуспели.
Существует простой способ обхода данного ПК. Перейдите в раздел реестра HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Cryptography \ Defaults \ Provider , найдите его подраздел с именем «Microsoft Enhanced RSA и AES Cryptographic Provider (Prototype)», экспортируйте его в .reg, отредактируйте .reg и удалите "(Prototype)" из его имени. Когда вы импортируете его обратно, исходный ключ будет дублирован на новый ключ без (Прототип) с тем же содержимым. С этого момента SHA256CryptoServiceProvider будет работать на этой машине XPSP3.
Я добился успеха со следующим фрагментом, хотя я не очень доволен им и почти опубликовал SO-вопрос о различных, казалось бы, случайных способах создания экземпляра SHA512
в то время. Это проверено на Windows XP, 7 и, возможно, Vista (не могу вспомнить).
using System.Security.Cryptography;
SHA512 hash;
try
{
hash = new SHA512Cng( );
}
catch ( PlatformNotSupportedException )
{
hash = SHA512.Create( );
}
Я думаю, что это должно работать так же с SHA256
.
Кроме того, сравнивая вывод обеих версий с служебная программа unix sha2 предположила, что они оба правильно реализуют SHA512.
Из MSDN: SHA256CryptoServiceProvider Class
Платформы: Windows Vista, Windows XP SP2, Windows Server 2003