ठीक है, यहां मेरे अपने प्रश्न का उत्तर दें।
10.7 सुरक्षा.फ्रेमवर्क में ट्रांसफॉर्म प्रस्तुत किया गया, जो SecKey के साथ निकटता से बंधे हैं। ट्रांसफॉर्म आपको एन्कोडिंग (जैसे बेस 64), डाइजेस्ट, साइनिंग/सत्यापन और एन्क्रिप्शन समेत कई चीजें करने देता है।
यहां कुछ उदाहरण हस्ताक्षर करने का एक उदाहरण दिया गया है। सभी परिवर्तन एक ही बुनियादी पैटर्न का पालन करते हैं; यदि आप सुरक्षा के लिए शीर्षलेखों में देखते हैं। फ्रेमवर्क आपको प्रत्येक प्रकार के परिवर्तन के लिए एक शीर्षलेख दिखाई देगा। ये SecTransformReadTransform.h और SecSignVerifyTransform.h से हैं। मैं सादगी के लिए यहां कोई त्रुटि जांच या सफाई कोड छोड़ रहा हूं।
NSData *dataToBeSigned = ;// Get this from somewhere. We set sha1 attributes down below, so this should be a sha1 digest
SecKeyRef *key = ;// Get this from somewhere; keychain or SecItemImport
SecGroupTransformRef group = SecTransformCreateGroupTransform();
CFReadStreamRef readStream = NULL;
SecTransformRef readTransform = NULL;
SecTransformRef signingTransform = NULL;
// Setup our input stream as well as an input transform
readStream = CFReadStreamCreateWithBytesNoCopy(kCFAllocatorDefault,
[dataToBeSigned bytes],
[dataToBeSigned length],
kCFAllocatorNull); // Pass Null allocator so it doesn't free NSData's bytes
readTransform = SecTransformCreateReadTransformWithReadStream(readStream);
// Setup a signing transform
signingTransform = SecSignTransformCreate(key, NULL);
SecTransformSetAttribute(signingTransform, kSecInputIsDigest, kCFBooleanTrue, NULL);
SecTransformSetAttribute(signingTransform, kSecDigestTypeAttribute, kSecDigestSHA1, NULL);
// Connect read and signing transform; Have read pass its data to the signer
SecTransformConnectTransforms(readTransform, kSecTransformOutputAttributeName,
self.signingTransformRef, kSecTransformInputAttributeName,
group, NULL);
// Execute the sequence of transforms (group)
// The last one in the connected sequence is the return value
NSData *signature = SecTransformExecute(group, NULL);
धन्यवाद :) इससे मुझे सुरक्षा/SecKey.h और संबंधित कार्यों का सामना करना पड़ा जो ऐसा लगता है कि उन्हें वही करना है जो मुझे चाहिए। – yarpa
असल में, सेककी केवल आधा समाधान है। यह मुख्य पीढ़ी को संभालता है, लेकिन ऐसा लगता है कि किसी भी वास्तविक क्रिप्टो ऑपरेशंस का समर्थन नहीं करता है (हालांकि यह आईओएस संस्करण की तरह दिखता है, लेकिन मैं शेर को देख रहा हूं)। सीडीएसए को शेर में बहिष्कृत किया गया है, इसलिए मूल प्रश्न अभी भी खुला है। (Deprecation नोटिस के लिए Security.framework/cssmtype.h देखें)। शिकार जारी है। – yarpa