From 2a0f63cf1c3c5567f51014e6f3d37d011fe9ec98 Mon Sep 17 00:00:00 2001 From: David Date: Sat, 26 Sep 2026 13:11:04 -0700 Subject: [PATCH] Support draft-rosomakho-tls-ecdhe-mlkem512 This commit adds support for the two code points in draft-rosomakho-tls-ecdhe-mlkem512 (SecP256r1MLKEM512 and MLKEM512X25519). --- CHANGELOG.md | 1 + etc/curves-mapping.txt | 2 + etc/tls_data.txt | 94 ++++++++++++++++++++++++++++++++++++++++++ testssl.sh | 73 ++++++++++++++++++++++++++------ 4 files changed, 158 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f73b7f5..390b2de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ * Security fix: HTML-escape URLs in the HTML report to prevent stored XSS from a server-controlled `Location:` header (#3090) * Detect short-lived certificates (validity period <= `DAYS_VALID_SHORTLIVED`, default 10 days) and no longer flag them red merely for their short lifespan; warn only when less than 24h is left (#3097) * Check for SLH-DSA signatures (draft-reddy-tls-slhdsa) +* Check for two KEMs in draft-rosomakho-tls-ecdhe-mlkem512 ### Features implemented / improvements in 3.2 diff --git a/etc/curves-mapping.txt b/etc/curves-mapping.txt index a70a768..606e38f 100644 --- a/etc/curves-mapping.txt +++ b/etc/curves-mapping.txt @@ -48,6 +48,8 @@ 0x02,0x00 - MLKEM512 MLKEM512 0x02,0x01 - MLKEM768 MLKEM768 0x02,0x02 - MLKEM1024 MLKEM1024 + 0x11,0xe9 - SecP256r1MLKEM512 SecP256r1MLKEM512 + 0x11,0xea - MLKEM512X25519 MLKEM512X25519 0x11,0xeb - SecP256r1MLKEM768 SecP256r1MLKEM768 0x11,0xec - X25519MLKEM768 X25519MLKEM768 0x11,0xed - SecP384r1MLKEM1024 SecP384r1MLKEM1024 diff --git a/etc/tls_data.txt b/etc/tls_data.txt index 00dd670..94e2437 100644 --- a/etc/tls_data.txt +++ b/etc/tls_data.txt @@ -465,6 +465,98 @@ kPixkjWFMp41VmBe8wJOpd8snLKWH542I9lp2FagJMUKWIjOJLUVoY9dDdpiPrqA 6w8= -----END PRIVATE KEY----- " +[0x11e9]="---BEGIN HYBRID PRIV KEY--- +-----BEGIN PRIVATE KEY----- +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg/7VIIEm3bEpskFo2 +gk4iXacSEAYV6vGUcznu6pbTjPqhRANCAARj++yWwbpPSd0eistlJ9CfjAv4GYAg +RTKKhdtpAqXWVQWnmQ5jrYqpH3kMnQrLCeqqvA5Uuld6a3O0MYtk69eD +-----END PRIVATE KEY----- +-----BEGIN PRIVATE KEY----- +MIIGvgIBADALBglghkgBZQMEBAEEggaqMIIGpgRA24Bw4zUnbT6JXIdNXm5ODaTO +ketbgZdTGjRBccMAz0KT0eA3fsv4TPHmG5s6r5O2BPgsDpM9My2bv+bQ0jW2awSC +BmAfY5okYG3TnIfVsxu29KEzZWDM84JDwY4eCBudmrdbSmEVZSedlFLPUqNZhEYd +FysWtXeeBjmVJjtIdcW3mskPCy9tpLAyp2oW0Qv56TiD8Qhai8hJZhrrWHOWGGOz +jM9EAaFGPEvMGU6rs8/mSIzYplxylBrsA53qmgo4pjeiW5+LsWS2K13M5Zouimnb +/Ddpuj7UEQnemQA+F3/TpsgyxpkazCggu8mN41OaxcJn+GFGdyjhmkcYhBhEUzuz +hpp8EWRmhQHDtMqYkcxzupEX4XQnWlnuHFTnuczqi5Gc2qHa96fwdaSlOmRIYrHL +k6RV1THTprdgRoESxguTCsE8tHZtZz/nopBTZodxWicjoSunSkOsgpBohJcVYWdC +Uxi2OTsUsBIQrGON9JW/g865WCF1RiDQW4L841Yxe5A4aAA9mHz8dinBNsyTuLjr +YytvcBPUGIs5ZpY34lIOeiBEsVHhgS0SF3+RBkTy1hpmVXc5uaZeoaMY0bvAvC/N +Nm3TtXaAx2DvZYU7mF/im5SNHHQPzCmWy3WakH2rQ1foViyJkWsKUEZ4xa41wU5i +qGQApVu6Ag4P1M1bBShdu4z3yzj9wlYd/MM3XBPA1COF8YTvly8hlyPLUo5iVXZo +h64NOwkD4UHjqbTEaGr7dxvWuMmx+p5tZ6ySk8RORMsVOSGFGIG7VZoX9QE1SAEq +us7VlgFJcF3MOlF2wJhZ8gS118RuGyK0/AzMw7Zn2rYjUQ6cqUYOk3G+uV6zFaVd +Uaa0xmErMLjkKLKFOQsBJrKcIgLrwsCDUAOVGA3OtjkDd58wyYqZ1ZEf8y8G6W70 +eZJwkw68+VXaxT9bEBvqUDrZ0nhulA6y6sJrUiGYEDubaykxMa1iCIt8OLuMkiCz +21UFYsMnwq7uUVJNIEBJpb5dm4PVdpTHMoXGAjcsgL34AM6iuZJA+3ZH2Qe/0aqa +fDUlWiNGECdtIXyU68gS9r4PlpftxjIOccks8mQ2BVy68h35KBL3N65oUYwNhhsQ +YENtJ5CrMUWhExr7rGbsZSEnwLt8+z1PRmpCu6bflIHC809GWUgrpGQbu0p9VQQo +2UFWIUTU5W6J5SVzQVQs1W39Yjk7hypPLHU+LJO6gm02salVq5DruzVOs0aOp0zP +wQ+AwC8ZkC69q5V7tgjT5Gg79Kt3IkbzpRumc45+CEoJer+QnIKN1J7+2o/Hq0fV +lIZQUJfbOc6wZCMbdyKXEiMGhq63FpTI4Ja/eI6kmgk8QBNDpFwfNxRQ0Ui6piro +VZ0f2YbRgng8EkoHso8xvB5ilomkZoQOkZkkuiw0x4Hzh7PcgngRWD7UJWmF1LJY +ewj/TH7Fw68RALsOzBt/eL0tfF4qESA8QU1M0zQ8ObE4VZ8Iu1mViMiABqSKh27c +cmMcOacCx2D7R05AkCfwUKuAZHp2OwCyuDTDVw1No4+yczBTk2OpIrR82ZUTJ439 +UT8LMxws95aAIckGsiu6o7Qgqj2wM7RH4hOHJgVkkSke6RzmKQu5PJylIy8uKRQG +3EA5AVY7hWiswFELGD5kcUlMM0YLmUfQUJzlOaVdKLj6OHviQcGcmM6JdR6KI7F2 +A7B9dzN0MYz8TJr1SiB2cMUi6LmMOs2WFAZVwCYxxVOGTK4c9EEPpppRVKSZZFH2 +JkKwApb9cjv6Myi6khnoiKTyM4Q6vAQN3K2rukDcjJ1X86iySpUx2IXQtYgYuToJ +hKA3pEf5yBrAIHYmmLQjKDT6s8By2GuW4K7RM8oJea8FQYr7OSN2BHWE+mVsQTjS +t203QXctsKdqjKhj5abvgq1a25ozgY3YkWZymSVpVcWLM27SYU1zFLpgvBgy21xL +FkVzbKsphjx8+UM5ChnhcRVyTIrTiaoD8HuTVco5ZYc+2JnXeKMq03rpasoAK4En +01DMR4e1A5C9sG/zKYPpVXIk+3omIn73aKI3l16TUi/GOwzmhZ31y7mQV01izKRe +Qqw63ME08CL8m1c9ix9ZUkEKdTE4YqHD2rp0wnWTObEMQ6LqgxbHMpMkcqRnZ0Wr +SZOWlYTZ8MLvKyPRyods0XgIpK8oNveakhADiYo45/gCGjzcOUvAeMafxwLuuOjd +Dy5UlKgdeC/H8cic7oa3/J4+k9HgN37L+Ezx5hubOq+TtgT4LA6TPTMtm7/m0NI1 +tms= +-----END PRIVATE KEY----- +---END HYBRID PRIV KEY--- +" +[0x11ea]="---BEGIN HYBRID PRIV KEY--- +-----BEGIN PRIVATE KEY----- +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 +ehg= +-----END PRIVATE KEY----- +-----BEGIN PRIVATE KEY----- +MC4CAQAwBQYDK2VuBCIEIKC96QIdHIe01fbTQi7e9hERxPkRArJ0hdg9Q0SlECVv +-----END PRIVATE KEY----- +---END HYBRID PRIV KEY--- +" [0x11eb]="---BEGIN HYBRID PRIV KEY--- -----BEGIN EC PARAMETERS----- BggqhkjOPQMBBw== @@ -761,6 +853,8 @@ readonly -a TLS13_PUBLIC_KEY_SHARES=( [0x200]="02,00,03,20,69,eb,5a,9b,a7,64,9c,12,6b,e4,96,3d,d4,b7,38,bc,c5,0e,f2,48,16,ba,87,70,2b,a1,0d,23,b3,92,14,a1,8a,f1,c1,9b,ec,e9,2f,d0,20,44,e8,28,33,f7,2b,7a,f7,59,01,ea,b2,8d,9f,c6,55,b5,a2,2f,bc,01,35,82,bb,a0,f2,5c,ba,7b,e3,ac,1a,08,5d,0d,88,ae,7b,d1,52,48,aa,87,58,17,85,fb,a9,77,5c,a2,05,6c,93,5e,6a,d3,9e,9e,a7,bd,ad,28,08,fd,17,3e,49,14,93,5c,12,70,4f,79,38,be,b6,8e,8c,f5,ac,d6,a0,94,f4,b6,1c,ec,c1,0f,4d,7b,6f,58,db,2d,99,69,4f,dc,b4,ba,6b,a6,14,b3,e8,60,99,bb,9d,3d,59,8f,76,90,11,37,2a,cb,8c,8b,3f,6c,e3,5d,ce,36,06,89,d1,0c,f7,4c,8c,6d,51,26,4f,d9,29,44,31,4e,3f,39,13,b9,74,0b,74,b8,1f,2c,21,65,d4,c5,54,43,63,2c,87,e5,57,47,0c,a9,69,eb,8e,2c,29,30,94,f2,34,54,4b,62,9e,c1,1b,6b,9b,9b,dd,b7,c6,f9,d8,01,a1,7b,0f,78,43,a3,d5,00,cf,55,fc,ac,f2,eb,06,71,7a,48,6e,84,5c,a1,41,37,9c,c0,a3,8b,59,80,22,94,ac,73,0c,11,12,73,80,da,21,39,5f,12,45,ed,87,c0,5d,1b,86,b6,55,08,57,67,47,c3,e4,83,f4,6b,b0,11,34,82,e5,8c,39,6d,f3,88,e6,bb,2e,ca,9b,98,14,39,87,ba,43,36,ed,55,9c,53,f2,45,69,84,ac,c9,ec,23,1c,38,32,69,48,4b,e4,e6,02,2f,d3,23,94,46,50,19,c5,16,58,c2,47,4f,3a,90,c3,c1,06,b2,09,bd,d4,c2,a2,c0,6c,5e,19,34,b7,b8,23,05,48,e9,3a,fb,6a,3d,bd,5b,c3,a9,37,39,26,00,c7,2b,98,68,71,6c,13,80,e1,43,6a,83,0f,96,fb,90,dc,d9,6a,67,17,74,78,b9,97,6b,21,27,35,c0,0b,61,19,ce,fb,9a,a5,4e,44,95,49,ea,22,63,7c,6e,17,b8,33,f9,72,9e,15,f2,43,db,66,a9,65,61,49,e7,36,70,b2,60,08,f4,52,5f,d3,94,33,01,96,33,d6,03,b7,14,11,52,3c,12,7c,58,4c,25,2f,7c,52,e6,dc,71,72,b3,7e,cc,01,85,b5,51,af,cd,36,7f,83,5b,4c,38,23,27,e6,b1,ab,ae,50,95,0b,d7,99,e7,4b,22,3e,63,4b,63,fc,78,a5,f1,14,00,64,26,f9,53,b4,33,8a,61,d5,28,7e,63,d3,2d,56,a3,8e,d0,f3,0a,24,68,0f,34,09,3f,20,f3,2a,31,fb,a1,56,c7,64,fc,28,68,2e,1b,92,40,64,29,1a,34,b6,e8,35,5b,d8,77,bb,a1,a7,a4,6a,98,2f,c1,90,90,b7,31,64,26,27,78,cc,74,c1,c9,76,28,95,54,7f,ec,ea,13,c2,43,91,3e,68,2e,1c,d3,b3,05,a7,b8,be,11,23,7c,95,6e,dc,a6,6c,8e,c1,ad,5e,63,c1,01,db,85,7a,60,9e,c5,96,01,32,81,a7,21,bb,46,be,48,10,48,d1,ac,72,7c,7b,7e,e2,1c,c6,cb,0c,11,14,9e,78,48,61,2e,d4,3c,34,b8,4e,db,d8,79,e2,86,cb,40,72,63,57,99,5b,3a,05,c9,83,34,7a,b9,88,28,a8,65,41,f7,52,22,3b,76,aa,e6,71,02,8e,e9,04,2c,aa,3d,6c,9c,95,fa,57,44,10,51,a2,53,47,b9,b4,e7,a6,3a,f4,4c,d9,41,c3,98,64,57,6b,01,a8,fa,96,cb,a0,c0,48,d9,e0,5b,c9,e1,19,29,30,95,c0,98,c5,e9,d8,54,4b,b1,25,16,8c,6b,4b,cc,92,bb,0a,04,c5,49,41,b3,01,ac,90,5b,70,8c,85,6f,f5,52,6f,43,be,c9,c5,33,90,57,0a,eb,6e,31,87,56,d3,41,20,b3" [0x0201]="02,01,04,a0,a6,b5,a3,b4,d1,65,65,d3,8d,33,1a,a6,93,57,be,9d,d5,0b,e8,c8,cd,b6,40,51,3c,98,76,e1,0c,5a,81,90,13,67,81,ce,df,75,68,be,32,88,75,e5,57,ed,43,6b,cf,a1,7e,47,28,68,c3,79,a4,fd,98,b1,50,c4,85,7b,3a,97,b3,89,b2,19,76,a3,10,09,93,38,a4,0c,09,f7,6a,89,5b,40,fa,5a,94,4c,64,aa,0b,d9,4d,d5,42,2f,2a,89,45,e6,6c,38,a4,fa,3a,bc,a7,53,a9,9a,ce,a3,75,01,ae,37,b2,9b,f2,75,de,61,14,c5,1a,62,72,d7,15,f3,c2,8d,85,f3,a7,24,b3,53,c3,fb,54,e5,0b,34,e7,67,a7,15,c7,c2,49,fa,3c,2d,a6,60,d0,c8,73,bb,65,7b,b9,43,78,d9,9c,c5,dc,34,7a,d7,b8,33,da,a1,59,c9,08,ae,99,69,b8,42,92,cf,39,08,3b,e6,14,3a,fe,75,13,a9,69,9f,64,27,2b,08,ec,14,ca,5b,b7,b3,0a,3b,6e,47,bd,68,ba,10,32,85,44,d0,4c,0f,fa,0c,49,34,79,40,5a,98,70,98,4c,49,ab,4a,cd,20,39,51,fa,4a,83,f6,0b,62,ce,ea,c8,bd,52,50,5b,f3,69,47,0c,6d,92,83,1c,90,a7,78,f2,c7,0f,08,57,75,b7,c0,c7,e2,1c,8e,31,81,2b,91,98,83,ab,19,ab,d6,f6,5f,b9,a1,1f,35,fc,5c,00,95,37,ef,56,82,74,eb,9c,32,39,bd,98,81,75,b6,fa,2b,49,c2,7c,c9,56,04,d5,b5,ca,cf,e7,b8,1d,bb,3f,69,15,b5,32,a9,bf,ff,c3,23,0f,ca,88,2b,63,cf,b5,25,0e,5a,67,ab,40,2b,2d,9a,4c,c9,3b,12,21,b8,d1,30,c1,70,ab,da,0a,31,ff,f2,02,c8,3a,32,bc,73,8c,ce,02,2c,e9,e0,84,4d,20,94,77,00,42,11,44,2e,bc,32,a2,7f,d6,1f,dc,30,a4,a3,59,ba,3e,07,a8,12,f5,1a,1c,c9,4c,66,a8,6c,1a,0c,bf,c9,13,9d,3e,fb,96,93,da,27,23,12,63,c6,25,53,4a,da,c4,21,45,8d,28,d6,5d,69,8a,2f,45,08,84,96,b2,ce,aa,c8,12,d1,d8,25,a6,b1,5d,be,0c,16,50,69,c1,7f,eb,91,b6,a1,65,92,e5,8c,2b,77,42,81,89,bd,4b,c9,01,d5,11,6a,4f,06,ae,2b,e4,30,4d,4c,67,a1,26,21,75,66,cd,e1,80,31,75,aa,94,c8,13,1e,58,89,c3,19,77,6b,17,90,3b,e4,f3,c3,20,73,0d,62,88,76,d4,0b,7c,59,c0,3d,f0,4a,9d,f4,c5,a5,a4,30,62,28,db,68,09,ac,7d,3d,a3,9e,3f,13,74,9f,92,35,80,72,64,53,5c,18,b0,d5,83,10,28,b9,9a,79,44,de,21,a1,7d,aa,9b,9a,37,8b,4c,76,60,bd,a0,9c,52,b4,7a,ba,a6,73,7c,7c,4b,43,b3,98,68,0b,96,ea,41,6b,9b,bb,b3,b4,07,23,a3,66,4a,3e,5a,08,14,cc,cd,e4,e0,93,32,e3,17,4e,9b,82,7e,73,84,b6,92,46,e2,a8,a0,66,43,c9,72,35,2e,5c,45,51,b4,32,46,2a,fb,4b,4f,5c,53,8d,24,1a,f5,f2,05,a2,07,9b,69,f5,14,85,b7,01,20,e4,77,e6,50,bf,2b,62,28,77,b0,30,d4,a4,76,32,34,14,a6,f6,61,a5,87,7d,64,c1,17,44,96,49,7d,24,82,34,58,2a,f5,18,2c,b5,07,ae,24,65,53,00,e9,1e,e6,e3,ab,74,14,cc,25,d7,75,c1,d7,83,82,a9,2e,b7,a8,7c,92,45,c7,54,e3,6d,ae,f0,60,d7,90,52,11,5c,17,ca,5b,b6,f6,67,c9,e1,37,71,a4,2c,44,37,92,6f,d8,5a,00,4d,a5,aa,7f,5c,4c,8a,6b,8e,1f,94,c6,7d,f0,1d,21,07,35,80,5a,4a,50,81,26,88,f6,38,04,8c,a9,9b,6b,8d,d0,5c,c5,98,bb,0a,76,75,ba,a0,a2,79,50,84,1e,c0,fc,28,ec,84,29,f1,11,1f,b9,a7,02,ea,1c,48,5f,79,9e,00,83,56,f5,34,98,bf,09,b0,1e,8b,02,c4,78,67,8c,1c,af,07,a6,c7,f6,0a,2e,19,14,50,56,c8,66,65,92,b7,f2,82,9c,57,eb,20,7f,3b,51,91,24,29,90,a3,3e,7e,e7,15,15,85,36,7f,4c,7f,aa,05,19,52,f6,20,23,58,b8,72,d4,37,e3,38,51,6d,c5,3e,25,c3,63,b6,13,4f,57,a2,34,cf,96,79,de,26,a6,a9,64,8b,f1,58,ba,70,88,af,83,ab,c9,d3,a2,b9,7e,d9,73,3c,ab,94,9a,43,94,4b,12,25,18,a6,17,57,52,49,e3,65,16,2c,a8,91,37,d8,3d,00,54,28,41,c4,3e,f9,9c,73,aa,93,00,a8,a0,0c,3b,89,6a,d8,73,92,62,b9,89,21,e8,07,22,11,06,84,35,82,9a,58,43,82,c1,ac,f3,fc,0e,48,c0,26,b0,4b,7c,56,38,5b,ac,25,a8,2d,fb,31,fc,05,80,16,27,78,7b,73,5a,98,35,4a,ce,0c,9f,df,86,58,cf,68,c0,1f,fc,1c,7e,c5,80,a6,f0,86,7a,36,a7,21,86,01,2c,73,80,fe,d3,ad,2b,30,65,d5,50,2f,1d,ea,5b,52,d6,8e,38,91,b7,fa,a3,82,6c,25,cd,9f,aa,82,b0,6a,07,59,84,93,11,0b,58,cc,e7,85,46,e5,37,1b,ec,44,0a,25,01,40,96,b7,55,ea,a6,d3,ab,c6,10,e4,72,18,13,71,a7,11,65,24,e6,70,11,1c,6a,2e,43,7d,89,d7,81,47,b1,0d,14,74,08,60,9b,49,0c,33,52,d2,e3,ff,02,8b,37,74,dd,14,52,62,23,d3,11,dc,73,b4,e5,be,ee,c3,ef,05,a8,81,78,fa,cb,27" [0x0202]="02,02,06,20,c8,a5,43,d3,28,cd,08,3c,84,f3,27,82,12,91,23,e9,91,ba,6a,67,5b,c4,f1,bb,21,b2,ba,e8,5b,12,3a,b2,55,1f,33,8f,1f,fb,76,37,b6,49,36,8a,01,ea,5a,ce,5b,98,0d,9a,b6,a1,03,e5,cb,32,43,98,ef,fa,18,2d,c7,5a,17,e2,06,23,0a,5d,c0,71,99,31,74,7d,31,b0,1d,9a,0b,08,a5,83,97,c7,15,82,ee,35,b3,53,d0,b5,58,00,42,0d,e6,0b,b6,18,55,a8,0a,90,3d,e1,31,eb,06,b0,d1,d9,31,23,ac,3c,a4,c1,90,fd,95,a0,15,57,bd,42,96,21,5e,b2,53,d1,bb,43,61,e4,cc,f0,ac,cf,07,6c,58,74,d7,c5,69,51,84,e0,c1,9c,b6,c8,4f,c3,53,13,31,07,15,23,bb,24,e1,40,76,b2,1c,cd,fd,78,b4,ec,8b,5e,74,85,7a,95,16,8d,5f,52,18,4e,2c,01,93,1b,8d,bf,d5,60,11,c6,cf,43,1c,11,96,d3,70,c4,00,61,17,b1,22,28,56,3c,be,76,00,dd,41,ab,30,1a,36,e2,06,79,0b,91,3d,d9,d5,59,3b,b4,4b,cb,e0,38,8b,13,60,f2,93,0c,98,dc,6d,11,e6,40,b0,cb,b0,3c,d8,b2,76,2b,58,4c,ac,07,40,15,a1,7c,5a,8d,3d,fb,a3,c0,7c,5d,96,3b,03,60,4c,3f,bf,02,25,98,20,02,ca,e5,61,e8,71,75,84,c6,79,3c,d0,66,1c,78,58,61,15,ad,76,08,96,c9,c4,c8,e4,64,86,35,e8,a2,f0,21,91,a5,a7,49,7f,c0,9a,53,2c,7c,fe,74,b2,a9,d0,99,7a,c8,36,6a,91,78,30,68,41,3e,a1,aa,27,c7,0d,cc,5a,55,b6,fb,c5,90,29,71,91,e5,59,aa,35,98,b4,eb,86,d6,0b,3b,e7,7a,42,a3,e5,7c,f4,78,b5,66,f3,41,88,ca,38,46,11,cb,7c,d8,39,7f,5c,5a,55,29,34,82,9c,80,95,2b,68,bd,36,17,bc,44,9e,9d,fa,36,a7,40,87,db,85,79,22,41,3c,48,aa,22,d2,f5,c2,6b,c3,14,c3,41,09,3f,f7,9c,2e,5b,b8,4c,20,b6,ca,fa,4d,8b,82,13,87,07,62,a5,32,b9,6d,d7,22,d5,f0,74,91,f3,00,4d,ca,92,ed,5b,6b,93,f4,a9,bf,e3,64,e1,75,32,de,30,3c,9a,d6,47,b0,a0,63,27,b5,c4,a2,65,a8,05,63,cf,d4,33,78,cf,a3,10,41,5a,6d,08,77,63,50,12,6c,b0,a7,a5,b2,d5,78,83,75,75,c7,0c,52,1d,80,6b,21,7a,26,b6,1b,91,5c,1a,05,18,32,58,77,f4,40,39,7b,b2,45,85,71,36,2b,06,55,ca,71,77,9b,8f,95,06,28,03,ca,19,9c,5c,91,f7,34,c3,fe,41,27,9c,db,0b,da,8b,4f,0f,18,54,f5,f8,49,87,8b,77,e8,51,a8,79,b4,b1,78,c6,cb,12,3b,0e,d0,80,1c,ef,8a,32,e0,05,b4,e5,02,cc,d1,27,0d,c9,20,39,9f,e5,00,df,52,55,59,1c,3a,50,8a,53,e9,16,85,62,6b,ca,f2,eb,44,b7,26,90,9b,f6,33,eb,d4,68,e8,90,5e,83,63,0f,7e,4b,2b,6b,aa,54,27,8a,53,d2,13,72,5d,47,a2,3f,d6,b3,17,05,08,1e,e7,44,c7,52,b3,f1,02,66,35,6a,ab,0e,ec,77,91,91,27,31,35,57,a8,c4,3a,08,88,30,8e,64,3d,54,f2,86,c7,39,41,5c,73,bc,e3,03,2e,02,b7,59,0e,dc,3f,25,9c,b3,fc,5a,7a,1b,50,81,96,59,04,52,37,9a,e8,55,06,1f,5a,1a,0f,e3,a7,0d,46,9a,df,84,24,6b,69,c8,17,73,a4,6c,19,1f,ef,dc,76,8b,76,15,0e,43,56,4f,93,9a,02,96,40,cf,43,b7,f9,53,21,a6,58,82,23,6b,60,7a,b1,32,27,97,20,02,c2,4a,07,74,21,e1,0c,3c,70,52,64,40,07,30,8a,b0,7f,1c,04,22,cd,20,14,37,4b,22,23,97,68,1f,42,23,ae,35,61,26,c8,91,97,69,18,31,25,57,df,30,44,6d,9c,67,7f,d2,bd,be,f3,75,86,94,09,1c,42,69,e4,00,96,e1,62,34,24,85,00,8a,e6,c1,3c,61,4c,a2,74,b3,88,e5,23,a8,c5,23,b0,d7,a4,3d,77,0f,0a,f8,00,db,44,52,49,29,80,0e,30,82,9e,93,18,e9,56,81,19,f7,9a,d8,2c,29,dd,41,77,4c,ca,0b,d7,a2,40,0f,76,96,e1,21,8f,fc,a8,2e,a7,54,21,50,78,27,ff,23,6f,67,7a,8f,49,9b,a6,3b,29,8a,81,7b,0e,45,f5,6f,b6,52,4b,fc,69,bc,24,c4,70,20,75,b2,a0,4b,51,3a,d1,51,19,4b,35,f7,31,59,c3,56,4d,a6,44,66,fe,79,1c,8c,bc,0a,73,cb,9a,00,b1,00,94,7b,5f,99,80,19,74,c2,3a,34,5b,a0,6d,0a,65,99,ea,2f,e3,88,2d,11,48,c5,cb,b6,af,e2,57,42,c3,fc,c8,ad,c6,a6,fe,b0,28,43,a7,93,c1,23,a8,2c,a2,70,25,cc,70,21,fc,08,bf,cb,24,8a,cb,61,e4,b1,b3,7c,38,1b,72,0b,37,12,f9,5a,58,b5,39,d6,c8,82,8a,19,71,54,5b,76,e8,b2,af,6e,a1,8e,5b,72,87,f3,1a,a1,9f,e0,9a,62,ab,61,47,21,0e,18,18,1f,f8,cb,2b,38,88,a1,16,8c,42,39,96,2b,59,da,44,e2,21,8f,0e,b3,4b,ae,70,87,22,a3,cd,d4,f8,36,fb,d1,8a,4c,38,7b,d7,b6,72,a1,0a,7f,24,22,31,c5,95,48,c6,63,9a,5a,79,2c,0a,f0,15,84,99,94,72,e2,19,79,47,3a,d8,49,40,f8,34,9d,a6,7c,3e,7a,6a,7e,e5,00,7b,98,41,17,20,58,7a,87,28,7d,b9,56,aa,40,21,4f,29,05,71,69,b4,0e,a6,84,26,de,bb,19,8d,93,c3,a3,f2,0e,9d,1a,a6,4c,68,1d,57,69,c5,a8,87,2d,06,36,8e,8e,53,87,f6,b4,00,b2,62,75,8f,fa,47,43,e2,98,a3,c8,2b,c0,5a,97,8e,9a,b0,3d,83,8f,0d,f2,29,0c,66,a0,b1,85,ac,d3,01,7b,58,42,86,97,42,b9,c0,c3,0e,74,91,1f,54,76,59,c5,62,57,e5,c2,18,0d,a0,5d,36,fa,90,99,2c,98,3d,80,b8,86,f5,5e,8d,d2,38,c2,9a,6e,05,36,05,54,36,40,0f,c3,17,1d,20,7f,d4,99,72,c4,b1,50,b9,15,be,61,86,b6,ca,d0,10,dc,70,59,bb,57,99,18,09,6a,5e,c3,9f,de,51,4b,62,26,84,cb,90,c6,96,59,c0,ca,52,bd,da,84,86,d4,f4,0c,06,11,33,e3,69,af,8e,da,85,e2,85,c1,e1,4c,9f,f0,f2,2e,6e,76,09,e2,03,bb,62,f2,75,e1,c5,0f,bc,99,6c,6c,83,95,d7,39,0f,52,15,90,17,27,22,54,96,96,10,1b,03,0b,1a,bf,df,a7,34,a4,31,a9,fa,d1,2a,8c,f7,6b,72,38,b8,89,b8,43,39,7b,c4,e5,61,69,b8,d8,a8,78,5b,a3,0b,c4,1d,64,ec,8d,d3,f0,0c,58,40,c4,a9,26,18,5d,63,96,80,21,22,e2,33,43,cf,b3,09,89,83,2c,ba,40,99,43,1a,1a,e2,92,a0,6a,f8,33,dd,11,34,67,57,5b,95,f3,ba,83,93,51,fe,1a,b1,27,83,86,1a,68,82,cf,22,a1,c1,54,86,2c,00,b9,26,eb,9b,75,7b,2e,d0,b6,6c,ba,d6,b6,db,2e,ed,2a,7a,6b,27,03,f5,a3,1a,6e,bf,69,e4,56,c1,70,17,a2,07,cc,97,cd,c3,e5" +[0x11e9]="11,e9,03,61,04,63,fb,ec,96,c1,ba,4f,49,dd,1e,8a,cb,65,27,d0,9f,8c,0b,f8,19,80,20,45,32,8a,85,db,69,02,a5,d6,55,05,a7,99,0e,63,ad,8a,a9,1f,79,0c,9d,0a,cb,09,ea,aa,bc,0e,54,ba,57,7a,6b,73,b4,31,8b,64,eb,d7,83,6d,27,90,ab,31,45,a1,13,1a,fb,ac,66,ec,65,21,27,c0,bb,7c,fb,3d,4f,46,6a,42,bb,a6,df,94,81,c2,f3,4f,46,59,48,2b,a4,64,1b,bb,4a,7d,55,04,28,d9,41,56,21,44,d4,e5,6e,89,e5,25,73,41,54,2c,d5,6d,fd,62,39,3b,87,2a,4f,2c,75,3e,2c,93,ba,82,6d,36,b1,a9,55,ab,90,eb,bb,35,4e,b3,46,8e,a7,4c,cf,c1,0f,80,c0,2f,19,90,2e,bd,ab,95,7b,b6,08,d3,e4,68,3b,f4,ab,77,22,46,f3,a5,1b,a6,73,8e,7e,08,4a,09,7a,bf,90,9c,82,8d,d4,9e,fe,da,8f,c7,ab,47,d5,94,86,50,50,97,db,39,ce,b0,64,23,1b,77,22,97,12,23,06,86,ae,b7,16,94,c8,e0,96,bf,78,8e,a4,9a,09,3c,40,13,43,a4,5c,1f,37,14,50,d1,48,ba,a6,2a,e8,55,9d,1f,d9,86,d1,82,78,3c,12,4a,07,b2,8f,31,bc,1e,62,96,89,a4,66,84,0e,91,99,24,ba,2c,34,c7,81,f3,87,b3,dc,82,78,11,58,3e,d4,25,69,85,d4,b2,58,7b,08,ff,4c,7e,c5,c3,af,11,00,bb,0e,cc,1b,7f,78,bd,2d,7c,5e,2a,11,20,3c,41,4d,4c,d3,34,3c,39,b1,38,55,9f,08,bb,59,95,88,c8,80,06,a4,8a,87,6e,dc,72,63,1c,39,a7,02,c7,60,fb,47,4e,40,90,27,f0,50,ab,80,64,7a,76,3b,00,b2,b8,34,c3,57,0d,4d,a3,8f,b2,73,30,53,93,63,a9,22,b4,7c,d9,95,13,27,8d,fd,51,3f,0b,33,1c,2c,f7,96,80,21,c9,06,b2,2b,ba,a3,b4,20,aa,3d,b0,33,b4,47,e2,13,87,26,05,64,91,29,1e,e9,1c,e6,29,0b,b9,3c,9c,a5,23,2f,2e,29,14,06,dc,40,39,01,56,3b,85,68,ac,c0,51,0b,18,3e,64,71,49,4c,33,46,0b,99,47,d0,50,9c,e5,39,a5,5d,28,b8,fa,38,7b,e2,41,c1,9c,98,ce,89,75,1e,8a,23,b1,76,03,b0,7d,77,33,74,31,8c,fc,4c,9a,f5,4a,20,76,70,c5,22,e8,b9,8c,3a,cd,96,14,06,55,c0,26,31,c5,53,86,4c,ae,1c,f4,41,0f,a6,9a,51,54,a4,99,64,51,f6,26,42,b0,02,96,fd,72,3b,fa,33,28,ba,92,19,e8,88,a4,f2,33,84,3a,bc,04,0d,dc,ad,ab,ba,40,dc,8c,9d,57,f3,a8,b2,4a,95,31,d8,85,d0,b5,88,18,b9,3a,09,84,a0,37,a4,47,f9,c8,1a,c0,20,76,26,98,b4,23,28,34,fa,b3,c0,72,d8,6b,96,e0,ae,d1,33,ca,09,79,af,05,41,8a,fb,39,23,76,04,75,84,fa,65,6c,41,38,d2,b7,6d,37,41,77,2d,b0,a7,6a,8c,a8,63,e5,a6,ef,82,ad,5a,db,9a,33,81,8d,d8,91,66,72,99,25,69,55,c5,8b,33,6e,d2,61,4d,73,14,ba,60,bc,18,32,db,5c,4b,16,45,73,6c,ab,29,86,3c,7c,f9,43,39,0a,19,e1,71,15,72,4c,8a,d3,89,aa,03,f0,7b,93,55,ca,39,65,87,3e,d8,99,d7,78,a3,2a,d3,7a,e9,6a,ca,00,2b,81,27,d3,50,cc,47,87,b5,03,90,bd,b0,6f,f3,29,83,e9,55,72,24,fb,7a,26,22,7e,f7,68,a2,37,97,5e,93,52,2f,c6,3b,0c,e6,85,9d,f5,cb,b9,90,57,4d,62,cc,a4,5e,42,ac,3a,dc,c1,34,f0,22,fc,9b,57,3d,8b,1f,59,52,41,0a,75,31,38,62,a1,c3,da,ba,74,c2,75,93,39,b1,0c,43,a2,ea,83,16,c7,32,93,24,72,a4,67,67,45,ab,49,93,96,95,84,d9,f0,c2,ef,2b,23,d1,ca,87,6c,d1,78,08,a4,af,28,36,f7,9a,92,10,03,89,8a,38,e7,f8,02,1a" +[0x11ea]="11,ea,03,40,3c,c7,06,2a,82,68,b0,e4,47,07,e8,c3,56,f5,1a,6f,a7,60,e6,65,51,78,32,3d,2d,4c,c5,4d,07,8b,e8,29,a0,88,07,1b,00,16,c8,97,7a,17,55,85,62,46,55,75,9b,d3,36,1b,07,11,6c,11,c7,0d,92,14,ba,52,10,a9,7c,4a,76,da,3a,ed,34,3f,cb,50,96,9a,24,14,c8,a2,56,ae,88,2a,1a,73,85,1c,a3,84,05,44,ab,eb,45,7d,4d,19,33,84,b6,c9,25,14,65,d2,04,c6,f8,68,13,2f,f4,30,c9,90,11,d0,bb,63,1a,7a,7d,ad,bc,39,b1,13,c2,24,13,9e,e5,90,15,61,d6,c7,36,2a,ab,64,c1,16,33,11,98,a3,61,61,ff,f7,43,ad,94,8d,25,15,9f,11,75,7a,ff,55,26,c3,eb,c4,e5,29,cb,d6,f5,62,04,54,35,92,5c,c8,dd,e0,a8,ec,28,03,0e,98,cf,5a,a0,1a,e2,9a,42,fb,a1,53,29,89,11,23,31,6f,ce,e7,0d,47,40,ae,75,16,21,8a,51,aa,09,c1,9e,6c,92,11,e2,f0,37,23,18,16,59,5a,78,75,2b,9b,f5,a2,72,6c,e0,61,f2,bc,9a,db,b7,4b,b9,a3,b2,db,19,af,b3,03,0c,f4,e6,cf,c8,c4,69,81,c1,3a,fb,11,60,31,2a,ae,b4,46,7c,f4,a6,2e,a3,39,97,a6,62,23,07,3c,62,30,36,15,fe,16,8d,94,2c,1c,55,04,83,dd,45,09,d6,f3,ab,2c,fb,05,98,c7,75,23,c0,c8,e2,53,79,2a,1c,8e,a8,fa,c8,c5,b9,21,36,92,5d,5c,08,c3,2c,ea,69,a1,41,7e,b2,22,55,af,41,23,56,2b,bf,0c,1c,86,e2,74,88,f1,0b,3b,35,1b,bc,a4,f2,25,a7,84,3e,98,72,8d,b1,a4,6f,dd,2a,5b,1b,4c,ce,30,c1,ae,3e,27,32,68,2b,6b,51,bc,57,32,43,4d,e6,43,af,e0,ec,33,0c,82,35,69,a5,33,db,48,04,81,d7,6b,b7,cb,6e,a0,3a,09,e4,18,8e,a9,7c,4b,d3,c4,b6,3e,40,4f,b7,76,88,35,79,7b,99,53,71,f4,e6,46,f3,2a,ae,a4,ab,0f,b1,d1,8a,4d,42,93,3d,6c,9b,13,90,93,65,f7,08,00,84,03,f2,d1,b2,88,69,73,73,e7,63,b3,38,aa,e3,64,29,d7,bc,3f,39,6b,00,a8,b5,ae,ad,22,8b,8c,05,91,82,58,6e,76,b7,25,d3,64,0c,96,e2,ce,ab,3b,0b,13,1c,84,52,e7,16,fc,f6,6c,d2,b5,a9,b3,a8,93,b8,63,8f,e8,7c,4d,64,7b,9a,dd,06,07,4c,00,37,aa,01,2e,02,b7,90,7d,24,15,17,98,60,3c,51,a4,73,21,5f,9c,36,37,79,48,bc,1e,cb,82,99,41,b1,1a,e9,30,49,a4,a9,94,22,38,14,d2,2d,25,00,c7,08,51,21,3d,80,37,c1,c8,52,3c,3a,57,f9,45,2f,2b,9c,71,7d,44,9b,cc,44,a2,06,6c,aa,96,79,11,ec,39,6b,90,c1,66,ae,85,03,75,30,b2,df,63,80,f5,d7,26,d8,c5,42,f1,d6,6f,d8,28,24,3e,08,a9,d5,f8,08,b5,dc,22,57,8a,bd,28,01,55,24,d5,76,c3,0b,4f,9d,e6,ab,9c,2a,0c,59,f8,76,59,07,07,46,67,51,28,06,42,5c,b0,98,b1,20,44,3a,3c,a3,c4,16,43,b5,35,bb,ff,68,3e,82,c7,93,7e,c8,a1,15,42,53,25,78,cc,65,ec,9e,bb,17,3f,26,a4,2b,7c,99,cb,59,98,4d,3a,d4,3a,e4,b8,cb,77,e7,88,fe,d2,6b,e2,35,07,5b,d8,46,58,a8,8d,4f,14,18,6a,51,17,04,ac,2c,fb,18,1e,d7,24,44,c6,8b,58,36,24,14,03,6c,78,a2,48,95,70,7a,74,94,f7,83,4a,5d,ba,84,ee,08,d1,b8,81,27,52,c7,eb,c4,83,56,41,de,dd,cc,bb,6c,ac,43,42,fb,1b,46,19,cf,83,85,2f,2e,c1,9e,2e,2f,b8,ef,7e,63,b0,88,00,eb,1b,93,2f,a7,7e,e3,34,dc,74" [0x11eb]="11,eb,04,e1,04,8f,b0,68,58,17,4b,90,09,0b,6f,6e,98,fc,80,b4,10,cf,ce,78,1f,89,62,7e,fe,a8,8e,bb,35,a8,0f,31,0d,35,ef,25,64,0c,b0,88,b5,49,64,95,15,1c,62,78,ff,7d,1d,b1,7e,26,6c,39,5b,dc,ca,31,04,fe,80,f5,f9,03,82,02,1c,17,80,4f,6b,74,98,09,03,48,b6,8e,b0,34,99,8e,96,1c,09,d6,1c,02,9c,68,27,c3,4b,10,25,82,67,47,88,92,e5,c8,df,b7,15,b5,17,b7,84,a6,50,f2,98,35,fc,23,25,03,95,0b,fe,11,5d,0f,52,0f,2d,47,91,d3,57,c1,02,9a,87,f5,19,37,b2,52,a9,2f,a6,56,58,0c,c9,51,7c,5e,49,19,4a,33,f0,aa,79,83,1c,1a,9c,34,bc,a8,79,61,fb,43,a3,78,2d,6a,03,81,92,c8,0f,f0,9a,2d,b8,e6,a5,89,14,49,3d,50,94,b6,41,ac,8e,e7,95,0a,12,83,02,a9,7e,c1,5a,63,71,71,45,5d,b4,9c,3e,80,7d,17,f2,a0,68,f0,12,6f,aa,39,d7,26,30,66,4b,9b,31,6a,c5,35,25,83,c2,04,94,f8,c2,70,60,21,4d,13,32,57,24,c4,a8,92,a5,18,d2,7c,ae,f4,91,79,3b,46,92,d0,62,af,e0,37,07,a3,99,71,0f,e4,c8,61,60,15,e3,3b,89,29,a2,34,89,c3,7a,a5,14,05,6e,6c,5b,9a,10,39,de,e8,a5,90,6b,aa,9a,bc,03,e1,91,71,f7,84,38,ad,d9,42,ef,99,4e,fa,79,41,6c,48,b1,3f,ec,2f,5a,3c,b7,96,1b,7e,4c,06,19,9d,67,6d,1d,bc,48,a3,98,9d,30,4a,38,29,44,bb,3b,8b,2b,24,20,8a,de,66,5c,a7,83,35,46,81,91,69,56,92,23,12,16,b0,e4,89,dc,aa,44,69,c7,76,a7,3c,8f,65,17,11,75,46,8c,44,b5,ae,40,b3,43,4a,a2,17,d5,d0,af,70,43,6d,d3,58,27,ee,48,6e,19,27,8a,fb,65,95,c9,0a,56,0f,9c,59,bd,03,65,10,7c,82,00,1b,48,58,47,7b,15,e7,16,6b,eb,91,99,93,7b,e8,f9,1e,77,66,c8,3b,f5,2a,d3,a0,71,73,d5,87,85,2b,0a,b9,22,87,5b,46,a4,94,58,6c,e0,50,bf,93,13,68,dc,f1,71,38,11,34,52,76,6e,2e,b3,51,95,c8,20,55,18,a8,0e,e8,a5,38,48,77,f4,7a,63,d5,f0,0e,fe,c6,63,0b,93,9c,f3,c2,a7,49,38,2d,14,2c,7c,19,5b,04,4a,da,60,89,dc,88,10,38,3c,47,09,a2,0c,b5,ba,3b,0a,ba,dd,c7,c7,fa,71,57,d5,75,b2,bf,5b,67,67,98,68,7c,00,bb,1b,fb,c8,95,b8,96,cc,3a,cf,95,d5,ca,07,02,79,02,ea,8f,a5,63,6c,b4,90,1b,e1,f3,64,7d,08,63,e8,06,78,d8,64,04,f9,ea,3c,e3,e5,55,9c,ea,3b,07,8a,60,49,e7,92,4b,82,6d,e0,36,50,71,f1,a6,97,62,cd,36,85,7c,b0,32,ce,34,7b,6a,0f,b9,8a,42,a3,14,2e,c0,1c,03,45,58,76,f5,6e,03,16,36,56,5c,b7,a0,64,c8,bd,4a,c2,33,75,7c,0d,b9,7e,61,06,7e,41,12,22,24,4b,26,80,fc,64,18,13,41,32,d5,64,dc,2c,60,08,3a,90,53,e2,c5,51,db,73,74,6a,05,56,66,48,cc,01,57,d1,c4,24,54,cc,6c,6b,09,9d,68,2c,a4,2f,87,30,8b,d5,bd,10,d8,55,45,55,79,82,f7,9f,f2,95,6c,69,f2,7c,c4,20,04,46,a0,b5,7e,65,1d,6e,b6,7c,17,62,aa,7b,44,94,05,70,12,16,e4,52,7d,23,94,6a,e5,ce,ad,29,92,a5,e5,1c,92,61,a5,aa,db,78,8e,92,93,f5,15,cc,b4,62,c8,13,d5,67,86,12,7d,15,cb,ba,21,23,36,81,ec,8d,9e,a1,0c,5e,c1,bc,15,42,23,c5,38,63,5e,a5,37,ed,b9,45,38,20,16,98,b1,52,d1,09,70,c8,95,48,75,f8,c6,b2,a1,1b,bc,77,58,c0,aa,b2,1a,fa,85,19,06,97,38,26,10,74,46,c7,42,bb,5b,72,10,4b,9c,69,87,f4,46,00,15,39,94,88,d3,72,06,96,b4,6d,c7,a1,a7,e1,ce,93,9b,a2,35,d3,82,65,d0,b1,11,9b,2e,e8,61,19,53,00,6d,d3,02,bc,1f,7c,48,f2,f8,99,df,68,bd,b7,a3,b6,92,99,cd,aa,51,3f,36,19,88,45,96,a8,a4,27,60,03,b4,c9,cc,59,18,35,24,73,24,5a,01,61,e3,11,34,b7,a1,db,ab,b7,cc,79,8d,cd,d3,2c,af,05,c5,59,d7,07,b4,cc,05,e1,a8,0a,d5,d3,31,fd,46,5f,e7,02,ae,c5,0a,1a,b4,a7,7c,df,22,a2,68,cb,5d,9c,f2,97,12,cb,57,d0,c2,5d,4c,08,0f,eb,a4,89,0c,f5,49,f4,68,69,fe,eb,99,59,a8,41,49,ca,c6,2b,05,56,aa,db,56,32,02,98,0f,a5,25,6b,68,4f,9e,91,64,2f,04,26,35,2c,49,bc,0b,01,9b,33,be,de,52,53,06,d5,07,4a,88,60,90,a2,c6,1e,8a,98,de,91,93,eb,97,15,41,0c,51,13,3c,8b,02,c1,94,04,f3,93,19,25,3f,c1,f6,bb,74,91,3e,7f,1c,75,3f,ea,83,b5,c9,a1,52,b3,28,61,eb,76,4b,49,b2,b9,a8,66,72,77,6f,b7,45,6f,58,38,13,3a,79,06,78,6c,ae,9f,ac,1d,be,33,01,a8,39,6d,0c,b6,4e,a1,cc,2b,77,d2,41,b7,51,97,36,04,17,d5,84,2d,1f,56,ad,7a,38,46,54,91,2a,62,93,95,d3,66,a3,e8,aa,8d,47,ba,ac,18,9b,5a,53,1b,5c,93,c8,83,01,93,cb,4d,e8,11,65,89,4e,99,42,cc,42,57,8d,72,2a,1d,ab,25,bd,8e,00,d0,dc,c5,0f,b0,cb,4c,f8,33,70,09,f1,f5,c6,3d,59,0f,32,bb,e5,87,87,20,cb,25,4c,ce,41,d8,b5,94,33,fc,e6,92,53,5f,6a,f0" [0x11ec]="11,ec,04,c0,65,55,33,83,63,2a,4d,62,11,db,f0,05,14,00,cb,34,78,35,00,63,9f,7a,ac,41,bb,60,7b,05,9c,35,5c,6b,53,73,58,6c,9e,d8,10,a4,40,8b,48,97,65,b6,23,2c,ec,88,bd,94,49,0a,e9,a8,54,46,55,3f,af,e5,61,a7,67,33,2e,65,23,25,2a,7c,7d,c1,0c,9a,9b,42,ea,da,4e,a7,ab,73,b0,b5,92,21,a0,79,f9,96,b3,8c,ab,17,fa,30,2d,37,47,7e,53,c9,07,7b,a2,6d,37,25,b9,1b,5c,2f,64,b9,a3,a0,ec,40,29,95,c4,e9,c1,69,0d,04,8f,af,32,52,4b,c9,91,a2,8a,01,a5,a9,24,ee,4a,a4,d6,e7,87,d3,c7,1b,4b,a9,3f,12,15,73,ed,06,8a,95,a3,c6,ef,5c,bb,7f,82,9c,1c,54,4c,2c,e2,73,51,15,74,d7,87,9f,de,46,1c,78,26,70,69,37,7a,19,47,14,dc,e3,34,7e,b6,7b,bb,98,36,12,d2,34,91,d8,09,29,86,bc,ea,4b,5d,a9,13,29,fd,c5,22,b8,75,6f,83,77,bb,81,73,04,70,42,45,dd,09,10,68,8b,60,fe,26,2f,0e,56,be,43,f4,a4,ea,f6,06,30,59,24,c2,65,b7,1b,f4,55,e2,48,61,e3,f4,00,46,16,21,3b,68,ae,ee,68,74,4a,a7,0d,88,a2,83,ec,d4,b0,20,98,90,5e,7c,1e,c8,e9,9d,8b,e3,26,79,90,c3,2e,30,04,60,75,8b,ee,b3,b3,30,b0,ba,12,8b,b3,e5,c7,54,e4,ab,31,5a,55,bb,25,27,47,06,4a,4f,bf,8b,b3,e3,81,5f,74,c9,44,df,6c,49,7f,c2,65,cf,a0,a7,69,d6,7f,3f,92,41,2e,97,4c,ac,01,8a,a6,9b,bc,50,58,52,c5,ec,58,da,75,11,dc,90,20,41,79,1e,e9,39,5c,06,99,7f,93,11,a7,d5,44,85,fe,2c,bd,d5,61,4c,ac,bb,36,a1,5c,43,fc,b8,6c,34,a6,01,92,77,5a,0c,f9,10,1d,e4,46,43,b0,8b,bd,68,29,5f,9a,29,d5,26,88,9b,12,9a,0c,03,29,2c,c2,0e,b6,61,54,12,29,a5,c9,e2,03,0c,d3,6c,15,24,7e,90,1c,2c,6c,37,b2,0d,72,b6,d6,9a,89,33,68,68,be,75,0f,1a,24,3e,9c,f4,75,b2,31,52,09,ab,c9,8a,bc,3c,eb,64,6e,84,13,9b,80,6b,b4,4c,79,b4,6a,4c,1e,39,11,69,33,a4,6c,0d,e6,06,cd,11,bb,59,37,be,88,43,84,9f,2a,45,05,94,38,17,f8,7b,8f,82,49,e1,e7,c0,28,34,6a,0a,5c,b0,c2,2c,c2,4b,64,52,32,e3,87,e2,c4,6f,52,80,4e,01,c1,80,19,b3,84,8c,a1,6f,95,c7,7a,fd,d4,5f,de,ba,c4,a3,f0,30,72,ac,7f,9a,a0,85,14,18,62,0e,a3,68,a2,03,48,bc,4a,50,dc,c5,64,08,f2,1b,76,eb,5b,f5,56,a5,e7,b0,07,b6,56,3c,d4,13,95,1c,82,71,9a,c8,38,4b,fa,25,c4,36,8d,41,24,64,02,59,cf,69,91,21,de,0a,80,7e,ea,8d,c2,7b,48,24,1a,6a,fa,a6,1a,25,48,9b,3b,c1,49,8a,47,10,5e,a1,b5,6e,24,42,fc,fc,44,a8,99,b3,60,24,23,c4,3b,71,5e,89,5a,52,01,c5,0c,84,42,85,1a,9c,3d,65,a1,27,72,43,98,32,40,05,90,71,d7,d4,98,41,13,c7,2c,d0,8b,a8,5b,24,29,54,1b,fb,83,a4,a4,44,97,df,b8,7d,a6,97,ca,32,93,57,8b,d8,5e,08,65,42,81,e3,6a,5c,e0,1a,ef,d0,1d,93,98,c5,4d,f5,a0,3a,37,ae,c2,f5,5d,98,6c,95,1a,c7,58,d4,a9,32,f6,ea,8f,af,79,48,66,94,ab,47,e4,89,f6,09,63,56,48,6b,27,63,98,43,f9,1a,04,ea,62,4c,02,1f,94,a5,4a,4f,77,37,06,03,b5,e2,ba,aa,a9,16,43,8d,91,a2,81,f0,1c,09,e6,81,ff,f0,95,42,68,32,d2,a8,bc,7f,18,bf,d5,f1,14,3f,28,14,a2,3a,86,2f,94,ad,18,46,8d,7e,3b,1d,13,e1,19,d0,98,49,d4,bb,03,90,12,8c,f5,17,22,57,ca,0b,93,cc,1e,3e,b0,a7,4e,c9,8b,b5,da,6e,9e,76,c9,1e,d7,98,05,a8,c2,0e,05,bd,b4,30,bf,1d,e6,10,e7,74,73,00,00,9b,f2,27,1b,5d,b5,b6,c3,28,b3,01,3b,a0,0a,32,52,21,b8,ae,10,bc,5d,d2,70,47,6d,02,ca,95,aa,80,de,6b,5f,c7,04,af,f6,16,1c,a7,fb,54,e7,79,71,c8,22,4d,ae,81,55,0b,81,b2,c1,c4,b8,24,48,4d,46,50,ac,02,19,01,f8,01,65,0b,73,61,87,19,42,cc,29,25,52,b1,18,5f,69,63,65,b3,3d,cb,91,b6,31,3c,40,b4,8a,6f,08,ca,90,ab,a0,4a,b7,e2,b3,b0,f5,89,93,89,78,c3,93,3b,97,fa,92,b0,8b,c0,6a,29,0b,b3,b9,a6,2f,16,1f,34,67,4b,a2,47,38,ad,01,bf,bb,26,46,3e,17,78,22,68,0d,2a,54,1c,d6,09,15,4a,c5,9f,f4,80,7d,24,e1,30,68,4c,01,b9,b2,a2,11,eb,0e,ba,f6,49,c7,32,b1,ef,5a,ae,37,06,81,08,5c,8a,4f,05,38,c6,b8,7e,5b,77,b2,61,65,a6,22,37,29,11,dc,26,4c,50,44,c2,78,95,4d,83,9c,07,6c,c2,8e,00,08,bf,e5,ce,4b,ba,58,2f,54,83,bb,55,9f,75,7c,c2,fe,63,7c,8a,54,c5,95,c4,c8,b7,c4,cb,62,3b,7f,55,5a,3f,73,a6,b9,2e,dc,54,bd,e1,bf,5c,b9,e2,85,0c,a5,19,ff,ae,0a,7b,2c,14,b4,da,9a,ad,c3,2e,e1,fb,6f,d1,de,9e,c5,dd,6c,0e,5d,63,d0,b0,9a,3c,8d,b4,23,07,c3,74,5b,7d,c1,a3,5f,41,e5,9f,96,73,5f" [0x11ed]="11,ed,06,81,04,11,4f,18,47,b8,9f,e6,f1,83,9a,a1,f6,ca,e2,d0,d0,89,f5,fc,71,77,6a,05,98,d2,32,10,bb,81,a4,b9,62,43,3d,f2,9b,8b,1f,62,f3,6a,f9,bc,fb,af,43,bc,e5,d6,22,67,cb,7e,2b,b6,84,d2,9e,f8,c0,e5,84,49,fb,84,d7,03,8f,5c,3f,77,e6,2a,83,d9,ca,9d,30,5e,21,6e,a1,60,97,68,d9,af,92,a0,6d,d1,71,6d,4f,17,8e,a5,64,6c,f9,e4,57,ce,ac,3c,43,85,1a,f1,da,1c,1d,51,0f,8f,f4,cc,f6,5a,ce,c5,79,14,c8,f8,09,71,02,b5,12,95,b1,75,1a,0f,d5,53,21,a0,91,0b,0a,11,28,9c,b8,2c,a6,13,94,2a,b0,4a,de,8b,30,b4,77,5e,f9,c4,bd,0f,95,39,50,9c,2b,c5,d4,22,f3,90,7d,48,fc,33,55,00,c6,10,c1,a9,be,2b,69,17,b8,4d,e9,dc,34,ed,51,2f,5e,46,8b,66,c3,39,d5,d1,9e,7a,eb,14,17,a6,51,21,e1,64,d7,97,91,f0,ac,64,d6,6b,30,c0,21,80,d6,e4,17,c1,02,8d,8b,d9,19,87,ab,7d,22,98,2e,8b,c8,56,3e,5c,0e,50,a1,4f,88,a3,53,f9,cb,30,0f,6b,48,60,75,b8,7d,c1,9a,14,f0,25,3a,3c,73,0d,45,97,00,98,92,bf,27,53,12,c8,24,98,33,3b,3a,e9,a5,9e,03,62,08,46,36,62,0b,45,9e,a7,7c,80,46,07,88,3c,22,6c,01,01,5c,19,60,03,d1,1d,d3,84,71,b6,60,2d,84,a5,b8,1a,56,35,ff,29,4b,49,45,9e,51,67,86,96,00,ab,8c,ca,bd,3d,e3,85,7c,22,8b,eb,46,0a,b2,a6,6b,1d,d1,75,6e,78,20,05,d9,30,d1,e2,04,38,15,ce,8a,13,5d,3d,b4,3f,2f,f3,96,40,27,9e,3e,3a,68,d2,ec,0c,a0,38,0d,bb,6c,31,45,48,a0,8b,11,61,6d,5b,3f,ab,21,14,01,44,37,90,2b,a2,00,42,a4,7a,62,24,1d,79,b4,d8,da,84,5c,d1,55,dd,9a,8d,fd,60,ab,bb,c3,9e,be,86,25,ba,44,18,a5,cb,80,b4,c7,cc,15,a9,4f,2b,e8,28,f5,99,13,61,6a,2b,c7,15,ac,b4,b8,cc,08,b4,4b,3f,20,26,79,35,61,a9,e0,b7,c9,a7,80,99,38,8f,9a,27,66,ef,57,90,a9,32,ca,4b,7c,aa,69,30,b8,cd,4c,27,5d,f2,b8,10,0a,cd,ee,75,64,58,77,9c,f5,b9,34,26,61,8c,f5,26,8e,68,70,b1,39,74,72,19,41,5a,2f,54,a8,f3,a7,7c,f1,3b,6f,8d,37,42,bd,4a,98,7e,29,44,1e,d7,c7,1d,c8,4d,bf,41,0d,7e,82,76,00,8b,ab,a0,01,cd,b9,30,16,32,4c,b4,ac,a1,10,55,e6,88,37,ec,4a,a9,45,44,d6,25,ba,ce,13,42,f4,52,36,1b,72,c2,4a,c7,a4,88,82,27,99,3c,16,d0,25,cf,47,d0,72,5b,c8,7e,42,89,31,81,f3,c5,69,b4,2b,aa,a8,9e,5d,13,5d,69,b5,0a,52,ec,18,68,ea,69,1e,1c,c7,0c,62,30,47,b3,37,a5,93,4c,a5,98,cc,a3,e9,75,54,35,79,b6,01,46,59,c7,77,72,66,b8,73,fb,31,88,1a,40,84,ac,93,00,2c,5a,04,84,68,3b,0c,87,2d,b1,ab,20,9a,6e,e4,f4,5d,ee,43,c7,a3,e4,a7,e9,27,6f,6a,25,18,57,91,60,69,82,c1,b2,e5,0f,a3,d3,23,c7,37,7c,57,57,b3,aa,54,49,35,49,7e,e4,e8,9c,01,f3,24,7f,18,8d,9a,89,63,30,3a,a3,83,a1,6c,c7,bb,3f,d8,56,38,56,d2,44,42,17,97,86,d9,3c,6d,90,c5,67,c5,17,ce,4b,6e,b4,33,30,54,83,95,ad,e6,15,d7,64,87,d7,42,18,09,b8,10,8b,39,70,95,b0,2e,50,e1,c5,44,28,44,0b,8a,53,27,66,25,86,06,b4,09,eb,0a,75,b8,b3,c2,63,c5,9f,c1,b2,28,38,cf,f3,f1,86,f6,10,61,b7,c7,4c,fe,55,40,16,93,b0,2e,d0,9f,9c,85,c9,f1,81,3c,18,99,3d,6a,e3,ab,fa,67,27,c4,6b,81,8f,71,26,1c,ca,73,8c,0c,72,bb,47,46,dd,20,cf,ad,62,65,f3,00,0f,8e,42,15,bb,34,09,32,87,cd,a2,35,cf,dd,50,5a,77,92,9a,c6,03,24,3e,36,b8,a1,da,26,3c,22,71,08,a5,b4,ca,68,83,53,66,a9,ad,67,43,e8,70,1d,e1,f6,67,4d,44,55,34,46,71,c1,08,1c,4b,e9,41,f6,5b,0d,46,08,ab,6e,78,c2,5b,76,24,ab,75,42,05,4a,2d,dc,b2,a2,89,20,9f,f5,ea,12,e2,14,83,57,b2,36,2e,45,52,30,34,95,3b,b1,41,af,9b,a4,07,87,02,be,1a,5f,f2,a5,8e,fb,10,18,5c,d7,a7,ca,9b,5b,aa,68,8b,e2,33,be,52,18,4b,83,78,28,2a,43,3a,4c,3c,af,ba,07,72,4f,40,4d,d0,72,07,bc,77,50,73,b9,5f,e8,70,2e,e4,94,4c,62,3a,79,37,4b,1c,8c,e5,1d,ba,94,0c,f9,32,33,60,fa,bd,d9,55,aa,30,14,6f,3e,a6,7a,22,8b,84,5e,95,cf,8f,54,11,b7,28,1b,5a,69,5f,c1,b7,4b,23,65,70,30,c5,6f,94,0c,37,2d,ac,4d,b7,d1,c8,6b,45,2e,d0,f6,64,a5,d6,5b,d7,43,79,e6,52,3d,e9,27,7e,99,a0,3b,80,4c,aa,d8,24,a5,a7,1b,be,97,85,7c,8b,f2,95,5c,32,6e,80,a9,45,5a,c2,5f,88,58,59,9d,52,5f,f4,67,c3,d9,a3,31,89,b8,0f,1f,c7,9f,04,fb,44,1e,0a,85,b4,c7,9d,be,ea,bc,31,fb,91,1e,05,ae,5d,bb,af,e2,a9,2d,1b,57,1b,ec,01,7a,19,25,74,7c,39,43,21,d8,66,84,f7,15,fc,f9,be,6d,55,56,3a,76,a8,79,3b,c2,8e,da,cb,b1,5c,5b,5b,36,aa,4a,c5,98,94,37,08,ca,24,63,a7,2b,84,a5,79,8d,cc,e3,08,83,c5,0a,f0,3b,58,c1,e8,a9,db,b0,73,47,0c,7f,fd,bc,2f,ab,93,47,33,77,76,71,e5,08,08,f9,6f,57,21,39,0e,d0,27,3f,11,7c,62,84,84,d1,63,09,18,84,29,37,92,ca,c6,20,9a,a4,2b,55,4a,da,37,f5,8c,af,50,ba,bb,cc,2a,88,b7,bb,4d,f5,6a,cc,c6,3b,c4,7e,76,24,ba,27,c8,f3,71,24,0c,19,50,24,47,77,a7,c7,43,99,88,10,33,87,c9,a4,8c,51,23,e1,96,68,86,cc,74,b2,2d,2c,66,4f,a0,1b,83,2e,50,8c,03,42,2e,cc,75,06,25,6c,7c,f6,04,8a,5e,d5,7b,7a,d7,b5,b6,82,c7,d7,5b,2c,82,61,ae,6e,e4,3a,af,2c,08,b3,7b,72,71,52,39,3f,c7,ac,60,50,48,e9,b8,36,79,81,87,62,ea,70,0b,20,a8,32,34,1a,53,77,7c,b2,0a,c7,bd,86,43,98,d4,a4,74,e1,88,38,ac,c7,e1,f3,9d,4e,31,76,9b,54,4f,a2,05,9b,09,2b,85,59,dc,8b,e5,95,be,29,34,1b,8a,07,2b,dd,b6,ab,0c,01,33,0f,85,40,bb,93,8d,cf,17,bb,6a,77,6c,f4,93,64,1a,a6,2b,8b,92,3f,94,e3,8a,03,61,b9,d2,90,9a,99,86,a6,df,f1,71,c3,bc,b9,d1,57,9f,47,b3,3c,38,0c,1a,d9,b2,9c,3a,11,a2,a3,0b,2f,24,04,69,52,50,8b,9b,1b,1a,a8,49,a5,81,74,65,54,68,b8,34,2b,75,35,c4,9d,e9,12,84,38,d5,5e,99,09,2e,78,74,cd,e9,e2,3b,d3,e6,58,1b,35,1f,6e,34,3f,3a,ea,1b,f6,01,29,af,bb,68,8c,ea,4c,a6,9b,35,96,91,75,8a,ea,06,83,11,76,20,9c,06,74,53,af,ae,00,1d,b4,07,28,1d,21,64,a0,77,0d,ae,2e,1b,55,a6,49,7c,0e,88,7f,c0,d3,ca,a1,32,e7,02,21,51,8a,1e,a2,be,ec,f6,e2,86,37,1a,9f,5f,6b" diff --git a/testssl.sh b/testssl.sh index 03aeb5d..a906860 100755 --- a/testssl.sh +++ b/testssl.sh @@ -6861,6 +6861,8 @@ pr_kem_param_set_quality() { "MLKEM512") bits=128 ;; "MLKEM768") bits=192 ;; "MLKEM1024") bits=256 ;; + "SecP256r1MLKEM512") bits=128 ;; + "MLKEM512X25519") bits=128 ;; "SecP256r1MLKEM768") bits=192 ;; "X25519MLKEM768") bits=192 ;; "SecP384r1MLKEM1024") bits=256 ;; @@ -7022,6 +7024,8 @@ read_dhtype_from_file() { kx="Kx=${temp%%,*}" [[ "$kx" == "Kx=X25519" ]] && kx="Kx=ECDH" [[ "$kx" == "Kx=X448" ]] && kx="Kx=ECDH" + [[ "$kx" == "Kx=SecP256r1MLKEM512" ]] && kx="Kx=ECDH/MLKEM" + [[ "$kx" == "Kx=MLKEM512X25519" ]] && kx="Kx=ECDH/MLKEM" [[ "$kx" == "Kx=SecP256r1MLKEM768" ]] && kx="Kx=ECDH/MLKEM" [[ "$kx" == "Kx=X25519MLKEM768" ]] && kx="Kx=ECDH/MLKEM" [[ "$kx" == "Kx=SecP384r1MLKEM1024" ]] && kx="Kx=ECDH/MLKEM" @@ -11141,13 +11145,13 @@ run_fs() { local fs_cipher_list="DHE-DSS-AES128-GCM-SHA256:DHE-DSS-AES128-SHA256:DHE-DSS-AES128-SHA:DHE-DSS-AES256-GCM-SHA384:DHE-DSS-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-DSS-CAMELLIA128-SHA256:DHE-DSS-CAMELLIA128-SHA:DHE-DSS-CAMELLIA256-SHA256:DHE-DSS-CAMELLIA256-SHA:DHE-DSS-SEED-SHA:DHE-RSA-AES128-CCM8:DHE-RSA-AES128-CCM:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-CCM8:DHE-RSA-AES256-CCM:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-CAMELLIA128-SHA256:DHE-RSA-CAMELLIA128-SHA:DHE-RSA-CAMELLIA256-SHA256:DHE-RSA-CAMELLIA256-SHA:DHE-RSA-CHACHA20-POLY1305-OLD:DHE-RSA-CHACHA20-POLY1305:DHE-RSA-SEED-SHA:ECDHE-ECDSA-AES128-CCM8:ECDHE-ECDSA-AES128-CCM:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-ECDSA-AES256-CCM8:ECDHE-ECDSA-AES256-CCM:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-CAMELLIA128-SHA256:ECDHE-ECDSA-CAMELLIA256-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305-OLD:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-CAMELLIA128-SHA256:ECDHE-RSA-CAMELLIA256-SHA384:ECDHE-RSA-CHACHA20-POLY1305-OLD:ECDHE-RSA-CHACHA20-POLY1305" local fs_hex_cipher_list="" ciphers_to_test tls13_ciphers_to_test local ecdhe_cipher_list="" tls13_cipher_list="" ecdhe_cipher_list_hex="" ffdhe_cipher_list_hex="" - local curves_hex=("00,01" "00,02" "00,03" "00,04" "00,05" "00,06" "00,07" "00,08" "00,09" "00,0a" "00,0b" "00,0c" "00,0d" "00,0e" "00,0f" "00,10" "00,11" "00,12" "00,13" "00,14" "00,15" "00,16" "00,17" "00,18" "00,19" "00,1a" "00,1b" "00,1c" "00,1d" "00,1e" "00,1f" "00,20" "00,21" "00,29" "02,00" "02,01" "02,02" "11,eb" "11,ec" "11,ed" "11,ee" "63,99") - local -a curves_ossl=("sect163k1" "sect163r1" "sect163r2" "sect193r1" "sect193r2" "sect233k1" "sect233r1" "sect239k1" "sect283k1" "sect283r1" "sect409k1" "sect409r1" "sect571k1" "sect571r1" "secp160k1" "secp160r1" "secp160r2" "secp192k1" "prime192v1" "secp224k1" "secp224r1" "secp256k1" "prime256v1" "secp384r1" "secp521r1" "brainpoolP256r1" "brainpoolP384r1" "brainpoolP512r1" "X25519" "X448" "brainpoolP256r1tls13" "brainpoolP384r1tls13" "brainpoolP512r1tls13" "curveSM2" "MLKEM512" "MLKEM768" "MLKEM1024" "SecP256r1MLKEM768" "X25519MLKEM768" "SecP384r1MLKEM1024" "curveSM2MLKEM768" "X25519Kyber768Draft00") - local -a curves_ossl_output=("K-163" "sect163r1" "B-163" "sect193r1" "sect193r2" "K-233" "B-233" "sect239k1" "K-283" "B-283" "K-409" "B-409" "K-571" "B-571" "secp160k1" "secp160r1" "secp160r2" "secp192k1" "P-192" "secp224k1" "P-224" "secp256k1" "P-256" "P-384" "P-521" "brainpoolP256r1" "brainpoolP384r1" "brainpoolP512r1" "X25519" "X448" "brainpoolP256r1tls13" "brainpoolP384r1tls13" "brainpoolP512r1tls13" "curveSM2" "MLKEM512" "MLKEM768" "MLKEM1024" "SecP256r1MLKEM768" "X25519MLKEM768" "SecP384r1MLKEM1024" "curveSM2MLKEM768" "X25519Kyber768Draft00") - local -ai curves_bits=(163 162 163 193 193 232 233 238 281 282 407 409 570 570 161 161 161 192 192 225 224 256 256 384 521 256 384 512 253 448 256 384 512 256 128 192 256 192 192 256 192 128) + local curves_hex=("00,01" "00,02" "00,03" "00,04" "00,05" "00,06" "00,07" "00,08" "00,09" "00,0a" "00,0b" "00,0c" "00,0d" "00,0e" "00,0f" "00,10" "00,11" "00,12" "00,13" "00,14" "00,15" "00,16" "00,17" "00,18" "00,19" "00,1a" "00,1b" "00,1c" "00,1d" "00,1e" "00,1f" "00,20" "00,21" "00,29" "02,00" "02,01" "02,02" "11,e9" "11,ea" "11,eb" "11,ec" "11,ed" "11,ee" "63,99") + local -a curves_ossl=("sect163k1" "sect163r1" "sect163r2" "sect193r1" "sect193r2" "sect233k1" "sect233r1" "sect239k1" "sect283k1" "sect283r1" "sect409k1" "sect409r1" "sect571k1" "sect571r1" "secp160k1" "secp160r1" "secp160r2" "secp192k1" "prime192v1" "secp224k1" "secp224r1" "secp256k1" "prime256v1" "secp384r1" "secp521r1" "brainpoolP256r1" "brainpoolP384r1" "brainpoolP512r1" "X25519" "X448" "brainpoolP256r1tls13" "brainpoolP384r1tls13" "brainpoolP512r1tls13" "curveSM2" "MLKEM512" "MLKEM768" "MLKEM1024" "SecP256r1MLKEM512" "MLKEM512X25519" "SecP256r1MLKEM768" "X25519MLKEM768" "SecP384r1MLKEM1024" "curveSM2MLKEM768" "X25519Kyber768Draft00") + local -a curves_ossl_output=("K-163" "sect163r1" "B-163" "sect193r1" "sect193r2" "K-233" "B-233" "sect239k1" "K-283" "B-283" "K-409" "B-409" "K-571" "B-571" "secp160k1" "secp160r1" "secp160r2" "secp192k1" "P-192" "secp224k1" "P-224" "secp256k1" "P-256" "P-384" "P-521" "brainpoolP256r1" "brainpoolP384r1" "brainpoolP512r1" "X25519" "X448" "brainpoolP256r1tls13" "brainpoolP384r1tls13" "brainpoolP512r1tls13" "curveSM2" "MLKEM512" "MLKEM768" "MLKEM1024" "SecP256r1MLKEM512" "MLKEM512X25519" "SecP256r1MLKEM768" "X25519MLKEM768" "SecP384r1MLKEM1024" "curveSM2MLKEM768" "X25519Kyber768Draft00") + local -ai curves_bits=(163 162 163 193 193 232 233 238 281 282 407 409 570 570 161 161 161 192 192 225 224 256 256 384 521 256 384 512 253 448 256 384 512 256 128 192 256 128 128 192 192 256 192 128) # Many curves have been deprecated, and RFC 8446, Appendix B.3.1.4, states # that these curves MUST NOT be offered in a TLS 1.3 ClientHello. - local -a curves_deprecated=("true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "false" "false" "false" "true" "true" "true" "false" "false" "false" "false" "false" "false" "false" "false" "false" "false" "false" "false" "false" "false") + local -a curves_deprecated=("true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "true" "false" "false" "false" "true" "true" "true" "false" "false" "false" "false" "false" "false" "false" "false" "false" "false" "false" "false" "false" "false" "false" "false") local -a ffdhe_groups_hex=("01,00" "01,01" "01,02" "01,03" "01,04") local -a ffdhe_groups_output=("ffdhe2048" "ffdhe3072" "ffdhe4096" "ffdhe6144" "ffdhe8192") local -a supported_curve @@ -15396,6 +15400,8 @@ parse_tls_serverhello() { "0200") echo -n "MLKEM512" >> $TMPFILE ;; "0201") echo -n "MLKEM768" >> $TMPFILE ;; "0202") echo -n "MLKEM1024" >> $TMPFILE ;; + "11E9") echo -n "SecP256r1MLKEM512" >> $TMPFILE ;; + "11EA") echo -n "MLKEM512X25519" >> $TMPFILE ;; "11EB") echo -n "SecP256r1MLKEM768" >> $TMPFILE ;; "11EC") echo -n "X25519MLKEM768" >> $TMPFILE ;; "11ED") echo -n "SecP384r1MLKEM1024" >> $TMPFILE ;; @@ -15500,6 +15506,8 @@ parse_tls_serverhello() { 512) dh_bits=128 ; named_curve_str="MLKEM512" ;; 513) dh_bits=192 ; named_curve_str="MLKEM768" ;; 514) dh_bits=256 ; named_curve_str="MLKEM1024" ;; + 4585) dh_bits=128 ; named_curve_str="SecP256r1MLKEM512" ;; + 4586) dh_bits=128 ; named_curve_str="MLKEM512X25519" ;; 4587) dh_bits=192 ; named_curve_str="SecP256r1MLKEM768" ;; 4588) dh_bits=192 ; named_curve_str="X25519MLKEM768" ;; 4589) dh_bits=256 ; named_curve_str="SecP384r1MLKEM1024" ;; @@ -15549,6 +15557,47 @@ parse_tls_serverhello() { else key_bitstring="-----BEGIN CIPHERTEXT------${tls_serverhello_ascii:offset:msg_len}-----END CIPHERTEXT------" fi + elif [[ $named_curve -eq 4585 ]]; then + # The server's key share is the concatenation of a P-256 public key and a ML-KEM-512 ciphertext + if [[ $msg_len -ne 1666 ]]; then + debugme tmln_warning "Malformed key share extension." + [[ $DEBUG -ge 1 ]] && tmpfile_handle ${FUNCNAME[0]}.txt + return 1 + fi + if [[ ! "$OSSL_SUPPORTED_CURVES" =~ MLKEM ]]; then + debugme prln_warning "Your $OPENSSL doesn't support ML-KEM" + else + key_bitstring="3059301306072a8648ce3d020106082a8648ce3d030107034200${tls_serverhello_ascii:offset:130}" + key_bitstring="$(hex2binary "$key_bitstring" | $OPENSSL pkey -pubin -inform DER 2>$ERRFILE)" + if [[ -z "$key_bitstring" ]]; then + debugme prln_warning "Your $OPENSSL doesn't support P-256" + else + key_bitstring="--BEGIN HYBRID CIPHERTEXT--${key_bitstring}" + key_bitstring+="-----BEGIN CIPHERTEXT------${tls_serverhello_ascii:$((offset+130)):1536}-----END CIPHERTEXT------" + key_bitstring+="--END HYBRID CIPHERTEXT--" + fi + fi + elif [[ $named_curve -eq 4586 ]]; then + # The server's key share is the concatenation of a ML-KEM-512 ciphertext and a X25519 public key. + if [[ $msg_len -ne 1600 ]]; then + debugme tmln_warning "Malformed key share extension." + [[ $DEBUG -ge 1 ]] && tmpfile_handle ${FUNCNAME[0]}.txt + return 1 + fi + if [[ ! "$OSSL_SUPPORTED_CURVES" =~ MLKEM ]]; then + debugme prln_warning "Your $OPENSSL doesn't support ML-KEM" + elif ! "$HAS_X25519"; then + debugme prln_warning "Your $OPENSSL doesn't support X25519" + else + key_bitstring="302a300506032b656e032100${tls_serverhello_ascii:$((offset+1536)):64}" + key_bitstring="$(hex2binary "$key_bitstring" | $OPENSSL pkey -pubin -inform DER 2>$ERRFILE)" + if [[ -z "$key_bitstring" ]]; then + debugme prln_warning "Your $OPENSSL doesn't support X25519" + else + key_bitstring="-----BEGIN CIPHERTEXT------${tls_serverhello_ascii:offset:1536}-----END CIPHERTEXT------${key_bitstring}" + key_bitstring="--BEGIN HYBRID CIPHERTEXT--${key_bitstring}--END HYBRID CIPHERTEXT--" + fi + fi elif [[ $named_curve -eq 4587 ]]; then # The server's key share is the concatenation of a P-256 public key and a ML-KEM-768 ciphertext if [[ $msg_len -ne 2306 ]]; then @@ -16653,10 +16702,10 @@ prepare_tls_clienthello() { # regardless of whether testssl.sh can decrypt the response. extension_supported_groups=" 00,0a, # Type: Supported Groups, see RFC 8446 - 00,28, 00,26, # lengths + 00,2c, 00,2a, # lengths 00,1d, 00,17, 00,1e, 00,18, 00,19, 00,1f, 00,20, 00,21, - 01,00, 01,01, 02,00, 02,01, 02,02, 11,eb, 11,ec, 11,ed, - 63,99, 00,29, 11,ee" + 01,00, 01,01, 02,00, 02,01, 02,02, 11,e9, 11,ea, 11,eb, + 11,ec, 11,ed, 63,99, 00,29, 11,ee" elif [[ "$process_full" == all+ ]]; then # Since the response needs to be decrypted, only include groups that can be # decrypted using $OPENSSL. Place X25519 and X448 early in the list, if they @@ -16668,8 +16717,8 @@ prepare_tls_clienthello() { fi "$HAS_X25519" && extension_supported_groups=", 00,1d$extension_supported_groups" if [[ "$OSSL_SUPPORTED_CURVES" =~ MLKEM ]]; then - "$HAS_X25519" && extension_supported_groups+=", 11,ec" - extension_supported_groups+=", 02,00, 02,01, 02,02, 11,eb, 11,ed" + "$HAS_X25519" && extension_supported_groups+=", 11,ea, 11,ec" + extension_supported_groups+=", 02,00, 02,01, 02,02, 11,e9, 11,eb, 11,ed" fi extension_supported_groups="00,0a, 00,$(printf "%02x" $((2+2*${#extension_supported_groups}/7))), 00,$(printf "%02x" $((2*${#extension_supported_groups}/7)))$extension_supported_groups" else @@ -16690,8 +16739,8 @@ prepare_tls_clienthello() { extension_supported_groups+=", 00,1d" fi ! "$HAS_X448" && extension_supported_groups+=", 00,1e" - extension_supported_groups+=", 02,00, 02,01, 02,02, 11,eb, 11,ec, 11,ed, 63,99, 00,29, 11,ee" - extension_supported_groups="00,0a, 00,28, 00,26$extension_supported_groups" + extension_supported_groups+=", 02,00, 02,01, 02,02, 11,e9, 11,ea, 11,eb, 11,ec, 11,ed, 63,99, 00,29, 11,ee" + extension_supported_groups="00,0a, 00,2c, 00,2a$extension_supported_groups" fi code2network "$extension_supported_groups"