gpt4 book ai didi

objective-c - 当我从 p12 文件中读取 nsdata 时提取身份

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

当我从我的包中的 p12 文件中读取 nsdata 时,我可以提取身份。

NSData *PKCS12Data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle]     pathForResource:@"sample" ofType:@"p12"]];

但是当我将它存储为 blob 并尝试创建 nsdata 时

PKCS12 *newp12;

using NSData *PKCS12Data = [[NSData alloc] initWithBytes:&p12ptr length:length];

它失败了....错误代码 -26275 osstatus。两种情况 nsdata 都显示相同的字节.. 任何编码问题?请帮忙

我正在使用以下代码提取身份

securityError = SecPKCS12Import((CFDataRef)inPKCS12Data,(CFDictionaryRef)optionsDictionary,&items);

if (securityError == 0) {
CFDictionaryRef myIdentityAndTrust = CFArrayGetValueAtIndex (items, 0);
const void *tempIdentity = NULL;
tempIdentity = CFDictionaryGetValue (myIdentityAndTrust, kSecImportItemIdentity);
*outIdentity = (SecIdentityRef)tempIdentity;
const void *tempTrust = NULL;
tempTrust = CFDictionaryGetValue (myIdentityAndTrust, kSecImportItemTrust);
*outTrust = (SecTrustRef)tempTrust;
} else
{
NSLog(@"Failed with error code %d",(int)securityError);
return NO;
}

最佳答案

这是 initWithBytes 方法的文档:

initWithBytes:length:

Returns a data object initialized by adding to it a given number of bytes of data copied from a given buffer.

  • (id)initWithBytes:(const void *)bytes length:(NSUInteger)length

你的代码是这样做的:

NSData *PKCS12Data = [[NSData alloc] initWithBytes:&p12ptr length:length];

您可以看到,对于第一个参数,您将地址传递给 p12ptr。我假设这个变量不是一个字节?如果不是,那么您将向该函数传递一个不正确的指针,并且 NSData 会尝试使用内存空间中某个随机位置的 length 字节数来初始化自身。

能否请您发布声明 p12ptr 的代码以及初始化它的代码?

关于objective-c - 当我从 p12 文件中读取 nsdata 时提取身份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6492561/

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