MISB 0102 Security Metadata Local Sets

Security Metadata Local Sets for Motion Imagery Data

This standard defines a Security Metadata Universal Set and a Security Metadata Local Set encoded as KLV (Key-Length-Value) elements for marking Motion Imagery Data with security classification information.

It is mandatory to include the Security Metadata Local set (as nested item) into MISB601 Local set.

Encoding data

Using predefined strings, as described in the standard

{
    "1": "UNCLASSIFIED//",
    "2": "ISO_3166_TwoLetter",
    "3": "//IL",
    "4": "Impleo test flight",
    "5": "Test data set",
    "6": "Releasing Instructions Test",
    "7": "Classified By Impleo",
    "8": "Derived From test",
    "9": "Classification Test",
    "10": "20201021",
    "11": "Marking System",
    "12": "ISO_3166_TwoLetter",
    "13": "IL",
    "14": "Comments",
    "22": 9,
    "23": "2020-10-21",
    "24": "2020-10-21"
}

You can also use the integers instead. The result will be same (and work a little bit faster, as no conversion is needed)

{
    "1": 1,
    "2": 1,
    "3": "//IL",
    "4": "Impleo test flight",
    "5": "Test data set",
    "6": "Releasing Instructions Test",
    "7": "Classified By Impleo",
    "8": "Derived From test",
    "9": "Classification Test",
    "10": "20201021",
    "11": "Marking System",
    "12": 1,
    "13": "IL",
    "14": "Comments",
    "22": 12,
    "23": "2020-10-21",
    "24": "2020-10-21"
}

Note, in most cases, you should probably deal with the Security Metadata Local Set as a nested data and use a parent MISB601 class instance, without dealing directly with MISB102 library.

To encode the MISB102 payload we need to create an instance of MISB102 and pass the string to the EncodePayload method. Note, we're using EncodePayload and not EncodePacket as the results are used by the parent local set which assigns a tag (48, in case of MISB601) and uses the length of the encoded buffer as Klv length.

MISB102 misb102 = new MISB102();
var buf = misb102.EncodePayload(pckt);

Decoding data

Note, Same as with encoding. In most cases, you should will deal with the Security Metadata Local Set as a nested data and use a parent MISB601 class instance, without dealing directly with MISB102 library.

MISB102 misb102 = new MISB102();
var pckt = misb102.DecodePayload(buf);

Supported MISB 102 tags