Objective-C: JWT - кодировать с помощью RS256, используя строковые данные закрытого ключа - PullRequest
0 голосов
/ 23 сентября 2018

Я использую эту библиотеку для кодирования RS256 токена https://github.com/yourkarma/JWT

В документах есть пример, который имеет дело с RS256 кодировкой

NSDictionary *payload = @{@"payload" : @"hidden_information"};
NSString *algorithmName = @"RS256";

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"secret_key" ofType:@"p12"];
NSData *privateKeySecretData = [NSData dataWithContentsOfFile:filePath];

NSString *passphraseForPrivateKey = @"secret";

JWTBuilder *builder = [JWTBuilder encodePayload:payload].secretData(privateKeySecretData).privateKeyCertificatePassphrase(passphraseForPrivateKey).algorithmName(algorithmName);
NSString *token = builder.encode;

Теперь,поскольку у меня есть только строка с закрытым ключом, похожая на эту:

"-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEAtN7LQq7l9a9....SUug==\n-----END RSA PRIVATE KEY-----\n"

Мне интересно, как я могу это реализовать?Очевидно, мне не нужна фраза.

Заранее спасибо

1 Ответ

0 голосов
/ 03 октября 2018

Оказалось, что это не так сложно, с помощью напарника; -)

Вот решение:

NSDictionary *payload = @{@"payload" : @"hidden_information"};

id <JWTAlgorithmDataHolderProtocol> holder = [JWTAlgorithmRSFamilyDataHolder new]
    .keyExtractorType([JWTCryptoKeyExtractor privateKeyWithPEMBase64].type)
    .privateKeyCertificatePassphrase(nil)
    .algorithmName(JWTAlgorithmNameRS256)
    .secret(<string of the private key as above>);

JWTCodingResultType *result = [JWTEncodingBuilder encodePayload:payload]
    .addHolder(holder)
    .result;

NSString *token = result.successResult.encoded;
NSError *error = result.errorResult.error;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...