/// <summary> /// Decode security footer /// </summary> /// <param name="decoder"></param> private void DecodeSecurityFooter(BinaryDecoder decoder) { if ((SecurityFlags & SecurityFlagsEncodingMask.SecurityFooter) != 0) { SecurityFooter = decoder.ReadByteArray("SecurityFooter").ToArray(); } }
/// <summary> /// Decode security header /// </summary> /// <param name="decoder"></param> private void DecodeSecurityHeader(BinaryDecoder decoder) { if ((ExtendedFlags1 & ExtendedFlags1EncodingMask.Security) != 0) { SecurityFlags = (SecurityFlagsEncodingMask)decoder.ReadByte("SecurityFlags"); SecurityTokenId = decoder.ReadUInt32("SecurityTokenId"); NonceLength = decoder.ReadByte("NonceLength"); MessageNonce = decoder.ReadByteArray("MessageNonce").ToArray(); if ((SecurityFlags & SecurityFlagsEncodingMask.SecurityFooter) != 0) { SecurityFooterSize = decoder.ReadUInt16("SecurityFooterSize"); } } }
/// <summary> /// Decode an array type according to dimensions constraints specified in 6.2.2.1.3 FieldMetaData /// </summary> /// <param name="binaryDecoder"></param> /// <param name="builtInType"></param> /// <returns></returns> private object DecodeRawArrayOneDimension(BinaryDecoder binaryDecoder, BuiltInType builtInType) { switch ((BuiltInType)builtInType) { case BuiltInType.Boolean: return(binaryDecoder.ReadBooleanArray(null)); case BuiltInType.SByte: return(binaryDecoder.ReadSByteArray(null)); case BuiltInType.Byte: return(binaryDecoder.ReadByteArray(null)); case BuiltInType.Int16: return(binaryDecoder.ReadInt16Array(null)); case BuiltInType.UInt16: return(binaryDecoder.ReadUInt16Array(null)); case BuiltInType.Int32: return(binaryDecoder.ReadInt32Array(null)); case BuiltInType.UInt32: return(binaryDecoder.ReadUInt32Array(null)); case BuiltInType.Int64: return(binaryDecoder.ReadInt64Array(null)); case BuiltInType.UInt64: return(binaryDecoder.ReadUInt64Array(null)); case BuiltInType.Float: return(binaryDecoder.ReadFloatArray(null)); case BuiltInType.Double: return(binaryDecoder.ReadDoubleArray(null)); case BuiltInType.String: return(binaryDecoder.ReadStringArray(null)); case BuiltInType.DateTime: return(binaryDecoder.ReadDateTimeArray(null)); case BuiltInType.Guid: return(binaryDecoder.ReadGuidArray(null)); case BuiltInType.ByteString: return(binaryDecoder.ReadByteStringArray(null)); case BuiltInType.XmlElement: return(binaryDecoder.ReadXmlElementArray(null)); case BuiltInType.NodeId: return(binaryDecoder.ReadNodeIdArray(null)); case BuiltInType.ExpandedNodeId: return(binaryDecoder.ReadExpandedNodeIdArray(null)); case BuiltInType.StatusCode: return(binaryDecoder.ReadStatusCodeArray(null)); case BuiltInType.QualifiedName: return(binaryDecoder.ReadQualifiedNameArray(null)); case BuiltInType.LocalizedText: return(binaryDecoder.ReadLocalizedTextArray(null)); case BuiltInType.DataValue: return(binaryDecoder.ReadDataValueArray(null)); case BuiltInType.Enumeration: //return binaryDecoder.ReadInt32Array(null); //return binaryDecoder.ReadEnumeratedArray(null, typeof(Int32)); return(binaryDecoder.ReadVariantArray(null)); case BuiltInType.Variant: return(binaryDecoder.ReadVariantArray(null)); case BuiltInType.ExtensionObject: return(binaryDecoder.ReadExtensionObjectArray(null)); default: return(null); } }