Commit 265e90a7 authored by alex's avatar alex
Browse files

Added IKEv2 typesystem

parent f99d0ced
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
/*
 *	@author 	STF 276
 *  @version 	$Id$
 *	@desc		This module specifies IKEv2 messages interchanges (= operations)
 *              for an Ipv6 test component.
 *              Functions do not set a test component verdict but instead
 *              use the function return value instead to notify the function
 *              caller about the success of the operation.
 *
 */
module LibIpv6_Rfc4306Ikev2_Functions {

	//LibCommon
	import from LibCommon_BasicTypesAndValues all;
	import from LibCommon_DataStrings all;
	import from LibCommon_VerdictControl { type FncRetCode };
	import from LibCommon_Time all;
	//LibIpv6
	//AtsIpv6


} // end module LibIpv6_Rfc4306Ikev2_Functions
+16 −0
Original line number Diff line number Diff line
/*
 *	@author 	STF 276
 *  @version 	$Id$
 *	@desc		This module specifies common template definitions
 *              to specify IPv6 packets for IKEv2
 *
 */
 module LibIpv6_Rfc4306Ikev2_Templates {

	//LibCommon
	import from LibCommon_BasicTypesAndValues all;
	import from LibCommon_DataStrings all;
	//LibIpv6
	
		
} // end module LibIpv6_Rfc4306Ikev2_Templates
+770 −0
Original line number Diff line number Diff line
/*
 *	@author 	STF 276
 *  @version 	$Id$
 *	@desc 		This module defines the structure for IKEv2 messages and using types from  
 *              the Common library. Also it provides some useful constant 
 *              definitions.
 *  
 */
 module LibIpv6_Rfc4306Ikev2_TypesAndValues {
	 
	 //LibCommon
	import from LibCommon_BasicTypesAndValues all;
	import from LibCommon_DataStrings all;
	//LibIpv6
	import from LibIpv6_Rfc2460Root_TypesAndValues all;
	import from LibIpv6_MultiRfcs_TypesAndValues all ;

	group IkeRfc4306CommonConstants {

		group IkeRfc4306ProtocolsIds {
			const UInt8	c_protocolIke 	:= 1;
			const UInt8	c_protocolAh 	:= 2;
			const UInt8	c_protocolEsp 	:= 3;
		} // end group IkeRfc4306ProtocolsIds

		group IkeRfc4306EncrAlgorithms {
			const UInt8	c_encrAlgoDesIv64		:= 1;
			const UInt8	c_encrAlgoDes	 		:= 2;
			const UInt8	c_encrAlgo3Des			:= 3;
			const UInt8	c_encrAlgoRc5			:= 4;
			const UInt8	c_encrAlgoIdea			:= 5;
			const UInt8	c_encrAlgoCast			:= 6;
			const UInt8	c_encrAlgoBlowfish		:= 7;
			const UInt8	c_encrAlgo3Idea			:= 8;
			const UInt8	c_encrAlgoDesIv32		:= 9;
			const UInt8	c_encrAlgoNull			:= 11;
			const UInt8	c_encrAlgoAesCbc		:= 12;
			const UInt8	c_encrAlgoAesCtr		:= 13;
		} // end group IkeRfc4306EncrAlgorithms

		group IkeRfc4306PseudoRandomFunctions {
			const UInt8	c_prfHmacMd5		:= 1;
			const UInt8	c_prfHmacSha1 		:= 2;
			const UInt8	c_prfHmacTiger		:= 3;
			const UInt8	c_prfAes128Xcbc		:= 4;
		} // end group IkeRfc4306PseudoRandomFunctions

		group IkeRfc4306IntegAlgorithms {
			const UInt8	c_integAlgoHmacMd596		:= 1;
			const UInt8	c_integAlgoHmacSha196 		:= 2;
			const UInt8	c_integAlgoDesMac			:= 3;
			const UInt8	c_integAlgoKpdkMd5			:= 4;
			const UInt8	c_integAlgoAesXcbc96		:= 5;
		} // end group IkeRfc4306IntegAlgorithms

		group IkeRfc4306CertEncodings {
			const UInt8	c_certEncodingPkcs7wrappedX509Certificate	:= 1;
			const UInt8	c_certEncodingPgpCertificate			 	:= 2;
			const UInt8	c_certEncodingDnsSignedKey					:= 3;
			const UInt8	c_certEncodingX509CertificateSignature		:= 4;
			const UInt8	c_certEncodingKerberosToken					:= 6;
			const UInt8	c_certEncodingCertificateRevocationList		:= 7;
			const UInt8	c_certEncodingAuthorityRevocationList		:= 8;
			const UInt8	c_certEncodingSpkiCertificate				:= 9;
			const UInt8	c_certEncodingX509CertificateAttribute		:= 10;
			const UInt8	c_certEncodingRawRsaKey						:= 11;
			const UInt8	c_certEncodingHashAndUrlOfX509Certificate	:= 12;
			const UInt8	c_certEncodingHashAndUrlOfX509Bundle		:= 13;
		} // end group IkeRfc4306CertEncodings

	} // end group IkeRfc4306CommonConstants
		
	group ikeRfc4306Packets {

		/*
		 * @desc TODO
		*/
		type record IkePacket {
			Ipv6Header			ipv6Hdr,
			ExtensionHeaderList extHdrList optional,
			Oct2		        sourcePort, // TODO: UDP Header
			Oct2		        destPort,
			UInt16		        msgLength,																																								
			Oct2		        checksum,
			// IKEv2 Header
			Oct4				padding optional,
			Oct8				initiatorSpi,
			Oct8				responderSpi,
			UInt8				nextPayload,
			UInt4				majorVersion,
			UInt4				minorVersion,
			UInt8				exchangeType,
			UInt8				flags,
			Oct4				messageID,
			Oct4				messageLength,
			IkePayloadList		payloadList
		}
		with {
			encode "TODO";
		}

		group IkeRfc4306ExchangeTypes {
			const UInt8	c_ikeSaInit 	:= 34;
			const UInt8	c_ikeAuth	 	:= 35;
			const UInt8	c_createChildSa	:= 36;
			const UInt8	c_informational := 37;
		} // end group IkeRfc4306ExchangeTypes

 	} //end group ikePackets

	group ikeRfc4306Payloads {

		group IkeRfc4306PayloadIds {
			const UInt8	c_securityAssociation 	:= 33;
			const UInt8	c_keyExchange 		  	:= 34;
			const UInt8	c_idInitiator			:= 35;
			const UInt8	c_idResponder			:= 36;
			const UInt8	c_certificate			:= 37;
			const UInt8	c_certificateRequest	:= 38;
			const UInt8	c_authentication		:= 39;
			const UInt8	c_nonce					:= 40;
			const UInt8	c_notify				:= 41;
			const UInt8	c_delete				:= 42;
			const UInt8	c_vendorId				:= 43;
			const UInt8	c_tsInitiator			:= 44;
			const UInt8	c_tsResponder			:= 45;
			const UInt8	c_encrypted				:= 46;
			const UInt8	c_configuration			:= 47;
			const UInt8	c_extensibleAuth		:= 48;
		} // end group IkeRfc4306PayloadIDs

		/*
		 * @desc TODO
		*/
		type union IkePayload {
			SecurityAssociationPayload 	securityAssociation,
			KeyExchangePayload			keyExchange,
			IdentificationPayload 		idInitiator,
			IdentificationPayload 		idResponder,
			CertificatePayload 			certificate,
			CertificateRequestPayload 	certificateRequest,
			AuthenticationPayload 		authentication,
			NoncePayload 				nonce,
			NotifyPayload 				notify,
			DeletePayload 				delete,
			VendorIdPayload 			vendorId,
			TrafficSelectorPayload		tsInitiator,
			TrafficSelectorPayload		tsResponder,
			EncryptedPayload 			encrypted,
			ConfigurationPayload 		configuration,
			ExtensibleAuthPayload 		extensibleAuth
		} 
		with {
			encode "TODO";
		}

		const UInt8 c_maxIkePaylods  := 10; //FIXME

		/*
		 * @desc TODO
		*/
		type set length(1 .. c_maxIkePaylods) of IkePayload IkePayloadList
		with {
			encode "TODO";
		}

		group IkeRfc4306SecurityAssociationPayload {

			/*
			 * @desc Derived from  RFC 4306 Section 3.3
			*/
			type record SecurityAssociationPayload {
				UInt8			nextPayload,
				UInt1			criticalFlag,
				UInt7			reserved,
				UInt16			payloadLength,
				SaProposalList	saProposalList
			} 
			with {
				encode "TODO";
			}

			group IkeRfc4306SaProposal {

				/*
				 * @desc Derived from  RFC 4306 Section 3.3.1
				*/
				type record SaProposal {
					UInt8			lastProposal,
					UInt8			reserved,
					UInt16			proposalLength,
					UInt8			proposalNumber,
					UInt8			protocolId,
					UInt8			spiSize,
					UInt8			numberOfTransforms,
					octetstring		spi,
					SaTransformList	saTransformList
				} 
				with {
					encode "TODO";
				}

				const UInt8 c_maxIkeSaProposals  := 10; //FIXME

				/*
				 * @desc TODO
				*/
				type set length(1 .. c_maxIkeSaProposals) of SaProposal SaProposalList
				with {
					encode "TODO";
				}
				
				group IkeRfc4306SaTransform {

					group IkeRfc4306SaTransformTypes {
						const UInt8	c_transformEncr		:= 1;
						const UInt8	c_transformPrf 		:= 2;
						const UInt8	c_transformInteg 	:= 3;
						const UInt8	c_transformDh 		:= 4;
						const UInt8	c_transformEsn 		:= 5;
					} // end group IkeRfc4306SaTransformTypes

					/*
					 * @desc Derived from  RFC 4306 Section 3.3.2
					*/
					type record SaTransform {
						UInt8						lastTransform,
						UInt8						reserved1,
						UInt16						transformLength,
						UInt8						transformType,
						UInt8						reserved2,
						UInt8						transformId,
						SaTransformAttributeList	saTransformAttributeList
					} 
					with {
						encode "TODO";
					}

					group IkeRfc4306ExtentedSequenceNumbers {
						const UInt8	c_extentedSequenceNumbersNo		:= 0;
						const UInt8	c_extentedSequenceNumbersYes	:= 1;
					} // end group IkeRfc4306ExtentedSequenceNumbers


					const UInt8 c_maxIkeSaTransforms  := 10; //FIXME

					/*
					 * @desc TODO
					*/
					type set length(1 .. c_maxIkeSaTransforms) of SaTransform SaTransformList
					with {
						encode "TODO";
					}
					
					group IkeRfc4306SaTransformAttributes {

						group IkeRfc4306TransformAttributeTypes {
							const UInt8	c_saTransformAttributeKeyLength		:= 14;
						} // end group IkeRfc4306TransformAttributeTypes

						/*
						 * @desc TODO
						*/
						type union SaTransformAttribute {
							SaTransformAttributeKeyLength	keyLength
						} 
						with {
							encode "TODO";
						}

						const UInt8 c_maxIkeSaTransformAttributes  := 10; //FIXME

						/*
						 * @desc TODO
						*/
						type set length(1 .. c_maxIkeSaTransformAttributes) of SaTransformAttribute SaTransformAttributeList
						with {
							encode "TODO";
						}

						/*
						 * @desc Derived from  RFC 4306 Section 3.3.5
						*/
						type record SaTransformAttributeKeyLength {
							UInt1	attributeFormat(c_attributeFormatTv),
							UInt15	attributeType(c_saTransformAttributeKeyLength),
							UInt16	attributeValue		
						} 
						with {
							encode "TODO";
						}

						group IkeRfc4306TransformAttributeFormats {
							const UInt1 c_attributeFormatTlv 	:= 0;
							const UInt1 c_attributeFormatTv 	:= 1;
						} // end group IkeRfc4306TransformAttributeFormats

				 	} //end group IkeRfc4306SaTransformAttributes

				} // end group IkeRfc4306SaTransform

			} // end group IkeRfc4306SaProposal

		} // end group IkeRfc4306SecurityAssociationPayload


		group IkeRfc4306KeyExchangePayload {

			/*
			 * @desc Derived from  RFC 4306 Section 3.4
			*/
			type record KeyExchangePayload {
				UInt8			nextPayload,
				UInt1			criticalFlag,
				UInt7			reserved1,
				UInt16			payloadLength,
				UInt16			dhGroup,
				UInt16			reserved2,
				octetstring		data
			} 
			with {
				encode "TODO";
			}

		} // end group IkeRfc4306KeyExchangePayload		


		group IkeRfc4306IdentificationPayload {

			/*
			 * @desc Derived from  RFC 4306 Section 3.5
			*/
			type record IdentificationPayload {
				UInt8			nextPayload,
				UInt1			criticalFlag,
				UInt7			reserved1,
				UInt16			payloadLength,
				UInt8			idType,
				UInt24			reserved2,
				octetstring		data
			} 
			with {
				encode "TODO";
			}

			group IkeRfc4306IdentificationTypes {
				const UInt8	c_identificationIpv4Addr 	:= 1;
				const UInt8	c_identificationFqdn	  	:= 2;
				const UInt8	c_identificationRfc822Addr	:= 3;
				const UInt8	c_identificationIpv6Addr	:= 5;
				const UInt8	c_identificationDerAsn1Dn	:= 9;
				const UInt8	c_identificationDerAsn1Gn	:= 10;
				const UInt8	c_identificationKeyId		:= 11;
			} // end group IkeRfc4306IdentificationTypes

		} // end group IkeRfc4306IdentificationPayload		


		group IkeRfc4306CertificatePayload {

			/*
			 * @desc Derived from  RFC 4306 Section 3.6
			*/
			type record CertificatePayload {
				UInt8			nextPayload,
				UInt1			criticalFlag,
				UInt7			reserved,
				UInt16			payloadLength,
				UInt8			certEncoding,
				octetstring		data
			} 
			with {
				encode "TODO";
			}

		} // end group IkeRfc4306CertificatePayload	


		group IkeRfc4306CertificateRequestPayload {

			/*
			 * @desc Derived from  RFC 4306 Section 3.7
			*/
			type record CertificateRequestPayload {
				UInt8			nextPayload,
				UInt1			criticalFlag,
				UInt7			reserved,
				UInt16			payloadLength,
				UInt8			certEncoding,
				octetstring		certificationAuthority
			} 
			with {
				encode "TODO";
			}

		} // end group IkeRfc4306CertificateRequestPayload		


		group IkeRfc4306AuthenticationPayload {

			/*
			 * @desc Derived from  RFC 4306 Section 3.8
			*/
			type record AuthenticationPayload {
				UInt8			nextPayload,
				UInt1			criticalFlag,
				UInt7			reserved1,
				UInt16			payloadLength,
				UInt8			authMethod,
				UInt24			reserved2,
				octetstring		data
			} 
			with {
				encode "TODO";
			}

			group IkeRfc4306AuthenticationMethod {
				const UInt8	c_authenticationRsaDigitalSignature			:= 1;
				const UInt8	c_authenticationSharedKeyMsgIntegrityCode	:= 2;
				const UInt8	c_authenticationDssDigitalSignature			:= 3;
			} // end group IkeRfc4306AuthenticationMethod 

		} // end group IkeRfc4306AuthenticationPayload	


		group IkeRfc4306NoncePayload {

			/*
			 * @desc Derived from  RFC 4306 Section 3.9
			*/
			type record NoncePayload {
				UInt8			nextPayload,
				UInt1			criticalFlag,
				UInt7			reserved,
				UInt16			payloadLength,
				octetstring		data
			} 
			with {
				encode "TODO";
			}

		} // end group IkeRfc4306NoncePayload		


		group IkeRfc4306NotifyPayload {

			group IkeRfc4306NotifyTypes {
				const UInt16 c_notifyUnsupportedCriticalPayload	:= 1;
				const UInt16 c_notifyInvalidIkeSpi				:= 4;
				const UInt16 c_notifyInvalidMajorVersion		:= 5;
				const UInt16 c_notifyInvalidSyntax				:= 7;
				const UInt16 c_notifyInvalidMessageId			:= 9;
				const UInt16 c_notifyInvalidSpi					:= 11;
				const UInt16 c_notifyNoProposalChosen			:= 14;
				const UInt16 c_notifyInvalidKePayload			:= 17;
				const UInt16 c_notifyAuthenticationFailed		:= 24;
				const UInt16 c_notifySnglePairRequired			:= 34;
				const UInt16 c_notifyNoAdditionalSas			:= 35;
				const UInt16 c_notifyInternalAddressFailure		:= 36;
				const UInt16 c_notifyFailedCpRequired			:= 37;
				const UInt16 c_notifyTsUnacceptable				:= 38;
				const UInt16 c_notifyInvalidSelectors			:= 39;
				const UInt16 c_notifyInitialContact				:= 16384;
				const UInt16 c_notifySetWindowSize				:= 16385;
				const UInt16 c_notifyAdditionalTsPossible		:= 16386;
				const UInt16 c_notifyIpcompSupported			:= 16387;
				const UInt16 c_notifyNatDetectionSourceIp		:= 16388;
				const UInt16 c_notifyNatDetectionDestinationIp	:= 16389;
				const UInt16 c_notifyCookie						:= 16390;
				const UInt16 c_notifyUseTransportMode			:= 16391;
				const UInt16 c_notifyHttpCertLookupSupported	:= 16392;
				const UInt16 c_notifyRekeySa					:= 16393;
				const UInt16 c_notifyEspTfcPaddingNotSupported	:= 16394;
				const UInt16 c_notifyNonFirstFragmentsAlso		:= 16395;
			} // end group IkeRfc4306NotifyTypes
			
			/*
			 * @desc Derived from  RFC 4306 Section 3.10
			*/
			type record NotifyPayload {
				UInt8			nextPayload,
				UInt1			criticalFlag,
				UInt7			reserved,
				UInt16			payloadLength,
				UInt8			protocolId,
				UInt8			spiSize,
				UInt16			notifyMessageType,
				octetstring		spi,
				octetstring		data
			} 
			with {
				encode "TODO";
			}

		} // end group IkeRfc4306NotifyPayload		


		group IkeRfc4306DeletePayload {

			/*
			 * @desc Derived from  RFC 4306 Section 3.11
			*/
			type record DeletePayload {
				UInt8			nextPayload,
				UInt1			criticalFlag,
				UInt7			reserved,
				UInt8			protocolId,
				UInt8			spiSize,
				UInt16			numberOfSpi,
				octetstring		spis
			} 
			with {
				encode "TODO";
			}

		} // end group IkeRfc4306DeletePayload		


		group IkeRfc4306VendorIdPayload {

			/*
			 * @desc Derived from  RFC 4306 Section 3.12
			*/
			type record VendorIdPayload {
				UInt8			nextPayload,
				UInt1			criticalFlag,
				UInt7			reserved,
				UInt16			payloadLength,
				octetstring		vendorId
			} 
			with {
				encode "TODO";
			}

		} // end group IkeRfc4306VendorIdPayload	


		group IkeRfc4306TrafficSelectorPayload {

			/*
			 * @desc Derived from  RFC 4306 Section 3.13
			*/
			type record TrafficSelectorPayload {
				UInt8				nextPayload,
				UInt1				criticalFlag,
				UInt7				reserved1,
				UInt16				payloadLength,
				UInt8				numberOfTs,
				UInt24				reserved2,
				TrafficSelectorList	trafficSelectorList
			} 
			with {
				encode "TODO";
			}
			
			group IkeRfc4306TrafficSelector {

				group IkeRfc4306TrafficSelectorTypes {
					const UInt8	c_tsIpv4AddrRange	:= 7;
					const UInt8	c_tsIpv6AddrRange	:= 8;
				} // end group IkeRfc4306TrafficSelectorTypes

				/*
				 * @desc TODO
				*/
				type union TsTrafficSelector {
					TsIpv4TrafficSelector	tsIpv4TrafficSelector,
					TsIpv6TrafficSelector	tsIpv6TrafficSelector
				} 
				with {
					encode "TODO";
				}

				const UInt8 c_maxTrafficSelectors  := 10; //FIXME

				/*
				 * @desc TODO
				*/
				type set length(1 .. c_maxTrafficSelectors) of TsTrafficSelector TrafficSelectorList
				with {
					encode "TODO";
				}

				/*
				 * @desc Derived from  RFC 4306 Section 3.13.1
				*/
				type record TsIpv4TrafficSelector {
					UInt8	tsType(c_tsIpv4AddrRange),
					UInt8	IpProtocolId,
					UInt16	tsLength,
					UInt16	startPort,
					UInt16	endPort,
					Oct4	startAddress,
					Oct4	endAddress
				} 
				with {
					encode "TODO";
				}

				/*
				 * @desc Derived from  RFC 4306 Section 3.13.1
				*/
				type record TsIpv6TrafficSelector {
					UInt8		tsType(c_tsIpv6AddrRange),
					UInt8		IpProtocolId,
					UInt16		tsLength,
					UInt16		startPort,
					UInt16		endPort,
					Ipv6Address	startAddress,
					Ipv6Address	endAddress
				} 
				with {
					encode "TODO";
				}

			} // end group IkeRfc4306TrafficSelector

		} // end group IkeRfc4306TrafficSelectorPayload	


		group IkeRfc4306EncryptedPayload {

			/*
			 * @desc Derived from  RFC 4306 Section 3.14
			*/
			type record EncryptedPayload {
				UInt8			nextPayload,
				UInt1			criticalFlag,
				UInt7			reserved,
				UInt16			payloadLength,
				octetstring		iv optional,
				IkePayloadList	payloadList,
				octetstring		padding optional,
				UInt8			padLength,
				octetstring		integrityChecksumData optional
			} 
			with {
				encode "TODO";
			}	

		} // end group IkeRfc4306EncryptedPayload		


		group IkeRfc4306ConfigurationPayload {

			group IkeRfc4306ConfigurationTypes {
				const UInt8	c_configRequest	:= 1;
				const UInt8	c_configReply 	:= 2;
				const UInt8	c_configSet		:= 3;
				const UInt8	c_configAck		:= 4;
			} // end group IkeRfc4306ConfigurationTypes

			/*
			 * @desc Derived from  RFC 4306 Section 3.15
			*/
			type record ConfigurationPayload {
				UInt8				nextPayload,
				UInt1				criticalFlag,
				UInt7				reserved1,
				UInt16				payloadLength,
				UInt8				configType,
				UInt24				reserved2,
				ConfigAttributeList	configAttributeList
			} 
			with {
				encode "TODO";
			}	

			group IkeRfc4306ConfigAttribute {

				group IkeRfc4306AttributeTypes {
					const UInt15 c_configInternalIpv4Address	:= 1;
					const UInt15 c_configInternalIpv4Netmask	:= 2;
					const UInt15 c_configInternalIpv4Dns		:= 3;
					const UInt15 c_configInternalIpv4Nbns		:= 4;
					const UInt15 c_configInternalAddressExpiry	:= 5;
					const UInt15 c_configInternalIpv4Dhcp		:= 6;
					const UInt15 c_configApplicationVersion		:= 7;
					const UInt15 c_configInternalIpv6Address	:= 8;
					const UInt15 c_configInternalIpv6Dns		:= 10;
					const UInt15 c_configInternalIpv6Nbns		:= 11;
					const UInt15 c_configInternalIpv6Dhcp		:= 12;
					const UInt15 c_configInternalIpv4Subnet		:= 13;
					const UInt15 c_configSupportedAttributes	:= 14;
					const UInt15 c_configInternalIpv6Subnet		:= 15;
				} // end group IkeRfc4306AttributeTypes

				/*
				 * @desc Derived from  RFC 4306 Section 3.15.1
				*/
				type record ConfigAttribute {
					UInt1				reserved,
					UInt15				attributeType,
					UInt16				attributeLength,
					octetstring			attributeValue
				} 
				with {
					encode "TODO";
				}	

				const UInt8 c_maxConfigAttributes  := 10; //FIXME

				/*
				 * @desc TODO
				*/
				type set length(1 .. c_maxConfigAttributes) of ConfigAttribute ConfigAttributeList
				with {
					encode "TODO";
				}

			} // end group IkeRfc4306ConfigAttribute

		} // end group IkeRfc4306ConfigurationPayload	


		group IkeRfc4306ExtensibleAuthPayload {

			/*
			 * @desc Derived from  RFC 4306 Section 3.16
			*/
			type record ExtensibleAuthPayload {
				UInt8			nextPayload,
				UInt1			criticalFlag,
				UInt7			reserved,
				UInt16			payloadLength,
				EapMessage		eapMessage
			} 
			with {
				encode "TODO";
			}	

			group IkeRfc4306EapMessage {

				/*
				 * @desc Derived from  RFC 4306 Section 3.16
				*/
				type record EapMessage {
					UInt8			code,
					UInt8			identifier,
					UInt16			messageLength,
					UInt8			messageType optional,
					octetstring		data optional
				} 
				with {
					encode "TODO";
				}	

				group IkeRfc4306EapCode {
					const UInt8 c_eapRequest	:= 1;
					const UInt8 c_eapResponse	:= 2;
					const UInt8 c_eapSuccess	:= 3;
					const UInt8 c_eapFailure	:= 4;
				} // end group IkeRfc4306EapCode

				group IkeRfc4306EapType {
					const UInt8 c_eapIdentity		 	:= 1;
					const UInt8 c_eapNotification	 	:= 2;
					const UInt8 c_eapNak			 	:= 3;
					const UInt8 c_eapMd5Challenge	 	:= 4;
					const UInt8 c_eapOneTimePassword 	:= 5;
					const UInt8 c_eapGenericTokencard	:= 6;
				} // end group IkeRfc4306EapType

			} // end group IkeRfc4306EapMessage		

		} // end group IkeRfc4306ExtensibleAuthPayload		

 	} //end group ikeRfc4306Payloads

} // end module LibIpv6_Rfc4306Ikev2_TypesAndValues