]> git.saurik.com Git - apple/security.git/blobdiff - Security/libsecurity_transform/lib/SecDigestTransform.cpp
Security-57031.1.35.tar.gz
[apple/security.git] / Security / libsecurity_transform / lib / SecDigestTransform.cpp
diff --git a/Security/libsecurity_transform/lib/SecDigestTransform.cpp b/Security/libsecurity_transform/lib/SecDigestTransform.cpp
new file mode 100644 (file)
index 0000000..9ab767c
--- /dev/null
@@ -0,0 +1,49 @@
+#include "SecDigestTransform.h"
+#include "Digest.h"
+
+
+
+const CFStringRef kSecDigestMD2 = CFSTR("MD2 Digest"),
+                                 kSecDigestMD4 = CFSTR("MD4 Digest"),
+                                 kSecDigestMD5 = CFSTR("MD5 Digest"),
+                                 kSecDigestSHA1 = CFSTR("SHA1 Digest"),
+                                 kSecDigestSHA2 = CFSTR("SHA2 Digest Family"),
+                                 kSecDigestHMACMD5 = CFSTR("HMAC-MD5"),
+                                 kSecDigestHMACSHA1 = CFSTR("HMAC-SHA1"),
+                                 kSecDigestHMACSHA2 = CFSTR("HMAC-SHA2 Digest Family");
+
+const CFStringRef kSecDigestTypeAttribute = CFSTR("Digest Type"),
+                                 kSecDigestLengthAttribute = CFSTR("Digest Length"),
+                                 kSecDigestHMACKeyAttribute = CFSTR("HMAC Key");
+
+SecTransformRef SecDigestTransformCreate(CFTypeRef digestType,
+                                                                                CFIndex digestLength,
+                                                                                CFErrorRef* error
+                                                                                )
+{
+       SecTransformRef tr = DigestTransform::Make();
+       DigestTransform* dt = (DigestTransform*) CoreFoundationHolder::ObjectFromCFType(tr);
+       
+       CFErrorRef result = dt->Setup(digestType, digestLength);
+       if (result != NULL)
+       {
+               // an error occurred
+               CFRelease(tr);
+               
+               if (error)
+               {
+                       *error = result;
+               }
+               
+               return NULL;
+       }
+       
+       return tr;
+}
+
+
+
+CFTypeID SecDigestTransformGetTypeID()
+{
+       return DigestTransform::GetCFTypeID();
+}