├── suite
├── tc12.ber
├── tc19.ber
├── tc27.ber
├── tc29.ber
├── tc31.ber
├── tc32.ber
├── tc33.ber
├── tc34.ber
├── tc39.ber
├── tc40.ber
├── tc43.ber
├── tc44.ber
├── tc45.ber
├── tc8.ber
├── encoded_tc2.ber
├── encoded_tc3.ber
├── encoded_tc4.ber
├── encoded_tc46.ber
├── encoded_tc6.ber
├── encoded_tc7.ber
├── encoded_tc9.ber
├── tc25.ber
├── tc26.ber
├── tc30.ber
├── tc6.ber
├── tc7.ber
├── encoded_tc11.ber
├── encoded_tc12.ber
├── encoded_tc19.ber
├── encoded_tc21.ber
├── encoded_tc23.ber
├── encoded_tc25.ber
├── encoded_tc26.ber
├── encoded_tc27.ber
├── encoded_tc29.ber
├── encoded_tc30.ber
├── encoded_tc31.ber
├── encoded_tc32.ber
├── encoded_tc33.ber
├── encoded_tc34.ber
├── encoded_tc39.ber
├── encoded_tc40.ber
├── encoded_tc43.ber
├── encoded_tc44.ber
├── encoded_tc45.ber
├── encoded_tc47.ber
├── encoded_tc8.ber
├── tc11.ber
├── tc37.ber
├── tc47.ber
├── encoded_tc37.ber
├── tc1.ber
├── tc2.ber
├── tc3.ber
├── tc4.ber
├── tc5.ber
├── tc9.ber
├── tc10.ber
├── tc13.ber
├── tc14.ber
├── tc15.ber
├── tc16.ber
├── tc17.ber
├── tc18.ber
├── tc20.ber
├── tc21.ber
├── tc22.ber
├── tc23.ber
├── tc24.ber
├── tc28.ber
├── tc35.ber
├── tc36.ber
├── tc38.ber
├── tc41.ber
├── tc42.ber
├── tc46.ber
├── tc48.ber
├── encoded_tc1.ber
├── encoded_tc10.ber
├── encoded_tc13.ber
├── encoded_tc14.ber
├── encoded_tc15.ber
├── encoded_tc16.ber
├── encoded_tc17.ber
├── encoded_tc18.ber
├── encoded_tc20.ber
├── encoded_tc22.ber
├── encoded_tc24.ber
├── encoded_tc28.ber
├── encoded_tc35.ber
├── encoded_tc36.ber
├── encoded_tc38.ber
├── encoded_tc41.ber
├── encoded_tc42.ber
├── encoded_tc48.ber
├── encoded_tc5.ber
├── transformed_tc2.xml
├── transformed_tc32.xml
├── transformed_tc39.xml
├── transformed_tc40.xml
├── transformed_tc45.xml
├── transformed_tc44.xml
├── transformed_tc28.xml
├── transformed_tc29.xml
├── transformed_tc46.xml
├── transformed_tc3.xml
├── transformed_tc4.xml
├── transformed_tc30.xml
├── transformed_tc18.xml
├── transformed_tc35.xml
├── transformed_tc33.xml
├── transformed_tc48.xml
├── transformed_tc41.xml
├── transformed_tc19.xml
├── transformed_tc27.xml
├── transformed_tc20.xml
├── transformed_tc34.xml
├── transformed_tc42.xml
├── transformed_tc11.xml
├── transformed_tc43.xml
├── transformed_tc23.xml
├── transformed_tc1.xml
├── transformed_tc47.xml
├── transformed_tc12.xml
├── transformed_tc25.xml
├── transformed_tc26.xml
├── transformed_tc36.xml
├── transformed_tc9.xml
├── transformed_tc31.xml
├── transformed_tc5.xml
├── transformed_tc8.xml
├── transformed_tc6.xml
├── transformed_tc7.xml
├── transformed_tc10.xml
├── transformed_tc21.xml
├── transformed_tc14.xml
├── transformed_tc15.xml
├── transformed_tc16.xml
├── transformed_tc17.xml
├── transformed_tc13.xml
├── transformed_tc38.xml
├── transformed_tc22.xml
├── transformed_tc37.xml
└── transformed_tc24.xml
├── pdf
└── free_asn1_testsuite.pdf
├── LICENSE
└── README.md
/suite/tc12.ber:
--------------------------------------------------------------------------------
1 | I
--------------------------------------------------------------------------------
/suite/tc19.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/tc27.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/tc29.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/tc31.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/tc32.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/tc33.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/tc34.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/tc39.ber:
--------------------------------------------------------------------------------
1 | #
--------------------------------------------------------------------------------
/suite/tc40.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/tc43.ber:
--------------------------------------------------------------------------------
1 | $
--------------------------------------------------------------------------------
/suite/tc44.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/tc45.ber:
--------------------------------------------------------------------------------
1 | $
--------------------------------------------------------------------------------
/suite/tc8.ber:
--------------------------------------------------------------------------------
1 | A
--------------------------------------------------------------------------------
/suite/encoded_tc2.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc3.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc4.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc46.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc6.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc7.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc9.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/tc25.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/tc26.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/tc30.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/tc6.ber:
--------------------------------------------------------------------------------
1 | +0.E-5
--------------------------------------------------------------------------------
/suite/tc7.ber:
--------------------------------------------------------------------------------
1 | -0.E-5
--------------------------------------------------------------------------------
/suite/encoded_tc11.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc12.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc19.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc21.ber:
--------------------------------------------------------------------------------
1 | Q
--------------------------------------------------------------------------------
/suite/encoded_tc23.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc25.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc26.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc27.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc29.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc30.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc31.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc32.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc33.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc34.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc39.ber:
--------------------------------------------------------------------------------
1 | #
--------------------------------------------------------------------------------
/suite/encoded_tc40.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc43.ber:
--------------------------------------------------------------------------------
1 | $
--------------------------------------------------------------------------------
/suite/encoded_tc44.ber:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/suite/encoded_tc45.ber:
--------------------------------------------------------------------------------
1 | $
--------------------------------------------------------------------------------
/suite/encoded_tc47.ber:
--------------------------------------------------------------------------------
1 | #
--------------------------------------------------------------------------------
/suite/encoded_tc8.ber:
--------------------------------------------------------------------------------
1 | A
--------------------------------------------------------------------------------
/suite/tc11.ber:
--------------------------------------------------------------------------------
1 | 015625
--------------------------------------------------------------------------------
/suite/tc37.ber:
--------------------------------------------------------------------------------
1 | #
--------------------------------------------------------------------------------
/suite/tc47.ber:
--------------------------------------------------------------------------------
1 | #
--------------------------------------------------------------------------------
/suite/encoded_tc37.ber:
--------------------------------------------------------------------------------
1 | #
--------------------------------------------------------------------------------
/suite/tc1.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc1.ber
--------------------------------------------------------------------------------
/suite/tc2.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc2.ber
--------------------------------------------------------------------------------
/suite/tc3.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc3.ber
--------------------------------------------------------------------------------
/suite/tc4.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc4.ber
--------------------------------------------------------------------------------
/suite/tc5.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc5.ber
--------------------------------------------------------------------------------
/suite/tc9.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc9.ber
--------------------------------------------------------------------------------
/suite/tc10.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc10.ber
--------------------------------------------------------------------------------
/suite/tc13.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc13.ber
--------------------------------------------------------------------------------
/suite/tc14.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc14.ber
--------------------------------------------------------------------------------
/suite/tc15.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc15.ber
--------------------------------------------------------------------------------
/suite/tc16.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc16.ber
--------------------------------------------------------------------------------
/suite/tc17.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc17.ber
--------------------------------------------------------------------------------
/suite/tc18.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc18.ber
--------------------------------------------------------------------------------
/suite/tc20.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc20.ber
--------------------------------------------------------------------------------
/suite/tc21.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc21.ber
--------------------------------------------------------------------------------
/suite/tc22.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc22.ber
--------------------------------------------------------------------------------
/suite/tc23.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc23.ber
--------------------------------------------------------------------------------
/suite/tc24.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc24.ber
--------------------------------------------------------------------------------
/suite/tc28.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc28.ber
--------------------------------------------------------------------------------
/suite/tc35.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc35.ber
--------------------------------------------------------------------------------
/suite/tc36.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc36.ber
--------------------------------------------------------------------------------
/suite/tc38.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc38.ber
--------------------------------------------------------------------------------
/suite/tc41.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc41.ber
--------------------------------------------------------------------------------
/suite/tc42.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc42.ber
--------------------------------------------------------------------------------
/suite/tc46.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc46.ber
--------------------------------------------------------------------------------
/suite/tc48.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/tc48.ber
--------------------------------------------------------------------------------
/suite/encoded_tc1.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/encoded_tc1.ber
--------------------------------------------------------------------------------
/suite/encoded_tc10.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/encoded_tc10.ber
--------------------------------------------------------------------------------
/suite/encoded_tc13.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/encoded_tc13.ber
--------------------------------------------------------------------------------
/suite/encoded_tc14.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/encoded_tc14.ber
--------------------------------------------------------------------------------
/suite/encoded_tc15.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/encoded_tc15.ber
--------------------------------------------------------------------------------
/suite/encoded_tc16.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/encoded_tc16.ber
--------------------------------------------------------------------------------
/suite/encoded_tc17.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/encoded_tc17.ber
--------------------------------------------------------------------------------
/suite/encoded_tc18.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/encoded_tc18.ber
--------------------------------------------------------------------------------
/suite/encoded_tc20.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/encoded_tc20.ber
--------------------------------------------------------------------------------
/suite/encoded_tc22.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/encoded_tc22.ber
--------------------------------------------------------------------------------
/suite/encoded_tc24.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/encoded_tc24.ber
--------------------------------------------------------------------------------
/suite/encoded_tc28.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/encoded_tc28.ber
--------------------------------------------------------------------------------
/suite/encoded_tc35.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/encoded_tc35.ber
--------------------------------------------------------------------------------
/suite/encoded_tc36.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/encoded_tc36.ber
--------------------------------------------------------------------------------
/suite/encoded_tc38.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/encoded_tc38.ber
--------------------------------------------------------------------------------
/suite/encoded_tc41.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/encoded_tc41.ber
--------------------------------------------------------------------------------
/suite/encoded_tc42.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/encoded_tc42.ber
--------------------------------------------------------------------------------
/suite/encoded_tc48.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/encoded_tc48.ber
--------------------------------------------------------------------------------
/suite/encoded_tc5.ber:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/suite/encoded_tc5.ber
--------------------------------------------------------------------------------
/pdf/free_asn1_testsuite.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/YuryStrozhevsky/ASN1-2008-free-test-suite/HEAD/pdf/free_asn1_testsuite.pdf
--------------------------------------------------------------------------------
/suite/transformed_tc2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | End of input reached before message was fully decoded
4 |
5 | End of input reached before message was fully decoded
6 |
7 |
8 |
--------------------------------------------------------------------------------
/suite/transformed_tc32.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 5
7 |
8 |
9 | false
10 | false
11 | 0
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/suite/transformed_tc39.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | true
6 | 3
7 |
8 |
9 | false
10 | false
11 | 0
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/suite/transformed_tc40.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 3
7 |
8 |
9 | false
10 | false
11 | 0
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/suite/transformed_tc45.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | true
6 | 4
7 |
8 |
9 | false
10 | false
11 | 0
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/suite/transformed_tc44.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 4
7 |
8 |
9 | false
10 | false
11 | 0
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/suite/transformed_tc28.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 1
7 |
8 |
9 | false
10 | false
11 | 1
12 |
13 |
14 | FF
15 |
16 |
17 |
--------------------------------------------------------------------------------
/suite/transformed_tc29.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 1
7 |
8 |
9 | false
10 | false
11 | 1
12 |
13 |
14 | 00
15 |
16 |
17 |
--------------------------------------------------------------------------------
/suite/transformed_tc46.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Indefinite length form used for primitive encoding form
4 |
5 | UNIVERSAL
6 | false
7 | 3
8 |
9 |
10 | true
11 | false
12 | 0
13 |
14 |
15 |
--------------------------------------------------------------------------------
/suite/transformed_tc3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | No length block encoded
4 |
5 |
6 | Tag too long, represented as hex-coded
7 |
8 | CONTEXT_SPECIFIC
9 | false
10 | 7F 7F 7F 7F 7F 7F 7F 7F 7F
11 |
12 |
13 | No length block encoded
14 |
15 |
16 |
--------------------------------------------------------------------------------
/suite/transformed_tc4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Length block 0xFF is reserved by standard
4 |
5 |
6 | Tag too long, represented as hex-coded
7 |
8 | CONTEXT_SPECIFIC
9 | false
10 | 7F 7F 7F 7F 7F 7F 7F 7F 7F
11 |
12 |
13 | Length block 0xFF is reserved by standard
14 |
15 |
16 |
--------------------------------------------------------------------------------
/suite/transformed_tc30.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 5
7 |
8 |
9 | false
10 | false
11 | 3
12 |
13 |
14 |
15 | Non-zero length of value block for NULL type
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/suite/transformed_tc18.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 2
7 |
8 |
9 | false
10 | false
11 | 3
12 |
13 |
14 |
15 | Needlessly long format
16 |
17 | -4095
18 |
19 |
20 |
--------------------------------------------------------------------------------
/suite/transformed_tc35.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | BIT STRING may consists of BIT STRINGs only
4 |
5 | UNIVERSAL
6 | true
7 | 3
8 |
9 |
10 | true
11 | false
12 | 0
13 |
14 |
15 | BIT STRING may consists of BIT STRINGs only
16 |
17 |
18 |
--------------------------------------------------------------------------------
/suite/transformed_tc33.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Unused bits for BITSTRING must be in range 0-7
4 |
5 | UNIVERSAL
6 | false
7 | 3
8 |
9 |
10 | false
11 | false
12 | 2
13 |
14 |
15 | Unused bits for BITSTRING must be in range 0-7
16 |
17 |
18 |
--------------------------------------------------------------------------------
/suite/transformed_tc48.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Unused bits for BITSTRING must be in range 0-7
4 |
5 | UNIVERSAL
6 | true
7 | 3
8 |
9 |
10 | true
11 | false
12 | 0
13 |
14 |
15 | Unused bits for BITSTRING must be in range 0-7
16 |
17 |
18 |
--------------------------------------------------------------------------------
/suite/transformed_tc41.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | OCTET STRING may consists of OCTET STRINGs only
4 |
5 | UNIVERSAL
6 | true
7 | 4
8 |
9 |
10 | true
11 | false
12 | 0
13 |
14 |
15 | OCTET STRING may consists of OCTET STRINGs only
16 |
17 |
18 |
--------------------------------------------------------------------------------
/suite/transformed_tc19.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | End of input reached before message was fully decoded
4 |
5 | UNIVERSAL
6 | false
7 | 2
8 |
9 |
10 | false
11 | false
12 | 1
13 |
14 |
15 | End of input reached before message was fully decoded
16 |
17 |
18 |
--------------------------------------------------------------------------------
/suite/transformed_tc27.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | End of input reached before message was fully decoded
4 |
5 | UNIVERSAL
6 | false
7 | 1
8 |
9 |
10 | false
11 | false
12 | 3
13 |
14 |
15 | End of input reached before message was fully decoded
16 |
17 |
18 |
--------------------------------------------------------------------------------
/suite/transformed_tc20.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 2
7 |
8 |
9 | false
10 | false
11 | 9
12 |
13 |
14 |
15 | Too big REAL for decoding, hex only
16 |
17 | 80 00 01 01 01 01 01 01 01
18 |
19 |
20 |
--------------------------------------------------------------------------------
/suite/transformed_tc34.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | End of input reached before message was fully decoded
4 |
5 | UNIVERSAL
6 | false
7 | 3
8 |
9 |
10 | false
11 | false
12 | 2
13 |
14 |
15 | End of input reached before message was fully decoded
16 |
17 |
18 |
--------------------------------------------------------------------------------
/suite/transformed_tc42.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | End of input reached before message was fully decoded
4 |
5 | UNIVERSAL
6 | true
7 | 4
8 |
9 |
10 | true
11 | false
12 | 0
13 |
14 |
15 | End of input reached before message was fully decoded
16 |
17 |
18 |
--------------------------------------------------------------------------------
/suite/transformed_tc11.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Wrong NR form
4 |
5 | UNIVERSAL
6 | false
7 | 9
8 |
9 |
10 | false
11 | false
12 | 9
13 |
14 |
15 | Wrong NR form
16 |
17 | Wrong NR form
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/suite/transformed_tc43.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | End of input reached before message was fully decoded
4 |
5 | UNIVERSAL
6 | true
7 | 4
8 |
9 |
10 | false
11 | false
12 | 3
13 |
14 |
15 | End of input reached before message was fully decoded
16 |
17 |
18 |
--------------------------------------------------------------------------------
/suite/transformed_tc23.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | End of input reached before message was fully decoded
4 |
5 | UNIVERSAL
6 | false
7 | 6
8 |
9 |
10 | false
11 | false
12 | 17
13 |
14 |
15 | End of input reached before message was fully decoded
16 |
17 |
18 |
--------------------------------------------------------------------------------
/suite/transformed_tc1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Tag too long, represented as hex-coded
6 |
7 | CONTEXT_SPECIFIC
8 | false
9 | 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F
10 |
11 |
12 | false
13 | false
14 | 1
15 |
16 |
17 | 40
18 |
19 |
20 |
--------------------------------------------------------------------------------
/suite/transformed_tc47.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | EOC is unexpected, BIT STRING may consists of BIT STRINGs only
4 |
5 | UNIVERSAL
6 | true
7 | 3
8 |
9 |
10 | false
11 | false
12 | 14
13 |
14 |
15 | EOC is unexpected, BIT STRING may consists of BIT STRINGs only
16 |
17 |
18 |
--------------------------------------------------------------------------------
/suite/transformed_tc12.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Unknown special REAL value
4 |
5 | UNIVERSAL
6 | false
7 | 9
8 |
9 |
10 | false
11 | false
12 | 1
13 |
14 |
15 | Unknown special REAL value
16 |
17 | Unknown special REAL value
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/suite/transformed_tc25.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 1
7 |
8 |
9 | false
10 | false
11 | 3
12 |
13 |
14 |
15 | Needlessly long format
16 | BOOLEAN value encoded in more then 1 octet
17 |
18 | 00 00 00
19 |
20 |
21 |
--------------------------------------------------------------------------------
/suite/transformed_tc26.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 1
7 |
8 |
9 | false
10 | false
11 | 3
12 |
13 |
14 |
15 | Needlessly long format
16 | BOOLEAN value encoded in more then 1 octet
17 |
18 | 00 00 01
19 |
20 |
21 |
--------------------------------------------------------------------------------
/suite/transformed_tc36.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Usign of "unused bits" inside constructive BIT STRING allowed for least one only
4 |
5 | UNIVERSAL
6 | true
7 | 3
8 |
9 |
10 | true
11 | false
12 | 0
13 |
14 |
15 | Usign of "unused bits" inside constructive BIT STRING allowed for least one only
16 |
17 |
18 |
--------------------------------------------------------------------------------
/suite/transformed_tc9.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Encoded reserved value with BASE (11)
4 |
5 | UNIVERSAL
6 | false
7 | 9
8 |
9 |
10 | false
11 | false
12 | 3
13 |
14 |
15 | Encoded reserved value with BASE (11)
16 |
17 | Encoded reserved value with BASE (11)
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/suite/transformed_tc31.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | End of input reached before message was fully decoded
4 |
5 | UNIVERSAL
6 | false
7 | 5
8 |
9 |
10 | false
11 | false
12 | 3
13 |
14 |
15 |
16 | Non-zero length of value block for NULL type
17 |
18 | End of input reached before message was fully decoded
19 |
20 |
21 |
--------------------------------------------------------------------------------
/suite/transformed_tc5.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Tag too long, represented as hex-coded
6 |
7 | CONTEXT_SPECIFIC
8 | false
9 | 7F 7F 7F 7F 7F 7F 7F 7F 7F
10 |
11 |
12 |
13 | Unneccesary usage of long length form
14 |
15 | false
16 | true
17 | 1
18 |
19 |
20 | 40
21 |
22 |
23 |
--------------------------------------------------------------------------------
/suite/transformed_tc8.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 9
7 |
8 |
9 | false
10 | false
11 | 3
12 |
13 |
14 |
15 |
16 | Special REAL value should be encoded by 1 octet only
17 |
18 | true
19 | MINUS-INFINITY
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/suite/transformed_tc6.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 9
7 |
8 |
9 | false
10 | false
11 | 7
12 |
13 |
14 |
15 | REAL values for +0 and -0 can not be encoded in decimal format
16 |
17 |
18 | false
19 | 10
20 | 3
21 |
22 |
23 | true
24 | 2B 2E 45 2D 35
25 |
26 | +.E-5
27 |
28 |
29 |
--------------------------------------------------------------------------------
/suite/transformed_tc7.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 9
7 |
8 |
9 | false
10 | false
11 | 7
12 |
13 |
14 |
15 | REAL values for +0 and -0 can not be encoded in decimal format
16 |
17 |
18 | false
19 | 10
20 | 3
21 |
22 |
23 | true
24 | 2D 2E 45 2D 35
25 |
26 | -.E-5
27 |
28 |
29 |
--------------------------------------------------------------------------------
/suite/transformed_tc10.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 9
7 |
8 |
9 | false
10 | false
11 | 7
12 |
13 |
14 |
15 | false
16 | 2
17 | 0
18 | false
19 | 4
20 |
21 |
22 |
23 | Needlessly long format
24 |
25 | false
26 | -5
27 |
28 |
29 | false
30 | 5
31 |
32 | 0.156250
33 |
34 |
35 |
--------------------------------------------------------------------------------
/suite/transformed_tc21.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 6
7 |
8 |
9 | false
10 | false
11 | 6
12 |
13 |
14 |
15 |
16 |
17 | Needlessly long format of SID encoding
18 |
19 | true
20 | false
21 | 81
22 |
23 |
24 |
25 | Needlessly long format of SID encoding
26 |
27 | false
28 | false
29 | 1
30 |
31 |
32 | false
33 | 2.1.1
34 |
35 |
36 |
--------------------------------------------------------------------------------
/suite/transformed_tc14.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | End of input reached before message was fully decoded
4 |
5 | UNIVERSAL
6 | false
7 | 9
8 |
9 |
10 |
11 | Needlessly long encoded length
12 | Unneccesary usage of long length form
13 |
14 | false
15 | true
16 | 7
17 |
18 |
19 | End of input reached before message was fully decoded
20 |
21 | false
22 | 2
23 | 0
24 | false
25 | 4
26 |
27 |
28 | End of input reached before message was fully decoded
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/suite/transformed_tc15.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 9
7 |
8 |
9 | false
10 | false
11 | 12
12 |
13 |
14 |
15 | false
16 | 2
17 | 0
18 | false
19 | 4
20 |
21 |
22 |
23 | Too big REAL exponent block for decoding, hex only
24 |
25 | true
26 | 09 7F FF FF FF FF FF FF FF FB
27 |
28 |
29 | false
30 | 5
31 |
32 | 5 * 2^{09 7F FF FF FF FF FF FF FF FB}
33 |
34 |
35 |
--------------------------------------------------------------------------------
/suite/transformed_tc16.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 9
7 |
8 |
9 | false
10 | false
11 | 12
12 |
13 |
14 |
15 | false
16 | 2
17 | 0
18 | false
19 | 1
20 |
21 |
22 | false
23 | -5
24 |
25 |
26 |
27 | Too big REAL mantissa for decoding, hex only
28 |
29 | true
30 | 05 05 05 05 05 05 05 05 05 05
31 |
32 | {05 05 05 05 05 05 05 05 05 05} * 2^-5
33 |
34 |
35 |
--------------------------------------------------------------------------------
/suite/transformed_tc17.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 9
7 |
8 |
9 | false
10 | false
11 | 20
12 |
13 |
14 |
15 | false
16 | 16
17 | 3
18 | false
19 | 4
20 |
21 |
22 |
23 | Too big REAL exponent block for decoding, hex only
24 |
25 | true
26 | 09 FE FF FF FF FF FF FF FF FF
27 |
28 |
29 |
30 | Too big REAL mantissa for decoding, hex only
31 |
32 | true
33 | 05 05 05 05 05 05 05 05 05
34 |
35 | {05 05 05 05 05 05 05 05 05} * 16^{09 FE FF FF FF FF FF FF FF FF} * 2^3
36 |
37 |
38 |
--------------------------------------------------------------------------------
/suite/transformed_tc13.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | End of input reached before message was fully decoded
4 |
5 | UNIVERSAL
6 | false
7 | 9
8 |
9 |
10 |
11 | Needlessly long encoded length
12 | Unneccesary usage of long length form
13 |
14 | false
15 | true
16 | 7
17 |
18 |
19 | End of input reached before message was fully decoded
20 |
21 | false
22 | 2
23 | 0
24 | false
25 | 4
26 |
27 |
28 |
29 | Needlessly long format
30 |
31 | false
32 | -5
33 |
34 |
35 | End of input reached before message was fully decoded
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2014, Yury Strozhevsky
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without
5 | modification, are permitted provided that the following conditions are met:
6 |
7 | * Redistributions of source code must retain the above copyright notice, this
8 | list of conditions and the following disclaimer.
9 |
10 | * Redistributions in binary form must reproduce the above copyright notice,
11 | this list of conditions and the following disclaimer in the documentation
12 | and/or other materials provided with the distribution.
13 |
14 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
15 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
18 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
20 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
21 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
22 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------------------
/suite/transformed_tc38.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | true
6 | 3
7 |
8 |
9 | true
10 | false
11 | 0
12 |
13 |
14 |
15 |
16 | UNIVERSAL
17 | false
18 | 3
19 |
20 |
21 | false
22 | false
23 | 3
24 |
25 |
26 | 0
27 | 0000 1010 0011 1011
28 |
29 |
30 |
31 |
32 | UNIVERSAL
33 | false
34 | 3
35 |
36 |
37 | false
38 | false
39 | 5
40 |
41 |
42 | 4
43 | 0101 1111 0010 1001 0001 1100 1101 0000
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/suite/transformed_tc22.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 6
7 |
8 |
9 | false
10 | false
11 | 16
12 |
13 |
14 |
15 |
16 |
17 | Too big SID for decoding, hex only
18 |
19 | true
20 | true
21 | 7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 0F
22 |
23 |
24 | false
25 | false
26 | 643
27 |
28 |
29 | false
30 | false
31 | 2
32 |
33 |
34 | false
35 | false
36 | 2
37 |
38 |
39 | false
40 | false
41 | 3
42 |
43 |
44 | true
45 | 2.{{7F 7F 7F 7F 7F 7F 7F 7F 7F 7F 0F} - 80}.643.2.2.3
46 |
47 |
48 |
--------------------------------------------------------------------------------
/suite/transformed_tc37.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | true
6 | 3
7 |
8 |
9 | false
10 | false
11 | 12
12 |
13 |
14 |
15 |
16 | UNIVERSAL
17 | false
18 | 3
19 |
20 |
21 | false
22 | false
23 | 2
24 |
25 |
26 | 0
27 | 0000 0001
28 |
29 |
30 |
31 |
32 | UNIVERSAL
33 | false
34 | 3
35 |
36 |
37 | false
38 | false
39 | 2
40 |
41 |
42 | 0
43 | 0000 0001
44 |
45 |
46 |
47 |
48 | UNIVERSAL
49 | false
50 | 3
51 |
52 |
53 | false
54 | false
55 | 2
56 |
57 |
58 | 4
59 | 0000 1111
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/suite/transformed_tc24.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UNIVERSAL
5 | false
6 | 6
7 |
8 |
9 | false
10 | false
11 | 21
12 |
13 |
14 |
15 |
16 | true
17 | false
18 | 10080
19 |
20 |
21 | false
22 | false
23 | 840
24 |
25 |
26 | false
27 | false
28 | 135119
29 |
30 |
31 | false
32 | false
33 | 9
34 |
35 |
36 | false
37 | false
38 | 2
39 |
40 |
41 | false
42 | false
43 | 12301002
44 |
45 |
46 | false
47 | false
48 | 12132323
49 |
50 |
51 | false
52 | false
53 | 191919
54 |
55 |
56 | false
57 | false
58 | 2
59 |
60 |
61 | false
62 | 2.10000.840.135119.9.2.12301002.12132323.191919.2
63 |
64 |
65 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Description
2 |
3 | In 2012 I wrote my [article](http://www.strozhevsky.com/free_docs/asn1_in_simple_words.pdf) about ASN.1. Right after I finished it I recognized that there are no really free ASN.1:2008 test suites. Because of (IMHO) there are many errors/mistakes/misunderstandings in existing ASN.1 coders/decoders. The test suite I am placing here is intended to be a "helper" for better ASN.1:2008 understanding and further implementation of coders/decoders. As a "test plant" for my test suite I made a freely available [C++ ASN.1:2008 coder/decoder](https://github.com/YuryStrozhevsky/C-plus-plus-ASN.1-2008-coder-decoder). All *.xml files in my test suite are output from my [coder/decoder](https://github.com/YuryStrozhevsky/C-plus-plus-ASN.1-2008-coder-decoder).
4 |
5 | ## Usage
6 |
7 | 1. Read "pdf/free_asn1_testsuite.pdf" file
8 | 2. Use "suite/*.ber" files for testing decoding functionality;
9 | 3. Use "suite/*.xml" file as a suspected output from decoding;
10 | 4. With my [coder/decoder](https://github.com/YuryStrozhevsky/C-plus-plus-ASN.1-2008-coder-decoder) you can use "suite/*.xml" files also as an input for testing encoding functionality;
11 |
12 | ## License
13 |
14 | Copyright (c) 2014, [Yury Strozhevsky](http://www.strozhevsky.com/)
15 | All rights reserved.
16 |
17 | Redistribution and use in source and binary forms, with or without
18 | modification, are permitted provided that the following conditions are met:
19 |
20 | * Redistributions of source code must retain the above copyright notice, this
21 | list of conditions and the following disclaimer.
22 |
23 | * Redistributions in binary form must reproduce the above copyright notice,
24 | this list of conditions and the following disclaimer in the documentation
25 | and/or other materials provided with the distribution.
26 |
27 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
28 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
30 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
31 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
32 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
33 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
34 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
35 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------------------