Импортировать ключи RSA к связке ключей iPhone?

Вы можете отчетливо увидеть разницу между ними по простому фрагменту кода, прикрепленному

 import numpy as np
 a = np.ones((2,5))
 b = np.zeros((2,5))
 I = np.hstack((a.flatten(), b.flatten()))
 print(I)
 I = np.hstack((a, b)).flatten()
 print(I)

В общем, пожалуйста, сделайте проверку работоспособности с помощью простых массивов, прежде чем публиковать здесь вопросы.

7
задан Anant 27 April 2009 в 02:34
поделиться

2 ответа

Я выкопал этот код (лицензия BSD) из библиотеки MYcrypto . Кажется, он делает то, что вам нужно.

    SecKeyRef importKey(NSData *data, 
                    SecExternalItemType type,
                    SecKeychainRef keychain,
                    SecKeyImportExportParameters *params) {
    SecExternalFormat inputFormat = (type==kSecItemTypeSessionKey) ?kSecFormatRawKey :kSecFormatUnknown;
    CFArrayRef items = NULL;

    params->version = SEC_KEY_IMPORT_EXPORT_PARAMS_VERSION;
    params->flags |= kSecKeyImportOnlyOne;
    params->keyAttributes |= CSSM_KEYATTR_EXTRACTABLE;
    if (keychain) {
        params->keyAttributes |= CSSM_KEYATTR_PERMANENT;
        if (type==kSecItemTypeSessionKey)
            params->keyUsage = CSSM_KEYUSE_ENCRYPT | CSSM_KEYUSE_DECRYPT;
        else if (type==kSecItemTypePublicKey)
            params->keyUsage = CSSM_KEYUSE_ENCRYPT | CSSM_KEYUSE_VERIFY | CSSM_KEYUSE_WRAP;
        else if (type==kSecItemTypePrivateKey)
            params->keyUsage = CSSM_KEYUSE_DECRYPT | CSSM_KEYUSE_SIGN;
    }
    if (!check(SecKeychainItemImport((CFDataRef)data, NULL, &inputFormat, &type,
                                     0, params, keychain, &items),
               @"SecKeychainItemImport"))
        return nil;
    if (!items || CFArrayGetCount(items) != 1)
        return nil;
    SecKeyRef key = (SecKeyRef)CFRetain(CFArrayGetValueAtIndex(items,0));
    CFRelease(items);
    return key; // caller must CFRelease
}
1
ответ дан 7 December 2019 в 03:21
поделиться

Я не уверен, работает ли код из этой ветки форума разработчиков Apple , но похоже, что это прямой ответ на ваш вопрос.

0
ответ дан 7 December 2019 в 03:21
поделиться