我在Yosemite上有一个kext的代码签名。但是 kextload 加载失败。
它是版本2的 codesign。 codesign --verify
是正确的。
但kextload加载失败了。为什么不能在Yosemite中加载?
这是我的日志。
我已经使用codesign -dvvv ./myKext.kext
进行了检查,一切正常。
codesign -dvvv ./myKext.kext
返回以下内容:
Executable=/Path/to/myKext
Identifier=com.myKext.kext.Firewall
Format=bundle with Mach-O thin (x86_64)
CodeDirectory v=20100 size=317 flags=0x0(none) hashes=9+3 location=embedded
Hash type=sha1 size=20
CDHash=d0ff68bd8b49c650f45349c2d1570d45a8c1f148
Signature size=8544
Authority=Developer ID Application: My Kext Co., Ltd. (R2PBZJ465V)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=2014. 10. 31. 오전 11:09:35
Info.plist entries=18
TeamIdentifier=not set
Sealed Resources version=2 rules=12 files=1
Internal requirements count=1 size=188
这表明版本为2。
但是sudo kextload ./myKext.kext
返回以下内容:
/Path/to/myKext.kext无法加载 - (libkern/kext) 不可加载 (未指定原因);检查系统/内核日志以获取错误信息, 或尝试使用kextutil(8)。
cat /var/log/system.log
返回:
com.apple.kextd[19]: 错误:com.myKext.kext.Firewall的签名无效,无法加载
sudo kextutil -l ./myKext.kext
返回:
Diagnostics for ./myKext.kext:
Code Signing Failure: code signature is invalid
ERROR: invalid signature for com.myKext.kext.Firewall, will not load
为什么会出现无效签名?!
我已经在Yosemite中使用版本2的codesign进行了签名。
我哪里签名错了吗?请有经验的人告诉我。