# merged: pFa der json decoding
NAME=pFa der decoding
FILE=bins/cert/der
CMDS=<<EOF
pFa
?e --
pFaj~{}
EOF
EXPECT=<<EOF
  OFFSET  HDR +    OBJ DEPTH FORM NAME                : VALUE
       0  0x3 +   0x9f     0 cons SEQUENCE            : 30
     0x3  0x2 +    0xd     1 cons SEQUENCE            : 30
     0x5  0x2 +    0x9     2 prim OBJECT_IDENTIFIER   : rsaEncryption
    0x12  0x3 +   0x8d     1 prim BIT_STRING          : 30818902818100cc61f9ef5ad0bc21de5b3ca69ee725d2c504edf99a6e97a0279d959f2364ed21aaef8c704552d5d1a3deb2... (1120 bits)

--
{
  "offset": 0,
  "length": 159,
  "form": "cons",
  "name": "SEQUENCE",
  "children": [
    {
      "offset": 3,
      "length": 13,
      "form": "cons",
      "name": "SEQUENCE",
      "children": [
        {
          "offset": 5,
          "length": 9,
          "form": "prim",
          "name": "OBJECT_IDENTIFIER",
          "value": "rsaEncryption"
        }
      ]
    },
    {
      "offset": 18,
      "length": 141,
      "form": "prim",
      "name": "BIT_STRING",
      "value": "30818902818100cc61f9ef5ad0bc21de5b3ca69ee725d2c504edf99a6e97a0279d959f2364ed21aaef8c704552d5d1a3deb2ee1a0be1558e3ca182b11a8c14392b6de52346bc7c88bf75e3fb2b9f27fab21f5cf19934e3110ea4ad72a6f073f8ab38b9939bb639e78ad7f434119d8cc2b1bde4eaf9513b056508c908ed43c99b0ceb222cbbe1ef0203010001"
    }
  ]
}
EOF
RUN

NAME=pFa BIT_STRING with number of unused bits
FILE=-
CMDS=<<EOF
wx 030801016e500dc00000
pFa
EOF
EXPECT=<<EOF
  OFFSET  HDR +    OBJ DEPTH FORM NAME                : VALUE
       0  0x2 +    0x8     0 prim BIT_STRING          : 016e500dc00000 (55 bits)

EOF
RUN

NAME=pFa BIT_STRING at the end of the block
FILE=-
CMDS=<<EOF
e scr.utf8=true
wx 3004030200ff41
b 6
pFa
pFat
pFaj
EOF
EXPECT=<<EOF
  OFFSET  HDR +    OBJ DEPTH FORM NAME                : VALUE
       0  0x2 +    0x4     0 cons SEQUENCE            : 30
     0x2  0x2 +    0x2     1 prim BIT_STRING          : ff (8 bits)

.
├─┬  [@ 0x0](0x2 + 0x4) - 30
│ └──  [@ 0x2](0x2 + 0x2) - ff

{"offset":0,"length":4,"form":"cons","name":"SEQUENCE","children":[{"offset":2,"length":2,"form":"prim","name":"BIT_STRING","value":"ff"}]}
EOF
RUN

NAME=pFa BOOLEAN with empty and valid content
FILE=-
CMDS=<<EOF
wx 018100ff
b 3
pFaj
wx 010100
pFaj
wx 0101ff
pFaj
EOF
EXPECT=<<EOF
{"offset":0,"length":0,"form":"prim","name":"BOOLEAN"}
{"offset":0,"length":1,"form":"prim","name":"BOOLEAN","value":"false"}
{"offset":0,"length":1,"form":"prim","name":"BOOLEAN","value":"true"}
EOF
RUN

NAME=pFa on Ed25519 OID
FILE=-
CMDS=<<EOF
wx 06032b6570
pFa
EOF
EXPECT=<<EOF
  OFFSET  HDR +    OBJ DEPTH FORM NAME                : VALUE
       0  0x2 +    0x3     0 prim OBJECT_IDENTIFIER   : id-Ed25519

EOF
RUN

NAME=pFa OCTET_STRING
FILE=-
CMDS=<<EOF
wx 3009040265210403650065
pFa
EOF
EXPECT=<<EOF
  OFFSET  HDR +    OBJ DEPTH FORM NAME                : VALUE
       0  0x2 +    0x9     0 cons SEQUENCE            : 30
     0x2  0x2 +    0x2     1 prim OCTET_STRING        : e!
     0x6  0x2 +    0x3     1 prim OCTET_STRING        : 650065

EOF
RUN

NAME=pFa stops at the asn1 nesting limit on deep indefinite-length sequences
FILE=malloc://200004
TIMEOUT=30
CMDS=<<EOF
wow 3080 @ 0!200000
pFa 200002~?
pFa 200002~ 64 cons
EOF
EXPECT=<<EOF
66
    0x80  0x2 + 0x30c40    64 cons SEQUENCE            : 30
EOF
RUN
