You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by er...@apache.org on 2004/10/12 03:56:33 UTC
svn commit: rev 54639 - incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value
Author: erodriguez
Date: Mon Oct 11 18:56:32 2004
New Revision: 54639
Added:
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/Checksum.java
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/EncryptedData.java
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/EncryptedTimeStamp.java
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/EncryptionKey.java
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/KerberosTime.java
incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/TransitedEncoding.java
Log:
Some immutable values.
Added: incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/Checksum.java
==============================================================================
--- (empty file)
+++ incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/Checksum.java Mon Oct 11 18:56:32 2004
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.kerberos.messages.value;
+
+import org.apache.kerberos.crypto.checksum.*;
+
+import java.util.*;
+
+public class Checksum {
+
+ private ChecksumType _checksumType;
+ private byte[] _checksum;
+
+ public Checksum(ChecksumType cksumType, byte[] checksum) {
+ _checksumType = cksumType;
+ _checksum = checksum;
+ }
+
+ public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (!(o instanceof Checksum))
+ return false;
+
+ Checksum that = (Checksum) o;
+ return (this._checksumType == that._checksumType)
+ && (Arrays.equals(this._checksum, that._checksum));
+ }
+
+ public byte[] getChecksumValue() {
+ return _checksum;
+ }
+ public ChecksumType getChecksumType() {
+ return _checksumType;
+ }
+}
+
Added: incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/EncryptedData.java
==============================================================================
--- (empty file)
+++ incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/EncryptedData.java Mon Oct 11 18:56:32 2004
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.kerberos.messages.value;
+
+import org.apache.kerberos.crypto.encryption.*;
+
+public class EncryptedData {
+
+ private EncryptionType _encryptionType;
+ private int _keyVersion; //optional
+ private byte[] _cipherText;
+
+ public EncryptedData() {
+ // TODO - temp
+ }
+
+ public EncryptedData(EncryptionType eType, byte[] cipher) {
+ _encryptionType = eType;
+ _cipherText = cipher;
+ }
+
+ public EncryptedData(EncryptionType eType, int kvno, byte[] cipher) {
+ _encryptionType = eType;
+ _keyVersion = kvno;
+ _cipherText = cipher;
+ }
+
+ // getters
+ public EncryptionType getEncryptionType() {
+ return _encryptionType;
+ }
+ public int getKeyVersion() {
+ return _keyVersion;
+ }
+ public byte[] getCipherText() {
+ return _cipherText;
+ }
+
+ // setters
+ public void setCipherText(byte[] text) {
+ _cipherText = text;
+ }
+ public void setEncryptionType(EncryptionType type) {
+ _encryptionType = type;
+ }
+ public void setKeyVersion(int version) {
+ _keyVersion = version;
+ }
+}
+
Added: incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/EncryptedTimeStamp.java
==============================================================================
--- (empty file)
+++ incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/EncryptedTimeStamp.java Mon Oct 11 18:56:32 2004
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.kerberos.messages.value;
+
+/**
+ * Pre-authentication encrypted timestamp
+ */
+public class EncryptedTimeStamp {
+ private KerberosTime _timeStamp;
+ private int _microSeconds; //optional
+
+ public EncryptedTimeStamp(KerberosTime timeStamp, int microSeconds) {
+ _timeStamp = timeStamp;
+ _microSeconds = microSeconds;
+ }
+
+ public KerberosTime getTimeStamp() {
+ return _timeStamp;
+ }
+
+ public int getMicroSeconds() {
+ return _microSeconds;
+ }
+}
+
Added: incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/EncryptionKey.java
==============================================================================
--- (empty file)
+++ incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/EncryptionKey.java Mon Oct 11 18:56:32 2004
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.kerberos.messages.value;
+
+import org.apache.kerberos.crypto.encryption.*;
+
+public class EncryptionKey {
+ public static final int KEYTYPE_NULL = 0;
+ public static final int KEYTYPE_DES = 1;
+
+ private EncryptionType _keyType;
+ private byte[] _keyValue;
+ private int _keyVersion;
+
+ public EncryptionKey(EncryptionType keyType, byte[] keyValue) {
+ _keyType = keyType;
+ _keyValue = keyValue;
+ }
+
+ public EncryptionKey(EncryptionType keyType, byte[] keyValue, int keyVersion) {
+ _keyType = keyType;
+ _keyValue = keyValue;
+ /**
+ * keyVersion is sent over the wire as part of EncryptedData but makes more sense
+ * in the domain model to have here as part of the key itself. Therefore, the
+ * keyVersion should only be constructor-injected when EncryptionKey's are
+ * retrieved from persisted storage.
+ *
+ * TODO - keyVersion may move into persisted user configuration
+ */
+ _keyVersion = keyVersion;
+ }
+
+ public synchronized void destroy() {
+ if (_keyValue != null)
+ for (int i = 0; i < _keyValue.length; i++)
+ _keyValue[i] = 0;
+ }
+
+ public String toString() {
+ return _keyType.toString() + " (" + _keyType.getOrdinal() + ")";
+ }
+
+ public EncryptionType getKeyType() {
+ return _keyType;
+ }
+ public byte[] getKeyValue() {
+ return _keyValue;
+ }
+
+ public int getKeyVersion() {
+ return _keyVersion;
+ }
+}
+
Added: incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/KerberosTime.java
==============================================================================
--- (empty file)
+++ incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/KerberosTime.java Mon Oct 11 18:56:32 2004
@@ -0,0 +1,101 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.kerberos.messages.value;
+
+import org.apache.kerberos.kdc.*;
+
+import java.util.*;
+
+/**
+ * Implementation of the time object for Kerberos
+ */
+public class KerberosTime implements Comparable {
+
+ public static final KerberosTime INFINITY = new KerberosTime(Long.MAX_VALUE);
+
+ private long _localTime;
+
+ public KerberosTime() {
+ Date temp = new Date();
+ _localTime = temp.getTime();
+ }
+
+ public KerberosTime(long time) {
+ _localTime = time;
+ }
+
+ public KerberosTime(Date time) {
+ _localTime = time.getTime();
+ }
+
+ public int compareTo(Object o) {
+ final int BEFORE = -1;
+ final int EQUAL = 0;
+ final int AFTER = 1;
+
+ // this optimization is usually worthwhile, and can always be added
+ if (this == o)
+ return EQUAL;
+
+ // Performing explicit checks for nullity and type are made redundant by
+ // the following cast, which will throw NullPointerException and
+ // ClassCastException in these respective cases.
+ final KerberosTime that = (KerberosTime) o;
+
+ // primitive numbers follow this form
+ if (this._localTime < that._localTime)
+ return BEFORE;
+ if (this._localTime > that._localTime)
+ return AFTER;
+
+ return EQUAL;
+ }
+
+ public long getTime() {
+ return _localTime;
+ }
+
+ public Date toDate() {
+ return new Date(_localTime);
+ }
+
+ public boolean isInClockSkew(long clockSkew) {
+ KerberosTime now = new KerberosTime();
+ return Math.abs(_localTime - now._localTime) < clockSkew;
+ }
+
+ public boolean isInClockSkew() {
+ return isInClockSkew(LocalConfig.KDC_ALLOWABLE_CLOCKSKEW);
+ }
+
+ public boolean greaterThan(KerberosTime time) {
+ return _localTime > time._localTime;
+ }
+
+ public boolean lessThan(KerberosTime time) {
+ return _localTime < time._localTime;
+ }
+
+ public boolean equals(KerberosTime time) {
+ return _localTime == time._localTime;
+ }
+
+ public boolean isZero() {
+ return _localTime == 0;
+ }
+}
+
Added: incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/TransitedEncoding.java
==============================================================================
--- (empty file)
+++ incubator/directory/kerberos/trunk/source/main/org/apache/kerberos/messages/value/TransitedEncoding.java Mon Oct 11 18:56:32 2004
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2004 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.kerberos.messages.value;
+
+public class TransitedEncoding {
+
+ private int _type;
+ private byte[] _contents;
+
+ public TransitedEncoding() {
+ _type = 0;
+ _contents = new byte[0];
+ }
+
+ public TransitedEncoding(int type, byte[] contents) {
+ _type = type;
+ _contents = contents;
+ }
+
+ public byte[] getContents() {
+ return _contents;
+ }
+ public int getType() {
+ return _type;
+ }
+}
+