gpt4 book ai didi

来自 NSString 的 iOS SecKeyRef

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:38:00 25 4
gpt4 key购买 nike

我需要使用公钥将用户密码加密为 base64 字符串。

公钥是一个 NSString。

是这样的:

"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCgWO7p1AvCaHUeaM6rSczBBAqt mKObHxGW3VgTom2zGwswGj9t/Hr7NdJQCGAiq0ijcW9/oYnM/JobbsyEijHKqIQm OVMsV4JRoG68PEDszH/ebkqWhzu7vG9IQ6VYIkaKHqk7cg+mQ1qFDoigOooFJ2Pf Uzbmg+Z/DuYDuwg+bwIDAQBC"

如何从中创建 SecKeyRef?

我找到了教程here

但我无法让它工作,因为 SecCertificateCreateWithData 总是返回 nil。

这是我的代码

NSData* data = [NSString base64DataFromString:PUBLIC_KEY];
SecCertificateRef cert = NULL;
SecPolicyRef policy = NULL;

cert = SecCertificateCreateWithData(kCFAllocatorDefault, (__bridge CFDataRef)(data));
policy = SecPolicyCreateBasicX509();

OSStatus status = noErr;
SecKeyRef *publicKey = NULL;
SecTrustRef trust = NULL;
SecTrustResultType trustType = kSecTrustResultInvalid;

if (cert != NULL){
SecCertificateRef certArray[1] = {cert};
CFArrayRef certs = CFArrayCreate(kCFAllocatorDefault, (void *)certArray, 1, NULL);
status = SecTrustCreateWithCertificates(certs, policy, &trust);

if (status == errSecSuccess){
status = SecTrustEvaluate(trust, &trustType);

// Evaulate the trust.
switch (trustType) {
case kSecTrustResultInvalid:
case kSecTrustResultConfirm:
case kSecTrustResultDeny:
case kSecTrustResultUnspecified:
case kSecTrustResultFatalTrustFailure:
case kSecTrustResultOtherError:
break;
case kSecTrustResultRecoverableTrustFailure:
*publicKey = SecTrustCopyPublicKey(trust);
break;
case kSecTrustResultProceed:
*publicKey = SecTrustCopyPublicKey(trust);
break;
}

}
} else {
NSLog(@"CERT == NULL");
}

if (publicKey == NULL) {
NSLog(@"PUBLIC KEY == NULL");
}

SecKeyRef 始终为 nil,因为证书也为 nil。请帮助我。

最佳答案

您不能只传递关键数据。您必须通过由您的 key 签名的证书才能从证书中提取 key 。参见 this answersimilar question .

关于来自 NSString 的 iOS SecKeyRef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26119952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com