未获得所需的SHA 256 Base64值

时间:2018-11-27 12:05:11

标签: ios objective-c iphone base64 sha256

我是Objective c的新手,并且正在ios(Objective c)上进行公钥固定,它与已经本地保存的Base64哈希值不匹配。但是它在Android环境中可以正常工作。我无法弄清楚出什么问题了。

我的代码返回哈希值:/ bGwd9wYf8ZpJagve4Y3kxrMfW2 + CYCQW6LjY5JmkwU = 保存的哈希:HWP97J5yrux7HtfsHUNFMxdetf3JmXkc55EBmMmJLpM

SecTrustRef serverTrust = challenge.protectionSpace.serverTrust;
SecCertificateRef certificate = SecTrustGetCertificateAtIndex(serverTrust, 0);
SecKeyRef keyRef= SecCertificateCopyPublicKey(certificate);
CFErrorRef error = NULL;
NSData* remoteCertificateData = (NSData*)CFBridgingRelease(SecKeyCopyExternalRepresentation(keyRef, &error));
NSData *keyData=remoteCertificateData;

uint8_t digest[CC_SHA256_DIGEST_LENGTH]={0};
CC_SHA256(keyData.bytes, keyData.length, digest);
NSData *data=[NSData dataWithBytes:digest length:CC_SHA256_DIGEST_LENGTH];
NSString *base64String = [data base64EncodedStringWithOptions:0];

if ([base64String isEqualToString:ExistinHash])
{
    NSURLCredential *credential = [NSURLCredential credentialForTrust:serverTrust];
    [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge];
    completionHandler(NSURLSessionAuthChallengeUseCredential, credential);
}
else
{
    // In secure connection
}

0 个答案:

没有答案