235 lines · 7.1 KB · Java
RawDownload
/* * Copyright (c) 2000, 2001, Oracle and/or its affiliates. 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.  Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.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;    }}