コード例 #1
0
		public override void Visit_SEQUENCE(mASN1CommonDenominator seq)
		{
			//markiraj pocetak trpanja SEQUENCE komponenti
			Push(state.START_OF_SEQUENCE);

			SEQUENCE s = (seq as SEQUENCE);

			// obradi(potrpaj) children-objekte na stack
			foreach(ExperimentalObject eo in s.Components) 
			{
				/// TODO: Before visiting must check if non-optional are missing.
				Visit(eo);				
			}

			/* sad Pop() until START_OF_SEQUENCE, pazi na obrnuti redoslijed */

			ArrayList TVList = new ArrayList();
			TagValueNode node;
			while( (node=stack.Pop() as TagValueNode)!=null ) 
			{
				TVList.Insert(0, node);
            }


			node = TagValueNode.Create(s.TAG, TVList);

			// TODO: jos bi trebalo markirati da se SEQUENCE kodira "constructed".
			// mozda bi to trebalo tutnuti u SEQUENCE tag i sve zajedno preimenovati
			// u TagInfo. Or something.

			Push(node);			
		}
コード例 #2
0
		public override void Visit_NULL(mASN1CommonDenominator ob)
		{
			byte[] value_Octets=new byte[]{};
		
			TagValueNode node = TagValueNode.Create(ob.TAG, value_Octets);
			Push(node);
		}
コード例 #3
0
		public override void Visit_BOOLEAN(mASN1CommonDenominator ob)
		{
			byte boolCode = 0x00;
			BOOLEAN b = (ob as BOOLEAN);
			if (b.boolValue) boolCode = 0xff;
			byte[] value_Octets=new byte[]{boolCode};

			TagValueNode node = TagValueNode.Create(b.TAG, value_Octets);
			Push(node);
		}
コード例 #4
0
		public override void Visit(mASN1CommonDenominator ob) 
		{
			if (ob!=null)
			{
                ob.acceptVisitor(this);				
			}
			else
			{
                this.Push(state.MISSING_COMPONENT);				
			}
		}
コード例 #5
0
		public override void Visit(mASN1CommonDenominator ob) 
		{
			ProcessTAG(ob.TAG);
			
			currentInstance = (ob as ExperimentalType).Instance();

			if (currentInstance == null) 
			{
				//DIZI FRKU!
			}
		

			ob.acceptVisitor(this);	
		}
コード例 #6
0
		public override void Visit_SEQUENCE(mASN1CommonDenominator ob)
		{
			SEQUENCE inst = currentInstance as SEQUENCE;
			SimpleDER[] ders = (valueOctets.Pop() as SimpleDER).Unwrap();

			/* pospajaj odgovarajuce DERove sa njihovim instancama, i sve
			 * gurni u SEQUENCE instancu. */
			SEQUENCE_Process_DERs(inst, ders);

			PushInstance(inst);			
		}
コード例 #7
0
		public override void Visit_INTEGER(mASN1CommonDenominator ob)
		{
			//TODO: ovo jos nisam ni na papiru!!! :-(
			// probati na AlgorithmIdentifier - the classic example.
			throw new NotImplementedException();
		}
コード例 #8
0
		public override void Visit_NULL(mASN1CommonDenominator ob) 
		{
			SimpleDER der = PopDER();
			PushInstance(currentInstance);
		}
コード例 #9
0
		public override void Visit_BOOLEAN(mASN1CommonDenominator ob) 
		{
          	SimpleDER d = PopDER();

			byte[] bytes = d.GetValueOctets();

			if (bytes[0]==0xff) 
			{
				(currentInstance as BOOLEAN).boolValue = true;
			} 
			else 
			{
				(currentInstance as BOOLEAN).boolValue = false;
			}

			PushInstance(currentInstance);
		}
コード例 #10
0
		public override void Visit_ANY(mASN1CommonDenominator ob)
		{
			/// a tricky one? 
			throw new NotImplementedException();
		}
コード例 #11
0
		public override void Visit_INTEGER(mASN1CommonDenominator ob)
		{
			throw new NotImplementedException();
		}