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 javax.xml.bind.annotation.XmlRootElement; 021 022 /** 023 * <p> 024 * {@link Response} implementation to send a specific symmetric secret key to the app-server. 025 * It is the response to a {@link GetKeyRequest}. 026 * </p> 027 * 028 * @author Marco หงุ่ยตระกูล-Schulze - marco at nightlabs dot de 029 * @see GetKeyRequest 030 */ 031 @XmlRootElement 032 public class GetKeyResponse extends Response 033 { 034 private static final long serialVersionUID = 1L; 035 036 private long keyID; 037 private byte[] keyEncodedEncrypted; 038 039 /** 040 * Create an empty instance of <code>GetKeyResponse</code>. 041 * Only used for serialisation/deserialisation. 042 */ 043 public GetKeyResponse() { } 044 045 /** 046 * Create an instance of <code>GetKeyResponse</code> in order to reply the given <code>request</code>. 047 * 048 * @param request the request to be replied (an instance of {@link GetActiveEncryptionKeyRequest}). 049 * @param keyID the identifier of the key to be sent to the app-server. 050 * @param keyEncodedEncrypted the {@link KeyEncryptionUtil#encryptKey(byte[], org.cumulus4j.crypto.Cipher) encrypted} symmetric secret key. 051 */ 052 public GetKeyResponse(Request request, long keyID, byte[] keyEncodedEncrypted) { 053 super(request); 054 055 if (keyEncodedEncrypted == null) 056 throw new IllegalArgumentException("keyEncodedEncrypted == null"); 057 058 this.keyID = keyID; 059 this.keyEncodedEncrypted = keyEncodedEncrypted; 060 } 061 062 /** 063 * Get the identifier of the symmetric secret key transported by this response. 064 * @return the identifier of the symmetric secret key transported by this response. 065 * @see #setKeyID(long) 066 */ 067 public long getKeyID() { 068 return keyID; 069 } 070 /** 071 * Set the identifier of the symmetric secret key transported by this response. 072 * @param keyID the identifier of the symmetric secret key transported by this response. 073 * @see #getKeyID() 074 */ 075 public void setKeyID(long keyID) { 076 this.keyID = keyID; 077 } 078 079 /** 080 * Get the {@link KeyEncryptionUtil#encryptKey(byte[], org.cumulus4j.crypto.Cipher) encrypted} symmetric secret key. 081 * @return the {@link KeyEncryptionUtil#encryptKey(byte[], org.cumulus4j.crypto.Cipher) encrypted} symmetric secret key. 082 * @see #setKeyEncodedEncrypted(byte[]) 083 */ 084 public byte[] getKeyEncodedEncrypted() { 085 return keyEncodedEncrypted; 086 } 087 /** 088 * Set the {@link KeyEncryptionUtil#encryptKey(byte[], org.cumulus4j.crypto.Cipher) encrypted} symmetric secret key. 089 * @param key the {@link KeyEncryptionUtil#encryptKey(byte[], org.cumulus4j.crypto.Cipher) encrypted} symmetric secret key. 090 * @see #getKeyEncodedEncrypted() 091 */ 092 public void setKeyEncodedEncrypted(byte[] key) { 093 this.keyEncodedEncrypted = key; 094 } 095 }