GordianKeccakParameters.java
/*
* GordianKnot: Security Suite
* Copyright 2012-2026. Tony Washer
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package io.github.tonywasher.joceanus.gordianknot.impl.ext.params;
import org.bouncycastle.crypto.CipherParameters;
import org.bouncycastle.util.Arrays;
/**
* Keccak Parameters.
* <p>
* Used for the following constructs
* <ul>
* <li>Kangaroo
* </ul>
*/
public class GordianKeccakParameters
implements CipherParameters {
/**
* The key.
*/
private byte[] theKey;
/**
* The personalisation.
*/
private byte[] thePersonal;
/**
* Obtain the key.
*
* @return the key
*/
public byte[] getKey() {
return Arrays.clone(theKey);
}
/**
* Obtain the personalisation.
*
* @return the personalisation
*/
public byte[] getPersonalisation() {
return Arrays.clone(thePersonal);
}
/**
* Parameter Builder.
*/
public static class GordianKeccakParametersBuilder {
/**
* The key.
*/
private byte[] theKey;
/**
* The personalisation.
*/
private byte[] thePersonal;
/**
* Set the key.
*
* @param pKey the key
* @return the Builder
*/
public GordianKeccakParametersBuilder setKey(final byte[] pKey) {
theKey = Arrays.clone(pKey);
return this;
}
/**
* Set the personalisation.
*
* @param pPersonal the personalisation
* @return the Builder
*/
public GordianKeccakParametersBuilder setPersonalisation(final byte[] pPersonal) {
thePersonal = Arrays.clone(pPersonal);
return this;
}
/**
* Build the parameters.
*
* @return the parameters
*/
public GordianKeccakParameters build() {
/* Create params */
final GordianKeccakParameters myParams = new GordianKeccakParameters();
/* Record key */
if (theKey != null) {
myParams.theKey = theKey;
}
/* Record personalisation */
if (thePersonal != null) {
myParams.thePersonal = thePersonal;
}
/* Return the parameters */
return myParams;
}
}
}