Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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
Swift SecCodeCopySigningInformation生成奇怪的错误_Swift_Macos_Logging_Digital Signature_Swift5.1 - Fatal编程技术网

Swift SecCodeCopySigningInformation生成奇怪的错误

Swift SecCodeCopySigningInformation生成奇怪的错误,swift,macos,logging,digital-signature,swift5.1,Swift,Macos,Logging,Digital Signature,Swift5.1,我有一些代码可以检查macOS上的代码签名: // Get a code reference. var codeOpt: SecCode? = nil var err = SecCodeCopyGuestWithAttributes(nil, [kSecGuestAttributeAudit : sourceAppAuditToken] as NSDictionary, [], &codeOpt) guard err == errSecSuccess, let code = codeOp

我有一些代码可以检查macOS上的代码签名:

// Get a code reference.
var codeOpt: SecCode? = nil
var err = SecCodeCopyGuestWithAttributes(nil, [kSecGuestAttributeAudit : sourceAppAuditToken] as NSDictionary, [], &codeOpt)
guard err == errSecSuccess, let code = codeOpt else {
    return nil
}

// Convert that to a static code.
var staticCodeOpt: SecStaticCode? = nil
err = SecCodeCopyStaticCode(code, [] , &staticCodeOpt)
guard err == errSecSuccess, let staticCode = staticCodeOpt else {
    return nil
}

// Get code signing information about that.
var infoOpt: CFDictionary? = nil
// this generates MacOS error: -25337 and CSSM Exception: -2147414013 CSSMERR_DL_MDS_ERROR
err = SecCodeCopySigningInformation(staticCode, SecCSFlags(rawValue: kSecCSInternalInformation ), &infoOpt) 
guard err == errSecSuccess, let info = infoOpt as? [String:Any] else {
    return nil
}
调用
SecCodeCopySigningInformation
会在系统日志上生成以下错误:

MacOS错误:-25337

CSSM异常:-2147414013 CSSMERR\U DL\U MDS\U错误


有人知道为什么会有这些错误吗?据我所知,我的代码是正确的。

在调用SecCodeCopySigningInformation之前,您应该再次创建静态代码,例如

NSURL               *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]];
CFURLRef            path = (__bridge CFURLRef)url;

SecStaticCodeRef    codeRef;
SecStaticCodeCreateWithPath(path, kSecCSDefaultFlags, &codeRef);
也可以使用这些标志

SecCSFlags      flags = kSecCSInternalInformation;
CFDictionaryRef signingInfo = nil;
OSStatus        status = SecCodeCopySigningInformation(codeRef, flags, &signingInfo);