Because XML is text-based, not all ASCII characters are allowed to be passed as plain text. That's why some elements of the Agent protocol are base64-encoded. In C#, elements of this kind are represented as byte arrays. You don't have to additionally encode the data meant for these arrays, just fill them with the necessary content. Here is an example:
VZA.login loginCred = new VZA.login();
System.Text.Encoding ascii = System.Text.Encoding.ASCII;
loginCred.user = user;
loginCred.password = ascii.GetBytes(password);