///|
fn validate_sasl_base64(
value : String,
allow_empty~ : Bool,
) -> Unit raise PopError {
if value.length() > 16380 ||
value.length() % 4 != 0 ||
(!allow_empty && value.is_empty()) {
raise Invalid("SASL response length")
}
let mut padding = 0
for c in value.iter() {
if c == '=' {
padding += 1
} else if padding > 0 ||
!((c >= 'a' && c <= 'z') ||
(c >= 'A' && c <= 'Z') ||
(c >= '0' && c <= '9') ||
c == '+' ||
c == '/') {
raise Invalid("SASL base64 alphabet")
}
}
if padding > 2 {
raise Invalid("SASL base64 padding")
}
}