Skip to content

Implement RSA PSS verification#2500

Open
jviotti wants to merge 1 commit into
mainfrom
rsassa-pss
Open

Implement RSA PSS verification#2500
jviotti wants to merge 1 commit into
mainfrom
rsassa-pss

Conversation

@jviotti

@jviotti jviotti commented Jun 13, 2026

Copy link
Copy Markdown
Member

Signed-off-by: Juan Cruz Viotti jv@jviotti.com

Review in cubic

Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (macos/llvm)

Details
Benchmark suite Current: 3be8f24 Previous: 8ca19da Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.0270906393189323 ns/iter 1.5851738125309476 ns/iter 1.28
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.8795274751439832 ns/iter 1.7329777609181012 ns/iter 1.08
Regex_Period_Asterisk 2.0047563057205404 ns/iter 1.6071988267807822 ns/iter 1.25
Regex_Group_Period_Asterisk_Group 2.0551557313027193 ns/iter 1.587183521958921 ns/iter 1.29
Regex_Period_Plus 2.6172248845280417 ns/iter 1.8972423203120055 ns/iter 1.38
Regex_Period 2.61442161285848 ns/iter 2.0069702037981956 ns/iter 1.30
Regex_Caret_Period_Plus_Dollar 2.4068375070156973 ns/iter 1.937058000081587 ns/iter 1.24
Regex_Caret_Group_Period_Plus_Group_Dollar 2.462873405203168 ns/iter 1.9221793135561385 ns/iter 1.28
Regex_Caret_Period_Asterisk_Dollar 2.2832663130703796 ns/iter 1.6214443654540598 ns/iter 1.41
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.9261180654704029 ns/iter 1.6247688038566384 ns/iter 1.19
Regex_Caret_X_Hyphen 7.696774767193287 ns/iter 5.947169530121635 ns/iter 1.29
Regex_Period_Md_Dollar 19.889911337358736 ns/iter 16.453434986240353 ns/iter 1.21
Regex_Caret_Slash_Period_Asterisk 4.7184078090385935 ns/iter 4.599155735824056 ns/iter 1.03
Regex_Caret_Period_Range_Dollar 2.2095126683104414 ns/iter 2.096643470911868 ns/iter 1.05
Regex_Nested_Backtrack 28.950239838215442 ns/iter 25.164727360731366 ns/iter 1.15
JSON_Array_Of_Objects_Unique 374.6555609889455 ns/iter 315.3137585172685 ns/iter 1.19
JSON_Parse_1 4239.107893027713 ns/iter 3341.5657393635893 ns/iter 1.27
JSON_Parse_Real 5803.59638256057 ns/iter 5087.880692564923 ns/iter 1.14
JSON_Parse_Decimal 6056.130813438152 ns/iter 6509.1516886010195 ns/iter 0.93
JSON_Parse_Schema_ISO_Language 5045610.125000013 ns/iter 3234781.828704024 ns/iter 1.56
JSON_Parse_Integer 3895.2659001616144 ns/iter 3320.750237849075 ns/iter 1.17
JSON_Parse_String_NonSSO_Plain 3717.892249418673 ns/iter 3642.5534959589822 ns/iter 1.02
JSON_Parse_String_SSO_Plain 2036.1705280024648 ns/iter 1914.4488606740288 ns/iter 1.06
JSON_Parse_String_Escape_Heavy 16460.072625826735 ns/iter 16887.473859338985 ns/iter 0.97
JSON_Parse_Object_Short_Keys 5866.133495166357 ns/iter 5207.0489304098155 ns/iter 1.13
JSON_Parse_Object_Scalar_Properties 2899.4640621038156 ns/iter 2733.8300770354226 ns/iter 1.06
JSON_Parse_Object_Array_Properties 3699.725440962969 ns/iter 3599.749043708713 ns/iter 1.03
JSON_Parse_Object_Object_Properties 4574.941781287628 ns/iter 3752.027774206302 ns/iter 1.22
JSON_Parse_Nested_Containers 33188.46023462086 ns/iter 29096.806819097492 ns/iter 1.14
JSON_From_String_Copy 32.60098216101953 ns/iter 27.048374310527755 ns/iter 1.21
JSON_From_String_Temporary 26.079647153368917 ns/iter 25.77888495878468 ns/iter 1.01
JSON_Number_To_Double 45.51696985976497 ns/iter 35.58087341433089 ns/iter 1.28
JSON_Object_At_Last_Key/8 5.5341319869985215 ns/iter 3.5462222066883733 ns/iter 1.56
JSON_Object_At_Last_Key/32 14.245700792207192 ns/iter 11.092935698121057 ns/iter 1.28
JSON_Object_At_Last_Key/128 72.43498215224957 ns/iter 51.09717499999533 ns/iter 1.42
JSON_Object_At_Last_Key/512 254.59814558445112 ns/iter 181.3058654751681 ns/iter 1.40
JSON_Fast_Hash_Helm_Chart_Lock 68.05729651557112 ns/iter 57.37680845143612 ns/iter 1.19
JSON_Equality_Helm_Chart_Lock 158.04728850510918 ns/iter 125.43962474234841 ns/iter 1.26
JSON_Divisible_By_Decimal 203.82570837406257 ns/iter 162.42036974051098 ns/iter 1.25
JSON_String_Equal/10 7.52808374203002 ns/iter 6.570366811249728 ns/iter 1.15
JSON_String_Equal/100 6.4230146657652325 ns/iter 6.084460098425337 ns/iter 1.06
JSON_String_Equal_Small_By_Perfect_Hash/10 0.7662831479196123 ns/iter 0.7166781335507084 ns/iter 1.07
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.7519816732012203 ns/iter 3.128200259660244 ns/iter 1.20
JSON_String_Fast_Hash/10 3.1719116383612485 ns/iter 2.2063462867907027 ns/iter 1.44
JSON_String_Fast_Hash/100 3.1479489168890287 ns/iter 1.9007101466580465 ns/iter 1.66
JSON_String_Key_Hash/10 1.7094928297714795 ns/iter 1.270680102976218 ns/iter 1.35
JSON_String_Key_Hash/100 4.180135910056191 ns/iter 2.006037925175252 ns/iter 2.08
JSON_Object_Defines_Miss_Same_Length 4.310655192686274 ns/iter 2.1945228517384177 ns/iter 1.96
JSON_Object_Defines_Miss_Too_Small 2.6244597771135205 ns/iter 2.274277341866831 ns/iter 1.15
JSON_Object_Defines_Miss_Too_Large 2.54147193828489 ns/iter 2.2190564283440515 ns/iter 1.15
Pointer_Object_Traverse 14.51537469007417 ns/iter 12.949031442299894 ns/iter 1.12
Pointer_Object_Try_Traverse 24.607206621952557 ns/iter 26.019620893316848 ns/iter 0.95
Pointer_Push_Back_Pointer_To_Weak_Pointer 168.00127865105202 ns/iter 147.04440586805035 ns/iter 1.14
Pointer_Walker_Schema_ISO_Language 2806523.544715833 ns/iter 2012461.6496813055 ns/iter 1.39
Pointer_Maybe_Tracked_Deeply_Nested/0 994630.2887027839 ns/iter 834436.3155984473 ns/iter 1.19
Pointer_Maybe_Tracked_Deeply_Nested/1 1147013.1578946426 ns/iter 1112583.3978495097 ns/iter 1.03
Pointer_Position_Tracker_Get_Deeply_Nested 365.61443076217824 ns/iter 323.30773574329413 ns/iter 1.13
URITemplateRouter_Create 23186.983282134173 ns/iter 21447.242500458895 ns/iter 1.08
URITemplateRouter_Match 161.82084561289548 ns/iter 150.6497713103821 ns/iter 1.07
URITemplateRouter_Match_BasePath 189.03385464067551 ns/iter 176.98435312003775 ns/iter 1.07
URITemplateRouterView_Restore 9536.092440377473 ns/iter 8683.292017609929 ns/iter 1.10
URITemplateRouterView_Match 137.69372835373827 ns/iter 125.33478253280427 ns/iter 1.10
URITemplateRouterView_Match_BasePath 156.67676759736946 ns/iter 139.6066368723689 ns/iter 1.12
URITemplateRouterView_Arguments 416.54454606914254 ns/iter 379.04376792580547 ns/iter 1.10
JSONL_Parse_Large 13333109.090907866 ns/iter 11662619.450000497 ns/iter 1.14
JSONL_Parse_Large_GZIP 15067008.872341964 ns/iter 12948720.250000585 ns/iter 1.16
HTML_Build_Table_100000 67014812.5000054 ns/iter 59475295.454541825 ns/iter 1.13
HTML_Render_Table_100000 4126294.3729732893 ns/iter 2554115.2420636253 ns/iter 1.62
GZIP_Compress_ISO_Language_Set_3_Locations 30233029.000002082 ns/iter 24599895.8214305 ns/iter 1.23
GZIP_Decompress_ISO_Language_Set_3_Locations 5638447.065573697 ns/iter 4630601.791946572 ns/iter 1.22
GZIP_Compress_ISO_Language_Set_3_Schema 1500787.37339038 ns/iter 1498928.2031870766 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Schema 268206.7605794702 ns/iter 261010.39282986952 ns/iter 1.03

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (linux/gcc)

Details
Benchmark suite Current: 3be8f24 Previous: 8ca19da Ratio
GZIP_Compress_ISO_Language_Set_3_Locations 39392073.833331175 ns/iter 36530165.947373174 ns/iter 1.08
GZIP_Decompress_ISO_Language_Set_3_Locations 4040312.7803467284 ns/iter 4493190.925000334 ns/iter 0.90
GZIP_Compress_ISO_Language_Set_3_Schema 2269824.2435067245 ns/iter 2015859.5389049817 ns/iter 1.13
GZIP_Decompress_ISO_Language_Set_3_Schema 326870.2727272941 ns/iter 380929.75027204474 ns/iter 0.86
HTML_Build_Table_100000 73179884.70000501 ns/iter 60791150.45454066 ns/iter 1.20
HTML_Render_Table_100000 2092920.3134328283 ns/iter 2013440.3304844953 ns/iter 1.04
JSONL_Parse_Large 12490867.80356988 ns/iter 13974045.439999826 ns/iter 0.89
JSONL_Parse_Large_GZIP 14044978.879999235 ns/iter 15290003.04347876 ns/iter 0.92
URITemplateRouter_Create 30216.741455844814 ns/iter 30831.413029143503 ns/iter 0.98
URITemplateRouter_Match 145.42077151542304 ns/iter 152.3948934907918 ns/iter 0.95
URITemplateRouter_Match_BasePath 170.97465422664132 ns/iter 170.5445170293953 ns/iter 1.00
URITemplateRouterView_Restore 8616.135608569528 ns/iter 7959.5270597636845 ns/iter 1.08
URITemplateRouterView_Match 124.90817897819463 ns/iter 121.86514435895928 ns/iter 1.02
URITemplateRouterView_Match_BasePath 142.8790233432687 ns/iter 142.58047239346874 ns/iter 1.00
URITemplateRouterView_Arguments 464.9794892058948 ns/iter 469.29829644654967 ns/iter 0.99
Pointer_Object_Traverse 29.492483922946114 ns/iter 29.7056505091835 ns/iter 0.99
Pointer_Object_Try_Traverse 22.827329169079416 ns/iter 23.103639032139572 ns/iter 0.99
Pointer_Push_Back_Pointer_To_Weak_Pointer 154.99909102516122 ns/iter 157.68436506373868 ns/iter 0.98
Pointer_Walker_Schema_ISO_Language 1909173.8157184531 ns/iter 1906214.0867209393 ns/iter 1.00
Pointer_Maybe_Tracked_Deeply_Nested/0 1538157.0131866792 ns/iter 1542190.6769911926 ns/iter 1.00
Pointer_Maybe_Tracked_Deeply_Nested/1 1646711.1717646036 ns/iter 1689439.1397590332 ns/iter 0.97
Pointer_Position_Tracker_Get_Deeply_Nested 683.8906981184822 ns/iter 629.619941574572 ns/iter 1.09
JSON_Array_Of_Objects_Unique 414.10613077883056 ns/iter 390.18047520899523 ns/iter 1.06
JSON_Parse_1 7791.827137343832 ns/iter 7825.555254652899 ns/iter 1.00
JSON_Parse_Real 6610.49911281768 ns/iter 6724.100307111848 ns/iter 0.98
JSON_Parse_Decimal 9901.177095262798 ns/iter 11226.799843114166 ns/iter 0.88
JSON_Parse_Schema_ISO_Language 5187938.473282946 ns/iter 5186775.91044812 ns/iter 1.00
JSON_Parse_Integer 4924.301280699432 ns/iter 4825.811312831494 ns/iter 1.02
JSON_Parse_String_NonSSO_Plain 8699.30799018376 ns/iter 8520.982420851571 ns/iter 1.02
JSON_Parse_String_SSO_Plain 3789.069288379468 ns/iter 3937.4144876604614 ns/iter 0.96
JSON_Parse_String_Escape_Heavy 19484.8565697089 ns/iter 20614.606425463055 ns/iter 0.95
JSON_Parse_Object_Short_Keys 11532.165635184052 ns/iter 11182.633286928422 ns/iter 1.03
JSON_Parse_Object_Scalar_Properties 5871.02087577206 ns/iter 6076.032138052336 ns/iter 0.97
JSON_Parse_Object_Array_Properties 9058.9225034978 ns/iter 8973.10960587994 ns/iter 1.01
JSON_Parse_Object_Object_Properties 9471.443550238453 ns/iter 9664.796588361909 ns/iter 0.98
JSON_Parse_Nested_Containers 73604.81433225577 ns/iter 73762.90275151418 ns/iter 1.00
JSON_From_String_Copy 19.847258858374975 ns/iter 18.449235044284016 ns/iter 1.08
JSON_From_String_Temporary 16.813139959084197 ns/iter 15.434592921503585 ns/iter 1.09
JSON_Number_To_Double 20.427236737345552 ns/iter 21.834047648276215 ns/iter 0.94
JSON_Object_At_Last_Key/8 6.691435682146853 ns/iter 5.930220011077285 ns/iter 1.13
JSON_Object_At_Last_Key/32 23.580816151247753 ns/iter 22.421741924871668 ns/iter 1.05
JSON_Object_At_Last_Key/128 91.08688961562778 ns/iter 87.61893164373939 ns/iter 1.04
JSON_Object_At_Last_Key/512 378.4871453212051 ns/iter 426.64755629959564 ns/iter 0.89
JSON_Fast_Hash_Helm_Chart_Lock 62.99906922612455 ns/iter 60.88756978455029 ns/iter 1.03
JSON_Equality_Helm_Chart_Lock 165.6669436589617 ns/iter 161.0028053059573 ns/iter 1.03
JSON_Divisible_By_Decimal 249.9859800948098 ns/iter 238.96557177215956 ns/iter 1.05
JSON_String_Equal/10 5.322211696837842 ns/iter 5.650557698303538 ns/iter 0.94
JSON_String_Equal/100 6.02713742196559 ns/iter 6.2717467342871345 ns/iter 0.96
JSON_String_Equal_Small_By_Perfect_Hash/10 0.7134658784424902 ns/iter 0.6238611897051934 ns/iter 1.14
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 21.94267976667419 ns/iter 25.47962924019846 ns/iter 0.86
JSON_String_Fast_Hash/10 1.0551904495844098 ns/iter 0.9350301920577021 ns/iter 1.13
JSON_String_Fast_Hash/100 1.0549940711870636 ns/iter 0.9347732640924884 ns/iter 1.13
JSON_String_Key_Hash/10 1.4071464082573586 ns/iter 1.247646462938689 ns/iter 1.13
JSON_String_Key_Hash/100 14.756348004273207 ns/iter 12.443833559788606 ns/iter 1.19
JSON_Object_Defines_Miss_Same_Length 3.8706359296403687 ns/iter 3.4417576230014655 ns/iter 1.12
JSON_Object_Defines_Miss_Too_Small 3.8700020373371182 ns/iter 3.4255605766748274 ns/iter 1.13
JSON_Object_Defines_Miss_Too_Large 3.518522613278951 ns/iter 3.1273512765475013 ns/iter 1.13
Regex_Lower_S_Or_Upper_S_Asterisk 1.0549907400855576 ns/iter 0.9340071257392372 ns/iter 1.13
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 0.7036142968213052 ns/iter 0.6237242050628817 ns/iter 1.13
Regex_Period_Asterisk 0.7056360109297485 ns/iter 0.6226387829530808 ns/iter 1.13
Regex_Group_Period_Asterisk_Group 1.0551717691148625 ns/iter 0.933437847983206 ns/iter 1.13
Regex_Period_Plus 1.0544626840776141 ns/iter 0.9343126924102293 ns/iter 1.13
Regex_Period 0.7033638178449418 ns/iter 0.6225728175967933 ns/iter 1.13
Regex_Caret_Period_Plus_Dollar 0.7035791125198028 ns/iter 0.6227820708879737 ns/iter 1.13
Regex_Caret_Group_Period_Plus_Group_Dollar 1.0551286133439288 ns/iter 0.9387271381190119 ns/iter 1.12
Regex_Caret_Period_Asterisk_Dollar 1.0562699611114088 ns/iter 0.9342248099965202 ns/iter 1.13
Regex_Caret_Group_Period_Asterisk_Group_Dollar 0.7032222775979253 ns/iter 0.6238405516893594 ns/iter 1.13
Regex_Caret_X_Hyphen 4.2185712609806405 ns/iter 4.052659251098527 ns/iter 1.04
Regex_Period_Md_Dollar 33.76965386015141 ns/iter 29.952016988872145 ns/iter 1.13
Regex_Caret_Slash_Period_Asterisk 4.57259644164597 ns/iter 4.403881978570599 ns/iter 1.04
Regex_Caret_Period_Range_Dollar 0.8403685454555402 ns/iter 0.7817203179848402 ns/iter 1.08
Regex_Nested_Backtrack 40.268829868479905 ns/iter 38.3383571046968 ns/iter 1.05

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (linux/llvm)

Details
Benchmark suite Current: 3be8f24 Previous: 8ca19da Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.2019698047950294 ns/iter 2.4706366612893276 ns/iter 0.89
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.183464716905512 ns/iter 2.4620651533040903 ns/iter 0.89
Regex_Period_Asterisk 2.188296896475487 ns/iter 2.4634611019436257 ns/iter 0.89
Regex_Group_Period_Asterisk_Group 2.216438944595862 ns/iter 2.462354952239234 ns/iter 0.90
Regex_Period_Plus 2.802628799289401 ns/iter 3.8701042428788486 ns/iter 0.72
Regex_Period 2.49038457161147 ns/iter 3.515371127238503 ns/iter 0.71
Regex_Caret_Period_Plus_Dollar 2.4913993562436403 ns/iter 3.514758174958752 ns/iter 0.71
Regex_Caret_Group_Period_Plus_Group_Dollar 2.802713104103445 ns/iter 3.86907193700368 ns/iter 0.72
Regex_Caret_Period_Asterisk_Dollar 3.4287009049729766 ns/iter 2.8143326969499713 ns/iter 1.22
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.113631888369571 ns/iter 2.4616583878699467 ns/iter 1.26
Regex_Caret_X_Hyphen 6.546185648760986 ns/iter 7.060807974909643 ns/iter 0.93
Regex_Period_Md_Dollar 27.457693786255664 ns/iter 26.717277710572155 ns/iter 1.03
Regex_Caret_Slash_Period_Asterisk 7.166303309760332 ns/iter 7.719686905177855 ns/iter 0.93
Regex_Caret_Period_Range_Dollar 3.4295228743485064 ns/iter 3.5199463884106708 ns/iter 0.97
Regex_Nested_Backtrack 37.625943302641765 ns/iter 37.62878145738565 ns/iter 1.00
JSON_Array_Of_Objects_Unique 483.6681241026808 ns/iter 500.10960055422186 ns/iter 0.97
JSON_Parse_1 4823.153046338643 ns/iter 4606.535047267004 ns/iter 1.05
JSON_Parse_Real 5333.612366592489 ns/iter 5113.934067372062 ns/iter 1.04
JSON_Parse_Decimal 7490.769294570106 ns/iter 7515.628468823916 ns/iter 1.00
JSON_Parse_Schema_ISO_Language 3497024.83499982 ns/iter 3507572.2150008916 ns/iter 1.00
JSON_Parse_Integer 3823.832962576886 ns/iter 3931.950083745756 ns/iter 0.97
JSON_Parse_String_NonSSO_Plain 5097.141531593788 ns/iter 5191.306646470981 ns/iter 0.98
JSON_Parse_String_SSO_Plain 2747.5193172487498 ns/iter 2922.6534168234384 ns/iter 0.94
JSON_Parse_String_Escape_Heavy 14533.439194392176 ns/iter 14884.053404848259 ns/iter 0.98
JSON_Parse_Object_Short_Keys 10650.050649715988 ns/iter 8124.214391641138 ns/iter 1.31
JSON_Parse_Object_Scalar_Properties 4165.315062301053 ns/iter 4039.105305587054 ns/iter 1.03
JSON_Parse_Object_Array_Properties 5804.982253815587 ns/iter 5492.361446253992 ns/iter 1.06
JSON_Parse_Object_Object_Properties 5603.177052669161 ns/iter 5564.371080429914 ns/iter 1.01
JSON_Parse_Nested_Containers 45357.58555678914 ns/iter 44602.334074587605 ns/iter 1.02
JSON_From_String_Copy 19.691871532913588 ns/iter 21.236584800307096 ns/iter 0.93
JSON_From_String_Temporary 17.463779374034523 ns/iter 18.488874049630475 ns/iter 0.94
JSON_Number_To_Double 24.02754823175645 ns/iter 22.845716136991076 ns/iter 1.05
JSON_Object_At_Last_Key/8 3.692763913234052 ns/iter 3.8705911323526627 ns/iter 0.95
JSON_Object_At_Last_Key/32 11.93442376909817 ns/iter 13.045962109438296 ns/iter 0.91
JSON_Object_At_Last_Key/128 48.31361015851356 ns/iter 47.13028772468869 ns/iter 1.03
JSON_Object_At_Last_Key/512 383.6403373364549 ns/iter 367.86158698240763 ns/iter 1.04
JSON_Fast_Hash_Helm_Chart_Lock 56.698040378507514 ns/iter 68.61868584017714 ns/iter 0.83
JSON_Equality_Helm_Chart_Lock 190.8899297539008 ns/iter 188.40839989034214 ns/iter 1.01
JSON_Divisible_By_Decimal 255.13927154470636 ns/iter 254.81111919665977 ns/iter 1.00
JSON_String_Equal/10 6.556599149622891 ns/iter 6.346103918631003 ns/iter 1.03
JSON_String_Equal/100 7.173429269285886 ns/iter 7.03715565687477 ns/iter 1.02
JSON_String_Equal_Small_By_Perfect_Hash/10 0.9361055248330249 ns/iter 1.055232693304181 ns/iter 0.89
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 10.58269731142297 ns/iter 12.33530417526205 ns/iter 0.86
JSON_String_Fast_Hash/10 2.180751023210241 ns/iter 2.1113223741967193 ns/iter 1.03
JSON_String_Fast_Hash/100 2.212632318684251 ns/iter 2.109154894286985 ns/iter 1.05
JSON_String_Key_Hash/10 2.1808473218634714 ns/iter 2.465751578020838 ns/iter 0.88
JSON_String_Key_Hash/100 6.540387511636611 ns/iter 7.733480499578024 ns/iter 0.85
JSON_Object_Defines_Miss_Same_Length 2.6969048348881755 ns/iter 2.94094352407037 ns/iter 0.92
JSON_Object_Defines_Miss_Too_Small 3.8389145051784315 ns/iter 4.21741282697924 ns/iter 0.91
JSON_Object_Defines_Miss_Too_Large 2.798842764207736 ns/iter 2.905351195557725 ns/iter 0.96
Pointer_Object_Traverse 24.157056335945676 ns/iter 30.135633121459414 ns/iter 0.80
Pointer_Object_Try_Traverse 30.18848463626462 ns/iter 30.54914616460196 ns/iter 0.99
Pointer_Push_Back_Pointer_To_Weak_Pointer 164.20488560590948 ns/iter 167.44168715647646 ns/iter 0.98
Pointer_Walker_Schema_ISO_Language 1712837.7813266104 ns/iter 1819099.4458765679 ns/iter 0.94
Pointer_Maybe_Tracked_Deeply_Nested/0 1233532.1045044228 ns/iter 1262629.2454872811 ns/iter 0.98
Pointer_Maybe_Tracked_Deeply_Nested/1 1655173.8033178041 ns/iter 2154175.2507737637 ns/iter 0.77
Pointer_Position_Tracker_Get_Deeply_Nested 662.1215272473112 ns/iter 732.5288881161895 ns/iter 0.90
URITemplateRouter_Create 32190.067161427003 ns/iter 30159.265303506727 ns/iter 1.07
URITemplateRouter_Match 181.70255557379767 ns/iter 185.7008797386466 ns/iter 0.98
URITemplateRouter_Match_BasePath 209.0594729307965 ns/iter 224.2313837354083 ns/iter 0.93
URITemplateRouterView_Restore 7873.585670228464 ns/iter 8722.456908225278 ns/iter 0.90
URITemplateRouterView_Match 145.09717163593763 ns/iter 145.20504603457985 ns/iter 1.00
URITemplateRouterView_Match_BasePath 163.87008911238044 ns/iter 168.24339905648822 ns/iter 0.97
URITemplateRouterView_Arguments 429.3456623868892 ns/iter 473.5900031640161 ns/iter 0.91
JSONL_Parse_Large 9902783.52112679 ns/iter 9149606.052634036 ns/iter 1.08
JSONL_Parse_Large_GZIP 11452319.590165136 ns/iter 10853607.46874997 ns/iter 1.06
HTML_Build_Table_100000 70657539.49999589 ns/iter 71239479.39999197 ns/iter 0.99
HTML_Render_Table_100000 5915641.966101564 ns/iter 5181519.066667938 ns/iter 1.14
GZIP_Compress_ISO_Language_Set_3_Locations 33644925.33333284 ns/iter 35609189.1999995 ns/iter 0.94
GZIP_Decompress_ISO_Language_Set_3_Locations 4328256.939024508 ns/iter 4276578.189024172 ns/iter 1.01
GZIP_Compress_ISO_Language_Set_3_Schema 1887461.8760107132 ns/iter 2128656.996960824 ns/iter 0.89
GZIP_Decompress_ISO_Language_Set_3_Schema 352774.0206548902 ns/iter 276288.85448797565 ns/iter 1.28

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (windows/msvc)

Details
Benchmark suite Current: 3be8f24 Previous: 8ca19da Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 5.073697999998785 ns/iter 5.070831000000453 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 5.018463000001248 ns/iter 5.018846000000394 ns/iter 1.00
Regex_Period_Asterisk 5.026914000000033 ns/iter 5.059929000000238 ns/iter 0.99
Regex_Group_Period_Asterisk_Group 5.098375000000033 ns/iter 5.019995000000108 ns/iter 1.02
Regex_Period_Plus 5.023544999999103 ns/iter 5.021176785714739 ns/iter 1.00
Regex_Period 5.016267768976782 ns/iter 5.02185299999951 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 5.018648000000212 ns/iter 5.057818000000225 ns/iter 0.99
Regex_Caret_Group_Period_Plus_Group_Dollar 5.018181250000404 ns/iter 5.018195999999762 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 5.017761999999948 ns/iter 5.045420535713521 ns/iter 0.99
Regex_Caret_Group_Period_Asterisk_Group_Dollar 5.0320380000016485 ns/iter 5.031203999999434 ns/iter 1.00
Regex_Caret_X_Hyphen 8.17997209821643 ns/iter 8.165900669642971 ns/iter 1.00
Regex_Period_Md_Dollar 44.262893801226326 ns/iter 44.23844375000385 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 7.858858258926103 ns/iter 7.943123883928292 ns/iter 0.99
Regex_Caret_Period_Range_Dollar 5.646986607142626 ns/iter 5.653472999999849 ns/iter 1.00
Regex_Nested_Backtrack 58.169821428565776 ns/iter 59.462071428565565 ns/iter 0.98
JSON_Array_Of_Objects_Unique 484.56594109574786 ns/iter 481.4135896012499 ns/iter 1.01
JSON_Parse_1 8829.03558466082 ns/iter 8852.589497369372 ns/iter 1.00
JSON_Parse_Real 16043.069196430995 ns/iter 16154.199916516707 ns/iter 0.99
JSON_Parse_Decimal 11916.768750001693 ns/iter 11927.79375000086 ns/iter 1.00
JSON_Parse_Schema_ISO_Language 8216981.111109413 ns/iter 7364560.000000135 ns/iter 1.12
JSON_Parse_Integer 6117.625892855472 ns/iter 6167.075000000466 ns/iter 0.99
JSON_Parse_String_NonSSO_Plain 7705.175223214106 ns/iter 7889.403618733013 ns/iter 0.98
JSON_Parse_String_SSO_Plain 3740.0354642224347 ns/iter 3658.2774348086423 ns/iter 1.02
JSON_Parse_String_Escape_Heavy 21516.39687500051 ns/iter 22591.278124998837 ns/iter 0.95
JSON_Parse_Object_Short_Keys 13668.578488491858 ns/iter 13452.43681947971 ns/iter 1.02
JSON_Parse_Object_Scalar_Properties 6994.840178571898 ns/iter 6929.6462053574405 ns/iter 1.01
JSON_Parse_Object_Array_Properties 11711.404687499538 ns/iter 13917.393749999008 ns/iter 0.84
JSON_Parse_Object_Object_Properties 11986.083928572303 ns/iter 12138.95312500135 ns/iter 0.99
JSON_Parse_Nested_Containers 80565.55510916281 ns/iter 88668.48437499187 ns/iter 0.91
JSON_From_String_Copy 63.992776785702134 ns/iter 67.52223214286447 ns/iter 0.95
JSON_From_String_Temporary 58.140232142867326 ns/iter 64.79085714285507 ns/iter 0.90
JSON_Number_To_Double 120.13187500002687 ns/iter 139.86465624999056 ns/iter 0.86
JSON_Object_At_Last_Key/8 7.203636607142374 ns/iter 7.462853794642906 ns/iter 0.97
JSON_Object_At_Last_Key/32 23.22823125000184 ns/iter 23.19463032148694 ns/iter 1.00
JSON_Object_At_Last_Key/128 89.10472098213924 ns/iter 89.50102678570357 ns/iter 1.00
JSON_Object_At_Last_Key/512 424.91533871435223 ns/iter 429.17718089822193 ns/iter 0.99
JSON_Fast_Hash_Helm_Chart_Lock 66.706776785728 ns/iter 64.38899999998121 ns/iter 1.04
JSON_Equality_Helm_Chart_Lock 312.1475892857209 ns/iter 305.6946980251724 ns/iter 1.02
JSON_Divisible_By_Decimal 315.9147212366746 ns/iter 310.4214564261502 ns/iter 1.02
JSON_String_Equal/10 15.951602678571572 ns/iter 15.744388392861756 ns/iter 1.01
JSON_String_Equal/100 17.31863805367008 ns/iter 17.060995535714035 ns/iter 1.02
JSON_String_Equal_Small_By_Perfect_Hash/10 2.5122667857138885 ns/iter 2.5281747298858845 ns/iter 0.99
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 15.053188995301298 ns/iter 14.264651785710823 ns/iter 1.06
JSON_String_Fast_Hash/10 5.042633035714061 ns/iter 5.039836999999352 ns/iter 1.00
JSON_String_Fast_Hash/100 5.035957999998573 ns/iter 5.033237000000099 ns/iter 1.00
JSON_String_Key_Hash/10 5.3762770000003 ns/iter 5.352086000000327 ns/iter 1.00
JSON_String_Key_Hash/100 12.53219374999759 ns/iter 11.893950000001041 ns/iter 1.05
JSON_Object_Defines_Miss_Same_Length 5.061808000000383 ns/iter 5.023816000000352 ns/iter 1.01
JSON_Object_Defines_Miss_Too_Small 4.10405415911444 ns/iter 4.176219574027664 ns/iter 0.98
JSON_Object_Defines_Miss_Too_Large 4.144894471686987 ns/iter 4.098902328747975 ns/iter 1.01
Pointer_Object_Traverse 68.12516964286276 ns/iter 67.28397321428555 ns/iter 1.01
Pointer_Object_Try_Traverse 68.29850446430999 ns/iter 67.73100892855513 ns/iter 1.01
Pointer_Push_Back_Pointer_To_Weak_Pointer 167.04620535712422 ns/iter 190.34160628047022 ns/iter 0.88
Pointer_Walker_Schema_ISO_Language 8759934.666665383 ns/iter 7140008.8888898 ns/iter 1.23
Pointer_Maybe_Tracked_Deeply_Nested/0 2463262.8571420615 ns/iter 2497099.1967869024 ns/iter 0.99
Pointer_Maybe_Tracked_Deeply_Nested/1 3736410.614526029 ns/iter 3725615.508021759 ns/iter 1.00
Pointer_Position_Tracker_Get_Deeply_Nested 558.8589285715326 ns/iter 538.305593404327 ns/iter 1.04
URITemplateRouter_Create 42107.720122938044 ns/iter 40585.18368057919 ns/iter 1.04
URITemplateRouter_Match 191.16459742541872 ns/iter 190.64368568555375 ns/iter 1.00
URITemplateRouter_Match_BasePath 218.3686875000035 ns/iter 216.07818749998842 ns/iter 1.01
URITemplateRouterView_Restore 34946.2857142819 ns/iter 34911.76339286385 ns/iter 1.00
URITemplateRouterView_Match 159.4724995771154 ns/iter 157.45541584423034 ns/iter 1.01
URITemplateRouterView_Match_BasePath 174.35632194350015 ns/iter 174.5265027584762 ns/iter 1.00
URITemplateRouterView_Arguments 535.4093750000288 ns/iter 546.8745999999101 ns/iter 0.98
JSONL_Parse_Large 33550352.380957734 ns/iter 32969474.999993056 ns/iter 1.02
JSONL_Parse_Large_GZIP 34414140.00000123 ns/iter 33225640.000000566 ns/iter 1.04
HTML_Build_Table_100000 91107842.85712726 ns/iter 88697785.71430027 ns/iter 1.03
HTML_Render_Table_100000 8290546.666666564 ns/iter 7738364.444442899 ns/iter 1.07
GZIP_Compress_ISO_Language_Set_3_Locations 36422005.26314809 ns/iter 35868054.99999173 ns/iter 1.02
GZIP_Decompress_ISO_Language_Set_3_Locations 10540854.687501878 ns/iter 9871317.333333233 ns/iter 1.07
GZIP_Compress_ISO_Language_Set_3_Schema 2109761.874999805 ns/iter 2117081.5624998338 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Schema 648756.5178572043 ns/iter 624877.2321429539 ns/iter 1.04

This comment was automatically generated by workflow using github-action-benchmark.

@jviotti jviotti marked this pull request as ready for review June 13, 2026 14:00
@augmentcode

augmentcode Bot commented Jun 13, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: This PR adds RSASSA-PSS signature verification support across all crypto backends and exposes it as a new public API.

Changes:

  • Introduces rsassa_pss_verify alongside the existing PKCS#1 v1.5 verifier in crypto_verify.h.
  • Apple Security backend: maps hash functions to kSecKeyAlgorithmRSASignatureMessagePSS* and routes verification through a shared helper.
  • OpenSSL backend: configures the EVP_PKEY_CTX for PSS padding and enforces digest-length salt (RFC 7518 §3.5).
  • Windows CNG backend: adds PSS verification using BCRYPT_PAD_PSS with salt length equal to the digest length.
  • Portable/other backend: implements MGF1 and EMSA-PSS verification (RFC 8017) with fixed salt length.
  • Test suite: adds direct unit tests for PSS (valid and rejection cases) and a pyca/cryptography vector-driven negative test runner.

Technical Notes: All backends continue to reject malformed inputs and keys beyond 4096 bits, and PSS verification is constrained to salt length = hash output length for RFC 7518 compliance.

🤖 Was this summary useful? React with 👍 or 👎

@augmentcode augmentcode Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. No suggestions at this time.

Comment augment review to trigger a new review at any time.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 8 files

Re-trigger cubic

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant