if (challenge.getRawValue() != null) {
HeaderReader<Object> hr = new HeaderReader<Object>(
challenge.getRawValue());
try {
Parameter param = hr.readParameter();
while (param != null) {
try {
if ("username".equals(param.getName())) {
challenge.setIdentifier(param.getValue());
} else if ("realm".equals(param.getName())) {
challenge.setRealm(param.getValue());
} else if ("nonce".equals(param.getName())) {
challenge.setServerNonce(param.getValue());
} else if ("uri".equals(param.getName())) {
challenge.setDigestRef(new Reference(param
.getValue()));
} else if ("response".equals(param.getName())) {
challenge.setSecret(param.getValue());
} else if ("algorithm".equals(param.getName())) {
challenge.setDigestAlgorithm(param.getValue());
} else if ("cnonce".equals(param.getName())) {
challenge.setClientNonce(param.getValue());
} else if ("opaque".equals(param.getName())) {
challenge.setOpaque(param.getValue());
} else if ("qop".equals(param.getName())) {
challenge.setQuality(param.getValue());
} else if ("nc".equals(param.getName())) {
challenge.setServerNounceCount(Integer.valueOf(
param.getValue(), 16));
} else {
challenge.getParameters().add(param);
}
} catch (Throwable e) {
Context.getCurrentLogger()