From commits-return-4539-apmail-directory-commits-archive=directory.apache.org@directory.apache.org Tue May 03 23:25:58 2005 Return-Path: Delivered-To: apmail-directory-commits-archive@www.apache.org Received: (qmail 88780 invoked from network); 3 May 2005 23:25:58 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 3 May 2005 23:25:58 -0000 Received: (qmail 59285 invoked by uid 500); 3 May 2005 23:27:44 -0000 Delivered-To: apmail-directory-commits-archive@directory.apache.org Received: (qmail 59219 invoked by uid 500); 3 May 2005 23:27:43 -0000 Mailing-List: contact commits-help@directory.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@directory.apache.org Delivered-To: mailing list commits@directory.apache.org Received: (qmail 59160 invoked by uid 99); 3 May 2005 23:27:43 -0000 X-ASF-Spam-Status: No, hits=0.2 required=10.0 tests=NO_REAL_NAME X-Spam-Check-By: apache.org Received: from minotaur.apache.org (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.28) with SMTP; Tue, 03 May 2005 16:27:42 -0700 Received: (qmail 88752 invoked by uid 65534); 3 May 2005 23:25:52 -0000 Message-ID: <20050503232552.88751.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Subject: svn commit: r168019 - /directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/spnego/codec/grammars/SpnegoGrammar.java Date: Tue, 03 May 2005 23:25:51 -0000 To: commits@directory.apache.org From: elecharny@apache.org X-Mailer: svnmailer-1.0.0-dev X-Virus-Checked: Checked X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: elecharny Date: Tue May 3 16:25:51 2005 New Revision: 168019 URL: http://svn.apache.org/viewcvs?rev=3D168019&view=3Drev Log: Added the actions to handle the req flags. Modified: directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/spnego/= codec/grammars/SpnegoGrammar.java Modified: directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/s= pnego/codec/grammars/SpnegoGrammar.java URL: http://svn.apache.org/viewcvs/directory/sandbox/trunk/asn1-new-codec/s= rc/java/org/apache/asn1/spnego/codec/grammars/SpnegoGrammar.java?rev=3D1680= 19&r1=3D168018&r2=3D168019&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/spnego/= codec/grammars/SpnegoGrammar.java (original) +++ directory/sandbox/trunk/asn1-new-codec/src/java/org/apache/asn1/spnego/= codec/grammars/SpnegoGrammar.java Tue May 3 16:25:51 2005 @@ -23,6 +23,7 @@ import org.apache.asn1.ber.grammar.GrammarTransition; import org.apache.asn1.ber.grammar.IGrammar; import org.apache.asn1.ber.tlv.TLV; +import org.apache.asn1.primitives.BitString; import org.apache.asn1.primitives.OID; import org.apache.asn1.primitives.OctetString; import org.apache.asn1.spnego.codec.SpnegoContainer; @@ -356,6 +357,7 @@ // ... // reqFlags [1] ContextFlags OPTIONAL, (Tag) // ... + // Nothing to do super.transitions[SpnegoStatesEnum.SPNEGO_NEG_TOKEN_INIT_SEQUENCE_= FOLLOWING_TAG][0xA1] =3D new GrammarTransition( SpnegoStatesEnum.SPNEGO_NEG_TOKEN_INIT_= SEQUENCE_FOLLOWING_TAG, SpnegoStatesEnum.SPNEGO_REQ_FLAGS_LENGTH, null ); @@ -364,9 +366,25 @@ // ... // reqFlags [1] ContextFlags OPTIONAL, (Length) // ... + // We have to check the length super.transitions[SpnegoStatesEnum.SPNEGO_REQ_FLAGS_LENGTH][0xA1] = =3D new GrammarTransition( SpnegoStatesEnum.SPNEGO_REQ_FLAGS_LENGTH, SpnegoStatesEnum= .SPNEGO_REQ_FLAGS_VALUE, - null ); + new GrammarAction( "Req Flags Length" ) + { + public void action( IAsn1Container container ) throws Dec= oderException + { + SpnegoContainer spnegoContainer =3D ( SpnegoContainer= ) container; + SpnegoNegTokenInitPOJO spnego =3D ( SpnegoNegTokenI= nitPOJO )spnegoContainer.getSpnego(); + TLV tlv =3D spnegoContainer.getCurrentTLV(); + =20 + // Checks the length. + checkLength(spnego, tlv); + =20 + // Store the length in the req flags expected length + spnego.setReqFlagsExpectedLength(tlv.getLength().getL= ength()); + return; + } + } ); =20 // NegTokenInit ::=3D SEQUENCE { // ... @@ -403,7 +421,37 @@ // The next state will be the MechToken following super.transitions[SpnegoStatesEnum.SPNEGO_CONTEXT_FLAGS_LENGTH][0x= 03] =3D new GrammarTransition( SpnegoStatesEnum.SPNEGO_CONTEXT_FLAGS_LENGTH, SpnegoStates= Enum.SPNEGO_CONTEXT_FLAGS_VALUE, - null ); + new GrammarAction( "Req Flags Length" ) + { + public void action( IAsn1Container container ) throws = DecoderException + { + SpnegoContainer spnegoContainer =3D ( SpnegoContai= ner ) container; + SpnegoNegTokenInitPOJO spnego =3D ( SpnegoNegTok= enInitPOJO )spnegoContainer.getSpnego(); + TLV tlv =3D spnegoContainer.getCurrentTLV(); + + int expectedLength =3D spnego.getReqFlagsExpectedL= ength(); + int currentLength =3D tlv.getLength().getSize() + = tlv.getTag().getSize() + tlv.getLength().getLength(); + =20 + if ( expectedLength !=3D currentLength ) + { + throw new DecoderException("The ReqFlags lengt= h is different than the expected length"); + } + =20 + if (tlv.getLength().getLength() =3D=3D 0) + { + spnego.setAnonFlag(false); + spnego.setConfFlag(false); + spnego.setDelegFlag(false); + spnego.setIntegFlag(false); + spnego.setMutualFlag(false); + spnego.setReplayFlag(false); + spnego.setSequenceFlag(false); + } + + // The flags wioll be set in the next state + return; + } + } ); =20 // ContextFlags ::=3D BIT_STRING { (value) // delegFlag (0), @@ -417,7 +465,29 @@ // The next state will be the MechToken following super.transitions[SpnegoStatesEnum.SPNEGO_CONTEXT_FLAGS_VALUE][0x0= 3] =3D new GrammarTransition( SpnegoStatesEnum.SPNEGO_CONTEXT_FLAGS_VALUE, SpnegoStatesE= num.SPNEGO_REQ_FLAGS_FOLLOWING_TAG, - null ); + new GrammarAction( "Req Flags Value" ) + { + public void action( IAsn1Container container ) throws = DecoderException + { + SpnegoContainer spnegoContainer =3D ( SpnegoContai= ner ) container; + SpnegoNegTokenInitPOJO spnego =3D ( SpnegoNegTok= enInitPOJO )spnegoContainer.getSpnego(); + TLV tlv =3D spnegoContainer.getCurrentTLV(); + + // Get the req falgs and set the flag + BitString bitString =3D new BitString(tlv.getValue= ().getData()); + =20 + spnego.setAnonFlag(bitString.getBit(0)); + spnego.setConfFlag(bitString.getBit(1)); + spnego.setDelegFlag(bitString.getBit(2)); + spnego.setIntegFlag(bitString.getBit(3)); + spnego.setMutualFlag(bitString.getBit(4)); + spnego.setReplayFlag(bitString.getBit(5)); + spnego.setSequenceFlag(bitString.getBit(6)); + + bitString =3D null; + return; + } + } ); =20 //----------------------------------------------------------------= -------------------------- // NegTokenInit ::=3D SEQUENCE {=20 @@ -521,7 +591,7 @@ } return; } - } ); + } ); =20 // mechToken [2] OCTET STRING OPTIONAL, (Value) // We will allocate a new Octet String.