2 * SecExternalSourceTransform.cpp
3 * libsecurity_transform
5 * Created by J Osborne on 8/17/10.
6 * Copyright 2010 Apple. All rights reserved.
10 #include "SecTransform.h"
11 #include "SecCustomTransform.h"
12 #include "SecExternalSourceTransform.h"
13 #include <dispatch/dispatch.h>
15 CFStringRef external_source_name
= CFSTR("com.apple.security.external_source");
17 static SecTransformInstanceBlock
SecExternalSourceTransformCreateBlock(CFStringRef name
, SecTransformRef newTransform
, SecTransformImplementationRef ref
)
20 SecTransformCustomSetAttribute(ref
, kSecTransformInputAttributeName
, kSecTransformMetaAttributeRequired
, kCFBooleanFalse
);
22 SecTransformAttributeRef out
= SecTranformCustomGetAttribute(ref
, kSecTransformOutputAttributeName
, kSecTransformMetaAttributeRef
);
24 SecTransformSetAttributeAction(ref
, kSecTransformActionAttributeNotification
, kSecTransformInputAttributeName
, ^(SecTransformAttributeRef attribute
, CFTypeRef value
) {
25 SecTransformCustomSetAttribute(ref
, out
, kSecTransformMetaAttributeValue
, value
);
26 return (CFTypeRef
)NULL
;
29 return (CFErrorRef
)NULL
;
33 SecTransformRef
SecExternalSourceTransformCreate(CFErrorRef
* error
)
35 static dispatch_once_t once
;
36 dispatch_once(&once
, ^{
37 SecTransformRegister(external_source_name
, SecExternalSourceTransformCreateBlock
, error
);
40 return SecTransformCreate(external_source_name
, error
);