目标C OAuth2验证:代码验证程序->代码挑战

时间:2018-09-12 22:38:25

标签: objective-c oauth-2.0

我为此感到挣扎。为了获得令牌,我必须提交我用来创建代码挑战的代码验证程序,该代码验证程序先前已提交给服务器。服务器始终响应,我提交了错误的代码验证器。所以我的方法在整个SHA256事物上肯定是错误的,但是我从未做过。你能告诉我我的方法有什么问题吗?手册说:

  

应用程序生成了代码验证程序后,便会使用它来创建   代码挑战。对于可以执行SHA256哈希的设备,   代码质询是SHA256哈希的BASE64-URL编码的字符串   代码验证器。没有能力执行   允许SHA256哈希将纯代码验证程序字符串用作   挑战。

- (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]);
}

0 个答案:

没有答案