mirror of
https://github.com/yuzu-emu/mbedtls
synced 2024-11-24 21:08:15 +00:00
285 lines
14 KiB
Text
285 lines
14 KiB
Text
ECP small addition #1
|
|
ecp_small_add:1:"":"":1:"":"":1:0:0
|
|
|
|
ECP small addition #2
|
|
ecp_small_add:1:"":"":0:"14":"11":0:14:11
|
|
|
|
ECP small addition #3
|
|
ecp_small_add:0:"13":"00":0:"13":"00":1:0:0
|
|
|
|
ECP small addition #4
|
|
ecp_small_add:0:"14":"11":0:"14":"36":1:0:0
|
|
|
|
ECP small addition #5
|
|
ecp_small_add:0:"13":"00":0:"37":"31":0:34:14
|
|
|
|
ECP small addition #6
|
|
ecp_small_add:0:"14":"11":0:"37":"31":0:45:07
|
|
|
|
ECP small addition #7
|
|
ecp_small_add:0:"37":"31":0:"37":"31":0:21:32
|
|
|
|
ECP small addition #8
|
|
ecp_small_add:0:"14":"11":0:"14":"11":0:27:30
|
|
|
|
ECP small subtraction #1
|
|
ecp_small_sub:1:"":"":1:"":"":1:0:0
|
|
|
|
ECP small subtraction #2
|
|
ecp_small_sub:1:"":"":0:"14":"11":0:14:36
|
|
|
|
ECP small subtraction #3
|
|
ecp_small_sub:1:"":"":0:"13":"00":0:13:00
|
|
|
|
ECP small subtraction #4
|
|
ecp_small_sub:0:"13":"00":0:"13":"00":1:0:0
|
|
|
|
ECP small subtraction #5
|
|
ecp_small_sub:0:"14":"11":0:"14":"11":1:0:0
|
|
|
|
ECP small subtraction #6
|
|
ecp_small_sub:0:"13":"00":0:"37":"16":0:34:14
|
|
|
|
ECP small subtraction #7
|
|
ecp_small_sub:0:"14":"11":0:"37":"16":0:45:07
|
|
|
|
ECP small subtraction #8
|
|
ecp_small_sub:0:"37":"31":0:"37":"16":0:21:32
|
|
|
|
ECP small subtraction #9
|
|
ecp_small_sub:0:"14":"11":0:"14":"36":0:27:30
|
|
|
|
ECP small multiplication negative
|
|
ecp_small_mul:-1:0:0:0:POLARSSL_ERR_ECP_BAD_INPUT_DATA
|
|
|
|
ECP small multiplication #0
|
|
ecp_small_mul:0:1:0:0:0
|
|
|
|
ECP small multiplication #1
|
|
ecp_small_mul:1:0:17:42:0
|
|
|
|
ECP small multiplication #2
|
|
ecp_small_mul:2:0:20:01:0
|
|
|
|
ECP small multiplication #3
|
|
ecp_small_mul:3:0:14:11:0
|
|
|
|
ECP small multiplication #4
|
|
ecp_small_mul:4:0:34:33:0
|
|
|
|
ECP small multiplication #5
|
|
ecp_small_mul:5:0:21:32:0
|
|
|
|
ECP small multiplication #6
|
|
ecp_small_mul:6:0:27:30:0
|
|
|
|
ECP small multiplication #7
|
|
ecp_small_mul:7:0:27:17:0
|
|
|
|
ECP small multiplication #8
|
|
ecp_small_mul:8:0:21:15:0
|
|
|
|
ECP small multiplication #9
|
|
ecp_small_mul:9:0:34:14:0
|
|
|
|
ECP small multiplication #10
|
|
ecp_small_mul:10:0:14:36:0
|
|
|
|
ECP small multiplication #11
|
|
ecp_small_mul:11:0:20:46:0
|
|
|
|
ECP small multiplication #12
|
|
ecp_small_mul:12:0:17:05:0
|
|
|
|
ECP small multiplication #13
|
|
ecp_small_mul:13:1:0:0:0
|
|
|
|
ECP small multiplication #14
|
|
ecp_small_mul:1:0:17:42:0
|
|
|
|
ECP small multiplication #15
|
|
ecp_small_mul:2:0:20:01:0
|
|
|
|
ECP small multiplication too big
|
|
ecp_small_mul:-1:0:0:0:POLARSSL_ERR_ECP_BAD_INPUT_DATA
|
|
|
|
ECP small check pubkey #1
|
|
ecp_small_check_pub:1:1:0:POLARSSL_ERR_ECP_INVALID_KEY
|
|
|
|
ECP small check pubkey #2
|
|
ecp_small_check_pub:9:-1:1:POLARSSL_ERR_ECP_INVALID_KEY
|
|
|
|
ECP small check pubkey #3
|
|
ecp_small_check_pub:9:46:1:0
|
|
|
|
ECP small check pubkey #4
|
|
ecp_small_check_pub:13:47:1:POLARSSL_ERR_ECP_INVALID_KEY
|
|
|
|
ECP small check pubkey #5
|
|
ecp_small_check_pub:13:0:1:0
|
|
|
|
ECP small check pubkey #6
|
|
ecp_small_check_pub:-1:10:1:POLARSSL_ERR_ECP_INVALID_KEY
|
|
|
|
ECP small check pubkey #7
|
|
ecp_small_check_pub:46:10:1:0
|
|
|
|
ECP small check pubkey #8
|
|
ecp_small_check_pub:47:2:1:POLARSSL_ERR_ECP_INVALID_KEY
|
|
|
|
ECP small check pubkey #9
|
|
ecp_small_check_pub:0:2:1:0
|
|
|
|
ECP small check pubkey #10
|
|
ecp_small_check_pub:10:25:1:POLARSSL_ERR_ECP_INVALID_KEY
|
|
|
|
ECP write binary #0 (zero, bad format)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_write_binary:POLARSSL_ECP_DP_SECP192R1:"01":"01":"00":POLARSSL_ECP_PF_UNKNOWN:"00":1:POLARSSL_ERR_ECP_BAD_INPUT_DATA
|
|
|
|
ECP write binary #1 (zero, uncompressed, buffer just fits)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_write_binary:POLARSSL_ECP_DP_SECP192R1:"01":"01":"00":POLARSSL_ECP_PF_UNCOMPRESSED:"00":1:0
|
|
|
|
ECP write binary #2 (zero, buffer too small)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_write_binary:POLARSSL_ECP_DP_SECP192R1:"01":"01":"00":POLARSSL_ECP_PF_UNCOMPRESSED:"00":0:POLARSSL_ERR_ECP_BUFFER_TOO_SMALL
|
|
|
|
ECP write binary #3 (non-zero, uncompressed, buffer just fits)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_write_binary:POLARSSL_ECP_DP_SECP192R1:"48d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":"6ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":"01":POLARSSL_ECP_PF_UNCOMPRESSED:"0448d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc99336ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":49:0
|
|
|
|
ECP write binary #4 (non-zero, uncompressed, buffer too small)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_write_binary:POLARSSL_ECP_DP_SECP192R1:"48d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":"6ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":"01":POLARSSL_ECP_PF_UNCOMPRESSED:"0448d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc99336ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":48:POLARSSL_ERR_ECP_BUFFER_TOO_SMALL
|
|
|
|
ECP write binary #5 (zero, compressed, buffer just fits)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_write_binary:POLARSSL_ECP_DP_SECP192R1:"01":"01":"00":POLARSSL_ECP_PF_COMPRESSED:"00":1:0
|
|
|
|
ECP write binary #6 (zero, buffer too small)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_write_binary:POLARSSL_ECP_DP_SECP192R1:"01":"01":"00":POLARSSL_ECP_PF_COMPRESSED:"00":0:POLARSSL_ERR_ECP_BUFFER_TOO_SMALL
|
|
|
|
ECP write binary #7 (even, compressed, buffer just fits)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_write_binary:POLARSSL_ECP_DP_SECP192R1:"48d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":"6ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":"01":POLARSSL_ECP_PF_COMPRESSED:"0248d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":25:0
|
|
|
|
ECP write binary #8 (even, compressed, buffer too small)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_write_binary:POLARSSL_ECP_DP_SECP192R1:"48d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":"6ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":"01":POLARSSL_ECP_PF_COMPRESSED:"0248d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":24:POLARSSL_ERR_ECP_BUFFER_TOO_SMALL
|
|
|
|
ECP write binary #9 (odd, compressed, buffer just fits)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_write_binary:POLARSSL_ECP_DP_SECP192R1:"48d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":"93112b28345b7d1d7799611e49bea9d8290cb2d7afe1f9f3":"01":POLARSSL_ECP_PF_COMPRESSED:"0348d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":25:0
|
|
|
|
ECP read binary #1 (zero, invalid ilen)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_read_binary:POLARSSL_ECP_DP_SECP192R1:"0000":"01":"01":"00":POLARSSL_ERR_ECP_BAD_INPUT_DATA
|
|
|
|
ECP read binary #2 (zero, invalid first byte)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_read_binary:POLARSSL_ECP_DP_SECP192R1:"01":"01":"01":"00":POLARSSL_ERR_ECP_BAD_INPUT_DATA
|
|
|
|
ECP read binary #3 (zero, OK)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_read_binary:POLARSSL_ECP_DP_SECP192R1:"00":"01":"01":"00":0
|
|
|
|
ECP read binary #4 (non-zero, invalid ilen)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_read_binary:POLARSSL_ECP_DP_SECP192R1:"04001122":"01":"01":"00":POLARSSL_ERR_ECP_BAD_INPUT_DATA
|
|
|
|
ECP read binary #5 (non-zero, invalid first byte)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_read_binary:POLARSSL_ECP_DP_SECP192R1:"0548d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc99336ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":"48d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":"6ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":"01":POLARSSL_ERR_ECP_BAD_INPUT_DATA
|
|
|
|
ECP read binary #6 (non-zero, OK)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_read_binary:POLARSSL_ECP_DP_SECP192R1:"0448d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc99336ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":"48d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":"6ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":"01":0
|
|
|
|
ECP tls read point #1 (zero, invalid length byte)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_tls_read_point:POLARSSL_ECP_DP_SECP192R1:"0200":"01":"01":"00":POLARSSL_ERR_ECP_BAD_INPUT_DATA
|
|
|
|
ECP tls read point #2 (zero, OK)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_tls_read_point:POLARSSL_ECP_DP_SECP192R1:"0100":"01":"01":"00":0
|
|
|
|
ECP tls read point #3 (non-zero, invalid length byte)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_tls_read_point:POLARSSL_ECP_DP_SECP192R1:"300448d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc99336ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":"48d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":"6ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":"01":POLARSSL_ERR_ECP_BAD_INPUT_DATA
|
|
|
|
ECP tls read point #4 (non-zero, OK)
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_tls_read_point:POLARSSL_ECP_DP_SECP192R1:"310448d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc99336ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":"48d8082a3a1e3112bc03a8ef2f6d40d0a77a6f8e00cc9933":"6ceed4d7cba482e288669ee1b6415626d6f34d28501e060c":"01":0
|
|
|
|
ECP tls write-read point #1
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_tls_write_read_point:POLARSSL_ECP_DP_SECP192R1
|
|
|
|
ECP tls write-read point #2
|
|
depends_on:POLARSSL_ECP_DP_SECP521R1_ENABLED
|
|
ecp_tls_write_read_point:POLARSSL_ECP_DP_SECP521R1
|
|
|
|
ECP tls read group #1 (record too short)
|
|
ecp_tls_read_group:"0313":POLARSSL_ERR_ECP_BAD_INPUT_DATA:0
|
|
|
|
ECP tls read group #2 (bad curve_type)
|
|
ecp_tls_read_group:"010013":POLARSSL_ERR_ECP_BAD_INPUT_DATA:0
|
|
|
|
ECP tls read group #3 (unknown curve)
|
|
ecp_tls_read_group:"030010":POLARSSL_ERR_ECP_FEATURE_UNAVAILABLE:0
|
|
|
|
ECP tls read group #4 (OK, buffer just fits)
|
|
depends_on:POLARSSL_ECP_DP_SECP256R1_ENABLED
|
|
ecp_tls_read_group:"030017":0:256
|
|
|
|
ECP tls read group #5 (OK, buffer continues)
|
|
ecp_tls_read_group:"0300180000":0:384
|
|
|
|
ECP tls write-read group #1
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_tls_write_read_group:POLARSSL_ECP_DP_SECP192R1
|
|
|
|
ECP tls write-read group #2
|
|
depends_on:POLARSSL_ECP_DP_SECP521R1_ENABLED
|
|
ecp_tls_write_read_group:POLARSSL_ECP_DP_SECP521R1
|
|
|
|
ECP check privkey
|
|
ecp_check_privkey:POLARSSL_ECP_DP_SECP192R1
|
|
|
|
ECP gen keypair
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_gen_keypair:POLARSSL_ECP_DP_SECP192R1
|
|
|
|
ECP mod p192 readable
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_fast_mod:POLARSSL_ECP_DP_SECP192R1:"000000000000010500000000000001040000000000000103000000000000010200000000000001010000000000000100"
|
|
|
|
ECP mod p192 random
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_fast_mod:POLARSSL_ECP_DP_SECP192R1:"36CF96B45D706A0954D89E52CE5F38517A2270E0175849B6F3740151D238CCABEF921437E475881D83BB69E4AA258EBD"
|
|
|
|
ECP test vectors secp192r1 rfc 5114
|
|
depends_on:POLARSSL_ECP_DP_SECP192R1_ENABLED
|
|
ecp_test_vect:POLARSSL_ECP_DP_SECP192R1:"323FA3169D8E9C6593F59476BC142000AB5BE0E249C43426":"CD46489ECFD6C105E7B3D32566E2B122E249ABAADD870612":"68887B4877DF51DD4DC3D6FD11F0A26F8FD3844317916E9A":"631F95BB4A67632C9C476EEE9AB695AB240A0499307FCF62":"519A121680E0045466BA21DF2EEE47F5973B500577EF13D5":"FF613AB4D64CEE3A20875BDB10F953F6B30CA072C60AA57F":"AD420182633F8526BFE954ACDA376F05E5FF4F837F54FEBE":"4371545ED772A59741D0EDA32C671112B7FDDD51461FCF32"
|
|
|
|
ECP test vectors secp224r1 rfc 5114
|
|
depends_on:POLARSSL_ECP_DP_SECP224R1_ENABLED
|
|
ecp_test_vect:POLARSSL_ECP_DP_SECP224R1:"B558EB6C288DA707BBB4F8FBAE2AB9E9CB62E3BC5C7573E22E26D37F":"49DFEF309F81488C304CFF5AB3EE5A2154367DC7833150E0A51F3EEB":"4F2B5EE45762C4F654C1A0C67F54CF88B016B51BCE3D7C228D57ADB4":"AC3B1ADD3D9770E6F6A708EE9F3B8E0AB3B480E9F27F85C88B5E6D18":"6B3AC96A8D0CDE6A5599BE8032EDF10C162D0A8AD219506DCD42A207":"D491BE99C213A7D1CA3706DEBFE305F361AFCBB33E2609C8B1618AD5":"52272F50F46F4EDC9151569092F46DF2D96ECC3B6DC1714A4EA949FA":"5F30C6AA36DDC403C0ACB712BB88F1763C3046F6D919BD9C524322BF"
|
|
|
|
ECP test vectors secp256r1 rfc 5114
|
|
depends_on:POLARSSL_ECP_DP_SECP256R1_ENABLED
|
|
ecp_test_vect:POLARSSL_ECP_DP_SECP256R1:"814264145F2F56F2E96A8E337A1284993FAF432A5ABCE59E867B7291D507A3AF":"2AF502F3BE8952F2C9B5A8D4160D09E97165BE50BC42AE4A5E8D3B4BA83AEB15":"EB0FAF4CA986C4D38681A0F9872D79D56795BD4BFF6E6DE3C0F5015ECE5EFD85":"2CE1788EC197E096DB95A200CC0AB26A19CE6BCCAD562B8EEE1B593761CF7F41":"B120DE4AA36492795346E8DE6C2C8646AE06AAEA279FA775B3AB0715F6CE51B0":"9F1B7EECE20D7B5ED8EC685FA3F071D83727027092A8411385C34DDE5708B2B6":"DD0F5396219D1EA393310412D19A08F1F5811E9DC8EC8EEA7F80D21C820C2788":"0357DCCD4C804D0D8D33AA42B848834AA5605F9AB0D37239A115BBB647936F50"
|
|
|
|
ECP test vectors secp384r1 rfc 5114
|
|
depends_on:POLARSSL_ECP_DP_SECP384R1_ENABLED
|
|
ecp_test_vect:POLARSSL_ECP_DP_SECP384R1:"D27335EA71664AF244DD14E9FD1260715DFD8A7965571C48D709EE7A7962A156D706A90CBCB5DF2986F05FEADB9376F1":"793148F1787634D5DA4C6D9074417D05E057AB62F82054D10EE6B0403D6279547E6A8EA9D1FD77427D016FE27A8B8C66":"C6C41294331D23E6F480F4FB4CD40504C947392E94F4C3F06B8F398BB29E42368F7A685923DE3B67BACED214A1A1D128":"52D1791FDB4B70F89C0F00D456C2F7023B6125262C36A7DF1F80231121CCE3D39BE52E00C194A4132C4A6C768BCD94D2":"5CD42AB9C41B5347F74B8D4EFB708B3D5B36DB65915359B44ABC17647B6B9999789D72A84865AE2F223F12B5A1ABC120":"E171458FEAA939AAA3A8BFAC46B404BD8F6D5B348C0FA4D80CECA16356CA933240BDE8723415A8ECE035B0EDF36755DE":"5EA1FC4AF7256D2055981B110575E0A8CAE53160137D904C59D926EB1B8456E427AA8A4540884C37DE159A58028ABC0E":"0CC59E4B046414A81C8A3BDFDCA92526C48769DD8D3127CAA99B3632D1913942DE362EAFAA962379374D9F3F066841CA"
|
|
|
|
ECP test vectors secp521r1 rfc 5114
|
|
depends_on:POLARSSL_ECP_DP_SECP521R1_ENABLED
|
|
ecp_test_vect:POLARSSL_ECP_DP_SECP521R1:"0113F82DA825735E3D97276683B2B74277BAD27335EA71664AF2430CC4F33459B9669EE78B3FFB9B8683015D344DCBFEF6FB9AF4C6C470BE254516CD3C1A1FB47362":"01EBB34DD75721ABF8ADC9DBED17889CBB9765D90A7C60F2CEF007BB0F2B26E14881FD4442E689D61CB2DD046EE30E3FFD20F9A45BBDF6413D583A2DBF59924FD35C":"00F6B632D194C0388E22D8437E558C552AE195ADFD153F92D74908351B2F8C4EDA94EDB0916D1B53C020B5EECAED1A5FC38A233E4830587BB2EE3489B3B42A5A86A4":"00CEE3480D8645A17D249F2776D28BAE616952D1791FDB4B70F7C3378732AA1B22928448BCD1DC2496D435B01048066EBE4F72903C361B1A9DC1193DC2C9D0891B96":"010EBFAFC6E85E08D24BFFFCC1A4511DB0E634BEEB1B6DEC8C5939AE44766201AF6200430BA97C8AC6A0E9F08B33CE7E9FEEB5BA4EE5E0D81510C24295B8A08D0235":"00A4A6EC300DF9E257B0372B5E7ABFEF093436719A77887EBB0B18CF8099B9F4212B6E30A1419C18E029D36863CC9D448F4DBA4D2A0E60711BE572915FBD4FEF2695":"00CDEA89621CFA46B132F9E4CFE2261CDE2D4368EB5656634C7CC98C7A00CDE54ED1866A0DD3E6126C9D2F845DAFF82CEB1DA08F5D87521BB0EBECA77911169C20CC":"00F9A71641029B7FC1A808AD07CD4861E868614B865AFBECAB1F2BD4D8B55EBCB5E3A53143CEB2C511B1AE0AF5AC827F60F2FD872565AC5CA0A164038FE980A7E4BD"
|
|
|
|
ECP selftest
|
|
depends_on:POLARSSL_SELF_TEST
|
|
ecp_selftest:
|