Method: Rex::Java::Serialization::Model::NewClassDesc#encode

Defined in:
lib/rex/java/serialization/model/new_class_desc.rb

#encodeString

Serializes the Rex::Java::Serialization::Model::ClassDescription

Returns:

  • (String)

    if serialization succeeds

Raises:



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/rex/java/serialization/model/new_class_desc.rb', line 68

def encode
  unless class_name.class == Rex::Java::Serialization::Model::Utf ||
          class_annotation.class == Rex::Java::Serialization::Model::Annotation ||
          super_class.class == Rex::Java::Serialization::Model::ClassDesc
    raise Rex::Java::Serialization::EncodeError, 'Filed to serialize NewClassDesc'
  end
  encoded = ''
  encoded << class_name.encode
  encoded << [serial_version].pack('q>')
  encoded << [flags].pack('C')
  encoded << [fields.length].pack('n')
  fields.each do |field|
    encoded << field.encode
  end
  encoded << class_annotation.encode
  encoded << super_class.encode

  encoded
end