/**
* Copyright (c) 2014 Matthias Jaenicke <matthias.jaenicke@student.kit.edu>,
* Matthias Plappert <undkc@student.kit.edu>,
* Julien Duman <uncyc@student.kit.edu>,
* Christian Dreher <uaeef@student.kit.edu>,
* Wasilij Beskorovajnov <uajkm@student.kit.edu> and
* Aydin Tekin <aydin.tekin@student.kit.edu>
*
* Released under the MIT license (refer to LICENSE.md)
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package edu.kit.iks.Cryptographics.DiffieHellman;
import java.awt.Color;
/**
* The Model will keep some of our colors
* need in the Diffie-Hellman Key-Exchange Analogy.
*
* @author kai
*
*/
public class Model {
/**
* Our public color
*/
private Color publicColor;
/**
* Alices private color
*/
private Color alicePrivateColor;
/**
* Alices mixed color
*/
private Color aliceMixedColor;
/**
* Bobs private color
*/
private Color bobPrivateColor;
/**
* Bobs mixed color
*/
private Color bobMixedColor;
/**
* Constructor is empty, because
* values should be initialized with setter
*/
public Model() {
}
/**
* return the public color
* @return the public color
*/
public Color getPublicColor() {
return publicColor;
}
/**
* set the public color
* @param publicColor which color to set to
*/
public void setPublicColor(Color publicColor) {
this.publicColor = publicColor;
}
/**
* return alices private color
* @return alices private color
*/
public Color getAlicePrivateColor() {
return alicePrivateColor;
}
/**
* set alices private color
* @param alicePrivateColor
*/
public void setAlicePrivateColor(Color alicePrivateColor) {
this.alicePrivateColor = alicePrivateColor;
}
/**
* return alices mixed color
* @return alices mixed color, if it was set/mixed
*/
public Color getAliceMixedColor() {
return aliceMixedColor;
}
/**
* return bobs private color
* @return bobs private color
*/
public Color getBobPrivateColor() {
return bobPrivateColor;
}
/**
* set bobs private color
* @param bobPrivateColor the value to set bobs private color
*/
public void setBobPrivateColor(Color bobPrivateColor) {
this.bobPrivateColor = bobPrivateColor;
}
/**
* return bobs mixed color if it was computed
* @return bobs mixed color
*/
public Color getBobMixedColor() {
return bobMixedColor;
}
/**
* compute mixture of alices private and public color
* and save the color
*/
public void mixAlicePrivateAndPublic() {
this.aliceMixedColor = computeMixedColor(this.alicePrivateColor, this.publicColor);
}
/**
* compute mixture of bobs private and public color
* and save the color
*/
public void mixBobPrivateAndPublic() {
this.bobMixedColor = computeMixedColor(this.bobPrivateColor, publicColor);
}
/**
* compute mixture from two colors
* @param color the first color
* @param color2 the second color
* @return the mixture
*/
private Color computeMixedColor(Color color, Color color2) {
int r1 = color.getRed();
int r2 = color2.getRed();
int g1 = color.getGreen();
int g2 = color2.getGreen();
int b1 = color.getBlue();
int b2 = color2.getBlue();
return new Color((r1+r2)/2, (g1+g2)/2, (b1+b2)/2);
}
}