/*
* oxAuth is available under the MIT License (2008). See http://opensource.org/licenses/MIT for full text.
*
* Copyright (c) 2015, Gluu
*/
package org.xdi.oxauth.model.fido.u2f.protocol;
import java.io.Serializable;
import org.codehaus.jackson.annotate.JsonIgnore;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonProperty;
import org.jboss.resteasy.annotations.providers.jaxb.IgnoreMediaTypes;
import org.xdi.oxauth.model.fido.u2f.exception.BadInputException;
/**
* FIDO U2F device authentication response
*
* @author Yuriy Movchan Date: 05/13/2015
*/
@IgnoreMediaTypes("application/*+json")
// try to ignore jettison as it's recommended here:
// http://docs.jboss.org/resteasy/docs/2.3.4.Final/userguide/html/json.html
@JsonIgnoreProperties(ignoreUnknown = true)
public class AuthenticateResponse implements Serializable {
private static final long serialVersionUID = -4854326288654670000L;
/**
* base64(UTF8(client data))
*/
@JsonProperty
private final String clientData;
@JsonIgnore
private transient ClientData clientDataRef;
/* base64(raw response from U2F device) */
@JsonProperty
private final String signatureData;
/* keyHandle originally passed */
@JsonProperty
private final String keyHandle;
public AuthenticateResponse(@JsonProperty("clientData") String clientData, @JsonProperty("signatureData") String signatureData,
@JsonProperty("keyHandle") String keyHandle) throws BadInputException {
this.clientData = clientData;
this.signatureData = signatureData;
this.keyHandle = keyHandle;
this.clientDataRef = new ClientData(clientData);
}
public ClientData getClientData() {
return clientDataRef;
}
public String getSignatureData() {
return signatureData;
}
public String getKeyHandle() {
return keyHandle;
}
@JsonIgnore
public String getRequestId() {
return getClientData().getChallenge();
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("AuthenticateResponse [clientData=").append(clientData).append(", signatureData=").append(signatureData).append(", keyHandle=")
.append(keyHandle).append("]");
return builder.toString();
}
}