SecDigestTransform.cpp
1 #include "SecDigestTransform.h" 2 #include "SecCFRelease.h" 3 #include "Digest.h" 4 5 6 7 const CFStringRef kSecDigestMD2 = CFSTR("MD2 Digest"), 8 kSecDigestMD4 = CFSTR("MD4 Digest"), 9 kSecDigestMD5 = CFSTR("MD5 Digest"), 10 kSecDigestSHA1 = CFSTR("SHA1 Digest"), 11 kSecDigestSHA2 = CFSTR("SHA2 Digest Family"), 12 kSecDigestHMACMD5 = CFSTR("HMAC-MD5"), 13 kSecDigestHMACSHA1 = CFSTR("HMAC-SHA1"), 14 kSecDigestHMACSHA2 = CFSTR("HMAC-SHA2 Digest Family"); 15 16 const CFStringRef kSecDigestTypeAttribute = CFSTR("Digest Type"), 17 kSecDigestLengthAttribute = CFSTR("Digest Length"), 18 kSecDigestHMACKeyAttribute = CFSTR("HMAC Key"); 19 20 SecTransformRef SecDigestTransformCreate(CFTypeRef digestType, 21 CFIndex digestLength, 22 CFErrorRef* error 23 ) 24 { 25 SecTransformRef tr = DigestTransform::Make(); 26 DigestTransform* dt = (DigestTransform*) CoreFoundationHolder::ObjectFromCFType(tr); 27 28 CFErrorRef result = dt->Setup(digestType, digestLength); 29 if (result != NULL) 30 { 31 // an error occurred 32 CFReleaseNull(tr); 33 34 if (error) 35 { 36 CFRetainSafe(result); 37 *error = result; 38 } 39 40 return NULL; 41 } 42 43 return tr; 44 } 45 46 47 48 CFTypeID SecDigestTransformGetTypeID() 49 { 50 return DigestTransform::GetCFTypeID(); 51 }