+ // This now is a safe cast
+ CFReadStreamRef input = (CFReadStreamRef)item;
+
+ // Get the state of the stream
+ CFStreamStatus streamStatus = CFReadStreamGetStatus(input);
+ switch (streamStatus)
+ {
+ case kCFStreamStatusNotOpen:
+ {
+ if (!CFReadStreamOpen(input))
+ {
+ // We didn't open properly. Error out
+ return (CFTypeRef) CreateSecTransformErrorRef(kSecTransformErrorInvalidInput, "An error occurred while opening the stream.");
+ }
+ }
+ break;
+
+ case kCFStreamStatusError:
+ {
+ return (CFTypeRef) CreateSecTransformErrorRef(kSecTransformErrorInvalidInput, "The read stream is in an error state");
+ }
+ break;
+
+ default:
+ // The assumption is that the stream is ready to go as is.
+ break;
+ }
+