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.back.shared;
019
020 import java.util.Date;
021
022 import javax.xml.bind.annotation.XmlRootElement;
023
024 /**
025 * <p>
026 * {@link Response} implementation to send the currently active encryption key to the app-server.
027 * It is the response to a {@link GetActiveEncryptionKeyRequest}.
028 * </p>
029 *
030 * @author Marco หงุ่ยตระกูล-Schulze - marco at nightlabs dot de
031 * @see GetActiveEncryptionKeyRequest
032 */
033 @XmlRootElement
034 public class GetActiveEncryptionKeyResponse extends GetKeyResponse
035 {
036 private static final long serialVersionUID = 1L;
037
038 private Date activeUntilExcl;
039
040 /**
041 * Create an empty instance of <code>GetActiveEncryptionKeyResponse</code>.
042 * Only used for serialisation/deserialisation.
043 */
044 public GetActiveEncryptionKeyResponse() { }
045
046 /**
047 * Create an instance of <code>GetActiveEncryptionKeyResponse</code> in order to reply the given <code>request</code>.
048 *
049 * @param request the request to be replied (an instance of {@link GetActiveEncryptionKeyRequest}).
050 * @param keyID the identifier of the key to be sent to the app-server.
051 * @param keyEncodedEncrypted the {@link KeyEncryptionUtil#encryptKey(byte[], org.cumulus4j.crypto.Cipher) encrypted} symmetric secret key.
052 * @param activeUntilExcl the timestamp until which this key should be used for encryption. As soon as this timestamp
053 * is reached, the app-server should again send a {@link GetActiveEncryptionKeyRequest} to the key-manager.
054 */
055 public GetActiveEncryptionKeyResponse(Request request, long keyID, byte[] keyEncodedEncrypted, Date activeUntilExcl)
056 {
057 super(request, keyID, keyEncodedEncrypted);
058 this.activeUntilExcl = activeUntilExcl;
059 }
060
061 /**
062 * Get the moment in time until (excluding) which the key transported by this response should be used for encryption.
063 * After this timestamp (or more precisely when it is reached), the app-server should request it again.
064 * @return the moment in time until which the key transported by this response should be used for encryption.
065 * @see #setActiveUntilExcl(Date)
066 */
067 public Date getActiveUntilExcl() {
068 return activeUntilExcl;
069 }
070 /**
071 * Set the moment in time until (excluding) which the key transported by this response should be used for encryption.
072 * @param activeUntilExcl the moment in time until which the key transported by this response should be used for encryption.
073 * @see #getActiveUntilExcl()
074 */
075 public void setActiveUntilExcl(Date activeUntilExcl) {
076 this.activeUntilExcl = activeUntilExcl;
077 }
078 }