numbersprotocol / pyc2pa

Python implementation of C2PA: Coalition for Content Provenance and Authenticity.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Fail to parse the generated CAI data

bafu opened this issue · comments

Steps to Reproduce

  1. Create CAI data by entering these answers
$ python3 cai_tool.py | tee starling-cai-rollback.txt
How many assertions? 4
Assertion JSON: data/Assertions/starling.device.json
Assertion Label: starling.device
Assertion JSON: data/Assertions/starling.integrity.json
Assertion Label: starling.integrity
Assertion JSON: data/Assertions/starling.location.precise.json
Assertion Label: starling.location.precise
Assertion JSON: data/Assertions/starling.sensors.json
Assertion Label: starling.sensors
Claim JSON: data/Claim/starling.claim.json
Store label: cb.starling_1
  1. Insert the CAI data into dog.jpg after the leading bytes FFD8

  2. Run CAI parser

You will get the error *** box unknown box has invalid box length

Screenshot from 2020-12-20 14-33-11

Environment

  • starling-cai: commit dfe61a3 (cai-tool)
  • codestream-parser: commit 7fb6d4b (feature-support-py3)

Fix: cee4cdc

Error in assertion super_block (see line 259 - 263) in def create_assertions(list, label). Was inputting in the same super_block for every assertion.

Result for Image: DSCN0010.jpg
DSCN0010

(base) MacintoshUsers-MacBook-2:codestream-parser macuser$ python jp2file.py DSCN0010.jpg 
###############################################################
# JP2 file format log file generated by jp2file.py            #
###############################################################

0       : New marker: SOI (Start of image)


2       : New marker: APP11 (JPEG XT Extension Marker)

    0       : Sub Box: "jumb" JUMBF Box
      8       : Sub Box: "jumd"         JUMBF Description box
        TYPE: 63 61 63 62 00 11 00 10 80 00 00 aa 00 38 9b 71
        TOGGLES: 0b11
        LABEL: cai
        No ID
        No Signature

      37      : Sub Box: "jumb" JUMBF Box
        45      : Sub Box: "jumd"           JUMBF Description box
          TYPE: 63 61 73 74 00 11 00 10 80 00 00 aa 00 38 9b 71
          TOGGLES: 0b11
          LABEL: cb.starling_1
          No ID
          No Signature

        84      : Sub Box: "jumb" JUMBF Box
          92      : Sub Box: "jumd"             JUMBF Description box
            TYPE: 6a 73 6f 6e 00 11 00 10 80 00 00 aa 00 38 9b 71
            TOGGLES: 0b11
            LABEL: cai.assertions
            No ID
            No Signature

          132     : Sub Box: "jumb" JUMBF Box
            140     : Sub Box: "jumd"               JUMBF Description box
              TYPE: 6a 73 6f 6e 00 11 00 10 80 00 00 aa 00 38 9b 71
              TOGGLES: 0b11
              LABEL: starling.location.precise
              No ID
              No Signature

            191     : Sub Box: "json" JSON box
              Data:
              {"starling:GPSAccuracy": "11.792", "starling:GPSAltitude": -4.617279053, "starling:GPSBaring": 212.94905, "starling:GPSBearingAccuracy": 0.0, "starling:GPSLatitude": "25,2,42.842N", "starling:GPSLongitude": "121,31,50.861E", "starling:GPSSpeed": 0.20248456, "starling:GPSSpeedAccuracy": 0.20248456, "starling:GPSTime": 1583266055000, "starling:GPSTimeStamp": "2020-03-03T20:07:35Z", "starling:GPSVerticalAccuracy": 8.0}


          618     : Sub Box: "jumb" JUMBF Box
            626     : Sub Box: "jumd"               JUMBF Description box
              TYPE: 6a 73 6f 6e 00 11 00 10 80 00 00 aa 00 38 9b 71
              TOGGLES: 0b11
              LABEL: starling.sensors
              No ID
              No Signature

            668     : Sub Box: "json" JSON box
              Data:
              {"starling:SensorAccelerometer": "SensorData(accuracy=3.0, value=[-2.2584498, 5.544669, 7.7695217])", "starling:SensorAccelerometerUncalibrated": "SensorData(accuracy=3.0, value=[-1.820267, 5.5468745, 7.781287, 0.0, 0.0, 0.0])", "starling:SensorGameRotationVector": "SensorData(accuracy=3.0, value=[0.28894028, 0.089926116, -0.077565834, 0.94995135])", "starling:SensorGeomagneticRotationVector": "SensorData(accuracy=3.0, value=[0.13018766, 0.28469607, 0.67535406, 0.66776913, 0.0])", "starling:SensorGravity": "SensorData(accuracy=NO_UPDATE_RECEIVED_DURING_SNAP, value=[-2.1173487, 5.2436786, 8.011802])", "starling:SensorGyroscope": "SensorData(accuracy=3.0, value=[0.0090546375, 0.0026631376, 0.011718297])", "starling:SensorGyroscopeUncalibrated": "SensorData(accuracy=3.0, value=[-0.007457021, 0.004261021, -0.0069242665, 0.0, 0.0, 0.0])", "starling:SensorLight": "SensorData(accuracy=3.0, value=[477.0, 0.0, 0.0])", "starling:SensorLinearAcceleration": "SensorData(accuracy=NO_UPDATE_RECEIVED_DURING_SNAP, value=[0.19492735, 0.059680037, 0.20064202])", "starling:SensorMagneticField": "SensorData(accuracy=NO_UPDATE_RECEIVED_DURING_SNAP, value=[106.72393, -18.183104, -12.878148])", "starling:SensorMagneticFieldUncalibrated": "SensorData(accuracy=3.0, value=[105.09807, 27.845383, -12.322319, 9.477424E-38, 46.511898, 0.20629947])", "starling:SensorRotationVector": "SensorData(accuracy=3.0, value=[0.14844818, 0.26368022, 0.59541535, 0.7442592, 0.0])"}


          2137    : Sub Box: "jumb" JUMBF Box
            2145    : Sub Box: "jumd"               JUMBF Description box
              TYPE: 6a 73 6f 6e 00 11 00 10 80 00 00 aa 00 38 9b 71
              TOGGLES: 0b11
              LABEL: starling.device
              No ID
              No Signature

            2186    : Sub Box: "json" JSON box
              Data:
              {"android:AndroidIdHash": "8b46aab82c3867c7bda32682b1534178d7fce95dce749aa20ccc7d83708ddb7a", "android:BuildId": "PQ2A.190205.003 release-keys", "android:BuildTags": "release-keys", "android:BuildTime": 1583266055000, "android:BuildTimestamp": "2020-04-12T04:33:00Z", "android:BuildType": "user", "android:DeviceBoard": "sdm845", "android:DeviceBrand": "htc", "android:DeviceName": "htc_exodugl", "android:EndProductName": "EXODUS 1", "android:Fingerprint": "htc/exodugl_00709/htc_exodugl:9/PQ2A.190205.003/1109191.2:user/release-keys", "android:Hardware": "htc_exo", "android:Manufacturer": "HTC", "android:OverallProductName": "exodugl_00709"}


          2839    : Sub Box: "jumb" JUMBF Box
            2847    : Sub Box: "jumd"               JUMBF Description box
              TYPE: 6a 73 6f 6e 00 11 00 10 80 00 00 aa 00 38 9b 71
              TOGGLES: 0b11
              LABEL: starling.integrity
              No ID
              No Signature

            2891    : Sub Box: "json" JSON box
              Data:
              {"starling:PublicKey": "-----BEGIN PGP PUBLIC KEY BLOCK-----Version: BCPG v@RELEASE_NAME@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YeTD-----END PGP PUBLIC KEY BLOCK-----", "starling:MediaHash": "ba51b0f154bb75d3e5f557569e4612b2e1e04c556e5beaf27bfcde040412de52", "starilng:MediaKey": "ba51b0f154_1583258659459"}



        6092    : Sub Box: "jumb" JUMBF Box
          6100    : Sub Box: "jumd"             JUMBF Description box
            TYPE: 63 61 63 6c 00 11 00 10 80 00 00 aa 00 38 9b 71
            TOGGLES: 0b11
            LABEL: cai.claim
            No ID
            No Signature

          6135    : Sub Box: "json" JSON box
            Data:
            {"recorder": "Starling Capture", "signature": "self#jumbf=cai/cb.starling_1/cai.signature", "assertions": ["self#jumbf=cai/cb.starling_1/cai.assertions/starling.location.precise?hl=z26ycANRgtWbqYX9cdsWD4rsTqz8RYHQArrq4CZJwZn1cxX73kTP6x3rRcBsUfMoBUAVbTEB7K", "self#jumbf=cai/cb.starling_1/cai.assertions/starling.sensors?hl=z26ycANRgtWbqYX9cdsWD4rsTqz8RYHQArrq4CZJwZn1cxX73kTP6x3rRcBsUfMvY4QFEN3973", "self#jumbf=cai/cb.starling_1/cai.assertions/starling.device?hl=z26ycANRgtWbqYX9cdsWD4rsTqz8RYHQArrq4CZJwZn1cxX73kTP6x3rRcBsUfMwEoBojZcUrZ", "self#jumbf=cai/cb.starling_1/cai.assertions/starling.integrity?hl=z26ycANRgtWbqYX9cdsWD4rsTqz8RYHQArrq4CZJwZn1cxX73kTP6x3rRcBsUfMo3SG72sZg13"], "asset_hashes": [{"start": "0x0000000000000000", "length": "0x0000000000009959", "name": "JFIF SOI-APP0", "url": "", "value": "EiAuxjtmax46cC2N3Y9aFmBO9Jfay8LEwJWzBUtZ0sUM8gA="}, {"start": "0x0000000000009959", "length": "0x000000000000027d", "name": "JFIF APP1/XMP", "url": "", "value": "EiDjZifCgG2iKxcYeChKTOcWlJ9I/UC9/c5XFiJREqJFpwA="}, {"start": "0x000000000000a90c", "length": "0x00000000000215e6", "name": "JFIF DQT-EOI", "url": "", "value": "EiArx031oA0N5KOEG6n9R/bJJFYJvmGlDoLtuwbRipLTKAA="}]}


        7331    : Sub Box: "jumb" JUMBF Box
          7339    : Sub Box: "jumd"             JUMBF Description box
            TYPE: 63 61 73 67 00 11 00 10 80 00 00 aa 00 38 9b 71
            TOGGLES: 0b11
            LABEL: cai.signature
            No ID
            No Signature

          7378    : Sub Box: "uuid" UUID box
            UUID      : 63 61 73 67 00 11 00 10 80 00 00 aa 00 38 9b 71
            UUID Data :

            73 69 67 6e 61 74 75 72 65 20 70 6c 61 63 65 68    signature placeh
            6f 6c 64 65 72 3a 63 62 2e 73 74 61 72 6c 69 6e    older:cb.starlin
            67 5f 31 20 20 20 20 20 20 20 20 20 20 20 20 20    g_1             
            20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
            20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
            20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
            20 20 20 20 20                                          





7517    : New marker: APP1 (Application marker #1)


18777   : New marker: DQT (Define quantization table)

  Entry size          : byte
  Table destination   : 0
  Quantization Matrix : 
       5     4     3     5     8    13    16    20
       4     4     4     6     8    19    19    18
       4     4     5     8    13    18    22    18
       4     5     7     9    16    28    26    20
       6     7    12    18    22    35    33    25
       8    11    18    20    26    33    36    29
      16    20    25    28    33    39    38    32
      23    29    30    31    36    32    33    32
  Entry size          : byte
  Table destination   : 1
  Quantization Matrix : 
       5     6     8    15    32    32    32    32
       6     7     8    21    32    32    32    32
       8     8    18    32    32    32    32    32
      15    21    32    32    32    32    32    32
      32    32    32    32    32    32    32    32
      32    32    32    32    32    32    32    32
      32    32    32    32    32    32    32    32
      32    32    32    32    32    32    32    32
  Entry size          : byte
  Table destination   : 2
  Quantization Matrix : 
       5     6     8    15    32    32    32    32
       6     7     8    21    32    32    32    32
       8     8    18    32    32    32    32    32
      15    21    32    32    32    32    32    32
      32    32    32    32    32    32    32    32
      32    32    32    32    32    32    32    32
      32    32    32    32    32    32    32    32
      32    32    32    32    32    32    32    32

18976   : New marker: DHT (Define huffman table)

  Huffman table class       : dc
  Huffman table destination : 0
  1 symbols of size  2        : [0]
  5 symbols of size  3        : [1, 2, 3, 4, 5]
  1 symbols of size  4        : [6]
  1 symbols of size  5        : [7]
  1 symbols of size  6        : [8]
  1 symbols of size  7        : [9]
  1 symbols of size  8        : [10]
  1 symbols of size  9        : [11]

  Huffman table class       : ac
  Huffman table destination : 0
  2 symbols of size  2        : [1, 2]
  1 symbols of size  3        : [3]
  3 symbols of size  4        : [0, 4, 17]
  3 symbols of size  5        : [5, 18, 33]
  2 symbols of size  6        : [49, 65]
  4 symbols of size  7        : [6, 19, 81, 97]
  3 symbols of size  8        : [7, 34, 113]
  5 symbols of size  9        : [20, 50, 129, 145, 161]
  5 symbols of size 10        : [8, 35, 66, 177, 193]
  4 symbols of size 11        : [21, 82, 209, 240]
  4 symbols of size 12        : [36, 51, 98, 114]
  1 symbols of size 15        : [130]
  125 symbols of size 16        : [9, 10, 22, 23, 24, 25, 26, 37, 38, 39, 40, 41, 42, 52, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250]

  Huffman table class       : dc
  Huffman table destination : 1
  3 symbols of size  2        : [0, 1, 2]
  1 symbols of size  3        : [3]
  1 symbols of size  4        : [4]
  1 symbols of size  5        : [5]
  1 symbols of size  6        : [6]
  1 symbols of size  7        : [7]
  1 symbols of size  8        : [8]
  1 symbols of size  9        : [9]
  1 symbols of size 10        : [10]
  1 symbols of size 11        : [11]

  Huffman table class       : ac
  Huffman table destination : 1
  2 symbols of size  2        : [0, 1]
  1 symbols of size  3        : [2]
  2 symbols of size  4        : [3, 17]
  4 symbols of size  5        : [4, 5, 33, 49]
  4 symbols of size  6        : [6, 18, 65, 81]
  3 symbols of size  7        : [7, 97, 113]
  4 symbols of size  8        : [19, 34, 50, 129]
  7 symbols of size  9        : [8, 20, 66, 145, 161, 177, 193]
  5 symbols of size 10        : [9, 35, 51, 82, 240]
  4 symbols of size 11        : [21, 98, 114, 209]
  4 symbols of size 12        : [10, 22, 36, 52]
  1 symbols of size 14        : [225]
  2 symbols of size 15        : [37, 241]
  119 symbols of size 16        : [23, 24, 25, 26, 38, 39, 40, 41, 42, 53, 54, 55, 56, 57, 58, 67, 68, 69, 70, 71, 72, 73, 74, 83, 84, 85, 86, 87, 88, 89, 90, 99, 100, 101, 102, 103, 104, 105, 106, 115, 116, 117, 118, 119, 120, 121, 122, 130, 131, 132, 133, 134, 135, 136, 137, 138, 146, 147, 148, 149, 150, 151, 152, 153, 154, 162, 163, 164, 165, 166, 167, 168, 169, 170, 178, 179, 180, 181, 182, 183, 184, 185, 186, 194, 195, 196, 197, 198, 199, 200, 201, 202, 210, 211, 212, 213, 214, 215, 216, 217, 218, 226, 227, 228, 229, 230, 231, 232, 233, 234, 242, 243, 244, 245, 246, 247, 248, 249, 250]


19396   : New marker: SOF (Start of frame, type: baseline)

  Frame bit precision : 8
  Frame width         : 640
  Frame height        : 480
  Depth               : 3
  Component Id        : 1
  MCU Width           : 1
  MCU Height          : 2
  Quantization Table  : 0
  Component Id        : 2
  MCU Width           : 1
  MCU Height          : 1
  Quantization Table  : 1
  Component Id        : 3
  MCU Width           : 1
  MCU Height          : 1
  Quantization Table  : 1

  19415   : New marker: APP1 (Application marker #1)


  23448   : New marker: SOS (Start of Scan)

    Number of Components : 3
    Component  0 : 1
    DC table 0   : 0
    AC table 0   : 0
    Component  1 : 2
    DC table 1   : 1
    AC table 1   : 1
    Component  2 : 3
    DC table 2   : 1
    AC table 2   : 1
    Scan start   : 0
    Scan stop    : 63
    Shift high   : 0
    Shift low    : 0

    145764 bytes of entropy coded data


169226  : New marker: EOI (End of image)


Checksum  : 0xf9ec
Size      : 169230 bytes
Data Size : 145766 bytes
Overhead  : 23464 bytes (13%)

Fixed by PR #1.