public static TLVNode Create(ASN1TAG tag, byte[] octets) 
		{
			// UNDONE
			// innerLength
			int tmpLen=octets.Length;

			return null;
		}
		public static TLVNode Create(ASN1TAG tag, ArrayList children) 
		{
			// innerLength
			int tmpLen=0;
			foreach(TLVNode t in children) 
			{
				tmpLen += t.outerLength;
			}



			//UNDONE
			return null;
	
		}
		private void ProcessTAG(ASN1TAG inputTag) 
		{
			
			if (inputTag.IsExplicit()) 
			{
				// TODO - sfiksaj ovo.
				/* ako je TAG explicit - stripaj omotac oko DER-a... */
                /* ako je IMPLICIT - ignoriraj..., ostalo ne bi trebalo biti vazno... */	
			
				SimpleDER der = valueOctets.Pop() as SimpleDER;
				SimpleDER unwrappedDER = new SimpleDER(der.GetValueOctets());

				PushDER(unwrappedDER);

				// sad nastavi dalje - sve dok ne dodjemo do simple taga...
				ProcessTAG(((EXPLICITTag)inputTag).underTag);
			}

			if (inputTag.IsImplicit()) 
			{
				/// Go to the next step...
				ProcessTAG(((IMPLICITTag)inputTag).underTag);
			}
		}
Exemple #4
0
		//FIXME
		public static byte[] MakeIdOctets(ASN1TAG TAG) 
		{
			if (TAG.IsImplicit()) 
			{
			}
			else 
			{
			}

			return null; //FIXME
		}
Exemple #5
0
		public static BEREncoding Create(ASN1TAG TAG, ExperimentalObject valueObject) 
		{
			byte[] tag_Octets = MakeIdOctets(TAG);

		    byte[] value_Octets;

	
			if (TAG.IsExplicit())
			{
				value_Octets = (valueObject.asDER()).GetBERCode();
			}
			else 
			{
				value_Octets = valueObject.Get_BER_Value_Octets()
			}

			return new BEREncoding(tag_Octets, value_Octets);
		}
Exemple #6
0
		public BEREncoding(ASN1TAG TAG, byte[] valueOctets):this() 
		{
			byte[] idOctets  = MakeIdOctets(TAG);
			byte[] lenOctets = MakeLenOctets(valueOctets.Length);

			IdOctets       = idOctets;
			LenOctets      = lenOctets;
			ContentsOctets = valueOctets;

			decQ = true;
			this.Encode(idOctets, lenOctets, valueOctets);
		}
		public bool Match(ASN1TAG inputTag) 
		{
			/* probaj iz Tag-a kreirati "povrsinske" byte-ove i usporedi ih sa
			 * tag oktetima. */

			if (inputTag.IsMultiTag()) 
			{
				ASN1TAG[] tags = (inputTag as MultiASN1TAG).GetAllTags();

				foreach(ASN1TAG tag in tags) 
				{
					if (this.Match(tag)) 
					{
						return true;
					}
				}
				return false;
			}
			else 
			{
				SimpleASN1TAG simpleTag = inputTag.ExtractSimpleOuterTag();
				
				return this.MatchWithSimpleTag(simpleTag);
			}
		}
		public static TagValueNode Create(ASN1TAG inputTag, ArrayList nodes) 
		{
			return new TagValueMiddleNode(inputTag, nodes);
		}
		public static TagValueNode Create(ASN1TAG inputTag, byte[] valueOctets) 
		{
			return new TagValueLeafNode(inputTag, valueOctets);
		}
		protected TagValueNode(ASN1TAG inputTag) 
		{
			Tag = inputTag;
		}
		public TagValueMiddleNode(ASN1TAG inputTag, ArrayList nodes):base(inputTag) 
		{
			Nodes = nodes;
		}
		public TagValueLeafNode(ASN1TAG inputTag, byte[] valueOctets):base(inputTag) 
		{
			ValueOctets = valueOctets;
		}
Exemple #13
0
		public IMPLICITTag(int tagNumber, ASN1TAG inputUnderTag):base(tagNumber, inputUnderTag){}
Exemple #14
0
		public TaggedTAG(int tagNumber, ASN1TAG inputUnderTag):this() 
		{
			t = tagNumber;
			underTag = inputUnderTag;
		}