/* * 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.IOException; import java.io.Serializable; import org.codehaus.jackson.JsonNode; import org.codehaus.jackson.map.ObjectMapper; import org.xdi.oxauth.model.fido.u2f.exception.BadInputException; import org.xdi.oxauth.model.util.Base64Util; /** * FIDO U2F client data * * @author Yuriy Movchan Date: 05/13/2015 */ public class ClientData implements Serializable { private static final long serialVersionUID = -1483378146391551962L; private static final String TYPE_PARAM = "typ"; private static final String CHALLENGE_PARAM = "challenge"; private static final String ORIGIN_PARAM = "origin"; private final String typ; private final String challenge; private final String origin; private final String rawClientData; private final JsonNode data; public ClientData(String clientData) throws BadInputException { this.rawClientData = new String(Base64Util.base64urldecode(clientData)); try { this.data = new ObjectMapper().readTree(rawClientData); this.typ = getString(TYPE_PARAM); this.challenge = getString(CHALLENGE_PARAM); this.origin = getString(ORIGIN_PARAM); } catch (IOException ex) { throw new BadInputException("Malformed ClientData", ex); } } public String getTyp() { return typ; } public String getChallenge() { return challenge; } public String getOrigin() { return origin; } public String getString(String key) { return data.get(key).asText(); } public String getRawClientData() { return rawClientData; } @Override public String toString() { return rawClientData; } }