Initial load
diff --git a/jdk/src/share/classes/org/ietf/jgss/MessageProp.java b/jdk/src/share/classes/org/ietf/jgss/MessageProp.java
new file mode 100644
index 0000000..569bff3
--- /dev/null
+++ b/jdk/src/share/classes/org/ietf/jgss/MessageProp.java
@@ -0,0 +1,235 @@
+/*
+ * Copyright 2000-2001 Sun Microsystems, Inc. All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+package org.ietf.jgss;
+
+/**
+ * This is a utility class used within the per-message GSSContext
+ * methods to convey per-message properties.<p>
+ *
+ * When used with the GSSContext interface's wrap and getMIC methods, an
+ * instance of this class is used to indicate the desired
+ * Quality-of-Protection (QOP) and to request if confidentiality services
+ * are to be applied to caller supplied data (wrap only). To request
+ * default QOP, the value of 0 should be used for QOP.<p>
+ *
+ * When used with the unwrap and verifyMIC methods of the GSSContext
+ * interface, an instance of this class will be used to indicate the
+ * applied QOP and confidentiality services over the supplied message.
+ * In the case of verifyMIC, the confidentiality state will always be
+ * <code>false</code>. Upon return from these methods, this object will also
+ * contain any supplementary status values applicable to the processed
+ * token. The supplementary status values can indicate old tokens, out
+ * of sequence tokens, gap tokens or duplicate tokens.<p>
+ *
+ * @see GSSContext#wrap
+ * @see GSSContext#unwrap
+ * @see GSSContext#getMIC
+ * @see GSSContext#verifyMIC
+ *
+ * @author Mayank Upadhyay
+ * @since 1.4
+ */
+public class MessageProp {
+
+ private boolean privacyState;
+ private int qop;
+ private boolean dupToken;
+ private boolean oldToken;
+ private boolean unseqToken;
+ private boolean gapToken;
+ private int minorStatus;
+ private String minorString;
+
+ /**
+ * Constructor which sets the desired privacy state. The QOP value used
+ * is 0.
+ *
+ * @param privState the privacy (i.e. confidentiality) state
+ */
+ public MessageProp(boolean privState) {
+ this(0, privState);
+ }
+
+ /**
+ * Constructor which sets the values for the qop and privacy state.
+ *
+ * @param qop the QOP value
+ * @param privState the privacy (i.e. confidentiality) state
+ */
+ public MessageProp(int qop, boolean privState) {
+ this.qop = qop;
+ this.privacyState = privState;
+ resetStatusValues();
+ }
+
+ /**
+ * Retrieves the QOP value.
+ *
+ * @return an int representing the QOP value
+ * @see #setQOP
+ */
+ public int getQOP() {
+ return qop;
+ }
+
+ /**
+ * Retrieves the privacy state.
+ *
+ * @return true if the privacy (i.e., confidentiality) state is true,
+ * false otherwise.
+ * @see #setPrivacy
+ */
+ public boolean getPrivacy() {
+
+ return (privacyState);
+ }
+
+ /**
+ * Sets the QOP value.
+ *
+ * @param qop the int value to set the QOP to
+ * @see #getQOP
+ */
+ public void setQOP(int qop) {
+ this.qop = qop;
+ }
+
+
+ /**
+ * Sets the privacy state.
+ *
+ * @param privState true is the privacy (i.e., confidentiality) state
+ * is true, false otherwise.
+ * @see #getPrivacy
+ */
+ public void setPrivacy(boolean privState) {
+
+ this.privacyState = privState;
+ }
+
+
+ /**
+ * Tests if this is a duplicate of an earlier token.
+ *
+ * @return true if this is a duplicate, false otherwise.
+ */
+ public boolean isDuplicateToken() {
+ return dupToken;
+ }
+
+ /**
+ * Tests if this token's validity period has expired, i.e., the token
+ * is too old to be checked for duplication.
+ *
+ * @return true if the token's validity period has expired, false
+ * otherwise.
+ */
+ public boolean isOldToken() {
+ return oldToken;
+ }
+
+ /**
+ * Tests if a later token had already been processed.
+ *
+ * @return true if a later token had already been processed, false otherwise.
+ */
+ public boolean isUnseqToken() {
+ return unseqToken;
+ }
+
+ /**
+ * Tests if an expected token was not received, i.e., one or more
+ * predecessor tokens have not yet been successfully processed.
+ *
+ * @return true if an expected per-message token was not received,
+ * false otherwise.
+ */
+ public boolean isGapToken() {
+ return gapToken;
+ }
+
+ /**
+ * Retrieves the minor status code that the underlying mechanism might
+ * have set for this per-message operation.
+ *
+ * @return the int minor status
+ */
+ public int getMinorStatus(){
+ return minorStatus;
+ }
+
+ /**
+ * Retrieves a string explaining the minor status code.
+ *
+ * @return a String corresponding to the minor status
+ * code. <code>null</code> will be returned when no minor status code
+ * has been set.
+ */
+ public String getMinorString(){
+ return minorString;
+ }
+
+ /**
+ * This method sets the state for the supplementary information flags
+ * and the minor status in MessageProp. It is not used by the
+ * application but by the GSS implementation to return this information
+ * to the caller of a per-message context method.
+ *
+ * @param duplicate true if the token was a duplicate of an earlier
+ * token, false otherwise
+ * @param old true if the token's validity period has expired, false
+ * otherwise
+ * @param unseq true if a later token has already been processed, false
+ * otherwise
+ * @param gap true if one or more predecessor tokens have not yet been
+ * successfully processed, false otherwise
+ * @param minorStatus the int minor status code for the per-message
+ * operation
+ * @param minorString the textual representation of the minorStatus value
+ */
+ public void setSupplementaryStates(boolean duplicate,
+ boolean old, boolean unseq, boolean gap,
+ int minorStatus, String minorString) {
+ this.dupToken = duplicate;
+ this.oldToken = old;
+ this.unseqToken = unseq;
+ this.gapToken = gap;
+ this.minorStatus = minorStatus;
+ this.minorString = minorString;
+ }
+
+ /**
+ * Resets the supplementary status values to false.
+ */
+ private void resetStatusValues() {
+ dupToken = false;
+ oldToken = false;
+ unseqToken = false;
+ gapToken = false;
+ minorStatus = 0;
+ minorString = null;
+ }
+}