Merge branch 'master' into installation
diff --git a/3rdparty/not-yet-commons-ssl/pom.xml b/3rdparty/not-yet-commons-ssl/pom.xml
index 8f6c402..5a1b97f 100644
--- a/3rdparty/not-yet-commons-ssl/pom.xml
+++ b/3rdparty/not-yet-commons-ssl/pom.xml
@@ -12,8 +12,8 @@
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>org.apache.kerby</groupId>
@@ -87,8 +87,6 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
- <version>${junit.version}</version>
- <scope>test</scope>
</dependency>
</dependencies>
diff --git a/3rdparty/pom.xml b/3rdparty/pom.xml
index e9fb76e..e1fa253 100644
--- a/3rdparty/pom.xml
+++ b/3rdparty/pom.xml
@@ -12,7 +12,7 @@
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -30,4 +30,11 @@
<module>not-yet-commons-ssl</module>
</modules>
+ <dependencies>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ </dependencies>
+
</project>
diff --git a/kdc-tool/README b/kdc-tool/README
new file mode 100644
index 0000000..a261812
--- /dev/null
+++ b/kdc-tool/README
@@ -0,0 +1 @@
+This will contain all kinds of tools provided by or serving for Kerby KDC.
\ No newline at end of file
diff --git a/tool/pom.xml b/kdc-tool/kinit/pom.xml
similarity index 90%
rename from tool/pom.xml
rename to kdc-tool/kinit/pom.xml
index 6862b35..e51f31b 100644
--- a/tool/pom.xml
+++ b/kdc-tool/kinit/pom.xml
@@ -17,13 +17,13 @@
<parent>
<groupId>org.apache.kerby</groupId>
- <artifactId>kerby-all</artifactId>
+ <artifactId>kdc-tool</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
- <artifactId>tool</artifactId>
- <name>Tool</name>
- <description>Kerby KDC and client tools</description>
+ <artifactId>kinit</artifactId>
+ <name>Kinit</name>
+ <description>Kerby KDC kinit tool</description>
<dependencies>
<dependency>
diff --git a/tool/src/main/java/org/apache/kerberos/tool/Kinit.java b/kdc-tool/kinit/src/main/java/org/apache/kerby/kerberos/tool/Kinit.java
similarity index 100%
rename from tool/src/main/java/org/apache/kerberos/tool/Kinit.java
rename to kdc-tool/kinit/src/main/java/org/apache/kerby/kerberos/tool/Kinit.java
diff --git a/tool/pom.xml b/kdc-tool/pom.xml
similarity index 61%
copy from tool/pom.xml
copy to kdc-tool/pom.xml
index 6862b35..da3cb47 100644
--- a/tool/pom.xml
+++ b/kdc-tool/pom.xml
@@ -21,25 +21,13 @@
<version>1.0-SNAPSHOT</version>
</parent>
- <artifactId>tool</artifactId>
- <name>Tool</name>
- <description>Kerby KDC and client tools</description>
+ <artifactId>kdc-tool</artifactId>
+ <name>Kdc Tool Project</name>
+ <version>1.0-SNAPSHOT</version>
+ <packaging>pom</packaging>
- <dependencies>
- <dependency>
- <groupId>org.apache.kerby</groupId>
- <artifactId>kerby-config</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.kerby</groupId>
- <artifactId>kerb-client</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.kerby</groupId>
- <artifactId>kerby-token</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
+ <modules>
+ <module>kinit</module>
+ <module>token-tool</module>
+ </modules>
</project>
diff --git a/lib/kerby-token/pom.xml b/kdc-tool/token-tool/pom.xml
similarity index 83%
rename from lib/kerby-token/pom.xml
rename to kdc-tool/token-tool/pom.xml
index e15128c..10c3e1e 100644
--- a/lib/kerby-token/pom.xml
+++ b/kdc-tool/token-tool/pom.xml
@@ -19,12 +19,12 @@
<parent>
<groupId>org.apache.kerby</groupId>
- <artifactId>lib</artifactId>
+ <artifactId>kdc-tool</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
- <artifactId>kerby-token</artifactId>
- <name>Kerby-token Project</name>
+ <artifactId>token-tool</artifactId>
+ <name>Token Tool Project</name>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
@@ -36,6 +36,11 @@
</dependency>
<dependency>
<groupId>org.apache.kerby</groupId>
+ <artifactId>kerb-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.kerby</groupId>
<artifactId>kerby-asn1</artifactId>
<version>${project.version}</version>
</dependency>
diff --git a/lib/kerby-token/src/main/java/org/apache/kerby/token/AuthzDataEntry.java b/kdc-tool/token-tool/src/main/java/org/apache/kerby/token/AuthzDataEntry.java
similarity index 100%
rename from lib/kerby-token/src/main/java/org/apache/kerby/token/AuthzDataEntry.java
rename to kdc-tool/token-tool/src/main/java/org/apache/kerby/token/AuthzDataEntry.java
diff --git a/lib/kerby-token/src/main/java/org/apache/kerby/token/TokenCache.java b/kdc-tool/token-tool/src/main/java/org/apache/kerby/token/TokenCache.java
similarity index 100%
rename from lib/kerby-token/src/main/java/org/apache/kerby/token/TokenCache.java
rename to kdc-tool/token-tool/src/main/java/org/apache/kerby/token/TokenCache.java
diff --git a/lib/kerby-token/src/main/java/org/apache/kerby/token/TokenExtractor.java b/kdc-tool/token-tool/src/main/java/org/apache/kerby/token/TokenExtractor.java
similarity index 97%
rename from lib/kerby-token/src/main/java/org/apache/kerby/token/TokenExtractor.java
rename to kdc-tool/token-tool/src/main/java/org/apache/kerby/token/TokenExtractor.java
index 8e43384..2eed75c 100644
--- a/lib/kerby-token/src/main/java/org/apache/kerby/token/TokenExtractor.java
+++ b/kdc-tool/token-tool/src/main/java/org/apache/kerby/token/TokenExtractor.java
@@ -23,6 +23,7 @@
import com.sun.security.jgss.ExtendedGSSContext;
import com.sun.security.jgss.InquireType;
import org.apache.kerby.asn1.type.Asn1SequenceOf;
+import org.apache.kerby.kerberos.kerb.spec.pa.token.KerbToken;
import org.ietf.jgss.GSSContext;
import org.ietf.jgss.GSSException;
diff --git a/lib/kerby-token/src/main/java/org/apache/kerby/token/TokenTool.java b/kdc-tool/token-tool/src/main/java/org/apache/kerby/token/TokenTool.java
similarity index 98%
rename from lib/kerby-token/src/main/java/org/apache/kerby/token/TokenTool.java
rename to kdc-tool/token-tool/src/main/java/org/apache/kerby/token/TokenTool.java
index 2de1973..9946dfa 100644
--- a/lib/kerby-token/src/main/java/org/apache/kerby/token/TokenTool.java
+++ b/kdc-tool/token-tool/src/main/java/org/apache/kerby/token/TokenTool.java
@@ -23,6 +23,7 @@
import com.nimbusds.jwt.JWT;
import com.nimbusds.jwt.JWTClaimsSet;
import com.nimbusds.jwt.PlainJWT;
+import org.apache.kerby.kerberos.kerb.spec.pa.token.KerbToken;
import java.text.ParseException;
import java.util.*;
diff --git a/kerby-asn1/pom.xml b/kerby-asn1/pom.xml
index 281199e..427fe7e 100644
--- a/kerby-asn1/pom.xml
+++ b/kerby-asn1/pom.xml
@@ -12,8 +12,8 @@
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
@@ -32,13 +32,10 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
- <version>${junit.version}</version>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
- <version>${assertj.version}</version>
- <scope>test</scope>
</dependency>
</dependencies>
diff --git a/kerby-kdc/pom.xml b/kerby-kdc/pom.xml
index ec54b2a..5b575d3 100644
--- a/kerby-kdc/pom.xml
+++ b/kerby-kdc/pom.xml
@@ -12,7 +12,7 @@
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -49,8 +49,6 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
- <version>${junit.version}</version>
- <scope>test</scope>
</dependency>
</dependencies>
</project>
diff --git a/kerby-kerb/kerb-client/pom.xml b/kerby-kerb/kerb-client/pom.xml
index c4d1290..d64852d 100644
--- a/kerby-kerb/kerb-client/pom.xml
+++ b/kerby-kerb/kerb-client/pom.xml
@@ -57,4 +57,28 @@
<version>${project.version}</version>
</dependency>
</dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>2.2</version>
+ <executions>
+ <execution>
+ <id>package-all</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <configuration>
+ <descriptorRefs>
+ <descriptorRef>jar-with-dependencies</descriptorRef>
+ </descriptorRefs>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</project>
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
index 55e9b60..201566e 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbClient.java
@@ -23,23 +23,22 @@
import org.apache.kerby.event.EventHub;
import org.apache.kerby.event.EventWaiter;
import org.apache.kerby.kerberos.kerb.KrbErrorCode;
+import org.apache.kerby.kerberos.kerb.KrbErrorException;
+import org.apache.kerby.kerberos.kerb.KrbException;
import org.apache.kerby.kerberos.kerb.client.event.KrbClientEvent;
import org.apache.kerby.kerberos.kerb.client.event.KrbClientEventType;
import org.apache.kerby.kerberos.kerb.client.request.*;
import org.apache.kerby.kerberos.kerb.common.KrbErrorUtil;
import org.apache.kerby.kerberos.kerb.common.KrbStreamingDecoder;
-import org.apache.kerby.kerberos.kerb.KrbErrorException;
-import org.apache.kerby.kerberos.kerb.KrbException;
import org.apache.kerby.kerberos.kerb.spec.common.KrbError;
import org.apache.kerby.kerberos.kerb.spec.common.PrincipalName;
import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
-import org.apache.kerby.token.KerbToken;
-import org.apache.kerby.transport.Connector;
+import org.apache.kerby.kerberos.kerb.spec.pa.token.KerbToken;
+import org.apache.kerby.transport.Network;
import org.apache.kerby.transport.Transport;
import org.apache.kerby.transport.event.TransportEvent;
import org.apache.kerby.transport.event.TransportEventType;
-import org.apache.kerby.transport.tcp.TcpConnector;
import java.io.IOException;
import java.security.PrivateKey;
@@ -58,24 +57,41 @@
private KrbHandler krbHandler;
private KrbContext context;
- private KrbConfig config;
+ private String kdcHost;
+ private int kdcTcpPort;
+ private Boolean allowUdp;
+ private int kdcUdpPort;
+ private KrbConfig krbConfig;
/**
- *
+ * Default constructor.
+ */
+ public KrbClient() {
+ this(new KrbConfig());
+ }
+
+ /**
+ * Construct a KrbClient with host and port. The port can be TCP, UDP or
+ * both, but TCP will try first.
* @param kdcHost
* @param kdcPort
*/
- public KrbClient(String kdcHost, short kdcPort) {
+ public KrbClient(String kdcHost, int kdcPort) {
this(new KrbConfig());
setKdcHost(kdcHost);
- setKdcPort(kdcPort);
+ setKdcTcpPort(kdcPort);
+ setKdcUdpPort(kdcPort);
}
- public KrbClient(KrbConfig config) {
- this.config = config;
+ /**
+ * Construct with prepared KrbConfig
+ * @param krbConfig
+ */
+ public KrbClient(KrbConfig krbConfig) {
+ this.krbConfig = krbConfig;
this.context = new KrbContext();
- context.init(config);
+ context.init(krbConfig);
}
/**
@@ -86,20 +102,64 @@
context.setKdcRealm(realm);
}
- /**
- *
- * @param kdcHost
- */
- public void setKdcHost(String kdcHost) {
- context.setKdcHost(kdcHost);
+ private String getKdcHost() {
+ if (kdcHost != null) {
+ return kdcHost;
+ }
+ return krbConfig.getKdcHost();
+ }
+
+ private int getKdcTcpPort() {
+ if (kdcTcpPort > 0) {
+ return kdcTcpPort;
+ }
+ return krbConfig.getKdcTcpPort();
+ }
+
+ private boolean allowUdp() {
+ if (allowUdp != null) {
+ return allowUdp;
+ }
+ return krbConfig.allowKdcUdp();
+ }
+
+ private int getKdcUdpPort() {
+ if (kdcUdpPort > 0) {
+ return kdcUdpPort;
+ }
+ return krbConfig.getKdcUdpPort();
}
/**
- *
- * @param kdcPort
+ * Set KDC host.
+ * @param kdcHost
*/
- public void setKdcPort(short kdcPort) {
- context.setKdcPort(kdcPort);
+ public void setKdcHost(String kdcHost) {
+ this.kdcHost = kdcHost;
+ }
+
+ /**
+ * Set KDC tcp port.
+ * @param kdcTcpPort
+ */
+ public void setKdcTcpPort(int kdcTcpPort) {
+ this.kdcTcpPort = kdcTcpPort;
+ }
+
+ /**
+ * Set to allow UDP or not.
+ * @param allowUdp
+ */
+ public void setAllowUdp(boolean allowUdp) {
+ this.allowUdp = allowUdp;
+ }
+
+ /**
+ * Set KDC udp port. Only makes sense when allowUdp is set.
+ * @param kdcUdpPort
+ */
+ public void setKdcUdpPort(int kdcUdpPort) {
+ this.kdcUdpPort = kdcUdpPort;
}
/**
@@ -117,8 +177,9 @@
this.eventHub = new EventHub();
eventHub.register(krbHandler);
- Connector connector = new TcpConnector(new KrbStreamingDecoder());
- eventHub.register(connector);
+ Network network = new Network();
+ network.setStreamingDecoder(new KrbStreamingDecoder());
+ eventHub.register(network);
eventWaiter = eventHub.waitEvent(
TransportEventType.NEW_TRANSPORT,
@@ -128,7 +189,10 @@
eventHub.start();
- connector.connect(context.getKdcHost(), context.getKdcPort());
+ network.tcpConnect(getKdcHost(), getKdcTcpPort());
+ if (allowUdp()) {
+ network.udpConnect(getKdcHost(), getKdcUdpPort());
+ }
Event event = eventWaiter.waitEvent(TransportEventType.NEW_TRANSPORT);
transport = ((TransportEvent) event).getTransport();
}
@@ -141,7 +205,9 @@
* @throws KrbException
*/
public TgtTicket requestTgtTicket(String principal, KrbOptions options) throws KrbException {
- if (options == null) options = new KrbOptions();
+ if (options == null) {
+ options = new KrbOptions();
+ }
AsRequest asRequest = new AsRequest(context);
asRequest.setKrbOptions(options);
@@ -158,7 +224,9 @@
*/
public TgtTicket requestTgtTicket(String principal, String password,
KrbOptions options) throws KrbException {
- if (options == null) options = new KrbOptions();
+ if (options == null) {
+ options = new KrbOptions();
+ }
AsRequest asRequest = new AsRequestWithPasswd(context);
options.add(KrbOption.USER_PASSWD, password);
@@ -177,7 +245,9 @@
*/
public TgtTicket requestTgtTicket(String principal, Certificate certificate,
PrivateKey privateKey, KrbOptions options) throws KrbException {
- if (options == null) options = new KrbOptions();
+ if (options == null) {
+ options = new KrbOptions();
+ }
AsRequestWithCert asRequest = new AsRequestWithCert(context);
options.add(KrbOption.PKINIT_X509_CERTIFICATE, certificate);
@@ -193,7 +263,9 @@
* @throws KrbException
*/
public TgtTicket requestTgtTicket(KrbOptions options) throws KrbException {
- if (options == null) options = new KrbOptions();
+ if (options == null) {
+ options = new KrbOptions();
+ }
AsRequestWithCert asRequest = new AsRequestWithCert(context);
options.add(KrbOption.PKINIT_X509_ANONYMOUS);
@@ -213,7 +285,9 @@
*/
public TgtTicket requestTgtTicket(String principal, KerbToken token,
KrbOptions options) throws KrbException {
- if (options == null) options = new KrbOptions();
+ if (options == null) {
+ options = new KrbOptions();
+ }
AsRequestWithToken asRequest = new AsRequestWithToken(context);
options.add(KrbOption.TOKEN_USER_ID_TOKEN, token);
@@ -232,7 +306,9 @@
*/
public ServiceTicket requestServiceTicket(String clientPrincipal, String password,
String serverPrincipal, KrbOptions options) throws KrbException {
- if (options == null) options = new KrbOptions();
+ if (options == null) {
+ options = new KrbOptions();
+ }
TgtTicket tgt = requestTgtTicket(clientPrincipal, password, options);
return requestServiceTicket(tgt, serverPrincipal, options);
@@ -249,7 +325,9 @@
*/
public ServiceTicket requestServiceTicket(String clientPrincipal, KerbToken token,
String serverPrincipal, KrbOptions options) throws KrbException {
- if (options == null) options = new KrbOptions();
+ if (options == null) {
+ options = new KrbOptions();
+ }
TgtTicket tgt = requestTgtTicket(clientPrincipal, token, options);
return requestServiceTicket(tgt, serverPrincipal, options);
@@ -299,7 +377,9 @@
*/
public ServiceTicket requestServiceTicket(TgtTicket tgt, String serverPrincipal,
KrbOptions options) throws KrbException {
- if (options == null) options = new KrbOptions();
+ if (options == null) {
+ options = new KrbOptions();
+ }
TgsRequest ticketReq = new TgsRequest(context, tgt);
ticketReq.setServerPrincipal(new PrincipalName(serverPrincipal));
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfig.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfig.java
index e523c12..9317424 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfig.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfig.java
@@ -40,15 +40,55 @@
return conf.getBoolean(KrbConfigKey.KRB_DEBUG);
}
+ /**
+ * Get KDC host name
+ * @return
+ */
public String getKdcHost() {
return conf.getString(KrbConfigKey.KDC_HOST);
}
- public short getKdcPort() {
+ /**
+ * Get KDC port, as both TCP and UDP ports
+ * @return
+ */
+ public int getKdcPort() {
Integer kdcPort = conf.getInt(KrbConfigKey.KDC_PORT);
return kdcPort.shortValue();
}
+ /**
+ * Get KDC TCP port
+ * @return
+ */
+ public int getKdcTcpPort() {
+ Integer kdcPort = conf.getInt(KrbConfigKey.KDC_TCP_PORT);
+ if (kdcPort > 0) {
+ return kdcPort.shortValue();
+ }
+ return getKdcPort();
+ }
+
+ /**
+ * Is to allow UDP for KDC
+ * @return true to allow UDP, false otherwise
+ */
+ public boolean allowKdcUdp() {
+ return conf.getBoolean(KrbConfigKey.KDC_ALLOW_UDP);
+ }
+
+ /**
+ * Get KDC UDP port
+ * @return
+ */
+ public int getKdcUdpPort() {
+ Integer kdcPort = conf.getInt(KrbConfigKey.KDC_UDP_PORT);
+ if (kdcPort > 0) {
+ return kdcPort.shortValue();
+ }
+ return getKdcPort();
+ }
+
public String getKdcRealm() {
return conf.getString(KrbConfigKey.KDC_REALM);
}
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfigKey.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfigKey.java
index 111cc67..bbd3623 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfigKey.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbConfigKey.java
@@ -25,6 +25,9 @@
KRB_DEBUG(true),
KDC_HOST("localhost"),
KDC_PORT(8015),
+ KDC_ALLOW_UDP(true),
+ KDC_UDP_PORT(8016),
+ KDC_TCP_PORT(8015),
KDC_DOMAIN("example.com"),
KDC_REALM("EXAMPLE.COM"),
TGS_PRINCIPAL("krbtgt@EXAMPLE.COM"),
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbContext.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbContext.java
index 12b155f..e9de501 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbContext.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbContext.java
@@ -27,7 +27,7 @@
private String kdcRealm;
private KrbConfig config;
private String kdcHost;
- private short kdcPort;
+ private int kdcPort;
private long timeout = 10L;
private PreauthHandler preauthHandler;
@@ -48,14 +48,14 @@
this.kdcHost = kdcHost;
}
- public short getKdcPort() {
+ public int getKdcPort() {
if (kdcPort > 0) {
return kdcPort;
}
return config.getKdcPort();
}
- public void setKdcPort(short kdcPort) {
+ public void setKdcPort(int kdcPort) {
this.kdcPort = kdcPort;
}
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbOptions.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbOptions.java
index 06bd361..b3333ca 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbOptions.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/KrbOptions.java
@@ -24,7 +24,7 @@
public class KrbOptions {
- private Map<KrbOption, KrbOption> options = new HashMap<KrbOption, KrbOption>(4);
+ private final Map<KrbOption, KrbOption> options = new HashMap<KrbOption, KrbOption>(4);
public void add(KrbOption option) {
if (option != null) {
@@ -33,8 +33,10 @@
}
public void add(KrbOption option, Object optionValue) {
- option.setValue(optionValue);
- add(option);
+ if (option != null) {
+ option.setValue(optionValue);
+ add(option);
+ }
}
public boolean contains(KrbOption option) {
@@ -58,7 +60,7 @@
public String getStringOption(KrbOption option) {
Object value = getOptionValue(option);
- if (value != null && value instanceof String) {
+ if (value instanceof String) {
return (String) value;
}
return null;
@@ -66,30 +68,26 @@
public boolean getBooleanOption(KrbOption option) {
Object value = getOptionValue(option);
- if (value != null) {
- if (value instanceof String) {
- String strVal = (String) value;
- if (strVal.equalsIgnoreCase("true") ||
- strVal.equalsIgnoreCase("yes") ||
- strVal.equals("1")) {
- return true;
- }
- } else if (value instanceof Boolean) {
- return (Boolean) value;
+ if (value instanceof String) {
+ String strVal = (String) value;
+ if (strVal.equalsIgnoreCase("true") ||
+ strVal.equalsIgnoreCase("yes") ||
+ strVal.equals("1")) {
+ return true;
}
+ } else if (value instanceof Boolean) {
+ return (Boolean) value;
}
return false;
}
public int getIntegerOption(KrbOption option) {
Object value = getOptionValue(option);
- if (value != null) {
- if (value instanceof String) {
- String strVal = (String) value;
- return Integer.valueOf(strVal);
- } else if (value instanceof Integer) {
- return (Integer) value;
- }
+ if (value instanceof String) {
+ String strVal = (String) value;
+ return Integer.valueOf(strVal);
+ } else if (value instanceof Integer) {
+ return (Integer) value;
}
return -1;
}
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthContext.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthContext.java
index aa943e4..e622103 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthContext.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthContext.java
@@ -34,8 +34,8 @@
private UserResponser userResponser = new UserResponser();
private PaDataType selectedPaType;
private PaDataType allowedPaType;
- private List<PaDataType> triedPaTypes = new ArrayList<PaDataType>(1);
- private List<PreauthHandle> handles = new ArrayList<PreauthHandle>(5);
+ private final List<PaDataType> triedPaTypes = new ArrayList<PaDataType>(1);
+ private final List<PreauthHandle> handles = new ArrayList<PreauthHandle>(5);
public PreauthContext() {
this.selectedPaType = PaDataType.NONE;
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthHandler.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthHandler.java
index 39fe3a8..319179e 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthHandler.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/PreauthHandler.java
@@ -158,7 +158,7 @@
for (PaDataEntry pae : inPadata.getElements()) {
// Restrict real mechanisms to the chosen one if we have one
- if (real >0 && !preauthContext.isPaTypeAllowed(pae.getPaDataType())) {
+ if (real > 0 && !preauthContext.isPaTypeAllowed(pae.getPaDataType())) {
continue;
}
@@ -190,10 +190,11 @@
PaData inPadata, PaData outPadata) {
PreauthContext preauthContext = kdcRequest.getPreauthContext();
- PreauthHandle handle;
for (PaDataEntry pae : inPadata.getElements()) {
- handle = findHandle(kdcRequest, pae.getPaDataType());
- if (handle == null) continue;
+ PreauthHandle handle = findHandle(kdcRequest, pae.getPaDataType());
+ if (handle == null) {
+ continue;
+ }
boolean gotData = handle.tryAgain(kdcRequest,
pae.getPaDataType(), preauthContext.getErrorPaData(), outPadata);
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/UserResponser.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/UserResponser.java
index 695e111..eeaad10 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/UserResponser.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/UserResponser.java
@@ -24,7 +24,7 @@
public class UserResponser {
- private List<UserResponseItem> items = new ArrayList<UserResponseItem>(1);
+ private final List<UserResponseItem> items = new ArrayList<UserResponseItem>(1);
/**
* Let customize an interface like CMD or WEB UI to selectively respond all the questions
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenContext.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenContext.java
index e1696dc..f46956c 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenContext.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenContext.java
@@ -19,7 +19,7 @@
*/
package org.apache.kerby.kerberos.kerb.client.preauth.token;
-import org.apache.kerby.token.KerbToken;
+import org.apache.kerby.kerberos.kerb.spec.pa.token.KerbToken;
public class TokenContext {
diff --git a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenPreauth.java b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenPreauth.java
index f67ad71..b912311 100644
--- a/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenPreauth.java
+++ b/kerby-kerb/kerb-client/src/main/java/org/apache/kerby/kerberos/kerb/client/preauth/token/TokenPreauth.java
@@ -33,7 +33,7 @@
import org.apache.kerby.kerberos.kerb.spec.pa.PaData;
import org.apache.kerby.kerberos.kerb.spec.pa.PaDataEntry;
import org.apache.kerby.kerberos.kerb.spec.pa.PaDataType;
-import org.apache.kerby.token.KerbToken;
+import org.apache.kerby.kerberos.kerb.spec.pa.token.KerbToken;
import java.util.Collections;
import java.util.List;
diff --git a/kerby-kerb/kerb-client/src/main/resources/kdc-krb5.conf b/kerby-kerb/kerb-client/src/test/resources/kdc-krb5.conf
similarity index 100%
rename from kerby-kerb/kerb-client/src/main/resources/kdc-krb5.conf
rename to kerby-kerb/kerb-client/src/test/resources/kdc-krb5.conf
diff --git a/kerby-kerb/kerb-client/src/main/resources/kdc.ldiff b/kerby-kerb/kerb-client/src/test/resources/kdc.ldiff
similarity index 100%
rename from kerby-kerb/kerb-client/src/main/resources/kdc.ldiff
rename to kerby-kerb/kerb-client/src/test/resources/kdc.ldiff
diff --git a/kerby-kerb/kerb-client/src/main/resources/krb5.conf b/kerby-kerb/kerb-client/src/test/resources/krb5.conf
similarity index 100%
rename from kerby-kerb/kerb-client/src/main/resources/krb5.conf
rename to kerby-kerb/kerb-client/src/test/resources/krb5.conf
diff --git a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestKerberos.java b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestKerberos.java
index 42e5feb..c8c7f0f 100644
--- a/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestKerberos.java
+++ b/kerby-kerb/kerb-core-test/src/test/java/org/apache/kerby/kerberos/kerb/codec/test/TestKerberos.java
@@ -21,6 +21,7 @@
import org.apache.kerby.kerberos.kerb.codec.kerberos.KerberosTicket;
import org.apache.kerby.kerberos.kerb.codec.kerberos.KerberosToken;
+import org.apache.kerby.kerberos.kerb.crypto.EncryptionHandler;
import org.apache.kerby.kerberos.kerb.spec.common.EncryptionKey;
import org.junit.Before;
import org.junit.Test;
@@ -138,6 +139,10 @@
@Test
public void testAes256Ticket() throws Exception {
+ if(!EncryptionHandler.isAES256Enabled()) {
+ return;
+ }
+
KerberosToken token = null;
token = new KerberosToken(aes256Token, aes256Key);
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/CheckSumType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/CheckSumType.java
index b7be286..ef25212 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/CheckSumType.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/CheckSumType.java
@@ -91,6 +91,14 @@
return displayName;
}
+ /**
+ * Is the type uses AES256 or not
+ * @return true if uses AES256, false otherwise.
+ */
+ public boolean usesAES256() {
+ return name.contains("aes256");
+ }
+
public static CheckSumType fromValue(Integer value) {
if (value != null) {
for (KrbEnum e : values()) {
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/EncryptionType.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/EncryptionType.java
index 45c2427..58ee648 100644
--- a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/EncryptionType.java
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/common/EncryptionType.java
@@ -108,6 +108,14 @@
return displayName;
}
+ /**
+ * Is the type uses AES256 or not
+ * @return true if uses AES256, false otherwise.
+ */
+ public boolean usesAES256() {
+ return name.contains("aes256");
+ }
+
public static EncryptionType fromValue(Integer value) {
if (value != null) {
for (KrbEnum e : values()) {
diff --git a/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/KerbToken.java b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/KerbToken.java
new file mode 100644
index 0000000..360c979
--- /dev/null
+++ b/kerby-kerb/kerb-core/src/main/java/org/apache/kerby/kerberos/kerb/spec/pa/token/KerbToken.java
@@ -0,0 +1,50 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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 org.apache.kerby.kerberos.kerb.spec.pa.token;
+
+import java.util.Map;
+
+/**
+ * This is the token definition according to TokenPreauth draft.
+ */
+public class KerbToken {
+
+ private Map<String, Object> attributes;
+
+ public KerbToken(Map<String, Object> attributes) {
+ this.attributes = attributes;
+ }
+
+ public Map<String, Object> getAttributes() {
+ return attributes;
+ }
+
+ public String getPrincipal() {
+ return (String) attributes.get("sub");
+ }
+
+ public String[] getGroups() {
+ String grp = (String) attributes.get("group");
+ if (grp != null) {
+ return new String[] { grp };
+ }
+ return new String[0];
+ }
+}
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/AbstractCryptoTypeHandler.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/AbstractCryptoTypeHandler.java
index 71103c5..1a809a7 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/AbstractCryptoTypeHandler.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/AbstractCryptoTypeHandler.java
@@ -51,15 +51,19 @@
protected static boolean checksumEqual(byte[] cksum1,
byte[] cksum2, int cksum2Start, int len) {
- if (cksum1 == cksum2)
+ if (cksum1 == cksum2) {
return true;
- if (cksum1 == null || cksum2 == null)
+ }
+ if (cksum1 == null || cksum2 == null) {
return false;
+ }
if (len <= cksum2.length && len <= cksum1.length) {
- for (int i = 0; i < len; i++)
- if (cksum1[i] != cksum2[cksum2Start + i])
+ for (int i = 0; i < len; i++) {
+ if (cksum1[i] != cksum2[cksum2Start + i]) {
return false;
+ }
+ }
} else {
return false;
}
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/EncryptionHandler.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/EncryptionHandler.java
index e645a32..aece35b 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/EncryptionHandler.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/EncryptionHandler.java
@@ -19,6 +19,8 @@
*/
package org.apache.kerby.kerberos.kerb.crypto;
+import javax.crypto.Cipher;
+
import org.apache.kerby.kerberos.kerb.KrbErrorCode;
import org.apache.kerby.kerberos.kerb.crypto.enc.*;
import org.apache.kerby.kerberos.kerb.KrbException;
@@ -32,6 +34,21 @@
*/
public class EncryptionHandler {
+ private static boolean isAES256Enabled = false;
+
+ static {
+ try {
+ isAES256Enabled = Cipher.getMaxAllowedKeyLength("AES") >= 256;
+ } catch (Exception e) {
+ // should not happen
+ }
+
+ }
+
+ public static boolean isAES256Enabled() {
+ return isAES256Enabled;
+ }
+
public static EncryptionType getEncryptionType(String eType) throws KrbException {
EncryptionType result = EncryptionType.fromName(eType);
return result;
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/CmacKcCheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/CmacKcCheckSum.java
index 6a51d29..90f676f 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/CmacKcCheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/CmacKcCheckSum.java
@@ -30,7 +30,6 @@
}
protected byte[] mac(byte[] Kc, byte[] data, int start, int len) throws KrbException {
- byte[] mac = Cmac.cmac(encProvider(), Kc, data, start, len);
- return mac;
+ return Cmac.cmac(encProvider(), Kc, data, start, len);
}
}
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacKcCheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacKcCheckSum.java
index 03b8c0b..3f2fd84 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacKcCheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacKcCheckSum.java
@@ -31,7 +31,6 @@
}
protected byte[] mac(byte[] Kc, byte[] data, int start, int len) throws KrbException {
- byte[] hmac = Hmac.hmac(hashProvider(), Kc, data, start, len);
- return hmac;
+ return Hmac.hmac(hashProvider(), Kc, data, start, len);
}
}
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacMd5Rc4CheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacMd5Rc4CheckSum.java
index 3123f71..6a588b1 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacMd5Rc4CheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/HmacMd5Rc4CheckSum.java
@@ -55,11 +55,10 @@
protected byte[] doChecksumWithKey(byte[] data, int start, int len,
byte[] key, int usage) throws KrbException {
- byte[] Ksign = null;
byte[] signKey = "signaturekey".getBytes();
byte[] newSignKey = new byte[signKey.length + 1];
System.arraycopy(signKey, 0, newSignKey, 0, signKey.length);
- Ksign = Hmac.hmac(hashProvider(), key, newSignKey);
+ byte[] Ksign = Hmac.hmac(hashProvider(), key, newSignKey);
byte[] salt = Rc4.getSalt(usage, false);
@@ -67,7 +66,6 @@
hashProvider().hash(data, start, len);
byte[] hashTmp = hashProvider().output();
- byte[] hmac = Hmac.hmac(hashProvider(), Ksign, hashTmp);
- return hmac;
+ return Hmac.hmac(hashProvider(), Ksign, hashTmp);
}
}
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/KcCheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/KcCheckSum.java
index 2e7db3b..9550c08 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/KcCheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/KcCheckSum.java
@@ -34,14 +34,12 @@
@Override
protected byte[] doChecksumWithKey(byte[] data, int start, int len,
byte[] key, int usage) throws KrbException {
- byte[] Kc;
byte[] constant = new byte[5];
BytesUtil.int2bytes(usage, constant, 0, true);
constant[4] = (byte) 0x99;
- Kc = ((DkKeyMaker) keyMaker()).dk(key, constant);
+ byte[] Kc = ((DkKeyMaker) keyMaker()).dk(key, constant);
- byte[] mac = mac(Kc, data, start, len);
- return mac;
+ return mac(Kc, data, start, len);
}
protected abstract byte[] mac(byte[] Kc, byte[] data, int start,
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/Md5HmacRc4CheckSum.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/Md5HmacRc4CheckSum.java
index 038631e..26f9e9d 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/Md5HmacRc4CheckSum.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/cksum/Md5HmacRc4CheckSum.java
@@ -63,7 +63,6 @@
hashProvider().hash(data, start, len);
byte[] hashTmp = hashProvider().output();
- byte[] hmac = Hmac.hmac(hashProvider(), Ksign, hashTmp);
- return hmac;
+ return Hmac.hmac(hashProvider(), Ksign, hashTmp);
}
}
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/AbstractEncTypeHandler.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/AbstractEncTypeHandler.java
index 99828c8..9708de7 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/AbstractEncTypeHandler.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/AbstractEncTypeHandler.java
@@ -123,7 +123,7 @@
byte[] workBuffer = new byte[workLength];
System.arraycopy(data, 0, workBuffer, headerLen, data.length);
- int [] workLens = new int[] {confounderLen, checksumLen,
+ int[] workLens = new int[] {confounderLen, checksumLen,
inputLen, paddingLen};
encryptWith(workBuffer, workLens, key, iv, usage);
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/KeKiEnc.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/KeKiEnc.java
index b1bc7dc..9f2e5ec 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/KeKiEnc.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/KeKiEnc.java
@@ -47,16 +47,16 @@
int inputLen = workLens[2];
int paddingLen = workLens[3];
- byte[] Ke, Ki;
byte[] constant = new byte[5];
constant[0] = (byte) ((usage>>24)&0xff);
constant[1] = (byte) ((usage>>16)&0xff);
constant[2] = (byte) ((usage>>8)&0xff);
constant[3] = (byte) (usage&0xff);
constant[4] = (byte) 0xaa;
- Ke = ((DkKeyMaker) keyMaker()).dk(key, constant);
+
+ byte[] Ke = ((DkKeyMaker) keyMaker()).dk(key, constant);
constant[4] = (byte) 0x55;
- Ki = ((DkKeyMaker) keyMaker()).dk(key, constant);
+ byte[] Ki = ((DkKeyMaker) keyMaker()).dk(key, constant);
/**
* Instead of E(Confounder | Checksum | Plaintext | Padding),
@@ -79,8 +79,7 @@
}
// checksum & encrypt
- byte[] checksum;
- checksum = makeChecksum(Ki, tmpEnc, checksumLen);
+ byte[] checksum = makeChecksum(Ki, tmpEnc, checksumLen);
encProvider().encrypt(Ke, iv, tmpEnc);
System.arraycopy(tmpEnc, 0, workBuffer, 0, tmpEnc.length);
@@ -94,13 +93,12 @@
int checksumLen = workLens[1];
int dataLen = workLens[2];
- byte[] Ke, Ki;
byte[] constant = new byte[5];
BytesUtil.int2bytes(usage, constant, 0, true);
constant[4] = (byte) 0xaa;
- Ke = ((DkKeyMaker) keyMaker()).dk(key, constant);
+ byte[] Ke = ((DkKeyMaker) keyMaker()).dk(key, constant);
constant[4] = (byte) 0x55;
- Ki = ((DkKeyMaker) keyMaker()).dk(key, constant);
+ byte[] Ki = ((DkKeyMaker) keyMaker()).dk(key, constant);
// decrypt and verify checksum
@@ -111,9 +109,8 @@
System.arraycopy(workBuffer, confounderLen + dataLen,
checksum, 0, checksumLen);
- byte[] newChecksum;
encProvider().decrypt(Ke, iv, tmpEnc);
- newChecksum = makeChecksum(Ki, tmpEnc, checksumLen);
+ byte[] newChecksum = makeChecksum(Ki, tmpEnc, checksumLen);
if (! checksumEqual(checksum, newChecksum)) {
throw new KrbException(KrbErrorCode.KRB_AP_ERR_BAD_INTEGRITY);
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Rc4HmacEnc.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Rc4HmacEnc.java
index 9d9e90d..1347fc9 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Rc4HmacEnc.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/Rc4HmacEnc.java
@@ -97,8 +97,7 @@
protected byte[] makeUsageKey(byte[] key, int usage) throws KrbException {
byte[] salt = Rc4.getSalt(usage, exportable);
- byte[] usageKey = Hmac.hmac(hashProvider(), key, salt);
- return usageKey;
+ return Hmac.hmac(hashProvider(), key, salt);
}
protected byte[] makeEncKey(byte[] usageKey, byte[] checksum) throws KrbException {
@@ -111,8 +110,7 @@
}
}
- byte[] encKey = Hmac.hmac(hashProvider(), tmpKey, checksum);
- return encKey;
+ return Hmac.hmac(hashProvider(), tmpKey, checksum);
}
@Override
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/provider/DesProvider.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/provider/DesProvider.java
index 0a03027..75a1cde 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/provider/DesProvider.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/enc/provider/DesProvider.java
@@ -22,8 +22,6 @@
import org.apache.kerby.kerberos.kerb.KrbException;
import javax.crypto.Cipher;
-import javax.crypto.SecretKey;
-import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.GeneralSecurityException;
@@ -47,10 +45,7 @@
IvParameterSpec params = new IvParameterSpec(cipherState);
SecretKeySpec skSpec = new SecretKeySpec(key, "DES");
try {
- SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");
- SecretKey sk = (SecretKey) skSpec;
-
- cipher.init(encrypt ? Cipher.ENCRYPT_MODE : Cipher.DECRYPT_MODE, sk, params);
+ cipher.init(encrypt ? Cipher.ENCRYPT_MODE : Cipher.DECRYPT_MODE, skSpec, params);
byte[] output = cipher.doFinal(input);
System.arraycopy(output, 0, input, 0, output.length);
@@ -74,13 +69,10 @@
byte[] output = null;
try {
- SecretKeyFactory skf = SecretKeyFactory.getInstance("DES");
- // SecretKey sk = skf.generateSecret(skSpec);
- SecretKey sk = (SecretKey) skSpec;
- cipher.init(Cipher.ENCRYPT_MODE, sk, params);
+ cipher.init(Cipher.ENCRYPT_MODE, skSpec, params);
for (int i = 0; i < data.length / 8; i++) {
output = cipher.doFinal(data, i * 8, 8);
- cipher.init(Cipher.ENCRYPT_MODE, sk, (new IvParameterSpec(output)));
+ cipher.init(Cipher.ENCRYPT_MODE, skSpec, (new IvParameterSpec(output)));
}
}
catch (GeneralSecurityException e) {
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/AesKeyMaker.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/AesKeyMaker.java
index f777a12..7f1ac1f 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/AesKeyMaker.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/AesKeyMaker.java
@@ -57,9 +57,7 @@
}
byte[] tmpKey = random2Key(random);
- byte[] result = dk(tmpKey, KERBEROS_CONSTANT);
-
- return result;
+ return dk(tmpKey, KERBEROS_CONSTANT);
}
}
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/CamelliaKeyMaker.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/CamelliaKeyMaker.java
index a790a38..83f6f59 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/CamelliaKeyMaker.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/CamelliaKeyMaker.java
@@ -59,15 +59,12 @@
}
byte[] tmpKey = random2Key(random);
- byte[] result = dk(tmpKey, KERBEROS_CONSTANT);
-
- return result;
+ return dk(tmpKey, KERBEROS_CONSTANT);
}
private String getPepper() {
int keySize = encProvider().keySize();
- String pepper = keySize == 16 ? "camellia128-cts-cmac" : "camellia256-cts-cmac";
- return pepper;
+ return keySize == 16 ? "camellia128-cts-cmac" : "camellia256-cts-cmac";
}
/*
@@ -79,7 +76,6 @@
int blocksize = encProvider().blockSize();
int keyInuptSize = encProvider().keyInputSize();
byte[] keyBytes = new byte[keyInuptSize];
- byte[] Ki;
int len = 0;
// K(i-1): the previous block of PRF output, initially all-zeros.
@@ -93,18 +89,16 @@
// four-byte big-endian binary string giving the output length
len += 4;
- Ki = new byte[len];
+ byte[] Ki = new byte[len];
System.arraycopy(constant, 0, Ki, blocksize + 4, constant.length);
BytesUtil.int2bytes(keyInuptSize * 8, Ki, len - 4, true);
- int i, n = 0;
- byte[] tmp;
- for (i = 1, n = 0; n < keyInuptSize; i++) {
+ for (int i = 1, n = 0; n < keyInuptSize; i++) {
// Update the block counter
BytesUtil.int2bytes(i, Ki, blocksize, true);
// Compute a CMAC checksum, update Ki with the result
- tmp = Cmac.cmac(encProvider(), key, Ki);
+ byte[] tmp = Cmac.cmac(encProvider(), key, Ki);
System.arraycopy(tmp, 0, Ki, 0, blocksize);
if (n + blocksize >= keyInuptSize) {
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/Des3KeyMaker.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/Des3KeyMaker.java
index 363eb29..28c29ac 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/Des3KeyMaker.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/Des3KeyMaker.java
@@ -49,11 +49,9 @@
* 8 key bytes, then compute the parity bits. Do this three times.
*/
byte[] key = new byte[encProvider().keySize()];
- int nthByte;
- int tmp;
for (int i = 0; i < 3; i++) {
System.arraycopy(randomBits, i * 7, key, i * 8, 7);
- nthByte = i * 8;
+ int nthByte = i * 8;
key[nthByte + 7] = (byte) (((key[nthByte + 0] & 1) << 1) |
((key[nthByte + 1] & 1) << 2) |
@@ -64,7 +62,7 @@
((key[nthByte + 6] & 1) << 7));
for (int j = 0; j < 8; j++) {
- tmp = key[nthByte + j] & 0xfe;
+ int tmp = key[nthByte + j] & 0xfe;
tmp |= (Integer.bitCount(tmp) & 1) ^ 1;
key[nthByte + j] = (byte) tmp;
}
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DesKeyMaker.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DesKeyMaker.java
index daf15c2..d8e01d9 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DesKeyMaker.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DesKeyMaker.java
@@ -52,8 +52,7 @@
throw new KrbException(error);
}
- byte[] key = toKey(string, salt);
- return key;
+ return toKey(string, salt);
}
/**
@@ -233,7 +232,6 @@
=>
11000001 00011111 00111000 01101000 10001010 11001000 01101101 00101111
*/
- byte bt;
for (int i = 0; i < 8; i++) {
bits56[i] <<= 1;
}
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DkKeyMaker.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DkKeyMaker.java
index ad38932..c279d7a 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DkKeyMaker.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/key/DkKeyMaker.java
@@ -55,7 +55,7 @@
System.arraycopy(constant, 0, Ki, 0, constant.length);
}
- int n = 0, len;
+ int n = 0;
while (n < keyInuptSize) {
encProvider().encrypt(key, Ki);
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/BytesUtil.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/BytesUtil.java
index 1c58293..c85d8c5 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/BytesUtil.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/BytesUtil.java
@@ -162,21 +162,19 @@
}
public static void xor(byte[] input, int offset, byte[] output) {
- int a, b;
for (int i = 0; i < output.length / 4; ++i) {
- a = BytesUtil.bytes2int(input, offset + i * 4, true);
- b = BytesUtil.bytes2int(output, i * 4, true);
+ int a = BytesUtil.bytes2int(input, offset + i * 4, true);
+ int b = BytesUtil.bytes2int(output, i * 4, true);
b = a ^ b;
BytesUtil.int2bytes(b, output, i * 4, true);
}
}
public static void xor(byte[] a, byte[] b, byte[] output) {
- int av, bv, v;
for (int i = 0; i < a.length / 4; ++i) {
- av = BytesUtil.bytes2int(a, i * 4, true);
- bv = BytesUtil.bytes2int(b, i * 4, true);
- v = av ^ bv;
+ int av = BytesUtil.bytes2int(a, i * 4, true);
+ int bv = BytesUtil.bytes2int(b, i * 4, true);
+ int v = av ^ bv;
BytesUtil.int2bytes(v, output, i * 4, true);
}
}
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Crc32.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Crc32.java
index 5807429..c12fe2a 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Crc32.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Crc32.java
@@ -67,9 +67,8 @@
public static long crc(long initial, byte[] data, int start, int len) {
long c = initial;
- int idx;
for (int i = 0; i < len; i++) {
- idx = (int) ((data[start + i] ^ c) & 0xff);
+ int idx = (int) ((data[start + i] ^ c) & 0xff);
c = ((c & 0xffffffffL) >>> 8) ^ table[idx]; // why?
}
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Hmac.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Hmac.java
index cebb3a1..45f8951 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Hmac.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Hmac.java
@@ -76,7 +76,6 @@
hashProvider.hash(outerPaddedKey);
hashProvider.hash(tmp);
- tmp = hashProvider.output();
- return tmp;
+ return hashProvider.output();
}
}
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Nfold.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Nfold.java
index 4d9bcba..82c9aac 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Nfold.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Nfold.java
@@ -45,32 +45,29 @@
int inBytesNum = inBytes.length; // count inBytes byte
int outBytesNum = size; // count inBytes byte
- int a, b, c, lcm;
- a = outBytesNum;
- b = inBytesNum;
+ int a = outBytesNum;
+ int b = inBytesNum;
while (b != 0) {
- c = b;
+ int c = b;
b = a % b;
a = c;
}
- lcm = (outBytesNum * inBytesNum) / a;
+ int lcm = (outBytesNum * inBytesNum) / a;
byte[] outBytes = new byte[outBytesNum];
Arrays.fill(outBytes, (byte)0);
int tmpByte = 0;
- int msbit, i, tmp;
-
- for (i = lcm-1; i >= 0; i--) {
+ for (int i = lcm - 1; i >= 0; i--) {
// first, start with the msbit inBytes the first, unrotated byte
- tmp = ((inBytesNum<<3)-1);
+ int tmp = ((inBytesNum<<3)-1);
// then, for each byte, shift to the right for each repetition
tmp += (((inBytesNum<<3)+13)*(i/inBytesNum));
// last, pick outBytes the correct byte within that shifted repetition
tmp += ((inBytesNum-(i%inBytesNum)) << 3);
- msbit = tmp % (inBytesNum << 3);
+ int msbit = tmp % (inBytesNum << 3);
// pull outBytes the byte value itself
tmp = ((((inBytes[((inBytesNum - 1)-(msbit >>> 3)) % inBytesNum] & 0xff) << 8) |
@@ -88,7 +85,7 @@
// if there's a carry bit left over, add it back inBytes
if (tmpByte != 0) {
- for (i = outBytesNum-1; i >= 0; i--) {
+ for (int i = outBytesNum-1; i >= 0; i--) {
// do the addition
tmpByte += (outBytes[i] & 0xff);
outBytes[i] = (byte) (tmpByte & 0xff);
diff --git a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Pbkdf.java b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Pbkdf.java
index 7dac089..646fc79 100644
--- a/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Pbkdf.java
+++ b/kerby-kerb/kerb-crypto/src/main/java/org/apache/kerby/kerberos/kerb/crypto/util/Pbkdf.java
@@ -33,8 +33,6 @@
SecretKeyFactory skf =
SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
SecretKey key = skf.generateSecret(ks);
- byte[] result = key.getEncoded();
-
- return result;
+ return key.getEncoded();
}
}
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CamelliaEncTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CamelliaEncTest.java
index a84652d..7ebdb05 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CamelliaEncTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CamelliaEncTest.java
@@ -70,7 +70,7 @@
outputs.add("==========");
List<String> newLines = expectedLines;
- assertThat(expectedLines).as("Comparing new lines with expected lines").isEqualTo(outputs);
+ assertThat(newLines).as("Comparing new lines with expected lines").isEqualTo(outputs);
}
private void testWith(int keySize) throws KrbException {
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumTest.java
index c47d9d4..89246e3 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumTest.java
@@ -71,7 +71,6 @@
private void testWith(CksumTest testCase) throws Exception {
byte[] knownChecksum = HexUtil.hex2bytes(testCase.knownChecksum);
byte[] plainData = testCase.plainText.getBytes();
- CheckSum newCksum;
if (! CheckSumHandler.isImplemented(testCase.cksumType)) {
System.err.println("Checksum type not supported yet: "
@@ -81,7 +80,7 @@
EncryptionKey key = new EncryptionKey(EncryptionType.DES_CBC_CRC, TESTKEY);
- newCksum = CheckSumHandler.checksumWithKey(testCase.cksumType, plainData, key.getKeyData(), KeyUsage.NONE);
+ CheckSum newCksum = CheckSumHandler.checksumWithKey(testCase.cksumType, plainData, key.getKeyData(), KeyUsage.NONE);
if (CheckSumHandler.verifyWithKey(newCksum, plainData, key.getKeyData(), KeyUsage.NONE)) {
System.err.println("Checksum verifying is OK for " + testCase.cksumType.getName());
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumsTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumsTest.java
index 796cc11..4739cfd 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumsTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CheckSumsTest.java
@@ -111,6 +111,10 @@
@Test
public void testCheckSums_HMAC_SHA1_96_AES256() throws Exception {
+ if(!EncryptionHandler.isAES256Enabled()) {
+ return;
+ }
+
performTest(new CksumTest(
"fourteen",
CheckSumType.HMAC_SHA1_96_AES256, EncryptionType.AES256_CTS_HMAC_SHA1_96, 4,
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CmacTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CmacTest.java
index e210709..f8f7a39 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CmacTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/CmacTest.java
@@ -66,10 +66,9 @@
byte[] key = HexUtil.hex2bytes(keyBytes);
byte[] input = HexUtil.hex2bytes(inputBytes);
EncryptProvider encProvider = new Camellia128Provider();
- byte[] result;
// test 1
- result = Cmac.cmac(encProvider, key, input, 0, 0);
+ byte[] result = Cmac.cmac(encProvider, key, input, 0, 0);
assertThat(result).as("Test 1").isEqualTo(HexUtil.hex2bytes(cmac1));
// test 2
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/DecryptionTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/DecryptionTest.java
index 6f766ec..e688803 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/DecryptionTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/DecryptionTest.java
@@ -712,6 +712,10 @@
*/
@Test
public void testDecryptAES256_CTS_HMAC_SHA1_96_0() {
+ if(!EncryptionHandler.isAES256Enabled()) {
+ return;
+ }
+
TestCase testCase = new TestCase(
EncryptionType.AES256_CTS_HMAC_SHA1_96,
"", 0,
@@ -730,6 +734,10 @@
*/
@Test
public void testDecryptAES256_CTS_HMAC_SHA1_96_1() {
+ if(!EncryptionHandler.isAES256Enabled()) {
+ return;
+ }
+
TestCase testCase = new TestCase(
EncryptionType.AES256_CTS_HMAC_SHA1_96,
"1", 1,
@@ -748,6 +756,10 @@
*/
@Test
public void testDecryptAES256_CTS_HMAC_SHA1_96_9() {
+ if(!EncryptionHandler.isAES256Enabled()) {
+ return;
+ }
+
TestCase testCase = new TestCase(
EncryptionType.AES256_CTS_HMAC_SHA1_96,
"9 bytesss", 2,
@@ -767,6 +779,9 @@
*/
@Test
public void testDecryptAES256_CTS_HMAC_SHA1_96_13() {
+ if(!EncryptionHandler.isAES256Enabled()) {
+ return;
+ }
TestCase testCase = new TestCase(
EncryptionType.AES256_CTS_HMAC_SHA1_96,
"13 bytes byte", 3,
@@ -786,6 +801,10 @@
*/
@Test
public void testDecryptAES256_CTS_HMAC_SHA1_96_30() {
+ if(!EncryptionHandler.isAES256Enabled()) {
+ return;
+ }
+
TestCase testCase = new TestCase(
EncryptionType.AES256_CTS_HMAC_SHA1_96,
"30 bytes bytes bytes bytes byt", 4,
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/KeyDeriveTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/KeyDeriveTest.java
index e2932b5..cf36588 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/KeyDeriveTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/KeyDeriveTest.java
@@ -52,125 +52,186 @@
}
}
- static TestCase[] testCases = new TestCase[] {
- /* Kc, Ke, Kei for a DES3 key */
- new TestCase(
- EncryptionType.DES3_CBC_SHA1,
- "850BB51358548CD05E86768C313E3BFE" +
- "F7511937DCF72C3E",
- "0000000299",
- "F78C496D16E6C2DAE0E0B6C24057A84C" +
- "0426AEEF26FD6DCE"
- ),
- new TestCase(
- EncryptionType.DES3_CBC_SHA1,
- "850BB51358548CD05E86768C313E3BFE" +
- "F7511937DCF72C3E",
- "00000002AA",
- "5B5723D0B634CB684C3EBA5264E9A70D" +
- "52E683231AD3C4CE"
- ),
- new TestCase(
- EncryptionType.DES3_CBC_SHA1,
- "850BB51358548CD05E86768C313E3BFE" +
- "F7511937DCF72C3E",
- "0000000255",
- "A77C94980E9B7345A81525C423A737CE" +
- "67F4CD91B6B3DA45"
- ),
+ @Test
+ public void testKeyDerive_DES3_CBC_SHA1_299() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.DES3_CBC_SHA1,
+ "850BB51358548CD05E86768C313E3BFE" +
+ "F7511937DCF72C3E",
+ "0000000299",
+ "F78C496D16E6C2DAE0E0B6C24057A84C" +
+ "0426AEEF26FD6DCE"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_DES3_CBC_SHA1_2AA() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.DES3_CBC_SHA1,
+ "850BB51358548CD05E86768C313E3BFE" +
+ "F7511937DCF72C3E",
+ "00000002AA",
+ "5B5723D0B634CB684C3EBA5264E9A70D" +
+ "52E683231AD3C4CE"
+ ));
- /* Kc, Ke, Ki for an AES-128 key */
- new TestCase(
- EncryptionType.AES128_CTS_HMAC_SHA1_96,
- "42263C6E89F4FC28B8DF68EE09799F15",
- "0000000299",
- "34280A382BC92769B2DA2F9EF066854B"
- ),
- new TestCase(
- EncryptionType.AES128_CTS_HMAC_SHA1_96,
- "42263C6E89F4FC28B8DF68EE09799F15",
- "00000002AA",
- "5B14FC4E250E14DDF9DCCF1AF6674F53"
- ),
- new TestCase(
- EncryptionType.AES128_CTS_HMAC_SHA1_96,
- "42263C6E89F4FC28B8DF68EE09799F15",
- "0000000255",
- "4ED31063621684F09AE8D89991AF3E8F"
- ),
+ }
+
+ @Test
+ public void testKeyDerive_DES3_CBC_SHA1_255() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.DES3_CBC_SHA1,
+ "850BB51358548CD05E86768C313E3BFE" +
+ "F7511937DCF72C3E",
+ "0000000255",
+ "A77C94980E9B7345A81525C423A737CE" +
+ "67F4CD91B6B3DA45"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_AES128_CTS_HMAC_SHA1_96_299() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.AES128_CTS_HMAC_SHA1_96,
+ "42263C6E89F4FC28B8DF68EE09799F15",
+ "0000000299",
+ "34280A382BC92769B2DA2F9EF066854B"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_AES128_CTS_HMAC_SHA1_96_2AA() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.AES128_CTS_HMAC_SHA1_96,
+ "42263C6E89F4FC28B8DF68EE09799F15",
+ "00000002AA",
+ "5B14FC4E250E14DDF9DCCF1AF6674F53"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_AES128_CTS_HMAC_SHA1_96_255() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.AES128_CTS_HMAC_SHA1_96,
+ "42263C6E89F4FC28B8DF68EE09799F15",
+ "0000000255",
+ "4ED31063621684F09AE8D89991AF3E8F"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_AES256_CTS_HMAC_SHA1_96_299() throws Exception {
+ if(!EncryptionHandler.isAES256Enabled()) {
+ return;
+ }
- /* Kc, Ke, Ki for an AES-256 key */
- new TestCase(
- EncryptionType.AES256_CTS_HMAC_SHA1_96,
- "FE697B52BC0D3CE14432BA036A92E65B" +
- "BB52280990A2FA27883998D72AF30161",
- "0000000299",
- "BFAB388BDCB238E9F9C98D6A878304F0" +
- "4D30C82556375AC507A7A852790F4674"
- ),
- new TestCase(
- EncryptionType.AES256_CTS_HMAC_SHA1_96,
- "FE697B52BC0D3CE14432BA036A92E65B" +
- "BB52280990A2FA27883998D72AF30161",
- "00000002AA",
- "C7CFD9CD75FE793A586A542D87E0D139" +
- "6F1134A104BB1A9190B8C90ADA3DDF37"
- ),
- new TestCase(
- EncryptionType.AES256_CTS_HMAC_SHA1_96,
- "FE697B52BC0D3CE14432BA036A92E65B" +
- "BB52280990A2FA27883998D72AF30161",
- "0000000255",
- "97151B4C76945063E2EB0529DC067D97" +
- "D7BBA90776D8126D91F34F3101AEA8BA"
- ),
+ performTest(new TestCase(
+ EncryptionType.AES256_CTS_HMAC_SHA1_96,
+ "FE697B52BC0D3CE14432BA036A92E65B" +
+ "BB52280990A2FA27883998D72AF30161",
+ "0000000299",
+ "BFAB388BDCB238E9F9C98D6A878304F0" +
+ "4D30C82556375AC507A7A852790F4674"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_AES256_CTS_HMAC_SHA1_96_2AA() throws Exception {
+ if(!EncryptionHandler.isAES256Enabled()) {
+ return;
+ }
- /* Kc, Ke, Ki for a Camellia-128 key */
- new TestCase(
- EncryptionType.CAMELLIA128_CTS_CMAC,
- "57D0297298FFD9D35DE5A47FB4BDE24B",
- "0000000299",
- "D155775A209D05F02B38D42A389E5A56"
- ),
- new TestCase(
- EncryptionType.CAMELLIA128_CTS_CMAC,
- "57D0297298FFD9D35DE5A47FB4BDE24B",
- "00000002AA",
- "64DF83F85A532F17577D8C37035796AB"
- ),
- new TestCase(
- EncryptionType.CAMELLIA128_CTS_CMAC,
- "57D0297298FFD9D35DE5A47FB4BDE24B",
- "0000000255",
- "3E4FBDF30FB8259C425CB6C96F1F4635"
- ),
+ performTest(new TestCase(
+ EncryptionType.AES256_CTS_HMAC_SHA1_96,
+ "FE697B52BC0D3CE14432BA036A92E65B" +
+ "BB52280990A2FA27883998D72AF30161",
+ "00000002AA",
+ "C7CFD9CD75FE793A586A542D87E0D139" +
+ "6F1134A104BB1A9190B8C90ADA3DDF37"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_AES256_CTS_HMAC_SHA1_96_255() throws Exception {
+ if(!EncryptionHandler.isAES256Enabled()) {
+ return;
+ }
- /* Kc, Ke, Ki for a Camellia-256 key */
- new TestCase(
- EncryptionType.CAMELLIA256_CTS_CMAC,
- "B9D6828B2056B7BE656D88A123B1FAC6" +
- "8214AC2B727ECF5F69AFE0C4DF2A6D2C",
- "0000000299",
- "E467F9A9552BC7D3155A6220AF9C1922" +
- "0EEED4FF78B0D1E6A1544991461A9E50"
- ),
- new TestCase(
- EncryptionType.CAMELLIA256_CTS_CMAC,
- "B9D6828B2056B7BE656D88A123B1FAC6" +
- "8214AC2B727ECF5F69AFE0C4DF2A6D2C",
- "00000002AA",
- "412AEFC362A7285FC3966C6A5181E760" +
- "5AE675235B6D549FBFC9AB6630A4C604"
- ),
- new TestCase(
- EncryptionType.CAMELLIA256_CTS_CMAC,
- "B9D6828B2056B7BE656D88A123B1FAC6" +
- "8214AC2B727ECF5F69AFE0C4DF2A6D2C",
- "0000000255",
- "FA624FA0E523993FA388AEFDC67E67EB" +
- "CD8C08E8A0246B1D73B0D1DD9FC582B0"
- )
- };
+ performTest(new TestCase(
+ EncryptionType.AES256_CTS_HMAC_SHA1_96,
+ "FE697B52BC0D3CE14432BA036A92E65B" +
+ "BB52280990A2FA27883998D72AF30161",
+ "0000000255",
+ "97151B4C76945063E2EB0529DC067D97" +
+ "D7BBA90776D8126D91F34F3101AEA8BA"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_CAMELLIA128_CTS_CMAC_299() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.CAMELLIA128_CTS_CMAC,
+ "57D0297298FFD9D35DE5A47FB4BDE24B",
+ "0000000299",
+ "D155775A209D05F02B38D42A389E5A56"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_CAMELLIA128_CTS_CMAC_2AA() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.CAMELLIA128_CTS_CMAC,
+ "57D0297298FFD9D35DE5A47FB4BDE24B",
+ "00000002AA",
+ "64DF83F85A532F17577D8C37035796AB"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_CAMELLIA128_CTS_CMAC_255() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.CAMELLIA128_CTS_CMAC,
+ "57D0297298FFD9D35DE5A47FB4BDE24B",
+ "0000000255",
+ "3E4FBDF30FB8259C425CB6C96F1F4635"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_CAMELLIA256_CTS_CMAC_299() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.CAMELLIA256_CTS_CMAC,
+ "B9D6828B2056B7BE656D88A123B1FAC6" +
+ "8214AC2B727ECF5F69AFE0C4DF2A6D2C",
+ "0000000299",
+ "E467F9A9552BC7D3155A6220AF9C1922" +
+ "0EEED4FF78B0D1E6A1544991461A9E50"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_CAMELLIA256_CTS_CMAC_2AA() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.CAMELLIA256_CTS_CMAC,
+ "B9D6828B2056B7BE656D88A123B1FAC6" +
+ "8214AC2B727ECF5F69AFE0C4DF2A6D2C",
+ "00000002AA",
+ "412AEFC362A7285FC3966C6A5181E760" +
+ "5AE675235B6D549FBFC9AB6630A4C604"
+ ));
+ }
+
+ @Test
+ public void testKeyDerive_CAMELLIA256_CTS_CMAC_255() throws Exception {
+ performTest(new TestCase(
+ EncryptionType.CAMELLIA256_CTS_CMAC,
+ "B9D6828B2056B7BE656D88A123B1FAC6" +
+ "8214AC2B727ECF5F69AFE0C4DF2A6D2C",
+ "0000000255",
+ "FA624FA0E523993FA388AEFDC67E67EB" +
+ "CD8C08E8A0246B1D73B0D1DD9FC582B0"
+ ));
+ }
static DkKeyMaker getKeyMaker(EncryptionType encType) {
switch (encType) {
@@ -189,41 +250,26 @@
}
}
- @Test
- public void testDeriveKeys() {
- boolean overallResult = true;
-
- for (TestCase tc : testCases) {
- System.err.println("Key deriving test for " + tc.encType.getName());
- try {
- if (! testWith(tc)) {
- overallResult = false;
- }
- } catch (Exception e) {
- e.printStackTrace();
- overallResult = false;
- }
- }
-
- if (!overallResult) {
- fail(null);
- }
- }
-
- private boolean testWith(TestCase testCase) throws Exception {
+ /**
+ * Perform key derive tests using the testCase data object
+ * @param testCase
+ * @throws Exception
+ */
+ private static void performTest(TestCase testCase) throws Exception {
byte[] answer = HexUtil.hex2bytes(testCase.answer);
byte[] inkey = HexUtil.hex2bytes(testCase.inkey);
byte[] constant = HexUtil.hex2bytes(testCase.constant);
byte[] outkey;
-
+
DkKeyMaker km = getKeyMaker(testCase.encType);
outkey = km.dk(inkey, constant);
if (! Arrays.equals(answer, outkey)) {
System.err.println("failed with:");
System.err.println("outKey:" + HexUtil.bytesToHex(outkey));
System.err.println("answer:" + testCase.answer);
- return false;
- }
- return true;
+ fail("KeyDerive test failed for " + testCase.encType.getName());
+ } else {
+ System.out.println("KeyDerive test OK for " + testCase.encType.getName());
+ }
}
}
diff --git a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/String2keyTest.java b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/String2keyTest.java
index 3fbe38f..ae0c9b5 100644
--- a/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/String2keyTest.java
+++ b/kerby-kerb/kerb-crypto/src/test/java/org/apache/kerby/kerberos/kerb/crypto/String2keyTest.java
@@ -269,6 +269,10 @@
@Test
public void test_AES256_CTS_HMAC_SHA1_96_0() {
+ if(!EncryptionHandler.isAES256Enabled()) {
+ return;
+ }
+
performTest(new TestCase(
EncryptionType.AES256_CTS_HMAC_SHA1_96,
"password",
@@ -281,6 +285,10 @@
@Test
public void test_AES256_CTS_HMAC_SHA1_96_1() {
+ if(!EncryptionHandler.isAES256Enabled()) {
+ return;
+ }
+
performTest(new TestCase(
EncryptionType.AES256_CTS_HMAC_SHA1_96,
"password",
@@ -293,6 +301,10 @@
@Test
public void test_AES256_CTS_HMAC_SHA1_96_2() {
+ if(!EncryptionHandler.isAES256Enabled()) {
+ return;
+ }
+
performTest(new TestCase(
EncryptionType.AES256_CTS_HMAC_SHA1_96,
"password",
@@ -305,6 +317,10 @@
@Test
public void test_AES256_CTS_HMAC_SHA1_96_3() {
+ if(!EncryptionHandler.isAES256Enabled()) {
+ return;
+ }
+
performTest(new TestCase(
EncryptionType.AES256_CTS_HMAC_SHA1_96,
"password",
@@ -317,6 +333,10 @@
@Test
public void test_AES256_CTS_HMAC_SHA1_96_4() {
+ if(!EncryptionHandler.isAES256Enabled()) {
+ return;
+ }
+
performTest(new TestCase(
EncryptionType.AES256_CTS_HMAC_SHA1_96,
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
@@ -331,6 +351,10 @@
@Test
public void test_AES256_CTS_HMAC_SHA1_96_5() {
+ if(!EncryptionHandler.isAES256Enabled()) {
+ return;
+ }
+
performTest(new TestCase(
EncryptionType.AES256_CTS_HMAC_SHA1_96,
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
@@ -343,6 +367,10 @@
@Test
public void test_AES256_CTS_HMAC_SHA1_96_6() {
+ if(!EncryptionHandler.isAES256Enabled()) {
+ return;
+ }
+
performTest(new TestCase(
EncryptionType.AES256_CTS_HMAC_SHA1_96,
toUtf8("F09D849E"),
@@ -356,6 +384,10 @@
// Check for KRB5_ERR_BAD_S2K_PARAMS return when weak iteration counts are forbidden
@Test
public void test_AES256_CTS_HMAC_SHA1_96_7() {
+ if(!EncryptionHandler.isAES256Enabled()) {
+ return;
+ }
+
performTest(new TestCase(
EncryptionType.AES256_CTS_HMAC_SHA1_96,
toUtf8("F09D849E"),
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/ComplexAttribute.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/ComplexAttribute.java
index d56bb66..7372c01 100644
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/ComplexAttribute.java
+++ b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/ComplexAttribute.java
@@ -24,7 +24,7 @@
import java.util.List;
public class ComplexAttribute extends Attribute {
- private List<String> values;
+ private final List<String> values;
public ComplexAttribute(String name) {
super(name);
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/Identity.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/Identity.java
index 18da5f8..59dcd92 100644
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/Identity.java
+++ b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/Identity.java
@@ -23,7 +23,7 @@
public class Identity {
private String name;
- private Map<String, Attribute> attributes;
+ private final Map<String, Attribute> attributes;
public Identity(String name) {
this.name = name;
@@ -53,7 +53,7 @@
public String getSimpleAttribute(String name) {
Attribute attr = attributes.get(name);
if (! (attr instanceof SimpleAttribute)) {
- throw new RuntimeException("Not simple attribute");
+ throw new RuntimeException("Not a simple attribute");
}
return ((SimpleAttribute) attr).getValue();
}
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/KrbIdentity.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/KrbIdentity.java
index 8acd430..6402248 100644
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/KrbIdentity.java
+++ b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/KrbIdentity.java
@@ -33,8 +33,8 @@
private PrincipalName principal;
private int keyVersion = 1;
private int kdcFlags = 0;
- private boolean disabled = false;
- private boolean locked = false;
+ private boolean disabled;
+ private boolean locked;
private KerberosTime expireTime = KerberosTime.NEVER;
private KerberosTime createdTime = KerberosTime.now();
diff --git a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/InMemoryIdentityBackend.java b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/InMemoryIdentityBackend.java
index 3ef6140..d5e8738 100644
--- a/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/InMemoryIdentityBackend.java
+++ b/kerby-kerb/kerb-identity/src/main/java/org/apache/kerby/kerberos/kerb/identity/backend/InMemoryIdentityBackend.java
@@ -28,7 +28,7 @@
public class InMemoryIdentityBackend extends AbstractIdentityBackend {
- private Map<String, KrbIdentity> identities;
+ private final Map<String, KrbIdentity> identities;
public InMemoryIdentityBackend() {
this.identities = new HashMap<String, KrbIdentity>();
diff --git a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java
index f16fa08..dff0f6f 100644
--- a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java
+++ b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java
@@ -25,7 +25,7 @@
import static org.assertj.core.api.Assertions.assertThat;
-public class KdcTest extends KdcTestBase {
+public abstract class KdcTest extends KdcTestBase {
private String password = "123456";
@@ -35,16 +35,17 @@
kdcServer.createPrincipal(clientPrincipal, password);
}
- @Test
- public void testKdc() throws Exception {
+ protected void performKdcTest() throws Exception {
kdcServer.start();
assertThat(kdcServer.isStarted()).isTrue();
krbClnt.init();
- TgtTicket tgt = krbClnt.requestTgtTicket(clientPrincipal, password, null);
+ TgtTicket tgt = krbClnt.requestTgtTicket(clientPrincipal,
+ password, null);
assertThat(tgt).isNotNull();
- ServiceTicket tkt = krbClnt.requestServiceTicket(tgt, serverPrincipal, null);
+ ServiceTicket tkt = krbClnt.requestServiceTicket(tgt,
+ serverPrincipal, null);
assertThat(tkt).isNotNull();
}
}
\ No newline at end of file
diff --git a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTestBase.java b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTestBase.java
index 1751474..900b7f4 100644
--- a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTestBase.java
+++ b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTestBase.java
@@ -19,6 +19,9 @@
*/
package org.apache.kerby.kerberos.kerb.server;
+import java.io.IOException;
+import java.net.ServerSocket;
+
import org.apache.kerby.kerberos.kerb.client.KrbClient;
import org.junit.After;
import org.junit.Before;
@@ -30,14 +33,24 @@
protected String serverPrincipal;
protected String hostname = "localhost";
- protected short tcpPort = 8088;
- protected short udpPort = 8089;
+ protected int tcpPort = -1;
+ protected int udpPort = -1;
protected TestKdcServer kdcServer;
protected KrbClient krbClnt;
+ protected boolean allowUdp() {
+ return true;
+ }
+
@Before
public void setUp() throws Exception {
+ tcpPort = getServerPort();
+
+ if (allowUdp()) {
+ udpPort = getServerPort();
+ }
+
setUpKdcServer();
setUpClient();
}
@@ -45,8 +58,14 @@
protected void setUpKdcServer() throws Exception {
kdcServer = new TestKdcServer();
kdcServer.setKdcHost(hostname);
- kdcServer.setKdcTcpPort(tcpPort);
- kdcServer.setKdcUdpPort(udpPort);
+ if (tcpPort > 0) {
+ kdcServer.setKdcTcpPort(tcpPort);
+ }
+ kdcServer.setAllowUdp(allowUdp());
+ if (udpPort > 0) {
+ kdcServer.setKdcUdpPort(udpPort);
+ }
+
kdcServer.init();
kdcRealm = kdcServer.getKdcRealm();
@@ -57,12 +76,38 @@
}
protected void setUpClient() throws Exception {
- krbClnt = new KrbClient(hostname, tcpPort);
+ krbClnt = new KrbClient();
+
+ krbClnt.setKdcHost(hostname);
+ if (tcpPort > 0) {
+ krbClnt.setKdcTcpPort(tcpPort);
+ }
+ krbClnt.setAllowUdp(allowUdp());
+ if (udpPort > 0) {
+ krbClnt.setKdcUdpPort(udpPort);
+ }
+
krbClnt.setTimeout(5);
krbClnt.setKdcRealm(kdcServer.getKdcRealm());
}
+ /**
+ * Get a server socket point for testing usage, either TCP or UDP.
+ * @return server socket point
+ */
+ private static int getServerPort() {
+ int serverPort = 0;
+ try {
+ ServerSocket serverSocket = new ServerSocket(0);
+ serverPort = serverSocket.getLocalPort();
+ serverSocket.close();
+ } catch (IOException e) {
+ throw new RuntimeException("Failed to get a server socket point");
+ }
+
+ return serverPort;
+ }
@After
public void tearDown() throws Exception {
diff --git a/lib/kerby-token/src/main/java/org/apache/kerby/token/KerbToken.java b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/OnlyTcpKdcTest.java
similarity index 60%
copy from lib/kerby-token/src/main/java/org/apache/kerby/token/KerbToken.java
copy to kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/OnlyTcpKdcTest.java
index be4a127..e7e956b 100644
--- a/lib/kerby-token/src/main/java/org/apache/kerby/token/KerbToken.java
+++ b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/OnlyTcpKdcTest.java
@@ -17,31 +17,19 @@
* under the License.
*
*/
-package org.apache.kerby.token;
+package org.apache.kerby.kerberos.kerb.server;
-import java.util.Map;
+import org.junit.Test;
-public class KerbToken {
+public class OnlyTcpKdcTest extends KdcTest {
- private Map<String, Object> attributes;
-
- public KerbToken(Map<String, Object> attributes) {
- this.attributes = attributes;
- }
-
- public Map<String, Object> getAttributes() {
- return attributes;
- }
-
- public String getPrincipal() {
- return (String) attributes.get("sub");
- }
-
- public String[] getGroups() {
- String grp = (String) attributes.get("group");
- if (grp != null) {
- return new String[] { grp };
+ @Override
+ protected boolean allowUdp() {
+ return false;
}
- return new String[0];
- }
-}
+
+ @Test
+ public void testKdc() throws Exception {
+ performKdcTest();
+ }
+}
\ No newline at end of file
diff --git a/lib/kerby-token/src/main/java/org/apache/kerby/token/KerbToken.java b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/TcpAndUdpKdcTest.java
similarity index 60%
rename from lib/kerby-token/src/main/java/org/apache/kerby/token/KerbToken.java
rename to kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/TcpAndUdpKdcTest.java
index be4a127..673eeb4 100644
--- a/lib/kerby-token/src/main/java/org/apache/kerby/token/KerbToken.java
+++ b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/TcpAndUdpKdcTest.java
@@ -17,31 +17,19 @@
* under the License.
*
*/
-package org.apache.kerby.token;
+package org.apache.kerby.kerberos.kerb.server;
-import java.util.Map;
+import org.junit.Test;
-public class KerbToken {
+public class TcpAndUdpKdcTest extends KdcTest {
- private Map<String, Object> attributes;
-
- public KerbToken(Map<String, Object> attributes) {
- this.attributes = attributes;
- }
-
- public Map<String, Object> getAttributes() {
- return attributes;
- }
-
- public String getPrincipal() {
- return (String) attributes.get("sub");
- }
-
- public String[] getGroups() {
- String grp = (String) attributes.get("group");
- if (grp != null) {
- return new String[] { grp };
+ @Override
+ protected boolean allowUdp() {
+ return true;
}
- return new String[0];
- }
-}
+
+ @Test
+ public void testKdc() throws Exception {
+ performKdcTest();
+ }
+}
\ No newline at end of file
diff --git a/kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/TestKdcServer.java b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcServer.java
similarity index 100%
rename from kerby-kerb/kerb-kdc-test/src/main/java/org/apache/kerby/kerberos/kerb/server/TestKdcServer.java
rename to kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcServer.java
diff --git a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/WithTokenKdcTest.java b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/WithTokenKdcTest.java
index b0b0489..46be468 100644
--- a/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/WithTokenKdcTest.java
+++ b/kerby-kerb/kerb-kdc-test/src/test/java/org/apache/kerby/kerberos/kerb/server/WithTokenKdcTest.java
@@ -22,7 +22,7 @@
import org.apache.kerby.kerberos.kerb.KrbException;
import org.apache.kerby.kerberos.kerb.spec.ticket.ServiceTicket;
import org.apache.kerby.kerberos.kerb.spec.ticket.TgtTicket;
-import org.apache.kerby.token.KerbToken;
+import org.apache.kerby.kerberos.kerb.spec.pa.token.KerbToken;
import static org.assertj.core.api.Assertions.assertThat;
diff --git a/kerby-kerb/kerb-server/pom.xml b/kerby-kerb/kerb-server/pom.xml
index f421ef6..98a347b 100644
--- a/kerby-kerb/kerb-server/pom.xml
+++ b/kerby-kerb/kerb-server/pom.xml
@@ -58,4 +58,28 @@
<version>${project.version}</version>
</dependency>
</dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <version>2.2</version>
+ <executions>
+ <execution>
+ <id>package-all</id>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ <configuration>
+ <descriptorRefs>
+ <descriptorRef>jar-with-dependencies</descriptorRef>
+ </descriptorRefs>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
</project>
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfig.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfig.java
index 86fc6ad..a3a4703 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfig.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfig.java
@@ -61,14 +61,36 @@
return conf.getString(KdcConfigKey.KDC_HOST);
}
- public short getKdcTcpPort() {
- Integer kdcTcpPort = KrbConfHelper.getIntUnderSection(conf, KdcConfigKey.KDC_TCP_PORT);
- return kdcTcpPort.shortValue();
+ public int getKdcPort() {
+ Integer kdcPort = KrbConfHelper.getIntUnderSection(conf,
+ KdcConfigKey.KDC_PORT);
+ return kdcPort.intValue();
}
- public short getKdcUdpPort() {
- Integer kdcUdpPort = KrbConfHelper.getIntUnderSection(conf, KdcConfigKey.KDC_UDP_PORT);
- return kdcUdpPort.shortValue();
+ public int getKdcTcpPort() {
+ Integer kdcTcpPort = KrbConfHelper.getIntUnderSection(conf,
+ KdcConfigKey.KDC_TCP_PORT);
+ if (kdcTcpPort > 0) {
+ return kdcTcpPort.intValue();
+ }
+ return getKdcPort();
+ }
+
+ /**
+ * Is to allow UDP for KDC
+ * @return true to allow UDP, false otherwise
+ */
+ public boolean allowKdcUdp() {
+ return conf.getBoolean(KdcConfigKey.KDC_ALLOW_UDP);
+ }
+
+ public int getKdcUdpPort() {
+ Integer kdcUdpPort = KrbConfHelper.getIntUnderSection(conf,
+ KdcConfigKey.KDC_UDP_PORT);
+ if (kdcUdpPort > 0) {
+ return kdcUdpPort.intValue();
+ }
+ return getKdcPort();
}
public String getKdcRealm() {
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfigKey.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfigKey.java
index 6180698..6792d06 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfigKey.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcConfigKey.java
@@ -24,8 +24,10 @@
public enum KdcConfigKey implements SectionConfigKey {
KRB_DEBUG(true),
WORK_DIR,
- KDC_SERVICE_NAME("Haox_KDC_Server"),
+ KDC_SERVICE_NAME("Kerby_KDC_Server"),
KDC_HOST("127.0.0.1"),
+ KDC_PORT(8015, "kdcdefaults"),
+ KDC_ALLOW_UDP(true, "kdcdefaults"),
KDC_UDP_PORT(8016, "kdcdefaults"),
KDC_TCP_PORT(8015, "kdcdefaults"),
KDC_DOMAIN("example.com"),
@@ -48,7 +50,7 @@
KDC_MAX_DGRAM_REPLY_SIZE(4096, "kdcdefaults"),
//logging location
- //TODO: the default log location need to be determinded.
+ //TODO: the default log location need to be determined.
DEFAULT(null, "logging"),
KDC(null, "logging"),
ADMIN_SERVER(null, "logging");
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcServer.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcServer.java
index dd291f9..c3a7b82 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcServer.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/KdcServer.java
@@ -28,12 +28,13 @@
public class KdcServer {
private String kdcHost;
- private short kdcTcpPort;
- private short kdcUdpPort;
+ private int kdcTcpPort;
+ private Boolean allowUdp;
+ private int kdcUdpPort;
private String kdcRealm;
private boolean started;
- private String serviceName = "HaoxKdc";
+ private String serviceName = "KerbyKdc";
private KdcHandler kdcHandler;
private EventHub eventHub;
@@ -112,14 +113,21 @@
return kdcConfig.getKdcHost();
}
- private short getKdcTcpPort() {
+ private int getKdcTcpPort() {
if (kdcTcpPort > 0) {
return kdcTcpPort;
}
return kdcConfig.getKdcTcpPort();
}
- private short getKdcUdpPort() {
+ private boolean allowUdp() {
+ if (allowUdp != null) {
+ return allowUdp;
+ }
+ return kdcConfig.allowKdcUdp();
+ }
+
+ private int getKdcUdpPort() {
if (kdcUdpPort > 0) {
return kdcUdpPort;
}
@@ -130,14 +138,34 @@
this.kdcHost = kdcHost;
}
- public void setKdcTcpPort(short kdcTcpPort) {
+ /**
+ * Set to allow UDP or not.
+ * @param allowUdp
+ */
+ public void setAllowUdp(boolean allowUdp) {
+ this.allowUdp = allowUdp;
+ }
+
+ /**
+ * Set KDC tcp port.
+ * @param kdcTcpPort
+ */
+ public void setKdcTcpPort(int kdcTcpPort) {
this.kdcTcpPort = kdcTcpPort;
}
- public void setKdcUdpPort(short kdcUdpPort) {
+ /**
+ * Set KDC udp port. Only makes sense when allowUdp is set.
+ * @param kdcUdpPort
+ */
+ public void setKdcUdpPort(int kdcUdpPort) {
this.kdcUdpPort = kdcUdpPort;
}
+ /**
+ * Set KDC realm.
+ * @param realm
+ */
public void setKdcRealm(String realm) {
this.kdcRealm = realm;
}
@@ -159,7 +187,9 @@
eventHub.start();
network.tcpListen(getKdcHost(), getKdcTcpPort());
- network.udpListen(getKdcHost(), getKdcUdpPort());
+ if (allowUdp()) {
+ network.udpListen(getKdcHost(), getKdcUdpPort());
+ }
}
private void prepareHandler() {
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/pkinit/PkinitPreauth.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/pkinit/PkinitPreauth.java
index c383037..7ab8c1a 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/pkinit/PkinitPreauth.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/preauth/pkinit/PkinitPreauth.java
@@ -36,7 +36,7 @@
public class PkinitPreauth extends AbstractPreauthPlugin {
- private Map<String, PkinitKdcContext> pkinitContexts;
+ private final Map<String, PkinitKdcContext> pkinitContexts;
public PkinitPreauth() {
super(new PkinitPreauthMeta());
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/replay/RequestRecord.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/replay/RequestRecord.java
index 3708d18..0cafefa 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/replay/RequestRecord.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/replay/RequestRecord.java
@@ -34,15 +34,27 @@
@Override
public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
RequestRecord that = (RequestRecord) o;
- if (microseconds != that.microseconds) return false;
- if (requestTime != that.requestTime) return false;
- if (!clientPrincipal.equals(that.clientPrincipal)) return false;
- if (!serverPrincipal.equals(that.serverPrincipal)) return false;
+ if (microseconds != that.microseconds) {
+ return false;
+ }
+ if (requestTime != that.requestTime) {
+ return false;
+ }
+ if (!clientPrincipal.equals(that.clientPrincipal)) {
+ return false;
+ }
+ if (!serverPrincipal.equals(that.serverPrincipal)) {
+ return false;
+ }
return true;
}
diff --git a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/replay/SimpleCacheService.java b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/replay/SimpleCacheService.java
index 96d95c1..90b27ec 100644
--- a/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/replay/SimpleCacheService.java
+++ b/kerby-kerb/kerb-server/src/main/java/org/apache/kerby/kerberos/kerb/server/replay/SimpleCacheService.java
@@ -23,7 +23,7 @@
import java.util.Set;
public class SimpleCacheService implements CacheService {
- private Set<RequestRecord> requests;
+ private final Set<RequestRecord> requests;
public SimpleCacheService() {
requests = new HashSet<RequestRecord>();
diff --git a/kerby-kerb/kerb-server/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java b/kerby-kerb/kerb-server/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java
index c98c00d..9b276b4 100644
--- a/kerby-kerb/kerb-server/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java
+++ b/kerby-kerb/kerb-server/src/test/java/org/apache/kerby/kerberos/kerb/server/KdcTest.java
@@ -25,6 +25,7 @@
import java.io.IOException;
import java.net.InetSocketAddress;
+import java.net.ServerSocket;
import java.net.SocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
@@ -32,7 +33,7 @@
public class KdcTest {
private String serverHost = "localhost";
- private short serverPort = 8089;
+ private int serverPort = 0;
private SimpleKdcServer kdcServer;
@@ -40,6 +41,7 @@
public void setUp() throws Exception {
kdcServer = new SimpleKdcServer();
kdcServer.setKdcHost(serverHost);
+ serverPort = getServerPort();
kdcServer.setKdcTcpPort(serverPort);
kdcServer.init();
kdcServer.start();
@@ -62,6 +64,24 @@
socketChannel.write(writeBuffer);
}
+
+ /**
+ * Get a server socket point for testing usage, either TCP or UDP.
+ * @return server socket point
+ */
+ private static int getServerPort() {
+ int serverPort = 0;
+
+ try {
+ ServerSocket serverSocket = new ServerSocket(0);
+ serverPort = serverSocket.getLocalPort();
+ serverSocket.close();
+ } catch (IOException e) {
+ throw new RuntimeException("Failed to get a server socket point");
+ }
+
+ return serverPort;
+ }
@After
public void tearDown() throws Exception {
diff --git a/kerby-kerb/kerb-server/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcConfigLoad.java b/kerby-kerb/kerb-server/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcConfigLoad.java
index 643b539..7f00a3a 100644
--- a/kerby-kerb/kerb-server/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcConfigLoad.java
+++ b/kerby-kerb/kerb-server/src/test/java/org/apache/kerby/kerberos/kerb/server/TestKdcConfigLoad.java
@@ -44,8 +44,8 @@
assertThat(krbConfig.getKdcLoggingLocation()).isEqualTo("FILE:/var/log/krb5kdc.log");
assertThat(krbConfig.getAdminLoggingLocation()).isEqualTo("FILE:/var/log/kadmind.log");
- assertThat(krbConfig.getKdcUdpPort()).isEqualTo((short)88);
- assertThat(krbConfig.getKdcTcpPort()).isEqualTo((short)8014);
+ assertThat(krbConfig.getKdcUdpPort()).isEqualTo(88);
+ assertThat(krbConfig.getKdcTcpPort()).isEqualTo(8014);
assertThat(krbConfig.isRestrictAnonymousToTgt()).isTrue();
assertThat(krbConfig.getKdcMaxDgramReplySize()).isEqualTo(4096);
diff --git a/kerby-kerb/kerb-server/src/main/resources/kdc.conf b/kerby-kerb/kerb-server/src/test/resources/kdc.conf
similarity index 100%
rename from kerby-kerb/kerb-server/src/main/resources/kdc.conf
rename to kerby-kerb/kerb-server/src/test/resources/kdc.conf
diff --git a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/EncryptionTest.java b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/EncryptionTest.java
index 9fb6f9e..1ca2ee7 100644
--- a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/EncryptionTest.java
+++ b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/EncryptionTest.java
@@ -69,6 +69,10 @@
@Test
public void testAes256() throws IOException, KrbException {
+ if(!EncryptionHandler.isAES256Enabled()) {
+ return;
+ }
+
testEncWith("aes256-cts-hmac-sha1-96.cc");
}
diff --git a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeysTest.java b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeysTest.java
index 6cc98b1..cfb3894 100644
--- a/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeysTest.java
+++ b/kerby-kerb/kerb-util/src/test/java/org/apache/kerby/kerberos/kerb/util/KeysTest.java
@@ -67,6 +67,9 @@
for (KeytabEntry ke : entries) {
EncryptionType keyType = ke.getKey().getKeyType();
+ if (keyType.usesAES256()) {
+ continue;
+ }
if (EncryptionHandler.isImplemented(keyType)) {
EncryptionKey genKey = EncryptionHandler.string2Key(principal.getName(),
TEST_PASSWORD, keyType);
diff --git a/kerby-kerb/pom.xml b/kerby-kerb/pom.xml
index 4422235..1f4d4cf 100644
--- a/kerby-kerb/pom.xml
+++ b/kerby-kerb/pom.xml
@@ -12,7 +12,7 @@
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -42,14 +42,10 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
- <version>${junit.version}</version>
- <scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
- <version>${assertj.version}</version>
- <scope>test</scope>
</dependency>
</dependencies>
</project>
diff --git a/lib/pom.xml b/lib/pom.xml
index e6284ef..2185fdd 100644
--- a/lib/pom.xml
+++ b/lib/pom.xml
@@ -12,7 +12,7 @@
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
@@ -30,7 +30,6 @@
<module>kerby-config</module>
<module>kerby-event</module>
<module>kerby-pkix</module>
- <module>kerby-token</module>
<module>kerby-util</module>
</modules>
@@ -38,14 +37,10 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
- <version>${junit.version}</version>
- <scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
- <version>${assertj.version}</version>
- <scope>test</scope>
</dependency>
</dependencies>
diff --git a/pom.xml b/pom.xml
index 3d08524..d03c850 100644
--- a/pom.xml
+++ b/pom.xml
@@ -41,7 +41,7 @@
<module>kerby-asn1</module>
<module>kerby-kerb</module>
<module>kerby-kdc</module>
- <module>tool</module>
+ <module>kdc-tool</module>
<module>kdc-backend</module>
<module>benchmark</module>
<module>kerby-dist</module>