Home | History | Annotate | Line # | Download | only in tools
      1  1.1.1.2  christos #!/bin/sh -ex
      2  1.1.1.2  christos 
      3  1.1.1.4  christos # Copyright (c) 2021-2022 Yubico AB. All rights reserved.
      4      1.1  christos # Use of this source code is governed by a BSD-style
      5      1.1  christos # license that can be found in the LICENSE file.
      6  1.1.1.4  christos # SPDX-License-Identifier: BSD-2-Clause
      7      1.1  christos 
      8  1.1.1.2  christos # usage: ./test.sh "$(mktemp -d fido2test-XXXXXXXX)" device
      9      1.1  christos 
     10  1.1.1.2  christos # Please note that this test script:
     11  1.1.1.2  christos # - is incomplete;
     12  1.1.1.2  christos # - assumes CTAP 2.1-like hmac-secret;
     13  1.1.1.2  christos # - should pass as-is on a YubiKey with a PIN set;
     14  1.1.1.2  christos # - may otherwise require set +e above;
     15  1.1.1.2  christos # - can be executed with UV=1 to run additional UV tests;
     16  1.1.1.5  christos # - was last tested on 2024-06-15 with firmware 5.7.1.
     17  1.1.1.2  christos 
     18  1.1.1.2  christos cd "$1"
     19  1.1.1.2  christos DEV="$2"
     20  1.1.1.4  christos TYPE="es256"
     21  1.1.1.4  christos #TYPE="es384"
     22  1.1.1.4  christos #TYPE="eddsa"
     23  1.1.1.2  christos 
     24  1.1.1.2  christos make_cred() {
     25  1.1.1.4  christos 	sed /^$/d > cred_param << EOF
     26  1.1.1.2  christos $(dd if=/dev/urandom bs=32 count=1 2>/dev/null | base64)
     27  1.1.1.2  christos $1
     28  1.1.1.2  christos some user name
     29  1.1.1.2  christos $(dd if=/dev/urandom bs=32 count=1 2>/dev/null | base64)
     30  1.1.1.2  christos EOF
     31  1.1.1.5  christos 	fido2-cred -M "$2" "${DEV}" "${TYPE}" > "$3" < cred_param
     32  1.1.1.2  christos }
     33      1.1  christos 
     34  1.1.1.2  christos verify_cred() {
     35  1.1.1.5  christos 	fido2-cred -V "$1" "${TYPE}" > cred_out < "$2" || return 1
     36  1.1.1.2  christos 	head -1 cred_out > "$3"
     37  1.1.1.2  christos 	tail -n +2 cred_out > "$4"
     38  1.1.1.2  christos }
     39      1.1  christos 
     40  1.1.1.2  christos get_assert() {
     41  1.1.1.4  christos 	sed /^$/d > assert_param << EOF
     42  1.1.1.2  christos $(dd if=/dev/urandom bs=32 count=1 2>/dev/null | base64)
     43  1.1.1.2  christos $1
     44  1.1.1.5  christos $(cat "$3")
     45  1.1.1.5  christos $(cat "$4")
     46  1.1.1.2  christos EOF
     47  1.1.1.5  christos 	# we want to expand $2
     48  1.1.1.5  christos 	# shellcheck disable=SC2086
     49  1.1.1.2  christos 	fido2-assert -G $2 "${DEV}" > "$5" < assert_param
     50      1.1  christos }
     51      1.1  christos 
     52  1.1.1.2  christos verify_assert() {
     53  1.1.1.5  christos 	fido2-assert -V "$1" "$2" "${TYPE}" < "$3"
     54  1.1.1.2  christos }
     55  1.1.1.2  christos 
     56  1.1.1.2  christos dd if=/dev/urandom bs=32 count=1 | base64 > hmac-salt
     57  1.1.1.2  christos 
     58  1.1.1.2  christos # u2f
     59  1.1.1.5  christos if [ "${TYPE}" = "es256" ]; then
     60  1.1.1.4  christos 	make_cred no.tld "-u" u2f
     61  1.1.1.5  christos 	make_cred no.tld "-ru" /dev/null && exit 1
     62  1.1.1.5  christos 	make_cred no.tld "-uc1" /dev/null && exit 1
     63  1.1.1.5  christos 	make_cred no.tld "-uc2" /dev/null && exit 1
     64  1.1.1.4  christos 	verify_cred "--"  u2f u2f-cred u2f-pubkey
     65  1.1.1.5  christos 	verify_cred "-h" u2f /dev/null /dev/null && exit 1
     66  1.1.1.5  christos 	verify_cred "-v" u2f /dev/null /dev/null && exit 1
     67  1.1.1.4  christos 	verify_cred "-c0" u2f /dev/null /dev/null
     68  1.1.1.5  christos 	verify_cred "-c1" u2f /dev/null /dev/null && exit 1
     69  1.1.1.5  christos 	verify_cred "-c2" u2f /dev/null /dev/null && exit 1
     70  1.1.1.5  christos 	verify_cred "-c3" u2f /dev/null /dev/null && exit 1
     71  1.1.1.4  christos fi
     72  1.1.1.2  christos 
     73  1.1.1.2  christos # wrap (non-resident)
     74  1.1.1.2  christos make_cred no.tld "--" wrap
     75  1.1.1.5  christos verify_cred "--" wrap wrap-cred wrap-pubkey
     76  1.1.1.5  christos verify_cred "-h" wrap /dev/null /dev/null && exit 1
     77  1.1.1.5  christos verify_cred "-v" wrap /dev/null /dev/null && exit 1
     78  1.1.1.2  christos verify_cred "-c0" wrap /dev/null /dev/null
     79  1.1.1.5  christos verify_cred "-c1" wrap /dev/null /dev/null && exit 1
     80  1.1.1.5  christos verify_cred "-c2" wrap /dev/null /dev/null && exit 1
     81  1.1.1.5  christos verify_cred "-c3" wrap /dev/null /dev/null && exit 1
     82  1.1.1.2  christos 
     83  1.1.1.2  christos # wrap (non-resident) + hmac-secret
     84  1.1.1.2  christos make_cred no.tld "-h" wrap-hs
     85  1.1.1.5  christos verify_cred "--" wrap-hs /dev/null /dev/null && exit 1
     86  1.1.1.2  christos verify_cred "-h" wrap-hs wrap-hs-cred wrap-hs-pubkey
     87  1.1.1.5  christos verify_cred "-v" wrap-hs /dev/null /dev/null && exit 1
     88  1.1.1.5  christos verify_cred "-hv" wrap-hs /dev/null /dev/null && exit 1
     89  1.1.1.2  christos verify_cred "-hc0" wrap-hs /dev/null /dev/null
     90  1.1.1.5  christos verify_cred "-c0" wrap-hs /dev/null /dev/null && exit 1
     91  1.1.1.5  christos verify_cred "-c1" wrap-hs /dev/null /dev/null && exit 1
     92  1.1.1.5  christos verify_cred "-c2" wrap-hs /dev/null /dev/null && exit 1
     93  1.1.1.5  christos verify_cred "-c3" wrap-hs /dev/null /dev/null && exit 1
     94  1.1.1.2  christos 
     95  1.1.1.2  christos # resident
     96  1.1.1.2  christos make_cred no.tld "-r" rk
     97  1.1.1.2  christos verify_cred "--" rk rk-cred rk-pubkey
     98  1.1.1.5  christos verify_cred "-h" rk /dev/null /dev/null && exit 1
     99  1.1.1.5  christos verify_cred "-v" rk /dev/null /dev/null
    100  1.1.1.5  christos verify_cred "-hv" rk /dev/null /dev/null && exit 1
    101  1.1.1.2  christos verify_cred "-c0" rk /dev/null /dev/null
    102  1.1.1.5  christos verify_cred "-c1" rk /dev/null /dev/null && exit 1
    103  1.1.1.5  christos verify_cred "-c2" rk /dev/null /dev/null && exit 1
    104  1.1.1.5  christos verify_cred "-c3" rk /dev/null /dev/null && exit 1
    105  1.1.1.2  christos 
    106  1.1.1.2  christos # resident + hmac-secret
    107  1.1.1.2  christos make_cred no.tld "-hr" rk-hs
    108  1.1.1.5  christos verify_cred  "--" rk-hs rk-hs-cred rk-hs-pubkey && exit 1
    109  1.1.1.2  christos verify_cred "-h" rk-hs /dev/null /dev/null
    110  1.1.1.5  christos verify_cred "-v" rk-hs /dev/null /dev/null && exit 1
    111  1.1.1.5  christos verify_cred "-hv" rk-hs /dev/null /dev/null
    112  1.1.1.2  christos verify_cred "-hc0" rk-hs /dev/null /dev/null
    113  1.1.1.5  christos verify_cred "-c0" rk-hs /dev/null /dev/null && exit 1
    114  1.1.1.5  christos verify_cred "-c1" rk-hs /dev/null /dev/null && exit 1
    115  1.1.1.5  christos verify_cred "-c2" rk-hs /dev/null /dev/null && exit 1
    116  1.1.1.5  christos verify_cred "-c3" rk-hs /dev/null /dev/null && exit 1
    117  1.1.1.2  christos 
    118  1.1.1.2  christos # u2f
    119  1.1.1.5  christos if [ "${TYPE}" = "es256" ]; then
    120  1.1.1.4  christos 	get_assert no.tld "-u" u2f-cred /dev/null u2f-assert
    121  1.1.1.5  christos 	get_assert no.tld "-u -t up=false" u2f-cred /dev/null /dev/null && exit 1
    122  1.1.1.4  christos 	verify_assert "--"  u2f-pubkey u2f-assert
    123  1.1.1.4  christos 	verify_assert "-p"  u2f-pubkey u2f-assert
    124  1.1.1.4  christos fi
    125  1.1.1.2  christos 
    126  1.1.1.2  christos # wrap (non-resident)
    127  1.1.1.2  christos get_assert no.tld "--" wrap-cred /dev/null wrap-assert
    128  1.1.1.2  christos verify_assert "--" wrap-pubkey wrap-assert
    129  1.1.1.2  christos get_assert no.tld "-t pin=true" wrap-cred /dev/null wrap-assert
    130  1.1.1.2  christos verify_assert "--" wrap-pubkey wrap-assert
    131  1.1.1.2  christos verify_assert "-v" wrap-pubkey wrap-assert
    132  1.1.1.2  christos get_assert no.tld "-t pin=false" wrap-cred /dev/null wrap-assert
    133  1.1.1.2  christos verify_assert "--" wrap-pubkey wrap-assert
    134  1.1.1.2  christos get_assert no.tld "-t up=true" wrap-cred /dev/null wrap-assert
    135  1.1.1.2  christos verify_assert "-p" wrap-pubkey wrap-assert
    136  1.1.1.2  christos get_assert no.tld "-t up=true -t pin=true" wrap-cred /dev/null wrap-assert
    137  1.1.1.2  christos verify_assert "--" wrap-pubkey wrap-assert
    138  1.1.1.2  christos verify_assert "-p" wrap-pubkey wrap-assert
    139  1.1.1.2  christos verify_assert "-v" wrap-pubkey wrap-assert
    140  1.1.1.2  christos verify_assert "-pv" wrap-pubkey wrap-assert
    141  1.1.1.2  christos get_assert no.tld "-t up=true -t pin=false" wrap-cred /dev/null wrap-assert
    142  1.1.1.2  christos verify_assert "--" wrap-pubkey wrap-assert
    143  1.1.1.2  christos verify_assert "-p" wrap-pubkey wrap-assert
    144  1.1.1.2  christos get_assert no.tld "-t up=false" wrap-cred /dev/null wrap-assert
    145  1.1.1.2  christos verify_assert "--" wrap-pubkey wrap-assert
    146  1.1.1.5  christos verify_assert "-p" wrap-pubkey wrap-assert && exit 1
    147  1.1.1.2  christos get_assert no.tld "-t up=false -t pin=true" wrap-cred /dev/null wrap-assert
    148  1.1.1.5  christos verify_assert "-p" wrap-pubkey wrap-assert && exit 1
    149  1.1.1.2  christos verify_assert "-v" wrap-pubkey wrap-assert
    150  1.1.1.5  christos verify_assert "-pv" wrap-pubkey wrap-assert && exit 1
    151  1.1.1.2  christos get_assert no.tld "-t up=false -t pin=false" wrap-cred /dev/null wrap-assert
    152  1.1.1.5  christos verify_assert "-p" wrap-pubkey wrap-assert && exit 1
    153  1.1.1.2  christos get_assert no.tld "-h" wrap-cred hmac-salt wrap-assert
    154  1.1.1.5  christos verify_assert "--" wrap-pubkey wrap-assert && exit 1
    155  1.1.1.2  christos verify_assert "-h" wrap-pubkey wrap-assert
    156  1.1.1.2  christos get_assert no.tld "-h -t pin=true" wrap-cred hmac-salt wrap-assert
    157  1.1.1.5  christos verify_assert "--" wrap-pubkey wrap-assert && exit 1
    158  1.1.1.2  christos verify_assert "-h" wrap-pubkey wrap-assert
    159  1.1.1.2  christos verify_assert "-hv" wrap-pubkey wrap-assert
    160  1.1.1.2  christos get_assert no.tld "-h -t pin=false" wrap-cred hmac-salt wrap-assert
    161  1.1.1.5  christos verify_assert "--" wrap-pubkey wrap-assert && exit 1
    162  1.1.1.2  christos verify_assert "-h" wrap-pubkey wrap-assert
    163  1.1.1.2  christos get_assert no.tld "-h -t up=true" wrap-cred hmac-salt wrap-assert
    164  1.1.1.5  christos verify_assert "--" wrap-pubkey wrap-assert && exit 1
    165  1.1.1.2  christos verify_assert "-h" wrap-pubkey wrap-assert
    166  1.1.1.2  christos verify_assert "-hp" wrap-pubkey wrap-assert
    167  1.1.1.2  christos get_assert no.tld "-h -t up=true -t pin=true" wrap-cred hmac-salt wrap-assert
    168  1.1.1.5  christos verify_assert "--" wrap-pubkey wrap-assert && exit 1
    169  1.1.1.2  christos verify_assert "-h" wrap-pubkey wrap-assert
    170  1.1.1.2  christos verify_assert "-hp" wrap-pubkey wrap-assert
    171  1.1.1.2  christos verify_assert "-hv" wrap-pubkey wrap-assert
    172  1.1.1.2  christos verify_assert "-hpv" wrap-pubkey wrap-assert
    173  1.1.1.2  christos get_assert no.tld "-h -t up=true -t pin=false" wrap-cred hmac-salt wrap-assert
    174  1.1.1.5  christos verify_assert "--" wrap-pubkey wrap-assert && exit 1
    175  1.1.1.2  christos verify_assert "-h" wrap-pubkey wrap-assert
    176  1.1.1.2  christos verify_assert "-hp" wrap-pubkey wrap-assert
    177  1.1.1.5  christos get_assert no.tld "-h -t up=false" wrap-cred hmac-salt wrap-assert && exit 1
    178  1.1.1.5  christos get_assert no.tld "-h -t up=false -t pin=true" wrap-cred hmac-salt wrap-assert && exit 1
    179  1.1.1.5  christos get_assert no.tld "-h -t up=false -t pin=false" wrap-cred hmac-salt wrap-assert && exit 1
    180  1.1.1.2  christos 
    181  1.1.1.2  christos if [ "x${UV}" != "x" ]; then
    182  1.1.1.2  christos 	get_assert no.tld "-t uv=true" wrap-cred /dev/null wrap-assert
    183  1.1.1.2  christos 	verify_assert "-v" wrap-pubkey wrap-assert
    184  1.1.1.2  christos 	get_assert no.tld "-t uv=true -t pin=true" wrap-cred /dev/null wrap-assert
    185  1.1.1.2  christos 	verify_assert "-v" wrap-pubkey wrap-assert
    186  1.1.1.2  christos 	get_assert no.tld "-t uv=true -t pin=false" wrap-cred /dev/null wrap-assert
    187  1.1.1.2  christos 	verify_assert "-v" wrap-pubkey wrap-assert
    188  1.1.1.2  christos 	get_assert no.tld "-t uv=false" wrap-cred /dev/null wrap-assert
    189  1.1.1.2  christos 	verify_assert "--" wrap-pubkey wrap-assert
    190  1.1.1.2  christos 	get_assert no.tld "-t uv=false -t pin=true" wrap-cred /dev/null wrap-assert
    191  1.1.1.2  christos 	verify_assert "-v" wrap-pubkey wrap-assert
    192  1.1.1.2  christos 	get_assert no.tld "-t uv=false -t pin=false" wrap-cred /dev/null wrap-assert
    193  1.1.1.2  christos 	verify_assert "--" wrap-pubkey wrap-assert
    194  1.1.1.2  christos 	get_assert no.tld "-t up=true -t uv=true" wrap-cred /dev/null wrap-assert
    195  1.1.1.2  christos 	verify_assert "-pv" wrap-pubkey wrap-assert
    196  1.1.1.2  christos 	get_assert no.tld "-t up=true -t uv=true -t pin=true" wrap-cred /dev/null wrap-assert
    197  1.1.1.2  christos 	verify_assert "-pv" wrap-pubkey wrap-assert
    198  1.1.1.2  christos 	get_assert no.tld "-t up=true -t uv=true -t pin=false" wrap-cred /dev/null wrap-assert
    199  1.1.1.2  christos 	verify_assert "-pv" wrap-pubkey wrap-assert
    200  1.1.1.2  christos 	get_assert no.tld "-t up=true -t uv=false" wrap-cred /dev/null wrap-assert
    201  1.1.1.2  christos 	verify_assert "-p" wrap-pubkey wrap-assert
    202  1.1.1.2  christos 	get_assert no.tld "-t up=true -t uv=false -t pin=true" wrap-cred /dev/null wrap-assert
    203  1.1.1.2  christos 	verify_assert "-pv" wrap-pubkey wrap-assert
    204  1.1.1.2  christos 	get_assert no.tld "-t up=true -t uv=false -t pin=false" wrap-cred /dev/null wrap-assert
    205  1.1.1.2  christos 	verify_assert "-p" wrap-pubkey wrap-assert
    206  1.1.1.2  christos 	get_assert no.tld "-t up=false -t uv=true" wrap-cred /dev/null wrap-assert
    207  1.1.1.2  christos 	verify_assert "-v" wrap-pubkey wrap-assert
    208  1.1.1.2  christos 	get_assert no.tld "-t up=false -t uv=true -t pin=true" wrap-cred /dev/null wrap-assert
    209  1.1.1.2  christos 	verify_assert "-v" wrap-pubkey wrap-assert
    210  1.1.1.2  christos 	get_assert no.tld "-t up=false -t uv=true -t pin=false" wrap-cred /dev/null wrap-assert
    211  1.1.1.2  christos 	verify_assert "-v" wrap-pubkey wrap-assert
    212  1.1.1.2  christos 	get_assert no.tld "-t up=false -t uv=false" wrap-cred /dev/null wrap-assert
    213  1.1.1.5  christos 	verify_assert "--" wrap-pubkey wrap-assert && exit 1
    214  1.1.1.2  christos 	get_assert no.tld "-t up=false -t uv=false -t pin=true" wrap-cred /dev/null wrap-assert
    215  1.1.1.2  christos 	verify_assert "-v" wrap-pubkey wrap-assert
    216  1.1.1.2  christos 	get_assert no.tld "-t up=false -t uv=false -t pin=false" wrap-cred /dev/null wrap-assert
    217  1.1.1.5  christos 	verify_assert "--" wrap-pubkey wrap-assert && exit 1
    218  1.1.1.2  christos 	get_assert no.tld "-h -t uv=true" wrap-cred hmac-salt wrap-assert
    219  1.1.1.2  christos 	verify_assert "-hv" wrap-pubkey wrap-assert
    220  1.1.1.2  christos 	get_assert no.tld "-h -t uv=true -t pin=true" wrap-cred hmac-salt wrap-assert
    221  1.1.1.2  christos 	verify_assert "-hv" wrap-pubkey wrap-assert
    222  1.1.1.2  christos 	get_assert no.tld "-h -t uv=true -t pin=false" wrap-cred hmac-salt wrap-assert
    223  1.1.1.2  christos 	verify_assert "-hv" wrap-pubkey wrap-assert
    224  1.1.1.2  christos 	get_assert no.tld "-h -t uv=false" wrap-cred hmac-salt wrap-assert
    225  1.1.1.2  christos 	verify_assert "-h" wrap-pubkey wrap-assert
    226  1.1.1.2  christos 	get_assert no.tld "-h -t uv=false -t pin=true" wrap-cred hmac-salt wrap-assert
    227  1.1.1.2  christos 	verify_assert "-hv" wrap-pubkey wrap-assert
    228  1.1.1.2  christos 	get_assert no.tld "-h -t uv=false -t pin=false" wrap-cred hmac-salt wrap-assert
    229  1.1.1.2  christos 	verify_assert "-h" wrap-pubkey wrap-assert
    230  1.1.1.2  christos 	get_assert no.tld "-h -t up=true -t uv=true" wrap-cred hmac-salt wrap-assert
    231  1.1.1.2  christos 	verify_assert "-hpv" wrap-pubkey wrap-assert
    232  1.1.1.2  christos 	get_assert no.tld "-h -t up=true -t uv=true -t pin=true" wrap-cred hmac-salt wrap-assert
    233  1.1.1.2  christos 	verify_assert "-hpv" wrap-pubkey wrap-assert
    234  1.1.1.2  christos 	get_assert no.tld "-h -t up=true -t uv=true -t pin=false" wrap-cred hmac-salt wrap-assert
    235  1.1.1.2  christos 	verify_assert "-hpv" wrap-pubkey wrap-assert
    236  1.1.1.2  christos 	get_assert no.tld "-h -t up=true -t uv=false" wrap-cred hmac-salt wrap-assert
    237  1.1.1.2  christos 	verify_assert "-hp" wrap-pubkey wrap-assert
    238  1.1.1.2  christos 	get_assert no.tld "-h -t up=true -t uv=false -t pin=true" wrap-cred hmac-salt wrap-assert
    239  1.1.1.2  christos 	verify_assert "-hpv" wrap-pubkey wrap-assert
    240  1.1.1.2  christos 	get_assert no.tld "-h -t up=true -t uv=false -t pin=false" wrap-cred hmac-salt wrap-assert
    241  1.1.1.2  christos 	verify_assert "-hp" wrap-pubkey wrap-assert
    242  1.1.1.5  christos 	get_assert no.tld "-h -t up=false -t uv=true" wrap-cred hmac-salt wrap-assert && exit 1
    243  1.1.1.5  christos 	get_assert no.tld "-h -t up=false -t uv=true -t pin=true" wrap-cred hmac-salt wrap-assert && exit 1
    244  1.1.1.5  christos 	get_assert no.tld "-h -t up=false -t uv=true -t pin=false" wrap-cred hmac-salt wrap-assert && exit 1
    245  1.1.1.5  christos 	get_assert no.tld "-h -t up=false -t uv=false" wrap-cred hmac-salt wrap-assert && exit 1
    246  1.1.1.5  christos 	get_assert no.tld "-h -t up=false -t uv=false -t pin=true" wrap-cred hmac-salt wrap-assert && exit 1
    247  1.1.1.5  christos 	get_assert no.tld "-h -t up=false -t uv=false -t pin=false" wrap-cred hmac-salt wrap-assert && exit 1
    248  1.1.1.2  christos fi
    249  1.1.1.2  christos 
    250  1.1.1.2  christos # resident
    251  1.1.1.2  christos get_assert no.tld "-r" /dev/null /dev/null wrap-assert
    252  1.1.1.2  christos get_assert no.tld "-r -t pin=true" /dev/null /dev/null wrap-assert
    253  1.1.1.2  christos get_assert no.tld "-r -t pin=false" /dev/null /dev/null wrap-assert
    254  1.1.1.2  christos get_assert no.tld "-r -t up=true" /dev/null /dev/null wrap-assert
    255  1.1.1.2  christos get_assert no.tld "-r -t up=true -t pin=true" /dev/null /dev/null wrap-assert
    256  1.1.1.2  christos get_assert no.tld "-r -t up=true -t pin=false" /dev/null /dev/null wrap-assert
    257  1.1.1.2  christos get_assert no.tld "-r -t up=false" /dev/null /dev/null wrap-assert
    258  1.1.1.2  christos get_assert no.tld "-r -t up=false -t pin=true" /dev/null /dev/null wrap-assert
    259  1.1.1.2  christos get_assert no.tld "-r -t up=false -t pin=false" /dev/null /dev/null wrap-assert
    260  1.1.1.2  christos get_assert no.tld "-r -h" /dev/null hmac-salt wrap-assert
    261  1.1.1.2  christos get_assert no.tld "-r -h -t pin=true" /dev/null hmac-salt wrap-assert
    262  1.1.1.2  christos get_assert no.tld "-r -h -t pin=false" /dev/null hmac-salt wrap-assert
    263  1.1.1.2  christos get_assert no.tld "-r -h -t up=true" /dev/null hmac-salt wrap-assert
    264  1.1.1.2  christos get_assert no.tld "-r -h -t up=true -t pin=true" /dev/null hmac-salt wrap-assert
    265  1.1.1.2  christos get_assert no.tld "-r -h -t up=true -t pin=false" /dev/null hmac-salt wrap-assert
    266  1.1.1.5  christos get_assert no.tld "-r -h -t up=false" /dev/null hmac-salt wrap-assert && exit 1
    267  1.1.1.5  christos get_assert no.tld "-r -h -t up=false -t pin=true" /dev/null hmac-salt wrap-assert && exit 1
    268  1.1.1.5  christos get_assert no.tld "-r -h -t up=false -t pin=false" /dev/null hmac-salt wrap-assert && exit 1
    269  1.1.1.2  christos 
    270  1.1.1.2  christos if [ "x${UV}" != "x" ]; then
    271  1.1.1.2  christos 	get_assert no.tld "-r -t uv=true" /dev/null /dev/null wrap-assert
    272  1.1.1.2  christos 	get_assert no.tld "-r -t uv=true -t pin=true" /dev/null /dev/null wrap-assert
    273  1.1.1.2  christos 	get_assert no.tld "-r -t uv=true -t pin=false" /dev/null /dev/null wrap-assert
    274  1.1.1.2  christos 	get_assert no.tld "-r -t uv=false" /dev/null /dev/null wrap-assert
    275  1.1.1.2  christos 	get_assert no.tld "-r -t uv=false -t pin=true" /dev/null /dev/null wrap-assert
    276  1.1.1.2  christos 	get_assert no.tld "-r -t uv=false -t pin=false" /dev/null /dev/null wrap-assert
    277  1.1.1.2  christos 	get_assert no.tld "-r -t up=true -t uv=true" /dev/null /dev/null wrap-assert
    278  1.1.1.2  christos 	get_assert no.tld "-r -t up=true -t uv=true -t pin=true" /dev/null /dev/null wrap-assert
    279  1.1.1.2  christos 	get_assert no.tld "-r -t up=true -t uv=true -t pin=false" /dev/null /dev/null wrap-assert
    280  1.1.1.2  christos 	get_assert no.tld "-r -t up=true -t uv=false" /dev/null /dev/null wrap-assert
    281  1.1.1.2  christos 	get_assert no.tld "-r -t up=true -t uv=false -t pin=true" /dev/null /dev/null wrap-assert
    282  1.1.1.2  christos 	get_assert no.tld "-r -t up=true -t uv=false -t pin=false" /dev/null /dev/null wrap-assert
    283  1.1.1.2  christos 	get_assert no.tld "-r -t up=false -t uv=true" /dev/null /dev/null wrap-assert
    284  1.1.1.2  christos 	get_assert no.tld "-r -t up=false -t uv=true -t pin=true" /dev/null /dev/null wrap-assert
    285  1.1.1.2  christos 	get_assert no.tld "-r -t up=false -t uv=true -t pin=false" /dev/null /dev/null wrap-assert
    286  1.1.1.2  christos 	get_assert no.tld "-r -t up=false -t uv=false" /dev/null /dev/null wrap-assert
    287  1.1.1.2  christos 	get_assert no.tld "-r -t up=false -t uv=false -t pin=true" /dev/null /dev/null wrap-assert
    288  1.1.1.2  christos 	get_assert no.tld "-r -t up=false -t uv=false -t pin=false" /dev/null /dev/null wrap-assert
    289  1.1.1.2  christos 	get_assert no.tld "-r -h -t uv=true" /dev/null hmac-salt wrap-assert
    290  1.1.1.2  christos 	get_assert no.tld "-r -h -t uv=true -t pin=true" /dev/null hmac-salt wrap-assert
    291  1.1.1.2  christos 	get_assert no.tld "-r -h -t uv=true -t pin=false" /dev/null hmac-salt wrap-assert
    292  1.1.1.2  christos 	get_assert no.tld "-r -h -t uv=false" /dev/null hmac-salt wrap-assert
    293  1.1.1.2  christos 	get_assert no.tld "-r -h -t uv=false -t pin=true" /dev/null hmac-salt wrap-assert
    294  1.1.1.2  christos 	get_assert no.tld "-r -h -t uv=false -t pin=false" /dev/null hmac-salt wrap-assert
    295  1.1.1.2  christos 	get_assert no.tld "-r -h -t up=true -t uv=true" /dev/null hmac-salt wrap-assert
    296  1.1.1.2  christos 	get_assert no.tld "-r -h -t up=true -t uv=true -t pin=true" /dev/null hmac-salt wrap-assert
    297  1.1.1.2  christos 	get_assert no.tld "-r -h -t up=true -t uv=true -t pin=false" /dev/null hmac-salt wrap-assert
    298  1.1.1.2  christos 	get_assert no.tld "-r -h -t up=true -t uv=false" /dev/null hmac-salt wrap-assert
    299  1.1.1.2  christos 	get_assert no.tld "-r -h -t up=true -t uv=false -t pin=true" /dev/null hmac-salt wrap-assert
    300  1.1.1.2  christos 	get_assert no.tld "-r -h -t up=true -t uv=false -t pin=false" /dev/null hmac-salt wrap-assert
    301  1.1.1.5  christos 	get_assert no.tld "-r -h -t up=false -t uv=true" /dev/null hmac-salt wrap-assert && exit 1
    302  1.1.1.5  christos 	get_assert no.tld "-r -h -t up=false -t uv=true -t pin=true" /dev/null hmac-salt wrap-assert && exit 1
    303  1.1.1.5  christos 	get_assert no.tld "-r -h -t up=false -t uv=true -t pin=false" /dev/null hmac-salt wrap-assert && exit 1
    304  1.1.1.5  christos 	get_assert no.tld "-r -h -t up=false -t uv=false" /dev/null hmac-salt wrap-assert && exit 1
    305  1.1.1.5  christos 	get_assert no.tld "-r -h -t up=false -t uv=false -t pin=true" /dev/null hmac-salt wrap-assert && exit 1
    306  1.1.1.5  christos 	get_assert no.tld "-r -h -t up=false -t uv=false -t pin=false" /dev/null hmac-salt wrap-assert && exit 1
    307  1.1.1.2  christos fi
    308      1.1  christos 
    309  1.1.1.2  christos exit 0
    310