Создать вызов кода (в кодировке base64, sha 256 ascii) из строки - PullRequest
0 голосов
/ 01 сентября 2018

Для некоторых вызовов кода, используемых в процессе входа в систему oauth2, мне нужно сделать следующее:

code_challenge = BASE64URL-ENCODE (SHA256 (ASCII (code_verifier))))

Как я могу сделать это из моей случайной строки, содержащейся в code_verifier?

ОБНОВЛЕНИЕ: Можете ли вы проверить, правильно ли это? Или некоторые вещи излишни / устарели? На самом деле, я понятия не имею, что я здесь делаю, я просто скопировал код из любого места, чтобы решить его ...

- (NSString *)createCodeChallengeWithVerifier:(NSString *)codeVerifier {
    //Create ASCII
    const char *asciiString = [codeVerifier cStringUsingEncoding:NSASCIIStringEncoding];

    //Sha256
    unsigned char buf[CC_SHA256_DIGEST_LENGTH];
    CC_SHA256(asciiString, strlen(asciiString), buf);

    NSMutableString * shaString = [NSMutableString stringWithCapacity:(CC_SHA256_DIGEST_LENGTH * 2)];
    for (int i = 0; i < CC_SHA256_DIGEST_LENGTH; ++i) {
        [shaString appendFormat:@"%02x", buf[i]];
    }

    //Base 64 encode
    NSData *dataFromShaString = [shaString dataUsingEncoding:NSUTF8StringEncoding];
    return([dataFromShaString base64EncodedStringWithOptions:0]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...