{"record":{"id":"7a0f9f53a774a8c9","repo":"projectdiscovery/nuclei","slug":"invalid-payload-type-only-types-defined-in-ikev-mo","errorCode":null,"errorMessage":"invalid payload type only types defined in ikev module like IKENotification, IKENonce, etc. are allowed","messagePattern":"invalid payload type only types defined in ikev module like IKENotification, IKENonce, etc\\. are allowed","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/js/libs/ikev2/ikev2.go","lineNumber":41,"sourceCode":"\t\tExchangeType uint8\n\t\tFlags        uint8\n\t\tpayloads     []IKEPayload\n\t}\n)\n\n// AppendPayload appends a payload to the IKE message\n// payload can be any of the payloads like IKENotification, IKENonce, etc.\n// @example\n// ```javascript\n// const ikev2 = require('nuclei/ikev2');\n// const message = new ikev2.IKEMessage();\n// const nonce = new ikev2.IKENonce();\n// nonce.NonceData = [1, 2, 3];\n// message.AppendPayload(nonce);\n// ```\nfunc (m *IKEMessage) AppendPayload(payload any) error {\n\tif _, ok := payload.(IKEPayload); !ok {\n\t\treturn fmt.Errorf(\"invalid payload type only types defined in ikev module like IKENotification, IKENonce, etc. are allowed\")\n\t}\n\tm.payloads = append(m.payloads, payload.(IKEPayload))\n\treturn nil\n}\n\n// Encode encodes the final IKE message\n// @example\n// ```javascript\n// const ikev2 = require('nuclei/ikev2');\n// const message = new ikev2.IKEMessage();\n// const nonce = new ikev2.IKENonce();\n// nonce.NonceData = [1, 2, 3];\n// message.AppendPayload(nonce);\n// log(message.Encode());\n// ```\nfunc (m *IKEMessage) Encode() ([]byte, error) {\n\tvar payloads message.IKEPayloadContainer\n\tfor _, payload := range m.payloads {","sourceCodeStart":23,"sourceCodeEnd":59,"githubUrl":"https://github.com/projectdiscovery/nuclei/blob/265b3a3dec374741614e342f813c10f8b38d2bb7/pkg/js/libs/ikev2/ikev2.go#L23-L59","documentation":"IKEMessage.AppendPayload only accepts values implementing the IKEPayload interface, i.e. payload structs exported by the ikev2 module itself (IKENotification, IKENonce, IKESAProposal, and similar). A plain JavaScript object literal or primitive does not satisfy the Go interface, so the call is rejected before anything is appended.","triggerScenarios":"message.AppendPayload({PayloadType: 40, NotificationData: [1,2,3]}) constructing a literal instead of using a constructor; passing null or a string; passing a payload struct obtained from a different require() of the module.","commonSituations":"Developers porting Python/Scapy IKE scripts where payloads are dicts; JSON-driven templates that deserialize payload definitions and pass them directly; forgetting the 'new' keyword.","solutions":["Construct payloads with the module constructors: const nonce = new ikev2.IKENonce(); then message.AppendPayload(nonce)","Map deserialized JSON definitions onto real constructor instances before appending","Ensure exactly one require('nuclei/ikev2') instance is used so instanceof checks stay consistent"],"exampleFix":"// before\nmessage.AppendPayload({NonceData: [1, 2, 3]});\n\n// after\nconst nonce = new ikev2.IKENonce();\nnonce.NonceData = [1, 2, 3];\nmessage.AppendPayload(nonce);","handlingStrategy":"type-guard","validationCode":"const ikev2 = require('nuclei/ikev2');\nconst payload = new ikev2.IKENonce();\npayload.NonceData = [1, 2, 3];\nmessage.AppendPayload(payload);","typeGuard":"function isIKEPayload(p) {\n  return [ikev2.IKENotification, ikev2.IKENonce, ikev2.IKESAProposal].some(\n    (ctor) => p instanceof ctor\n  );\n}","tryCatchPattern":"try {\n  message.AppendPayload(payload);\n} catch (e) {\n  // payload was not built by an ikev2 constructor; rebuild it with new ikev2.IKENonce() etc.\n}","preventionTips":["Always build payloads with ikev2 constructors, never object literals","Keep a single require('nuclei/ikev2') reference so instanceof checks are meaningful"],"tags":["ikev2","javascript","type-guard","vpn"],"backgroundTag":null,"analyzedSha":"265b3a3dec374741614e342f813c10f8b38d2bb7","analyzedAt":"2026-08-15T20:05:51.855Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}