001 /*
002 * Cumulus4j - Securing your data in the cloud - http://cumulus4j.org
003 * Copyright (C) 2011 NightLabs Consulting GmbH
004 *
005 * This program is free software: you can redistribute it and/or modify
006 * it under the terms of the GNU Affero General Public License as
007 * published by the Free Software Foundation, either version 3 of the
008 * License, or (at your option) any later version.
009 *
010 * This program is distributed in the hope that it will be useful,
011 * but WITHOUT ANY WARRANTY; without even the implied warranty of
012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
013 * GNU Affero General Public License for more details.
014 *
015 * You should have received a copy of the GNU Affero General Public License
016 * along with this program. If not, see <http://www.gnu.org/licenses/>.
017 */
018 package org.cumulus4j.keymanager.front.shared;
019
020 import java.io.Serializable;
021 import java.util.Date;
022
023 import javax.xml.bind.annotation.XmlRootElement;
024
025 /**
026 * Response sent back from the key-server to the client after it requested opening a session.
027 * This might not necessarily
028 * represent a new session as a previously opened session might just be refreshed and reused.
029 *
030 * @author Marco หงุ่ยตระกูล-Schulze - marco at nightlabs dot de
031 */
032 @XmlRootElement
033 public class AcquireCryptoSessionResponse implements Serializable
034 {
035 private static final long serialVersionUID = 1L;
036
037 private String cryptoSessionID;
038
039 private Date expiry;
040
041 /**
042 * <p>
043 * Get the crypto-session's unique identifier.
044 * </p>
045 * <p>
046 * This identifier is composed of 3 parts:
047 * </p>
048 * <ul>
049 * <li><code>cryptoSessionIDPrefix</code>: A random ID of the key server. This is used to optimize communication between app-server
050 * and key server. A new prefix is generated at every startup of the key server.
051 * </li>
052 * <li>Separator '.': A dot is used as separator.</li>
053 * <li>The rest of the cryptoSessionID, which is unique within the scope of the prefix.</li>
054 * </ul>
055 * <p>
056 * Note, that this identifier is structurally the same, no matter if the key-manager is embedded in the client
057 * or separate in a key-server.
058 * </p>
059 *
060 * @return the crypto-session's unique identifier.
061 * @see #setCryptoSessionID(String)
062 */
063 public String getCryptoSessionID() {
064 return cryptoSessionID;
065 }
066 /**
067 * Set the crypto-session's unique identifier. See {@link #getCryptoSessionID()} for
068 * how such an identifier must look like.
069 * @param cryptoSessionID the crypto-session's unique identifier.
070 * @see #getCryptoSessionID()
071 */
072 public void setCryptoSessionID(String cryptoSessionID) {
073 this.cryptoSessionID = cryptoSessionID;
074 }
075
076 /**
077 * Get the timestamp, when this session expires. The session expires only, if it is not refreshed
078 * before this date (refreshing postpones the expiry).
079 * @return the timestamp, when this session expires.
080 * @see #setExpiry(Date)
081 */
082 public Date getExpiry() {
083 return expiry;
084 }
085 /**
086 * Set the timestamp, when this session expires.
087 * @param expiry the timestamp, when this session expires.
088 * @see #getExpiry()
089 */
090 public void setExpiry(Date expiry) {
091 this.expiry = expiry;
092 }
093
094 }