Какой тип заполнения для Elliptic Curve Crypto

После SecKeyGeneratePair для ECC я пытаюсь зашифровать открытый текст открытым ключом. SecKeyEncrypt возвращает -4 (errSecUnimplemented). Я не уверен, что тип заполнения правильный. Я пробовал все типы в своем xcode, они тоже не работают. Может кто-нибудь объяснить, почему SecKeyEncrypt возвращает -4?

(NSData *)encrypt:(NSString *)plainTextString key:(SecKeyRef)publicKey {

    NSData *data = [plainTextString dataUsingEncoding:NSUTF8StringEncoding];

    size_t encryptedDataLength = SecKeyGetBlockSize(publicKey);

    NSMutableData *encryptedData = [[NSMutableData alloc]
                                    initWithLength:encryptedDataLength];

    OSStatus err = SecKeyEncrypt(publicKey,
                                 kSecPaddingOAEP,
                                 [data bytes],
                                 [data length],
                                 [encryptedData mutableBytes],
                                 &encryptedDataLength);
    NSLog(@"errEXX:  %ld", err);

    [encryptedData setLength:encryptedDataLength];


    return encryptedData;
}

person user3229765    schedule 23.01.2014    source источник


Ответы (1)


Реализация Apple поддерживает только ECDSA, который можно использовать для подписи, но не для шифрования. Для получения информации о шифровании с использованием эллиптических кривых с использованием других схем см. Можно ли использовать криптографию на основе эллиптических кривых для шифрования данных?

person Paul Kehrer    schedule 31.05.2014
comment
Это уже не так. См .: kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA512AESGCM - person Erik Aronesty; 10.07.2018