     }
 }
 
-public enum Status {
+public enum Status : OSStatus {
     case Success
     case Unimplemented
     case Param

}

extension ProtocolType : RawRepresentable, Printable {
    public static let allValues: [ProtocolType] = [
        FTP,
        FTPAccount,
        HTTP,
        IRC,
        NNTP,
        POP3,
        SMTP,
        SOCKS,
        IMAP,
        LDAP,
        AppleTalk,
        AFP,
        Telnet,
        SSH,
        FTPS,
        HTTPS,
        HTTPProxy,
        HTTPSProxy,
        FTPProxy,
        SMB,
        RTSP,
        RTSPProxy,
        DAAP,
        EPPC,
        IPP,
        NNTPS,
        LDAPS,
        TelnetS,
        IMAPS,
        IRCS,
        POP3S,
    ]
    
    public init?(rawValue: String) {
        if rawValue == kSecAttrProtocolFTP {
            self = FTP
        } else if rawValue == kSecAttrProtocolFTPAccount {
            self = FTPAccount
        } else if rawValue == kSecAttrProtocolHTTP {
            self = HTTP
        } else if rawValue == kSecAttrProtocolIRC {
            self = IRC
        }  else if rawValue == kSecAttrProtocolNNTP {
            self = NNTP
        } else if rawValue == kSecAttrProtocolPOP3 {
            self = POP3
        } else if rawValue == kSecAttrProtocolSMTP {
            self = SMTP
        } else if rawValue == kSecAttrProtocolPOP3 {
            self = POP3
        } else if rawValue == kSecAttrProtocolSOCKS {
            self = SOCKS
        } else if rawValue == kSecAttrProtocolIMAP {
            self = IMAP
        } else if rawValue == kSecAttrProtocolLDAP {
            self = LDAP
        } else if rawValue == kSecAttrProtocolAppleTalk {
            self = AppleTalk
        } else if rawValue == kSecAttrProtocolAFP {
            self = AFP
        } else if rawValue == kSecAttrProtocolTelnet {
            self = Telnet
        } else if rawValue == kSecAttrProtocolSSH {
            self = SSH
        } else if rawValue == kSecAttrProtocolFTPS {
            self = FTPS
        } else if rawValue == kSecAttrProtocolHTTPS {
            self = HTTPS
        } else if rawValue == kSecAttrProtocolHTTPProxy {
            self = HTTPProxy
        } else if rawValue == kSecAttrProtocolHTTPSProxy {
            self = HTTPSProxy
        } else if rawValue == kSecAttrProtocolFTPProxy {
            self = FTPProxy
        } else if rawValue == kSecAttrProtocolSMB {
            self = SMB
        } else if rawValue == kSecAttrProtocolRTSP {
            self = RTSP
        } else if rawValue == kSecAttrProtocolRTSPProxy {
            self = RTSPProxy
        } else if rawValue == kSecAttrProtocolDAAP {
            self = DAAP
        } else if rawValue == kSecAttrProtocolEPPC {
            self = EPPC
        } else if rawValue == kSecAttrProtocolIPP {
            self = IPP
        } else if rawValue == kSecAttrProtocolNNTPS {
            self = NNTPS
        } else if rawValue == kSecAttrProtocolLDAPS {
            self = LDAPS
        } else if rawValue == kSecAttrProtocolTelnetS {
            self = TelnetS
        } else if rawValue == kSecAttrProtocolIMAPS {
            self = IMAPS
        } else if rawValue == kSecAttrProtocolIRCS {
            self = IRCS
        } else if rawValue == kSecAttrProtocolPOP3S {
            self = POP3S
        } else {
            return nil
        }
    }

}

extension Accessibility : RawRepresentable, Printable {
    
    public init?(rawValue: String) {
        switch rawValue {
        case kSecAttrAccessibleWhenUnlocked:
            self = WhenUnlocked
        case kSecAttrAccessibleAfterFirstUnlock:
            self = AfterFirstUnlock
        case kSecAttrAccessibleAlways:
            self = Always
        case kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly:
            self = WhenPasscodeSetThisDeviceOnly
        case kSecAttrAccessibleWhenUnlockedThisDeviceOnly:
            self = WhenUnlockedThisDeviceOnly
        case kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly:
            self = AfterFirstUnlockThisDeviceOnly
        case kSecAttrAccessibleAlwaysThisDeviceOnly:
            self = AlwaysThisDeviceOnly
        default:
            return nil
        }
    }
