   }
   
   /**
-  
+  Authorize agains the provided `host` using `username` & `password`.
+  
+  - parameter session: A valid `SSH2Session` that will be used to retrieve the banner.
+  If `nil` a previously open internal session will be used or an error will be returned.
+  - parameter username: The username that will be used to authenticate with on the host.
+  If `nil` the framework will try to retrieve the `username` from the initialization.
+  - parameter password: The password that will be used to authenticate with on the host.
+  If `nil` the framework will try to retrieve the `username` from the initialization.
+  
+  - throws `UnableToProceedWithoutValidSSH2Session`: When no valid `SSH2Session` was passed or found internally.
+  - throws `AuthenticationFailed`: 
+    + When no valid `username` was passed or found internally.
+    + When remote host doesn't support `password` authentication for the provided `username`.
+    + When there's no match on the remote server for the `username` & `password` provided.
   */
   public func authorizeWithCredentials(session sess: SSH2Session?=nil, username usr: String?=nil, password passw: String?=nil) throws -> Bool {
     /**

      
      let sftpStatus = libssh2_session_last_errno(session.cSession)
      guard sftp_session.cSFTPSession.hashValue != 0 || sftpStatus == LIBSSH2_ERROR_EAGAIN else {
        let errMsg = "sftp2 session failed: " + String.fromCString(strerror(errno))!
        println(errMsg)

        throw SwiftSSH2Error.SFTP2SessionError(errMsg)

    } while (rc == LIBSSH2_ERROR_EAGAIN)
    
    guard rc == 0 else {
      let errMsg = "Authentication Failed: " + String.fromCString(strerror(errno))!
      println(errMsg)
      
      throw SwiftSSH2Error.AuthenticationFailed(errMsg)
