Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 钥匙链访问显示<;键>;作为对话框中的名称,而不是使用我创建的键_Objective C_Macos_Cocoa_Cryptography_Keychain - Fatal编程技术网

Objective c 钥匙链访问显示<;键>;作为对话框中的名称,而不是使用我创建的键

Objective c 钥匙链访问显示<;键>;作为对话框中的名称,而不是使用我创建的键,objective-c,macos,cocoa,cryptography,keychain,Objective C,Macos,Cocoa,Cryptography,Keychain,我使用以下代码在macOS上创建非对称签名密钥: const NSData* SignKeyTag = [@"ca.website.signRSA2048" dataUsingEncoding:NSUTF8StringEncoding]; const NSNumber* SignKeySize = @2048; const SecKeyAlgorithm SigningAlg = kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA384; const NS

我使用以下代码在macOS上创建非对称签名密钥:

const NSData* SignKeyTag = [@"ca.website.signRSA2048" dataUsingEncoding:NSUTF8StringEncoding];
const NSNumber* SignKeySize = @2048;
const SecKeyAlgorithm SigningAlg = kSecKeyAlgorithmRSASignatureDigestPKCS1v15SHA384;
const NSString* SignKeyType = (id)kSecAttrKeyTypeRSA;
const NSString* SignKeyLabel = @"Signing Key";

NSDictionary* attributes =
                @{
                    (id)kSecAttrKeyType:            SignKeyType,
                    (id)kSecAttrKeySizeInBits:      SignKeySize,
                    (id)kSecAttrLabel: SignKeyLabel,
                    (id)kSecAttrDescription: SignKeyLabel,
                    (id)kSecPrivateKeyAttrs:
                        @{
                            (id)kSecAttrIsPermanent:    @YES,
                            (id)kSecAttrApplicationTag: SignKeyTag,
                        },
                 };

CFErrorRef error = NULL;
myPrivKeyRef = SecKeyCreateRandomKey((__bridge CFDictionaryRef)attributes, &error);
这很好,我可以毫无疑问地签名和验证。我面临的问题是,如果需要授予访问密钥的权限,则要求用户允许/拒绝/始终允许访问密钥的对话框将显示名称
,而不是我给它的任何标签/标签/描述。此外,如果我在Keychain Access.app中编辑密钥,它还会请求我更改
的权限

Keychain Access在列表中正确显示了标签,但我在密钥信息中的任何位置都看不到
。另外,如果我为代码中的键枚举属性,我不会看到

现在,我假设我看到的标签可能来自公钥。但是,文档中说我不应该单独存储公钥,而应该在需要时使用SecKeyCopyPublicKey()从私钥获取它


有什么想法吗?谢谢

KSECDescriptionItemr不适用于KSEClassKey项目。我尝试了一些使用“安全”命令行和类似于您的代码的实验。没有找到答案。它似乎应该使用kSecAttrLabel,但似乎在属性字典的任何级别都不起作用,尽管它如您所说出现在KeychainAccess中。¯_(ツ)_/¯