Ok, answering my own question.
10.7 introduced Transforms to Security.framework, which is closely related to SecKey. Conversions allow you to do many things, including encoding (e.g. base64), digests, signature / verification, and encryption.
Here is an example of how to sign some data. All conversions follow the same basic pattern; if you look in Headers for Security.framework, you will see a header for each type of conversion. This is from SecTransformReadTransform.h and SecSignVerifyTransform.h. I just omit the error code or the cleanup code for simplicity.
NSData *dataToBeSigned = ;
yarpa source share