0

For some code challenge used in the oauth2 login process I need to do the following:

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

How can I do this from my random string contained in code_verifier?

UPDATE: Can you check if this is correct? Or is some stuff unneccesary/deprecated? I actually have not really an idea what I am doing here, I just copied code from everywhere to solve it...

- (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]);
}
MichiZH
  • 5,587
  • 12
  • 41
  • 81

0 Answers0