001    /*
002     *  Licensed to the Apache Software Foundation (ASF) under one
003     *  or more contributor license agreements.  See the NOTICE file
004     *  distributed with this work for additional information
005     *  regarding copyright ownership.  The ASF licenses this file
006     *  to you under the Apache License, Version 2.0 (the
007     *  "License"); you may not use this file except in compliance
008     *  with the License.  You may obtain a copy of the License at
009     *  
010     *    http://www.apache.org/licenses/LICENSE-2.0
011     *  
012     *  Unless required by applicable law or agreed to in writing,
013     *  software distributed under the License is distributed on an
014     *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015     *  KIND, either express or implied.  See the License for the
016     *  specific language governing permissions and limitations
017     *  under the License. 
018     *  
019     */
020    package org.apache.directory.server.kerberos.shared;
021    
022    /**
023     * An enum listing all the Kerberos V5 messages :
024     * 
025     *   AS-REQ    (10) : Authentication Serveur Request
026     *   AS-REP    (11) : Authentication Serveur Response
027     *   TGS-REQ   (12) : Ticket Granting Server Request
028     *   TGS-REP   (13) : Ticket Granting Server Response
029     *   AP-REQ    (14) : Application Request
030     *   AP-REP    (15) : Application Response
031     *   KRB-SAFE  (20) : Safe (checksummed) application message
032     *   KRB-PRIV  (21) : Private (encrypted) application message
033     *   KRB-CRED  (22) : Private (encrypted) message to forward credentials
034     *   ENC_AP_REP_PART (27) : Encrypted application reply part
035     *   ENC_PRIV_PART (28) : Encrypted private message part
036     *   KRB-ERROR (30) : A kerberos error response
037     *   
038     *
039     * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
040     * @version $Rev$, $Date$
041     */
042    public enum KerberosMessageType
043    {
044        AS_REQ( 10, "initial authentication request" ),
045        AS_REP( 11, "initial authentication response"),
046        TGS_REQ( 12, "request for authentication based on TGT" ),
047        TGS_REP( 13, "response to authentication based on TGT" ),
048        AP_REQ( 14, "application request" ), 
049        AP_REP( 15, "application response" ), 
050        KRB_SAFE( 20, "safe (checksummed) application message" ), 
051        KRB_PRIV( 21,  "private (encrypted) application message" ), 
052        KRB_CRED( 22, "private (encrypted) message to forward credentials" ),
053        ENC_AP_REP_PART( 27, "encrypted application reply part" ),
054        ENC_PRIV_PART( 28, "encrypted private message part" ),
055        KRB_ERROR( 30, "error response" );
056        
057        private int value;
058        private String message;
059        
060        /**
061         * Creates a new instance of KerberosMessageType.
062         */
063        private KerberosMessageType( int value, String message )
064        {
065            this.value = value;
066            this.message = message;
067        }
068    
069        
070        /**
071         * Get the int value for this element
072         *
073         * @return The int value of this element
074         */
075        public int getOrdinal()
076        {
077            return value;
078        }
079        
080        
081        /**
082         * Get the message associated with this element
083         *
084         * @return The message associated with this element
085         */
086        public String getMessage()
087        {
088            return message;
089        }
090        
091        
092        /**
093         * Get the instance of a KerberosMessageType from an int value
094         *
095         * @param value The int value 
096         * @return A KerberosMessageType associated with this value
097         */
098        public static KerberosMessageType getTypeByOrdinal( int value )
099        {
100            switch ( value )
101            {
102                case 10 : return AS_REQ;
103                case 11 : return AS_REP;
104                case 12 : return TGS_REQ;
105                case 13 : return TGS_REP;
106                case 14 : return AP_REQ; 
107                case 15 : return AP_REP; 
108                case 20 : return KRB_SAFE; 
109                case 21 : return KRB_PRIV; 
110                case 22 : return KRB_CRED;
111                case 27 : return ENC_AP_REP_PART;
112                case 28 : return ENC_PRIV_PART;
113                case 30 : return KRB_ERROR;
114                default : return null;
115            }
116        }
117    }