在 iOS 中有SecKeyRawSign()
生成签名的方法,可以让你指定填充类型。
OSStatus SecKeyRawSign (
SecKeyRef key,
SecPadding padding,
const uint8_t *dataToSign,
size_t dataToSignLen,
uint8_t *sig,
size_t *sigLen
);
在 OSX 上它不会以这种方式工作,我正在使用安全转换来做到这一点,如此处所述https://developer.apple.com/library/mac/#documentation/Security/Conceptual/SecTransformPG/SigningandVerifying/SigningandVerifying。 html#//apple_ref/doc/uid/TP40010801-CH4-SW3。
/* Create the transform objects */
signer = SecSignTransformCreate(privatekey, &error);
if (error) { CFShow(error); exit(-1); }
SecTransformSetAttribute(
signer,
kSecTransformInputAttributeName,
sourceData,
&error);
if (error) { CFShow(error); exit(-1); }
signature = SecTransformExecute(signer, &error);
if (error) { CFShow(error); exit(-1); }
if (!signature) {
fprintf(stderr, "Signature is NULL!\n");
exit(-1);
}
有没有办法在这里设置填充?如果可能,请提供示例。
在 iOS 的 Security Framework 中,定义
kSecPaddingPKCS1SHA256
了SHA256来设置填充。在 OSX 上没有,那么应该等同于使用什么?我需要为 SHA256 设置填充。
谢谢!